◎本文翻譯自 The New York Times,原作者為 Erik Hinton 與 Ben Koski︰
https://open.blogs.nytimes.com/2014/04/16/introducing-pourover-and-tamper/
這一年多來,我們投入於 PourOver.js 與 Tamper 的研發。它們是運用在 Red Carpet 專案、乳癌面貌 (Faces of Breast Cancer) 與高層建築讀者故事 (High-Rise reader stories) 背後的內部程式庫。
現在,你可以在 GitHub 上找到它們:
PourOver.js:一套在瀏覽器中過濾、分頁、更新、排序資料集合的程式庫。
Tamper:一套序列化 (serializing) 與壓縮分類資料 (categorical data) 的協定。
兩套專案都有完整文件,PourOver 更提供涵蓋基本功能的一系列範例。在 OpenNews Source 部落格上也有一篇協同報導,詳述專案的演進。
我們在此想用一些很酷的例子,來展示上述專案能做到的事:
你可以用 Boolean 操作串接過濾器。此種組合不需從頭到尾重複計算,只需花時間在找出過濾器索引的聯集、交集、差異即可。你可以拿顏色、尺寸大小、形狀過濾器,用它們找出紅或藍且不是方形的大號形狀:
color_match_r = collection.filters.color.getFn("red")
color_match_b = collection.filters.color.getFn("blue")
size_match = collection.filters.size.getFn("big")
shape_match = collection.filters.shape.getFn("square")
big_red_non_squares = color_match_r
.or(color_match_b)
.and(size_match)
.not(shape_match)
PourOver 允許混合單純的查詢與具有狀態的查詢。假如你需要的是一般的查詢,沒問題,過濾器不會記得上次 getFn 的結果。
color_match = collection.filters.color.getFn("red")
color_match.current_query // >> undefined
如果你想要的是具有狀態的查詢,過濾器會記得你上次的 query 內容。
collection.filters.color.query(“red”)
collection.filters.color.current_query // >> [和紅色東西有關的 MatchSet]
你可以輕鬆利用 PourOver 建立 view,儲存你目前的頁面以及上次的查詢。當資料集合中的項目有所更動、新增或刪除,這個 view 都會自動更新。
view = new PourOver.view(“my_view”,collection,{page_size: 1})
view.page(1) // 向右 1 頁
collection.addItems(new_items)
// view 會持續分頁在之前的項目上,有必要的話會更新頁面。還有如果有新的項目合乎目前選擇的過濾器,就會自動加進 view 目前的項目當中。
僅用 1KB ,Tamper 就能表達 1 萬張照片的分類資料: gist.github.com/bkoski/10779733#file-gistfile1-json
我們期望這些程式庫能對你有所幫助。歡迎在 GitHub 上提出問題 (issue) 或提交 pull request。你也可以直接寫信到 這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看 或 這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看 。不論內部或外界,這些程式庫都正受到積極的採用,它們可望持續演進:我們會在此發佈更新訊息或重大釋出。