diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2017-12-10 04:42:16 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2017-12-10 04:42:16 +0100 |
| commit | a932b664db987f2cf9ceefe9bb56e43793470d5e (patch) | |
| tree | bd0722849164218e418cc032d5a8a50d6b106709 /public/assets/js/lib/views/search/results.js | |
| parent | 9978bb56fc2c56ad52930bde9bcaa561158a158a (diff) | |
style search. LOTTA styling
Diffstat (limited to 'public/assets/js/lib/views/search/results.js')
| -rw-r--r-- | public/assets/js/lib/views/search/results.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/public/assets/js/lib/views/search/results.js b/public/assets/js/lib/views/search/results.js new file mode 100644 index 0000000..89004e3 --- /dev/null +++ b/public/assets/js/lib/views/search/results.js @@ -0,0 +1,71 @@ +var SearchResults = View.extend({ + + el: "#search", + template: $("#search .template").html(), + + events: { + }, + + action: "/api/search", + + initialize: function(opt){ + }, + + load: function(){ + var query = window.location.search.substr(1) + if (! query || ! query.length) { + $("#search").hide() + return + } + $.get(this.action, query, this.populate.bind(this)) + }, + + populate: function(res){ + var query = sanitize(res.meta.query) + var terms = res.meta.terms + console.log(res) + $("[name=query]").val(query) + this.$(".query").html(query) + this.$(".total").html(parseInt(res.meta.total)) + var next_page = { + query: res.meta.terms.join("+"), + start: res.meta.start + res.meta.limit, + limit: res.meta.limit, + } + this.$(".next_page").toggle(res.meta.start + res.meta.limit > res.meta.count) + this.$(".next_page").attr("href", querystring(next_page)) + res.results.forEach((result) => { + var image + if (result.file && is_image(result.file.filename)) { + image = result.file + } + else if (result.thread.flagged && is_image(result.thread.flagged.filename)) { + image = result.thread.flagged + } + var image_path = image ? '/data/' + result.thread.id + '/' + sanitize(image.filename) : '' + var file_tag = result.file ? '<a href="' + make_link(result.file) + '">' + bold_terms(sanitize(result.file.filename), terms) + '</a>' : '' + var t = this.template + .replace(/{{thread_id}}/g, sanitize("" + result.thread.id)) + .replace(/{{meta}}/, metadata(result.thread)) + .replace(/{{image}}/, image_path) + .replace(/{{title}}/, bold_terms(sanitize(result.thread.title), terms)) + .replace(/{{comment}}/, result.comment ? bold_terms(sanitize(result.comment.comment), terms) : '') + .replace(/{{file}}/, file_tag) + this.$("#results").append(t) + }) + }, + +}) + +function bold_terms (s, terms) { + s = sanitize(s) + terms.forEach( (term) => { + s = s.replace(new RegExp(term, "ig"), "<b>" + term + "</b>") + }) + return s +} +function querystring(opt){ + var s = Object.keys(opt).map((key) => { + return encodeURIComponent(key) + "=" + encodeURIComponent(opt[key]) + }).join("&") +} |
