From 87de4ad945573b1da3aa79e2c9bf4830133e49eb Mon Sep 17 00:00:00 2001
From: Magdalena Turska
Date: Fri, 24 Nov 2017 18:33:17 +0100
Subject: [PATCH] refactor: modularize filter checklists; affects #284, #292
---
modules/search.xqm | 82 +++++++----------------
pages/search/_filter-administrations.html | 8 +--
pages/search/_filter-sections.html | 10 +--
pages/search/_search-bar.html | 4 +-
pages/search/search-bar-include.html | 22 ++++++
pages/search/search-result.html | 28 ++++----
6 files changed, 70 insertions(+), 84 deletions(-)
create mode 100644 pages/search/search-bar-include.html
diff --git a/modules/search.xqm b/modules/search.xqm
index 87283cfc7..db62167f9 100644
--- a/modules/search.xqm
+++ b/modules/search.xqm
@@ -143,21 +143,13 @@ declare function search:load-sections($node, $model) {
$html
};
-(: TODO: Replace this "old" function in templates with modularized functions and fix the markup accordingly:
- and must not be nested! :)
declare
%templates:wrap
-function search:section-checkbox-value-attribute-and-title($node, $model, $within as xs:string*) {
- let $section-id := $model?section/id
- let $section-label := $model?section/label
+function search:search-filters($node as node(), $model as map(*), $within as xs:string*, $administration as xs:string*) {
+(: more options could be added to $filters :)
+ let $filters := map {"within": $within, "administration": $administration}
return
- (
- attribute value { $section-id },
- if (exists($within) and string-join($within) != "" and $section-id = $within) then
- attribute checked { "checked" }
- else (),
- { $section-label/string() }
- )
+ map:new(($model, map {'filters': $filters}))
};
(:~
@@ -166,12 +158,13 @@ function search:section-checkbox-value-attribute-and-title($node, $model, $withi
~:)
declare
%templates:wrap
-function search:section-input-attributes($node, $model) {
- let $section-id := $model?section/id
+function search:section-input-attributes($node as node(), $model as map(*), $section as xs:string, $filter as xs:string) {
+ let $section-id := $model($section)/id
return
(
attribute value { $section-id },
- attribute id { $section-id }
+ attribute id { $section-id },
+ if(search:section-checked($node, $model, $section, $filter)='checked') then attribute checked {''} else ()
)
};
@@ -181,11 +174,22 @@ function search:section-input-attributes($node, $model) {
~:)
declare
%templates:wrap
-function search:section-label($node, $model) {
- let $section-id := $model?section/id
+function search:section-label($node as node(), $model as map(*), $section as xs:string) {
+ let $section-id := $model($section)/id
return
attribute for { $section-id },
- search:section-label-string($node, $model)
+ templates:process($node/*, $model)
+};
+
+
+declare
+ %templates:wrap
+function search:section-checked($node as node(), $model as map(*), $section as xs:string, $filter as xs:string) {
+ let $c:=console:log('sec fil ' || $section || $filter)
+ let $within := $model?filters($filter)
+ let $c:=console:log($within)
+ let $section-id := $model($section)/id
+ return if ($section-id = $within) then 'checked' else $within
};
(:~
@@ -194,8 +198,8 @@ function search:section-label($node, $model) {
~:)
declare
%templates:replace
-function search:section-label-string($node, $model) {
- $model?section/label/string()
+function search:section-label-string($node as node(), $model as map(*), $section as xs:string) {
+ $model($section)/label/string()
};
declare function search:load-volumes-within($node, $model, $volume-id as xs:string*) {
@@ -241,44 +245,6 @@ function search:select-volumes-link($node, $model, $q as xs:string?, $volume-id
(: ================= Administrations ================= :)
-(:~
- : Generates HTML attributes "value" and "id"
- : @return HTML attributes
-~:)
-declare
-%templates:wrap
-function search:administration-input-attributes($node, $model) {
- let $administration-id := $model?administration/id
- return
- (
- attribute value { $administration-id },
- attribute id { $administration-id }
- )
-};
-
-(:~
- : Generates an HTML attribute "for" and adds a label text
- : @return HTML
-~:)
-declare
-%templates:wrap
-function search:administration-label($node, $model) {
- let $administration-id := $model?administration/id
- return
- attribute for { $administration-id },
- search:administration-label-string($node, $model)
-};
-
-(:~
- : The string containing the administration title
- : @return String
-~:)
-declare
-%templates:replace
-function search:administration-label-string($node, $model) {
- $model?administration/label/string()
-};
-
(:~
: Load the administrations
:)
diff --git a/pages/search/_filter-administrations.html b/pages/search/_filter-administrations.html
index dec6c4bae..f1678c0f6 100644
--- a/pages/search/_filter-administrations.html
+++ b/pages/search/_filter-administrations.html
@@ -4,11 +4,11 @@
Select Administrations
-
+
\ No newline at end of file
diff --git a/pages/search/_filter-sections.html b/pages/search/_filter-sections.html
index ae3faebbb..f7fbbcb8a 100644
--- a/pages/search/_filter-sections.html
+++ b/pages/search/_filter-sections.html
@@ -4,17 +4,17 @@
Select sections
-
+
\ No newline at end of file
diff --git a/pages/search/_search-bar.html b/pages/search/_search-bar.html
index 424925576..3f5d11909 100644
--- a/pages/search/_search-bar.html
+++ b/pages/search/_search-bar.html
@@ -12,9 +12,9 @@ Search
Search
-
+
-
+
\ No newline at end of file
diff --git a/pages/search/search-bar-include.html b/pages/search/search-bar-include.html
new file mode 100644
index 000000000..68f03f9f0
--- /dev/null
+++ b/pages/search/search-bar-include.html
@@ -0,0 +1,22 @@
+
+
+
+
Search
+
+ Read these tips and caveats to understand the
+ limitations of this search engine and how to make the most of its scope,
+ phrase, boolean, wildcard, and proximity options.
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/search/search-result.html b/pages/search/search-result.html
index 2cde59b71..617e747b5 100644
--- a/pages/search/search-result.html
+++ b/pages/search/search-result.html
@@ -5,8 +5,12 @@
@@ -15,7 +19,7 @@
-
+
Filter by
@@ -39,11 +43,10 @@
-
@@ -100,4 +98,4 @@
-
+
\ No newline at end of file