Browse Source

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

script tags are always in the riot tags
master
wes 10 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