Hello Everyone,

I've researched this many times and haven't found a way to lock the total 
row in a Google Chart Table, so that it does not get sorted and stays 
locked as the last row on my table.

Below is my current code for the chart and table.  Thank you in advance for 
any advice.

Regards,

Noel


[image: Total Row Locking.jpg]



<!DOCTYPE html>
<html>

 <script type="text/javascript" src="//www.google.com/jsapi"></script>
    <script type='text/javascript' 
src='http://code.jquery.com/jquery-2.1.0.min.js'></script>
  
        <script type='text/javascript' 
src='//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js'></script>
    <link rel="stylesheet" type="text/css" 
href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">

      <script type="text/javascript" 
src="https://www.google.com/jsapi?fake=.js";></script>

  <style id="compiled-css" type="text/css">
   .google-visualization-table-td {
text-align: left !important;
}

  .header {
    background-color: #1977CF;
    font-size: 14px;
    color: white;
    height: 50 px;
    position: relative;
  }

  .right-text {
    text-align: left;
  }

  .grey-background {
    background-color: #F2F2F2;
  }
  
  .yellow-background {
    background-color: #FEF200;
  }
  
  .white-background {
    background-color: white;
  }
  
    
  </style>

  <!-- TODO: Missing CoffeeScript 2 -->

  <script type="text/javascript">


    
google.load('visualization', '1.1', {packages: ['controls']});
google.setOnLoadCallback(drawVisualization);

function drawVisualization() {
    // Prepare the data
    var data = google.visualization.arrayToDataTable([
        ['Country', '2019', '2018','Varience'],
[' Unites States ', 1398 , 1417 , -19 ],
[' Japan ', 1854 , 2195 , -341 ],
[' Germany ', 2633 , 2149 , 484 ],
[' United Kingdom ', 4900 , 5633 , -733 ],
[' China ', 1894 , 2198 , -304 ],
[' France ', 1216 , 1045 , 171 ],
[' Spain ', 1053 , 1073 , -20 ],
[' Portugal ', 1147 , 1117 , 30 ],
[' Brazil ', 2224 , 2008 , 216 ],
[' Canada ', 405 , 506 , -101 ],
[' Argetina ', 252 , 294 , -42 ],
[' Hong Kong ', 899 , 689 , 210 ],
[' Russia ', 1258 , 1103 , 155 ],


    ]);
    // Define which column shows up/down arrows
   var formatter = new google.visualization.ArrowFormat();
    formatter.format(data, 3);
    
    
 
    

    
     // Define a category picker control for the Gender column
    var categoryPicker = new google.visualization.ControlWrapper({
        controlType: 'CategoryFilter',
        containerId: 'control3',
        options: {
            filterColumnLabel: 'Country',
            ui: {
                label: '',
                labelStacking: 'vertical',
                allowTyping: false,
                allowMultiple: true,
                caption: 'Country'
            }
        }
    });


var stringFilter = new google.visualization.ControlWrapper({
          'controlType': 'StringFilter',
          'containerId': 'control4',
          'options': {
          'filterColumnLabel': 'Services',
          'ui': {'labelStacking': 'vertical'}
          }
        });
   

    // Define a Pie chart
    var pie = new google.visualization.ChartWrapper({
        chartType: 'PieChart',
        containerId: 'chart1',
        options: {
            width: 430,
            height: 300,
            title: '',
            //is3D: true,
            pieHole: 0.4,
            chartArea: {
                left: 15,
                top: 15,
                right: 0,
                bottom: 0
            },
              legend: {
      alignment: 'center',
      position: 'right'
    },
            pieSliceText: 'number'
        },
        // Instruct the piechart to use colums 0 (Name) and 3 (Donuts Eaten)
        // from the 'data' DataTable.
        view: {
            columns: [0, 1]
        }
    });
    
     // Define a table style
     var cssClassNames = {
        'headerRow': 'header',
        'tableRow': '',
        'oddTableRow': 'grey-background',
        'selectedTableRow': '',
        'hoverTableRow': 'yellow-background',
        'headerCell': 'gold-border',
        'tableCell': '',
        'rowNumberCell': ''}; 

  
    // Define a table
    var table = new google.visualization.ChartWrapper({
        chartType: 'Table',
        containerId: 'chart2',
        options: {
            width: '350px',
            showRowNumber: false,
            allowHtml: true,
            cssClassNames: cssClassNames,
        }
    });
    
    
    
     google.visualization.events.addListener(pie, 'ready', function () {
        var dt = pie.getDataTable().toDataTable();
        var totals = google.visualization.data.group(dt, [{
            type: 'number',
            column: 0,
            // make all values the same
            modifier: function () {return 0;}
        }], [{
            type: 'number',
            column: 1,
            aggregation: google.visualization.data.sum
        }, {
            type: 'number',
            column: 2,
            aggregation: google.visualization.data.sum
        }, {
            type: 'number',
            column: 3,
            aggregation: google.visualization.data.sum
        }]);
        dt.addRow(['Total', totals.getValue(0, 1), totals.getValue(0, 2), 
totals.getValue(0, 3)]);
        table.setDataTable(dt);
        table.draw();
    });
    
    
    // Create a dashboard
    new 
google.visualization.Dashboard(document.getElementById('dashboard')).
    // Establish bindings, declaring the both the slider and the category
    // picker will drive both charts.
    bind([categoryPicker], [table, pie], [stringFilter, table]).
    
     

    // Draw the entire dashboard.
    draw(data, {'allowHtml':true, 'cssClassNames': 'cssClassNames'});
    
    
     changeOptions = function() {
         pie.setOption('is3D', true);
         pie.draw();
        };
        
        changeOptions2 = function() {
         pie.setOption('is3D', false);
         pie.draw();
        };
}


</script>

<body>
    <div id="dashboard">
    <table>
        <tbody>
            <tr style="vertical-align: top;">
                <td style="width: 300px; font-size: 1em;">  
                    <div style="border: 0px solid #ccc; margin-left: 0px; 
margin-top: 0px; padding-right:20px" id="chart1"></div>
                    
             
<div style="width: 100%; display: table;">
    <div style="display: table-row">
        <div style="width: 110px; display: table-cell;"> <div>
              <button style="margin: 0em 1em 1em 1em" 
onclick="changeOptions();">
                Make 3D
              </button>
            </div>
            <script type="text/javascript">
              function changeOptions() {
                pie.setOption('is3D', true);
                pie.draw();
              }
            </script> </div>
        <div style="display: table-cell;"> <div>
              <button onclick="changeOptions2();">
                Make Flat
              </button>
            </div>
            <script type="text/javascript">
              function changeOptions2() {
                pie.setOption('is3D', false);
                pie.draw();
              }
            </script> </div>
    </div>
</div>
                    
                </td>
                <td style="width: 300px;">
                    <div style="margin: 0em 10em 1em 0em" 
id="control3"></div>
                    <div style="float: left;" id="chart2"></div>
                 </td>
             </tr>
        </tbody>
    </table>
</div>

  <script>
    // tell the embed parent frame the height of the content
    if (window.parent && window.parent.parent){
      window.parent.parent.postMessage(["resultsFrame", {
        height: document.body.getBoundingClientRect().height,
        slug: "rEhUp"
      }], "*")
    }

    // always overwrite window.name, in case users try to set it manually
    window.name = "result"
  </script>
</body>
</html>




-- 
You received this message because you are subscribed to the Google Groups 
"Google Visualization API" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-visualization-api.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-visualization-api/e0ecbc84-3d99-4460-8262-5903fffbbdc5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to