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"]
}
]
}
};

NeralJS需求整理及思路的更多相关文章

  1. 用MVC5+EF6+WebApi 做一个小功能(二) 项目需求整理

    在一个项目开始前,需求整理大概要占到整个项目周期15%甚至30%的比重,可以说需求理得越清楚,后续开发中返工几率越小.在一个项目中,开发新功能的花费的精力要远远小于修改功能的精力,这基本是一个共识.老 ...

  2. CMDB服务器管理系统【s5day87】:需求讨论-设计思路

    自动化运维平台愿景和服务器管理系统背景 服务器管理系统 管理后台示例 需求和设计 为什么开发服务器管理系统? 背景: 原来是用Excel维护服务器资产,samb服务[多个运维人员手动维护] 搭建运维自 ...

  3. python UI自动化实战记录一:测试需求与测试思路

    测试需求: 项目包含两个数据展示页面,数据均来自于四个数据源接口. 测试操作步骤: 选择5个大类型中的一个,每个大类型下有3个子类型,选择任一子类型,页面数据更新.需验证页面上的数据与数据源接口数据一 ...

  4. python接口测试-项目实践(一) 测试需求与测试思路

    测试需求: 第三方系统提供了3个接口,需要测试前端显示的字符串里的对应数据与接口数据是否一致. 测试分层: 开发人员的设计:每周从接口取一次数据,拼接完成后保存到数据库.再从数据库取数提供接口给前端开 ...

  5. 常见 git 需求整理(持续更新中)

    首发于 语雀文档 突然感觉自己对 git 还是挺熟悉的,因为团队里新来的七八号应届生来问我 git 问题,基本没有答不上的情况,但为了能更好地对知识进行整理,还是记录一下为好. (希望能)持续更新.. ...

  6. Axure XMind整理交互思路

    本部分主要是为了研究Xmind思维导图总结设计原型的思路

  7. mess系统 开发技术,需求整理

    1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源(如html 页 ...

  8. 怎么用思维导图软件iMindMap整理发文思路

    如果你是一个普通的博客作者,那么你就应该明白在枯竭时寻找灵感就像是一场噩梦,即使你有一千个想法,但是你无法将它们关联起来也是无用的,所以,为什么不试试iMindMap思维导图呢,尝试创新,进行组建,你 ...

  9. 16.MindManager整理交互思路

    点住主题同时按ins键可以插入一个支节点 右键主题选择下方的排列图表 可以选择排列方式 按住主题同时ctr+v就会粘帖成一个子主题 文本也可以复制黏贴 主题内容可以直接选择拖动更改结构 选择主题框上的 ...

随机推荐

  1. [转]SGI STL 红黑树(Red-Black Tree)源代码分析

    STL提供了许多好用的数据结构与算法,使我们不必为做许许多多的重复劳动.STL里实现了一个树结构-Red-Black Tree,它也是STL里唯一实现的一个树状数据结构,并且它是map, multim ...

  2. Delphi 串口打印机打印

    一.硬件准备 打印机: 打印机必须具有串口,没有标配串口的打印机,必须购买串口卡,串口卡的型号请参考随机<操作手册>. 计算机: 计算机必须具有串口,计算机通常具有两个串口:COM1和CO ...

  3. 将Activity设置成半透明的对话框

    将Activity设置成半透明的对话框 在定义Activity时指定Theme.Dialog主题就可以将Activity设置成对话框风格.通过修饰Theme.Dialog主题的android:wind ...

  4. 了解JVM

    ---恢复内容开始--- Java对象在运行环境中,对于内存而言,存在三种状态:年轻代.年老代.永生代: 下图是JVM内存模型 1. 年轻代被分为3个部分:Enden区和两个Survivor区,垃圾回 ...

  5. wm_char

    用于接收键盘输入的消息 int CXuexi2View::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateS ...

  6. xheditor在线编辑器的使用

    在你所需要在线编辑器的工程目录下,导入xheditor_emot.xheditor_plugins和xheditor_skin.jquery四个文件夹,然后在textarea标签中加入: class= ...

  7. C++通过OCCI操作Oracle数据库详解

    1.安装OCCI 如果oracle数据库默认没有安装OCCI,可以自己从官网上下载与自己数据库版本一致的API,其中包含四个软件包: oracle-instantclient-sqlplus-10.2 ...

  8. day04

    1.divmod(x,y)获取一个整数x除以y的商和余数 ret = divmod(, ) print(ret) 2.获取随机验证码 import random l = [] , ): t = ran ...

  9. UI、ID、UE和GUI,这些都是什么

    在网页和应用设计领域中,我们经常会听到人们用这些英文缩写描述设计工作,那么它们各自代表什么含义?具体的工作.方向和区别是什么呢? 下面让我们先来看看它们的英文全称和基本概念. UI(User Inte ...

  10. findstr 只搜寻指定文件类型

    Title:findstr 只搜寻指定文件类型 --2012-05-04 09:27 findstr /i /m /S /C:"关键字"  *.php *.asp *.jsp