From 35c068ede83045489a9e88c986b77ae90115d44d Mon Sep 17 00:00:00 2001 From: Xuan Sang LE Date: Sat, 3 Mar 2018 13:44:52 +0100 Subject: [PATCH] add search mechanism to API --- src/core/api.coffee | 19 ++++++++++-- src/core/settings.coffee | 16 +++++++++- src/core/tags/afx-list-view.js | 20 ++++++++++++- src/packages/CoreServices/Calendar.coffee | 3 +- src/packages/CoreServices/Spotlight.coffee | 35 +++++++++++++++++++++- src/packages/CoreServices/main.css | 4 ++- 6 files changed, 88 insertions(+), 9 deletions(-) diff --git a/src/core/api.coffee b/src/core/api.coffee index 138672e..d885a80 100644 --- a/src/core/api.coffee +++ b/src/core/api.coffee @@ -42,8 +42,9 @@ self.OS.API = # the handler object could be a any remote or local handle to # fetch user data, used by the API to make requests # handlers are defined in /src/handlers - handler: { } + handler: {} shared: {} # shared libraries + searchHandler:{} #request a user data mid: () -> return _courrier.getMID() @@ -208,6 +209,19 @@ self.OS.API = command: "cache", args: { paths: _OS.setting.system.pkgpaths } }, f + search: (text) -> + r = [] + + for k, v of _API.searchHandler + ret = _API.searchHandler[k](text) + if ret.length > 0 + ret.unshift { text: k, class: "search-header", dataid: "header" } + r = r.concat ret + return r + + onsearch: (name, fn) -> + _API.searchHandler[name] = fn unless _API.searchHandler[name] + throwe: (n) -> err = undefined try @@ -215,5 +229,4 @@ self.OS.API = catch e err = e return "" if not err - return err - + return err \ No newline at end of file diff --git a/src/core/settings.coffee b/src/core/settings.coffee index e622539..2b79ebe 100644 --- a/src/core/settings.coffee +++ b/src/core/settings.coffee @@ -41,4 +41,18 @@ apilink: "https://apis.google.com/js/api.js" DISCOVERY_DOCS: ["https://www.googleapis.com/discovery/v1/apis/drive/v3/rest"] SCOPES: 'https://www.googleapis.com/auth/drive' - } unless _OS.setting.VFS.gdrive \ No newline at end of file + } unless _OS.setting.VFS.gdrive + + #search for app + _API.onsearch "Applications", (t) -> + ar = [] + term = new RegExp t, "i" + for k, v of _OS.setting.system.packages when v.app + if (v.name.match term) or (v.description and v.description.match term) + ar.push v + else if v.mimes + for m in v.mimes + if t.match (new RegExp m, "g") + ar.push v + break + return ar \ No newline at end of file diff --git a/src/core/tags/afx-list-view.js b/src/core/tags/afx-list-view.js index 6bc9692..084aba6 100644 --- a/src/core/tags/afx-list-view.js +++ b/src/core/tags/afx-list-view.js @@ -4,7 +4,7 @@