锐2 DataTable的表尾统计
马特·帕克,2011年1月13日下午4:00 | 开发 | 2评论YUI 2 DataTable中做了很多。 但它不会做的事情之一是任何一个表尾,你可能期望找到总计,平均值或其他汇总数据。 所以我扩展的DataTable添加数字数据的汇总数据。
得到它去
首先,使用它:你需要一些代码github上 -有三个js文件,您需要所有YUI的DataTable的js文件后,在页面上。 和你可能想改变命名空间-我们使用YAHOO.LPLT.DataTable作为扩展YAHOO.widget.DataTable 。 下面这些文件,我将解释多一点。
设置您的DataTable正常,但有三样东西,你需要做的就是总结工作:
- 确保您的数据源指定要汇总的任何领域的“数字”的解析器,特别是如果你做内联单元格编辑:
myDataSource.responseSchema = {领域: {键:“量”,解析器:“数”} / *等...... * / ]};
- 新增配置的columnStats的关键价值:在您的列定义数组的真实:
VAR myColumnDefs = [ {键:“量”的标签:“数量”,columnStats:真} / *等...... * / ;
对于列,你想总结。 (您的'身份证'列的总数可能是不是非常有帮助!)。 - 告诉DataTable的统计数据计算:
myDataTable =新YAHOO.LPLT.DataTable(“exampleEl” myColumnDefs, myDataSource, {columnStats:{:真实,统计:['总和']}} );
这是最简单的方式来配置列统计,但可以添加额外的统计数据,自定义标签,更多。
还有一个例子github上玩。
几点:
- 页脚会改变你的表。 所以,如果你显示/隐藏列,他们周围移动,添加新的,添加/删除行,排序,或使用内联的单元格编辑器,页脚会更新相应的UI和统计。
- 您可以添加许多行之躯,只要你喜欢,一排每个统计。 因为它的立场,你可以有平均数,中位数,总和,最小值,最大值,范围,标准偏差,方差,或varianceUnbiased。 配置项的“统计”是一个数组:只需添加你想这个阵列(如
stats: ["min", "median", "stdev"])的统计。 - 表格页脚将使用该列指定任何格式化。
- 如果你有一个paginator,你可以选择是否统计显示整个表或只是当前可见页面。 添加
pagedTotals: true的columnStats反对页的统计。 - '统计'也可以在config对象数组包括对象的文字,与键“标签”和“新生力量”。 fn是函数将计算统计 - 无论是像'分'或一个函数,返回一个数字的字符串。 在GitHub上的示例显示如何,你可以做两列“加权总”的使用数据。
实际的扩展代码
主要文件,YAHOO_DataTable_colStats.js,增加了几个保护性质的DataTable,一些受保护的方法,和两个公共方法,这将重新计算和重绘表格页脚colStatsRefresh , colStatsGetRecordSet ,它返回所有数组记录,或者只是那些看得见,取决于价值pagedTotals 。 第一可能是有用的,如果你进行更改的表不火有用的事件(例如直接改变底层的Recordset中的数据);第二,如果你使用自定义汇总函数。
YAHOO_DataSource_patch.js增加了一个, parseField(key, value)到数据源的方法。 这是必要的,当你有数值数据框内嵌单元格编辑器,编辑器返回一个字符串,这是不解析自动,所以不能添加。 parseField提供在DataSource指定的解析器的访问,编辑数据转换。
YAHOO_util_Stats.js提供了一个的独立YAHOO.util.Stats类包装(排序)阵列的数字数据,并提供汇总统计。 它只依赖YAHOO.lang。 实例是一个YAHOO.util.Stats保持DataTable中的每一列是要总结,和缓存更难数学的一些,以提高性能。 统计阵列('分','中位数'等),通过字符串方法是的YAHOO.util.Stats类,所以你可以很容易地添加额外的加入原型。 注意:虽然他们只有'他们的'列的数据的访问。
最后
我敢肯定,这是行不通的,滚动的DataTable,所以即使我没有尝试过! 但是,如果您发现任何问题或有想法,做请他们放在github上的问题跟踪。
作者简介:马特·帕克( @ Twitter的Lamplightdb )的创始人和开发商灯光下的数据库系统 ,一个小公司,提供一个全功能的基于Web的管理系统在英国的非利润。 马特在北伦敦西部的生活和作品。
共享和扩展: 书签del.icio.us Digg它! | reddit!
2评论
很抱歉,评论已被封闭,在这个时候。


你好马克,
这是很好的例子感谢,但我有一个问题是没有任何机会,我们可以添加在任何指数,而不是在表的最后加入一行(或位置)。
迪利普- 7月25日,2011年#
您好迪利普
首先,我马特!
不容易。 的统计资料呈现在TFOOT,这在语义上是正确的,不是由DataTable的使用,因此不会干扰表的渲染和其他业务。 试图移动到表的主要TBODY这将是不愉快的(表进行排序时,会发生什么情况,例如,...)。
尽管如此,该代码是在github上,如果你愿意把它和改变它(和做后回到这里,如果你成功了!)
马特
马特·帕克 - 7月26日,2011年#