Skip to content

Commit

Permalink
feat(search): Parameterize administrations filters #292
Browse files Browse the repository at this point in the history
* create include for administrations filters
* delete hard coded filters from template
  • Loading branch information
plutonik-a committed Nov 22, 2017
1 parent 2d08289 commit e5a5efb
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 44 deletions.
91 changes: 91 additions & 0 deletions modules/search.xqm
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,97 @@ function search:select-volumes-link($node, $model, $q as xs:string?, $volume-id
app:fix-this-link($link, $model)
};

(: ================= 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 <label> 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
:)
declare function search:load-administrations ($node, $model) {
let $content := map { "administrations":
(
<administration>
<id>pre_truman</id>
<label>Pre-Truman Volumes</label>
</administration>,
<administration>
<id>truman</id>
<label>Truman Administration</label>
</administration>,
<administration>
<id>eisenhower</id>
<label>Eisenhower Administration</label>
</administration>,
<administration>
<id>kennedy</id>
<label>Kennedy Administration</label>
</administration>,
<administration>
<id>johnson</id>
<label>Johnson Administration</label>
</administration>,
<administration>
<id>nixon</id>
<label>Nixon Administration</label>
</administration>,
<administration>
<id>ford</id>
<label>Ford Administration</label>
</administration>,
<administration>
<id>carter</id>
<label>Carter Administration</label>
</administration>,
<administration>
<id>reagan</id>
<label>Reagan Administration</label>
</administration>
)
}
let $html := templates:process($node/*, map:new(($model, $content)))
return
$html
};

(: ================= SEARCH RESULTS ================= :)

declare %private function search:filter-results($out, $in) {

if (count($out) = $search:MAX_HITS_SHOWN or empty($in)) then
Expand Down
14 changes: 14 additions & 0 deletions pages/search/_filter-administrations.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<form method="get" action="$app/search" class="filter-form main-form" id="administrationsFilter">
<fieldset class="filter-sidebar" data-template="search:load-administrations">
<legend class="sr-only">Select Administrations</legend>
<ul class="hsg-search-inputs-vertical">
<li data-template="templates:each" data-template-from="administrations" data-template-to="administration">
<input class="hsg-search-input" type="checkbox" name="administration" data-template="search:administration-input-attributes"/>
<label class="hsg-search-input-label" data-template="search:administration-label">
<span data-template="search:administration-label-string"/>
</label>
</li>
</ul>
</fieldset>
</form>
48 changes: 4 additions & 44 deletions pages/search/search-result.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,51 +34,11 @@ <h3 class="hsg-sidebar-title">Sections</h3>
</fieldset>
</div>

<!-- filter administrations -->
<form method="get" action="?" class="filter-form" id="formFilters">
<div>
<fieldset class="filter-sidebar">
<legend class="hsg-sidebar-title">Administrations</legend>
<div class="hsg-search-inputs-vertical">
<label class="hsg-search-input-label">
<input type="checkbox" name="administration" value="pre_truman"/>
Pre-Truman Volumes
</label>
<label class="hsg-search-input-label">
<input type="checkbox" name="administration" value="truman"/>
Truman Administration
</label>
<label class="hsg-search-input-label">
<input type="checkbox" name="administration" value="eisenhower"/>
Eisenhower Administration
</label>
<label class="hsg-search-input-label">
<input type="checkbox" name="administration" value="kennedy"/>
Kennedy Administration
</label>
<label class="hsg-search-input-label">
<input type="checkbox" name="administration" value="johnson"/>
Johnson Administration
</label>
<label class="hsg-search-input-label">
<input type="checkbox" name="administration" value="nixon"/>
Nixon Administration
</label>
<label class="hsg-search-input-label">
<input type="checkbox" name="administration" value="ford"/>
Ford Administration
</label>
<label class="hsg-search-input-label">
<input type="checkbox" name="administration" value="carter"/>
Carter Administration
</label>
<label class="hsg-search-input-label">
<input type="checkbox" name="administration" value="reagan"/>
Reagan Administration
</label>
</div>
</fieldset>
</div>

<!-- filter administrations -->
<h3 class="hsg-sidebar-title">Administrations</h3>
<div data-template="templates:include" data-template-path="pages/search/_filter-administrations.html"/>

<!-- filter volumes -->
<div>
Expand Down

0 comments on commit e5a5efb

Please sign in to comment.