Add: static/js/index.js -Add advanced-search form search-group logic. -Allow users to create new search groups, and cycle through existing ones. static/templates/index.html -Add search-group count widget, and selection/addition buttons. static/sass/index.sass -Style the various search group elements.tags/v1.0^2
@@ -5,7 +5,6 @@ | |||||
var advancedSearchDiv = $("div#advanced-search"); | var advancedSearchDiv = $("div#advanced-search"); | ||||
var advancedSearchButton = $("button#advanced-search"); | var advancedSearchButton = $("button#advanced-search"); | ||||
advancedSearchDiv.hide(); | |||||
advancedSearchButton.click(function(){ | advancedSearchButton.click(function(){ | ||||
var searchField = $("div#search-field"); | var searchField = $("div#search-field"); | ||||
if(!advancedSearchDiv.hasClass("visible")){ | if(!advancedSearchDiv.hasClass("visible")){ | ||||
@@ -21,10 +20,8 @@ advancedSearchButton.click(function(){ | |||||
} | } | ||||
}); | }); | ||||
$(function() { | |||||
$("#date-last-modified").datepicker(); | |||||
$("#date-created").datepicker(); | |||||
}); | |||||
$("#date-last-modified").datepicker(); | |||||
$("#date-created").datepicker(); | |||||
var languages = new Bloodhound({ | var languages = new Bloodhound({ | ||||
datumTokenizer: Bloodhound.tokenizers.obj.whitespace("value"), | datumTokenizer: Bloodhound.tokenizers.obj.whitespace("value"), | ||||
@@ -173,3 +170,55 @@ function loadMoreResults(){ | |||||
result * 20); | result * 20); | ||||
} | } | ||||
} | } | ||||
var searchGroups = []; | |||||
var currentSearchGroup = 0; | |||||
$("div#add-group").click(function(){ | |||||
storeSearchGroup(); | |||||
currentSearchGroup = searchGroups.length; | |||||
$("span#current, span#total").text(currentSearchGroup + 1); | |||||
}); | |||||
$("div#previous-group").click(function(){ | |||||
console.log(currentSearchGroup); | |||||
if(0 < currentSearchGroup){ | |||||
storeSearchGroup(); | |||||
currentSearchGroup--; | |||||
loadSearchGroup(); | |||||
$("span#current").text(currentSearchGroup + 1); | |||||
} | |||||
}); | |||||
$("div#next-group").click(function(){ | |||||
console.log(currentSearchGroup); | |||||
if(currentSearchGroup < searchGroups.length - 1){ | |||||
storeSearchGroup(); | |||||
currentSearchGroup++; | |||||
loadSearchGroup(); | |||||
$("span#current").text(currentSearchGroup + 1); | |||||
} | |||||
}); | |||||
function storeSearchGroup(){ | |||||
var searchGroup = {}; | |||||
var inputs = $("div#advanced-search input[type='text']"); | |||||
for(var input = 0; input < inputs.length; input++) | |||||
if(inputs[input].value.length > 0){ | |||||
searchGroup[inputs[input].id] = inputs[input].value; | |||||
inputs[input].value = ""; | |||||
} | |||||
if(currentSearchGroup < searchGroups.length) | |||||
searchGroups[currentSearchGroup] = searchGroup; | |||||
else | |||||
searchGroups.push(searchGroup); | |||||
} | |||||
function loadSearchGroup(groupNumber){ | |||||
for(var inputId in searchGroups[currentSearchGroup]){ | |||||
var selector = "div#advanced-search input[type='text']#" + inputId; | |||||
$(selector).val(searchGroups[currentSearchGroup][inputId]); | |||||
} | |||||
} |
@@ -51,20 +51,23 @@ div#search-field | |||||
top: 0 | top: 0 | ||||
width: 40% | width: 40% | ||||
#title | |||||
font-size: 400% | |||||
padding-bottom: 0.2em | |||||
text-align: center | |||||
a#title | |||||
text-decoration: none | |||||
#title-bit | |||||
color: $baseColor1 | |||||
div#title | |||||
font-size: 400% | |||||
padding-bottom: 0.2em | |||||
text-align: center | |||||
#title-angle | |||||
color: $baseColor3 | |||||
#title-bit | |||||
color: $baseColor1 | |||||
#title-shift | |||||
color: $baseColor2 | |||||
font-style: italic | |||||
#title-angle | |||||
color: $baseColor3 | |||||
#title-shift | |||||
color: $baseColor2 | |||||
font-style: italic | |||||
form#search-bar | form#search-bar | ||||
input[type="text"], button | input[type="text"], button | ||||
@@ -82,7 +85,7 @@ div#search-field | |||||
&:hover | &:hover | ||||
border-color: $baseColor1 | border-color: $baseColor1 | ||||
button | |||||
button#advanced-search | |||||
background-color: white | background-color: white | ||||
border: 1px solid white | border: 1px solid white | ||||
width: 15% | width: 15% | ||||
@@ -107,12 +110,11 @@ div#search-field | |||||
height: 26px | height: 26px | ||||
div#advanced-search | div#advanced-search | ||||
background-color: white | |||||
border: 1px solid $baseColor2 | border: 1px solid $baseColor2 | ||||
margin: 0px | margin: 0px | ||||
overflow: auto | overflow: auto | ||||
padding: 0px | padding: 0px | ||||
display: none | |||||
// display: none | |||||
>div | >div | ||||
@include vendor(box-sizing, border-box) | @include vendor(box-sizing, border-box) | ||||
@@ -123,6 +125,86 @@ div#search-field | |||||
>#col1 | >#col1 | ||||
width: 10% | width: 10% | ||||
div#group-count | |||||
font-size: 150% | |||||
margin-left: 10% | |||||
padding: 35% 0 20% 12% | |||||
#current | |||||
color: green | |||||
font-size: 140% | |||||
#seperator | |||||
color: $baseColor3 | |||||
font-weight: bold | |||||
div#group-selector | |||||
margin-left: 20% | |||||
div | |||||
$triangleHeight: 40% | |||||
display: inline-block | |||||
height: 0 | |||||
padding-bottom: $triangleHeight | |||||
padding-top: $triangleHeight | |||||
overflow: hidden | |||||
&:after | |||||
border-bottom: 500px solid transparent | |||||
border-top: 500px solid transparent | |||||
content: "" | |||||
display: block | |||||
height: 0 | |||||
margin-top: -500px | |||||
width: 0 | |||||
&#previous-group | |||||
width: $triangleHeight | |||||
&:after | |||||
border-right: 500px solid $baseColor3 | |||||
&:hover | |||||
&:after | |||||
@extend .t3 | |||||
border-right-color: green | |||||
&#next-group | |||||
padding-left: $triangleHeight | |||||
width: 0 | |||||
&:after | |||||
border-left: 500px solid $baseColor3 | |||||
margin-left: -500px | |||||
&:hover | |||||
&:after | |||||
@extend .t3 | |||||
border-left-color: green | |||||
div#add-group | |||||
margin-top: -10px | |||||
margin-left: auto | |||||
margin-right: auto | |||||
width: 50% | |||||
span | |||||
color: $baseColor3 | |||||
font-size: 510% | |||||
font-weight: bold | |||||
&:hover | |||||
@extend .t3 | |||||
color: green | |||||
div#add-group, div#group-selector div | |||||
&:hover | |||||
cursor: pointer | |||||
>#col2 | >#col2 | ||||
width: 84% | width: 84% | ||||
@@ -132,12 +214,15 @@ div#search-field | |||||
li | li | ||||
margin-bottom: 0.5em | margin-bottom: 0.5em | ||||
&:hover, &:focus | |||||
label | |||||
@extend .t3 | |||||
&:hover | |||||
input[type="text"] | input[type="text"] | ||||
border-color: $baseColor1 | border-color: $baseColor1 | ||||
label | label | ||||
@extend .t3 | |||||
color: black | color: black | ||||
label | label | ||||
@@ -18,12 +18,14 @@ | |||||
= endblock | = endblock | ||||
= block body | = block body | ||||
<div id="search-field"> | |||||
<div id="title"> | |||||
<span id="title-bit">bit</span | |||||
><span id="title-angle">«</span | |||||
><span id="title-shift">shift</span> | |||||
</div> | |||||
<div id="search-field" class="partly-visible"> | |||||
<a id="title" href="/"> | |||||
<div id="title"> | |||||
<span id="title-bit">bit</span | |||||
><span id="title-angle">«</span | |||||
><span id="title-shift">shift</span> | |||||
</div> | |||||
</a> | |||||
<form id="search-bar"> | <form id="search-bar"> | ||||
<input type="text" name="query" | <input type="text" name="query" | ||||
@@ -34,14 +36,27 @@ | |||||
<div id="advanced-search"> | <div id="advanced-search"> | ||||
<!-- Tags are closed on the following line to remove whitespace between divs. --> | <!-- Tags are closed on the following line to remove whitespace between divs. --> | ||||
<div id="col1"> | <div id="col1"> | ||||
+ Add group <!-- Placeholder. --> | |||||
</div><div id="col2"> | |||||
<div id="group-count"> | |||||
<span id="current">1</span | |||||
><span id="seperator">/</span | |||||
><span id="total">1</span> | |||||
</div> | |||||
<div id="group-selector"> | |||||
<div id="previous-group"></div> | |||||
<div></div> | |||||
<div id="next-group"></div> | |||||
</div> | |||||
<div id="add-group"> | |||||
<span>+</span> | |||||
</div> | |||||
</div | |||||
><div id="col2"> | |||||
<div id="upper-half"> | <div id="upper-half"> | ||||
<div id="col1"> | <div id="col1"> | ||||
<ul> | <ul> | ||||
<li> | <li> | ||||
<label for="languages">Languages</label> | <label for="languages">Languages</label> | ||||
<input class="typeahead" type="text" name="languages" id="languages"><br> | |||||
<input type="text" name="languages" id="languages" class="typeahead"><br> | |||||
</li> | </li> | ||||
<li> | <li> | ||||