diff --git a/CHANGES.rst b/CHANGES.rst
index 6707a1626..9e5f597e6 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -6,7 +6,9 @@ Changes
- Fix error on jointure.
-- Fix location of red square when moving proportionnal symbols
+- Fix location of red square when moving proportionnal symbols.
+
+- Fix legend size on links and discontinuities when zooming.
0.3.6 (2017-06-30)
diff --git a/magrit_app/__init__.py b/magrit_app/__init__.py
index 3a7f7ee83..d7f21764d 100755
--- a/magrit_app/__init__.py
+++ b/magrit_app/__init__.py
@@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
-__version__ = '0.3.6'
+__version__ = '0.3.7'
diff --git a/magrit_app/static/css/style.474b5ea2bfbc.min.css b/magrit_app/static/css/style.85465fb4e4b8.min.css
similarity index 100%
rename from magrit_app/static/css/style.474b5ea2bfbc.min.css
rename to magrit_app/static/css/style.85465fb4e4b8.min.css
diff --git a/magrit_app/static/js/app.474b5ea2bfbc.js b/magrit_app/static/js/app.85465fb4e4b8.js
similarity index 97%
rename from magrit_app/static/js/app.474b5ea2bfbc.js
rename to magrit_app/static/js/app.85465fb4e4b8.js
index 5083a3d90..ec9d0eff4 100644
--- a/magrit_app/static/js/app.474b5ea2bfbc.js
+++ b/magrit_app/static/js/app.85465fb4e4b8.js
@@ -297,7 +297,7 @@ function setUpInterface(reload_project) {
dv1.append('p').attr('id', 'join_section').styles({ 'text-align': 'center', 'margin-top': '2px' }).html('');
- dv1.append('p').styles({ 'text-align': 'center', margin: '5px' }).insert('button').attrs({ 'id': 'btn_type_fields', 'class': 'i18n',
+ dv1.append('p').styles({ 'text-align': 'center', 'margin': '5px' }).insert('button').attrs({ 'id': 'btn_type_fields', 'class': 'i18n',
'data-i18n': '[html]app_page.box_type_fields.title',
'disabled': true }).styles({ cursor: 'pointer',
'border-radius': '4px',
@@ -905,7 +905,7 @@ function change_lang() {
}
function make_ico_choice() {
- var list_fun_ico = ['prop.png', 'choro.png', 'typo.png', 'choroprop.png', 'proptypo.png', 'grid.png', 'cartogram.png', 'smooth.png', 'discont.png', 'typosymbol.png', 'flow.png', 'two_stocks.png'];
+ var list_fun_ico = ['prop.png', 'choro.png', 'typo.png', 'choroprop.png', 'proptypo.png', 'grid.png', 'cartogram.png', 'smooth.png', 'discont.png', 'typosymbol.png', 'flow.png'];
var function_panel = section2_pre.append('div').attr('id', 'list_ico_func');
@@ -913,13 +913,9 @@ function make_ico_choice() {
var ico_name = list_fun_ico[i],
func_name = ico_name.split('.')[0],
func_desc = get_menu_option(func_name).desc,
- margin_value = '5px 16px';
- // margin_value = i == 8 ? '5px 16px 5px 55px' : '5px 16px';
- function_panel.insert('img').styles({ margin: margin_value, cursor: 'pointer', width: '50px', 'float': 'left', 'list-style': 'none' }).attrs({
- class: 'i18n',
- 'data-i18n': ['[title]app_page.func_description.', func_name].join(''),
- src: ['static/img/func_icons2/', ico_name].join(''),
- id: 'button_' + func_name }).on('click', function () {
+ margin_value = i == 8 ? '5px 16px 5px 55px' : '5px 16px';
+ function_panel.insert('img').styles({ margin: margin_value, cursor: 'pointer', width: '50px', 'float': 'left', 'list-style': 'none' }).attrs({ class: 'i18n', 'data-i18n': ['[title]app_page.func_description.', func_name].join(''),
+ src: ['static/img/func_icons2/', ico_name].join(''), id: 'button_' + func_name }).on('click', function () {
var fill_menu = true;
// Do some clean-up related to the previously displayed options :
if (window.fields_handler) {
@@ -932,6 +928,7 @@ function make_ico_choice() {
}
document.getElementById('accordion2b').style.display = '';
+
// Get the function to fill the menu with the appropriate options (and do it):
_app.current_functionnality = get_menu_option(func_name);
var make_menu = window[_app.current_functionnality.menu_factory];
@@ -944,7 +941,7 @@ function make_ico_choice() {
selec_title.style.display = '';
// Don't fill the menu / don't highlight the icon if the type of representation is not authorizhed :
- if (this.style.filter !== 'grayscale(100%)') {
+ if (this.style.filter == 'grayscale(100%)') {} else {
this.classList.add('active');
// Highlight the icon of the selected functionnality :
this.style.filter = 'invert(100%) saturate(200%)';
@@ -1025,7 +1022,7 @@ var button_trash = ' ',
button_type = new Map([['Point', ''], ['Line', ''], ['Polygon', '']]);
-var button_result_type = new Map([['flow', ''], ['symbol', ''], ['grid', ''], ['propchoro', ''], ['typo', ''], ['discont', ''], ['cartogram', ''], ['label', ''], ['choro', ''], ['smooth', ''], ['prop', ''], ['waffle', '']]);
+var button_result_type = new Map([['flow', ''], ['symbol', ''], ['grid', ''], ['propchoro', ''], ['typo', ''], ['discont', ''], ['cartogram', ''], ['label', ''], ['choro', ''], ['smooth', ''], ['prop', '']]);
var eye_open0 = '';
@@ -1095,7 +1092,7 @@ function parseQuery(search) {
lng: lang,
fallbackLng: _app.existing_lang[0],
backend: {
- loadPath: 'static/locales/{{lng}}/translation.474b5ea2bfbc.json'
+ loadPath: 'static/locales/{{lng}}/translation.85465fb4e4b8.json'
}
}, function (err, tr) {
if (err) {
@@ -4181,11 +4178,6 @@ var get_menu_option = function () {
'name': 'typosymbol',
'menu_factory': 'fillMenu_TypoSymbol',
'fields_handler': 'fields_TypoSymbol'
- },
- 'two_stocks': {
- 'name': 'two_stocks',
- 'menu_factory': 'fillMenu_TwoStocks',
- 'fields_handler': 'fields_TwoStocks'
}
};
return function (func) {
@@ -4504,263 +4496,16 @@ function fetch_min_max_table_value(parent_id) {
return { mins: mins.sort(comp_fun), maxs: maxs.sort(comp_fun), sizes: sizes.sort(comp_fun) };
}
-function fillMenu_TwoStocks(layer) {
- // square size / circle radius
- // width row
- // sybmol : square / circle
-
- var dv2 = make_template_functionnality(section2);
-
- var f1 = dv2.append('p').attr('class', 'params_section2');
- f1.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.twostocks.fields' }).html(i18next.t('app_page.func_options.twostocks.fields'));
- f1.insert('select').attrs({ class: 'params', id: 'TwoStocks_fields', multiple: 'multiple', size: 2 });
-
- // const f2 = dv2.append('p').attr('class', 'params_section2');
- // f2.append('span')
- // .attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.twostocks.field2' })
- // .html(i18next.t('app_page.func_options.twostocks.field2'));
- // f2.insert('select')
- // .attrs({ class: 'params', id: 'TwoStocks_field2' });
-
- // const a = dv2.append('p').attr('class', 'params_section2');
- // a.append('span')
- // .attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.twostocks.type' })
- // .html(i18next.t('app_page.func_options.twostocks.type'));
- // const type_select = a.insert('select')
- // .attrs({ class: 'params', id: 'TwoStocks_type' });
-
-
- // Options for waffles :
- var b = dv2.append('p').attr('class', 'params_section2');
- b.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.twostocks.symbol_choice' }).html(i18next.t('app_page.func_options.twostocks.symbol_choice'));
- var symbol_select = b.insert('select').attrs({ class: 'params', id: 'TwoStocks_waffle_symbol' });
-
- var c = dv2.append('p').attr('class', 'params_section2');
- c.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.twostocks.waffle_size_circle', id: 'TwoStocks_waffle_size_txt' }).html(i18next.t('app_page.func_options.twostocks.waffle_size_circle'));
- c.insert('input').attrs({
- id: 'TwoStocks_waffle_size',
- type: 'number',
- class: 'params',
- min: 1,
- max: 20,
- step: 1,
- value: 3
- }).style('width', '50px');
- c.append('span').html(' (px)');
-
- var d = dv2.append('p').attr('class', 'params_section2');
- d.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.twostocks.waffle_width_rows' }).html(i18next.t('app_page.func_options.twostocks.waffle_width_rows'));
- d.insert('input').attrs({
- id: 'TwoStocks_waffle_WidthRow',
- class: 'params',
- type: 'number',
- min: 2,
- max: 8,
- value: 2,
- step: 1
- }).style('width', '50px');
-
- var e = dv2.append('p').attr('class', 'params_section2');
- e.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.twostocks.waffle_ratio' }).html(i18next.t('app_page.func_options.twostocks.waffle_ratio'));
- e.insert('input').attrs({
- id: 'TwoStocks_waffle_ratio',
- class: 'params',
- type: 'number',
- min: 1,
- max: 1000000,
- value: 100,
- step: 1
- }).style('width', '50px');
- e.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.twostocks.waffle_ratio_units' }).html(i18next.t('app_page.func_options.twostocks.waffle_ratio_units'));
-
- make_layer_name_button(dv2, 'TwoStocks_output_name', '15px');
- make_ok_button(dv2, 'twoStocks_yes');
- dv2.selectAll('.params').attr('disabled', true);
-}
-
-var fields_TwoStocks = {
- fill: function fill(layer) {
- if (!layer) return;
- section2.selectAll('.params').attr('disabled', null);
- var fields_stock = getFieldsType('stock', layer);
- var symbol_choice = section2.select('#TwoStocks_waffle_symbol');
- var fields_list = section2.select('#TwoStocks_fields');
- var ok_button = section2.select('#twoStocks_yes');
- var ratio_select = section2.select('#TwoStocks_waffle_ratio');
- [['app_page.func_options.common.symbol_circle', 'circle'], ['app_page.func_options.common.symbol_square', 'rect']].forEach(function (symb) {
- symbol_choice.append('option').text(i18next.t(symb[0])).attrs({ value: symb[1], 'data-i18n': '[text]' + symb[0] });
- });
- fields_stock.forEach(function (f) {
- fields_list.append('option').text(f).attr('value', f);
- });
- fields_list.node().parentElement.style.marginBottom = fields_stock.length * 12 + 5 + 'px';
- fields_list.attr('size', fields_stock.length);
- symbol_choice.on('change', function () {
- if (this.value === 'circle') {
- section2.select('#TwoStocks_waffle_size_txt').attr('data-i18n', '[html]app_page.func_options.twostocks.waffle_size_circle').text(i18next.t('app_page.func_options.twostocks.waffle_size_circle'));
- } else {
- section2.select('#TwoStocks_waffle_size_txt').attr('data-i18n', '[html]app_page.func_options.twostocks.waffle_size_square').text(i18next.t('app_page.func_options.twostocks.waffle_size_square'));
- }
- });
-
- ok_button.on('click', function () {
- var rendering_params = {};
- var new_layer_name = section2.select('#TwoStocks_output_name').node().value;
- new_layer_name = check_layer_name(new_layer_name.length > 0 ? new_layer_name : layer + '_Waffle');
- rendering_params.ratio = +document.getElementById('TwoStocks_waffle_ratio').value;
- rendering_params.fields = Array.prototype.slice.call(fields_list.node().selectedOptions).map(function (elem) {
- return elem.value;
- });
- rendering_params.new_name = new_layer_name;
- rendering_params.symbol_type = symbol_choice.node().value;
- rendering_params.size = +document.getElementById('TwoStocks_waffle_size').value;
- rendering_params.nCol = +document.getElementById('TwoStocks_waffle_WidthRow').value;
- render_twostocks_waffle(layer, rendering_params);
- zoom_without_redraw();
- switch_accordion_section();
- handle_legend(new_layer_name);
- });
- },
- unfill: function unfill() {
- unfillSelectInput(document.getElementById('TwoStocks_waffle_symbol'));
- unfillSelectInput(document.getElementById('TwoStocks_fields'));
- unfillSelectInput(document.getElementById('TwoStocks_waffle_ratio'));
- document.getElementById('TwoStocks_fields').size = 2;
- document.getElementById('TwoStocks_fields').parentElement.style.marginBottom = '25px';
- section2.selectAll('.params').attr('disabled', true);
- }
-};
-
-function render_twostocks_waffle(layer, rendering_params) {
- var get_colors = function get_colors(nb) {
- var res = [];
- for (var i = 0; i < nb; i++) {
- res.push(randomColor());
- }
- return res;
- };
- var round = Math.round;
- var floor = Math.floor;
- var ratio = rendering_params.ratio,
- symbol_type = rendering_params.symbol_type,
- nCol = rendering_params.nCol,
- fields = rendering_params.fields,
- layer_to_add = rendering_params.new_name;
-
- var nbVar = fields.length;
- var ref_colors = void 0;
-
- var layer_id = encodeId(layer_to_add);
- _app.layer_to_id.set(layer_to_add, layer_id);
- _app.id_to_layer.set(layer_id, layer_to_add);
-
- if (!rendering_params.result_data) {
- ref_colors = get_colors(nbVar);
- result_data[layer_to_add] = [];
- var ref_layer_selection = map.select('#' + _app.layer_to_id.get(layer)).selectAll('path');
- var centroids = getCentroids(ref_layer_selection._groups[0]);
-
- ref_layer_selection.each(function (d, i) {
- var sum = 0;
- var c = [];
- var color = void 0;
- var r = { id: d.id, centroid: centroids[i] };
- for (var j = 0; j < nbVar; j++) {
- var field = fields[j];
- r[field] = +user_data[layer][i][field];
- var val = +user_data[layer][i][field] / ratio;
- sum += val;
- color = ref_colors[j];
- for (var ix = 0; ix < val; ix++) {
- c.push(color);
- }
- }
- r.colors = c;
- r.sum = sum;
- result_data[layer_to_add].push(r);
- });
- } else {
- ref_colors = rendering_params.ref_colors;
- result_data[layer_to_add] = JSON.parse(rendering_params.result_data);
- }
-
- var nb_features = result_data[layer_to_add].length;
- var new_layer = map.insert('g', '.legend').attr('id', layer_id).attr('class', 'layer');
-
- if (symbol_type === 'circle') {
- var r = rendering_params.size;
- for (var j = 0; j < result_data[layer_to_add].length; j++) {
- var centroid = result_data[layer_to_add][j].centroid;
- var group = new_layer.append('g');
- var sum = result_data[layer_to_add][j].sum;
- var _colors = result_data[layer_to_add][j].colors;
- for (var i = 0; i < sum; i++) {
- var t_x = round(i % nCol * 2 * r);
- var t_y = floor(floor(i / nCol) * 2 * r);
- group.append('circle').attrs({
- transform: 'translate(-' + t_x + ', -' + t_y + ')',
- cx: centroid[0],
- cy: centroid[1],
- r: r,
- id: ['waffle_', i, ' feature_', result_data[layer_to_add][j].id].join(''),
- fill: _colors[i]
- });
- }
- group.node().__data__ = result_data[layer_to_add][j];
- }
- } else if (symbol_type === 'rect') {
- var width = rendering_params.size;
- var offset = width / 5;
- for (var _j = 0; _j < result_data[layer_to_add].length; _j++) {
- var _centroid = result_data[layer_to_add][_j].centroid;
- var _group = new_layer.append('g');
- var _sum = result_data[layer_to_add][_j].sum;
- var _colors2 = result_data[layer_to_add][_j].colors;
- for (var _i3 = 0; _i3 < _sum; _i3++) {
- var _t_x = round(_i3 % nCol * width) + offset * round(_i3 % nCol);
- var _t_y = floor(floor(_i3 / nCol) * width) + offset * floor(_i3 / nCol);
- _group.append('rect').attrs({
- transform: 'translate(-' + _t_x + ', -' + _t_y + ')',
- x: _centroid[0],
- y: _centroid[1],
- width: width,
- height: width,
- id: ['waffle_', _i3, ' feature_', result_data[layer_to_add][_j].id].join(''),
- fill: _colors2[_i3]
- });
- }
- _group.node().__data__ = result_data[layer_to_add][_j];
- }
- }
-
- current_layers[layer_to_add] = {
- fill_color: ref_colors,
- n_features: nb_features,
- renderer: 'TwoStocksWaffle',
- symbol: symbol_type,
- rendered_field: fields,
- size: rendering_params.size,
- ratio: ratio,
- nCol: nCol,
- 'stroke-width-const': 0,
- is_result: true,
- ref_layer_name: layer,
- draggable: false
- };
- create_li_layer_elem(layer_to_add, nb_features, ['Point', 'waffle'], 'result');
- return;
-}
-
function fillMenu_PropSymbolChoro(layer) {
var dv2 = make_template_functionnality(section2);
var a = dv2.append('p').attr('class', 'params_section2');
a.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.choroprop.field1' }).html(i18next.t('app_page.func_options.choroprop.field1'));
- a.insert('select').attrs({ class: 'params', id: 'PropSymbolChoro_field_1' });
+ var field1_selec = a.insert('select').attrs({ class: 'params', id: 'PropSymbolChoro_field_1' });
var b = dv2.append('p').attr('class', 'params_section2');
b.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.choroprop.fixed_size' }).html(i18next.t('app_page.func_options.choroprop.fixed_size'));
- b.insert('input').attrs({
+ var ref_size = b.insert('input').attrs({
id: 'PropSymbolChoro_ref_size',
type: 'number',
class: 'params',
@@ -4772,17 +4517,17 @@ function fillMenu_PropSymbolChoro(layer) {
var c = dv2.append('p').attr('class', 'params_section2');
c.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.choroprop.on_value' }).html(i18next.t('app_page.func_options.choroprop.on_value'));
- c.insert('input').styles({ width: '100px', 'margin-left': '10px' }).attrs({ type: 'number', class: 'params', id: 'PropSymbolChoro_ref_value' }).attrs({ min: 0.1, step: 0.1 });
+ var ref_value = c.insert('input').styles({ width: '100px', 'margin-left': '10px' }).attrs({ type: 'number', class: 'params', id: 'PropSymbolChoro_ref_value' }).attrs({ min: 0.1, step: 0.1 });
// Other symbols could probably easily be proposed :
var d = dv2.append('p').attr('class', 'params_section2');
d.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.choroprop.symbol_type' }).html(i18next.t('app_page.func_options.choroprop.symbol_type'));
- d.insert('select').attrs({ class: 'params i18n', id: 'PropSymbolChoro_symbol_type' });
+ var symb_selec = d.insert('select').attrs({ class: 'params i18n', id: 'PropSymbolChoro_symbol_type' });
var e = dv2.append('p').attr('class', 'params_section2');
e.append('span').attrs({ class: 'i18n', 'data-i18n': '[html]app_page.func_options.choroprop.field2' }).html(i18next.t('app_page.func_options.choroprop.field2'));
- e.insert('select').attrs({ class: 'params', id: 'PropSymbolChoro_field_2' });
+ var field2_selec = e.insert('select').attrs({ class: 'params', id: 'PropSymbolChoro_field_2' });
var discr_section = dv2.insert('p').style('margin', 'auto');
discr_section.insert('span').attr('id', 'container_sparkline_propsymbolchoro').styles({ margin: '16px 50px 0px 4px', float: 'right' });
@@ -5041,16 +4786,12 @@ var fields_PropSymbolChoro = {
opt_nb_class = Math.floor(1 + 3.3 * Math.log10(user_data[layer].length)),
conf_disc_box = void 0;
- if (self.rendering_params[selected_field]) {
- conf_disc_box = display_discretization(layer, selected_field, self.rendering_params[selected_field].nb_class, { schema: self.rendering_params[selected_field].schema,
- colors: self.rendering_params[selected_field].colors,
- no_data: self.rendering_params[selected_field].no_data,
- type: self.rendering_params[selected_field].type,
- breaks: self.rendering_params[selected_field].breaks,
- extra_options: self.rendering_params[selected_field].extra_options });
- } else {
- conf_disc_box = display_discretization(layer, selected_field, opt_nb_class, { type: 'quantiles' });
- }
+ if (self.rendering_params[selected_field]) conf_disc_box = display_discretization(layer, selected_field, self.rendering_params[selected_field].nb_class, { schema: self.rendering_params[selected_field].schema,
+ colors: self.rendering_params[selected_field].colors,
+ no_data: self.rendering_params[selected_field].no_data,
+ type: self.rendering_params[selected_field].type,
+ breaks: self.rendering_params[selected_field].breaks,
+ extra_options: self.rendering_params[selected_field].extra_options });else conf_disc_box = display_discretization(layer, selected_field, opt_nb_class, { type: 'quantiles' });
conf_disc_box.then(function (confirmed) {
if (confirmed) {
@@ -5287,8 +5028,7 @@ var fields_Typo = {
for (var i = nb_fields - 1; i > -1; --i) {
field_selec.removeChild(field_selec.children[i]);
- }
- section2.selectAll('.params').attr('disabled', true);
+ }section2.selectAll('.params').attr('disabled', true);
},
rendering_params: {}
};
@@ -5427,7 +5167,7 @@ var fields_Choropleth = {
};
choro_mini_choice_disc.html(i18next.t('app_page.common.jenks') + ', ' + i18next.t('app_page.common.class', { count: nb_class }));
ok_button.attr('disabled', null);
- mg_valid_disc.attr('src', '/static/img/Light_green_check.png');
+ img_valid_disc.attr('src', '/static/img/Light_green_check.png');
});
ico_quantiles.on('click', function () {
@@ -5880,10 +5620,10 @@ var fields_Anamorphose = {
var ref = d_val[0][1] / d_val[0][2];
d_val[0].push(1);
- for (var _i4 = 0; _i4 < nb_ft; ++_i4) {
- var _val = d_val[_i4][1] / d_val[_i4][2];
+ for (var _i3 = 0; _i3 < nb_ft; ++_i3) {
+ var _val = d_val[_i3][1] / d_val[_i3][2];
var scale = sqrt(_val / ref);
- d_val[_i4].push(scale);
+ d_val[_i3].push(scale);
}
d_val.sort(function (a, b) {
return a[0] - b[0];
@@ -5921,8 +5661,8 @@ var fields_Anamorphose = {
if (!current_layers[layer].original_fields.has(field_name)) {
var table = user_data[layer],
to_send = var_to_send[field_name];
- for (var _i5 = 0, i_len = table.length; _i5 < i_len; ++_i5) {
- to_send.push(+table[_i5][field_name]);
+ for (var _i4 = 0, i_len = table.length; _i4 < i_len; ++_i4) {
+ to_send.push(+table[_i4][field_name]);
}
}
_formToSend.append('json', JSON.stringify({
@@ -6456,8 +6196,8 @@ function prepare_categories_array(layer_name, selected_field, col_map) {
cats.push({ name: k, display_name: k, nb_elem: v[0], color: randomColor() });
});
col_map = new Map();
- for (var _i6 = 0; _i6 < cats.length; _i6++) {
- col_map.set(cats[_i6].name, [cats[_i6].color, cats[_i6].name, cats[_i6].nb_elem]);
+ for (var _i5 = 0; _i5 < cats.length; _i5++) {
+ col_map.set(cats[_i5].name, [cats[_i5].color, cats[_i5].name, cats[_i5].nb_elem]);
}
} else {
col_map.forEach(function (v, k) {
@@ -7516,8 +7256,8 @@ function render_FlowMap(field_i, field_j, field_fij, name_join_field, disc_type,
var val = +fij_values[i];
links_byId.push([i, val, sizes[serie.getClass(val)]]);
}
- for (var _i7 = 0; _i7 < nb_class; ++_i7) {
- current_layers[new_layer_name].breaks.push([[user_breaks[_i7], user_breaks[_i7 + 1]], sizes[_i7]]);
+ for (var _i6 = 0; _i6 < nb_class; ++_i6) {
+ current_layers[new_layer_name].breaks.push([[user_breaks[_i6], user_breaks[_i6 + 1]], sizes[_i6]]);
}
layer_to_render.style('fill-opacity', 0).style('stroke-opacity', 0.8).style('stroke-width', function (d, i) {
return links_byId[i][2];
@@ -7775,7 +7515,10 @@ var drag_elem_geo2 = d3.drag().filter(function () {
d3.event.sourceEvent.stopPropagation();
d3.event.sourceEvent.preventDefault();
handle_click_hand('lock');
+ var zoom = svg_map.__zoom;
var centroid = path.centroid(this.__data__.geometry);
+ centroid[0] = centroid[0] * zoom.k + zoom.x;
+ centroid[1] = centroid[1] * zoom.k + zoom.y;
map.append('rect').attrs({ x: centroid[0] - 2, y: centroid[1] - 2, height: 4, width: 4, id: 'ref_symbol_location' }).style('fill', 'red');
}).on('end', function () {
if (d3.event.subject && !d3.event.subject.map_locked) {
@@ -11213,8 +10956,6 @@ function handle_click_layer(layer_name) {
createStyleBoxLabel(layer_name);
} else if (current_layers[layer_name].renderer && current_layers[layer_name].renderer === 'TypoSymbols') {
createStyleBoxTypoSymbols(layer_name);
- } else if (current_layers[layer_name].renderer && current_layers[layer_name].renderer === 'TwoStocksWaffle') {
- createStyleBoxWaffle(layer_name);
} else {
createStyleBox(layer_name);
}
@@ -11654,7 +11395,7 @@ function createStyleBoxGraticule(layer_name) {
}
function redraw_legend(type_legend, layer_name, field) {
- var _ref = type_legend === 'default' ? [['#legend_root.lgdf_', _app.layer_to_id.get(layer_name)].join(''), createLegend_choro] : type_legend === 'line_class' ? [['#legend_root_lines_class.lgdf_', _app.layer_to_id.get(layer_name)].join(''), createLegend_discont_links] : type_legend === 'line_symbol' ? [['#legend_root_lines_symbol.lgdf_', _app.layer_to_id.get(layer_name)].join(''), createLegend_line_symbol] : type_legend === 'waffle' ? [['#legend_root_waffle.lgdf_', _app.layer_to_id.get(layer_name)].join(''), createLegend_waffle] : undefined,
+ var _ref = type_legend === 'default' ? [['#legend_root.lgdf_', _app.layer_to_id.get(layer_name)].join(''), createLegend_choro] : type_legend === 'line_class' ? [['#legend_root_lines_class.lgdf_', _app.layer_to_id.get(layer_name)].join(''), createLegend_discont_links] : type_legend === 'line_symbol' ? [['#legend_root_lines_symbol.lgdf_', _app.layer_to_id.get(layer_name)].join(''), createLegend_line_symbol] : undefined,
_ref2 = _slicedToArray(_ref, 2),
selector = _ref2[0],
func = _ref2[1];
@@ -11678,9 +11419,6 @@ function redraw_legend(type_legend, layer_name, field) {
lgd.remove();
func(layer_name, field, lgd_title, lgd_subtitle, boxgap, rect_fill_value, rounding_precision, no_data_txt, note);
- } else if (type_legend === 'waffle') {
- lgd.remove();
- func(layer_name, field, lgd_title, lgd_subtitle, rect_fill_value, note);
} else {
lgd.remove();
func(layer_name, current_layers[layer_name].rendered_field, lgd_title, lgd_subtitle, rect_fill_value, rounding_precision, note);
@@ -12423,132 +12161,6 @@ function get_fields_name(layer_name) {
}
}
-function createStyleBoxWaffle(layer_name) {
- check_remove_existing_box('.styleBox');
- var round = Math.round;
- var floor = Math.floor;
- var layer_id = _app.layer_to_id.get(layer_name),
- g_lyr_name = '#' + layer_id,
- ref_layer_name = current_layers[layer_name].ref_layer_name,
- symbol = current_layers[layer_name].symbol,
- fields = current_layers[layer_name].rendered_field,
- selection = map.select(g_lyr_name);
-
- var previous_params = {
- fill_opacity: selection.style('fill-opacity'),
- ref_colors: [].concat(current_layers[layer_name].fill_color),
- size: current_layers[layer_name].size,
- nCol: current_layers[layer_name].nCol
- };
-
- make_confirm_dialog2('styleBox', layer_name, { top: true, widthFitContent: true, draggable: true }).then(function (confirmed) {
- if (confirmed) {
- redraw_legend('waffle', layer_name, fields);
- // Change the layer name if requested :
- if (new_layer_name !== layer_name) {
- change_layer_name(layer_name, check_layer_name(new_layer_name.trim()));
- }
- } else {
- current_layers[layer_name].fill_color = previous_params.ref_colors;
- current_layers[layer_name].size = previous_params.size;
- selection.style('fill-opacity', previous_params.fill_opacity);
- }
- zoom_without_redraw();
- });
-
- var container = document.querySelector('.twbs > .styleBox');
- var popup = d3.select(container).select('.modal-content').style('width', '300px').select('.modal-body');
-
- popup.append('p').styles({ 'text-align': 'center', color: 'grey' }).html([i18next.t('app_page.layer_style_popup.rendered_field', { field: fields.join(' ,') }), i18next.t('app_page.layer_style_popup.reference_layer', { layer: ref_layer_name })].join(''));
-
- var fill_opacity_section = popup.append('p').attr('class', 'line_elem').attr('id', 'fill_color_section');
-
- fill_opacity_section.append('span').html(i18next.t('app_page.layer_style_popup.fill_opacity'));
- fill_opacity_section.insert('input').attrs({ type: 'range', min: 0, max: 1, step: 0.1, value: previous_params.fill_opacity }).styles({ width: '58px', 'vertical-align': 'middle', display: 'inline', float: 'right' }).on('change', function () {
- selection.style('fill-opacity', +this.value);
- fill_opacity_section.select('#fill_opacity_txt').html(+this.value * 100 + '%');
- });
-
- fill_opacity_section.append('span').attr('id', 'fill_opacity_txt').style('float', 'right').html(+previous_params.fill_opacity * 100 + '%');
-
- var ref_colors_section = popup.append('div').attr('id', 'ref_colors_section').style('clear', 'both');
- ref_colors_section.append('p').html(i18next.t('app_page.layer_style_popup.ref_colors'));
-
- var _loop = function _loop(i) {
- var p = ref_colors_section.append('p').style('margin', '15px 5px');
- p.append('span').html(current_layers[layer_name].rendered_field[i]);
- p.insert('input').attr('type', 'color').attr('id', i).attr('value', current_layers[layer_name].fill_color[i]).style('float', 'right').on('change', function () {
- var col = rgb2hex(this.value);
- var to_replace = current_layers[layer_name].fill_color[i];
- current_layers[layer_name].fill_color[i] = col;
- selection.selectAll(symbol).each(function (d, i) {
- if (rgb2hex(this.getAttribute('fill')) === to_replace) {
- this.setAttribute('fill', col);
- }
- });
- });
- };
-
- for (var i = 0; i < current_layers[layer_name].fill_color.length; i++) {
- _loop(i);
- }
-
- var size_section = popup.append('p').attr('class', 'line_elem').attr('id', 'size_section').style('clear', 'both');;
-
- size_section.append('span').html(i18next.t('app_page.layer_style_popup.ref_size'));
- size_section.insert('input').attrs({ type: 'range', min: 1, max: 40, step: 1, value: previous_params.size }).styles({ width: '58px', 'vertical-align': 'middle', display: 'inline', float: 'right' }).on('change', function () {
- var val = +this.value;
- var nCol = current_layers[layer_name].nCol;
- current_layers[layer_name].size = val;
- selection.selectAll('g').selectAll(symbol).each(function (d, i) {
- if (symbol == 'circle') {
- var t_x = round(i % nCol * 2 * val);
- var t_y = floor(floor(i / nCol) * 2 * val);
- this.setAttribute('r', val);
- this.setAttribute('transform', 'translate(-' + t_x + ', -' + t_y + ')');
- } else {
- var offset = val / 5;
- var _t_x = round(i % nCol * val) + offset * round(i % nCol);
- var _t_y = floor(floor(i / nCol) * val) + offset * floor(i / nCol);
- this.setAttribute('width', val);
- this.setAttribute('height', val);
- this.setAttribute('transform', 'translate(-' + _t_x + ', -' + _t_y + ')');
- }
- });
- size_section.select('#size_section_txt').html(this.value + ' px');
- });
- size_section.append('span').attr('id', 'size_section_txt').style('float', 'right').html(previous_params.size + ' px');
-
- var width_row_section = popup.append('p').attr('class', 'line_elem').attr('id', 'width_row_section');
-
- width_row_section.append('span').html(i18next.t('app_page.func_options.twostocks.waffle_width_rows'));
- width_row_section.insert('input').attrs({ type: 'range', min: 1, max: 10, step: 1, value: previous_params.nCol }).styles({ width: '58px', 'vertical-align': 'middle', display: 'inline', float: 'right' }).on('change', function () {
- var val = +this.value;
- var size = current_layers[layer_name].size;
- current_layers[layer_name].nCol = val;
- selection.selectAll('g').selectAll(symbol).each(function (d, i) {
- if (symbol === 'circle') {
- var t_x = round(i % val * 2 * size);
- var t_y = floor(floor(i / val) * 2 * size);
- this.setAttribute('transform', 'translate(-' + t_x + ', -' + t_y + ')');
- } else {
- var offset = size / 5;
- var _t_x2 = round(i % val * size) + offset * round(i % val);
- var _t_y2 = floor(floor(i / val) * size) + offset * floor(i / val);
- this.setAttribute('transform', 'translate(-' + _t_x2 + ', -' + _t_y2 + ')');
- }
- });
- width_row_section.select('#width_row_text').html(this.value);
- });
- width_row_section.append('span').attr('id', 'width_row_text').style('float', 'right').html(previous_params.nCol);
-
- var new_layer_name = layer_name;
- var new_name_section = make_change_layer_name_section(popup, layer_name);
- new_name_section.on('change', function () {
- new_layer_name = this.value;
- });
-}
-
function createStyleBox_ProbSymbol(layer_name) {
check_remove_existing_box('.styleBox');
var layer_id = _app.layer_to_id.get(layer_name),
@@ -14809,8 +14421,6 @@ function createLegend(layer, title) {
el2 = type_layer === 'Line' ? createLegend_line_symbol(layer, field, title, field) : createLegend_symbol(layer, field, title, field);
} else if (renderer.indexOf('PropSymbols') != -1) {
el = type_layer === 'Line' ? createLegend_line_symbol(layer, field, title, field) : createLegend_symbol(layer, field, title, field);
- } else if (renderer.indexOf('TwoStocksWaffle') != -1) {
- el = createLegend_waffle(layer, field, title);
} else {
swal('Oops..', i18next.t('No legend available for this representation') + '.
' + i18next.t('Want to make a suggestion ?'), 'warning');
return;
@@ -15005,66 +14615,6 @@ var drag_legend_func = function drag_legend_func(legend_group) {
});
};
-function createLegend_waffle(layer, fields, title, subtitle, rect_fill_value, note_bottom) {
- var space_elem = 18;
- var boxheight = 18;
- var boxwidth = 18;
- var boxgap = 12;
- var xpos = 30;
- var ypos = 30;
- var y_pos2 = ypos + space_elem;
- var tmp_class_name = ['legend', 'legend_feature', 'lgdf_' + _app.layer_to_id.get(layer)].join(' ');
- var nbVar = fields.length;
- var ref_colors = current_layers[layer].fill_color;
- var last_size = void 0;
- var last_pos = void 0;
-
- var legend_root = map.insert('g').attrs({
- id: 'legend_root_waffle',
- class: tmp_class_name,
- transform: 'translate(0,0)',
- layer_name: layer
- }).styles({
- cursor: 'grab',
- font: '11 px "Enriqueta",arial,serif'
- });
-
- var rect_under_legend = legend_root.insert('rect');
-
- legend_root.insert('text').attrs(subtitle != '' ? { id: 'legendtitle', x: xpos + space_elem, y: ypos } : { id: 'legendtitle', x: xpos + space_elem, y: ypos + 15 }).style('font', 'bold 12px "Enriqueta", arial, serif').text(title || '');
-
- legend_root.insert('text').attrs({ 'id': 'legendsubtitle', x: xpos + space_elem, y: ypos + 15 }).style('font', 'italic 12px "Enriqueta", arial, serif').text(subtitle);
-
- var fields_colors = [];
- for (var i = 0; i < nbVar; i++) {
- fields_colors.push([fields[i], ref_colors[i]]);
- }
-
- var legend_elems = legend_root.selectAll('.legend').append('g').data(fields_colors).enter().insert('g').attr('class', function (d, i) {
- return 'lg legend_' + i;
- });
-
- legend_elems.append('rect').attr('x', xpos + boxwidth).attr('y', function (d, i) {
- last_pos = y_pos2 + i * boxgap + i * boxheight;
- return last_pos;
- }).attrs({ width: boxwidth, height: boxheight }).styles(function (d) {
- return { fill: d[1], stroke: d[1] };
- });
-
- legend_elems.append('text').attr('x', xpos + boxwidth * 2 + 10).attr('y', function (d, i) {
- return y_pos2 + i * boxheight + i * boxgap + boxheight * 2 / 3;
- }).styles({ 'alignment-baseline': 'middle', 'font-size': '10px' }).text(function (d) {
- return d[0];
- });
-
- legend_root.call(drag_legend_func(legend_root));
-
- legend_root.append('g').insert('text').attrs({ id: 'legend_bottom_note', x: xpos + space_elem, y: last_pos + 2 * space_elem }).text(note_bottom != null ? note_bottom : '');
- make_underlying_rect(legend_root, rect_under_legend, rect_fill_value);
- make_legend_context_menu(legend_root, layer);
- return legend_root;
-}
-
function createLegend_discont_links(layer, field, title, subtitle, rect_fill_value, rounding_precision, note_bottom) {
var space_elem = 18,
boxgap = 12,
@@ -15288,9 +14838,6 @@ function createLegend_symbol(layer, field, title, subtitle) {
if (ref_symbols_params[3].value == 0) {
ref_symbols_params.pop();
}
- if (ref_symbols_params[2].value == 0) {
- ref_symbols_params.pop();
- }
var legend_elems = legend_root.selectAll('.legend').append('g').data(ref_symbols_params).enter().insert('g').attr('class', function (d, i) {
return 'lg legend_' + i;
});
@@ -15304,7 +14851,7 @@ function createLegend_symbol(layer, field, title, subtitle) {
var last_pos = y_pos2;
- if (nested === 'false') {
+ if (nested == 'false') {
if (symbol_type === 'circle') {
legend_elems.append('circle').styles({ fill: color_symb_lgd, stroke: 'rgb(0, 0, 0)', 'fill-opacity': 1 }).attrs(function (d, i) {
last_pos = i * boxgap + d.size + last_pos + last_size;
@@ -15349,7 +14896,7 @@ function createLegend_symbol(layer, field, title, subtitle) {
return round_value(d.value, rounding_precision).toLocaleString();
});
}
- } else if (nested === 'true') {
+ } else if (nested == 'true') {
if (symbol_type === 'circle') {
legend_elems.append('circle').attrs(function (d) {
return {
@@ -15720,7 +15267,7 @@ function display_box_value_symbol(layer_name) {
});
box_body.append('div').styles({ clear: 'both', 'text-align': 'center' }).append('p').styles({ 'text-align': 'center' }).insert('span').attrs({ class: 'button_st3' }).html(i18next.t('app_page.legend_symbol_values_box.reset')).on('click', function () {
current_layers[layer_name].size_legend_symbol = undefined;
- redraw_sample_legend(original_values);
+ redraw_sample_legend();
});
val1.node().value = values_to_use[0].value;
val2.node().value = values_to_use[1].value;
@@ -15834,8 +15381,8 @@ function createlegendEditBox(legend_id, layer_name) {
}
if (legend_id == 'legend_root_symbol') {
- var choice_break_value_section1 = box_body.insert('p').styles({ 'text-align': 'center', 'margin-top': '25px !important' });
- choice_break_value_section1.append('span').attr('class', 'button_disc').styles({ cursor: 'pointer' }).html(i18next.t('app_page.legend_style_box.choice_break_symbol')).on('click', function () {
+ var choice_break_value_section1 = box_body.insert('p');
+ choice_break_value_section1.append('span').styles({ cursor: 'pointer' }).html(i18next.t('app_page.legend_style_box.choice_break_symbol')).on('click', function () {
container.modal.hide();
display_box_value_symbol(layer_name).then(function (confirmed) {
container.modal.show();
@@ -15844,7 +15391,7 @@ function createlegendEditBox(legend_id, layer_name) {
}
});
});
- } else if (current_layers[layer_name].renderer !== 'TwoStocksWaffle' && current_layers[layer_name].renderer !== 'Categorical' && current_layers[layer_name].renderer !== 'TypoSymbols' && !(current_layers[layer_name].renderer === 'PropSymbolsTypo' && legend_id.indexOf('2'))) {
+ } else if (current_layers[layer_name].renderer != 'Categorical' && current_layers[layer_name].renderer != 'TypoSymbols' && !(current_layers[layer_name].renderer == 'PropSymbolsTypo' && legend_id.indexOf('2'))) {
// Float precision for label in the legend
// (actually it's not really the float precision but an estimation based on
// the string representation of only two values but it will most likely do the job in many cases)
@@ -16445,18 +15992,6 @@ function get_map_template() {
}
layer_style_i.data_labels = _features2;
layer_style_i.current_position = current_position;
- } else if (current_layer_prop.renderer === 'TwoStocksWaffle') {
- var _type_symbol2 = current_layer_prop.symbol;
- selection = map.select('#' + layer_id).selectAll(_type_symbol2);
- layer_style_i.symbol = _type_symbol2;
- layer_style_i.rendered_field = current_layer_prop.rendered_field;
- layer_style_i.renderer = current_layer_prop.renderer;
- layer_style_i.size = current_layer_prop.size;
- layer_style_i.fill_color = current_layer_prop.fill_color;
- layer_style_i.ratio = current_layer_prop.ratio;
- layer_style_i.nCol = current_layer_prop.nCol;
- layer_style_i.ref_layer_name = current_layer_prop.ref_layer_name;
- layer_style_i.result_data = JSON.stringify(result_data[layer_name]);
} else {
selection = map.select('#' + layer_id).selectAll('path');
}
@@ -17027,19 +16562,6 @@ function apply_user_preferences(json_pref) {
// TODO : apply the same thing as with PropSymbol for setting label at their original positions :
render_label(null, _rendering_params, { data: _layer.data_labels, current_position: _layer.current_position });
layer_id = _app.layer_to_id.get(layer_name);
- } else if (_layer.renderer && _layer.renderer === 'TwoStocksWaffle') {
- console.log(_layer);
- render_twostocks_waffle(undefined, {
- nCol: _layer.nCol,
- ratio: _layer.ratio,
- symbol_type: _layer.symbol,
- new_name: layer_name,
- size: _layer.size,
- ref_colors: _layer.fill_color,
- fields: _layer.rendered_field,
- result_data: _layer.result_data
- });
- layer_id = _app.layer_to_id.get(layer_name);
} else if (_layer.renderer && _layer.renderer.startsWith('TypoSymbol')) {
var symbols_map = new Map(_layer.symbols_map);
var new_layer_data = {
diff --git a/magrit_app/static/locales/en/translation.474b5ea2bfbc.json b/magrit_app/static/locales/en/translation.85465fb4e4b8.json
similarity index 98%
rename from magrit_app/static/locales/en/translation.474b5ea2bfbc.json
rename to magrit_app/static/locales/en/translation.85465fb4e4b8.json
index e6a7c1f80..549b3c26e 100755
--- a/magrit_app/static/locales/en/translation.474b5ea2bfbc.json
+++ b/magrit_app/static/locales/en/translation.85465fb4e4b8.json
@@ -283,8 +283,7 @@
"flow": "Link/Flow map",
"discont": "Discontinuities map",
"typo": "Categorical map",
- "typosymbol": "Pictogram map",
- "two_stocks": "Waffle/Treemap map"
+ "typosymbol": "Pictogram map"
},
"projection_box":{
"choice_projection": "Choose a projection",
@@ -560,9 +559,7 @@
"generate_labels": "Generate labels for this layer ...",
"field_label": "Select a field",
"layer_shadow": "Add a shadow",
- "let_draggable": "Allow moving symbols",
- "ref_colors": "Colors:",
- "ref_size": "Symbol size"
+ "let_draggable": "Allow moving symbols"
},
"lm_buttons":{
"zoom+": "Zoom in",
@@ -671,15 +668,6 @@
"on_value": "on value ...",
"symbol_type": "Symbol type",
"field2": "Field 2 (symbol color)"
- },
- "twostocks": {
- "fields": "Fields",
- "symbol_choice": "Symbol type",
- "waffle_size_circle": "Circle radius",
- "waffle_size_square": "Square size",
- "waffle_width_rows": "Width rows",
- "waffle_ratio": "Ratio",
- "waffle_ratio_units": " units per cell"
}
}
},
diff --git a/magrit_app/static/locales/es/translation.474b5ea2bfbc.json b/magrit_app/static/locales/es/translation.85465fb4e4b8.json
similarity index 100%
rename from magrit_app/static/locales/es/translation.474b5ea2bfbc.json
rename to magrit_app/static/locales/es/translation.85465fb4e4b8.json
diff --git a/magrit_app/static/locales/fr/translation.474b5ea2bfbc.json b/magrit_app/static/locales/fr/translation.85465fb4e4b8.json
similarity index 98%
rename from magrit_app/static/locales/fr/translation.474b5ea2bfbc.json
rename to magrit_app/static/locales/fr/translation.85465fb4e4b8.json
index f58fb8055..b8b98f864 100755
--- a/magrit_app/static/locales/fr/translation.474b5ea2bfbc.json
+++ b/magrit_app/static/locales/fr/translation.85465fb4e4b8.json
@@ -284,8 +284,7 @@
"flow": "Carte des liens",
"discont": "Carte des discontinuités",
"typo": "Carte qualitative",
- "typosymbol": "Carte qualitative avec utilisation de pictogrammes",
- "two_stocks": "Carte de stocks (2 ou plus)"
+ "typosymbol": "Carte qualitative avec utilisation de pictogrammes"
},
"projection_box":{
"choice_projection": "Choix d'une projection",
@@ -560,9 +559,7 @@
"generate_labels": "Génération de labels pour cette couche...",
"field_label": "Sélection du champ à utiliser",
"layer_shadow": "Ajouter une ombre à la couche",
- "let_draggable": "Autoriser le déplacement des symboles",
- "ref_colors": "Couleurs:",
- "ref_size": "Taille du symbole"
+ "let_draggable": "Autoriser le déplacement des symboles"
},
"lm_buttons":{
"zoom+": "Zoom positif",
@@ -672,15 +669,6 @@
"on_value": "sur la valeur ... ",
"symbol_type": "Type de symbole ",
"field2": "Champ à utiliser
(couleur du symbole)"
- },
- "twostocks": {
- "fields": "Champs",
- "symbol_choice": "Type de symbole",
- "waffle_size_circle": "Rayon du symbole",
- "waffle_size_square": "Taille du symbole",
- "waffle_width_rows": "Largeur (nombre de symboles)",
- "waffle_ratio": "Ratio",
- "waffle_ratio_units": " unités par carreau"
}
}
},
diff --git a/magrit_app/templates/modules.html b/magrit_app/templates/modules.html
index 10affb44a..1fd3b7255 100755
--- a/magrit_app/templates/modules.html
+++ b/magrit_app/templates/modules.html
@@ -7,7 +7,7 @@