Files
dev-chiefworks f76abffdcd first commit
2022-05-31 16:21:53 -04:00

1018 lines
36 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* ------------------------------------------------------------------------------
*
* # Echarts - columns and waterfalls
*
* Columns and waterfalls chart configurations
*
* Version: 1.0
* Latest update: August 1, 2015
*
* ---------------------------------------------------------------------------- */
$(function () {
// Set paths
// ------------------------------
require.config({
paths: {
echarts: 'assets/js/plugins/visualization/echarts'
}
});
// Configuration
// ------------------------------
require(
[
'echarts',
'echarts/theme/limitless',
'echarts/chart/bar',
'echarts/chart/line'
],
// Charts setup
function (ec, limitless) {
// Initialize charts
// ------------------------------
var basic_columns = ec.init(document.getElementById('basic_columns'), limitless);
var stacked_columns = ec.init(document.getElementById('stacked_columns'), limitless);
var stacked_clustered_columns = ec.init(document.getElementById('stacked_clustered_columns'), limitless);
var thermometer_columns = ec.init(document.getElementById('thermometer_columns'), limitless);
var compositive_waterfall = ec.init(document.getElementById('compositive_waterfall'), limitless);
var change_waterfall = ec.init(document.getElementById('change_waterfall'), limitless);
var columns_timeline = ec.init(document.getElementById('columns_timeline'), limitless);
// Charts setup
// ------------------------------
//
// Basic columns options
//
basic_columns_options = {
// Setup grid
grid: {
x: 40,
x2: 40,
y: 35,
y2: 25
},
// Add tooltip
tooltip: {
trigger: 'axis'
},
// Add legend
legend: {
data: ['Evaporation', 'Precipitation']
},
// Enable drag recalculate
calculable: true,
// Horizontal axis
xAxis: [{
type: 'category',
data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
}],
// Vertical axis
yAxis: [{
type: 'value'
}],
// Add series
series: [
{
name: 'Evaporation',
type: 'bar',
data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
itemStyle: {
normal: {
label: {
show: true,
textStyle: {
fontWeight: 500
}
}
}
},
markLine: {
data: [{type: 'average', name: 'Average'}]
}
},
{
name: 'Precipitation',
type: 'bar',
data: [2.6, 5.9, 9.0, 26.4, 58.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3],
itemStyle: {
normal: {
label: {
show: true,
textStyle: {
fontWeight: 500
}
}
}
},
markLine: {
data: [{type: 'average', name: 'Average'}]
}
}
]
};
//
// Stacked columns options
//
stacked_columns_options = {
// Setup grid
grid: {
x: 40,
x2: 47,
y: 35,
y2: 25
},
// Add tooltip
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow' // 'line' | 'shadow'
}
},
// Add legend
legend: {
data: ['Direct', 'Email', 'Prints', 'Videos', 'Television', 'Yahoo', 'Google', 'Bing', 'Other']
},
// Add toolbox
toolbox: {
show: true,
orient: 'vertical',
x: 'right',
y: 'center',
itemGap: 15,
showTitle: false,
feature: {
mark: {
show: true,
title: {
mark: 'Markline switch',
markUndo: 'Undo markline',
markClear: 'Clear markline'
}
},
dataZoom: {
show: true,
title: {
dataZoom: 'Data zoom',
dataZoomReset: 'Reset zoom'
}
},
dataView: {
show: true,
readOnly: false,
title: 'View data',
lang: ['View chart data', 'Close', 'Update']
},
magicType: {
show: true,
title: {
line: 'Switch to line chart',
bar: 'Switch to bar chart',
},
type: ['line', 'bar']
},
restore: {
show: true,
title: 'Restore'
},
saveAsImage: {
show: true,
title: 'Same as image',
lang: ['Save']
}
}
},
// Enable drag recalculate
calculable: true,
// Horizontal axis
xAxis: [{
type: 'category',
data: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
}],
// Vertical axis
yAxis: [{
type: 'value'
}],
// Add series
series: [
{
name: 'Direct',
type: 'bar',
data: [320, 332, 301, 334, 390, 330, 320]
},
{
name: 'Email',
type: 'bar',
stack: 'Advertising',
data: [120, 132, 101, 134, 90, 230, 210]
},
{
name: 'Prints',
type: 'bar',
stack: 'Advertising',
data: [220, 182, 191, 234, 290, 330, 310]
},
{
name: 'Videos',
type: 'bar',
stack: 'Advertising',
data: [150, 232, 201, 154, 190, 330, 410]
},
{
name: 'Television',
type: 'bar',
data: [862, 1018, 964, 1026, 1679, 1600, 1570],
markLine: {
itemStyle: {
normal: {
lineStyle: {
type: 'dashed'
}
}
},
data: [
[{type: 'min'}, {type: 'max'}]
]
}
},
{
name: 'Yahoo',
type: 'bar',
barWidth: 10,
stack: 'Television',
data: [620, 732, 701, 734, 1090, 1130, 1120]
},
{
name: 'Google',
type: 'bar',
stack: 'Television',
data: [120, 132, 101, 134, 290, 230, 220]
},
{
name: 'Bing',
type: 'bar',
stack: 'Television',
data: [60, 72, 71, 74, 190, 130, 110]
},
{
name: 'Other',
type: 'bar',
stack: 'Television',
data: [62, 82, 91, 84, 109, 110, 120]
}
]
};
//
// Thermometer options
//
thermometer_columns_options = {
// Setup grid
grid: {
x: 35,
x2: 10,
y: 35,
y2: 25
},
// Add tooltip
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow' // 'line' | 'shadow'
},
formatter: function (params) {
return params[0].name + '<br/>'
+ params[0].seriesName + ': ' + params[0].value + '<br/>'
+ params[1].seriesName + ': ' + (params[1].value + params[0].value);
}
},
// Add legend
legend: {
selectedMode: false,
data: ['Actual', 'Forecast']
},
// Enable drag recalculate
calculable: true,
// Horizontal axis
xAxis: [{
type: 'category',
data: ['Cosco', 'CMA', 'APL', 'OOCL', 'Wanhai', 'Zim', 'Maersk', 'Hanjin', 'Nyk']
}],
// Vertical axis
yAxis: [{
type: 'value',
boundaryGap: [0, 0.1]
}],
// Add series
series: [
{
name: 'Actual',
type: 'bar',
stack: 'sum',
barCategoryGap: '50%',
itemStyle: {
normal: {
color: '#FF7043',
barBorderColor: '#FF7043',
barBorderWidth: 6,
label: {
show: true,
position: 'insideTop'
}
},
emphasis: {
color: '#FF7043',
barBorderColor: '#FF7043',
barBorderWidth: 6,
label: {
show: true,
textStyle: {
color: '#fff'
}
}
}
},
data: [260, 200, 220, 120, 100, 80, 130, 230, 90]
},
{
name: 'Forecast',
type: 'bar',
stack: 'sum',
itemStyle: {
normal: {
color: '#fff',
barBorderColor: '#FF7043',
barBorderWidth: 6,
barBorderRadius: 0,
label: {
show: true,
position: 'top',
formatter: function (params) {
for (var i = 0, l = thermometer_columns_options.xAxis[0].data.length; i < l; i++) {
if (thermometer_columns_options.xAxis[0].data[i] == params.name) {
return thermometer_columns_options.series[0].data[i] + params.value;
}
}
},
textStyle: {
color: '#FF7043'
}
}
},
emphasis: {
barBorderColor: '#FF7043',
barBorderWidth: 6,
label: {
show: true,
textStyle: {
color: '#FF7043'
}
}
}
},
data:[40, 80, 50, 80,80, 70, 60, 90, 120]
}
]
};
//
// Compositive waterfall options
//
compositive_waterfall_options = {
// Setup grid
grid: {
x: 45,
x2: 10,
y: 10,
y2: 25
},
// Add tooltip
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
formatter: function (params) {
var tar = params[0];
return tar.name + '<br/>' + tar.seriesName + ': ' + tar.value;
}
},
// Horizontal axis
xAxis: [{
type: 'category',
data: ['Total cost', 'Rent', 'Utilities', 'Transport', 'Meals', 'Commodity', 'Taxes', 'Travel']
}],
// Vertical axis
yAxis: [{
type: 'value'
}],
// Add series
series: [
{
name: 'Aid',
type: 'bar',
stack: 'Total',
itemStyle: {
normal: {
barBorderColor: 'rgba(0,0,0,0)',
color: 'rgba(0,0,0,0)'
},
emphasis: {
barBorderColor: 'rgba(0,0,0,0)',
color: 'rgba(0,0,0,0)'
}
},
data:[0, 3500, 3000, 2300, 1700, 900, 400, 0]
},
{
name: 'Cost of living',
type: 'bar',
stack: 'Total',
itemStyle: {
normal: {
barBorderRadius: 3,
color: '#42A5F5',
label: {
show: true,
position: 'inside'
}
},
emphasis: {
color: '#42A5F5',
}
},
data: [4500, 1000, 500, 700, 600, 800, 500, 400]
}
]
};
//
// Change waterfall options
//
change_waterfall_options = {
// Setup grid
grid: {
x: 45,
x2: 10,
y: 35,
y2: 25
},
// Add tooltip
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
formatter: function (params) {
var tar;
if (params[1].value != '-') {
tar = params[1];
}
else {
tar = params[0];
}
return tar.name + '<br/>' + tar.seriesName + ': ' + tar.value;
}
},
// Add legend
legend: {
data: ['Expenses','Income']
},
// Horizontal axis
xAxis: [{
type: 'category',
data: ['January','February','March','April','May','June','July','August','September','October','November','December']
}],
// Vertical axis
yAxis: [{
type: 'value'
}],
// Add series
series: [
{
name: 'Aid',
type: 'bar',
stack: 'Total',
itemStyle: {
normal: {
barBorderColor: 'rgba(0,0,0,0)',
color: 'rgba(0,0,0,0)'
},
emphasis: {
barBorderColor: 'rgba(0,0,0,0)',
color: 'rgba(0,0,0,0)'
}
},
data: [0, 900, 1245, 1530, 1376, 1376, 1511, 1689, 1856, 1495, 1292, 992]
},
{
name: 'Income',
type: 'bar',
stack: 'Total',
itemStyle: { normal: {label: {show: true, position: 'top'}}},
data: [900, 345, 393, '-', '-', 135, 178, 286, '-', '-', '-']
},
{
name: 'Expenses',
type: 'bar',
stack: 'Total',
itemStyle: { normal: {label: {show: true, position: 'bottom'}}},
data: ['-', '-', '-', 108, 154, '-', '-', '-', 119, 361, 203,300]
}
]
};
//
// Timeline options
//
columns_timeline_options = {
// Setup timeline
timeline: {
data: ['2010-01-01', '2011-01-01', '2012-01-01', '2013-01-01', '2014-01-01'],
x: 10,
x2: 10,
label: {
formatter: function(s) {
return s.slice(0, 4);
}
},
autoPlay: true,
playInterval: 3000
},
// Main options
options: [
{
// Setup grid
grid: {
x: 55,
x2: 110,
y: 35,
y2: 100
},
// Add tooltip
tooltip: {
trigger: 'axis'
},
// Add legend
legend: {
data: ['GDP','Financial','Real Estate','Primary industry','Secondary industry','Third industry']
},
// Add toolbox
toolbox: {
show: true,
orient: 'vertical',
x: 'right',
y: 70,
feature: {
mark: {
show: true,
title: {
mark: 'Markline switch',
markUndo: 'Undo markline',
markClear: 'Clear markline'
}
},
dataView: {
show: true,
readOnly: false,
title: 'View data',
lang: ['View chart data', 'Close', 'Update']
},
magicType: {
show: true,
title: {
line: 'Switch to line chart',
bar: 'Switch to bar chart',
stack: 'Switch to stack',
tiled: 'Switch to tiled'
},
type: ['line', 'bar', 'stack', 'tiled']
},
restore: {
show: true,
title: 'Restore'
},
saveAsImage: {
show: true,
title: 'Same as image',
lang: ['Save']
}
}
},
// Enable drag recalculate
calculable: true,
// Horizontal axis
xAxis: [{
type: 'category',
axisLabel: {
interval: 0
},
data: ['Paris','Budapest','Prague','Madrid','Amsterdam','Berlin','Bratislava','Munich','Hague','Rome','Milan']
}],
// Vertical axis
yAxis: [
{
type: 'value',
name: 'GDPmillion)',
max: 53500
},
{
type: 'value',
name: 'Othermillion)'
}
],
// Add series
series: [
{
name: 'GDP',
type: 'bar',
markLine: {
symbol: ['arrow','none'],
symbolSize: [4, 2],
itemStyle: {
normal: {
lineStyle: {color: 'orange'},
barBorderColor: 'orange',
label: {
position: 'left',
formatter: function(params) {
return Math.round(params.value);
},
textStyle: {color: 'orange'}
}
}
},
data: [{type: 'average', name: 'Average'}]
},
data: dataMap.dataGDP['2010']
},
{
name: 'Financial',
yAxisIndex: 1,
type: 'bar',
data: dataMap.dataFinancial['2010']
},
{
name: 'Real Estate',
yAxisIndex: 1,
type: 'bar',
data: dataMap.dataEstate['2010']
},
{
name: 'Primary industry',
yAxisIndex: 1,
type: 'bar',
data: dataMap.dataPI['2010']
},
{
name: 'Secondary industry',
yAxisIndex: 1,
type: 'bar',
data: dataMap.dataSI['2010']
},
{
name: 'Third industry',
yAxisIndex: 1,
type: 'bar',
data: dataMap.dataTI['2010']
}
]
},
// 2011 data
{
series: [
{data: dataMap.dataGDP['2011']},
{data: dataMap.dataFinancial['2011']},
{data: dataMap.dataEstate['2011']},
{data: dataMap.dataPI['2011']},
{data: dataMap.dataSI['2011']},
{data: dataMap.dataTI['2011']}
]
},
// 2012 data
{
series: [
{data: dataMap.dataGDP['2012']},
{data: dataMap.dataFinancial['2012']},
{data: dataMap.dataEstate['2012']},
{data: dataMap.dataPI['2012']},
{data: dataMap.dataSI['2012']},
{data: dataMap.dataTI['2012']}
]
},
// 2013 data
{
series: [
{data: dataMap.dataGDP['2013']},
{data: dataMap.dataFinancial['2013']},
{data: dataMap.dataEstate['2013']},
{data: dataMap.dataPI['2013']},
{data: dataMap.dataSI['2013']},
{data: dataMap.dataTI['2013']}
]
},
// 2014 data
{
series: [
{data: dataMap.dataGDP['2014']},
{data: dataMap.dataFinancial['2014']},
{data: dataMap.dataEstate['2014']},
{data: dataMap.dataPI['2014']},
{data: dataMap.dataSI['2014']},
{data: dataMap.dataTI['2014']}
]
}
]
};
//
// Stacked clustered columns options
//
stacked_clustered_columns_options = {
// Setup grid
grid: {
x: 65,
x2: 20,
y: 85,
y2: 25
},
// Add tooltip
tooltip: {
trigger: 'axis'
},
// Add legends
legend: {
data: [
'Version 1.7 - 2k data','Version 1.7 - 2w data','Version 1.7 - 20w data','',
'Version 2.0 - 2k data','Version 2.0 - 2w data','Version 2.0 - 20w data'
]
},
// Enable drag recalculate
calculable: true,
// Horizontal axis
xAxis: [
{
type: 'category',
data: ['Line','Bar','Scatter','Pies','Map']
},
{
type: 'category',
axisLine: {show:false},
axisTick: {show:false},
axisLabel: {show:false},
splitArea: {show:false},
splitLine: {show:false},
data: ['Line','Bar','Scatter','Pies','Map']
}
],
// Vertical axis
yAxis: [{
type: 'value',
axisLabel: {formatter:'{value} ms'},
axisLine: {
lineStyle: {
color: '#dc143c'
}
}
}],
// Add series
series: [
{
name: 'Version 2.0 - 2k data',
type: 'bar',
itemStyle: {
normal: {
color: '#F44336',
label: {
show: true,
textStyle: {
color: '#fff'
}
}
},
emphasis: {
label: {
show: true
}
}
},
data: [247, 187, 95, 175, 270]
},
{
name: 'Version 2.0 - 2w data',
type: 'bar',
itemStyle: {
normal: {
color: '#4CAF50',
label: {
show: true,
textStyle: {
color: '#fff'
}
}
},
emphasis: {
label: {
show: true
}
}
},
data: [488, 415, 405, 340, 328]
},
{
name: 'Version 2.0 - 20w data',
type: 'bar',
itemStyle: {
normal: {
color: '#2196F3',
label: {
show: true,
textStyle: {
color:'#fff'
}
}
},
emphasis: {
label: {
show: true
}
}
},
data: [906, 911, 908, 778, 550]
},
{
name: 'Version 1.7 - 2k data',
type: 'bar',
xAxisIndex: 1,
itemStyle: {
normal: {
color: '#E57373',
label: {
show: true,
formatter: function(p) {return p.value > 0 ? (p.value +'\n'):'';}
}
},
emphasis: {
label: {
show: true
}
}
},
data: [680, 819, 564, 724, 890]
},
{
name: 'Version 1.7 - 2w data',
type: 'bar',
xAxisIndex: 1,
itemStyle: {
normal: {
color: '#81C784',
label: {
show: true
}
},
emphasis: {
label: {
show: true
}
}
},
data: [1212, 2035, 1620, 955, 1300]
},
{
name: 'Version 1.7 - 20w data',
type: 'bar',
xAxisIndex: 1,
itemStyle: {
normal: {
color: '#64B5F6',
label: {
show: true,
formatter: function(p){return p.value > 0 ? (p.value +'+'):'';}
}
},
emphasis: {
label: {
show: false
}
}
},
data: [2200, 3000, 2500, 3000, 2000]
}
]
};
// Apply options
// ------------------------------
basic_columns.setOption(basic_columns_options);
stacked_columns.setOption(stacked_columns_options);
stacked_clustered_columns.setOption(stacked_clustered_columns_options);
thermometer_columns.setOption(thermometer_columns_options);
compositive_waterfall.setOption(compositive_waterfall_options);
change_waterfall.setOption(change_waterfall_options);
columns_timeline.setOption(columns_timeline_options);
// Resize charts
// ------------------------------
window.onresize = function () {
setTimeout(function () {
basic_columns.resize();
stacked_columns.resize();
stacked_clustered_columns.resize();
thermometer_columns.resize();
compositive_waterfall.resize();
change_waterfall.resize();
columns_timeline.resize();
}, 200);
}
}
);
});