Browse Source

fix bug where textbook links were being hided, refactor code, make sure

script tags are always in the riot tags
master
wes 9 years ago
parent
commit
eea1d1edad
  1. 2
      src/archive.py
  2. 48
      src/scripts/book.tag
  3. 16
      src/scripts/class.tag
  4. 5
      src/scripts/results.tag
  5. 44
      src/scripts/search.js
  6. 15
      src/styles/search.scss
  7. 2
      src/templates/search.html
  8. 4
      src/website.py

2
src/archive.py

@ -18,7 +18,7 @@ def searchIA(title, author):
except ValueError: except ValueError:
return [] return []
rownum = results["responseHeader"]["params"]["rows"] rownum = int(results["responseHeader"]["params"]["rows"])
if rownum < 1: if rownum < 1:
print("Couldn't find results for %s %s" % (title, author)) print("Couldn't find results for %s %s" % (title, author))
return [] return []

48
src/scripts/book.tag

@ -1,35 +1,69 @@
<book> <book>
<div class="text-clip toast" if={ opts.title && opts.author }> <div class="text-clip toast">
<p> <p>
<dt class="book-title text-center"> <dt class="book-title text-center">
<button onclick={ makeResourceGetter(this) } class="btn btn-link"> <button onclick={getresources} class="btn btn-link">
{ opts.title } { title }
</button> </button>
</dt> </dt>
<dd> <dd>
<div if={ loading } class="loading"> <div if={ loading } class="loading">
</div> </div>
<p if={ iarchive }> <p if={ this.iarchive }>
<a target="_blank" href="{ iarchive }"> <a target="_blank" href="{ iarchive }">
<button class="centered btn btn-link"> <button class="centered btn btn-link">
Internet Archive Result Internet Archive Result
</button> </button>
</a> </a>
</p> </p>
<p if={ openlib }> <p if={ this.openlib }>
<a target="_blank" href="{ openlib }"> <a target="_blank" href="{ openlib }">
<button class="centered btn btn-link"> <button class="centered btn btn-link">
Open Library Result Open Library Result
</button> </button>
</a> </a>
</p> </p>
<p class="centered wraptext" if={ noResources }> <p class="centered wraptext" if={ noresources }>
Couldn't find anything, sorry :( Couldn't find anything, sorry :(
</p> </p>
</dd> </dd>
</p> </p>
</div> </div>
<script>
this.iarchive = false; this.iarchive = false;
this.openlib = false; this.openlib = false;
this.noResources = false; this.noresources = false;
var self = this;
getresources() {
self.loading = true;
self.update();
var params = {
"title" : this.booktitle,
"author" : this.bookauthor
};
var url = "/search/resources";
$.getJSON(url, {
data : encodeURIComponent(JSON.stringify(params))
}).done(function(results) {
if (results.iarchive) {
self.iarchive = results.iarchive[0];
}
if (results.openlib) {
self.openlib = results.openlib[0];
}
if (!(results.openlib && results.iarchive)) {
self.noresources = true;
}
self.update({"loading" : false});
});
}
</script>
</book> </book>

16
src/scripts/class.tag

@ -6,10 +6,10 @@
<div class="wraptext" id='sem'>Running: { sem } </div> <div class="wraptext" id='sem'>Running: { sem } </div>
</div> </div>
<div if={ books } class="card-body"> <div if={ books } class="card-body">
<button onclick={ makeShow(this) } class="btn btn-primary show-button"> <button onclick={showbooks} class="btn btn-primary show-button">
<strong>Show Textbooks</strong> <strong>Show Textbooks</strong>
</button> </button>
<div if={ showBooks }> <div if={ this.booksshown }>
<dl> <dl>
<book each={ books } <book each={ books }
data="{ this }" data="{ this }"
@ -26,9 +26,17 @@
<p class="wraptext">Check back later, or verify the course has books</p> <p class="wraptext">Check back later, or verify the course has books</p>
</div> </div>
</div> </div>
</class>
<script> <script>
this.showBooks = false; booksshown = false;
var self = this;
showbooks() {
self.booksshown = !self.booksshown;
self.update();
}
this.update(); this.update();
</script> </script>
</class>

5
src/scripts/results.tag

@ -2,6 +2,10 @@
<div if={notLoading} class="courses container"> <div if={notLoading} class="courses container">
<row class="course-row columns" each={ rows } data="{ this }" classrow={ row }></row> <row class="course-row columns" each={ rows } data="{ this }" classrow={ row }></row>
</div> </div>
<script>
clicker() {
alert("clicked");
}
this.rows = []; this.rows = [];
var self = this; var self = this;
@ -19,4 +23,5 @@ results_passer.on("new_results",
self.notLoading = true; self.notLoading = true;
self.update(); self.update();
}); });
</script>
</results> </results>

44
src/scripts/search.js

@ -1,47 +1,3 @@
function makeResourceGetter(self) {
function getResources(ev) {
ev.preventDefault();
self.loading = true;
self.update();
var params = {
"title" : this.booktitle,
"author" : this.bookauthor
};
var url = "/search/resources";
$.getJSON(url, {
data : JSON.stringify(params)
}).done(function(results) {
if (results.iarchive) {
self.iarchive = results.iarchive[0];
}
if (results.openlib) {
self.openlib = results.openlib[0];
}
if (!(results.openlib && results.iarchive)) {
self.noResources = true;
}
self.update({"loading" : false});
});
}
return getResources;
}
function makeShow(self) {
return function() {
if (!self.showBooks) {
self.showBooks = true;
}
else {
self.showBooks = false;
}
self.update();
};
}
function ResultsPasser() { function ResultsPasser() {
riot.observable(this); riot.observable(this);
return this; return this;

15
src/styles/search.scss

@ -83,8 +83,11 @@ a {
margin-right: -15px; margin-right: -15px;
} }
#title { .title {
font-weight: bolder; font-weight: bolder;
@media (min-width: 480px) {
margin-left: 80px;
}
} }
.ui-autocomplete { .ui-autocomplete {
@ -131,17 +134,9 @@ a {
background-image: none; background-image: none;
} }
@media (min-width: 480px) { .logo {
.logo {
margin-top: 20px; margin-top: 20px;
margin-left: -175px; margin-left: -175px;
}
}
@media (min-width: 480px) {
.title {
margin-left: 80px;
}
} }
.page-top { .page-top {

2
src/templates/search.html

@ -41,7 +41,7 @@
{% block scripts %} {% block scripts %}
{{super()}} {{super()}}
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/riot/2.6.3/riot+compiler.min.js"></script> <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/riot/2.6.7/riot+compiler.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.22.1/ramda.min.js"></script> <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.22.1/ramda.min.js"></script>
<script type="text/javascript" src="/scripts/tags.min.js"></script> <script type="text/javascript" src="/scripts/tags.min.js"></script>
<script type="text/javascript" src="/scripts/search.min.js"></script> <script type="text/javascript" src="/scripts/search.min.js"></script>

4
src/website.py

@ -9,6 +9,8 @@ from search import searchTerms
from openlibrary import bookUrls from openlibrary import bookUrls
from syslog import syslog
from archive import searchIA from archive import searchIA
from urllib.parse import quote, unquote from urllib.parse import quote, unquote
from json import dumps, loads from json import dumps, loads
@ -102,7 +104,7 @@ def ClassSearch(configfile=None):
""" Get Resources """ """ Get Resources """
notRequired = False notRequired = False
try: try:
params = loads(dict(request.args.items())["data"]) params = loads(unquote(dict(request.args.items())["data"]))
except KeyError: except KeyError:
return dumps("false") return dumps("false")
print(params) print(params)

Loading…
Cancel
Save