2022 年 5 月 13 日 星期五
作者:Allan Jardine

DataTables 1.12

我非常榮幸地宣布 DataTables 1.12 的發布。這是一個漸進式的升級,使我們的預設樣式許多部分現代化,並顯著提高了國際化能力。

簡要概述,在這篇文章中,我將介紹 DataTables 中的以下增強功能

  • 內建日期/時間呈現和排序
  • 數字的自動地區設定呈現
  • 排序樣式改進
  • 列著色改進

隨著 DataTables 的發布,我們還更新了我們所有的擴充功能,以確保完全相容性、提供他們的新功能並解決已知的問題。請參閱本文末尾,以取得所有已發布軟體的完整發行說明連結。

此外,此版本標誌著我們對 DataTables 的 IE6 和 IE7 支援結束。雖然 Javascript 尚未移除對這些瀏覽器的支援 (並且在 DataTables 2 之前不會移除),因此它仍然可以在它們中大致運作,但現在已移除這些舊版瀏覽器的任何 CSS hack,因此我們只會分發完全有效的 CSS。

即時範例

讓我們看看 DataTables 1.12 的實際運作 - 任何使用過 DataTables 的人都會立即感到熟悉

姓名辦公室開始日期薪水
Tiger Nixon愛丁堡2011-04-25320800
Garrett Winters東京2011-07-25170750
Ashton Cox舊金山2009-01-1286000
Cedric Kelly愛丁堡2012-03-29433060
Airi Satou東京2008-11-28162700
Brielle Williamson紐約2012-12-02372000
Herrod Chandler舊金山2012-08-06137500
Rhona Davidson東京2010-10-14327900
Colleen Hurst舊金山2009-09-15205500
Sonya Frost愛丁堡2008-12-13103600
Jena Gaines倫敦2008-12-1990560
Quinn Flynn愛丁堡2013-03-03342000
Charde Marshall舊金山2008-10-16470600
Haley Kennedy倫敦2012-12-18313500
Tatyana Fitzpatrick倫敦2010-03-17385750
Michael Silva倫敦2012-11-27198500
Paul Byrd紐約2010-06-09725000
Gloria Little紐約2009-04-10237500
Bradley Greer倫敦2012-10-13132000
Dai Rios愛丁堡2012-09-26217500
Jenette Caldwell紐約2011-09-03345000
Yuri Berry紐約2009-06-25675000
Caesar Vance紐約2011-12-12106450
Doris Wilder雪梨2010-09-2085600
Angelica Ramos倫敦2009-10-091200000
Gavin Joyce愛丁堡2010-12-2292575
Jennifer Chang新加坡2010-11-14357650
Brenden Wagner舊金山2011-06-07206850
Fiona Green舊金山2010-03-11850000
Shou Itou東京2011-08-14163000
Michelle House雪梨2011-06-0295400
Suki Burks倫敦2009-10-22114500
Prescott Bartlett倫敦2011-05-07145000
Gavin Cortez舊金山2008-10-26235500
Martena Mccray愛丁堡2011-03-09324050
Unity Butler舊金山2009-12-0985675
Howard Hatfield舊金山2008-12-16164500
Hope Fuentes舊金山2010-02-12109850
Vivian Harrell舊金山2009-02-14452500
Timothy Mooney倫敦2008-12-11136200
Jackson Bradshaw紐約2008-09-26645750
Olivia Liang新加坡2011-02-03234500
Bruno Nash倫敦2011-05-03163500
Sakura Yamamoto東京2009-08-19139575
Thor Walton紐約2013-08-1198540
Finn Camacho舊金山2009-07-0787500
Serge Baldwin新加坡2012-04-09138575
Zenaida Frank紐約2010-01-04125250
Zorita Serrano舊金山2012-06-01115000
Jennifer Acosta愛丁堡2013-02-0175650
Cara Stevens紐約2011-12-06145600
Hermione Butler倫敦2011-03-21356250
Lael Greer倫敦2009-02-27103500
Jonas Alexander舊金山2010-07-1486500
Shad Decker愛丁堡2008-11-13183000
Michael Bruce新加坡2011-06-27183000
Donna Snider紐約2011-01-25112000

功能

內建日期/時間呈現和排序

在 DataTable 中顯示的最常見資料類型之一是日期和時間資訊。我們長期以來對 ISO8601 資料提供完整的內建支援,但格式化的日期和時間需要外掛程式。現在不需要了!現在可以使用新的 DataTable.render.date() 輔助函式DataTable.datetime() 函式來顯示格式化的日期並分別註冊格式化的日期。

地區設定格式

將日期和時間載入到 DataTable 中時,我們建議_線路資料_ (即由 Ajax 載入或從 HTML 讀取的資料) 採用 ISO8601 格式。新的 DateTable.render.date() 輔助工具可以使用 columns.render 指定給日期欄,它會自動將其格式化為您的最終使用者可以識別的格式 (例如,美國為 MM/DD/YYYY,英國為 DD/MM/YYYY 等 - 這會通過您的 瀏覽器 API 全球運作)。

例如,您可能會使用

$('#example').DataTable({
    columnDefs: [
        {
            target: 4,
            render: DataTable.render.date(),
        },
    ],
});

即時範例.

這不需要任何外部函式庫。如果您想要將瀏覽器的地區設定格式覆寫為自訂格式,也可以使用此輔助工具來完成,但您需要在您的頁面上提供 Moment.jsLuxon

自訂格式

當然,您的資料可能已經格式化。若要指示 DataTables 如何理解這些格式,請使用 DataTable.datetime() 函式,傳遞 Moment 或 Luxon 格式字串以向 DataTables 註冊格式 (從而允許對資料進行正確排序)。

DataTable.datetime('D MMM YYYY');
 
$(document).ready(function () {
    $('#example').DataTable();
});

即時範例.

請注意,在這種情況下,您的頁面上必須有 Moment 或 Luxon 才能註冊自訂格式,而且您應該使用您所使用函式庫的確切格式字串 (它們使用的格式略有不同)。

完整範例集

我們有一個新的日期/時間處理範例類別,您可以在這裡找到

數字的自動地區設定呈現

與日期格式類似,世界各地數字顯示的常見格式並非只有一種 (維基百科全球使用標準的地圖)。為了讓您的數值資料對每個人都容易理解,而無需您在每個地區設定上進行自訂組態,我們的 DataTable.render.number() 已更新為執行自動偵測。

您現在可以使用指派給 columns.renderDataTable.render.number() 來進行完全自動的數字格式化

$('#example').DataTable({
    columnDefs: [
        {
            target: 5,
            render: DataTable.render.number(),
        },
    ],
});

即時範例.

這是通過 Intl.NumberFormat API 完成的,所有 IE11 及更新版本的瀏覽器都提供該 API。

排序樣式改進

如果您將本頁頂端的範例表格與v1.11 樣式的表格進行比較,您會發現排序圖示已變更。以前,我們使用 png 背景圖片來表示表格的排序狀態。在 1.12 中,我們已移除這些圖片,並以 UTF8 圖示取而代之,這些圖示使用偽元素放置在標題中。這使得控制圖示、它們的顏色和其他樣式方面變得更加容易,因為現在不需要更新圖片,只需新增幾行 CSS 即可進行自訂。

此變更已傳播到我們在 DataTables 中支援的樣式框架 (例如 Bootstrap、FomaticUI 等),為輕鬆設定樣式提供了一致的整合。預設樣式與支援的樣式框架搭配使用效果非常好。

列著色改進

如果您曾經嘗試在 DataTables 中的表格儲存格或列新增背景顏色,您可能會很快遇到條紋列、順序醒目標示列、FixedColumns 等的顏色問題。最初看起來像是一個簡單的任務,可能會根據您使用的功能快速變成密集的 CSS。這是因為 DataTable 用於條紋列等的列著色是使用背景顏色完成的,導致潛在的衝突。

現在不需要了!我們的列著色現在都是使用嵌入式 box-shadow 完成的 (現代化我們 CSS 的另一個好處)。使用著色的 Alpha 通道,您現在可以簡單地將背景顏色應用於儲存格和列,它們將與所有 DataTables 功能一起運作,包括列選擇。

其他變更

還有許多較小的變更

  • 透過 Ajax 載入語言檔時,定義的本機語言選項現在將覆寫遠端載入的選項。
  • 現在有一個 columnDefs.target 選項 - 這只是 columnDefs.targets 的別名,但對於以單一欄為目標時很有用。
  • 預設的處理指示器已更新,更具吸引力。
  • nowrap 類別和其他文字對齊類別現在在所有支援的樣式整合中都可用。
  • pluck 支援巢狀資料。

接下來是什麼?

正如我在開始時提到的,這是 DataTables 的漸進式更新,還有更多內容即將推出。我們正在努力開發 DataTables 2,其中包括對版面配置方式進行重大變更 (可怕的 dom 選項!),以及更好的標題和頁尾處理。事實上,DataTables 2 已經在 CloudTables 中投入生產,但尚未準備好發布,而且某些功能需要完善。我不想等到完成並在此版本中包含此處描述的功能,而是希望儘快發布並提供這些功能。DataTables 2 尚未定義發布日期 - 它會在完成時完成!

很有可能這將是 1.x 系列中的最後一個 (儘管我在發布 1.10 和 1.11 時也這麼說)!

發行說明

以下是我們今天發布的所有更新版本的發行說明連結

這些版本現在都可從我們的下載產生器CDN、NPM 和 Nuget 取得。