銳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年#