2017 年 11 月 30 日星期四

實驗:SearchPane

通常,當我為 DataTables 發布新軟體時,我會以符合自己需求的方式構建它,在我認為合適的地方進行通用化,然後發布並從那裡開始迭代。然而,這次我想採取稍微不同的方法,在將其包含在 DataTables 擴充功能之前,先為 DataTables 引入一個名為 SearchPane 的新外掛。這既是為了看看人們是否對其提供的功能感興趣,也是為了徵求回饋意見,了解您希望看到修改/改進/添加/刪除等事項。

首先 - 什麼是 SearchPane?簡而言之,它是 DataTables 的欄位篩選介面。它會顯示欄位中可以找到的值清單,讓最終使用者可以點擊來搜尋表格中符合的資料。它是基於欄位的 OR 篩選器 - 也就是說,加入多個選項將顯示符合任何這些資料點的列。

讓我們看看它的實際運作

姓名職位辦公室年齡開始日期薪資
Tiger Nixon系統架構師愛丁堡612011-04-25$320,800
Garrett Winters會計師東京632011-07-25$170,750
Ashton Cox初級技術寫手舊金山662009-01-12$86,000
Cedric Kelly資深 JavaScript 開發人員愛丁堡222012-03-29$433,060
Airi Satou會計師東京332008-11-28$162,700
Brielle Williamson整合專員紐約612012-12-02$372,000
Herrod Chandler銷售助理舊金山592012-08-06$137,500
Rhona Davidson整合專員東京552010-10-14$327,900
Colleen HurstJavaScript 開發人員舊金山392009-09-15$205,500
Sonya Frost軟體工程師愛丁堡232008-12-13$103,600
Jena Gaines辦公室經理倫敦302008-12-19$90,560
Quinn Flynn支援主管愛丁堡222013-03-03$342,000
Charde Marshall區域總監舊金山362008-10-16$470,600
Haley Kennedy資深行銷設計師倫敦432012-12-18$313,500
Tatyana Fitzpatrick區域總監倫敦192010-03-17$385,750
Michael Silva行銷設計師倫敦662012-11-27$198,500
Paul Byrd財務長 (CFO)紐約642010-06-09$725,000
Gloria Little系統管理員紐約592009-04-10$237,500
Bradley Greer軟體工程師倫敦412012-10-13$132,000
Dai Rios人事主管愛丁堡352012-09-26$217,500
Jenette Caldwell開發主管紐約302011-09-03$345,000
Yuri Berry行銷長 (CMO)紐約402009-06-25$675,000
Caesar Vance銷售前支援紐約212011-12-12$106,450
Doris Wilder銷售助理雪梨232010-09-20$85,600
Angelica Ramos執行長 (CEO)倫敦472009-10-09$1,200,000
Gavin Joyce開發人員愛丁堡422010-12-22$92,575
Jennifer Chang區域總監新加坡282010-11-14$357,650
Brenden Wagner軟體工程師舊金山282011-06-07$206,850
Fiona Green營運長 (COO)舊金山482010-03-11$850,000
Shou Itou區域行銷東京202011-08-14$163,000
Michelle House整合專員雪梨372011-06-02$95,400
Suki Burks開發人員倫敦532009-10-22$114,500
Prescott Bartlett技術寫手倫敦272011-05-07$145,000
Gavin Cortez團隊領導舊金山222008-10-26$235,500
Martena Mccray銷售後支援愛丁堡462011-03-09$324,050
Unity Butler行銷設計師舊金山472009-12-09$85,675
Howard Hatfield辦公室經理舊金山512008-12-16$164,500
Hope Fuentes秘書舊金山412010-02-12$109,850
Vivian Harrell財務總監舊金山622009-02-14$452,500
Timothy Mooney辦公室經理倫敦372008-12-11$136,200
Jackson Bradshaw主管紐約652008-09-26$645,750
Olivia Liang支援工程師新加坡642011-02-03$234,500
Bruno Nash軟體工程師倫敦382011-05-03$163,500
Sakura Yamamoto支援工程師東京372009-08-19$139,575
Thor Walton開發人員紐約612013-08-11$98,540
Finn Camacho支援工程師舊金山472009-07-07$87,500
Serge Baldwin資料協調員新加坡642012-04-09$138,575
Zenaida Frank軟體工程師紐約632010-01-04$125,250
Zorita Serrano軟體工程師舊金山562012-06-01$115,000
Jennifer Acosta初級 JavaScript 開發人員愛丁堡432013-02-01$75,650
Cara Stevens銷售助理紐約462011-12-06$145,600
Hermione Butler區域總監倫敦472011-03-21$356,250
Lael Greer系統管理員倫敦212009-02-27$103,500
Jonas Alexander開發人員舊金山302010-07-14$86,500
Shad Decker區域總監愛丁堡512008-11-13$183,000
Michael BruceJavaScript 開發人員新加坡292011-06-27$183,000
Donna Snider客戶支援紐約272011-01-25$112,000
姓名職位辦公室年齡開始日期薪資

您也可以單獨查看此範例,以及以垂直顯示方式查看。

初始化

若要在您自己的頁面上使用 SearchPane,您需要做的第一件事是在您的頁面上包含其 CSS 和 JavaScript。

CSS
JS

然後只需將 searchPane 選項新增至您的 DataTable 初始化中,這將啟用具有預設選項的 SearchPane。

$('#myTable').DataTable( {
    searchPane: true
} )

選項

如同現有的擴充功能,SearchPane 可以透過多個選項進行設定。此初始版本只有四個選項。

  • container - 一個 DOM 節點,或傳回 DOM 節點的函式,應該將搜尋窗格新增到該節點。這可讓您將窗格插入文件中的任何位置。由於搜尋窗格佔用的螢幕空間比大多數 DataTables 擴充功能都多,因此這可能非常有用。
  • columns - 應該顯示搜尋窗格的欄位。這是一個 欄位選取器,可以使用任何這些選項。另請注意,threshold 選項(如下)可能會影響顯示哪些欄位。
  • insert - 定義搜尋窗格應附加到 (append) 還是前置到 (prepend) 由 container 選項定義的元素。預設值為 prepend
  • threshold - SearchPane 計算欄位中資料分佈的變異數,並使用它來自動決定是否應該顯示該欄位的搜尋窗格。例如,對於每個值都是唯一的欄位顯示窗格是相對沒有意義的 - 最終使用者最好查看主表格。此預設值設定為 0.5,但可以根據需要進行更改。每個儲存格中都有不同值的欄位,其變異數將為 0。

範例

以下範例顯示在 DataTable 中初始化 SearchPane,並指定容器和閾值。

$('#example').DataTable( {
    searchPane: {
        container: '.searchPanes',
        threshold: 0
    }
} );

API

當表格中的資料更新時,您會希望搜尋窗格反映此更新的資料 - 這可以使用 searchPanes.rebuild() 方法來完成 - 例如

var table = $('#example').DataTable( {
    searchPane: true
} );

table.row.add( ... ).draw();
table.searchPanes.rebuild();

回饋

您覺得如何?這是應該繼續開發並建構成為 DataTables 完整擴充功能的功能嗎?請在此論壇主題中留下回饋意見,以便將回饋意見彙整在一個位置。

此外,該軟體在 MIT 授權下是開放原始碼,請 fork 並使用您新增的任何變更提供 pull request。

祝您使用愉快!