bugfix
This commit is contained in:
parent
9f1e69032f
commit
d6e0fcc291
58
bricks/bar.js
Normal file
58
bricks/bar.js
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
var bricks = window.bricks || {};
|
||||||
|
|
||||||
|
bricks.ChartBar = class extends bricks.EchartsExt {
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
data_url,
|
||||||
|
data_params,
|
||||||
|
method,
|
||||||
|
data,
|
||||||
|
line_options,
|
||||||
|
nameField,
|
||||||
|
valueFields
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
values_from_data(data, name){
|
||||||
|
var d = [];
|
||||||
|
data.forEach(x => {
|
||||||
|
d.push(x[name]);
|
||||||
|
});
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
lineinfo_from_data(data, name){
|
||||||
|
return {
|
||||||
|
name:name,
|
||||||
|
type:'bar',
|
||||||
|
data:this.values_from_data(data, name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setup_options(data){
|
||||||
|
var n_data = [];
|
||||||
|
var series = [];
|
||||||
|
this.valueFields.forEach(v => {
|
||||||
|
series.push(this.lineinfo_from_data(data, v));
|
||||||
|
});
|
||||||
|
data.forEach(d => {
|
||||||
|
n_data.push(d[this.nameField]);
|
||||||
|
});
|
||||||
|
var opts = {
|
||||||
|
tooltip:{
|
||||||
|
trigger:'axis'
|
||||||
|
},
|
||||||
|
legend:{
|
||||||
|
data:n_data
|
||||||
|
},
|
||||||
|
xAxis:{
|
||||||
|
type:'category',
|
||||||
|
data: n_data
|
||||||
|
},
|
||||||
|
yAxis:{
|
||||||
|
type: 'value'
|
||||||
|
},
|
||||||
|
series:series
|
||||||
|
}
|
||||||
|
return opts;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bricks.Factory.register('ChartBar', bricks.ChartBar);
|
58
bricks/echartsext.js
Normal file
58
bricks/echartsext.js
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
var bricks = window.bricks || {};
|
||||||
|
bricks.bug = true;
|
||||||
|
bricks.EchartsExt = class extends bricks.VBox {
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
title:
|
||||||
|
description:
|
||||||
|
pie_optiosn:
|
||||||
|
data_url:
|
||||||
|
nameField:
|
||||||
|
valueField:
|
||||||
|
data_params:
|
||||||
|
data:[]
|
||||||
|
}
|
||||||
|
event:element_click
|
||||||
|
|
||||||
|
*/
|
||||||
|
constructor(opts){
|
||||||
|
super(opts);
|
||||||
|
if(!this.idField) this.idField = 'id';
|
||||||
|
if(!this.nameField) this.nameField = 'name';
|
||||||
|
if(!this.valueFields) this.valueFields = ['value'];
|
||||||
|
this.build_title_widget();
|
||||||
|
this.build_description_widget();
|
||||||
|
this.holder = new bricks.Filler({});
|
||||||
|
this.add_widget(this.holder);
|
||||||
|
this.chart = echarts.init(this.holder.dom_element);
|
||||||
|
if (this.user_data){
|
||||||
|
this.render_data(this.user_data)
|
||||||
|
} else if (this.data_url) {
|
||||||
|
schedule_once(this.render_urldata.bind(this), 0.1);
|
||||||
|
}
|
||||||
|
this.bind('element_resize', this.chart.resize.bind(this.chart));
|
||||||
|
}
|
||||||
|
render_data(){
|
||||||
|
var data = this.user_data;
|
||||||
|
var opts = this.setup_options(data);
|
||||||
|
console.log('opts=', opts);
|
||||||
|
this.chart.setOption(opts);
|
||||||
|
this.chart.on('click', this.click_handle.bind(this));
|
||||||
|
}
|
||||||
|
click_handle(params){
|
||||||
|
console.log('params=', params);
|
||||||
|
this.dispatch('element_click', this.user_data[params.dataIndex]);
|
||||||
|
}
|
||||||
|
async render_urldata(params){
|
||||||
|
if (! params) params = {};
|
||||||
|
var _params = bricks.extend({}, this.data_params);
|
||||||
|
_params = bricks.extend(_params, params);
|
||||||
|
var jc = new bricks.HttpJson();
|
||||||
|
var d = await jc.httpcall(this.data_url, {method:this.method || 'GET', params:_params});
|
||||||
|
if (d){
|
||||||
|
this.user_data = d;
|
||||||
|
this.render_data();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
47
bricks/pie.js
Normal file
47
bricks/pie.js
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
var bricks = window.bricks || {};
|
||||||
|
|
||||||
|
bricks.ChartPie = class extends bricks.EchartsExt {
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
title:
|
||||||
|
description:
|
||||||
|
legend:
|
||||||
|
pie_optiosn:
|
||||||
|
data_url:
|
||||||
|
nameField:
|
||||||
|
valueFields:
|
||||||
|
data_params:
|
||||||
|
data:[]
|
||||||
|
}
|
||||||
|
event:element_click
|
||||||
|
|
||||||
|
*/
|
||||||
|
constructor(opts){
|
||||||
|
super(opts);
|
||||||
|
}
|
||||||
|
setup_options(data){
|
||||||
|
var nd = [];
|
||||||
|
data.forEach(d => {
|
||||||
|
var x = {};
|
||||||
|
x.value = d[this.valueFields[0]];
|
||||||
|
x.name = d[this.nameField];
|
||||||
|
nd.push(x);
|
||||||
|
});
|
||||||
|
var s_opts = bricks.extend({}, this.pie_options);
|
||||||
|
s_opts.data = nd;
|
||||||
|
var legend = this.legend || {};
|
||||||
|
// legend.data = this.valueFields;
|
||||||
|
var options = {
|
||||||
|
legend:legend,
|
||||||
|
tooltip:{
|
||||||
|
trigger: 'item'
|
||||||
|
},
|
||||||
|
series:[
|
||||||
|
s_opts
|
||||||
|
]
|
||||||
|
}
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bricks.Factory.register('ChartPie', bricks.ChartPie);
|
Loading…
Reference in New Issue
Block a user