From bb8a400860ee5c837450db4c5879885eef5a47e7 Mon Sep 17 00:00:00 2001 From: Alex Arnaud <alex.arnaud@biblibre.com> Date: Thu, 15 Sep 2016 12:21:39 +0000 Subject: [PATCH] Bug 17282 - Fix QA comments: - Don't scroll to the top when deleting a column, - prevents to delete all columns, - better handling of headers/results deleting --- koha-tmpl/intranet-tmpl/prog/en/includes/chart.inc | 9 +++- .../en/modules/reports/guided_reports_start.tt | 60 ++++++++++++++-------- 2 files changed, 47 insertions(+), 22 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/chart.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/chart.inc index 00b68c1..ebb86ad 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/chart.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/chart.inc @@ -30,8 +30,13 @@ [% column = 1 %] <div> [% FOREACH header IN header_row %] - <fieldset id="column_[% column %]" style="display: inline !important;"> - <legend>Column [% column %] - <a href="#" onclick="removeColumn('column_[% column %]', '[% header.cell %]')">del</a></legend> + <fieldset class="chart-column-conf" id="column_[% column %]" style="display: inline !important;"> + <legend> + Column [% column %] + <a class="chart-column-delete" href="#" onclick="removeColumn('column_[% column %]'); return false;"> + <img src="[% interface %]/[% theme %]/img/x.png" alt="Delete" /> + </a> + </legend> <div> <label for="y_[% column %]">y:</label> <select id="y_[% column %]" name="y"> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt index b858bdb..d783417 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/guided_reports_start.tt @@ -811,9 +811,6 @@ canned reports and writing custom SQL reports.</p> <script type="text/javascript" src="[% interface %]/lib/d3c3/c3.min.js"></script> <script type="text/javascript"> - var headers = [% header_row.json %]; - var results = [% results.json %] - function hide_bar_element() { $('#chart-column-horizontal').hide() $('.chart-column-group').each(function( index ) { @@ -834,30 +831,23 @@ canned reports and writing custom SQL reports.</p> }); } - function removeColumn(id, header_name) { + function removeColumn(id) { $('#'+id).remove(); - var delete_index; - $.each(headers, function(index, value) { - if (value.cell == header_name) { - delete_index = index; - } - }); - headers.splice(delete_index, 1); + if ( $('.chart-column-conf').length == 1 ) { + $('.chart-column-delete').remove(); + } - $.each(results, function(index, value) { - $.each(value.cells, function(i, val) { - if (i == delete_index) { - results[index].cells.splice(i, 1) - } - }); - }); } $(document).ready(function(){ hide_bar_element(); + if ( $('.chart-column-conf').length == 1 ) { + $('.chart-column-delete').remove(); + } + $('#download-chart').click(function() { var svg = '<svg>' + $('#chart svg').html() + '</svg>'; @@ -884,6 +874,10 @@ canned reports and writing custom SQL reports.</p> var lines = []; var options = {}; + //var headers = [% header_row.json %]; + headers = [% header_row.json %]; + var results = [% results.json %] + $('select[name="y"]').each(function( index ) { y_elements.push( $(this).val() ); }); @@ -896,13 +890,39 @@ canned reports and writing custom SQL reports.</p> } }); + // Remove deleted columns from headers and results. + var deleted_indexes = []; + var kept_headers = []; + $.each(headers, function(index, value) { + if (value.cell != x_elements && $.inArray(value.cell, y_elements) === -1) { + // This header is neither a x element nor in y elements. Don't need it. + deleted_indexes.push(index); + } + else { + kept_headers.push({cell: value.cell}); + } + }); + + // Remove coresponding cells. + var kept_results = []; + $.each(results, function(index, value) { + var line = {}; + line['cells'] = []; + $.each(value.cells, function(i, val) { + if ($.inArray(i, deleted_indexes) === -1) { + line['cells'].push({cell: val.cell}); + } + }); + kept_results.push(line); + }); + options.type = $('select[name="chart-type"]').val(); options.horizontal = $('input[name="column-horizontal"]').prop('checked'); options.lines = lines; - chart = create_chart(headers, results, x_elements, y_elements, groups, options); - $('#chart').prepend('<div style="font-size: 1rem; text-align: center;">[% name %]</div>'); + chart = create_chart(kept_headers, kept_results, x_elements, y_elements, groups, options); + $('#chart').prepend('<div style="font-size: 1rem; text-align: center;">' + "[% name %]" + '</div>'); $('#download-chart').show(); }); }); -- 2.7.4