Skip to content

Commit

Permalink
Feature/line width (#523)
Browse files Browse the repository at this point in the history
  • Loading branch information
mpolidori committed Feb 26, 2022
1 parent 051e97c commit fc75293
Show file tree
Hide file tree
Showing 9 changed files with 200 additions and 33 deletions.
17 changes: 9 additions & 8 deletions ckanext/querytool/controllers/querytool.py
Original file line number Diff line number Diff line change
Expand Up @@ -429,23 +429,24 @@ def edit_visualizations(self, querytool=None, data=None,
visualization['plotly'] = \
data.get('chart_field_plotly_{}'.format(id))

def line_type_search(data, id):
base_id = 'chart_field_line_type_{}_'.format(id)
def line_attr_search(data, id, line_attr):
base_id = 'chart_field_{}_{}_'.format(line_attr, id)
line_count = len([
True for key, value in data.items()
if base_id in key
])
line_types = []
line_attrs = []

for i in range(1, line_count + 1):
line_type_id = base_id + str(i)
line_attr_id = base_id + str(i)

if line_type_id in data:
line_types.append(data[line_type_id])
if line_attr_id in data:
line_attrs.append(data[line_attr_id])

return ','.join(line_types)
return ','.join(line_attrs)

visualization['line_types'] = line_type_search(data, id)
visualization['line_types'] = line_attr_search(data, id, 'line_type')
visualization['line_widths'] = line_attr_search(data, id, 'line_width')

bar_width = data.get('chart_field_bar_width_{}'.format(id))

Expand Down
2 changes: 1 addition & 1 deletion ckanext/querytool/fanstatic/css/main.css

Large diffs are not rendered by default.

127 changes: 113 additions & 14 deletions ckanext/querytool/fanstatic/javascript/dist/modules/viz-preview.js

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion ckanext/querytool/fanstatic/javascript/vitals.js
Original file line number Diff line number Diff line change
Expand Up @@ -746,7 +746,7 @@ $(document).ready(function(){
$(this).closest('.accordion').find(".color-accordion").removeClass('hidden')
}

if(['line', 'area', 'spline'].includes(selected)) {
if(['line', 'spline'].includes(selected)) {
$(this).closest('.accordion').find(".line-accordion").removeClass('hidden')
} else {
$(this).closest('.accordion').find(".line-accordion").addClass('hidden')
Expand Down
33 changes: 33 additions & 0 deletions ckanext/querytool/fanstatic/less/main.less
Original file line number Diff line number Diff line change
Expand Up @@ -252,3 +252,36 @@ body {
margin-bottom: 10px;
}

.line_type_label {
width:120px;
}

.custom_chart_select, #chart_field_line_type_1_1 {
margin-right:10px;
width:120px;
}


.line-width-type select {
margin-right:10px;
width:120px;
}

.header-labels {
text-align: right;

#lbl-1 {
text-align: left;
width: 128px;
display: inline-block;
margin-bottom: 10px;
font-weight: bold;
}

#lbl-2 {
text-align: left;
width: 130px;
display: inline-block;
font-weight: bold;
}
}
33 changes: 26 additions & 7 deletions ckanext/querytool/templates/ajax_snippets/chart_item.html
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@
</div>

{# Line Chart additional setup #}
{% if selected_chart_type in ['line', 'spline', 'area'] %}
{% if selected_chart_type in ['line', 'spline'] %}
{% set hide_line_options = '' %}
{% else %}
{% set hide_line_options = 'hidden' %}
Expand All @@ -179,16 +179,27 @@


<div id="accordion_{{ chart_id }}_line_plotly" class="accordion-body collapse">
<div class="accordion-inner">
<div class="accordion-inner line-width-type">

<div class="header-labels">
<label id="lbl-1">Type</label>
<label id="lbl-2">Width</label>
</div>

{% set line_types = '' %}
{% set line_types_selection = [] %}
{% set line_widths = '' %}
{% set line_widths_selection = [] %}

{% if chart %}
{% if chart.line_types %}
{% set line_types = chart.line_types %}
{% set line_types_selection = chart.line_types.split(',') %}
{% endif %}
{% if chart.line_widths %}
{% set line_widths = chart.line_widths %}
{% set line_widths_selection = chart.line_widths.split(',') %}
{% endif %}
{% else %}
<p id="line_type_empty_text">Select and update data to list lines.</p>
{% endif %}
Expand All @@ -202,14 +213,20 @@
{% set line_type_title = 'Line Type' %}
{% endif %}

<div class="control-group control-select">
<label class="control-label" for="chart_field_line_type_{{ n }}_{{ line_count }}">{{ line_type_title }}</label>
<select id='chart_field_line_type_{{ n }}_{{ line_count }}' name='chart_field_line_type_{{ n }}_{{ line_count }}'>
<option value="solid" {% if line_types %}{{ 'selected' if plotly|length >= line_count and line_types_selection[line_count - 1] == 'solid' }}{{ else }}{{ 'selected' }}{% endif %}>Solid</option>
<div class="control-group control-select ">
<label class="control-label line_type_label" for="chart_field_line_type_{{ n }}_{{ line_count }}">{{ line_type_title }} </label>
<select class="custom_chart_select" id='chart_field_line_type_{{ n }}_{{ line_count }}' name='chart_field_line_type_{{ n }}_{{ line_count }}' style='width:120px'>
<option value="solid" {% if line_types %}{{ 'selected' if plotly|length >= line_count and line_types_selection[line_count - 1] == 'solid' }}{% endif %}>Solid</option>
<option value="dash" {% if line_types %}{{ 'selected' if plotly|length >= line_count and line_types_selection[line_count - 1] == 'dash' }}{% endif %}>Dashed</option>
<option value="dashdot" {% if line_types %}{{ 'selected' if plotly|length >= line_count and line_types_selection[line_count - 1] == 'dashdot' }}{% endif %}>Dash Dot</option>
<option value="dot" {% if line_types %}{{ 'selected' if plotly|length >= line_count and line_types_selection[line_count - 1] == 'dot' }}{% endif %}>Dotted</option>
</select>

<select class="custom_chart_select" id='chart_field_line_width_{{ n }}_{{ line_count }}' name='chart_field_line_width_{{ n }}_{{ line_count }}' style='width:120px'>
<option value="2" {% if line_widths %}{{ 'selected' if plotly|length >= line_count and line_widths_selection[line_count - 1] == '2' }}{% endif %}>Slim</option>
<option value="4" {% if line_widths %}{{ 'selected' if plotly|length >= line_count and line_widths_selection[line_count - 1] == '4' or line_widths_selection[line_count - 1] not in ['2', '6'] }}{% endif %}>Regular</option>
<option value="6" {% if line_widths %}{{ 'selected' if plotly|length >= line_count and line_widths_selection[line_count - 1] == '6' }}{% endif %}>Wide</option>
</select>
</div>

{% set line_count = line_count + 1 %}
Expand Down Expand Up @@ -1025,6 +1042,7 @@
{% set axis_min = chart.axis_min %}
{% set axis_max = chart.axis_max %}
{% set line_types = chart.line_types %}
{% set line_widths = chart.line_widths %}
{% endif %}
{% snippet 'ajax_snippets/visualization_item.html',
type='chart',
Expand Down Expand Up @@ -1079,7 +1097,8 @@
axis_range = axis_range,
axis_min = axis_min,
axis_max = axis_max,
line_types = line_types
line_types = line_types,
line_widths = line_widths
%}
</div>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,6 @@
data-module-axis_min="{{ axis_min }}"
data-module-axis_max="{{ axis_max }}"
data-module-line_types="{{ line_types }}"
data-module-line_widths="{{ line_widths }}"
>
</div>
3 changes: 2 additions & 1 deletion ckanext/querytool/templates/querytool/public/read.html
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,8 @@ <h3 id="item-title-{{chart_id}}" style="display:none">{{ item.map_custom_title_f
axis_range = item.axis_range,
axis_min = item.axis_min,
axis_max = item.axis_max,
line_types = item.line_types
line_types = item.line_types,
line_widths = item.line_widths
%}
{% endif %}
{% if item.type == 'text_box' %}
Expand Down

0 comments on commit fc75293

Please sign in to comment.