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> | ||||