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:
return []
rownum = results["responseHeader"]["params"]["rows"]
rownum = int(results["responseHeader"]["params"]["rows"])
if rownum < 1:
print("Couldn't find results for %s %s" % (title, author))
return []

48
src/scripts/book.tag

@ -1,35 +1,69 @@
<book>
<div class="text-clip toast" if={ opts.title && opts.author }>
<div class="text-clip toast">
<p>
<dt class="book-title text-center">
<button onclick={ makeResourceGetter(this) } class="btn btn-link">
{ opts.title }
<button onclick={getresources} class="btn btn-link">
{ title }
</button>
</dt>
<dd>
<div if={ loading } class="loading">
</div>
<p if={ iarchive }>
<p if={ this.iarchive }>
<a target="_blank" href="{ iarchive }">
<button class="centered btn btn-link">
Internet Archive Result
</button>
</a>
</p>
<p if={ openlib }>
<p if={ this.openlib }>
<a target="_blank" href="{ openlib }">
<button class="centered btn btn-link">
Open Library Result
</button>
</a>
</p>
<p class="centered wraptext" if={ noResources }>
<p class="centered wraptext" if={ noresources }>
Couldn't find anything, sorry :(
</p>
</dd>
</p>
</div>
<script>
this.iarchive = 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>

16
src/scripts/class.tag

@ -6,10 +6,10 @@
<div class="wraptext" id='sem'>Running: { sem } </div>
</div>
<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>
</button>
<div if={ showBooks }>
<div if={ this.booksshown }>
<dl>
<book each={ books }
data="{ this }"
@ -26,9 +26,17 @@
<p class="wraptext">Check back later, or verify the course has books</p>
</div>
</div>
</class>
<script>
this.showBooks = false;
booksshown = false;
var self = this;
showbooks() {
self.booksshown = !self.booksshown;
self.update();
}
this.update();
</script>
</class>

5
src/scripts/results.tag

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

15
src/styles/search.scss

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

2
src/templates/search.html

@ -41,7 +41,7 @@
{% block scripts %}
{{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="/scripts/tags.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 syslog import syslog
from archive import searchIA
from urllib.parse import quote, unquote
from json import dumps, loads
@ -102,7 +104,7 @@ def ClassSearch(configfile=None):
""" Get Resources """
notRequired = False
try:
params = loads(dict(request.args.items())["data"])
params = loads(unquote(dict(request.args.items())["data"]))
except KeyError:
return dumps("false")
print(params)

Loading…
Cancel
Save