summaryrefslogtreecommitdiff
path: root/public/assets/js/lib/views/search/results.js
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2017-12-10 04:42:16 +0100
committerJules Laplace <julescarbon@gmail.com>2017-12-10 04:42:16 +0100
commita932b664db987f2cf9ceefe9bb56e43793470d5e (patch)
treebd0722849164218e418cc032d5a8a50d6b106709 /public/assets/js/lib/views/search/results.js
parent9978bb56fc2c56ad52930bde9bcaa561158a158a (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.js71
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("&")
+}