Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <!-- | 1 <!-- |
| 2 The common.js file must be included before this file. | 2 The common.js file must be included before this file. |
| 3 | 3 |
| 4 This in an HTML Import-able file that contains the definition | 4 This in an HTML Import-able file that contains the definition |
| 5 of the following elements: | 5 of the following elements: |
| 6 | 6 |
| 7 <bar-chart-sk> | 7 <bar-chart-sk> |
| 8 | 8 |
| 9 To use this file import it: | 9 To use this file import it: |
| 10 | 10 |
| 11 <link href="/res/imp/bar-chart-sk.html" rel="import" /> | 11 <link href="/res/imp/bar-chart-sk.html" rel="import" /> |
| 12 | 12 |
| 13 Usage: | 13 Usage: |
| 14 | 14 |
| 15 <bar-chart-sk heading="My Chart"></bar-chart-sk> | 15 <bar-chart-sk heading="My Chart"></bar-chart-sk> |
| 16 <script> | 16 <script> |
| 17 myChart.draw(columns, data); | 17 myChart.draw(columns, data); |
| 18 </script> | 18 </script> |
| 19 | 19 |
| 20 Properties: | 20 Properties: |
| 21 heading: string; title of the chart. | 21 heading: string; title of the chart. |
| 22 colors: array of strings; colors to use in the chart. | 22 colors: array of strings; colors to use in the chart. |
| 23 columns: array of arrays indicating the types and names of the columns, eg: | |
| 24 [["string", "seriesName"], ["number", "dataPoint"]]. | |
| 25 data: array of arrays containing data for each column, eg: | |
| 26 [["series1", 42], ["series2", 7]]. | |
| 23 | 27 |
| 24 Methods: | 28 Methods: |
| 25 draw: render the chart using the given columns and data. The 'columns' | 29 draw: render the chart. |
| 26 parameter is an array of arrays indicating the types and names of the | |
| 27 columns, eg: [["string", "seriesName"], ["number", "dataPoint"]]. | |
| 28 The 'data' parameter is an array of arrays containing data for each | |
| 29 column, eg: [["series1", 42], ["series2", 7]]. | |
| 30 --> | 30 --> |
| 31 <polymer-element name="bar-chart-sk"> | 31 <polymer-element name="bar-chart-sk"> |
| 32 <template> | 32 <template> |
| 33 <style> | 33 <style> |
| 34 .chart { | 34 .chart { |
| 35 border: 1px solid #eeeeee; | 35 border: 1px solid #eeeeee; |
| 36 margin: 5px; | 36 margin: 5px; |
| 37 padding: 10px; | 37 padding: 10px; |
| 38 font-size: 12px; | |
| 39 } | |
| 40 h2 { | |
| 41 font-size: 16px; | |
| 38 } | 42 } |
| 39 .collapseHeader { | 43 .collapseHeader { |
| 40 cursor: pointer; | 44 cursor: pointer; |
| 41 } | 45 } |
| 42 .collapseBody { | 46 .collapseBody { |
| 43 padding: 10px; | 47 padding: 10px; |
| 44 } | 48 } |
| 45 </style> | 49 </style> |
| 46 <div class="chart"> | 50 <div class="chart" id="host"> |
| 47 <div class="collapseHeader" on-click="{{toggle}}"> | 51 <div class="collapseHeader" on-click="{{toggle}}" horizontal layout center > |
| 48 {{heading}} | 52 <h2 flex>{{heading}}</h2> |
| 53 <core-icon icon="{{icon}}"></core-icon> | |
| 49 </div> | 54 </div> |
| 50 <core-collapse id="collapse"> | 55 <core-collapse id="collapse" on-core-collapse-open="{{collapseOpen}}"> |
| 51 <div class="collapseBody" id="chartcontainer"></div> | 56 <div class="collapseBody" id="chartcontainer"></div> |
| 52 </core-collapse> | 57 </core-collapse> |
| 53 </div> | 58 </div> |
| 54 | 59 |
| 55 </template> | 60 </template> |
| 56 <script> | 61 <script> |
| 62 (function() { | |
| 63 var chartsReady = false; | |
| 64 var ChartsReady = new Promise(function(resolve, reject) { | |
|
jcgregorio
2015/04/02 15:42:26
I think this can be simplified to:
var chartsRead
borenet
2015/04/02 16:55:36
Done.
| |
| 65 if (chartsReady) { | |
| 66 resolve(); | |
| 67 } else { | |
| 68 google.setOnLoadCallback(function() { | |
| 69 chartsReady = true; | |
| 70 resolve(); | |
| 71 }); | |
| 72 } | |
| 73 }); | |
| 74 | |
| 57 Polymer({ | 75 Polymer({ |
| 58 publish: { | 76 publish: { |
| 59 heading: { | 77 heading: { |
| 60 value: null, | 78 value: null, |
| 61 reflect: true, | 79 reflect: true, |
| 62 }, | 80 }, |
| 63 colors: { | 81 colors: { |
| 64 value: [], | 82 value: [], |
| 65 reflect: false, | 83 reflect: false, |
| 66 }, | 84 }, |
| 85 columns: { | |
| 86 value: null, | |
| 87 reflect: false, | |
| 88 }, | |
| 89 data: { | |
| 90 value: null, | |
| 91 reflect: false, | |
| 92 }, | |
| 93 }, | |
| 94 | |
| 95 created: function() { | |
| 96 this.icon = "arrow-drop-down"; | |
| 97 }, | |
| 98 | |
| 99 ready: function() { | |
| 100 var that = this; | |
| 101 window.addEventListener("resize", function() { | |
| 102 that.draw(); | |
| 103 }); | |
| 67 }, | 104 }, |
| 68 | 105 |
| 69 toggle: function() { | 106 toggle: function() { |
| 70 this.$.collapse.toggle(); | 107 this.$.collapse.toggle(); |
| 71 }, | 108 }, |
| 72 | 109 |
| 73 draw: function(columns, data) { | 110 colorsChanged: function() { |
| 74 var table = new google.visualization.DataTable(); | 111 this.draw(); |
| 75 for (var i = 0; i < columns.length; i++) { | 112 }, |
| 76 table.addColumn(columns[i][0], columns[i][1]); | 113 |
| 114 columnsChanged: function() { | |
| 115 this.draw(); | |
| 116 }, | |
| 117 | |
| 118 dataChanged: function() { | |
| 119 this.draw(); | |
| 120 }, | |
| 121 | |
| 122 collapseOpen: function() { | |
| 123 if (this.$.collapse.opened) { | |
| 124 this.icon = "arrow-drop-up"; | |
| 125 } else { | |
| 126 this.icon = "arrow-drop-down"; | |
| 77 } | 127 } |
| 78 table.addRows(data); | 128 }, |
| 79 | 129 |
| 80 var headerHeight = 0; | 130 draw: function() { |
| 81 var chartWidth = 400; | 131 if (!this.columns || !this.data) { |
| 82 var chartHeight = 15 * data.length; | 132 return; |
| 83 var labelWidth = 410; | |
| 84 var options = { | |
| 85 "chartArea": { | |
| 86 "top": headerHeight, | |
| 87 "left": labelWidth, | |
| 88 "width": chartWidth, | |
| 89 "height": chartHeight, | |
| 90 }, | |
| 91 "legend": { "position": "none" }, | |
| 92 "width": labelWidth + chartWidth, | |
| 93 "height": headerHeight + chartHeight, | |
| 94 "fontSize": 12, | |
| 95 "titleTextStyle": { "fontSize": 18 }, | |
| 96 }; | |
| 97 if (this.colors) { | |
| 98 options["colors"] = this.colors; | |
| 99 } | 133 } |
| 134 var that = this; | |
| 135 ChartsReady.then(function() { | |
| 136 var table = new google.visualization.DataTable(); | |
| 137 for (var i = 0; i < that.columns.length; i++) { | |
| 138 table.addColumn(that.columns[i][0], that.columns[i][1]); | |
| 139 } | |
| 140 table.addRows(that.data); | |
| 100 | 141 |
| 101 var chart = new google.visualization.BarChart(this.$.chartcontainer); | 142 var totalWidth = that.$.host.offsetWidth; |
| 102 chart.draw(table, options); | 143 var headerHeight = 0; |
| 144 var labelWidth = 410; | |
| 145 var chartWidth = totalWidth - labelWidth; | |
| 146 var chartHeight = 15 * that.data.length; | |
| 147 var options = { | |
| 148 "chartArea": { | |
| 149 "top": headerHeight, | |
| 150 "left": labelWidth, | |
| 151 "width": chartWidth, | |
| 152 "height": chartHeight, | |
| 153 }, | |
| 154 "legend": { "position": "none" }, | |
| 155 "width": totalWidth, | |
| 156 "height": headerHeight + chartHeight, | |
| 157 "fontSize": 12, | |
| 158 "titleTextStyle": { "fontSize": 18 }, | |
| 159 }; | |
| 160 if (that.colors) { | |
| 161 options["colors"] = that.colors; | |
| 162 } | |
| 163 | |
| 164 var chart = new google.visualization.BarChart(that.$.chartcontainer); | |
| 165 chart.draw(table, options); | |
| 166 }); | |
| 103 }, | 167 }, |
| 104 }); | 168 }); |
| 169 })(); | |
| 105 </script> | 170 </script> |
| 106 </polymer-element> | 171 </polymer-element> |
| OLD | NEW |