diff --git a/CHANGES.rst b/CHANGES.rst
index 2e5294e99..88ed9b00a 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,6 +1,12 @@
Changes
=======
+0.8.1 (2018-05-22)
+------------------
+
+- Fix the displaying of bar chart in classification panel.
+
+
0.8.0 (2018-05-22)
------------------
diff --git a/client/css/style.css b/client/css/style.css
index 9a3f32b1f..64ec1b32c 100755
--- a/client/css/style.css
+++ b/client/css/style.css
@@ -1198,6 +1198,13 @@ p.breaks_vals > input[type="number"].size_class {
width: 60px !important;
}
+#sizes_div > div > p.breaks_vals > input[type="number"] {
+ width: 70px !important;
+ margin: 1px !important;
+ height: 2.5em !important;
+}
+
+
/* Styles for modal box allowing to choose the type of each field */
#fields_select {
display: grid;
diff --git a/client/dist/app.6c99da.js b/client/dist/app.6c99da.js
deleted file mode 100644
index d71daeb7b..000000000
--- a/client/dist/app.6c99da.js
+++ /dev/null
@@ -1,722 +0,0 @@
-/******/ (function(modules) { // webpackBootstrap
-/******/ // install a JSONP callback for chunk loading
-/******/ function webpackJsonpCallback(data) {
-/******/ var chunkIds = data[0];
-/******/ var moreModules = data[1];
-/******/ var executeModules = data[2];
-/******/ // add "moreModules" to the modules object,
-/******/ // then flag all "chunkIds" as loaded and fire callback
-/******/ var moduleId, chunkId, i = 0, resolves = [];
-/******/ for(;i < chunkIds.length; i++) {
-/******/ chunkId = chunkIds[i];
-/******/ if(installedChunks[chunkId]) {
-/******/ resolves.push(installedChunks[chunkId][0]);
-/******/ }
-/******/ installedChunks[chunkId] = 0;
-/******/ }
-/******/ for(moduleId in moreModules) {
-/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
-/******/ modules[moduleId] = moreModules[moduleId];
-/******/ }
-/******/ }
-/******/ if(parentJsonpFunction) parentJsonpFunction(data);
-/******/ while(resolves.length) {
-/******/ resolves.shift()();
-/******/ }
-/******/
-/******/ // add entry modules from loaded chunk to deferred list
-/******/ deferredModules.push.apply(deferredModules, executeModules || []);
-/******/
-/******/ // run deferred modules when all chunks ready
-/******/ return checkDeferredModules();
-/******/ };
-/******/ function checkDeferredModules() {
-/******/ var result;
-/******/ for(var i = 0; i < deferredModules.length; i++) {
-/******/ var deferredModule = deferredModules[i];
-/******/ var fulfilled = true;
-/******/ for(var j = 1; j < deferredModule.length; j++) {
-/******/ var depId = deferredModule[j];
-/******/ if(installedChunks[depId] !== 0) fulfilled = false;
-/******/ }
-/******/ if(fulfilled) {
-/******/ deferredModules.splice(i--, 1);
-/******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]);
-/******/ }
-/******/ }
-/******/ return result;
-/******/ }
-/******/
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // object to store loaded and loading chunks
-/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
-/******/ // Promise = chunk loading, 0 = chunk loaded
-/******/ var installedChunks = {
-/******/ "app": 0
-/******/ };
-/******/
-/******/ var deferredModules = [];
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId]) {
-/******/ return installedModules[moduleId].exports;
-/******/ }
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ i: moduleId,
-/******/ l: false,
-/******/ exports: {}
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.l = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
-/******/
-/******/ // define getter function for harmony exports
-/******/ __webpack_require__.d = function(exports, name, getter) {
-/******/ if(!__webpack_require__.o(exports, name)) {
-/******/ Object.defineProperty(exports, name, {
-/******/ configurable: false,
-/******/ enumerable: true,
-/******/ get: getter
-/******/ });
-/******/ }
-/******/ };
-/******/
-/******/ // define __esModule on exports
-/******/ __webpack_require__.r = function(exports) {
-/******/ Object.defineProperty(exports, '__esModule', { value: true });
-/******/ };
-/******/
-/******/ // getDefaultExport function for compatibility with non-harmony modules
-/******/ __webpack_require__.n = function(module) {
-/******/ var getter = module && module.__esModule ?
-/******/ function getDefault() { return module['default']; } :
-/******/ function getModuleExports() { return module; };
-/******/ __webpack_require__.d(getter, 'a', getter);
-/******/ return getter;
-/******/ };
-/******/
-/******/ // Object.prototype.hasOwnProperty.call
-/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "static/dist/";
-/******/
-/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
-/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
-/******/ jsonpArray.push = webpackJsonpCallback;
-/******/ jsonpArray = jsonpArray.slice();
-/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
-/******/ var parentJsonpFunction = oldJsonpFunction;
-/******/
-/******/
-/******/ // add entry module to deferred list
-/******/ deferredModules.push(["./js/main.js","vendor"]);
-/******/ // run deferred modules when ready
-/******/ return checkDeferredModules();
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ "./css/context-menu.css":
-/*!******************************!*\
- !*** ./css/context-menu.css ***!
- \******************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("\nvar content = __webpack_require__(/*! !../node_modules/css-loader!./context-menu.css */ \"./node_modules/css-loader/index.js!./css/context-menu.css\");\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(/*! ../node_modules/style-loader/lib/addStyles.js */ \"./node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {}\n\n//# sourceURL=webpack:///./css/context-menu.css?");
-
-/***/ }),
-
-/***/ "./css/discretization.css":
-/*!********************************!*\
- !*** ./css/discretization.css ***!
- \********************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("\nvar content = __webpack_require__(/*! !../node_modules/css-loader!./discretization.css */ \"./node_modules/css-loader/index.js!./css/discretization.css\");\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(/*! ../node_modules/style-loader/lib/addStyles.js */ \"./node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {}\n\n//# sourceURL=webpack:///./css/discretization.css?");
-
-/***/ }),
-
-/***/ "./css/style.css":
-/*!***********************!*\
- !*** ./css/style.css ***!
- \***********************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("\nvar content = __webpack_require__(/*! !../node_modules/css-loader!./style.css */ \"./node_modules/css-loader/index.js!./css/style.css\");\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(/*! ../node_modules/style-loader/lib/addStyles.js */ \"./node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {}\n\n//# sourceURL=webpack:///./css/style.css?");
-
-/***/ }),
-
-/***/ "./js/classification/categorical_panel.js":
-/*!************************************************!*\
- !*** ./js/classification/categorical_panel.js ***!
- \************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("/* WEBPACK VAR INJECTION */(function(Promise) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.display_categorical_box = display_categorical_box;\n\nvar _colors_helpers = __webpack_require__(/*! ./../colors_helpers */ \"./js/colors_helpers.js\");\n\nvar _dialogs = __webpack_require__(/*! ./../dialogs */ \"./js/dialogs.js\");\n\nfunction fetch_categorical_colors() {\n var categ = document.getElementsByClassName('typo_class'),\n color_map = new Map();\n for (var i = 0; i < categ.length; i++) {\n var color = (0, _colors_helpers.rgb2hex)(categ[i].querySelector('.color_square').style.backgroundColor),\n new_name = categ[i].querySelector('.typo_name').value,\n nb_features = categ[i].querySelector('.typo_count_ft').getAttribute('data-count');\n color_map.set(categ[i].__data__.name, [color, new_name, nb_features]);\n }\n return color_map;\n}\n\nfunction display_categorical_box(data_layer, layer_name, field, cats) {\n var is_hex_color = new RegExp(/^#([0-9a-f]{6}|[0-9a-f]{3})$/i);\n var nb_features = data_manager.current_layers[layer_name].n_features;\n var nb_class = cats.length;\n var existing_typo_layer = Object.keys(data_manager.current_layers).filter(function (lyr) {\n return data_manager.current_layers[lyr].renderer === 'Categorical' || data_manager.current_layers[lyr].renderer === 'PropSymbolsTypo';\n });\n var modal_box = (0, _dialogs.make_dialog_container)('categorical_box', _tr('app_page.categorical_box.title', { layer: layer_name, nb_features: nb_features }), 'dialog');\n\n var newbox = d3.select('#categorical_box').select('.modal-body').styles({ 'overflow-y': 'scroll', 'max-height': window.innerHeight - 145 + 'px' });\n\n newbox.append('h3').html('');\n newbox.append('p').html(_tr('app_page.symbol_typo_box.field_categ', { field: field, nb_class: +nb_class, nb_features: +nb_features }));\n\n newbox.append('ul').style('padding', 'unset').attr('id', 'sortable_typo_name').selectAll('li').data(cats).enter().append('li').styles({ margin: 'auto', 'list-style': 'none' }).attr('class', 'typo_class').attr('id', function (_, i) {\n return ['line', i].join('_');\n });\n\n newbox.selectAll('.typo_class').append('input').styles({\n width: '140px',\n height: 'auto',\n display: 'inline-block',\n 'vertical-align': 'middle',\n 'margin-right': '20px'\n }).attrs(function (d) {\n return { class: 'typo_name', id: d.name };\n }).property('value', function (d) {\n return d.display_name;\n });\n\n newbox.selectAll('.typo_class').insert('p').attr('class', 'color_square').style('background-color', function (d) {\n return d.color;\n }).styles({\n width: '22px',\n height: '22px',\n margin: 'auto',\n display: 'inline-block',\n 'vertical-align': 'middle',\n 'border-radius': '10%'\n }).on('click', function () {\n var self = this;\n var this_color = self.style.backgroundColor;\n var input_col = document.createElement('input');\n input_col.setAttribute('type', 'color');\n input_col.setAttribute('value', (0, _colors_helpers.rgb2hex)(this_color));\n input_col.className = 'color_input';\n input_col.onchange = function (change) {\n self.style.backgroundColor = (0, _colors_helpers.hexToRgb)(change.target.value, 'string');\n self.nextSibling.value = change.target.value;\n };\n input_col.dispatchEvent(new MouseEvent('click'));\n });\n\n newbox.selectAll('.typo_class').append('input').attr('class', 'color_hex').styles({ height: '22px', 'vertical-align': 'middle' }).property('value', function (d) {\n return d.color;\n }).style('width', '60px').on('keyup', function () {\n if (is_hex_color.test(this.value)) {\n this.previousSibling.style.backgroundColor = this.value;\n }\n });\n\n newbox.selectAll('.typo_class').insert('span').attrs(function (d) {\n return { class: 'typo_count_ft', 'data-count': d.nb_elem };\n }).html(function (d) {\n return _tr('app_page.symbol_typo_box.count_feature', { count: +d.nb_elem });\n });\n\n newbox.insert('p').insert('button').attr('class', 'button_st3').html(_tr('app_page.categorical_box.new_random_colors')).on('click', function () {\n var lines = document.getElementsByClassName('typo_class');\n for (var i = 0; i < lines.length; ++i) {\n var random_color = (0, _colors_helpers.randomColor)();\n lines[i].querySelector('.color_square').style.backgroundColor = random_color;\n lines[i].querySelector('.color_hex').value = random_color;\n }\n });\n\n // Allow the user to reuse the colors from an existing 'Categorical'\n // (or 'PropSymbolsTypo') layer if any:\n if (existing_typo_layer.length > 0) {\n newbox.insert('p').attr('class', 'button_copy_style').styles({\n margin: '5px',\n cursor: 'pointer',\n 'font-style': 'italic'\n }).html(_tr('app_page.categorical_box.copy_style')).on('click', function () {\n make_box_copy_style_categorical(existing_typo_layer).then(function (result) {\n if (result) {\n // Apply the selected style:\n var ref_map = data_manager.current_layers[result].color_map;\n var selection = newbox.select('#sortable_typo_name').selectAll('li');\n // Change the displayed name of the elements:\n selection.selectAll('input.typo_name').each(function (d) {\n var r = ref_map.get(d.name);\n if (r) {\n d.display_name = r[1];\n this.value = r[1];\n }\n });\n // Change the selected colors:\n selection.selectAll('p').each(function (d) {\n var r = ref_map.get(d.name);\n if (r) {\n d.color = r[0];\n this.style.backgroundColor = r[0];\n this.nextSibling.value = r[0];\n }\n });\n }\n });\n });\n }\n\n new Sortable(document.getElementById('sortable_typo_name'));\n var container = document.getElementById('categorical_box');\n\n return new Promise(function (resolve, reject) {\n var _onclose = function _onclose() {\n resolve(false);\n document.removeEventListener('keydown', helper_esc_key_twbs);\n container.remove();\n var p = (0, _dialogs.reOpenParent)();\n if (!p) _dialogs.overlay_under_modal.hide();\n };\n\n container.querySelector('.btn_ok').onclick = function () {\n var color_map = fetch_categorical_colors();\n var colorByFeature = data_layer.map(function (ft) {\n return color_map.get(ft[field])[0];\n });\n resolve([nb_class, color_map, colorByFeature]);\n document.removeEventListener('keydown', helper_esc_key_twbs);\n container.remove();\n var p = (0, _dialogs.reOpenParent)();\n if (!p) _dialogs.overlay_under_modal.hide();\n };\n\n container.querySelector('.btn_cancel').onclick = _onclose;\n container.querySelector('#xclose').onclick = _onclose;\n function helper_esc_key_twbs(evt) {\n var _event = evt || window.event;\n var isEscape = 'key' in _event ? _event.key === 'Escape' || _event.key === 'Esc' : _event.keyCode === 27;\n if (isEscape) {\n _event.stopPropagation();\n _onclose();\n }\n }\n document.addEventListener('keydown', helper_esc_key_twbs);\n _dialogs.overlay_under_modal.display();\n });\n}\n\n/**\n* Create the box allowing to choose the name of the categorical\n* layer whose palette will be used.\n*\n* @param {Array} existing_typo_layer - An array containing the name of any existing\n* 'Categorial' or 'PropSymbolsTypo' layer.\n* @return {Promise} - A promise containing the state of the swal2 alert created.\n*/\nfunction make_box_copy_style_categorical(existing_typo_layer) {\n var selected_layer = existing_typo_layer[0];\n return swal({\n title: _tr('app_page.categorical_box.title_copy_style_box'),\n html: '
',\n showCancelButton: true,\n showConfirmButton: true,\n cancelButtonText: _tr('app_page.common.close'),\n animation: 'slide-from-top',\n onOpen: function onOpen() {\n document.querySelector('.swal2-modal').style.width = '400px';\n var content = d3.select('#copy_style_box_content');\n var select_layer = content.append('select');\n // select_layer.append('option').attr('value', '').html('');\n existing_typo_layer.forEach(function (layer_name) {\n select_layer.append('option').attr('value', layer_name).html(layer_name);\n });\n select_layer.on('change', function () {\n selected_layer = this.value;\n });\n }\n }).then(function () {\n return selected_layer;\n }, function () {\n return null;\n });\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! bluebird */ \"./node_modules/bluebird/js/browser/bluebird.js\")))\n\n//# sourceURL=webpack:///./js/classification/categorical_panel.js?");
-
-/***/ }),
-
-/***/ "./js/classification/common.js":
-/*!*************************************!*\
- !*** ./js/classification/common.js ***!
- \*************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.prepare_ref_histo = exports.discretiz_geostats_switch = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"); } }; }();\n\nexports.getOptNbClass = getOptNbClass;\nexports.getBreaksQ6 = getBreaksQ6;\nexports.getBreaksStdDev = getBreaksStdDev;\nexports.discretize_to_size = discretize_to_size;\nexports.discretize_to_colors = discretize_to_colors;\nexports.getBreaks_userDefined = getBreaks_userDefined;\n\nvar _colors_helpers = __webpack_require__(/*! ./../colors_helpers */ \"./js/colors_helpers.js\");\n\nvar _helpers = __webpack_require__(/*! ./../helpers */ \"./js/helpers.js\");\n\nvar _helpers_calc = __webpack_require__(/*! ./../helpers_calc */ \"./js/helpers_calc.js\");\n\nvar _helpers_math = __webpack_require__(/*! ./../helpers_math */ \"./js/helpers_math.js\");\n\nvar floor = Math.floor;\nvar log10 = Math.log10;\n\n// Shortcut to the name of the methods offered by geostats library:\nvar discretiz_geostats_switch = exports.discretiz_geostats_switch = new Map([['jenks', 'getJenks'], ['equal_interval', 'getEqInterval'],\n// ['std_dev', 'getStdDeviation'],\n['quantiles', 'getQuantile'], ['Q6', 'getBreaksQ6'], ['geometric_progression', 'getGeometricProgression']]);\n\n/**\n* Compute the \"optimal\" (cf. xxx) number of class according to the number\n* of features in serie of values.\n*\n* @param {Integer} len_serie - The length of the serie of values.\n* @return {Integer} - The \"optimal\" number of classes to be used to discretize the serie.\n*/\nfunction getOptNbClass(len_serie) {\n return floor(1 + 3.3 * log10(len_serie));\n}\n\n/**\n* Compute breaks according to \"Q6\" method\n* and compute the number of item in each bin.\n*\n* @param {Array} serie - An array of ordered values.\n* @param {Number} precision - An integer value decribing the precision of the serie.\n* @return {Object} - Object containing the breaks and the stock in each class.\n*/\nfunction getBreaksQ6(serie) {\n var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var len_serie = serie.length;\n var q6_class = [1, 0.05 * len_serie, 0.275 * len_serie, 0.5 * len_serie, 0.725 * len_serie, 0.95 * len_serie, len_serie];\n var breaks = [];\n var tmp = 0;\n var j = void 0;\n var stock_class = [];\n for (var i = 0; i < 7; ++i) {\n j = (0, _helpers_math.Mround)(q6_class[i]) - 1;\n breaks.push(+serie[j]);\n stock_class.push(j - tmp);\n tmp = j;\n }\n stock_class.shift();\n if (breaks[0] === breaks[1]) {\n // breaks[1] = breaks[0] + (breaks[2] - breaks[1]) / 2;\n breaks[1] = (+serie[1] + breaks[0]) / 2;\n }\n if (breaks[6] === breaks[5]) {\n breaks[5] = serie[len_serie - 2];\n // breaks[5] = breaks[4] + (breaks[5] - breaks[4]) / 2;\n }\n if (precision != null) {\n breaks = breaks.map(function (val) {\n return (0, _helpers_calc.round_value)(val, precision);\n });\n }\n return {\n breaks: breaks,\n stock_class: stock_class\n };\n}\n\n/**\n* Compute breaks according to our \"mean and standard deviation\" method\n* and compute the number of item in each bin.\n*\n* @param {Array} serie - An array of ordered values.\n* @param {Number} share - The ratio of stddev to be used a size for each class.\n* @param {String} mean_position - The position of the mean value.\n* @param {Number} precision - An integer value decribing the precision of the serie.\n* @return {Object} - Object containing the breaks and the stock in each class.\n*/\nfunction getBreaksStdDev(serie, share) {\n var mean_position = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'center';\n var precision = arguments[3];\n\n var min = serie.min(),\n max = serie.max(),\n mean = serie.mean(),\n std_dev = serie.stddev(),\n class_size = std_dev * share;\n var breaks = mean_position === 'center' ? [mean - class_size / 2, mean + class_size / 2] : [mean - class_size, mean, mean + class_size];\n\n var _precision = precision || serie.precision;\n\n while (breaks[0] > min) {\n breaks.unshift(breaks[0] - class_size);\n }\n while (breaks[breaks.length - 1] < max) {\n breaks.push(breaks[breaks.length - 1] + class_size);\n }\n var nb_class = breaks.length - 1;\n if (breaks[0] < min) {\n if (breaks[1] < min) {\n console.log('This shouldn\\'t happen (min)');\n }\n breaks[0] = min;\n }\n\n if (breaks[nb_class] > max) {\n if (breaks[nb_class - 1] > max) {\n console.log('This shouldn\\'t happen (max)');\n }\n breaks[nb_class] = max;\n }\n return {\n nb_class: nb_class,\n breaks: breaks.map(function (v) {\n return (0, _helpers_calc.round_value)(v, _precision);\n })\n };\n}\n\nfunction getBreaks(values, type, n_class) {\n // const _values = values.filter(v => v === 0 || (v && !Number.isNaN(+v))),\n var _values = values.filter(function (v) {\n return (0, _helpers.isNumber)(v);\n }),\n no_data = values.length - _values.length,\n nb_class = +n_class || getOptNbClass(_values.length);\n var serie = new geostats(_values); // eslint-disable-line new-cap\n var breaks = void 0;\n if (type === 'Q6') {\n var tmp = getBreaksQ6(serie.sorted(), serie.precision);\n breaks = tmp.breaks;\n breaks[0] = serie.min();\n breaks[nb_class] = serie.max();\n serie.setClassManually(breaks);\n } else {\n var _func = discretiz_geostats_switch.get(type);\n breaks = serie[_func](nb_class);\n if (serie.precision) breaks = breaks.map(function (val) {\n return (0, _helpers_calc.round_value)(val, serie.precision);\n });\n }\n return [serie, breaks, nb_class, no_data];\n}\n\nfunction discretize_to_size(values, type, nb_class, min_size, max_size) {\n var _getBreaks = getBreaks(values, type, nb_class),\n _getBreaks2 = _slicedToArray(_getBreaks, 3),\n serie = _getBreaks2[0],\n breaks = _getBreaks2[1],\n n_class = _getBreaks2[2];\n\n var step = (max_size - min_size) / (n_class - 1),\n class_size = Array(n_class).fill(0).map(function (d, i) {\n return min_size + i * step;\n }),\n breaks_prop = [];\n\n for (var i = 0; i < breaks.length - 1; ++i) {\n breaks_prop.push([[breaks[i], breaks[i + 1]], class_size[i]]);\n }\n return [n_class, type, breaks_prop, serie];\n}\n\nfunction discretize_to_colors(values, type, nb_class, col_ramp_name) {\n var name_col_ramp = col_ramp_name || 'Reds';\n\n var _getBreaks3 = getBreaks(values, type, nb_class),\n _getBreaks4 = _slicedToArray(_getBreaks3, 4),\n serie = _getBreaks4[0],\n breaks = _getBreaks4[1],\n n_class = _getBreaks4[2],\n nb_no_data = _getBreaks4[3],\n color_array = (0, _colors_helpers.getColorBrewerArray)(n_class, name_col_ramp),\n no_data_color = nb_no_data > 0 ? '#e7e7e7' : null,\n colors_map = [];\n\n for (var j = 0; j < values.length; ++j) {\n if ((0, _helpers.isNumber)(values[j])) {\n var idx = serie.getClass(values[j]);\n colors_map.push(color_array[idx]);\n } else {\n colors_map.push(no_data_color);\n }\n }\n return [n_class, type, breaks, color_array, colors_map, no_data_color];\n}\n\n/**\n* Parse a string of comma separated break values\n* to an actual Array of break values.\n* The serie is used to defined if there may be negative values\n* in the defined break values.\n*\n* @param {Array} serie - The serie of values to be discretised with `breaks_list`.\n* @param {String} breaks_list - The user_defined break values as String.\n* @return {Array} - The actual Array of break values.\n*/\nfunction parseUserDefinedBreaks(serie, breaks_list) {\n var separator = (0, _helpers_calc.has_negative)(serie) ? '- ' : '-';\n return breaks_list.split(separator).map(function (el) {\n return +el.trim();\n });\n}\n\n/**\n* Returns the break values and the stock of each class given\n* a list of breaks defined by the user.\n*\n* @param {Array} serie - The serie of values to be discretised\n* @param {Array} breaks - The list of breaks, whether as a String (a typed by the user)\n* or as an Array.\n* @return {Object} - An Object with the stock (number of feature) in each class\n* and the break values (should be unchanged if provided as an Array)\n*/\nfunction getBreaks_userDefined(serie, breaks) {\n var break_values = typeof breaks === 'string' ? parseUserDefinedBreaks(serie, breaks) : breaks;\n var len_break_val = break_values.length,\n stock_class = new Array(len_break_val - 1);\n var j = 0;\n for (var i = 1; i < len_break_val; ++i) {\n var class_max = break_values[i];\n stock_class[i - 1] = 0;\n while (serie[j] <= class_max) {\n stock_class[i - 1] += 1;\n j += 1;\n }\n }\n return {\n breaks: break_values,\n stock_class: stock_class\n };\n}\n\nvar prepare_ref_histo = exports.prepare_ref_histo = function prepare_ref_histo(parent_node, serie, formatCount) {\n var svg_h = h / 7.25 > 80 ? h / 7.25 : 80,\n svg_w = w / 4 > 320 ? 320 : w / 4,\n values = serie.sorted(),\n nb_bins = values.length / 3 > 51 ? 50 : (0, _helpers_math.Mceil)((0, _helpers_math.Msqrt)(values.length)) + 1;\n\n var q5 = serie.getQuantile(4).map(function (v) {\n return +v;\n });\n\n var m_margin = { top: 10, right: 20, bottom: 10, left: 20 },\n m_width = svg_w - m_margin.right - m_margin.left,\n m_height = svg_h - m_margin.top - m_margin.bottom;\n\n var ref_histo = parent_node.select('#ref_histo_box').select('#inner_ref_histo_box');\n\n ref_histo.append('p').attrs({ id: 'ref_histo_title' }).styles({ margin: 'auto', 'text-align': 'center' }).html('' + _tr('disc_box.hist_ref_title') + '');\n\n var c = ref_histo.append('svg').attrs({\n id: 'svg_ref_histo',\n width: svg_w + m_margin.left + m_margin.right,\n height: svg_h + m_margin.top + m_margin.bottom\n });\n\n var x = d3.scaleLinear().domain([serie.min(), serie.max()]).rangeRound([0, m_width]);\n\n var svg_ref_histo = c.append('g').attr('transform', 'translate(' + (m_margin.left + m_margin.right) + ', ' + m_margin.top + ')');\n\n return function (type) {\n svg_ref_histo.remove();\n svg_ref_histo = c.append('g').attr('transform', 'translate(' + (m_margin.left + m_margin.right) + ', ' + m_margin.top + ')');\n if (type === 'histogram') {\n var data = d3.histogram().domain(x.domain()).thresholds(x.ticks(nb_bins))(values);\n\n var y = d3.scaleLinear().domain([0, d3.max(data, function (d) {\n return d.length;\n })]).range([m_height, 0]);\n\n var bar = svg_ref_histo.selectAll('.bar').data(data).enter().append('rect').attrs(function (d) {\n return {\n class: 'bar',\n width: (0, _helpers_math.Mabs)(x(d.x1)) - (0, _helpers_math.Mabs)(x(d.x0)),\n height: m_height - y(d.length),\n x: 0,\n transform: 'translate(' + x(d.x0) + ',' + y(d.length) + ')'\n };\n }).styles({ fill: 'beige', stroke: 'black', 'stroke-width': '0.4px' });\n\n svg_ref_histo.append('g').style('font-size', '10px').attrs({ class: 'x_axis', transform: 'translate(0,' + m_height + ')' }).call(d3.axisBottom().scale(x).ticks(4).tickFormat(formatCount)).selectAll('text').attrs({ x: -4, y: 4, dy: '.45em', transform: 'rotate(-40)' }).style('text-anchor', 'end');\n\n svg_ref_histo.append('g').attr('class', 'y_axis').style('font-size', '10px').call(d3.axisLeft().scale(y).ticks(5).tickFormat(d3.format('.0f')));\n } else if (type === 'box_plot') {\n svg_ref_histo.append('g').style('font-size', '10px').attrs({ class: 'x_axis', transform: 'translate(0,' + m_height + ')' }).call(d3.axisBottom().scale(x).ticks(4).tickFormat(formatCount)).selectAll('text').attrs({ x: -4, y: 4, dy: '.45em', transform: 'rotate(-40)' }).style('text-anchor', 'end');\n\n var y_mid = (m_margin.top + m_height - m_margin.bottom) / 2;\n\n svg_ref_histo.append('g').insert('line').attrs({ x1: x(q5[0]), y1: m_margin.top * 2, x2: x(q5[0]), y2: m_height - m_margin.bottom * 2 }).styles({ 'stroke-width': 1, stroke: 'black', fill: 'none' });\n\n svg_ref_histo.append('g').insert('rect').attrs({ x: x(q5[1]), y: m_margin.top, width: x(q5[2]) - x(q5[1]), height: m_height - m_margin.bottom - m_margin.top }).styles({ 'stroke-width': 1, stroke: 'black', fill: 'lightblue' });\n\n svg_ref_histo.append('g').insert('line').attrs({ x1: x(q5[2]), y1: m_margin.top, x2: x(q5[2]), y2: m_height - m_margin.bottom }).styles({ 'stroke-width': 3, stroke: 'black', fill: 'none' });\n\n svg_ref_histo.append('g').insert('rect').attrs({ x: x(q5[2]), y: m_margin.top, width: x(q5[3]) - x(q5[2]), height: m_height - m_margin.bottom - m_margin.top }).styles({ 'stroke-width': 1, stroke: 'black', fill: 'lightblue' });\n\n svg_ref_histo.append('g').insert('line').attrs({ x1: x(q5[4]), y1: m_margin.top * 2, x2: x(q5[4]), y2: m_height - m_margin.bottom * 2 }).styles({ 'stroke-width': 1, stroke: 'black', fill: 'none' });\n\n svg_ref_histo.append('g').insert('line').attrs({ x1: x(q5[0]), y1: y_mid, x2: x(q5[1]), y2: y_mid }).styles({ 'stroke-width': 1, stroke: 'black', fill: 'none', 'stroke-dasharray': '3,3' });\n\n svg_ref_histo.append('g').insert('line').attrs({ x1: x(q5[3]), y1: y_mid, x2: x(q5[4]), y2: y_mid }).styles({ 'stroke-width': 1, stroke: 'black', fill: 'none', 'stroke-dasharray': '3,3' });\n } else if (type === 'beeswarm') {\n var _data = values.map(function (v) {\n return { value: +v };\n });\n\n var simulation = d3.forceSimulation(_data).force('x', d3.forceX(function (d) {\n return x(d.value);\n }).strength(1)).force('y', d3.forceY(m_height / 2).strength(2)).force('collide', d3.forceCollide(4)).stop();\n\n for (var i = 0; i < 75; ++i) {\n simulation.tick();\n }\n svg_ref_histo.append('g').style('font-size', '10px').attrs({ class: 'x_axis', transform: 'translate(0,' + m_height + ')' }).call(d3.axisBottom().scale(x).ticks(4).tickFormat(formatCount)).selectAll('text').attrs({ x: -4, y: 4, dy: '.45em', transform: 'rotate(-40)' }).style('text-anchor', 'end');\n\n var cell = svg_ref_histo.append('g').attr('class', 'cells').selectAll('g').data(d3.voronoi().extent([[0, 0], [m_width, m_height]]).x(function (d) {\n return d.x;\n }).y(function (d) {\n return d.y;\n }).polygons(_data)).enter().append('g');\n\n cell.append('circle').attrs(function (d) {\n if (d) {\n return {\n r: _data.lenght < 250 ? 2.5 : _data.lenght < 500 ? 1.5 : 1,\n transform: 'translate(' + d.data.x + ',' + d.data.y + ')' };\n }\n return undefined;\n });\n\n cell.append('path').attr('d', function (d) {\n if (d) return 'M' + d.join('L') + 'Z';\n return undefined;\n });\n }\n };\n};\n\n//# sourceURL=webpack:///./js/classification/common.js?");
-
-/***/ }),
-
-/***/ "./js/classification/discretization_panel.js":
-/*!***************************************************!*\
- !*** ./js/classification/discretization_panel.js ***!
- \***************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("/* WEBPACK VAR INJECTION */(function(Promise) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.display_discretization = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"); } }; }();\n\nvar _colors_helpers = __webpack_require__(/*! ./../colors_helpers */ \"./js/colors_helpers.js\");\n\nvar _dialogs = __webpack_require__(/*! ./../dialogs */ \"./js/dialogs.js\");\n\nvar _helpers = __webpack_require__(/*! ./../helpers */ \"./js/helpers.js\");\n\nvar _interface = __webpack_require__(/*! ./../interface */ \"./js/interface.js\");\n\nvar _helpers_calc = __webpack_require__(/*! ./../helpers_calc */ \"./js/helpers_calc.js\");\n\nvar _helpers_math = __webpack_require__(/*! ./../helpers_math */ \"./js/helpers_math.js\");\n\nvar _common = __webpack_require__(/*! ./common */ \"./js/classification/common.js\");\n\nfunction make_box_custom_palette(nb_class, existing_colors) {\n var is_hex_color = new RegExp(/^#([0-9a-f]{6}|[0-9a-f]{3})$/i);\n var is_ok_name = new RegExp(/^[a-zA-Z0-9_]*$/);\n var existing_palette = Array.from(_app.custom_palettes.keys());\n var pal_name = void 0;\n var ref_colors = void 0;\n if (existing_colors && existing_colors.length === nb_class) {\n ref_colors = existing_colors.slice();\n } else {\n ref_colors = [];\n for (var i = 0; i < nb_class; i++) {\n ref_colors.push((0, _colors_helpers.randomColor)());\n }\n }\n\n var verif_palette_name = function verif_palette_name(name) {\n if (name !== '' && is_ok_name.test(name)) {\n if (existing_palette.indexOf(name) > -1) {\n d3.select('#palette_box_error_zone').html(_tr('app_page.palette_box.error_name_existing'));\n document.querySelector('.swal2-confirm').disabled = true;\n return null;\n }\n d3.select('#palette_box_error_zone').html('');\n document.querySelector('.swal2-confirm').disabled = false;\n return name;\n } else {\n d3.select('#palette_box_error_zone').html(_tr('app_page.palette_box.error_name_invalid'));\n document.querySelector('.swal2-confirm').disabled = true;\n return null;\n }\n };\n\n return swal({\n title: _tr('app_page.palette_box.title'),\n html: '',\n showCancelButton: true,\n showConfirmButton: true,\n cancelButtonText: _tr('app_page.common.close'),\n animation: 'slide-from-top',\n onOpen: function onOpen() {\n document.querySelector('.swal2-modal').style.width = nb_class * 85 + 'px';\n var colors = d3.select('#palette_box_content');\n var g = colors.selectAll('p').data(ref_colors).enter().append('p');\n\n g.append('input').attr('id', function (_, i) {\n return i;\n }).attr('type', 'color').style('width', '60px').property('value', function (d) {\n return d;\n }).on('change', function (_, i) {\n ref_colors[i] = this.value;\n this.nextSibling.value = this.value;\n });\n\n g.append('input').attr('id', function (_, i) {\n return i;\n }).style('width', '60px').property('value', function (d) {\n return d;\n }).on('keyup', function (_, i) {\n if (is_hex_color.test(this.value)) {\n ref_colors[i] = this.value;\n this.previousSibling.value = this.value;\n }\n });\n var bottom = d3.select('#palette_box_name');\n bottom.append('p').attr('id', 'palette_box_error_zone').style('background', '#e3e3e3');\n bottom.append('span').html(_tr('app_page.palette_box.new_name'));\n bottom.append('input').style('width', '70px').on('keyup', function () {\n if (verif_palette_name(this.value) !== null) pal_name = this.value;\n });\n document.querySelector('.swal2-confirm').disabled = true;\n }\n }).then(function () {\n return [ref_colors, pal_name];\n }, function () {\n return null;\n });\n}\n\nvar display_discretization = exports.display_discretization = function display_discretization(layer_name, field_name, nb_class, options) {\n var make_no_data_section = function make_no_data_section() {\n var section = d3.select('#color_div').append('div').attr('id', 'no_data_section').append('p').html(_tr('disc_box.withnodata', { count: +no_data }));\n\n section.append('input').attrs({ type: 'color', id: 'no_data_color' }).style('margin', '0px 10px').property('value', '#ebebcd');\n };\n\n var make_sequ_button = function make_sequ_button() {\n var col_div = d3.select('#color_div');\n col_div.selectAll('.color_params').remove();\n col_div.selectAll('.color_txt').remove();\n col_div.selectAll('.color_txt2').remove();\n col_div.selectAll('.central_class').remove();\n col_div.selectAll('.central_color').remove();\n col_div.selectAll('#reverse_pal_btn').remove();\n document.getElementById('button_palette_box').style.display = '';\n var sequential_color_select = col_div.insert('p').attr('class', 'color_txt').style('margin-left', '10px').html(_tr('disc_box.color_palette')).insert('select').attr('class', 'color_params').styles({\n width: '116px',\n 'background-image': 'url(/static/img/palettes/Blues.png)'\n }).on('change', function () {\n this.style.backgroundImage = 'url(/static/img/palettes/' + this.value + '.png)';\n redisplay.draw();\n });\n\n ['Blues', 'BuGn', 'BuPu', 'GnBu', 'OrRd', 'PuBu', 'PuBuGn', 'PuRd', 'RdPu', 'YlGn', 'Greens', 'Greys', 'Oranges', 'Purples', 'Reds'].forEach(function (name) {\n sequential_color_select.append('option').text(name).attrs({ value: name, title: name }).style('background-image', 'url(/static/img/palettes/' + name + '.png)');\n });\n\n if (_app.custom_palettes) {\n var additional_colors = Array.from(_app.custom_palettes.entries());\n\n for (var ixp = 0; ixp < additional_colors.length; ixp++) {\n sequential_color_select.append('option').text(additional_colors[ixp][0]).attrs({ value: 'user_' + additional_colors[ixp][0], title: additional_colors[ixp][0], nb_colors: additional_colors[ixp][1].length }).property('disabled', additional_colors[ixp][1].length !== nb_class);\n }\n }\n\n // Button allowing the reverse a color palette:\n d3.select('.color_txt').insert('p').style('text-align', 'center').insert('button').style('margin-top', '10px').attrs({ class: 'button_st3', id: 'reverse_pal_btn' }).html(_tr('disc_box.reverse_palette')).on('click', function () {\n to_reverse = true;\n redisplay.draw();\n });\n };\n\n var make_diverg_button = function make_diverg_button() {\n var col_div = d3.select('#color_div');\n col_div.selectAll('.color_params').remove();\n col_div.selectAll('.color_txt').remove();\n col_div.selectAll('.color_txt2').remove();\n col_div.selectAll('#reverse_pal_btn').remove();\n document.getElementById('button_palette_box').style.display = 'none';\n col_div.insert('p').attr('class', 'central_class').html(_tr('disc_box.break_on')).insert('input').style('width', '50px').attrs({\n type: 'number',\n class: 'central_class',\n id: 'centr_class',\n min: 1,\n max: nb_class - 1,\n step: 1,\n value: (0, _helpers_math.Mround)(nb_class / 2)\n }).on('change', function () {\n redisplay.draw();\n });\n\n var pal_names = ['Blues', 'BuGn', 'BuPu', 'GnBu', 'OrRd', 'PuBu', 'PuBuGn', 'PuRd', 'RdPu', 'YlGn', 'Greens', 'Greys', 'Oranges', 'Purples', 'Reds'];\n var left_color_select = col_div.insert('p').attr('class', 'color_txt').style('display', 'inline').html(_tr('disc_box.left_colramp')).insert('select').style('width', '116px').attr('class', 'color_params_left').on('change', function () {\n this.style.backgroundImage = 'url(/static/img/palettes/' + this.value + '.png)';\n redisplay.draw();\n });\n var right_color_select = col_div.insert('p').styles({ display: 'inline', 'margin-left': '70px' }).attr('class', 'color_txt2').html(_tr('disc_box.right_colramp')).insert('select').style('width', '116px').attr('class', 'color_params_right').on('change', function () {\n this.style.backgroundImage = 'url(/static/img/palettes/' + this.value + '.png)';\n redisplay.draw();\n });\n pal_names.forEach(function (name) {\n left_color_select.append('option').attrs({ value: name, title: name }).styles({ 'background-image': 'url(/static/img/palettes/' + name + '.png)' }).text(name);\n right_color_select.append('option').attrs({ value: name, title: name }).styles({ 'background-image': 'url(/static/img/palettes/' + name + '.png)' }).text(name);\n });\n\n // if (_app.custom_palettes) {\n // const additional_colors = Array.from(\n // _app.custom_palettes.entries());\n // for (let ixp = 0; ixp < additional_colors.length; ixp++) {\n // left_color_select.append('option')\n // .text(additional_colors[ixp][0])\n // .attrs({ value: `user_${additional_colors[ixp][0]}`, title: additional_colors[ixp][0], nb_colors: additional_colors[ixp][1].length })\n // .property('disabled', additional_colors[ixp][1].length !== nb_class);\n // right_color_select.append('option')\n // .text(additional_colors[ixp][0])\n // .attrs({ value: `user_${additional_colors[ixp][0]}`, title: additional_colors[ixp][0], nb_colors: additional_colors[ixp][1].length })\n // .property('disabled', additional_colors[ixp][1].length !== nb_class);\n // }\n // }\n\n document.getElementsByClassName('color_params_right')[0].selectedIndex = 14;\n\n var central_color = col_div.insert('p').attr('class', 'central_color');\n central_color.insert('input').attrs({ type: 'checkbox', id: 'central_color_chkbx' }).on('change', function () {\n redisplay.draw();\n if (this.checked) {\n col_div.select('#central_color_val').style('display', '');\n } else {\n col_div.select('#central_color_val').style('display', 'none');\n }\n });\n central_color.select('input').node().checked = true;\n central_color.insert('label').attr('for', 'central_color_chkbx').html(_tr('disc_box.colored_central_class'));\n central_color.insert('input').attrs({ type: 'color', id: 'central_color_val', value: '#e5e5e5' }).style('margin', '0px 10px').on('change', redisplay.draw);\n };\n\n var make_box_histo_option = function make_box_histo_option() {\n var histo_options = newBox.append('div').attrs({ id: 'histo_options', class: 'row equal' }).styles({ margin: '5px 5px 10px 15px', width: '100%' });\n var a = histo_options.append('div').attr('class', 'col-xs-6 col-sm-3'),\n b = histo_options.append('div').attr('class', 'col-xs-6 col-sm-3'),\n c = histo_options.append('div').attr('class', 'col-xs-6 col-sm-3'),\n d = histo_options.append('div').attr('class', 'col-xs-6 col-sm-3');\n\n a.insert('button').attrs({ class: 'btn_population' }).html(_tr('disc_box.disp_rug_pop')).on('click', function () {\n if (this.classList.contains('active')) {\n this.classList.remove('active');\n rug_plot.style('display', 'none');\n rug_plot.classed('active', false);\n } else {\n this.classList.add('active');\n rug_plot.style('display', '');\n rug_plot.classed('active', true);\n }\n });\n\n b.insert('button').attrs({ class: 'btn_mean' }).html(_tr('disc_box.disp_mean')).on('click', function () {\n if (this.classList.contains('active')) {\n this.classList.remove('active');\n line_mean.style('stroke-width', 0);\n txt_mean.style('fill', 'none');\n line_mean.classed('active', false);\n } else {\n this.classList.add('active');\n line_mean.style('stroke-width', 2);\n txt_mean.style('fill', 'blue');\n line_mean.classed('active', true);\n }\n });\n\n c.insert('button').attrs({ class: 'btn_median' }).html(_tr('disc_box.disp_median')).on('click', function () {\n if (this.classList.contains('active')) {\n this.classList.remove('active');\n line_median.style('stroke-width', 0).classed('active', false);\n txt_median.style('fill', 'none');\n } else {\n this.classList.add('active');\n line_median.style('stroke-width', 2).classed('active', true);\n txt_median.style('fill', 'darkgreen');\n }\n });\n\n d.insert('button').attrs({ class: 'btn_stddev' }).html(_tr('disc_box.disp_sd')).on('click', function () {\n if (this.classList.contains('active')) {\n this.classList.remove('active');\n line_std_left.style('stroke-width', 0);\n line_std_left.classed('active', false);\n line_std_right.style('stroke-width', 0);\n line_std_right.classed('active', false);\n } else {\n this.classList.add('active');\n line_std_left.style('stroke-width', 2);\n line_std_left.classed('active', true);\n line_std_right.style('stroke-width', 2);\n line_std_right.classed('active', true);\n }\n });\n };\n\n var update_nb_class = function update_nb_class(value) {\n txt_nb_class.node().value = value;\n document.getElementById('nb_class_range').value = value;\n nb_class = value;\n var color_select = document.querySelector('.color_params');\n // Only do stuff related to custom palettes if we are using a \"sequential\" scheme:\n if (!color_select) return;\n var selected_index = color_select.selectedIndex;\n var select_options = color_select.querySelectorAll('option');\n for (var ixc = 0; ixc < select_options.length; ixc++) {\n if (select_options[ixc].value.startsWith('user_')) {\n select_options[ixc].disabled = nb_class !== +select_options[ixc].getAttribute('nb_colors');\n }\n }\n if (select_options[selected_index].value.startsWith('user_') && select_options[selected_index].getAttribute('nb_colors') !== nb_class) {\n (0, _helpers.setSelected)(color_select, 'Blues');\n }\n // const color_select_left = document.querySelectorAll('.color_params_left > option');\n // const color_select_right = document.querySelectorAll('.color_params_right > option');\n // for (let ixc = 0; ixc < color_select_left.length; ixc++) {\n // if (color_select_left[ixc].value.startsWith('user_')) {\n // const is_disabled = (nb_class === +color_select_left[ixc].getAttribute('nb_colors'))\n // ? false : true;\n // color_select_left[ixc].disabled = is_disabled;\n // color_select_right[ixc].disabled = is_disabled;\n // }\n // }\n };\n\n var update_axis = function update_axis(group) {\n group.call(d3.axisBottom().scale(x).tickFormat(formatCount));\n };\n\n var update_overlay_elements = function update_overlay_elements() {\n var x_mean = x(mean_serie),\n x_med = x(serie.median()),\n x_std_left = x(mean_serie - stddev_serie),\n x_std_right = x(mean_serie + stddev_serie);\n line_mean.transition().attrs({ x1: x_mean, x2: x_mean });\n txt_mean.transition().attr('x', x_mean);\n line_median.transition().attrs({ x1: x_med, x2: x_med });\n txt_median.transition().attr('x', x_med);\n line_std_left.transition().attrs({ x1: x_std_left, x2: x_std_left });\n line_std_right.transition().attrs({ x1: x_std_right, x2: x_std_right });\n rug_plot.selectAll('.indiv').attrs(function (d) {\n return { x1: x(d.value), x2: x(d.value) };\n });\n };\n\n var make_overlay_elements = function make_overlay_elements() {\n line_mean = overlay_svg.append('line').attrs({\n class: 'line_mean',\n x1: x(mean_serie),\n y1: 10,\n x2: x(mean_serie),\n y2: svg_h - margin.bottom\n }).styles({ 'stroke-width': 0, stroke: 'blue', fill: 'none' }).classed('active', false);\n\n txt_mean = overlay_svg.append('text').attrs({\n y: 0,\n dy: '0.75em',\n x: x(mean_serie),\n 'text-anchor': 'middle'\n }).style('fill', 'none').text(_tr('disc_box.mean'));\n\n line_median = overlay_svg.append('line').attrs({\n class: 'line_med',\n x1: x(serie.median()),\n y1: 10,\n x2: x(serie.median()),\n y2: svg_h - margin.bottom\n }).styles({ 'stroke-width': 0, stroke: 'darkgreen', fill: 'none' }).classed('active', false);\n\n txt_median = overlay_svg.append('text').attrs({\n y: 0,\n dy: '0.75em',\n x: x(serie.median()),\n 'text-anchor': 'middle'\n }).style('fill', 'none').text(_tr('disc_box.median'));\n\n line_std_left = overlay_svg.append('line').attrs({\n class: 'lines_std',\n x1: x(mean_serie - stddev_serie),\n y1: 10,\n x2: x(mean_serie - stddev_serie),\n y2: svg_h - margin.bottom\n }).styles({ 'stroke-width': 0, stroke: 'grey', fill: 'none' }).classed('active', false);\n\n line_std_right = overlay_svg.append('line').attrs({\n class: 'lines_std',\n x1: x(mean_serie + stddev_serie),\n y1: 10,\n x2: x(mean_serie + stddev_serie),\n y2: svg_h - margin.bottom\n }).styles({ 'stroke-width': 0, stroke: 'grey', fill: 'none' }).classed('active', false);\n\n rug_plot = overlay_svg.append('g').style('display', 'none');\n rug_plot.selectAll('.indiv').data(values.map(function (i) {\n return { value: +i };\n })).enter().insert('line').attrs(function (d) {\n return {\n class: 'indiv',\n x1: x(d.value),\n y1: svg_h - margin.bottom - 10,\n x2: x(d.value),\n y2: svg_h - margin.bottom\n };\n }).styles({ stroke: 'red', fill: 'none', 'stroke-width': 1 });\n };\n\n var make_summary = function make_summary() {\n var content_summary = (0, _helpers.make_content_summary)(serie);\n newBox.append('div').attr('id', 'summary').styles({ 'font-size': '11px', float: 'right', margin: '10px 10px 0px 10px' }).insert('p').html(['', _tr('disc_box.summary'), '
', content_summary].join(''));\n };\n\n var redisplay = {\n compute: function compute() {\n var tmp = void 0;\n serie = new geostats(values);\n breaks = [];\n values = serie.sorted();\n var deferred = Promise.pending();\n return new Promise(function (resolve, reject) {\n if (values.length > 7500 && type === 'jenks') {\n var jenks_worker = new Worker('static/js/webworker_jenks.js');\n _app.webworker_to_cancel = jenks_worker;\n _app.waitingOverlay.display({ zIndex: 5000 });\n jenks_worker.postMessage([values, nb_class]);\n jenks_worker.onmessage = function (e) {\n breaks = e.data;\n serie.setClassManually(breaks);\n serie.doCount();\n stock_class = Array.prototype.slice.call(serie.counter);\n _app.waitingOverlay.hide();\n _app.webworker_to_cancel = undefined;\n bins = [];\n for (var i = 0, len = stock_class.length; i < len; i++) {\n var bin = {};\n bin.val = stock_class[i];\n bin.offset = i === 0 ? 0 : bins[i - 1].width + bins[i - 1].offset;\n bin.width = breaks[i + 1] - breaks[i];\n bin.height = bin.val / (breaks[i + 1] - breaks[i]);\n bins[i] = bin;\n }\n resolve(true);\n jenks_worker.terminate();\n };\n }\n\n if (type === 'Q6') {\n tmp = (0, _common.getBreaksQ6)(values, serie.precision);\n // stock_class = tmp.stock_class;\n breaks = tmp.breaks;\n breaks[0] = min_serie;\n breaks[6] = max_serie;\n serie.setClassManually(breaks);\n serie.doCount();\n stock_class = Array.prototype.slice.call(serie.counter);\n } else if (type === 'stddev_f') {\n tmp = (0, _common.getBreaksStdDev)(serie, std_dev_params.share, std_dev_params.role_mean, serie.precision);\n update_nb_class(nb_class = tmp.nb_class);\n breaks = tmp.breaks;\n serie.setClassManually(tmp.breaks);\n serie.doCount();\n stock_class = Array.prototype.slice.call(serie.counter);\n } else if (type === 'user_defined') {\n tmp = (0, _common.getBreaks_userDefined)(serie.sorted(), user_break_list);\n stock_class = tmp.stock_class;\n breaks = tmp.breaks;\n nb_class = tmp.breaks.length - 1;\n update_nb_class(nb_class);\n\n if (breaks[0] > min_serie) breaks[0] = min_serie;\n if (breaks[nb_class] < max_serie) breaks[nb_class] = max_serie;\n\n var breaks_serie = breaks.slice();\n if (breaks_serie[0] < min_serie) {\n breaks_serie[0] = min_serie;\n }\n if (breaks_serie[nb_class] > max_serie) {\n breaks_serie[nb_class] = max_serie;\n }\n serie.setClassManually(breaks_serie);\n } else {\n breaks = serie[_common.discretiz_geostats_switch.get(type)](nb_class);\n // if (serie.precision) breaks = breaks.map(val => round_value(val, serie.precision));\n serie.doCount();\n stock_class = Array.prototype.slice.call(serie.counter);\n }\n // In order to avoid class limit falling out the serie limits with Std class :\n // breaks[0] = breaks[0] < serie.min() ? serie.min() : breaks[0];\n // ^^ well finally not ?\n if (stock_class.length === 0) {\n resolve(false);\n }\n\n bins = [];\n for (var i = 0, len = stock_class.length; i < len; i++) {\n // const bin = {};\n // bin.val = stock_class[i];\n // bin.offset = i === 0 ? 0 : (bins[i - 1].width + bins[i - 1].offset);\n // bin.width = breaks[i + 1] - breaks[i];\n // bin.height = bin.val / (breaks[i + 1] - breaks[i]);\n // bins[i] = bin;\n var _stock = stock_class[i];\n bins[i].push({\n val: stock_class[i],\n offset: i === 0 ? 0 : bins[i - 1].width + bins[i - 1].offset,\n height: _stock / (breaks[i + 1] - breaks[i]),\n width: breaks[i + 1] - breaks[i]\n });\n }\n resolve(true);\n });\n },\n draw: function draw(provided_colors) {\n // Clean-up previously made histogram :\n newBox.select('#svg_discretization').selectAll('.bar').remove();\n newBox.select('#svg_discretization').selectAll('.text_bar').remove();\n\n if (!provided_colors) {\n var col_scheme = newBox.select('.color_params_left').node() ? 'diverging' : 'sequential';\n if (col_scheme === 'sequential') {\n if (to_reverse) {\n color_array = color_array.reverse();\n to_reverse = false;\n } else {\n var selected_palette = document.querySelector('.color_params').value;\n if (selected_palette.startsWith('user_')) {\n color_array = _app.custom_palettes.get(selected_palette.slice(5));\n } else {\n color_array = (0, _colors_helpers.getColorBrewerArray)(nb_class, selected_palette);\n color_array = color_array.slice(0, nb_class);\n }\n }\n } else if (col_scheme === 'diverging') {\n var left_palette = document.querySelector('.color_params_left').value,\n right_palette = document.querySelector('.color_params_right').value,\n ctl_class_value = +document.getElementById('centr_class').value,\n ctl_class_color = document.querySelector('.central_color > input').checked ? document.getElementById('central_color_val').value : [];\n\n var class_right = nb_class - ctl_class_value + 1,\n class_left = ctl_class_value - 1,\n max_col_nb = (0, _helpers_math.Mmax)(class_right, class_left);\n\n var right_pal = (0, _colors_helpers.getColorBrewerArray)(max_col_nb, right_palette);\n var left_pal = (0, _colors_helpers.getColorBrewerArray)(max_col_nb, left_palette);\n\n // Below is for the case if we have displayed the custom palette also\n // for a diverging scheme:\n // let right_pal,\n // left_pal;\n // if (right_palette.startsWith('user_')) {\n // right_pal = _app.custom_palettes.get(right_palette.slice(5));\n // } else {\n // right_pal = getColorBrewerArray(max_col_nb, right_palette);\n // }\n // if (left_palette.startsWith('user_')) {\n // left_pal = _app.custom_palettes.get(left_palette.slice(5));\n // } else {\n // left_pal = getColorBrewerArray(max_col_nb, left_palette);\n // }\n right_pal = right_pal.slice(0, class_right);\n left_pal = left_pal.slice(0, class_left).reverse();\n color_array = [].concat(left_pal, ctl_class_color, right_pal);\n }\n } else {\n color_array = provided_colors.slice();\n }\n for (var i = 0, len = bins.length; i < len; ++i) {\n bins[i].color = color_array[i];\n }\n x.domain([breaks[0], breaks[breaks.length - 1]]);\n y.domain([0, d3.max(bins.map(function (d) {\n return d.height + d.height / 3;\n }))]);\n\n svg_histo.select('.x_axis').transition().call(update_axis);\n update_overlay_elements();\n\n var xx = d3.scaleLinear().range([0, svg_w]).domain([0, d3.max(bins.map(function (d) {\n return d.offset + d.width;\n }))]);\n\n svg_histo.selectAll('.bar').data(bins).enter().append('rect').attrs(function (d, i) {\n return {\n class: 'bar',\n id: 'bar_' + i,\n transform: 'translate(0, -7.5)',\n x: xx(d.offset),\n y: y(d.height) - margin.bottom,\n width: xx(d.width),\n height: svg_h - y(d.height)\n };\n }).styles(function (d) {\n return {\n fill: d.color,\n opacity: 0.95,\n 'stroke-opacity': 1\n };\n }).on('mouseover', function () {\n this.parentElement.querySelector('#text_bar_' + this.id.split('_')[1]).style.display = null;\n }).on('mouseout', function () {\n this.parentElement.querySelector('#text_bar_' + this.id.split('_')[1]).style.display = 'none';\n });\n\n svg_histo.selectAll('.txt_bar').data(bins).enter().append('text').attrs(function (d, i) {\n return {\n id: 'text_bar_' + i,\n class: 'text_bar',\n 'text-anchor': 'middle',\n dy: '.75em',\n x: xx(d.offset + d.width / 2),\n y: y(d.height) - margin.top * 2 - margin.bottom - 1.5\n };\n }).styles({ color: 'black', cursor: 'default', display: 'none' }).text(function (d) {\n return formatCount(d.val);\n });\n\n document.getElementById('user_breaks_area').value = breaks.join(' - ');\n return true;\n }\n };\n\n var modal_box = (0, _dialogs.make_dialog_container)('discretiz_charts', [_tr('disc_box.title'), ' - ', layer_name, ' - ', field_name].join(''), 'discretiz_charts_dialog');\n var container = document.getElementById('discretiz_charts');\n var newBox = d3.select(container).select('.modal-body');\n var db_data = void 0;\n if (data_manager.result_data.hasOwnProperty(layer_name)) {\n db_data = data_manager.result_data[layer_name];\n } else if (data_manager.user_data.hasOwnProperty(layer_name)) {\n db_data = data_manager.user_data[layer_name];\n } else {\n var layer = svg_map.querySelector('#' + _app.idLayer.get(layer_name));\n db_data = Array.prototype.map.call(layer.children, function (d) {\n return d.__data__.properties;\n });\n }\n var indexes = [];\n var color_array = [],\n nb_values = db_data.length,\n values = [],\n no_data = void 0;\n\n var type = options.type;\n\n for (var i = 0; i < nb_values; i++) {\n var value = db_data[i][field_name];\n // if (value != null && value !== '' && isFinite(value) && !isNaN(+value)) {\n if ((0, _helpers.isNumber)(value)) {\n values.push(+db_data[i][field_name]);\n indexes.push(i);\n }\n }\n\n if (nb_values === values.length) {\n no_data = 0;\n } else {\n no_data = nb_values - values.length;\n nb_values = values.length;\n }\n\n var max_nb_class = nb_values > 20 ? 20 : nb_values;\n var serie = new geostats(values),\n breaks = [],\n stock_class = [],\n bins = [],\n user_break_list = null,\n std_dev_params = options.extra_options && options.extra_options.role_mean ? options.extra_options : { role_mean: 'center', share: 1 };\n\n if (serie.variance() === 0 && serie.stddev() === 0) {\n serie = new geostats(values);\n }\n\n var min_serie = serie.min();\n var max_serie = serie.max();\n var mean_serie = serie.mean();\n var stddev_serie = serie.stddev();\n\n values = serie.sorted();\n\n var available_functions = [[_tr('app_page.common.equal_interval'), 'equal_interval'], [_tr('app_page.common.quantiles'), 'quantiles'], [_tr('app_page.common.stddev_f'), 'stddev_f'], [_tr('app_page.common.Q6'), 'Q6'], [_tr('app_page.common.jenks'), 'jenks']];\n\n if (!serie._hasZeroValue() && !serie._hasNegativeValue()) {\n available_functions.push([_tr('app_page.common.geometric_progression'), 'geometric_progression']);\n }\n var precision_axis = (0, _helpers_calc.get_precision_axis)(min_serie, max_serie, serie.precision);\n var formatCount = d3.format(precision_axis);\n var discretization_panel = newBox.append('div').attr('id', 'discretization_panel');\n var discretization = discretization_panel.insert('p').insert('select').attr('class', 'params').on('change', function () {\n type = this.value;\n if (type === 'stddev_f') {\n input_section_stddev.style('display', '');\n document.getElementById('nb_class_range').disabled = 'disabled';\n txt_nb_class.style('disabled', 'disabled');\n disc_nb_class.style('display', 'none');\n } else {\n input_section_stddev.style('display', 'none');\n document.getElementById('nb_class_range').disabled = false;\n txt_nb_class.style('disabled', false);\n disc_nb_class.style('display', 'inline');\n }\n if (type === 'Q6') {\n update_nb_class(6);\n }\n redisplay.compute().then(function (v) {\n if (v) redisplay.draw();\n });\n });\n\n available_functions.forEach(function (func) {\n discretization.append('option').text(func[0]).attr('value', func[1]);\n });\n\n var input_section_stddev = discretization_panel.insert('p').styles({ margin: 'auto', display: type === 'stddev_f' ? '' : 'none' });\n input_section_stddev.insert('span').html(_tr('disc_box.stddev_share_txt1'));\n input_section_stddev.insert('input').attrs({\n type: 'number', min: 0.1, max: 10, step: 0.1, class: 'without_spinner', id: 'stddev_share'\n }).styles({\n width: '45px', 'margin-left': '10px', 'margin-right': '10px'\n }).property('value', std_dev_params.share).on('change', function () {\n var val = this.value;\n if (val === 0 || val * stddev_serie > max_serie - min_serie || val * stddev_serie * 21 < max_serie - min_serie) {\n // If the new value is too big or too small:\n this.value = std_dev_params.share;\n return;\n }\n std_dev_params.share = val;\n redisplay.compute().then(function (v) {\n if (v) redisplay.draw();\n });\n });\n input_section_stddev.insert('span').html(_tr('disc_box.stddev_share_txt2'));\n var std_dev_mean_choice = input_section_stddev.insert('p').style('margin', 'auto');\n std_dev_mean_choice.insert('p').style('margin', 'auto').html(_tr('disc_box.stddev_role_mean'));\n\n [[_tr('disc_box.stddev_center_mean'), 'center'], [_tr('disc_box.stddev_break_mean'), 'bound']].forEach(function (el) {\n std_dev_mean_choice.insert('input').attrs({ type: 'radio', name: 'role_mean', id: 'button_stddev_' + el[1] }).property('value', el[1]).on('change', function () {\n std_dev_params.role_mean = this.value;\n redisplay.compute().then(function (v) {\n if (v) redisplay.draw();\n });\n });\n std_dev_mean_choice.insert('label').style('font-weight', '400').attr('for', 'button_stddev_' + el[1]).html(el[0]);\n });\n document.getElementById('button_stddev_' + std_dev_params.role_mean).checked = true;\n var txt_nb_class = discretization_panel.append('input').attrs({ type: 'number', class: 'without_spinner', min: 2, max: max_nb_class, step: 1 }).styles({ width: '30px', margin: '0 10px', 'vertical-align': 'calc(20%)' }).property('value', nb_class).on('change', function () {\n var a = disc_nb_class.node();\n a.value = this.value;\n a.dispatchEvent(new Event('change'));\n });\n\n discretization_panel.append('span').html(_tr('disc_box.class'));\n\n var disc_nb_class = discretization_panel.insert('input').attrs({\n id: 'nb_class_range',\n type: 'range',\n min: 2,\n max: max_nb_class,\n step: 1\n }).styles({ display: 'inline', width: '60px', 'vertical-align': 'middle', margin: '10px' }).property('value', nb_class).on('change', function () {\n var _this = this;\n\n type = discretization.node().value;\n var old_nb_class = nb_class;\n if (type === 'Q6') {\n update_nb_class(6);\n } else if (type === 'stddev_f') {\n update_nb_class(nb_class);\n return;\n }\n // nb_class = +this.value;\n // txt_nb_class.node().value = nb_class;\n update_nb_class(+this.value);\n redisplay.compute().then(function (v) {\n if (!v) {\n _this.value = old_nb_class;\n txt_nb_class.node().value = +old_nb_class;\n } else {\n redisplay.draw();\n var ctl_class = document.getElementById('centr_class');\n if (ctl_class) {\n ctl_class.max = nb_class;\n if (ctl_class > nb_class) ctl_class.value = (0, _helpers_math.Mround)(nb_class / 2);\n }\n }\n });\n });\n\n var ref_histo_box = newBox.append('div').attr('id', 'ref_histo_box');\n ref_histo_box.append('div').attr('id', 'inner_ref_histo_box');\n\n discretization.node().value = type;\n make_summary();\n var refDisplay = (0, _common.prepare_ref_histo)(newBox, serie, formatCount);\n refDisplay('histogram');\n\n var svg_h = h / 5 > 100 ? h / 5 : 100,\n svg_w = window.innerWidth - 40 > 760 ? 760 : window.innerWidth - 40,\n margin = { top: 7.5, right: 30, bottom: 7.5, left: 30 },\n height = svg_h - margin.top - margin.bottom;\n\n d3.select(container).select('.modal-dialog').styles({\n width: svg_w + margin.top + margin.bottom + 90 + 'px',\n height: window.innerHeight - 60 + 'px'\n });\n\n if (values.length < 500) {\n // Only allow for beeswarm plot if there isn't too many values\n // as it seems to be costly due to the \"simulation\" + the voronoi\n var current_histo = 'histogram';\n ref_histo_box.append('p').style('text-align', 'center').insert('button').attrs({\n id: 'button_switch_plot', class: 'i18n button_st4', 'data-i18n': '[text]disc_box.switch_ref_histo'\n }).styles({ padding: '3px', 'font-size': '10px' }).html(_tr('disc_box.switch_ref_histo')).on('click', function () {\n var str_tr = void 0;\n if (current_histo === 'histogram') {\n refDisplay('box_plot');\n current_histo = 'box_plot';\n str_tr = '_boxplot';\n } else if (current_histo === 'box_plot') {\n refDisplay('beeswarm');\n current_histo = 'beeswarm';\n str_tr = '_beeswarm';\n } else if (current_histo === 'beeswarm') {\n refDisplay('histogram');\n current_histo = 'histogram';\n str_tr = '';\n }\n document.getElementById('ref_histo_title').innerHTML = '' + _tr('disc_box.hist_ref_title' + str_tr) + '';\n });\n }\n var div_svg = newBox.append('div').append('svg').attrs({\n id: 'svg_discretization',\n width: svg_w + margin.left + margin.right,\n height: svg_h + margin.top + margin.bottom\n });\n\n make_box_histo_option();\n\n var svg_histo = div_svg.append('g').attr('transform', 'translate(' + margin.left + ', ' + margin.top + ')');\n\n var x = d3.scaleLinear().domain([min_serie, max_serie]).range([0, svg_w]);\n\n var y = d3.scaleLinear().range([svg_h, 0]);\n\n var overlay_svg = div_svg.append('g').attr('transform', 'translate(30, 0)'),\n line_mean = void 0,\n line_std_right = void 0,\n line_std_left = void 0,\n line_median = void 0,\n txt_median = void 0,\n txt_mean = void 0,\n rug_plot = void 0;\n\n make_overlay_elements();\n\n svg_histo.append('g').attrs({ class: 'x_axis', transform: 'translate(0,' + height + ')' }).call(d3.axisBottom().scale(x).tickFormat(formatCount));\n\n newBox.append('button').attrs({ class: 'accordion_disc active', id: 'btn_acc_disc_color' }).style('padding', '0 6px').html(_tr('disc_box.title_color_scheme'));\n var accordion_colors = newBox.append('div').attrs({ class: 'panel show', id: 'accordion_colors' }).style('width', '98%');\n var color_scheme = accordion_colors.append('div').attr('id', 'color_div').style('text-align', 'center');\n\n [[_tr('disc_box.sequential'), 'sequential'], [_tr('disc_box.diverging'), 'diverging']].forEach(function (el) {\n color_scheme.insert('label').style('margin', '20px').html(el[0]).insert('input').attrs({ type: 'radio', name: 'color_scheme', id: 'button_' + el[1] }).property('value', el[1]).on('change', function () {\n if (this.value === 'sequential') {\n make_sequ_button();\n } else {\n make_diverg_button();\n }\n redisplay.draw();\n });\n });\n var to_reverse = false;\n document.getElementById('button_sequential').checked = true;\n accordion_colors.append('span').attr('id', 'button_palette_box').styles({\n margin: '5px',\n float: 'right',\n cursor: 'pointer',\n 'font-style': 'italic'\n }).html(_tr('app_page.palette_box.button')).on('click', function () {\n make_box_custom_palette(nb_class).then(function (result) {\n if (result) {\n var _result = _slicedToArray(result, 2),\n colors = _result[0],\n palette_name = _result[1];\n\n var select_palette = document.querySelector('.color_params');\n (0, _colors_helpers.addNewCustomPalette)(palette_name, colors);\n if (select_palette) {\n d3.select(select_palette).append('option').text(palette_name).attrs({ value: 'user_' + palette_name, title: palette_name, nb_colors: colors.length });\n (0, _helpers.setSelected)(select_palette, 'user_' + palette_name);\n }\n // else {\n // d3.select('.color_params_right')\n // .append('option')\n // .text(palette_name)\n // .attrs({ value: `user_${palette_name}`, title: palette_name, nb_colors: colors.length });\n // d3.select('.color_params_left')\n // .append('option')\n // .text(palette_name)\n // .attrs({ value: `user_${palette_name}`, title: palette_name, nb_colors: colors.length });\n // }\n }\n });\n });\n\n newBox.append('button').attrs({ class: 'accordion_disc', id: 'btn_acc_disc_break' }).style('padding', '0 6px').html(_tr('disc_box.title_break_values'));\n var accordion_breaks = newBox.append('div').attrs({ class: 'panel', id: 'accordion_breaks_vals' }).style('width', '98%');\n var user_defined_breaks = accordion_breaks.append('div').attr('id', 'user_breaks');\n\n user_defined_breaks.insert('textarea').attrs({\n id: 'user_breaks_area',\n placeholder: _tr('app_page.common.expected_class')\n }).style('width', '600px');\n\n user_defined_breaks.insert('button').text(_tr('app_page.common.valid')).on('click', function () {\n // const old_nb_class = nb_class;\n user_break_list = document.getElementById('user_breaks_area').value;\n type = 'user_defined';\n // nb_class = user_break_list.split('-').length - 1;\n // txt_nb_class.node().value = +nb_class;\n // txt_nb_class.html(_tr(\"disc_box.class\", {count: +nb_class}));\n // document.getElementById(\"nb_class_range\").value = nb_class;\n redisplay.compute().then(function (v) {\n if (v) redisplay.draw();\n });\n });\n\n (0, _interface.accordionize)('.accordion_disc', container);\n\n if (no_data > 0) {\n make_no_data_section();\n if (options.no_data) {\n document.getElementById('no_data_color').value = options.no_data;\n }\n }\n\n if (!options.schema) {\n make_sequ_button();\n } else if (options.schema.length === 1) {\n make_sequ_button();\n document.querySelector('.color_params').value = options.schema[0];\n document.querySelector('.color_params').style.backgroundImage = 'url(/static/img/palettes/' + options.schema[0] + '.png)';\n } else if (options.schema.length > 1) {\n make_diverg_button();\n document.getElementById('button_diverging').checked = true;\n var tmp = 0;\n (0, _helpers.setSelected)(document.querySelector('.color_params_left'), options.schema[0]);\n // document.querySelector(\".color_params_left\").value = options.schema[0];\n if (options.schema.length > 2) {\n var elem = document.getElementById('central_color_val');\n elem.style.display = '';\n elem.value = options.schema[1];\n tmp = 1;\n document.querySelector('.central_color').querySelector('input').checked = true;\n } else {\n document.querySelector('.central_color').querySelector('input').checked = false;\n }\n (0, _helpers.setSelected)(document.querySelector('.color_params_right'), options.schema[1 + tmp]);\n // document.querySelector(\".color_params_right\").value = options.schema[1 + tmp];\n }\n\n if (options.type && options.type === 'user_defined') {\n user_break_list = options.breaks;\n }\n\n redisplay.compute().then(function (v) {\n if (v) redisplay.draw(options.colors);\n });\n\n return new Promise(function (resolve, reject) {\n container.querySelector('.btn_ok').onclick = function () {\n breaks = breaks.map(function (i) {\n return +i;\n });\n var colors_map = [];\n var no_data_color = null;\n if (no_data > 0) {\n no_data_color = document.getElementById('no_data_color').value;\n }\n for (var j = 0; j < db_data.length; ++j) {\n var _value = db_data[j][field_name];\n // if (value !== null && value !== '' && !isNaN(+value)) {\n if ((0, _helpers.isNumber)(_value)) {\n var idx = serie.getClass(+_value);\n colors_map.push(color_array[idx]);\n } else {\n colors_map.push(no_data_color);\n }\n }\n var col_schema = [];\n if (!d3.select('.color_params_left').node()) {\n col_schema.push(document.querySelector('.color_params').value);\n } else {\n col_schema.push(document.querySelector('.color_params_left').value);\n if (document.querySelector('.central_color').querySelector('input').checked) {\n col_schema.push(document.getElementById('central_color_val').value);\n }\n col_schema.push(document.querySelector('.color_params_right').value);\n }\n resolve([nb_class, type, breaks, color_array, colors_map, col_schema, no_data_color, type === 'stddev_f' ? std_dev_params : undefined]);\n document.removeEventListener('keydown', helper_esc_key_twbs);\n container.remove();\n var p = (0, _dialogs.reOpenParent)();\n if (!p) _dialogs.overlay_under_modal.hide();\n };\n\n var _onclose = function _onclose() {\n resolve(false);\n document.removeEventListener('keydown', helper_esc_key_twbs);\n container.remove();\n var p = (0, _dialogs.reOpenParent)();\n if (!p) _dialogs.overlay_under_modal.hide();\n };\n container.querySelector('.btn_cancel').onclick = _onclose;\n container.querySelector('#xclose').onclick = _onclose;\n var helper_esc_key_twbs = function helper_esc_key_twbs(evt) {\n var _event = evt || window.event;\n var isEscape = 'key' in _event ? _event.key === 'Escape' || _event.key === 'Esc' : _event.keyCode === 27;\n if (isEscape) {\n _event.stopPropagation();\n _onclose();\n }\n };\n document.addEventListener('keydown', helper_esc_key_twbs);\n _dialogs.overlay_under_modal.display();\n });\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! bluebird */ \"./node_modules/bluebird/js/browser/bluebird.js\")))\n\n//# sourceURL=webpack:///./js/classification/discretization_panel.js?");
-
-/***/ }),
-
-/***/ "./js/classification/discrtiz_links_discont.js":
-/*!*****************************************************!*\
- !*** ./js/classification/discrtiz_links_discont.js ***!
- \*****************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("/* WEBPACK VAR INJECTION */(function(Promise) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.display_discretization_links_discont = undefined;\n\nvar _dialogs = __webpack_require__(/*! ./../dialogs */ \"./js/dialogs.js\");\n\nvar _interface = __webpack_require__(/*! ./../interface */ \"./js/interface.js\");\n\nvar _helpers = __webpack_require__(/*! ./../helpers */ \"./js/helpers.js\");\n\nvar _helpers_calc = __webpack_require__(/*! ./../helpers_calc */ \"./js/helpers_calc.js\");\n\nvar _common = __webpack_require__(/*! ./common */ \"./js/classification/common.js\");\n\nvar display_discretization_links_discont = exports.display_discretization_links_discont = function display_discretization_links_discont(layer_name, field_name, nb_class, type) {\n var make_box_histo_option = function make_box_histo_option() {\n var histo_options = newBox.append('div').attrs({ id: 'histo_options', class: 'row equal' }).styles({ margin: '5px 5px 10px 15px', width: '100%' });\n var a = histo_options.append('div').attr('class', 'col-xs-6 col-sm-3'),\n b = histo_options.append('div').attr('class', 'col-xs-6 col-sm-3'),\n c = histo_options.append('div').attr('class', 'col-xs-6 col-sm-3'),\n d = histo_options.append('div').attr('class', 'col-xs-6 col-sm-3');\n\n a.insert('button').attrs({ class: 'btn_population' }).html(_tr('disc_box.disp_rug_pop')).on('click', function () {\n if (this.classList.contains('active')) {\n this.classList.remove('active');\n rug_plot.style('display', 'none');\n rug_plot.classed('active', false);\n } else {\n this.classList.add('active');\n rug_plot.style('display', '');\n rug_plot.classed('active', true);\n }\n });\n\n b.insert('button').attrs({ class: 'btn_mean' }).html(_tr('disc_box.disp_mean')).on('click', function () {\n if (this.classList.contains('active')) {\n this.classList.remove('active');\n line_mean.style('stroke-width', 0);\n txt_mean.style('fill', 'none');\n line_mean.classed('active', false);\n } else {\n this.classList.add('active');\n line_mean.style('stroke-width', 2);\n txt_mean.style('fill', 'blue');\n line_mean.classed('active', true);\n }\n });\n\n c.insert('button').attrs({ class: 'btn_median' }).html(_tr('disc_box.disp_median')).on('click', function () {\n if (this.classList.contains('active')) {\n this.classList.remove('active');\n line_median.style('stroke-width', 0).classed('active', false);\n txt_median.style('fill', 'none');\n } else {\n this.classList.add('active');\n line_median.style('stroke-width', 2).classed('active', true);\n txt_median.style('fill', 'darkgreen');\n }\n });\n\n d.insert('button').attrs({ class: 'btn_stddev' }).html(_tr('disc_box.disp_sd')).on('click', function () {\n if (this.classList.contains('active')) {\n this.classList.remove('active');\n line_std_left.style('stroke-width', 0);\n line_std_left.classed('active', false);\n line_std_right.style('stroke-width', 0);\n line_std_right.classed('active', false);\n } else {\n this.classList.add('active');\n line_std_left.style('stroke-width', 2);\n line_std_left.classed('active', true);\n line_std_right.style('stroke-width', 2);\n line_std_right.classed('active', true);\n }\n });\n };\n\n var make_overlay_elements = function make_overlay_elements() {\n var mean_val = serie.mean(),\n stddev = serie.stddev();\n\n line_mean = overlay_svg.append('line').attrs({\n class: 'line_mean',\n x1: x(mean_val),\n y1: 10,\n x2: x(mean_val),\n y2: svg_h - margin.bottom\n }).styles({ 'stroke-width': 0, stroke: 'blue', fill: 'none' }).classed('active', false);\n\n txt_mean = overlay_svg.append('text').attrs({\n dy: '0.75em',\n x: x(mean_val),\n y: 0,\n 'text-anchor': 'middle'\n }).style('fill', 'none').text(_tr('disc_box.mean'));\n\n line_median = overlay_svg.append('line').attrs({\n class: 'line_med',\n x1: x(serie.median()),\n y1: 10,\n x2: x(serie.median()),\n y2: svg_h - margin.bottom\n }).styles({ 'stroke-width': 0, stroke: 'darkgreen', fill: 'none' }).classed('active', false);\n\n txt_median = overlay_svg.append('text').attrs({\n dy: '0.75em',\n x: x(serie.median()),\n y: 0,\n 'text-anchor': 'middle'\n }).style('fill', 'none').text(_tr('disc_box.median'));\n\n line_std_left = overlay_svg.append('line').attrs({\n class: 'lines_std',\n x1: x(mean_val - stddev),\n y1: 10,\n x2: x(mean_val - stddev),\n y2: svg_h - margin.bottom\n }).styles({ 'stroke-width': 0, stroke: 'grey', fill: 'none' }).classed('active', false);\n\n line_std_right = overlay_svg.append('line').attrs({\n class: 'lines_std',\n x1: x(mean_val + stddev),\n y1: 10,\n x2: x(mean_val + stddev),\n y2: svg_h - margin.bottom\n }).styles({ 'stroke-width': 0, stroke: 'grey', fill: 'none' }).classed('active', false);\n\n rug_plot = overlay_svg.append('g').style('display', 'none');\n rug_plot.selectAll('.indiv').data(values.map(function (i) {\n return { value: +i };\n })).enter().insert('line').attrs(function (d) {\n return {\n class: 'indiv',\n x1: x(d.value),\n y1: svg_h - margin.bottom - 10,\n x2: x(d.value),\n y2: svg_h - margin.bottom\n };\n }).styles({ stroke: 'red', fill: 'none', 'stroke-width': 1 });\n };\n\n var make_summary = function make_summary() {\n var content_summary = (0, _helpers.make_content_summary)(serie);\n newBox.append('div').attr('id', 'summary').styles({\n 'margin-left': '25px',\n 'margin-right': '50px',\n 'font-size': '10px',\n float: 'right'\n }).insert('p').html(['', _tr('disc_box.summary'), '
', content_summary].join(''));\n };\n\n var update_breaks = function update_breaks(user_defined) {\n if (!user_defined) {\n (0, _interface.make_min_max_tableau)(values, nb_class, type, last_min, last_max, 'sizes_div', undefined, callback);\n }\n var tmp_breaks = (0, _interface.fetch_min_max_table_value)('sizes_div');\n var len_breaks = tmp_breaks.sizes.length;\n breaks_info = [];\n last_min = tmp_breaks.sizes[0];\n last_max = tmp_breaks.sizes[tmp_breaks.sizes.length - 1];\n if (+tmp_breaks.mins[0] > +serie.min()) {\n nb_class += 1;\n txt_nb_class.node().value = nb_class;\n // txt_nb_class.html(_tr(\"disc_box.class\", {count: nb_class}));\n breaks_info.push([[serie.min(), +tmp_breaks.mins[0]], 0]);\n }\n\n for (var i = 0; i < len_breaks; i++) {\n breaks_info.push([[tmp_breaks.mins[i], tmp_breaks.maxs[i]], tmp_breaks.sizes[i]]);\n }\n breaks = [breaks_info[0][0][0]].concat(breaks_info.map(function (ft) {\n return ft[0][1];\n }));\n if (user_defined) {\n (0, _interface.make_min_max_tableau)(null, nb_class, type, last_min, last_max, 'sizes_div', breaks_info, callback);\n }\n };\n\n var redisplay = {\n compute: function compute() {\n bins = [];\n for (var i = 0, len = breaks_info.length; i < len; i++) {\n // const bin = {};\n // bin.offset = i === 0 ? 0 : (bins[i - 1].width + bins[i - 1].offset);\n // bin.width = breaks[i + 1] - breaks[i];\n // bin.height = breaks_info[i][1];\n // bins[i] = bin;\n bins.push({\n offset: i === 0 ? 0 : bins[i - 1].width + bins[i - 1].offset,\n width: breaks[i + 1] - breaks[i],\n height: breaks_info[i][1]\n });\n }\n return true;\n },\n draw: function draw() {\n // Clean-up previously made histogram :\n d3.select('#svg_discretization').selectAll('.bar').remove();\n\n for (var i = 0, len = bins.length; i < len; ++i) {\n bins[i].color = array_color[i];\n }\n\n var x = d3.scaleLinear().domain([serie.min(), serie.max()]).range([0, svg_w]);\n\n var y = d3.scaleLinear().range([svg_h, 0]);\n\n x.domain([0, d3.max(bins.map(function (d) {\n return d.offset + d.width;\n }))]);\n y.domain([0, d3.max(bins.map(function (d) {\n return d.height + d.height / 5;\n }))]);\n\n svg_histo.selectAll('.bar').data(bins).enter().append('rect').attrs(function (d, i) {\n return {\n class: 'bar',\n id: 'bar_' + i,\n transform: 'translate(0, -17.5)',\n x: x(d.offset),\n y: y(d.height) - margin.bottom,\n width: x(d.width),\n height: svg_h - y(d.height)\n };\n }).styles(function (d) {\n return {\n opacity: 0.95,\n 'stroke-opacity': 1,\n fill: d.color\n };\n });\n\n return true;\n }\n };\n\n var title_box = [_tr('disc_box.title'), ' - ', layer_name, ' - ', field_name].join('');\n var modal_box = (0, _dialogs.make_dialog_container)('discretiz_charts', title_box, 'discretiz_charts_dialog');\n var newBox = d3.select('#discretiz_charts').select('.modal-body');\n var db_data = void 0;\n if (data_manager.result_data.hasOwnProperty(layer_name)) {\n db_data = data_manager.result_data[layer_name];\n } else if (data_manager.user_data.hasOwnProperty(layer_name)) {\n db_data = data_manager.user_data[layer_name];\n }\n\n var color_array = [];\n var indexes = [];\n var nb_values = db_data.length;\n var values = [];\n var no_data = void 0;\n\n for (var i = 0; i < nb_values; i++) {\n if (db_data[i][field_name] != null) {\n values.push(+db_data[i][field_name]);\n indexes.push(i);\n }\n }\n\n if (nb_values === values.length) {\n no_data = 0;\n } else {\n no_data = nb_values - values.length;\n nb_values = values.length;\n }\n var max_nb_class = nb_values > 20 ? 20 : nb_values;\n var sizes = data_manager.current_layers[layer_name].breaks.map(function (el) {\n return el[1];\n });\n\n var serie = new geostats(values),\n breaks_info = [].concat(data_manager.current_layers[layer_name].breaks),\n breaks = [+breaks_info[0][0][0]],\n bins = [],\n last_min = (0, _helpers_calc.min_fast)(sizes),\n last_max = (0, _helpers_calc.max_fast)(sizes),\n array_color = d3.schemeSet3.slice();\n\n breaks_info.forEach(function (elem) {\n breaks.push(elem[0][1]);\n });\n\n if (serie.variance() === 0 && serie.stddev() === 0) {\n serie = new geostats(values);\n }\n\n values = serie.sorted();\n // serie.setPrecision(6);\n var available_functions = [[_tr('app_page.common.equal_interval'), 'equal_interval'], [_tr('app_page.common.quantiles'), 'quantiles'], [_tr('app_page.common.user_defined'), 'user_defined'],\n // [_tr(\"app_page.common.std_dev\"), \"std_dev\"],\n [_tr('app_page.common.Q6'), 'Q6'], [_tr('app_page.common.jenks'), 'jenks']];\n\n if (!serie._hasZeroValue() && !serie._hasZeroValue()) {\n available_functions.push([_tr('app_page.common.geometric_progression'), 'geometric_progression']);\n }\n var precisionAxis = (0, _helpers_calc.get_precision_axis)(serie.min(), serie.max(), serie.precision);\n var formatCount = d3.format(precisionAxis);\n\n var discretization_panel = newBox.append('div').attr('id', 'discretization_panel');\n var discretization_choice = discretization_panel.insert('p').html('Type ').insert('select').attr('class', 'params').on('change', function () {\n var old_type = type;\n if (this.value === 'user_defined') {\n this.value = old_type;\n return;\n }\n type = this.value;\n if (type === 'Q6') {\n nb_class = 6;\n txt_nb_class.node().value = nb_class;\n document.getElementById('nb_class_range').value = 6;\n }\n update_breaks();\n redisplay.compute();\n redisplay.draw();\n });\n\n available_functions.forEach(function (func) {\n discretization_choice.append('option').text(func[0]).attr('value', func[1]);\n });\n\n var ref_histo_box = newBox.append('div').attr('id', 'ref_histo_box');\n ref_histo_box.append('div').attr('id', 'inner_ref_histo_box');\n\n discretization_choice.node().value = type;\n\n make_summary();\n\n var refDisplay = (0, _common.prepare_ref_histo)(newBox, serie, formatCount);\n refDisplay('histogram');\n\n if (values.length < 750) {\n // Only allow for beeswarm plot if there isn't too many values\n // as it seems to be costly due to the \"simulation\" + the voronoi\n var choiceHisto = ref_histo_box.append('p').style('text-align', 'center');\n var currentHisto = 'histogram';\n choiceHisto.insert('button').attrs({\n id: 'button_switch_plot',\n class: 'i18n button_st4',\n 'data-i18n': '[text]disc_box.switch_ref_histo'\n }).styles({ padding: '3px', 'font-size': '10px' }).html(_tr('disc_box.switch_ref_histo')).on('click', function () {\n if (currentHisto === 'histogram') {\n refDisplay('box_plot');\n currentHisto = 'box_plot';\n } else if (currentHisto === 'box_plot') {\n refDisplay('beeswarm');\n currentHisto = 'beeswarm';\n } else if (currentHisto === 'beeswarm') {\n refDisplay('histogram');\n currentHisto = 'histogram';\n }\n });\n }\n\n var txt_nb_class = discretization_panel.append('input').attrs({\n type: 'number', class: 'without_spinner', min: 2, max: max_nb_class, step: 1\n }).styles({ width: '30px', margin: '0 10px', 'vertical-align': 'calc(20%)' }).property('value', nb_class).on('change', function () {\n var a = disc_nb_class.node();\n a.value = this.value;\n a.dispatchEvent(new Event('change'));\n });\n\n discretization_panel.append('span').html(_tr('disc_box.class'));\n\n var disc_nb_class = discretization_panel.insert('input').styles({\n display: 'inline', width: '60px', 'vertical-align': 'middle', margin: '10px'\n }).attrs({\n id: 'nb_class_range',\n type: 'range',\n min: 2,\n max: max_nb_class,\n step: 1\n }).property('value', nb_class).on('change', function () {\n type = discretization_choice.node().value;\n if (type === 'user_defined') {\n type = 'equal_interval';\n discretization_choice.node().value = 'equal_interval';\n }\n if (type === 'Q6') {\n this.value = 6;\n return;\n }\n nb_class = +this.value;\n txt_nb_class.node().value = nb_class;\n update_breaks();\n redisplay.compute();\n redisplay.draw();\n });\n\n var svg_h = h / 5 > 90 ? h / 5 : 90,\n svg_w = w - w / 8,\n margin = { top: 17.5, right: 30, bottom: 7.5, left: 30 },\n height = svg_h - margin.top - margin.bottom;\n\n d3.select('#discretiz_charts').select('.modal-dialog').styles({\n width: svg_w + margin.top + margin.bottom + 90 + 'px',\n height: window.innerHeight - 60 + 'px'\n });\n\n var div_svg = newBox.append('div').append('svg').attrs({\n id: 'svg_discretization',\n width: svg_w + margin.left + margin.right,\n height: svg_h + margin.top + margin.bottomn\n });\n\n make_box_histo_option();\n\n var svg_histo = div_svg.append('g').attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\n var x = d3.scaleLinear().domain([serie.min(), serie.max()]).range([0, svg_w]);\n\n var overlay_svg = div_svg.append('g').attr('transform', 'translate(30, 0)');\n\n var line_mean = void 0,\n line_std_right = void 0,\n line_std_left = void 0,\n line_median = void 0,\n txt_median = void 0,\n txt_mean = void 0,\n rug_plot = void 0;\n\n make_overlay_elements();\n\n // As the x axis and the mean didn't change, they can be drawn only once :\n svg_histo.append('g').attrs({\n class: 'x axis',\n transform: 'translate(0,' + height + ')'\n }).call(d3.axisBottom().scale(x).tickFormat(formatCount));\n\n var box_content = newBox.append('div').attr('id', 'box_content');\n box_content.append('h3').style('margin', '0').html(_tr('disc_box.line_size'));\n box_content.append('div').attr('id', 'sizes_div');\n var callback = function callback() {\n discretization_choice.node().value = type;\n update_breaks(true);\n redisplay.compute();\n redisplay.draw();\n };\n (0, _interface.make_min_max_tableau)(null, nb_class, type, null, null, 'sizes_div', breaks_info, callback);\n\n redisplay.compute();\n redisplay.draw();\n\n var container = document.getElementById('discretiz_charts');\n return new Promise(function (resolve, reject) {\n var _onclose = function _onclose() {\n resolve(false);\n document.removeEventListener('keydown', helper_esc_key_twbs);\n container.remove();\n var p = (0, _dialogs.reOpenParent)('.styleBox');\n if (!p) _dialogs.overlay_under_modal.hide();\n };\n var helper_esc_key_twbs = function helper_esc_key_twbs(evt) {\n var _event = evt || window.event;\n var isEscape = 'key' in _event ? _event.key === 'Escape' || _event.key === 'Esc' : _event.keyCode === 27;\n if (isEscape) {\n _event.preventDefault();\n _onclose();\n }\n };\n container.querySelector('.btn_ok').onclick = function () {\n breaks[0] = serie.min();\n breaks[nb_class] = serie.max();\n resolve([serie, breaks_info, breaks]);\n document.removeEventListener('keydown', helper_esc_key_twbs);\n container.remove();\n var p = (0, _dialogs.reOpenParent)('.styleBox');\n if (!p) _dialogs.overlay_under_modal.hide();\n };\n container.querySelector('.btn_cancel').onclick = _onclose;\n container.querySelector('#xclose').onclick = _onclose;\n document.addEventListener('keydown', helper_esc_key_twbs);\n });\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! bluebird */ \"./node_modules/bluebird/js/browser/bluebird.js\")))\n\n//# sourceURL=webpack:///./js/classification/discrtiz_links_discont.js?");
-
-/***/ }),
-
-/***/ "./js/colors_helpers.js":
-/*!******************************!*\
- !*** ./js/colors_helpers.js ***!
- \******************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addNewCustomPalette = exports.randomColor = exports.ColorsSelected = exports.Colors = exports.interpolateColor = exports.interp_n = exports.getColorBrewerArray = undefined;\nexports.rgb2hex = rgb2hex;\nexports.hexToRgb = hexToRgb;\n\nvar _colorbrewer = __webpack_require__(/*! colorbrewer */ \"./node_modules/colorbrewer/index.js\");\n\nvar _colorbrewer2 = _interopRequireDefault(_colorbrewer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n* Convert rgb color to hexcode.\n*\n* @param {string} rgb - The RGB color.\n* @return {string} - The color as an hexcode.\n*\n*/\nfunction rgb2hex(rgb) {\n // Originally from http://jsfiddle.net/mushigh/myoskaos/\n if (typeof rgb === 'string') {\n if (rgb.indexOf('#') > -1 || rgb.indexOf('rgb') < 0) {\n return rgb;\n }\n var _rgb = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\n return _rgb && _rgb.length === 4 ? '#' + ('0' + parseInt(_rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(_rgb[2], 10).toString(16)).slice(-2) + ('0' + parseInt(_rgb[3], 10).toString(16)).slice(-2) : '';\n }\n return rgb && rgb.length === 3 ? '#' + ('0' + parseInt(rgb[0], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) : '';\n}\n\n/**\n* Convert color hexcode to RGB code.\n*\n* @param {string} hex - The input hexcode.\n* @param {string} out - The output format between \"string\" and \"array\"\n* @return {string|array} - the rgb color as a string or as an array.\n*\n*/\nfunction hexToRgb(hex, out) {\n // Originally from http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n var res = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (out === 'string') {\n return res ? 'rgb(' + parseInt(res[1], 16) + ',' + parseInt(res[2], 16) + ',' + parseInt(res[3], 16) + ')' : null;\n }\n return res ? [parseInt(res[1], 16), parseInt(res[2], 16), parseInt(res[3], 16)] : null;\n}\n\n/**\n* Helper function in order to have a colorbrewer color ramp with\n* non-supported number of value using interpolation between the colorbrewer color\n* to fit the requested number of classes.\n* If the number of class fit the size of a colorbrewer ramp (3 < nb_class < 9)\n* the genuine colorbrewer array is directly returned.\n*\n* @param {interger} nbClass - The number of classes/colors wanted.\n* @param {integer} name - The name of the colorBrewer palette to use\n* @return {array} - An array of color with the desired length\n*/\nvar getColorBrewerArray = exports.getColorBrewerArray = function getColorBrewerArray(nbClass, name) {\n if (nbClass < 10 && nbClass >= 3) {\n var _colors = _colorbrewer2.default[name][nbClass];\n return _colors;\n } else if (nbClass < 3) {\n var _colors2 = _colorbrewer2.default[name][3];\n return [rgb2hex(interpolateColor(hexToRgb(_colors2[0]), hexToRgb(_colors2[1]))), rgb2hex(interpolateColor(hexToRgb(_colors2[1]), hexToRgb(_colors2[2])))];\n } else if (nbClass > 9 && nbClass < 18) {\n var _colors3 = _colorbrewer2.default[name][9];\n var diff = nbClass - 9;\n return interp_n(_colors3, diff, 9);\n } // else if (nbClass >= 18) {\n var colors = _colorbrewer2.default[name][9];\n colors = interp_n(colors, 8, 9);\n return interp_n(colors, nbClass - colors.length, nbClass);\n};\n\n/**\n* Function to make color interpolation from \"colors\" (an array of n colors)\n* to a larger array of \"k\" colors (using same start and stop than the original)\n*\n* @param {array} colors - An array of colors\n* @param {integer} diff -\n* @param {number} k - The length of the targeted color palette\n* @return {array} - An array of k colors.\n*/\nvar interp_n = exports.interp_n = function interp_n(colors, diff, k) {\n var tmp = [];\n var new_colors = [];\n for (var i = 0; i < diff; ++i) {\n tmp.push(rgb2hex(interpolateColor(hexToRgb(colors[i]), hexToRgb(colors[i + 1]))));\n }\n for (var _i = 0; _i < k; ++_i) {\n new_colors.push(colors[_i]);\n if (tmp[_i]) new_colors.push(tmp[_i]);\n }\n return new_colors;\n};\n\n// Return the interpolated value at \"factor\" (0 2 && arguments[2] !== undefined ? arguments[2] : 0.5;\n\n var result = color1.slice();\n for (var i = 0; i < 3; i++) {\n result[i] = Math.round(result[i] + factor * (color2[i] - color1[i]));\n }\n return result;\n};\n\n// Just a \"Colors\" object with a convenience \"random\" method\n// ... when a random color is needed (they aren't specialy pretty colors though!)\nvar Colors = exports.Colors = {\n names: {\n aqua: '#00ffff',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n black: '#000000',\n blue: '#0000ff',\n brown: '#a52a2a',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgrey: '#a9a9a9',\n darkgreen: '#006400',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkviolet: '#9400d3',\n fuchsia: '#ff00ff',\n gold: '#ffd700',\n green: '#008000',\n indigo: '#4b0082',\n khaki: '#f0e68c',\n lightblue: '#add8e6',\n lightcyan: '#e0ffff',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n magenta: '#ff00ff',\n maroon: '#800000',\n navy: '#000080',\n olive: '#808000',\n orange: '#ffa500',\n pink: '#ffc0cb',\n purple: '#800080',\n violet: '#800080',\n red: '#ff0000',\n silver: '#c0c0c0',\n white: '#ffffff',\n yellow: '#ffff00'\n },\n random: function random() {\n var keys = Object.keys(this.names);\n var n = keys.length;\n var result = 0;\n var count = 0;\n for (var i = 0; i < n; i++) {\n var prop = keys[i];\n count += 1;\n if (Math.random() < 1 / count) {\n result = prop;\n }\n }\n return result;\n }\n};\n\nvar ColorsSelected = exports.ColorsSelected = {\n // These colors came from \"Pastel1\" and \"Pastel2\" coloramps from ColorBrewer\n colorCodes: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc', '#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2'],\n // In order to avoid randomly returning the same color\n // as the last one, at least for the first layers\n seen: new Set(),\n random: function random() {\n var to_rgb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var nb_color = this.colorCodes.length;\n var seen = this.seen;\n var result_color = this.colorCodes[0],\n attempts = 40; // To avoid a while(true) if it went wrong for any reason\n if (seen.size === nb_color) {\n seen = new Set();\n }\n while (attempts > 0) {\n var ix = Math.round(Math.random() * (nb_color - 1));\n result_color = this.colorCodes[ix];\n if (!seen.has(result_color)) {\n seen.add(result_color);\n break;\n } else {\n attempts -= 1;\n }\n }\n return to_rgb ? hexToRgb(result_color) : result_color;\n }\n};\n\nfunction hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\n\n// Copy-paste from https://gist.github.com/jdarling/06019d16cb5fd6795edf\n// itself adapted from http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/\nvar randomColor = exports.randomColor = function () {\n var golden_ratio_conjugate = 0.618033988749895;\n var _h = Math.random();\n\n var hslToRgb = function hslToRgb(h, s, l) {\n var r = void 0,\n g = void 0,\n b = void 0;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return '#' + Math.round(r * 255).toString(16) + Math.round(g * 255).toString(16) + Math.round(b * 255).toString(16);\n };\n\n return function () {\n _h += golden_ratio_conjugate;\n _h %= 1;\n return hslToRgb(_h, 0.5, 0.60);\n };\n}();\n\nvar addNewCustomPalette = exports.addNewCustomPalette = function addNewCustomPalette(palette_name, colors) {\n _app.custom_palettes.set(palette_name, colors);\n};\n\n//# sourceURL=webpack:///./js/colors_helpers.js?");
-
-/***/ }),
-
-/***/ "./js/context-menu.js":
-/*!****************************!*\
- !*** ./js/context-menu.js ***!
- \****************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = ContextMenu;\n\n__webpack_require__(/*! ./../css/context-menu.css */ \"./css/context-menu.css\");\n\nfunction ContextMenu() {\n this.items = [];\n\n this.addItem = function addItem(item) {\n this.items.push({\n isSimpleItem: true,\n name: item.name,\n action: item.action\n });\n };\n\n this.addSubMenu = function addSubMenu(item) {\n this.items.push({\n isSimpleItem: false,\n name: item.name,\n menu: new ContextMenu()\n });\n this.items[this.items.length - 1].menu.setItems(item.items);\n };\n\n this.removeItemByName = function removeItemByName(name) {\n for (var i = this.items.length - 1; i > 0; i--) {\n if (this.items[i].name.valueOf() === name.valueOf()) {\n this.items.splice(i, 1);\n break;\n }\n }\n };\n\n this.setItems = function setItems(items) {\n this.items = [];\n for (var i = 0; i < items.length; i++) {\n if (items[i].name) {\n if (items[i].action) {\n this.addItem(items[i]);\n } else if (items[i].items) {\n this.addSubMenu(items[i]);\n }\n }\n }\n };\n\n this.showMenu = function showMenu(event, parent, items) {\n var _this = this;\n\n if (items) {\n this.setItems(items);\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else {\n event.returnValue = false; // eslint-disable-line no-param-reassign\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n\n this.initMenu(parent);\n var bbox = this.DOMObj.getBoundingClientRect();\n if (event.clientY + window.scrollY + bbox.height < window.innerHeight || event.clientX + bbox.width < window.innerWidth) {\n this.DOMObj.style.top = event.clientY + window.scrollY + 'px';\n this.DOMObj.style.left = event.clientX + 'px';\n } else {\n this.DOMObj.style.top = event.clientY + window.scrollY - bbox.height + 'px';\n this.DOMObj.style.left = event.clientX - bbox.width + 'px';\n }\n\n var hideMenu = function hideMenu() {\n if (_this.DOMObj && _this.DOMObj.parentNode && _this.DOMObj.parentNode.removeChild) {\n _this.DOMObj.parentNode.removeChild(_this.DOMObj);\n }\n _this.onclick = undefined;\n document.removeEventListener('click', hideMenu);\n document.removeEventListener('drag', hideMenu);\n };\n setTimeout(function () {\n document.addEventListener('click', hideMenu);\n document.removeEventListener('drag', hideMenu);\n }, 225);\n };\n\n this.initMenu = function initMenu(parent) {\n if (this.DOMObj && this.DOMObj.parentNode && this.DOMObj.parentNode.removeChild) {\n this.DOMObj.parentNode.removeChild(this.DOMObj);\n }\n var self = this;\n var menu = document.createElement('div');\n menu.className = 'context-menu';\n var list = document.createElement('ul');\n menu.appendChild(list);\n for (var i = 0; i < this.items.length; i++) {\n var item = document.createElement('li');\n list.appendChild(item);\n item.setAttribute('data-index', i);\n var name = document.createElement('span');\n name.className = 'context-menu-item-name';\n name.textContent = this.items[i].name;\n item.appendChild(name);\n if (this.items[i].isSimpleItem) {\n item.onclick = function () {\n var ix = this.getAttribute('data-index');\n self.items[ix].action();\n };\n } else {\n var arrow = document.createElement('span');\n arrow.className = 'arrow';\n arrow.innerHTML = '►';\n name.appendChild(arrow);\n this.items[i].menu.initMenu(item);\n this.items[i].menu.DOMObj.style.display = 'none';\n item.onmouseover = function () {\n var _this2 = this;\n\n setTimeout(function () {\n _this2.querySelectorAll('.context-menu')[0].style.display = '';\n }, 500);\n };\n item.onmouseout = function () {\n var _this3 = this;\n\n setTimeout(function () {\n _this3.querySelectorAll('.context-menu')[0].style.display = 'none';\n }, 500);\n };\n }\n }\n this.DOMObj = menu;\n parent.appendChild(menu);\n };\n}\n\n//# sourceURL=webpack:///./js/context-menu.js?");
-
-/***/ }),
-
-/***/ "./js/dialogs.js":
-/*!***********************!*\
- !*** ./js/dialogs.js ***!
- \***********************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("/* WEBPACK VAR INJECTION */(function(Promise) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.check_remove_existing_box = check_remove_existing_box;\nexports.make_dialog_container = make_dialog_container;\nexports.reOpenParent = reOpenParent;\nfunction check_remove_existing_box(box_selector) {\n var existing_box = document.querySelector(box_selector);\n if (existing_box) existing_box.remove();\n}\n\nfunction make_dialog_container(id_box, title, class_box) {\n var _id_box = id_box || 'dialog';\n var _title = title || '';\n var _class_box = class_box || 'dialog';\n var container = document.createElement('div');\n container.setAttribute('id', id_box);\n container.setAttribute('class', 'twbs modal fade ' + _class_box);\n container.setAttribute('tabindex', '-1');\n container.setAttribute('role', 'dialog');\n container.setAttribute('aria-labelledby', 'myModalLabel');\n container.setAttribute('aria-hidden', 'true');\n container.innerHTML = '';\n document.getElementById('twbs').appendChild(container);\n var html_content = '\\n
\\n ';\n var modal_box = new Modal(document.getElementById(_id_box), { content: html_content });\n modal_box.show();\n return modal_box;\n}\n\nvar overlay_under_modal = exports.overlay_under_modal = function () {\n var twbs_div = document.querySelector('.twbs');\n var bg = document.createElement('div');\n bg.id = 'overlay_twbs';\n bg.style.width = '100%';\n bg.style.height = '100%';\n bg.style.position = 'fixed';\n bg.style.zIndex = 99;\n bg.style.top = 0;\n bg.style.left = 0;\n bg.style.background = 'rgba(0,0,0,0.4)';\n bg.style.display = 'none';\n twbs_div.insertBefore(bg, twbs_div.childNodes[0]);\n return {\n display: function display() {\n bg.style.display = '';\n },\n hide: function hide() {\n bg.style.display = 'none';\n }\n };\n}();\n\nvar make_confirm_dialog2 = exports.make_confirm_dialog2 = function (class_box, title, options) {\n var get_available_id = function get_available_id() {\n for (var i = 0; i < 50; i++) {\n if (!existing.has(i)) {\n existing.add(i);\n return i;\n }\n }\n };\n var existing = new Set();\n return function (class_box, title, options) {\n class_box = class_box || 'dialog';\n title = title || _tr('app_page.common.ask_confirm');\n options = options || {};\n\n var container = document.createElement('div');\n var new_id = get_available_id();\n\n container.setAttribute('id', 'myModal_' + new_id);\n container.setAttribute('class', 'twbs modal fade ' + class_box);\n container.setAttribute('tabindex', '-1');\n container.setAttribute('role', 'dialog');\n container.setAttribute('aria-labelledby', 'myModalLabel');\n container.setAttribute('aria-hidden', 'true');\n container.innerHTML = options.widthFitContent ? '' : '';\n document.getElementById('twbs').appendChild(container);\n\n container = document.getElementById('myModal_' + new_id);\n // const deferred = Promise.pending();\n var text_ok = options.text_ok || _tr('app_page.common.confirm');\n var text_cancel = options.text_cancel || _tr('app_page.common.cancel');\n var html_content = '\\n ' + (options.html_content || '') + '
\\n ';\n return new Promise(function (resolve, reject) {\n var modal_box = new Modal(container, {\n backdrop: true,\n keyboard: false,\n content: html_content\n });\n modal_box.show();\n container.modal = modal_box;\n overlay_under_modal.display();\n var func_cb = function func_cb(evt) {\n helper_esc_key_twbs_cb(evt, _onclose_false);\n };\n var clean_up_box = function clean_up_box() {\n document.removeEventListener('keydown', func_cb);\n existing.delete(new_id);\n overlay_under_modal.hide();\n container.remove();\n };\n var _onclose_false = function _onclose_false() {\n resolve(false);\n clean_up_box();\n };\n container.querySelector('.btn_cancel').onclick = _onclose_false;\n container.querySelector('#xclose').onclick = _onclose_false;\n container.querySelector('.btn_ok').onclick = function () {\n resolve(true);\n clean_up_box();\n };\n document.addEventListener('keydown', func_cb);\n });\n };\n}();\n\nfunction reOpenParent(css_selector) {\n var parent_style_box = css_selector !== undefined ? document.querySelector(css_selector) : document.querySelector('.styleBox');\n if (parent_style_box && parent_style_box.modal && parent_style_box.modal.show) {\n parent_style_box.modal.show();\n return true;\n }\n return false;\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! bluebird */ \"./node_modules/bluebird/js/browser/bluebird.js\")))\n\n//# sourceURL=webpack:///./js/dialogs.js?");
-
-/***/ }),
-
-/***/ "./js/fonts.js":
-/*!*********************!*\
- !*** ./js/fonts.js ***!
- \*********************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// Reference to the available fonts that the user could select :\nvar available_fonts = exports.available_fonts = [['Arial', 'Arial,sans-serif'], ['Arial Black', 'Arial Black,sans-serif'], ['Arimo', 'Arimo,sans-serif'], ['Baloo Bhaina', 'Baloo Bhaina,sans-serif'], ['Bitter', 'Bitter,sans-serif'], ['Dosis', 'Dosis,sans-serif'], ['Impact', 'Impact,Charcoal,sans-serif'], ['Inconsolata', 'Inconsolata,sans-serif'], ['Georgia', 'Georgia,serif'], ['Lobster', 'Lobster,serif'], ['Lucida', 'Lucida Sans Unicode,Lucida Grande,sans-serif'], ['Palatino', 'Palatino Linotype,Book Antiqua,Palatino,serif'], ['Roboto', 'Roboto'], ['Scope One', 'Scope One'], ['Tahoma', 'Tahoma,Geneva,sans-serif'], ['Trebuchet MS', 'Trebuchet MS,elvetica,sans-serif'], ['Verdana', 'verdana']];\n\n// This variable have to be (well, we could easily do this in an other way!) up to date\n// with the style-fonts.css file as we are using their order to lookup for their definition\n// the .css file.\nvar custom_fonts = exports.custom_fonts = ['Arimo', 'Baloo Bhaina', 'Bitter', 'Dosis', 'Inconsolata', 'Lobster', 'Roboto', 'Scope One'];\n\n//# sourceURL=webpack:///./js/fonts.js?");
-
-/***/ }),
-
-/***/ "./js/function.js":
-/*!************************!*\
- !*** ./js/function.js ***!
- \************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.render_label_graticule = exports.render_label = exports.get_menu_option = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\"); } }; }();\n\nexports.clean_menu_function = clean_menu_function;\nexports.reset_user_values = reset_user_values;\nexports.check_layer_name = check_layer_name;\nexports.make_min_max_tableau = make_min_max_tableau;\nexports.fetch_min_max_table_value = fetch_min_max_table_value;\nexports.render_twostocks_waffle = render_twostocks_waffle;\nexports.make_prop_line = make_prop_line;\nexports.make_prop_symbols = make_prop_symbols;\nexports.render_categorical = render_categorical;\nexports.prepare_categories_array = prepare_categories_array;\n\nvar _contextMenu = __webpack_require__(/*! ./context-menu */ \"./js/context-menu.js\");\n\nvar _contextMenu2 = _interopRequireDefault(_contextMenu);\n\nvar _colors_helpers = __webpack_require__(/*! ./colors_helpers */ \"./js/colors_helpers.js\");\n\nvar _discretization_panel = __webpack_require__(/*! ./classification/discretization_panel */ \"./js/classification/discretization_panel.js\");\n\nvar _categorical_panel = __webpack_require__(/*! ./classification/categorical_panel */ \"./js/classification/categorical_panel.js\");\n\nvar _common = __webpack_require__(/*! ./classification/common */ \"./js/classification/common.js\");\n\nvar _helpers = __webpack_require__(/*! ./helpers */ \"./js/helpers.js\");\n\nvar _helpers_calc = __webpack_require__(/*! ./helpers_calc */ \"./js/helpers_calc.js\");\n\nvar _helpers_math = __webpack_require__(/*! ./helpers_math */ \"./js/helpers_math.js\");\n\nvar _interface = __webpack_require__(/*! ./interface */ \"./js/interface.js\");\n\nvar _layers = __webpack_require__(/*! ./layers */ \"./js/layers.js\");\n\nvar _layers_style_popup = __webpack_require__(/*! ./layers_style_popup */ \"./js/layers_style_popup.js\");\n\nvar _legend = __webpack_require__(/*! ./legend */ \"./js/legend.js\");\n\nvar _map_ctrl = __webpack_require__(/*! ./map_ctrl */ \"./js/map_ctrl.js\");\n\nvar _projections = __webpack_require__(/*! ./projections */ \"./js/projections.js\");\n\nvar _symbols_picto = __webpack_require__(/*! ./symbols_picto */ \"./js/symbols_picto.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar section2 = d3.select('#menu').select('#section2');\n\nvar get_menu_option = exports.get_menu_option = function () {\n var menu_option = {\n smooth: {\n name: 'smooth',\n menu_factory: function menu_factory() {\n return fillMenu_Stewart;\n },\n fields_handler: function fields_handler() {\n return fields_Stewart;\n }\n },\n prop: {\n name: 'prop',\n menu_factory: function menu_factory() {\n return fillMenu_PropSymbol;\n },\n fields_handler: function fields_handler() {\n return fields_PropSymbol;\n }\n },\n choroprop: {\n name: 'choroprop',\n menu_factory: function menu_factory() {\n return fillMenu_PropSymbolChoro;\n },\n fields_handler: function fields_handler() {\n return fields_PropSymbolChoro;\n }\n },\n proptypo: {\n name: 'proptypo',\n menu_factory: function menu_factory() {\n return fillMenu_PropSymbolTypo;\n },\n fields_handler: function fields_handler() {\n return fields_PropSymbolTypo;\n }\n },\n choro: {\n name: 'choro',\n menu_factory: function menu_factory() {\n return fillMenu_Choropleth;\n },\n fields_handler: function fields_handler() {\n return fields_Choropleth;\n }\n },\n cartogram: {\n name: 'cartogram',\n menu_factory: function menu_factory() {\n return fillMenu_Anamorphose;\n },\n fields_handler: function fields_handler() {\n return fields_Anamorphose;\n }\n },\n grid: {\n name: 'grid',\n menu_factory: function menu_factory() {\n return fillMenu_griddedMap;\n },\n fields_handler: function fields_handler() {\n return fields_griddedMap;\n }\n },\n flow: {\n name: 'flow',\n menu_factory: function menu_factory() {\n return fillMenu_FlowMap;\n },\n fields_handler: function fields_handler() {\n return fields_FlowMap;\n }\n },\n discont: {\n name: 'discont',\n menu_factory: function menu_factory() {\n return fillMenu_Discont;\n },\n fields_handler: function fields_handler() {\n return fields_Discont;\n }\n },\n typo: {\n name: 'typo',\n menu_factory: function menu_factory() {\n return fillMenu_Typo;\n },\n fields_handler: function fields_handler() {\n return fields_Typo;\n }\n },\n typosymbol: {\n name: 'typosymbol',\n menu_factory: function menu_factory() {\n return fillMenu_TypoSymbol;\n },\n fields_handler: function fields_handler() {\n return fields_TypoSymbol;\n }\n },\n two_stocks: {\n name: 'two_stocks',\n menu_factory: function menu_factory() {\n return fillMenu_TwoStocks;\n },\n fields_handler: function fields_handler() {\n return fields_TwoStocks;\n }\n }\n };\n return function (func) {\n return menu_option[func.toLowerCase()] || {};\n };\n}();\n\n/**\n* Remove the div on which we are displaying the options related to each\n* kind of rendering.\n* @return {void}\n*\n*/\nfunction clean_menu_function() {\n if (fields_handler && fields_handler.unfill) {\n fields_handler.unfill();\n fields_handler = undefined;\n }\n if (_app.current_functionnality && _app.current_functionnality.name) {\n var previous_button = document.getElementById('button_' + _app.current_functionnality.name);\n if (previous_button.style.filter !== 'grayscale(100%)') {\n previous_button.style.filter = 'invert(0%) saturate(100%)';\n }\n previous_button.classList.remove('active');\n _app.current_functionnality = undefined;\n }\n section2.select('.form-rendering').remove();\n document.getElementById('accordion2b').style.display = 'none';\n var btn_s2b = document.getElementById('btn_s2b');\n btn_s2b.innerHTML = _tr('app_page.section2_.title_no_choice');\n btn_s2b.setAttribute('data-i18n', 'app_page.section2_.title_no_choice');\n btn_s2b.style.display = 'none';\n}\n\n/**\n* Reset the user choosen values remembered for its ease\n* (like discretization choice, symbols, etc. which are redisplayed as they\n* were selected by the user)\n*\n*/\nfunction reset_user_values() {\n fields_TypoSymbol.box_typo = undefined;\n fields_TypoSymbol.rendering_params = {};\n fields_TypoSymbol.cats = {};\n fields_PropSymbolChoro.rendering_params = {};\n fields_Typo.rendering_params = {};\n fields_Choropleth.rendering_params = {};\n fields_PropSymbolTypo.rendering_params = {};\n}\n/**\n* Function to remove each node (each ")}for(var _i8=0,_len3=ext_dataset_fields.length;_i8<_len3;_i8++){if(ext_dataset_fields[_i8].length>0){options_fields_ext_dataset.push(''+ext_dataset_fields[_i8]+"")}}var inner_box=""+_tr("app_page.join_box.select_fields")+'
\n'+_tr("app_page.join_box.geom_layer_field")+"
\n
\n
('+layer+')\n
\n\n'+_tr("app_page.join_box.ext_dataset_field")+"
\n
\n
('+data_manager.dataset_name+".csv)\n
\n
"+_tr("app_page.join_box.ask_join")+"
";(0,_dialogs.make_confirm_dialog2)("joinBox",_tr("app_page.join_box.title"),{html_content:inner_box,widthFitContent:true}).then(function(confirmed){if(confirmed){prepare_join_on(layer,lastChoice.field1,lastChoice.field2)}});d3.select(".joinBox").styles({"text-align":"center","line-height":"0.9em"});d3.select("#button_field1").style("float","left").on("change",function(){lastChoice.field1=this.value});d3.select("#button_field2").style("float","left").on("change",function(){lastChoice.field2=this.value})};var removeExistingJointure=function removeExistingJointure(layer_name){if(!global.data_manager.user_data[layer_name]||global.data_manager.user_data[layer_name].length<1)return;var dataLayer=global.data_manager.user_data[layer_name];var original_fields=data_manager.current_layers[layer_name].original_fields;var fieldDifference=Object.getOwnPropertyNames(dataLayer[0]).filter(function(f){return!original_fields.has(f)});var nbFields=fieldDifference.length;for(var i=0,nbFt=dataLayer.length;i0){newbox.insert("p").attr("class","button_copy_style").styles({margin:"5px",cursor:"pointer","font-style":"italic"}).html(_tr("app_page.categorical_box.copy_style")).on("click",function(){make_box_copy_style_categorical(existing_typo_layer).then(function(result){if(result){var ref_map=data_manager.current_layers[result].color_map;var selection=newbox.select("#sortable_typo_name").selectAll("li");selection.selectAll("input.typo_name").each(function(d){var r=ref_map.get(d.name);if(r){d.display_name=r[1];this.value=r[1]}});selection.selectAll("p").each(function(d){var r=ref_map.get(d.name);if(r){d.color=r[0];this.style.backgroundColor=r[0];this.nextSibling.value=r[0]}})}})})}new Sortable(document.getElementById("sortable_typo_name"));var container=document.getElementById("categorical_box");return new Promise(function(resolve,reject){var _onclose=function _onclose(){resolve(false);document.removeEventListener("keydown",helper_esc_key_twbs);container.remove();var p=(0,_dialogs.reOpenParent)();if(!p)_dialogs.overlay_under_modal.hide()};container.querySelector(".btn_ok").onclick=function(){var color_map=fetch_categorical_colors();var colorByFeature=data_layer.map(function(ft){return color_map.get(ft[field])[0]});resolve([nb_class,color_map,colorByFeature]);document.removeEventListener("keydown",helper_esc_key_twbs);container.remove();var p=(0,_dialogs.reOpenParent)();if(!p)_dialogs.overlay_under_modal.hide()};container.querySelector(".btn_cancel").onclick=_onclose;container.querySelector("#xclose").onclick=_onclose;function helper_esc_key_twbs(evt){var _event=evt||window.event;var isEscape="key"in _event?_event.key==="Escape"||_event.key==="Esc":_event.keyCode===27;if(isEscape){_event.stopPropagation();_onclose()}}document.addEventListener("keydown",helper_esc_key_twbs);_dialogs.overlay_under_modal.display()})}function make_box_copy_style_categorical(existing_typo_layer){var selected_layer=existing_typo_layer[0];return swal({title:_tr("app_page.categorical_box.title_copy_style_box"),html:'',showCancelButton:true,showConfirmButton:true,cancelButtonText:_tr("app_page.common.close"),animation:"slide-from-top",onOpen:function onOpen(){document.querySelector(".swal2-modal").style.width="400px";var content=d3.select("#copy_style_box_content");var select_layer=content.append("select");existing_typo_layer.forEach(function(layer_name){select_layer.append("option").attr("value",layer_name).html(layer_name)});select_layer.on("change",function(){selected_layer=this.value})}}).then(function(){return selected_layer},function(){return null})}}).call(this,__webpack_require__(7))},function(module,exports,__webpack_require__){"use strict";(function(Promise){Object.defineProperty(exports,"__esModule",{value:true});exports.display_discretization=undefined;var _slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_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 _colors_helpers=__webpack_require__(10);var _dialogs=__webpack_require__(4);var _helpers=__webpack_require__(3);var _interface=__webpack_require__(1);var _helpers_calc=__webpack_require__(6);var _helpers_math=__webpack_require__(2);var _common=__webpack_require__(23);function make_box_custom_palette(nb_class,existing_colors){var is_hex_color=new RegExp(/^#([0-9a-f]{6}|[0-9a-f]{3})$/i);var is_ok_name=new RegExp(/^[a-zA-Z0-9_]*$/);var existing_palette=Array.from(_app.custom_palettes.keys());var pal_name=void 0;var ref_colors=void 0;if(existing_colors&&existing_colors.length===nb_class){ref_colors=existing_colors.slice()}else{ref_colors=[];for(var i=0;i-1){d3.select("#palette_box_error_zone").html(_tr("app_page.palette_box.error_name_existing"));document.querySelector(".swal2-confirm").disabled=true;return null}d3.select("#palette_box_error_zone").html("");document.querySelector(".swal2-confirm").disabled=false;return name}else{d3.select("#palette_box_error_zone").html(_tr("app_page.palette_box.error_name_invalid"));document.querySelector(".swal2-confirm").disabled=true;return null}};return swal({title:_tr("app_page.palette_box.title"),html:'',showCancelButton:true,showConfirmButton:true,cancelButtonText:_tr("app_page.common.close"),animation:"slide-from-top",onOpen:function onOpen(){document.querySelector(".swal2-modal").style.width=nb_class*85+"px";var colors=d3.select("#palette_box_content");var g=colors.selectAll("p").data(ref_colors).enter().append("p");g.append("input").attr("id",function(_,i){return i}).attr("type","color").style("width","60px").property("value",function(d){return d}).on("change",function(_,i){ref_colors[i]=this.value;this.nextSibling.value=this.value});g.append("input").attr("id",function(_,i){return i}).style("width","60px").property("value",function(d){return d}).on("keyup",function(_,i){if(is_hex_color.test(this.value)){ref_colors[i]=this.value;this.previousSibling.value=this.value}});var bottom=d3.select("#palette_box_name");bottom.append("p").attr("id","palette_box_error_zone").style("background","#e3e3e3");bottom.append("span").html(_tr("app_page.palette_box.new_name"));bottom.append("input").style("width","70px").on("keyup",function(){if(verif_palette_name(this.value)!==null)pal_name=this.value});document.querySelector(".swal2-confirm").disabled=true}}).then(function(){return[ref_colors,pal_name]},function(){return null})}var display_discretization=exports.display_discretization=function display_discretization(layer_name,field_name,nb_class,options){var make_no_data_section=function make_no_data_section(){var section=d3.select("#color_div").append("div").attr("id","no_data_section").append("p").html(_tr("disc_box.withnodata",{count:+no_data}));section.append("input").attrs({type:"color",id:"no_data_color"}).style("margin","0px 10px").property("value","#ebebcd")};var make_sequ_button=function make_sequ_button(){var col_div=d3.select("#color_div");col_div.selectAll(".color_params").remove();col_div.selectAll(".color_txt").remove();col_div.selectAll(".color_txt2").remove();col_div.selectAll(".central_class").remove();col_div.selectAll(".central_color").remove();col_div.selectAll("#reverse_pal_btn").remove();document.getElementById("button_palette_box").style.display="";var sequential_color_select=col_div.insert("p").attr("class","color_txt").style("margin-left","10px").html(_tr("disc_box.color_palette")).insert("select").attr("class","color_params").styles({width:"116px","background-image":"url(/static/img/palettes/Blues.png)"}).on("change",function(){this.style.backgroundImage="url(/static/img/palettes/"+this.value+".png)";redisplay.draw()});["Blues","BuGn","BuPu","GnBu","OrRd","PuBu","PuBuGn","PuRd","RdPu","YlGn","Greens","Greys","Oranges","Purples","Reds"].forEach(function(name){sequential_color_select.append("option").text(name).attrs({value:name,title:name}).style("background-image","url(/static/img/palettes/"+name+".png)")});if(_app.custom_palettes){var additional_colors=Array.from(_app.custom_palettes.entries());for(var ixp=0;ixp",_tr("disc_box.summary"),"
",content_summary].join(""))};var redisplay={compute:function compute(){var tmp=void 0;serie=new geostats(values);breaks=[];values=serie.sorted();var deferred=Promise.pending();return new Promise(function(resolve,reject){if(values.length>7500&&type==="jenks"){var jenks_worker=new Worker("static/js/webworker_jenks.js");_app.webworker_to_cancel=jenks_worker;_app.waitingOverlay.display({zIndex:5e3});jenks_worker.postMessage([values,nb_class]);jenks_worker.onmessage=function(e){breaks=e.data;serie.setClassManually(breaks);serie.doCount();stock_class=Array.prototype.slice.call(serie.counter);_app.waitingOverlay.hide();_app.webworker_to_cancel=undefined;bins=[];for(var i=0,len=stock_class.length;imin_serie)breaks[0]=min_serie;if(breaks[nb_class]max_serie){breaks_serie[nb_class]=max_serie}serie.setClassManually(breaks_serie)}else{breaks=serie[_common.discretiz_geostats_switch.get(type)](nb_class);serie.doCount();stock_class=Array.prototype.slice.call(serie.counter)}if(stock_class.length===0){resolve(false)}bins=[];for(var i=0,len=stock_class.length;i input").checked?document.getElementById("central_color_val").value:[];var class_right=nb_class-ctl_class_value+1,class_left=ctl_class_value-1,max_col_nb=(0,_helpers_math.Mmax)(class_right,class_left);var right_pal=(0,_colors_helpers.getColorBrewerArray)(max_col_nb,right_palette);var left_pal=(0,_colors_helpers.getColorBrewerArray)(max_col_nb,left_palette);right_pal=right_pal.slice(0,class_right);left_pal=left_pal.slice(0,class_left).reverse();color_array=[].concat(left_pal,ctl_class_color,right_pal)}}else{color_array=provided_colors.slice()}for(var i=0,len=bins.length;i20?20:nb_values;var serie=new geostats(values),breaks=[],stock_class=[],bins=[],user_break_list=null,std_dev_params=options.extra_options&&options.extra_options.role_mean?options.extra_options:{role_mean:"center",share:1};if(serie.variance()===0&&serie.stddev()===0){serie=new geostats(values)}var min_serie=serie.min();var max_serie=serie.max();var mean_serie=serie.mean();var stddev_serie=serie.stddev();values=serie.sorted();var available_functions=[[_tr("app_page.common.equal_interval"),"equal_interval"],[_tr("app_page.common.quantiles"),"quantiles"],[_tr("app_page.common.stddev_f"),"stddev_f"],[_tr("app_page.common.Q6"),"Q6"],[_tr("app_page.common.jenks"),"jenks"]];if(!serie._hasZeroValue()&&!serie._hasNegativeValue()){available_functions.push([_tr("app_page.common.geometric_progression"),"geometric_progression"])}var precision_axis=(0,_helpers_calc.get_precision_axis)(min_serie,max_serie,serie.precision);var formatCount=d3.format(precision_axis);var discretization_panel=newBox.append("div").attr("id","discretization_panel");var discretization=discretization_panel.insert("p").insert("select").attr("class","params").on("change",function(){type=this.value;if(type==="stddev_f"){input_section_stddev.style("display","");document.getElementById("nb_class_range").disabled="disabled";txt_nb_class.style("disabled","disabled");disc_nb_class.style("display","none")}else{input_section_stddev.style("display","none");document.getElementById("nb_class_range").disabled=false;txt_nb_class.style("disabled",false);disc_nb_class.style("display","inline")}if(type==="Q6"){update_nb_class(6)}redisplay.compute().then(function(v){if(v)redisplay.draw()})});available_functions.forEach(function(func){discretization.append("option").text(func[0]).attr("value",func[1])});var input_section_stddev=discretization_panel.insert("p").styles({margin:"auto",display:type==="stddev_f"?"":"none"});input_section_stddev.insert("span").html(_tr("disc_box.stddev_share_txt1"));input_section_stddev.insert("input").attrs({type:"number",min:.1,max:10,step:.1,class:"without_spinner",id:"stddev_share"}).styles({width:"45px","margin-left":"10px","margin-right":"10px"}).property("value",std_dev_params.share).on("change",function(){var val=this.value;if(val===0||val*stddev_serie>max_serie-min_serie||val*stddev_serie*21nb_class)ctl_class.value=(0,_helpers_math.Mround)(nb_class/2)}}})});var ref_histo_box=newBox.append("div").attr("id","ref_histo_box");ref_histo_box.append("div").attr("id","inner_ref_histo_box");discretization.node().value=type;make_summary();var refDisplay=(0,_common.prepare_ref_histo)(newBox,serie,formatCount);refDisplay("histogram");var svg_h=h/5>100?h/5:100,svg_w=window.innerWidth-40>760?760:window.innerWidth-40,margin={top:7.5,right:30,bottom:7.5,left:30},height=svg_h-margin.top-margin.bottom;d3.select(container).select(".modal-dialog").styles({width:svg_w+margin.top+margin.bottom+90+"px",height:window.innerHeight-60+"px"});if(values.length<500){var current_histo="histogram";ref_histo_box.append("p").style("text-align","center").insert("button").attrs({id:"button_switch_plot",class:"i18n button_st4","data-i18n":"[text]disc_box.switch_ref_histo"}).styles({padding:"3px","font-size":"10px"}).html(_tr("disc_box.switch_ref_histo")).on("click",function(){var str_tr=void 0;if(current_histo==="histogram"){refDisplay("box_plot");current_histo="box_plot";str_tr="_boxplot"}else if(current_histo==="box_plot"){refDisplay("beeswarm");current_histo="beeswarm";str_tr="_beeswarm"}else if(current_histo==="beeswarm"){refDisplay("histogram");current_histo="histogram";str_tr=""}document.getElementById("ref_histo_title").innerHTML=""+_tr("disc_box.hist_ref_title"+str_tr)+""})}var div_svg=newBox.append("div").append("svg").attrs({id:"svg_discretization",width:svg_w+margin.left+margin.right,height:svg_h+margin.top+margin.bottom});make_box_histo_option();var svg_histo=div_svg.append("g").attr("transform","translate("+margin.left+", "+margin.top+")");var x=d3.scaleLinear().domain([min_serie,max_serie]).range([0,svg_w]);var y=d3.scaleLinear().range([svg_h,0]);var overlay_svg=div_svg.append("g").attr("transform","translate(30, 0)"),line_mean=void 0,line_std_right=void 0,line_std_left=void 0,line_median=void 0,txt_median=void 0,txt_mean=void 0,rug_plot=void 0;make_overlay_elements();svg_histo.append("g").attrs({class:"x_axis",transform:"translate(0,"+height+")"}).call(d3.axisBottom().scale(x).tickFormat(formatCount));newBox.append("button").attrs({class:"accordion_disc active",id:"btn_acc_disc_color"}).style("padding","0 6px").html(_tr("disc_box.title_color_scheme"));var accordion_colors=newBox.append("div").attrs({class:"panel show",id:"accordion_colors"}).style("width","98%");var color_scheme=accordion_colors.append("div").attr("id","color_div").style("text-align","center");[[_tr("disc_box.sequential"),"sequential"],[_tr("disc_box.diverging"),"diverging"]].forEach(function(el){color_scheme.insert("label").style("margin","20px").html(el[0]).insert("input").attrs({type:"radio",name:"color_scheme",id:"button_"+el[1]}).property("value",el[1]).on("change",function(){if(this.value==="sequential"){make_sequ_button()}else{make_diverg_button()}redisplay.draw()})});var to_reverse=false;document.getElementById("button_sequential").checked=true;accordion_colors.append("span").attr("id","button_palette_box").styles({margin:"5px",float:"right",cursor:"pointer","font-style":"italic"}).html(_tr("app_page.palette_box.button")).on("click",function(){make_box_custom_palette(nb_class).then(function(result){if(result){var _result=_slicedToArray(result,2),colors=_result[0],palette_name=_result[1];var select_palette=document.querySelector(".color_params");(0,_colors_helpers.addNewCustomPalette)(palette_name,colors);if(select_palette){d3.select(select_palette).append("option").text(palette_name).attrs({value:"user_"+palette_name,title:palette_name,nb_colors:colors.length});(0,_helpers.setSelected)(select_palette,"user_"+palette_name)}}})});newBox.append("button").attrs({class:"accordion_disc",id:"btn_acc_disc_break"}).style("padding","0 6px").html(_tr("disc_box.title_break_values"));var accordion_breaks=newBox.append("div").attrs({class:"panel",id:"accordion_breaks_vals"}).style("width","98%");var user_defined_breaks=accordion_breaks.append("div").attr("id","user_breaks");user_defined_breaks.insert("textarea").attrs({id:"user_breaks_area",placeholder:_tr("app_page.common.expected_class")}).style("width","600px");user_defined_breaks.insert("button").text(_tr("app_page.common.valid")).on("click",function(){user_break_list=document.getElementById("user_breaks_area").value;type="user_defined";redisplay.compute().then(function(v){if(v)redisplay.draw()})});(0,_interface.accordionize)(".accordion_disc",container);if(no_data>0){make_no_data_section();if(options.no_data){document.getElementById("no_data_color").value=options.no_data}}if(!options.schema){make_sequ_button()}else if(options.schema.length===1){make_sequ_button();document.querySelector(".color_params").value=options.schema[0];document.querySelector(".color_params").style.backgroundImage="url(/static/img/palettes/"+options.schema[0]+".png)"}else if(options.schema.length>1){make_diverg_button();document.getElementById("button_diverging").checked=true;var tmp=0;(0,_helpers.setSelected)(document.querySelector(".color_params_left"),options.schema[0]);if(options.schema.length>2){var elem=document.getElementById("central_color_val");elem.style.display="";elem.value=options.schema[1];tmp=1;document.querySelector(".central_color").querySelector("input").checked=true}else{document.querySelector(".central_color").querySelector("input").checked=false}(0,_helpers.setSelected)(document.querySelector(".color_params_right"),options.schema[1+tmp])}if(options.type&&options.type==="user_defined"){user_break_list=options.breaks}redisplay.compute().then(function(v){if(v)redisplay.draw(options.colors)});return new Promise(function(resolve,reject){container.querySelector(".btn_ok").onclick=function(){breaks=breaks.map(function(i){return+i});var colors_map=[];var no_data_color=null;if(no_data>0){no_data_color=document.getElementById("no_data_color").value}for(var j=0;j-1&&needed_definitions.indexOf(font)===-1){needed_definitions.push(font)}})};for(var i=0;i-1?i:null})[0].cssRules;var fonts_to_add=needed_definitions.map(function(name){return String(fonts_definitions[_fonts.custom_fonts.indexOf(name)].cssText)});var style_elem=document.createElement("style");style_elem.innerHTML=fonts_to_add.join(" ");svg_map.querySelector("defs").appendChild(style_elem)}function unpatchSvgForFonts(){var defs_style=svg_map.querySelector("defs").querySelector("style");if(defs_style)defs_style.remove()}function patchSvgForInkscape(){svg_map.setAttribute("xmlns:inkscape","http://www.inkscape.org/namespaces/inkscape");var elems=svg_map.getElementsByTagName("g");for(var i=elems.length-1;i>-1;i--){if(elems[i].id===""){continue}else if(elems[i].classList.contains("layer")){elems[i].setAttribute("inkscape:label",elems[i].id)}else if(elems[i].id.indexOf("legend")>-1){var layer_name=elems[i].className.baseVal.split("lgdf_")[1];elems[i].setAttribute("inkscape:label","legend_"+layer_name)}else{elems[i].setAttribute("inkscape:label",elems[i].id)}elems[i].setAttribute("inkscape:groupmode","layer")}}function unpatchSvgForInkscape(){svg_map.removeAttribute("xmlns:inkscape");var elems=svg_map.getElementsByTagName("g");for(var i=elems.length-1;i>-1;i--){if(elems[i].id!==""){elems[i].removeAttribute("inkscape:label");elems[i].removeAttribute("inkscape:groupmode")}}}function patchSvgForForeignObj(){var elems=document.getElementsByTagName("foreignObject");var originals=[];for(var i=0;i-1?name.substring(0,name.lastIndexOf(".")):name;var regexpName=new RegExp(/^[().a-z0-9_-]+$/i);if(regexpName.test(_name)&&_name.length<250){return _name+"."+extension}return"export."+extension}function changeResolution(canvas,scaleFactor){if(!canvas.style.width)canvas.style.width=canvas.width+"px";if(!canvas.style.height)canvas.style.height=canvas.height+"px";canvas.width=(0,_helpers_math.Mceil)(canvas.width*scaleFactor);canvas.height=(0,_helpers_math.Mceil)(canvas.height*scaleFactor);var ctx=canvas.getContext("2d");ctx.scale(scaleFactor,scaleFactor)}function export_compo_svg(output_name){output_name=check_output_name(output_name,"svg");patchSvgForInkscape();patchSvgForFonts();patchSvgBackground();var dimensions_foreign_obj=patchSvgForForeignObj();var targetSvg=document.getElementById("svg_map"),serializer=new XMLSerializer;var source=serializer.serializeToString(targetSvg);if(!source.match(/^]+xmlns="http\:\/\/www\.w3\.org\/2000\/svg"/)){source=source.replace(/^]+"http\:\/\/www\.w3\.org\/1999\/xlink"/)){source=source.replace(/^\r\n',source].join("");var url="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(source);(0,_helpers.clickLinkFromDataUrl)(url,output_name).then(function(){unpatchSvgForFonts();unpatchSvgForForeignObj(dimensions_foreign_obj);unpatchSvgForInkscape();unpatchSvgBackground()}).catch(function(err){(0,_helpers.display_error_during_computation)();console.log(err)})}function export_compo_png(){var scalefactor=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;var output_name=arguments[1];global._app.waitingOverlay.display();output_name=check_output_name(output_name,"png");var dimensions_foreign_obj=patchSvgForForeignObj();patchSvgForFonts();var targetCanvas=d3.select("body").append("canvas").attrs({id:"canvas_map_export",height:h,width:w}).node();var targetSVG=document.querySelector("#svg_map");var mime_type="image/png";var svg_xml=void 0,ctx=void 0,img=void 0;try{svg_xml=(new XMLSerializer).serializeToString(targetSVG);ctx=targetCanvas.getContext("2d");img=new Image}catch(err){global._app.waitingOverlay.hide();targetCanvas.remove();(0,_helpers.display_error_during_computation)(String(err));return}if(scalefactor!==1){try{changeResolution(targetCanvas,scalefactor)}catch(err){global._app.waitingOverlay.hide();targetCanvas.remove();(0,_helpers.display_error_during_computation)(_tr("app_page.common.error_too_high_resolution")+" "+String(err));return}}var imgUrl=void 0;img.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(svg_xml);img.onload=function(){ctx.drawImage(img,0,0);try{imgUrl=targetCanvas.toDataURL(mime_type)}catch(err){global._app.waitingOverlay.hide();targetCanvas.remove();(0,_helpers.display_error_during_computation)(String(err));return}(0,_helpers.clickLinkFromDataUrl)(imgUrl,output_name).then(function(){unpatchSvgForFonts();unpatchSvgForForeignObj(dimensions_foreign_obj);global._app.waitingOverlay.hide();targetCanvas.remove()}).catch(function(err){(0,_helpers.display_error_during_computation)();console.log(err)})}}function export_layer_geo(layer,type,projec,proj4str){var formToSend=new FormData;formToSend.append("layer",layer);formToSend.append("layer_name",data_manager.current_layers[layer].key_name);formToSend.append("format",type);if(projec==="proj4string"){formToSend.append("projection",JSON.stringify({proj4string:proj4str}))}else{formToSend.append("projection",JSON.stringify({name:projec}))}var extensions=new Map([["GeoJSON","geojson"],["TopoJSON","topojson"],["ESRI Shapefile","zip"],["GML","zip"],["KML","kml"]]);(0,_helpers.xhrequest)("POST","get_layer2",formToSend,true).then(function(data){if(data.indexOf('{"Error"')===0||data.length===0){var error_message=void 0;if(data.indexOf('{"Error"')<5){error_message=_tr(JSON.parse(data).Error)}else{error_message=_tr("app_page.common.error_msg")}swal({title:"Oops...",text:error_message,type:"error",allowOutsideClick:false,allowEscapeKey:false}).then(function(){return null},function(){return null});return}var ext=extensions.get(type),filename=[layer,ext].join(".");var dataStr=void 0;if(ext.indexOf("json")>-1){dataStr="data:text/json;charset=utf-8,"+encodeURIComponent(data)}else if(ext.indexOf("kml")>-1){dataStr="data:text/xml;charset=utf-8,"+encodeURIComponent(data)}else{dataStr="data:application/zip;base64,"+data}(0,_helpers.clickLinkFromDataUrl)(dataStr,filename)},function(error){console.log(error)})}}).call(this,__webpack_require__(5))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=makeSection4;var _section=__webpack_require__(28);var _helpers_calc=__webpack_require__(6);var _helpers_math=__webpack_require__(2);var _interface=__webpack_require__(1);var _map_ctrl=__webpack_require__(9);var _helpers=__webpack_require__(21);var _buttons=__webpack_require__(24);function makeSection4(){var zoom_prop=svg_map.__zoom;var section4=d3.select("#section4");var dv4=section4.append("div").style("margin","auto").append("ul").attr("class","config_map_options");var e=dv4.append("li").styles({"text-align":"center"});e.append("input").attrs({id:"title",class:"list_elem_section4 i18n",placeholder:"","data-i18n":"[placeholder]app_page.section4.map_title"}).styles({margin:"0px 0px 0px 3px",width:"160px"}).on("keyup",function(){(0,_interface.handle_title)(this.value)});e.append("span").styles({display:"inline",top:"4px",cursor:"pointer","vertical-align":"sub"}).html(_buttons.sys_run_button.replace("submit","Title properties")).on("click",_interface.handle_title_properties);var f=dv4.append("li");f.append("input").styles({position:"absolute",right:"20px",width:"60px","margin-left":"15px"}).attrs({type:"color",id:"bg_color",class:"list_elem_section4 m_elem_right"}).property("value","#ffffff").on("change",function(){(0,_map_ctrl.handle_bg_color)(this.value)});f.append("p").attrs({class:"list_elem_section4 i18n","data-i18n":"[html]app_page.section4.background_color"});var a1=dv4.append("li");a1.append("input").attrs({id:"input-width",type:"number",class:"list_elem_section4 m_elem_right"}).property("value",w).on("change",function(){var new_width=+this.value;if(new_width===0||isNaN(new_width)){this.value=w;return}var ratio_type=document.getElementById("map_ratio_select").value;if(ratio_type==="portrait"){h=(0,_helpers_calc.round_value)(new_width/.70707,0);(0,_map_ctrl.canvas_mod_size)([new_width,h])}else if(ratio_type==="landscape"){h=(0,_helpers_calc.round_value)(new_width*.70707,0);(0,_map_ctrl.canvas_mod_size)([new_width,h])}else{(0,_map_ctrl.canvas_mod_size)([new_width,null])}});a1.append("p").attrs({class:"list_elem_section4 i18n","data-i18n":"[html]app_page.section4.map_width"});var a2=dv4.append("li");a2.append("input").attrs({id:"input-height",type:"number",class:"m_elem_right list_elem_section4"}).property("value",h).on("change",function(){var new_height=+this.value;if(new_height===0||isNaN(new_height)){this.value=h;return}var ratio_type=document.getElementById("map_ratio_select").value;if(ratio_type==="portrait"){w=(0,_helpers_calc.round_value)(new_height*.70707,0);(0,_map_ctrl.canvas_mod_size)([w,new_height])}else if(ratio_type==="landscape"){w=(0,_helpers_calc.round_value)(new_height/.70707,0);(0,_map_ctrl.canvas_mod_size)([w,new_height])}else{(0,_map_ctrl.canvas_mod_size)([null,new_height])}});a2.append("p").attrs({class:"list_elem_section4 i18n","data-i18n":"[html]app_page.section4.map_height"});var b=dv4.append("li");var ratio_select=b.append("select").attrs({class:"list_elem_section4 i18n m_elem_right",id:"map_ratio_select"});b.append("p").attr("class","list_elem_section4 i18n").style("padding","4px 0").attr("data-i18n","[html]app_page.section4.map_ratio");ratio_select.append("option").text("").attr("data-i18n","[html]app_page.section4.ratio_user").attr("value","ratio_user");ratio_select.append("option").text("").attr("data-i18n","[html]app_page.section4.ratio_landscape").attr("value","landscape");ratio_select.append("option").text("").attr("data-i18n","[html]app_page.section4.ratio_portait").attr("value","portrait");ratio_select.on("change",function(){var map_xy=get_map_xy0();var dispo_w=document.innerWidth-map_xy.x-1;var dispo_h=document.innerHeight-map_xy.y-1;var diff_w=dispo_w-w;var diff_h=dispo_h-h;if(this.value==="portrait"){if((0,_helpers_calc.round_value)(w/h,1)===1.4){var tmp=h;h=w;w=tmp}else if(diff_h>=diff_w){w=(0,_helpers_calc.round_value)(h*.70707,0)}else{h=(0,_helpers_calc.round_value)(w/.70707,0)}}else if(this.value==="landscape"){if((0,_helpers_calc.round_value)(h/w,1)===1.4){var _tmp=h;h=w;w=_tmp}else if(diff_h<=diff_w){w=(0,_helpers_calc.round_value)(h/.70707,0)}else{h=(0,_helpers_calc.round_value)(w*.70707,0)}}(0,_map_ctrl.canvas_mod_size)([w,h]);(0,_section.fill_export_png_options)(this.value)});var d2=dv4.append("li");d2.append("button").styles({margin:0,padding:0}).attrs({id:"resize_fit",class:"m_elem_right list_elem_section4 button_st4 i18n","data-i18n":"[html]app_page.common.ok"}).on("click",function(){document.getElementById("btn_s4").click();window.scrollTo(0,0);w=(0,_helpers_math.Mround)(window.innerWidth-361);h=window.innerHeight-55;(0,_map_ctrl.canvas_mod_size)([w,h]);document.getElementById("map_ratio_select").value="ratio_user"});d2.append("p").attr("class","list_elem_section4 i18n").attr("data-i18n","[html]app_page.section4.resize_fit");var c=dv4.append("li");c.append("p").attrs({class:"list_elem_section4 i18n","data-i18n":"[html]app_page.section4.map_center_menu"}).style("cursor","pointer");c.append("span").attr("id","map_center_menu_ico").styles({display:"inline-table",cursor:"pointer"});c.on("click",function(){var sections=document.getElementsByClassName("to_hide");var arg=void 0;if(sections[0].style.display==="none"){arg="";document.getElementById("map_center_menu_ico").classList.add("active")}else{arg="none";document.getElementById("map_center_menu_ico").classList.remove("active")}sections[0].style.display=arg;sections[1].style.display=arg;sections[2].style.display=arg;sections[3].style.display=arg});var c1=dv4.append("li").style("display","none").attr("class","to_hide");c1.append("p").attrs({class:"list_elem_section4 i18n","data-i18n":"[html]app_page.section4.map_center_x"});c1.append("input").attrs({id:"input-center-x",class:"m_elem_right",type:"number",step:"any"}).property("value",(0,_helpers_calc.round_value)(zoom_prop.x,2)).on("change",function(){svg_map.__zoom.x=+this.value;(0,_map_ctrl.zoom_without_redraw)()});var c2=dv4.append("li").style("display","none").attr("class","to_hide");c2.append("p").attrs({class:"list_elem_section4 i18n","data-i18n":"[html]app_page.section4.map_center_y"});c2.append("input").attrs({id:"input-center-y",class:"list_elem_section4 m_elem_right",type:"number",step:"any"}).property("value",(0,_helpers_calc.round_value)(zoom_prop.y,2)).on("change",function(){svg_map.__zoom.y=+this.value;(0,_map_ctrl.zoom_without_redraw)()});var d=dv4.append("li").style("display","none").attr("class","to_hide");d.append("p").attrs({class:"list_elem_section4 i18n","data-i18n":"[html]app_page.section4.map_scale_k"});d.append("input").attrs({id:"input-scale-k",class:"list_elem_section4 m_elem_right",type:"number",step:"any"}).property("value",function(){var _k=zoom_prop.k*proj.scale();return _k>2||_k<-2?(0,_helpers_calc.round_value)(_k,2):(0,_helpers_calc.round_value)(_k,Math.round((0,_helpers_calc.get_nb_decimals)(_k)/2))}).on("change",function(){svg_map.__zoom.k=+this.value/proj.scale();(0,_map_ctrl.zoom_without_redraw)()});var g=dv4.append("li").style("display","none").attr("class","to_hide");g.append("p").attrs({class:"list_elem_section4 i18n","data-i18n":"[html]app_page.section4.canvas_rotation"});g.append("span").style("float","right").html("°");g.append("input").attrs({id:"canvas_rotation_value_txt",class:"without_spinner",type:"number",min:0,max:360,step:"any"}).styles({width:"30px","margin-left":"10px",float:"right"}).property("value",0).on("change",function(){var val=+this.value,old_value=document.getElementById("form_rotate").value;if(isNaN(val)||val<-361){this.value=old_value;return}else if(val<0&&val>-361){this.value=360+val}else if(val>360){this.value=360}else{this.value=+this.value}(0,_map_ctrl.rotate_global)(this.value);document.getElementById("form_rotate").value=this.value});g.append("input").attrs({type:"range",id:"form_rotate",min:0,max:360,step:1}).styles({width:"80px",margin:"0px 10px 5px 15px",float:"right"}).property("value",0).on("input",function(){(0,_map_ctrl.rotate_global)(this.value);document.getElementById("canvas_rotation_value_txt").value=this.value});var g2=dv4.append("li");g2.append("input").styles({margin:0,padding:0}).attrs({id:"autoalign_features",type:"checkbox",class:"m_elem_right list_elem_section4 i18n"}).on("change",function(){_app.autoalign_features=this.checked});g2.append("p").attr("class","list_elem_section4 i18n").attr("data-i18n","[html]app_page.section4.autoalign_features");var _i=dv4.append("li").styles({"text-align":"center"});_i.insert("p").styles({clear:"both",display:"block",margin:0}).attrs({class:"i18n","data-i18n":"[html]app_page.section4.layout_features"});var p1=_i.insert("p").styles({display:"inline-block",margin:"auto"});p1.insert("span").insert("img").attrs({id:"btn_arrow",src:"static/img/layout_icons/arrow-01.png",class:"layout_ft_ico i18n tt","data-i18n":"[title]app_page.layout_features_box.arrow"}).on("click",function(){return(0,_helpers.add_layout_feature)("arrow")});p1.insert("span").insert("img").attrs({id:"btn_text_annot",src:"static/img/layout_icons/text-01.png",class:"layout_ft_ico i18n tt","data-i18n":"[title]app_page.layout_features_box.text_annot"}).on("click",function(){return(0,_helpers.add_layout_feature)("text_annot")});if(!window.isIE){p1.insert("span").insert("img").attrs({id:"btn_symbol",src:"static/img/layout_icons/symbols-01.png",class:"layout_ft_ico i18n tt","data-i18n":"[title]app_page.layout_features_box.symbol"}).on("click",function(){return(0,_helpers.add_layout_feature)("symbol")})}p1.insert("span").insert("img").attrs({id:"btn_rectangle",src:"static/img/layout_icons/rect-01.png",class:"layout_ft_ico i18n tt","data-i18n":"[title]app_page.layout_features_box.rectangle"}).on("click",function(){return(0,_helpers.add_layout_feature)("rectangle")});p1.insert("span").insert("img").attrs({id:"btn_ellipse",src:"static/img/layout_icons/ellipse-01.png",class:"layout_ft_ico i18n tt","data-i18n":"[title]app_page.layout_features_box.ellipse"}).on("click",function(){return(0,_helpers.add_layout_feature)("ellipse")});var p2=_i.insert("p").styles({display:"inline-block",margin:"auto"});p2.insert("span").insert("img").attrs({id:"btn_graticule",src:"static/img/layout_icons/graticule-01.png",class:"layout_ft_ico i18n tt","data-i18n":"[title]app_page.layout_features_box.graticule"}).on("click",function(){return(0,_helpers.add_layout_feature)("graticule")});p2.insert("span").insert("img").attrs({id:"btn_north",src:"static/img/layout_icons/north-01.png",class:"layout_ft_ico i18n tt","data-i18n":"[title]app_page.layout_features_box.north_arrow"}).on("click",function(){return(0,_helpers.add_layout_feature)("north_arrow")});p2.insert("span").insert("img").attrs({id:"btn_scale",src:"static/img/layout_icons/scale.png",class:"layout_ft_ico i18n tt","data-i18n":"[title]app_page.layout_features_box.scale"}).on("click",function(){return(0,_helpers.add_layout_feature)("scale")});p2.insert("span").insert("img").attrs({id:"btn_sphere",src:"static/img/layout_icons/sphere-01.png",class:"layout_ft_ico i18n tt","data-i18n":"[title]app_page.layout_features_box.sphere"}).on("click",function(){return(0,_helpers.add_layout_feature)("sphere")})}},function(module,exports,__webpack_require__){"use strict";(function(global){Object.defineProperty(exports,"__esModule",{value:true});exports.default=makeSection3;var _interface=__webpack_require__(1);function makeSection3(){var section3=d3.select("#menu").select("#section3");section3.append("div").append("ul").attrs({id:"sortable",class:"layer_list"});new Sortable(document.getElementById("sortable"),{animation:100,onUpdate:function onUpdate(a){var desired_order=[],actual_order=[],layers=svg_map.querySelectorAll(".layer");var at_end=null;if(document.getElementById("info_features").className==="active"){(0,_interface.displayInfoOnMove)();at_end=true}for(var i=0,len_i=a.target.childNodes.length;i'+_tr("app_page.common.representation")+'\n : \n\n'+_tr(["app_page.func_title.",global._app.current_functionnality.name].join(""))+"";selec_title.style.display="";if(this.style.filter!=="grayscale(100%)"){this.classList.add("active");this.style.filter="invert(100%) saturate(200%)";if(global._app.targeted_layer_added){var target_layer=Object.getOwnPropertyNames(data_manager.user_data)[0];fields_handler.fill(target_layer)}if(func_name==="flow"&&data_manager.joined_dataset){fields_handler.fill()}}(0,_interface.switch_accordion_section)("btn_s2b")})};for(var i=0,len_i=list_fun_ico.length;i').on("click",function(){window.localStorage.removeItem("magrit_project");window.removeEventListener("beforeunload",_map_project.beforeUnloadWindow);location.reload()});const_options.append("button").attrs({class:"const_buttons i18n tt","data-i18n":"[data-ot]app_page.tooltips.load_project_file","data-ot-fixed":true,"data-ot-remove-elements-on-hide":true,"data-ot-target":true,id:"load_project"}).html('').on("click",_map_project.load_map_project);const_options.append("button").attrs({class:"const_buttons i18n tt","data-i18n":"[data-ot]app_page.tooltips.save_file","data-ot-fixed":true,"data-ot-remove-elements-on-hide":true,"data-ot-target":true,id:"save_file_button"}).html('').on("click",_map_project.save_map_project);const_options.append("button").attrs({class:"const_buttons i18n tt","data-i18n":"[data-ot]app_page.tooltips.documentation","data-ot-fixed":true,"data-ot-remove-elements-on-hide":true,"data-ot-target":true,id:"documentation_link"}).html('').on("click",function(){window.open("static/book/index.html","DocWindow","toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes").focus()});const_options.append("button").attrs({class:"const_buttons i18n tt","data-i18n":"[data-ot]app_page.help_box.tooltip_btn","data-ot-fixed":true,"data-ot-remove-elements-on-hide":true,"data-ot-target":true,id:"help_btn"}).html('').on("click",function(){if(document.getElementById("menu_lang")){document.getElementById("menu_lang").remove()}var box_content=''+'
'+_tr("app_page.help_box.version",{version:global._app.version})+"
"+"
"+_tr("app_page.help_box.useful_links")+"
"+'
"+'
"+'
"+'
'+_tr("app_page.help_box.credits")+"
";swal({title:_tr("app_page.help_box.title"),html:box_content,showCancelButton:true,showConfirmButton:false,cancelButtonText:_tr("app_page.common.close"),animation:"slide-from-top",onOpen:function onOpen(){var content=document.getElementsByClassName("about_content")[0];var credit_link=content.querySelector("#credit_link");credit_link.style.fontWeight="bold";credit_link.style.cursor="pointer";credit_link.color="#000";credit_link.onclick=function(){window.open("http://riate.cnrs.fr","RiatePage","toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes").focus()};content.querySelector(".btn_doc").onclick=function(){window.open("http://magrit.hypotheses.org/","Carnet hypotheses","toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes").focus()};content.querySelector(".btn_contact").onclick=function(){window.open("/contact","ContactWindow","toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes").focus()};content.querySelector(".btn_gh").onclick=function(){window.open("https://www.github.com/riatelab/magrit","GitHubPage","toolbar=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes").focus()}}}).then(function(){return null},function(){return null})});const_options.append("button").attrs({id:"current_app_lang",class:"const_buttons"}).styles({color:"white","font-size":"14px","vertical-align":"super","font-weight":"bold"}).html(i18next.language).on("click",function(){if(document.getElementById("menu_lang")){document.getElementById("menu_lang").remove()}else{(function(){var current_lang=i18next.language;var other_langs=current_lang==="en"?["es","fr"]:current_lang==="fr"?["en","es"]:["en","fr"];var actions=[{name:current_lang,callback:change_lang},{name:other_langs[0],callback:change_lang},{name:other_langs[1],callback:change_lang}];var menu=document.createElement("div");menu.style.top="40px";menu.style.right="0px";menu.className="context-menu";menu.id="menu_lang";menu.style.minWidth="30px";menu.style.width="50px";menu.style.background="#000";var list_elems=document.createElement("ul");menu.appendChild(list_elems);var _loop=function _loop(_i){var item=document.createElement("li");var name=document.createElement("span");list_elems.appendChild(item);item.setAttribute("data-index",_i);item.style.textAlign="right";item.style.paddingRight="16px";name.className="context-menu-item-name";name.style.color="white";name.textContent=actions[_i].name;item.appendChild(name);item.onclick=function(){actions[_i].callback();menu.remove()}};for(var _i=0;_i",_tr("disc_box.summary"),"
",content_summary].join(""))};var update_breaks=function update_breaks(user_defined){if(!user_defined){(0,_function.make_min_max_tableau)(values,nb_class,type,last_min,last_max,"sizes_div",undefined,callback)}var tmp_breaks=(0,_function.fetch_min_max_table_value)("sizes_div");var len_breaks=tmp_breaks.sizes.length;breaks_info=[];last_min=tmp_breaks.sizes[0];last_max=tmp_breaks.sizes[tmp_breaks.sizes.length-1];if((0,_helpers_math.Mabs)(+serie.min()-+tmp_breaks.mins[0])>.01){nb_class+=1;txt_nb_class.node().value=nb_class;breaks_info.push([[serie.min(),+tmp_breaks.mins[0]],0])}for(var i=0;i20?20:nb_values;var sizes=data_manager.current_layers[layer_name].breaks.map(function(el){return el[1]});var serie=new geostats(values),breaks_info=[].concat(data_manager.current_layers[layer_name].breaks),breaks=[+breaks_info[0][0][0]],bins=[],last_min=(0,_helpers_calc.min_fast)(sizes),last_max=(0,_helpers_calc.max_fast)(sizes),array_color=d3.schemeSet3.slice();breaks_info.forEach(function(elem){breaks.push(elem[0][1])});if(serie.variance()===0&&serie.stddev()===0){serie=new geostats(values)}values=serie.sorted();var available_functions=[[_tr("app_page.common.equal_interval"),"equal_interval"],[_tr("app_page.common.quantiles"),"quantiles"],[_tr("app_page.common.user_defined"),"user_defined"],[_tr("app_page.common.Q6"),"Q6"],[_tr("app_page.common.jenks"),"jenks"]];if(!serie._hasZeroValue()&&!serie._hasZeroValue()){available_functions.push([_tr("app_page.common.geometric_progression"),"geometric_progression"])}var precisionAxis=(0,_helpers_calc.get_precision_axis)(serie.min(),serie.max(),serie.precision);var formatCount=d3.format(precisionAxis);var discretization_panel=newBox.append("div").attr("id","discretization_panel");var discretization_choice=discretization_panel.insert("p").html("Type ").insert("select").attr("class","params").on("change",function(){var old_type=type;if(this.value==="user_defined"){this.value=old_type;return}type=this.value;if(type==="Q6"){nb_class=6;txt_nb_class.node().value=nb_class;document.getElementById("nb_class_range").value=6}update_breaks();redisplay.compute();redisplay.draw()});available_functions.forEach(function(func){discretization_choice.append("option").text(func[0]).attr("value",func[1])});var ref_histo_box=newBox.append("div").attr("id","ref_histo_box");ref_histo_box.append("div").attr("id","inner_ref_histo_box");discretization_choice.node().value=type;make_summary();var refDisplay=(0,_common.prepare_ref_histo)(newBox,serie,formatCount);refDisplay("histogram");if(values.length<750){var choiceHisto=ref_histo_box.append("p").style("text-align","center");var currentHisto="histogram";choiceHisto.insert("button").attrs({id:"button_switch_plot",class:"i18n button_st4","data-i18n":"[text]disc_box.switch_ref_histo"}).styles({padding:"3px","font-size":"10px"}).html(_tr("disc_box.switch_ref_histo")).on("click",function(){if(currentHisto==="histogram"){refDisplay("box_plot");currentHisto="box_plot"}else if(currentHisto==="box_plot"){refDisplay("beeswarm");currentHisto="beeswarm"}else if(currentHisto==="beeswarm"){refDisplay("histogram");currentHisto="histogram"}})}var txt_nb_class=discretization_panel.append("input").attrs({type:"number",class:"without_spinner",min:2,max:max_nb_class,step:1}).styles({width:"30px",margin:"0 10px","vertical-align":"calc(20%)"}).property("value",nb_class).on("change",function(){var a=disc_nb_class.node();a.value=this.value;a.dispatchEvent(new Event("change"))});discretization_panel.append("span").html(_tr("disc_box.class"));var disc_nb_class=discretization_panel.insert("input").styles({display:"inline",width:"60px","vertical-align":"middle",margin:"10px"}).attrs({id:"nb_class_range",type:"range",min:2,max:max_nb_class,step:1}).property("value",nb_class).on("change",function(){type=discretization_choice.node().value;if(type==="user_defined"){type="equal_interval";discretization_choice.node().value="equal_interval"}if(type==="Q6"){this.value=6;return}nb_class=+this.value;txt_nb_class.node().value=nb_class;update_breaks();redisplay.compute();redisplay.draw()});var svg_h=h/5>90?h/5:90,svg_w=w-w/8,margin={top:17.5,right:30,bottom:7.5,left:30},height=svg_h-margin.top-margin.bottom;d3.select("#discretiz_charts").select(".modal-dialog").styles({width:svg_w+margin.top+margin.bottom+90+"px",height:window.innerHeight-60+"px"});var div_svg=newBox.append("div").append("svg").attrs({id:"svg_discretization",width:svg_w+margin.left+margin.right,height:svg_h+margin.top+margin.bottomn});make_box_histo_option();var svg_histo=div_svg.append("g").attr("transform","translate("+margin.left+","+margin.top+")");var x=d3.scaleLinear().domain([serie.min(),serie.max()]).range([0,svg_w]);var overlay_svg=div_svg.append("g").attr("transform","translate(30, 0)");var line_mean=void 0,line_std_right=void 0,line_std_left=void 0,line_median=void 0,txt_median=void 0,txt_mean=void 0,rug_plot=void 0;make_overlay_elements();svg_histo.append("g").attrs({class:"x axis",transform:"translate(0,"+height+")"}).call(d3.axisBottom().scale(x).tickFormat(formatCount));var box_content=newBox.append("div").attr("id","box_content");box_content.append("h3").style("margin","0").html(_tr("disc_box.line_size"));box_content.append("div").attr("id","sizes_div");var callback=function callback(){discretization_choice.node().value=type;update_breaks(true);redisplay.compute();redisplay.draw()};(0,_function.make_min_max_tableau)(null,nb_class,type,null,null,"sizes_div",breaks_info,callback);redisplay.compute();redisplay.draw();var container=document.getElementById("discretiz_charts");return new Promise(function(resolve,reject){var _onclose=function _onclose(){resolve(false);document.removeEventListener("keydown",helper_esc_key_twbs);container.remove();var p=(0,_dialogs.reOpenParent)(".styleBox");if(!p)_dialogs.overlay_under_modal.hide()};var helper_esc_key_twbs=function helper_esc_key_twbs(evt){var _event=evt||window.event;var isEscape="key"in _event?_event.key==="Escape"||_event.key==="Esc":_event.keyCode===27;if(isEscape){_event.preventDefault();_onclose()}};container.querySelector(".btn_ok").onclick=function(){breaks[0]=serie.min();breaks[nb_class]=serie.max();resolve([serie,breaks_info,breaks]);document.removeEventListener("keydown",helper_esc_key_twbs);container.remove();var p=(0,_dialogs.reOpenParent)(".styleBox");if(!p)_dialogs.overlay_under_modal.hide()};container.querySelector(".btn_cancel").onclick=_onclose;container.querySelector("#xclose").onclick=_onclose;document.addEventListener("keydown",helper_esc_key_twbs)})}}).call(this,__webpack_require__(7))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.hatanoRaw=hatanoRaw;exports.winkel1Raw=winkel1Raw;var sin=Math.sin;var asin=Math.asin;var abs=Math.abs;var cos=Math.cos;var NITER=20;var EPS=1e-7;var ONETOL=1.000001;var CN=2.67595;var CS=2.43763;var RCN=.3736990601468637;var RCS=.4102345310814193;var FYCN=1.75859;var FYCS=1.93052;var RYCN=.5686373742600607;var RYCS=.5179951515653813;var FXC=.85;var RXC=1.1764705882352942;var M_HALFPI=Math.PI/2;function hatanoRaw(lambda,phi){var c=sin(phi)*(phi<0?CS:CN);var y=phi;var th1=void 0;var i=void 0;for(i=NITER;i;--i){y-=th1=(y+sin(y)-c)/(1+cos(y));if(abs(th1)1){if(abs(th)>ONETOL){console.log("Error");return[NaN,NaN]}th=th>0?M_HALFPI:-M_HALFPI}else{th=asin(th)}xx=RXC*xx/cos(th);th+=th;yy=(th+sin(th))*(yy<0?RCS:RCN);if(abs(yy)>1){if(abs(yy)>ONETOL){console.log("Error");return[NaN,NaN]}yy=yy>0?M_HALFPI:-M_HALFPI}else{yy=asin(yy)}return[xx,yy]};function winkel1Raw(latTrueScale){var cosphi1=cos(latTrueScale);function forward(lambda,phi){var x=lambda;var y=phi;return[.5*x*(cosphi1+cos(phi)),y]}forward.invert=function(x,y){var lambda=x;var phi=y;return[2*lambda/(cosphi1+cos(phi)),phi]};return forward}},function(module,exports,__webpack_require__){exports=module.exports=__webpack_require__(16)(false);exports.push([module.i,".context-menu {\n\tfont-family: Arial, sans;\n\tposition: absolute;\n\tbackground: white;\n\tborder: 1px solid #c3c3c3;\n\tborder-radius: 5px;\n\tbox-shadow: 0 5px 5px #c3c3c3;\n\tpadding-top: 5px;\n\tpadding-bottom: 5px;\n\tmin-width: 200px;\n\tfont-size: 12pt;\n}\n\n.context-menu ul {\n\tlist-style: none;\n\tpadding-left: 0;\n\tmargin: 0;\n}\n\n.context-menu li {\n\tposition: relative;\n\tpadding-left: 20px;\n\tpadding-right: 30px;\n\tcursor: default;\n}\n\n.context-menu li:hover {\n\t//background: #b1b1ff;\n background: rgba(145, 209, 230, 0.52);\n color: rgb(0,0,0);\n}\n\n.context-menu li span.arrow {\n\tposition: absolute;\n\tfont-size: 0.8em;\n\tright: 10px;\n}\n\n.context-menu li div.context-menu {\n\tleft: 100%;\n\ttop: -5px;\n}",""])},function(module,exports,__webpack_require__){var content=__webpack_require__(54);if(typeof content==="string")content=[[module.i,content,""]];var transform;var insertInto;var options={hmr:true};options.transform=transform;options.insertInto=undefined;var update=__webpack_require__(15)(content,options);if(content.locals)module.exports=content.locals;if(false){}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(module,exports,__webpack_require__){exports=module.exports=__webpack_require__(16)(false);exports.push([module.i,"#discretization_panel {\n float: left;\n font-size: 11px;\n margin: 15px 0 0 27.5px;\n}\n\n#ref_histo_box {\n float: right;\n margin-top: 11px;\n font-size: 10.5px;\n}\n\nlabel_it_inline {\n font-size: 10px;\n display: inline;\n}\n\n#svg_discretization .y_axis, #svg_discretization .x_axis {\n stroke-width: 0.2;\n}\n\n.btn_mean {\n background: #3498db;\n background-image: -webkit-linear-gradient(top, #3498db, #2980b9);\n background-image: -moz-linear-gradient(top, #3498db, #2980b9);\n background-image: -ms-linear-gradient(top, #3498db, #2980b9);\n background-image: -o-linear-gradient(top, #3498db, #2980b9);\n background-image: linear-gradient(to bottom, #3498db, #2980b9);\n -webkit-border-radius: 28;\n -moz-border-radius: 28;\n border-radius: 28px;\n font-family: Arial;\n color: #ffffff !important;\n font-size: 14px;\n padding: 10px 17px 10px 17px;\n text-decoration: none;\n}\n\n.btn_mean.active {\n border: solid #1f628d 3px;\n}\n\n.btn_mean:hover {\n background: #3cb0fd;\n background-image: -webkit-linear-gradient(top, #3cb0fd, #3498db);\n background-image: -moz-linear-gradient(top, #3cb0fd, #3498db);\n background-image: -ms-linear-gradient(top, #3cb0fd, #3498db);\n background-image: -o-linear-gradient(top, #3cb0fd, #3498db);\n background-image: linear-gradient(to bottom, #3cb0fd, #3498db);\n text-decoration: none;\n}\n\n.btn_median {\n background: #64d95e;\n background-image: -webkit-linear-gradient(top, #64d95e, #53ba4e);\n background-image: -moz-linear-gradient(top, #64d95e, #53ba4e);\n background-image: -ms-linear-gradient(top, #64d95e, #53ba4e);\n background-image: -o-linear-gradient(top, #64d95e, #53ba4e);\n background-image: linear-gradient(to bottom, #64d95e, #53ba4e);\n -webkit-border-radius: 28;\n -moz-border-radius: 28;\n border-radius: 28px;\n font-family: Arial;\n color: #ffffff !important;\n font-size: 14px;\n padding: 10px 17px 10px 17px;\n text-decoration: none;\n}\n\n.btn_median.active {\n border: solid #43963f 3px;\n}\n\n.btn_median:hover {\n background: #7afc74;\n background-image: -webkit-linear-gradient(top, #7afc74, #62db5c);\n background-image: -moz-linear-gradient(top, #7afc74, #62db5c);\n background-image: -ms-linear-gradient(top, #7afc74, #62db5c);\n background-image: -o-linear-gradient(top, #7afc74, #62db5c);\n background-image: linear-gradient(to bottom, #7afc74, #62db5c);\n text-decoration: none;\n}\n\n.btn_population {\n background: #d93434;\n background-image: -webkit-linear-gradient(top, #d93434, #b82b2b);\n background-image: -moz-linear-gradient(top, #d93434, #b82b2b);\n background-image: -ms-linear-gradient(top, #d93434, #b82b2b);\n background-image: -o-linear-gradient(top, #d93434, #b82b2b);\n background-image: linear-gradient(to bottom, #d93434, #b82b2b);\n -webkit-border-radius: 28;\n -moz-border-radius: 28;\n border-radius: 28px;\n font-family: Arial;\n color: #ffffff !important;\n font-size: 14px;\n padding: 10px 17px 10px 17px;\n text-decoration: none;\n}\n\n.btn_population.active {\n border: solid #8c1f1f 3px;\n}\n\n.btn_population:hover {\n background: #fc3c3c;\n background-image: -webkit-linear-gradient(top, #fc3c3c, #d9343c);\n background-image: -moz-linear-gradient(top, #fc3c3c, #d9343c);\n background-image: -ms-linear-gradient(top, #fc3c3c, #d9343c);\n background-image: -o-linear-gradient(top, #fc3c3c, #d9343c);\n background-image: linear-gradient(to bottom, #fc3c3c, #d9343c);\n text-decoration: none;\n}\n\n.btn_stddev {\n background: #d6d934;\n background-image: -webkit-linear-gradient(top, #d6d934, #afb82c);\n background-image: -moz-linear-gradient(top, #d6d934, #afb82c);\n background-image: -ms-linear-gradient(top, #d6d934, #afb82c);\n background-image: -o-linear-gradient(top, #d6d934, #afb82c);\n background-image: linear-gradient(to bottom, #d6d934, #afb82c);\n -webkit-border-radius: 28;\n -moz-border-radius: 28;\n border-radius: 28px;\n font-family: Arial;\n color: #ffffff !important;\n font-size: 14px;\n padding: 10px 17px 10px 17px;\n text-decoration: none;\n}\n\n.btn_stddev.active {\n border: solid #838a20 3px;\n}\n\n.btn_stddev:hover {\n background: #edfa3c;\n background-image: -webkit-linear-gradient(top, #edfa3c, #d6d934);\n background-image: -moz-linear-gradient(top, #edfa3c, #d6d934);\n background-image: -ms-linear-gradient(top, #edfa3c, #d6d934);\n background-image: -o-linear-gradient(top, #edfa3c, #d6d934);\n background-image: linear-gradient(to bottom, #edfa3c, #d6d934);\n text-decoration: none;\n}\n",""])},function(module,exports,__webpack_require__){var content=__webpack_require__(98);if(typeof content==="string")content=[[module.i,content,""]];var transform;var insertInto;var options={hmr:true};options.transform=transform;options.insertInto=undefined;var update=__webpack_require__(15)(content,options);if(content.locals)module.exports=content.locals;if(false){}},,function(module,exports,__webpack_require__){exports=module.exports=__webpack_require__(16)(false);exports.push([module.i,'body {\n height:100%;\n width:100%;\n margin:0px;\n padding:0px;\n color: black;\n background: #e3e3da;\n -webkit-text-rendering: optimizeLegibility;\n -moz-text-rendering: optimizeLegibility;\n text-rendering: optimizeLegibility;\n}\n\nselect {\n padding: .4em;\n background: #efefef;\n border-radius: 0px;\n border-color: rgb(169,169,169);\n border-width: 1px;\n}\n\n/* Style for sliders */\ninput[type=range] {\n -webkit-appearance: none;\n width: 100%;\n margin: 9px 5px 9px 0;\n}\ninput[type=range]:focus {\n outline: none;\n}\ninput[type=range]::-webkit-slider-runnable-track {\n width: 100%;\n height: 4px;\n cursor: pointer;\n box-shadow: 1px 1px 2px #000000, 0px 0px 1px #0d0d0d;\n background: #3071a9;\n border-radius: 1.4px;\n border: 0.2px solid #010101;\n}\ninput[type=range]::-webkit-slider-thumb {\n box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;\n border: 0.5px solid #000000;\n height: 18px;\n width: 8px;\n border-radius: 3px;\n background: #ffffff;\n cursor: pointer;\n -webkit-appearance: none;\n margin-top: -9.2px;\n}\ninput[type=range]:focus::-webkit-slider-runnable-track {\n background: #367ebd;\n}\ninput[type=range]::-moz-range-track {\n width: 100%;\n height: 4px;\n cursor: pointer;\n box-shadow: 1px 1px 2px #000000, 0px 0px 1px #0d0d0d;\n background: #3071a9;\n border-radius: 1.4px;\n border: 0.2px solid #010101;\n}\ninput[type=range]::-moz-range-thumb {\n box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;\n border: 0.5px solid #000000;\n height: 18px;\n width: 8px;\n border-radius: 3px;\n background: #ffffff;\n cursor: pointer;\n}\ninput[type=range]::-ms-track {\n width: 100%;\n height: 4px;\n cursor: pointer;\n background: transparent;\n border-color: transparent;\n color: transparent;\n}\ninput[type=range]::-ms-fill-lower {\n background: #2a6495;\n border: 0.2px solid #010101;\n border-radius: 2.8px;\n box-shadow: 1px 1px 2px #000000, 0px 0px 1px #0d0d0d;\n}\ninput[type=range]::-ms-fill-upper {\n background: #3071a9;\n border: 0.2px solid #010101;\n border-radius: 2.8px;\n box-shadow: 1px 1px 2px #000000, 0px 0px 1px #0d0d0d;\n}\ninput[type=range]::-ms-thumb {\n box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;\n border: 0.5px solid #000000;\n height: 18px;\n width: 8px;\n border-radius: 3px;\n background: #ffffff;\n cursor: pointer;\n height: 4px;\n}\ninput[type=range]:focus::-ms-fill-lower {\n background: #3071a9;\n}\ninput[type=range]:focus::-ms-fill-upper {\n background: #367ebd;\n}\n/* End of style for sliders */\n\n#header {\n width: 100%;\n height: 40px;\n font-weight: bold;\n color: rgb(0, 0, 0);\n box-sizing: border-box;\n background-color : #000;\n line-height: 30px;\n text-align: left;\n font-family: "Inconsolata", Verdana, Tahoma;\n letter-spacing: 3px;\n}\n\n#menu {\n position: absolute;\n padding: 5px 2.5px 5px 2.5px;\n width: 345px;\n font-size: 12px;\n}\n\n#map {\n padding: 0px;\n left: 355px;\n margin-top: 5px;\n background-color: white;\n position: relative;\n border: 1px solid lightgrey;\n}\n\nh1.menu {\n color:#2e91ce;\n font-size:15px;\n}\n.icon {\n box-sizing: border-box;\n padding:10px;\n box-sizing: border-box;\n text-align:center;\n vertical-align:middle;\n display:inline-block;\n}\n\nh1 {\n font-family: \'Enriqueta\', arial, serif;\n line-height: 1.25;\n margin: 0 0 10px;\n font-size: 40px;element\n font-weight: bold;\n}\n\nh2 {\n font-family: \'Enriqueta\', arial, serif;\n font-size: 16px;\n color : #2e91ce;\n font-weight: bold;\n}\n\nh3 {\n font-family: \'Enriqueta\', arial, serif;\n font-size: 13px;\n color : #2e91ce;\n font-weight: bold;\n}\n\n/* a.menu {\n line-height:30px;\n color: white;\n} */\n\n/* Styles for menu located on the left of the interface */\n#section1 {\n padding: 0.9em 0.3em 0.8em 0.2em;\n font-size: 12px !important;\n}\n\n#section2 {\n padding: 2px 8px 10px 8px;\n}\n\n#section2 input[type="text"], #section2 input[type="number"], #section2 input[type="color"] {\n position: absolute;\n right: 33px;\n margin: auto;\n min-width: 40px;\n font-size: 12px;\n}\n\n.params_section2.inactive {\n display: none;\n}\n\np.params_section2 {\n margin: 15px 0;\n clear: both;\n}\n\np.params_section2:first-of-type {\n margin-top: 9px;\n}\n\np.params_section2 > span {\n vertical-align: -moz-middle-with-baseline;\n}\n\np.params_section2 > p {\n margin: auto;\n}\n\np.params_section2 > select {\n position: relative;\n float: right;\n margin-bottom: 7.5px;\n min-width: 40px;\n font-size: 12px;\n right: 20px;\n max-width: 280px;\n}\n\n#section3 {\n padding: 0.8em 0.5em 0.8em 0.5em;\n}\n\n#section4 {\n font-size: 12px;\n padding: 0.8em 1.2em 0.8em 1.2em;\n}\n\nul.config_map_options {\n display: inline-block;\n line-height: 17px;\n list-style: outside none none;\n margin-top: 0px;\n padding: 0px;\n width: 100%;\n}\n\n.config_map_options li {\n margin: 1px;\n padding: 4px;\n\n}\n\nli.to_hide {\n margin-left: 8px;\n}\n\nli.to_hide > input[type="number"] {\n width: 80px;\n}\n\n.list_elem_section4 {\n display: inline-flex;\n margin: 2px;\n}\n\n#section5 {\n padding: 0.8em 1.2em 0.8em 1.2em;\n}\n\n#section5 input[type="text"], #section5 input[type="number"], #section5 select {\n margin-left: 5px;\n}\n/* End of styles for menu located on the left of the interface */\n\n/* Style for the two overlay div */\n#overlay {\n width: 100%;\n height: 100%;\n position: fixed;\n z-index: 0;\n top: 0;\n left: 0;\n background: rgba(227, 227, 218, 0.5);\n font-family: Arimo;\n text-align: center;\n font-size: 20px;\n}\n\n.overlay_drop {\n background: black none repeat scroll 0% 0%;\n font-family: Arimo;\n font-size: 20px;\n font-weight: 800;\n height: 98%;\n width: 99%;\n left: 0;\n top: 0;\n opacity: 0.6;\n padding: 10px;\n position: fixed;\n text-align: center;\n z-index: 0;\n}\n\n.overlay_drop.inner {\n border: 2px dashed white;\n margin: 10px;\n background: rgba(0, 0, 0, 0.33) none repeat scroll 0% 0%;\n border-radius: 1%;\n}\n\n.overlay_drop.inner > p {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n font-size: 14px;\n width: auto;\n bottom: 0px;\n opacity: 0.85;\n text-align: center;\n color: white;\n padding: 0.5em;\n}\n/* End of style for the two overlay div */\n\n/* Styles for buttons located on the left of the map */\n.light-menu {\n bottom: 0px;\n position: absolute;\n right: 0px;\n}\n\np.cont_map_btn {\n margin: auto;\n}\n\n.cont_map_btn > button {\n display: block;\n font-size: 1.1em;\n font-weight: bold;\n text-align: center;\n margin: 0 3px 0 0;\n color: #ccc;\n background-color: #555;\n background: -webkit-linear-gradient(#888,#555);\n background: linear-gradient(#888,#555);\n border: 0 none;\n border-radius: 3px;\n text-shadow: 0 -1px 0 #000;\n box-shadow: 1px 0 0 #666,4px 0 0 #444,5px 0 0 rgba(0,0,0,0.6);\n cursor: pointer;\n -webkit-transition: all 150ms ease;\n transition: all 150ms ease;\n width: 30px;\n height: 30px;\n}\n\n.cont_map_btn > button:hover {\n color: #fff; text-shadow: 0 -1px 0 #444, 0 0 5px #ffd, 0 0 8px #fff;\n}\n\n.cont_map_btn > button.active, .cont_map_btn > button:active\n{\n color: #fff;\n text-shadow: 0 -1px 0 #444,0 0 5px #ffd,0 0 8px #fff;\n box-shadow: none;\n -webkit-transform: translateX(5px);\n transform: translateX(2px);\n -webkit-animation: none;\n animation: none;\n background: linear-gradient(#555,#444);\n width: 32px;\n margin: 0;\n}\n/* End of styles for button located on the left of the map */\n\n/* Styles for elements located in the header */\n.header_options_right {\n clear: both;\n float: right;\n display:inline;\n color: #99a8c4;\n font-size:12px;\n margin: auto;\n}\n\n.header_options_projection {\n position: absolute;\n left: 350px;\n top: 0px;\n color: #99a8c4;\n margin: auto;\n}\n\na.logo {\n position: absolute;\n left : 0px;\n top : 0px;\n height:30px;\n padding:0px;\n vertical-align:middle;\n font-weight : bold;\n font-family: \'Helvetica Neue\', sans-serif;\n font-size: 20px;\n margin-left:5px\n}\n\n.const_buttons {\n background: transparent;\n border-color:transparent;\n border-radius: 10%;\n cursor: pointer;\n height: 30px;\n margin-top: 5px;\n}\n\n.styled-select {\n background: url(/static/img/arrow_select.png) no-repeat 100% 0;\n height: 29px;\n overflow: hidden;\n background-color: #000;\n -webkit-border-radius: 20px;\n -moz-border-radius: 20px;\n border-radius: 20px;\n margin-top: 3px;\n letter-spacing: 1.5px;\n}\n\n.styled-select select {\n background: transparent;\n border: none;\n font-size: 14px;\n height: 29px;\n padding: 5px;\n width: 340px;\n color: #fff;\n}\n\n#form_projection2 * {\n background-color: black;\n}\n/* End of styles for elements located in the header */\n\n\n#trash_button,#zoom_fit_button,.style_button,\n.style_target_layer,#legend_button,.active_button,#browse_data_button {\n margin-left: 1.5px;\n float: right;\n}\n\n#replace_button {\n float: left;\n margin-left: 1.5px;\n margin-top: 2px;\n}\n\n.ico_type {\n margin-top: 2px;\n margin-right: 3px;\n float: left;\n}\n\n.popup.active {\n background: rgba(220, 220, 220, 0.94) none repeat scroll 0% 0%;\n border: 3px;\n padding: 20px;\n color: black;\n border-radius: 2%;\n font: 12px "Enriqueta", arial, sans-serif;\n}\n\n#info_features {\n position: absolute;\n cursor: default;\n right: 34px;\n top: 45px;\n border-radius: 9px;\n background-color: rgba(255, 255, 255, 0.5);\n border: 1px solid #999;\n font: 14px \'Source Sans Pro\', Helvetica, sans-serif;\n padding-right:20px;\n padding-left:20px;\n color:black;\n}\n\n#sortable {\n list-style-type:none;\n margin:auto;\n padding:0;\n width:100%;\n border-radius:10%\n}\n\n#sortable li {\n margin: 5px 0 5px 0;\n padding: 5px;\n font-size: 10.5px;\n line-height: 1.75em;\n font-weight: bold;\n background: #ffffff;\n border-radius: 4%;\n border: unset;\n color: black;\n cursor: pointer;\n overflow-y: auto;\n}\n\n#sortable li.sortable_target {\n background: #fff8ac;\n}\n\n#sortable li.sortable_target:hover {\n background: #f3ec9e;\n}\n\n#sortable li:hover{\n background: #e8e8e8;\n}\n\n#table_intro{\n margin: 0 !important;\n text-align: center;\n}\n\n.dataTable-sorter::before, .dataTable-sorter::after {\n position: unset !important;\n}\n\n.button_sys_run {\n border-color: transparent;\n color: transparent;\n background-color: transparent;\n}\n\n.noselect {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.zoom_rect{\n fill: transparent;\n stroke: black;\n stroke-width: 0.7px;\n}\n\n.button_disc {\n\tbackground:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #ffffff), color-stop(1, #f6f6f6));\n\tbackground:-moz-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);\n\tbackground:-webkit-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);\n\tbackground:-o-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);\n\tbackground:-ms-linear-gradient(top, #ffffff 5%, #f6f6f6 100%);\n\tbackground:linear-gradient(to bottom, #ffffff 5%, #f6f6f6 100%);\n\tbackground-color:#ffffff;\n\t-moz-border-radius:4px;\n\t-webkit-border-radius:4px;\n\tborder-radius:4px;\n\tborder:1px solid #dcdcdc;\n\tdisplay:inline-block;\n\tcursor:pointer;\n\tcolor:black;\n\tfont-family:Arial;\n\tfont-size:12px;\n\tfont-weight:bold;\n\tpadding:4px 13px;\n\ttext-decoration:none;\n}\n.button_disc:hover {\n\tbackground:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #f6f6f6), color-stop(1, #ffffff));\n\tbackground:-moz-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);\n\tbackground:-webkit-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);\n\tbackground:-o-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);\n\tbackground:-ms-linear-gradient(top, #f6f6f6 5%, #ffffff 100%);\n\tbackground:linear-gradient(to bottom, #f6f6f6 5%, #ffffff 100%);\n\tbackground-color:#f6f6f6;\n}\n\n.button_disc:disabled {\n color: #DDDFE4;\n}\n\n.button_disc.active {\n box-shadow: inset 0 0 6px #000;\n}\n\n.button_st3 {\n\t-moz-box-shadow: 0px 1px 0px 0px #91b8b3;\n\t-webkit-box-shadow: 0px 1px 0px 0px #91b8b3;\n\tbox-shadow: 0px 1px 0px 0px #91b8b3;\n\tbackground:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #768d87), color-stop(1, #6c7c7c));\n\tbackground:-moz-linear-gradient(top, #768d87 5%, #6c7c7c 100%);\n\tbackground:-webkit-linear-gradient(top, #768d87 5%, #6c7c7c 100%);\n\tbackground:-o-linear-gradient(top, #768d87 5%, #6c7c7c 100%);\n\tbackground:-ms-linear-gradient(top, #768d87 5%, #6c7c7c 100%);\n\tbackground:linear-gradient(to bottom, #768d87 5%, #6c7c7c 100%);\n\tbackground-color:#768d87;\n\t-moz-border-radius:4px;\n\t-webkit-border-radius:4px;\n\tborder-radius:4px;\n\tborder:1px solid #566963;\n\tdisplay:inline-block;\n\tcursor:pointer;\n\tcolor:#ffffff;\n\tfont-family:Arial;\n\tfont-size:12px;\n\tpadding:3px 16px;\n\ttext-decoration:none;\n\tmargin: 0px 1px 0px 1px\n}\n.button_st3:hover {\n\tbackground:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #6c7c7c), color-stop(1, #768d87));\n\tbackground:-moz-linear-gradient(top, #6c7c7c 5%, #768d87 100%);\n\tbackground:-webkit-linear-gradient(top, #6c7c7c 5%, #768d87 100%);\n\tbackground:-o-linear-gradient(top, #6c7c7c 5%, #768d87 100%);\n\tbackground:-ms-linear-gradient(top, #6c7c7c 5%, #768d87 100%);\n\tbackground:linear-gradient(to bottom, #6c7c7c 5%, #768d87 100%);\n\tbackground-color:#6c7c7c;\n}\n\n.button_st3:disabled {\n border: 1px solid #DDDFE4;\n background: none;\n background-color: #DDDFE4;\n color: #fff;\n box-shadow: none;\n}\n\n.button_st4 {\n background:linear-gradient(to bottom, #3071a9 5%, #002e56 100%);\n background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #3071a9), color-stop(1, #002e56));\n background:-moz-linear-gradient(top, #3071a9 5%, #002e56 100%);\n background:-webkit-linear-gradient(top, #3071a9 5%, #002e56 100%);\n background:-o-linear-gradient(top, #3071a9 5%, #002e56 100%);\n background:-ms-linear-gradient(top, #3071a9 5%, #002e56 100%);\n background-color:#1d5966;\n border-radius: 6px;\n border: 1px solid #1d5966;\n display: inline-block;\n cursor: pointer;\n color: #FFF !important;\n padding: 4px 9px;\n text-decoration: none;\n}\n\n.button_st4:hover {\n background:-webkit-gradient(linear, left top, left bottom, color-stop(0.05, #dfdfdf), color-stop(1, #ededed));\n background:-moz-linear-gradient(top, #dfdfdf 5%, #ededed 100%);\n background:-webkit-linear-gradient(top, #dfdfdf 5%, #ededed 100%);\n background:-o-linear-gradient(top, #dfdfdf 5%, #ededed 100%);\n background:-ms-linear-gradient(top, #dfdfdf 5%, #ededed 100%);\n background:linear-gradient(to bottom, #dfdfdf 5%, #ededed 100%);\n background-color:#dfdfdf;\n border: 1px solid #dfdfdf;\n}\n\n.without_spinner {\n -moz-appearance: textfield;\n text-align: right;\n border: none;\n border-bottom-style: dashed;\n border-bottom-width: 0.5px;\n}\n\n.without_spinner::-webkit-inner-spin-button,\n.without_spinner::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0; /* Removes leftover margin */\n}\n\n.mini_button_ok {\n -webkit-border-radius: 12;\n -moz-border-radius: 12;\n border-radius: 12px;\n font-family: Arial;\n color: #ffffff;\n font-size: 20px;\n background: #4bc238;\n padding: 3px 10px 3px 10px;\n margin: 5px;\n text-decoration: none;\n display:inline-block;\n}\n\n.mini_button_ok:hover {\n background: #3dbf26;\n background-image: -webkit-linear-gradient(top, #3dbf26, #519e41);\n background-image: -moz-linear-gradient(top, #3dbf26, #519e41);\n background-image: -ms-linear-gradient(top, #3dbf26, #519e41);\n background-image: -o-linear-gradient(top, #3dbf26, #519e41);\n background-image: linear-gradient(to bottom, #3dbf26, #519e41);\n text-decoration: none;\n}\n\n.mini_button_none {\n -webkit-border-radius: 12;\n -moz-border-radius: 12;\n border-radius: 12px;\n font-family: Arial;\n color: #ffffff;\n font-size: 20px;\n background: #ed2828;\n padding: 3px 10px 3px 10px;\n margin: 5px;\n text-decoration: none;\n display:inline-block;\n}\n\n.mini_button_none:hover {\n background: #eb7373;\n background-image: -webkit-linear-gradient(top, #eb7373, #ad0707);\n background-image: -moz-linear-gradient(top, #eb7373, #ad0707);\n background-image: -ms-linear-gradient(top, #eb7373, #ad0707);\n background-image: -o-linear-gradient(top, #eb7373, #ad0707);\n background-image: linear-gradient(to bottom, #eb7373, #ad0707);\n text-decoration: none;\n}\n\n.mini_button_none_orange {\n -webkit-border-radius: 12;\n -moz-border-radius: 12;\n border-radius: 12px;\n font-family: Arial;\n color: #ffffff;\n font-size: 20px;\n background: #ed8228;\n padding: 3px 10px 3px 10px;\n margin: 5px;\n text-decoration: none;\n display:inline-block;\n}\n\n.mini_button_none_orange:hover {\n background: #eb7373;\n background-image: -webkit-linear-gradient(top, #eca366, #e76e09);\n background-image: -moz-linear-gradient(top, #eca366, #e76e09);\n background-image: -ms-linear-gradient(top, #eca366, #e76e09);\n background-image: -o-linear-gradient(top, #eca366, #e76e09);\n background-image: linear-gradient(to bottom, #eca366, #e76e09);\n text-decoration: none;\n}\n\nbutton.accordion, button.accordion_disc, button.accordion_proj {\n background-color: #595959;\n color: #fff;\n cursor: pointer;\n padding: 4px 5px;\n width: 100%;\n border: none;\n text-align: left;\n outline: none;\n font-size: 1.2em;\n transition: 0.4s;\n font-family: Baloo Bhaina;\n margin: 1px;\n}\n\nbutton.accordion:after, button.accordion_disc:after, button.accordion_projc:after {\n content: \'\\2795\';\n font-size: 13px;\n color: #777;\n float: right;\n margin-left: 5px;\n}\n\nbutton.accordion.active:after, button.accordion_disc.active:after, button.accordion_proj.active:after {\n content: "\\2796";\n}\n\n#map_center_menu_ico:after {\n content: \'\\2795\';\n font-size: 14px;\n color: #777;\n margin-left: 4px;\n}\n\n#map_center_menu_ico.active:after {\n content: "\\2796";\n}\n\ndiv.panel {\n font-family: Verdana,Arial,sans-serif;\n font-size: 1.1em;\n color: #222222;\n background: #ffffff;\n overflow: hidden;\n visibility: hidden;\n width: 335px;\n height: 0;\n /* max-height: 0; */\n border: 1px solid #aaaaaa;\n border-top-color: rgb(170, 170, 170);\n border-top-style: solid;\n border-top-width: 1px;\n border-bottom-right-radius: 8px;\n border-bottom-left-radius: 8px;\n transition: all 350ms ease-in-out;\n /* transform: scaleY(0); */\n}\n\ndiv.panel.show {\n height: auto;\n max-height: 775px;\n width: 335px;\n margin: auto;\n margin-bottom: 5px;\n overflow: auto;\n visibility: visible;\n transition: all 350ms ease-in-out;\n /* transform: scaleY(1); */\n}\n\n.panel > div {\n opacity:0;\n}\n.panel.show > div {\n opacity: 1;\n}\n\n.twbs .panel {\n border: 1px solid #aaaaaa;\n border-top-color: rgb(170, 170, 170);\n border-top-style: solid;\n border-top-width: 1px;\n border-bottom-right-radius: 8px;\n border-bottom-left-radius: 8px;\n}\n\n.twbs h3 {\n font-size: 1.2em;\n font-weight: bold;\n margin-top: 4px;\n}\n\n.twbs .modal {\n position: absolute;\n overflow: visible;\n}\n\n.twbs .modal-title {\n margin: 0;\n line-height: 1.42857143;\n font-weight: bold;\n font-size: 1.3em;\n padding: 4px;\n border-top-right-radius: 8px;\n border-top-left-radius: 8px;\n border-bottom-right-radius: 8px;\n border-bottom-left-radius: 8px;\n overflow-wrap: break-word;\n word-wrap: break-word;\n width: 90%;\n}\n\n.twbs .modal-dialog {\n font-family: arimo,Arial,sans-serif;\n font-size: 11px;\n}\n\n.twbs .modal-body > p > span {\n display: inline-block;\n}\n\n.twbs .modal-body > p > input {\n display: inline-block;\n margin: 0px 0px 0px 15px;\n}\n\n.twbs .modal-footer {\n padding: 6px;\n}\n\n.twbs .modal-header {\n padding: 8px;\n background-color: #595959;\n color: white;\n}\n\n.twbs #xclose {\n padding: 1px 2px;\n font-size: 15px;\n margin-right: 5px;\n margin-top: 2px;\n}\n\n.twbs .help-popover {\n max-width: 500px;\n width: 500px;\n}\n\n.twbs .modal-body > p {\n margin: 11px 0 !important;\n clear: both;\n}\n\n.twbs .modal-body > p.inp_bottom {\n margin: 11px 0px 35px 0px !important;\n}\n\n.fitContent {\n width: intrinsic !important;\n width: -moz-max-content !important;\n width: -webkit-max-content !important;\n}\n\nth {\n border: 1px solid #d3d3d3;\n text-align: center !important;\n font-size: 12px;\n}\n\ntr:nth-child(even) {background: #DBDADA}\ntr:nth-child(odd) {background: ##EFECEC;}\n\n.m_elem_right {\n position: absolute;\n right: 20px;\n width: 60px;\n margin-left: 15px;\n font-size: 12px;\n}\n\nselect.m_elem_right {\n width: auto !important;\n}\n\n#export_filename.m_elem_right {\n width: auto !important;\n}\n\np.line_elem {\n display: inline-table;\n width: 100%;\n}\n\np.line_elem2 {\n display: inline-table;\n width: 100%;\n margin: 5px 0 10px;\n}\n\np.line_elem2 > input[type=range] {\n margin: 2px;\n}\n\n\n.styleBox > p > input {\n float: right;\n}\n\n.three_dots {\n background: url(/static/img/3_dots_ico.png) no-repeat;\n height: 20px;\n float: left;\n width: 10px;\n}\n\n.cells path {\n fill: none;\n pointer-events: all;\n}\n\n.cells :hover circle {\n fill: red;\n}\n\nimg.layout_ft_ico {\n width: 27px;\n height: auto;\n margin: 2px;\n -webkit-filter: grayscale(1); /* Webkit Nightlies & Chrome Canary */\n -webkit-transform: scale(0.9);\n -webkit-transition: all .2s;\n}\n\nimg.layout_ft_ico:hover {\n filter: none;\n -webkit-filter: grayscale(0);\n -webkit-transform: scale(1);\n}\n\n.swal2_blue {\n background-color: rgb(48, 133, 214);\n border-left-color: rgb(48, 133, 214);\n border-right-color: rgb(48, 133, 214);\n}\n\n.swal2_custom {\n overflow-wrap: break-word;\n}\n\n.swal2_large {\n min-width: 380px;\n min-height: 310px;\n}\n\n/*#txtwzr_table > tbody > tr > td, #txtwzr_table > thead > tr > th {\n border-top: 1px solid #999;\n padding: 8px;\n vertical-align: top;\n}*/\n\n#box_projection > p {\n clear: both;\n padding: 8px;\n font-size: 13px;\n}\n\n.ctrl_pt {\n fill: red;\n cursor: grab;\n cursor: -webkit-grab;\n}\n\n.ctrl_pt:active {\n fill: red;\n cursor: grabbing;\n cursor: -webkit-grabbing;\n}\n\n.alertify-notifier .ajs-message.ajs-warning {\n background: rgb(228, 144, 83) !important;\n}\n\n.alertify-notifier .ajs-message {\n font: 13px Roboto !important;\n padding: 12px !important;\n}\n\n.alertify-notifier .ajs-message.ajs-warning {\n background: rgb(228, 144, 83) !important;\n}\n\n.alertify-notifier .ajs-message {\n font: 13px Roboto !important;\n padding: 12px !important;\n}\n\n/*#_m_free_draw_layer > path {\n fill: none;\n stroke: #000;\n stroke-width: 3px;\n stroke-linejoin: round;\n stroke-linecap: round;\n}*/\n\n.switch-field {\n font-family: "Lucida Grande", Tahoma, Verdana, sans-serif;\n padding: 20px;\n\toverflow: hidden;\n}\n\n.switch-title {\n text-align: left;\n margin-bottom: 6px;\n}\n\n.switch-field input {\n position: absolute !important;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n width: 1px;\n border: 0;\n overflow: hidden;\n}\n\n.switch-field label {\n float: left;\n}\n\n.switch-field label {\n display: inline-block;\n background-color: #e4e4e4;\n color: rgba(0, 0, 0, 0.6);\n font-size: 13px;\n font-weight: normal;\n text-align: center;\n text-shadow: none;\n padding: 5px 12px;\n border: 1px solid rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3), 0 1px rgba(255, 255, 255, 0.1);\n -webkit-transition: all 0.1s ease-in-out;\n -moz-transition: all 0.1s ease-in-out;\n -ms-transition: all 0.1s ease-in-out;\n -o-transition: all 0.1s ease-in-out;\n transition: all 0.1s ease-in-out;\n margin: 2px;\n}\n\n.switch-field label:hover {\n\tcursor: pointer;\n}\n\n.switch-field input:checked + label {\n background-color: #A5DC86;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n/*\n.switch-field label:first-of-type {\n border-radius: 4px 0 0 4px;\n}\n\n.switch-field label:last-of-type {\n border-radius: 0 4px 4px 0;\n}\n*/\n\n.custom_tooltip {\n position: absolute;\n background: #595959;\n border-radius:4px;\n padding: 6px 12px;\n font-family: arial;\n font-size: 12px;\n text-shadow: 0px 1px 1px #000;\n color: #ffc64a;\n z-index: 1001;\n overflow-wrap: break-word;\n}\n/*\nSpinner adapted from https://github.com/tobiasahlin/SpinKit\nCopyright (c) 2015 Tobias Ahlin (license MIT)\n*/\n.spinner {\n margin: 30px auto;\n width: 50px;\n height: 50px;\n text-align: center;\n font-size: 10px;\n}\n\n.spinner > div {\n background-color: #005327;\n height: 100%;\n width: 6px;\n display: inline-block;\n\n -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out;\n animation: sk-stretchdelay 1.2s infinite ease-in-out;\n}\n\n.spinner .rect2 {\n -webkit-animation-delay: -1.1s;\n animation-delay: -1.1s;\n}\n\n.spinner .rect3 {\n -webkit-animation-delay: -1.0s;\n animation-delay: -1.0s;\n}\n\n.spinner .rect4 {\n -webkit-animation-delay: -0.9s;\n animation-delay: -0.9s;\n}\n\n.spinner .rect5 {\n -webkit-animation-delay: -0.8s;\n animation-delay: -0.8s;\n}\n\n@-webkit-keyframes sk-stretchdelay {\n 0%, 40%, 100% { -webkit-transform: scaleY(0.4) }\n 20% { -webkit-transform: scaleY(1.0) }\n}\n\n@keyframes sk-stretchdelay {\n 0%, 40%, 100% {\n transform: scaleY(0.4);\n -webkit-transform: scaleY(0.4);\n } 20% {\n transform: scaleY(1.0);\n -webkit-transform: scaleY(1.0);\n }\n}\n\n.opts_lgd_layout {\n margin: 2px;\n cursor: pointer;\n}\n\n.opts_lgd_layout.selected:before {\n content: "\\2713 ";\n font-weight: 800;\n font-size: 1.75em;\n}\n\np.breaks_vals > input[type="number"] {\n width: 70px !important;\n margin: 1px !important;\n height: 1em !important;\n}\n\np.breaks_vals > input[type="number"].size_class {\n width: 60px !important;\n}\n\n#sizes_div > div > p.breaks_vals > input[type="number"] {\n width: 70px !important;\n margin: 1px !important;\n height: 2.5em !important;\n}\n\n\n/* Styles for modal box allowing to choose the type of each field */\n#fields_select {\n display: grid;\n}\n\n#fields_select > li {\n background: transparent;\n /* background: aliceblue; */\n padding: 5px;\n line-height: 2em;\n}\n\n#fields_select > li:nth-child(odd) {\n background: lightgray;\n}\n\n#fields_select > li:first-child {\n border-top-left-radius: 3px 3px;\n border-top-right-radius: 3px 3px;\n}\n\n#fields_select > li:last-child {\n border-bottom-left-radius: 3px 3px;\n border-bottom-right-radius: 3px 3px;\n}\n/* End of styles for modal box allowing to choose the type of each field */\n\n/* Style for left menu section 1 */\nimg#remove_target, img#downgrade_target, img#table_layer_s1, img#remove_dataset, img#table_dataset_s1 {\n margin: 10px 5px 0 0;\n float: right;\n opacity: 1;\n}\n\nimg#remove_target, img#remove_dataset {\n opacity: 0.5;\n}\n\nimg#remove_target:hover, img#remove_dataset:hover {\n opacity: 1;\n}\n\n#join_button {\n border-color: transparent;\n background-color: transparent;\n}\n/* End of style for left menu section 1 */\n',""])},function(module,exports,__webpack_require__){var content=__webpack_require__(101);if(typeof content==="string")content=[[module.i,content,""]];var transform;var insertInto;var options={hmr:true};options.transform=transform;options.insertInto=undefined;var update=__webpack_require__(15)(content,options);if(content.locals)module.exports=content.locals;if(false){}},,,,,,,function(module,exports,__webpack_require__){"use strict";(function(Promise,global){var _slicedToArray=function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_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 _i18next=__webpack_require__(27);var _i18next2=_interopRequireDefault(_i18next);var _i18nextXhrBackend=__webpack_require__(41);var _i18nextXhrBackend2=_interopRequireDefault(_i18nextXhrBackend);var _locI18next=__webpack_require__(40);var _locI18next2=_interopRequireDefault(_locI18next);__webpack_require__(102);__webpack_require__(99);__webpack_require__(97);__webpack_require__(95);var _interface=__webpack_require__(1);var _helpers=__webpack_require__(3);var _helpers_math=__webpack_require__(2);var _map_ctrl=__webpack_require__(9);var _tooltips=__webpack_require__(29);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}Promise.config({warnings:true,longStackTraces:true});global.i18next=_i18next2.default;global._tr=function(){return _i18next2.default.t.apply(_i18next2.default,arguments)};global.encodeId=function(layer_name){return layer_name!==""?"L_"+layer_name.replace(/[^a-zA-Z0-9_-]/g,function(match){return"_"+match[0].charCodeAt(0).toString(16)+"_"}):"L_"};global._app={current_functionnality:undefined,current_proj_name:"NaturalEarth2",custom_palettes:new Map,default_symbols:[],existing_lang:["en","es","fr"],layer_to_id:new Map([["World",encodeId("World")],["Graticule",encodeId("Graticule")]]),legendRedrawTimeout:null,id_to_layer:new Map([[encodeId("World"),"World"],[encodeId("Graticule"),"Graticule"]]),targeted_layer_added:false,to_cancel:undefined,version:"0.8.1"};global.proj=d3.geoNaturalEarth2().scale(1).translate([0,0]);global.path=d3.geoPath().projection(proj).pointRadius(4);global.t=proj.translate();global.s=proj.scale();global.w=(0,_helpers_math.Mround)(window.innerWidth-361);global.h=window.innerHeight-55;global.data_manager={current_layers:{},dataset_name:null,joined_dataset:[],field_join_map:[],result_data:{},user_data:{}};function parseQuery(search){var args=search.substring(1).split("&");var argsParsed={};var arg=void 0,kvp=void 0,key=void 0,value=void 0;for(var i=0;i-1?lang:"en";Promise.all([loadI18next(lang),getEpsgProjection()]).then(function(results){var _results=_slicedToArray(results,2),tr=_results[0],epsg_proj=_results[1];window.localize=_locI18next2.default.init(_i18next2.default);_app.epsg_projections=JSON.parse(epsg_proj);(0,_interface.setUpInterface)(params.reload);localize(".i18n");(0,_tooltips.bindTooltips)()})})();global.get_map_xy0=function(){var bbox=svg_map.getBoundingClientRect();return{x:bbox.left,y:bbox.top}};global.get_bounding_rect=function(elem){var _get_map_xy=get_map_xy0(),x=_get_map_xy.x,y=_get_map_xy.y;var bbox=elem.getBoundingClientRect();var a={x:bbox.left-x,y:bbox.top-y,width:bbox.width?bbox.width:bbox.right-bbox.left,height:bbox.height?bbox.height:bbox.bottom-bbox.top};a.left=a.x;a.top=a.y;return a};global.helper_esc_key_twbs_cb=function helper_esc_key_twbs_cb(_event,callback){var evt=_event||window.event;var isEscape="key"in evt?evt.key==="Escape"||evt.key==="Esc":evt.keyCode===27;if(isEscape){evt.stopPropagation();if(callback){callback()}}}}).call(this,__webpack_require__(7),__webpack_require__(5))}]);
\ No newline at end of file
diff --git a/client/dist/html/modules.html b/client/dist/html/modules.html
index 9816129e5..1f65c7a01 100644
--- a/client/dist/html/modules.html
+++ b/client/dist/html/modules.html
@@ -70,8 +70,8 @@
-
+
-
+