您的位置:首页 > Web前端 > JavaScript

NeralJS需求整理及思路

2014-12-25 16:53 106 查看
NeralJs希望通过解析json数据,动态创建和渲染报表,每个报表呈现一定时间范围的数据,通过使用表格图表等不同的方式,使数据的呈现不死板,且更容易看出规律。

说通俗点,就是动态在一个区域内生成多张图表。

经过深思熟虑(其实写之前什么都没想,想到一点写一点),有以下几个问题需要考虑:

1、由于数据是在报表呈现时从后台直接拉取的,那么在json中应该保存的就是这组数据的定义,如何定义?

  如某淘宝商店销售天数据:[10,12,8,9,3,1,12],这些数据都被保存在后台,并被命名为DayIncom,当然天数据每天都有,所以数据库中根据时间存了很多组,所以还需要确定时间区间。如时间是2014/12/5至2014/12/12日。

最后json中保存格式变成这样:

{
title:'淘宝销售天数据',//对应到图例
uid: 'DayIncome',
dataRange: { start: '2014/11/8', end: '2014/-1/-1' },
}


通过ajax向后台发送请求,请求内容如上,后台解析数据返回需要的内容。

2、动态数据加载,如果数据组太多,如何减少请求?

  如果一个报表页面每个需要加载10个左右的数据组,那么ajax服务就需要请求10次,不仅效率低下而且服务器会负载,所以需要建立一个ajax的管理模块,将需要请求的数据收集起来,一次发送,同时在接收完毕时触发自定义消息,通知视图管理模块更新图表内容。

3、ajax管理模块ajaxManager的功能确定

  ajax管理模块需要接收多组如上1中所说的数据对象,并统一发送请求,并允许对象监听请求成功事件,将指定的数据告诉视图管理模块。整理一下这句需求得到下面的几个函数:

function AjaxManager(){
void addRequest(info);//接收多组数据对象
void DoRequest();//统一发送请求
void OnReady(uid,function);//允许对象监听请求成功事件,并返回对应的数据
}


4、视图管理模块ViewManager的确定

  视图管理模块需要对所有的视图进行管理,考虑到之后可能会需要修改和移动视图的功能,暂定功能为增、删、改。同时,为了模块清晰,功能单一,只是生产一个空的div框,内部实现,如多标签等功能,交给Panel模块实现。模块需要增删,所以不能简单的使用内部index的方式定位到模块(原来有3个div,编号0,1,2。现在删除1号视图框,则2号的实际保存编号变成1),使用随机生成的GUid作为框体的id属性

{
x: 20,
y: 20,
width: 800,
height: 510
}


5、Panel模块的确定

  Panel模块用于生成多标签的框体,同时控制内部内容的显示。何为内部内容显示,即需要解析json数据,向Ajax管理模块增加ajax请求,并读取返回的内容,渲染图表。

下图创建一个两个标签的panel:

{
tab_count:2,
tab_text:["标签1","标签2"]
}


6、综合

{
components: [
{//对应一个chart控件
type: 'line',
series:[
{ title:'淘宝销售天数据',//对应到图例 uid: 'DayIncome', dataRange: { start: '2014/11/8', end: '2014/-1/-1' }, }
],
panel_index:"标签2"
}
],

panels: {
canvas: {
width: 1200,
height: 600
},
data: [
{
x: 20,
y: 20,
width: 800,
height: 510,
tab_count:2,
tab_text:["标签1","标签2"]
},
{
x: 835,
y: 20,
width: 300,
height: 250,
tab_count:1,
tab_text:["标签3"]
},
{
x: 835,
y: 280,
width: 300,
height: 250,
tab_count:1,
tab_text:["标签4"]
}
]
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: