diff --git a/pgml-dashboard/src/components/pages/blog/blog_search/call/call_controller.js b/pgml-dashboard/src/components/pages/blog/blog_search/call/call_controller.js
index 79a4bd368..68fbaaacc 100644
--- a/pgml-dashboard/src/components/pages/blog/blog_search/call/call_controller.js
+++ b/pgml-dashboard/src/components/pages/blog/blog_search/call/call_controller.js
@@ -10,6 +10,23 @@ export default class extends Controller {
connect() {
this.timer;
this.tags = "";
+
+ document.addEventListener("click", this.handle_search_click);
+ }
+
+ handle_search_click(e) {
+ const target = e.target.closest(".blog-search-result");
+ if (target) {
+ const resultIndex = target.getAttribute("data-result-index");
+ const searchId = target.getAttribute("data-search-id");
+ const formData = new FormData();
+ formData.append("search_id", searchId);
+ formData.append("clicked", resultIndex);
+ fetch('/search_event', {
+ method: 'POST',
+ body: formData,
+ });
+ }
}
search() {
@@ -49,4 +66,8 @@ export default class extends Controller {
this.tags = "";
this.search();
}
+
+ disconnect() {
+ document.removeEventListener("click", this.handle_search_click);
+ }
}
diff --git a/pgml-dashboard/src/components/pages/blog/blog_search/response/mod.rs b/pgml-dashboard/src/components/pages/blog/blog_search/response/mod.rs
index ac8a89af1..5091ff85e 100644
--- a/pgml-dashboard/src/components/pages/blog/blog_search/response/mod.rs
+++ b/pgml-dashboard/src/components/pages/blog/blog_search/response/mod.rs
@@ -6,11 +6,15 @@ use sailfish::TemplateOnce;
#[template(path = "pages/blog/blog_search/response/template.html")]
pub struct Response {
html: Vec,
+ search_id: Option,
}
impl Response {
- pub fn new() -> Response {
- Response { html: Vec::new() }
+ pub fn new(search_id: Option) -> Response {
+ Response {
+ html: Vec::new(),
+ search_id,
+ }
}
pub fn pattern(mut self, mut articles: Vec, is_search: bool) -> Response {
@@ -53,7 +57,8 @@ impl Response {
};
articles.reverse();
- while articles.len() > 0 {
+ let mut search_result_index = 0;
+ while !articles.is_empty() {
// Get the row pattern or repeat the last two row patterns.
let pattern = match layout.get(cycle) {
Some(pattern) => pattern,
@@ -74,11 +79,12 @@ impl Response {
for (i, doc) in row.into_iter().enumerate() {
let template = pattern[i];
html.push(
- ArticlePreview::new(&doc.unwrap())
+ ArticlePreview::new(&doc.unwrap(), self.search_id, Some(search_result_index))
.card_type(template)
.render_once()
.unwrap(),
- )
+ );
+ search_result_index += 1;
}
} else {
html.push(format!(
@@ -101,24 +107,36 @@ impl Response {
{}
"#,
- ArticlePreview::new(&row[0].clone().unwrap())
+ ArticlePreview::new(&row[0].clone().unwrap(), self.search_id, Some(search_result_index))
.big()
.render_once()
.unwrap(),
- ArticlePreview::new(&row[1].clone().unwrap()).render_once().unwrap(),
- ArticlePreview::new(&row[2].clone().unwrap()).render_once().unwrap(),
- ArticlePreview::new(&row[0].clone().unwrap()).render_once().unwrap(),
- ArticlePreview::new(&row[1].clone().unwrap()).render_once().unwrap(),
- ArticlePreview::new(&row[2].clone().unwrap()).render_once().unwrap()
- ))
+ ArticlePreview::new(&row[1].clone().unwrap(), self.search_id, Some(search_result_index + 1))
+ .render_once()
+ .unwrap(),
+ ArticlePreview::new(&row[2].clone().unwrap(), self.search_id, Some(search_result_index + 2))
+ .render_once()
+ .unwrap(),
+ ArticlePreview::new(&row[0].clone().unwrap(), self.search_id, Some(search_result_index + 3))
+ .render_once()
+ .unwrap(),
+ ArticlePreview::new(&row[1].clone().unwrap(), self.search_id, Some(search_result_index + 4))
+ .render_once()
+ .unwrap(),
+ ArticlePreview::new(&row[2].clone().unwrap(), self.search_id, Some(search_result_index + 5))
+ .render_once()
+ .unwrap()
+ ));
+ search_result_index += 6;
}
} else {
html.push(
- ArticlePreview::new(&articles.pop().unwrap())
+ ArticlePreview::new(&articles.pop().unwrap(), self.search_id, Some(search_result_index))
.card_type("default")
.render_once()
.unwrap(),
- )
+ );
+ search_result_index += 1;
}
cycle += 1;
}
diff --git a/pgml-dashboard/src/components/pages/blog/landing_page/template.html b/pgml-dashboard/src/components/pages/blog/landing_page/template.html
index c52f1c628..af8cb9505 100644
--- a/pgml-dashboard/src/components/pages/blog/landing_page/template.html
+++ b/pgml-dashboard/src/components/pages/blog/landing_page/template.html
@@ -7,7 +7,7 @@
use crate::utils::config::standalone_dashboard;
let cards = featured_cards.iter().map(|card| {
- ArticlePreview::new(card).featured().render_once().unwrap()
+ ArticlePreview::new(card, None, None).featured().render_once().unwrap()
}).collect::>();
%>
--- a PPN by Garber Painting Akron. With Image Size Reduction included!Fetched URL: http://github.com/postgresml/postgresml/pull/1373.patch
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy