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