| <!DOCTYPE html> | 
 | <!-- | 
 | Licensed to the Apache Software Foundation (ASF) under one | 
 | or more contributor license agreements.  See the NOTICE file | 
 | distributed with this work for additional information | 
 | regarding copyright ownership.  The ASF licenses this file | 
 | to you under the Apache License, Version 2.0 (the | 
 | "License"); you may not use this file except in compliance | 
 | with the License.  You may obtain a copy of the License at | 
 |  | 
 |    http://www.apache.org/licenses/LICENSE-2.0 | 
 |  | 
 | Unless required by applicable law or agreed to in writing, | 
 | software distributed under the License is distributed on an | 
 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
 | KIND, either express or implied.  See the License for the | 
 | specific language governing permissions and limitations | 
 | under the License. | 
 | --> | 
 |  | 
 |  | 
 | <html> | 
 |     <head> | 
 |         <meta charset="utf-8"> | 
 |         <script src="lib/simpleRequire.js"></script> | 
 |         <script src="lib/config.js"></script> | 
 |         <script src="lib/jquery.min.js"></script> | 
 |         <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
 |         <link rel="stylesheet" href="lib/reset.css"> | 
 |     </head> | 
 |     <body> | 
 |         <style> | 
 |             #main, #main2 { | 
 |                 width: auto; | 
 |                 margin: 100px; | 
 |                 height: 550px; | 
 |             } | 
 |         </style> | 
 |         <div id="main"></div> | 
 |         <div id="main2"></div> | 
 |  | 
 |         <script src="data/obama_budget_proposal_2012.tree.js"></script> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |  | 
 |             require([ | 
 |                 'echarts' | 
 |             ], function (echarts) { | 
 |  | 
 |                 var myChart = echarts.init(document.getElementById('main')); | 
 |  | 
 |                 convertData(window.obama_budget_2012); | 
 |  | 
 |                 function convertData(originList) { | 
 |                     for (var i = 0; i < originList.length; i++) { | 
 |                         var node = originList[i]; | 
 |                         if (node) { | 
 |                             var value = node.value; | 
 |                             value[3] = value[2] > 0 | 
 |                                 ? 100 | 
 |                                 : value[2] < 0 | 
 |                                 ? -100 | 
 |                                 : 0; | 
 |  | 
 |                             if (node.children) { | 
 |                                 convertData(node.children); | 
 |                             } | 
 |                         } | 
 |                     } | 
 |                 } | 
 |  | 
 |  | 
 |                 function isValidNumber(num) { | 
 |                     return num != null && isFinite(num); | 
 |                 } | 
 |  | 
 |                 myChart.setOption(option = { | 
 |                     title: { | 
 |                         left: 'center', | 
 |                         text: 'Category Mapping', | 
 |                         subtext: 'Growth > 0: green; Growth < 0: red; Growth = 0: grey' | 
 |                     }, | 
 |                     tooltip: { | 
 |                         formatter: function (info) { | 
 |                             var value = info.value; | 
 |  | 
 |                             var amount = value[0]; | 
 |                             amount = isValidNumber(amount) | 
 |                                 ? echarts.format.addCommas(amount * 1000) + '$' | 
 |                                 : '-'; | 
 |  | 
 |                             var amount2011 = value[1]; | 
 |                             amount2011 = isValidNumber(amount2011) | 
 |                                 ? echarts.format.addCommas(amount2011 * 1000) + '$' | 
 |                                 : '-'; | 
 |  | 
 |                             var change = value[2]; | 
 |                             change = isValidNumber(change) | 
 |                                 ? change.toFixed(2) + '%' | 
 |                                 : '-'; | 
 |  | 
 |                             return [ | 
 |                                 '<div class="tooltip-title">' + echarts.format.encodeHTML(info.name) + '</div>', | 
 |                                 '2012 Amount:   ' + amount + '<br>', | 
 |                                 '2011 Amount:   ' + amount2011 + '<br>', | 
 |                                 'Change From 2011:   ' + change | 
 |                             ].join(''); | 
 |                         } | 
 |                     }, | 
 |                     series: [{ | 
 |                         name: 'ALL', | 
 |                         top: 80, | 
 |                         type: 'treemap', | 
 |                         label: { | 
 |                             show: true, | 
 |                             formatter: "{b}", | 
 |                             normal: { | 
 |                                 textStyle: { | 
 |                                     ellipsis: true | 
 |                                 } | 
 |                             } | 
 |                         }, | 
 |                         itemStyle: { | 
 |                             normal: { | 
 |                                 borderColor: 'black' | 
 |                             } | 
 |                         }, | 
 |                         visualMin: -100, | 
 |                         visualMax: 100, | 
 |                         visualDimension: 3, | 
 |                         levels: [ | 
 |                             { | 
 |                                 itemStyle: { | 
 |                                     normal: { | 
 |                                         borderWidth: 3, | 
 |                                         borderColor: '#333', | 
 |                                         gapWidth: 3 | 
 |                                     } | 
 |                                 } | 
 |                             }, | 
 |                             { | 
 |                                 color: ['#942e38', '#aaa', '#269f3c'], | 
 |                                 colorMappingBy: 'value', | 
 |                                 itemStyle: { | 
 |                                     normal: { | 
 |                                         gapWidth: 1 | 
 |                                     } | 
 |                                 } | 
 |                             } | 
 |                         ], | 
 |                         data: window.obama_budget_2012 | 
 |                     }] | 
 |                 }); | 
 |  | 
 |  | 
 |             }); | 
 |  | 
 |         </script> | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |  | 
 |         <script> | 
 |  | 
 |             require([ | 
 |                 'echarts' | 
 |             ], function (echarts) { | 
 |  | 
 |                 var myChart = echarts.init(document.getElementById('main2')); | 
 |  | 
 |                 var visualMin = -100; | 
 |                 var visualMax = 100; | 
 |                 var visualMinBound = -40; | 
 |                 var visualMaxBound = 40; | 
 |  | 
 |                 convertData(window.obama_budget_2012); | 
 |  | 
 |                 function convertData(originList) { | 
 |                     var min = Infinity; | 
 |                     var max = -Infinity; | 
 |  | 
 |                     for (var i = 0; i < originList.length; i++) { | 
 |                         var node = originList[i]; | 
 |                         if (node) { | 
 |                             var value = node.value; | 
 |                             value[2] != null && value[2] < min && (min = value[2]); | 
 |                             value[2] != null && value[2] > max && (max = value[2]); | 
 |                         } | 
 |                     } | 
 |  | 
 |                     for (var i = 0; i < originList.length; i++) { | 
 |                         var node = originList[i]; | 
 |                         if (node) { | 
 |                             var value = node.value; | 
 |  | 
 |                             // Scale value for visual effect | 
 |                             if (value[2] != null && value[2] > 0) { | 
 |                                 value[3] = echarts.number.linearMap( | 
 |                                     value[2], [0, max], [visualMaxBound, visualMax], true | 
 |                                 ); | 
 |                             } | 
 |                             else if (value[2] != null && value[2] < 0) { | 
 |                                 value[3] = echarts.number.linearMap( | 
 |                                     value[2], [min, 0], [visualMin, visualMinBound], true | 
 |                                 ); | 
 |                             } | 
 |                             else { | 
 |                                 value[3] = 0; | 
 |                             } | 
 |  | 
 |                             if (!isFinite(value[3])) { | 
 |                                 value[3] = 0; | 
 |                             } | 
 |  | 
 |                             if (node.children) { | 
 |                                 convertData(node.children); | 
 |                             } | 
 |                         } | 
 |                     } | 
 |                 } | 
 |  | 
 |  | 
 |                 function isValidNumber(num) { | 
 |                     return num != null && isFinite(num); | 
 |                 } | 
 |  | 
 |                 myChart.setOption(option = { | 
 |                     title: { | 
 |                         left: 'center', | 
 |                         text: 'Gradient Mapping', | 
 |                         subtext: 'Growth > 0: green; Growth < 0: red; Growth = 0: grey' | 
 |                     }, | 
 |                     tooltip: { | 
 |                         formatter: function (info) { | 
 |                             var value = info.value; | 
 |  | 
 |                             var amount = value[0]; | 
 |                             amount = isValidNumber(amount) | 
 |                                 ? echarts.format.addCommas(amount * 1000) + '$' | 
 |                                 : '-'; | 
 |  | 
 |                             var amount2011 = value[1]; | 
 |                             amount2011 = isValidNumber(amount2011) | 
 |                                 ? echarts.format.addCommas(amount2011 * 1000) + '$' | 
 |                                 : '-'; | 
 |  | 
 |                             var change = value[2]; | 
 |                             change = isValidNumber(change) | 
 |                                 ? change.toFixed(2) + '%' | 
 |                                 : '-'; | 
 |  | 
 |                             return [ | 
 |                                 '<div class="tooltip-title">' + echarts.format.encodeHTML(info.name) + '</div>', | 
 |                                 '2012 Amount:   ' + amount + '<br>', | 
 |                                 '2011 Amount:   ' + amount2011 + '<br>', | 
 |                                 'Change From 2011:   ' + change | 
 |                             ].join(''); | 
 |                         } | 
 |                     }, | 
 |                     series: [{ | 
 |                         name: 'ALL', | 
 |                         top: 80, | 
 |                         type: 'treemap', | 
 |                         label: { | 
 |                             show: true, | 
 |                             formatter: "{b}", | 
 |                             normal: { | 
 |                                 textStyle: { | 
 |                                     ellipsis: true | 
 |                                 } | 
 |                             } | 
 |                         }, | 
 |                         itemStyle: { | 
 |                             normal: { | 
 |                                 borderColor: 'black' | 
 |                             } | 
 |                         }, | 
 |                         visualMin: visualMin, | 
 |                         visualMax: visualMax, | 
 |                         visualDimension: 3, | 
 |                         levels: [ | 
 |                             { | 
 |                                 itemStyle: { | 
 |                                     normal: { | 
 |                                         borderWidth: 3, | 
 |                                         borderColor: '#333', | 
 |                                         gapWidth: 3 | 
 |                                     } | 
 |                                 } | 
 |                             }, | 
 |                             { | 
 |                                 color: ['#942e38', '#aaa', '#269f3c'], | 
 |                                 colorMappingBy: 'value', | 
 |                                 itemStyle: { | 
 |                                     normal: { | 
 |                                         gapWidth: 1 | 
 |                                     } | 
 |                                 } | 
 |                             } | 
 |                         ], | 
 |                         data: window.obama_budget_2012 | 
 |                     }] | 
 |                 }); | 
 |  | 
 |  | 
 |             }); | 
 |  | 
 |         </script> | 
 |  | 
 |     </body> | 
 | </html> |