it's a banner
This commit is contained in:
parent
121179cc39
commit
eb42380c96
@ -56,6 +56,19 @@ class Author(db.Model):
|
|||||||
def __init__(self, author_name):
|
def __init__(self, author_name):
|
||||||
self.author_name = author_name
|
self.author_name = author_name
|
||||||
|
|
||||||
|
|
||||||
|
class UserIns(db.Model):
|
||||||
|
__tablename__ = 'userins'
|
||||||
|
|
||||||
|
id = db.Column(db.Integer(), primary_key=True)
|
||||||
|
title = db.Column(db.String(500))
|
||||||
|
info = db.Column(db.String(500))
|
||||||
|
|
||||||
|
def __init__(self, title, info):
|
||||||
|
self.title = title
|
||||||
|
self.info = info
|
||||||
|
|
||||||
|
|
||||||
class Stack(db.Model):
|
class Stack(db.Model):
|
||||||
__tablename__ = 'stacks'
|
__tablename__ = 'stacks'
|
||||||
id = db.Column(db.Integer, primary_key = True)
|
id = db.Column(db.Integer, primary_key = True)
|
||||||
|
@ -1,122 +1,126 @@
|
|||||||
/* Add your Application JavaScript */
|
/* Add your Application JavaScript */
|
||||||
$(function() {
|
$(function() {
|
||||||
$("div[data-toggle=fieldset]").each(function() {
|
$("div[data-toggle=fieldset]").each(function() {
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
|
|
||||||
//Add new entry
|
//Add new entry
|
||||||
$this.find("button[data-toggle=fieldset-add-row]").click(function() {
|
$this.find("button[data-toggle=fieldset-add-row]").click(function() {
|
||||||
var target = $($(this).data("target"))
|
var target = $($(this).data("target"))
|
||||||
console.log(target);
|
console.log(target);
|
||||||
var oldrow = target.find("[data-toggle=fieldset-entry]:last");
|
var oldrow = target.find("[data-toggle=fieldset-entry]:last");
|
||||||
var row = oldrow.clone(true, true);
|
var row = oldrow.clone(true, true);
|
||||||
console.log(row.find(":input")[0]);
|
console.log(row.find(":input")[0]);
|
||||||
var elem_id = row.find(":input")[0].id;
|
var elem_id = row.find(":input")[0].id;
|
||||||
var elem_num = parseInt(elem_id.replace(/.*-(\d{1,4})-.*/m, '$1')) + 1;
|
var elem_num = parseInt(elem_id.replace(/.*-(\d{1,4})-.*/m, '$1')) + 1;
|
||||||
row.attr('data-id', elem_num);
|
row.attr('data-id', elem_num);
|
||||||
row.find(":input").each(function() {
|
row.find(":input").each(function() {
|
||||||
console.log(this);
|
console.log(this);
|
||||||
var id = $(this).attr('id').replace('-' + (elem_num - 1) + '-', '-' + (elem_num) + '-');
|
var id = $(this).attr('id').replace('-' + (elem_num - 1) + '-', '-' + (elem_num) + '-');
|
||||||
$(this).attr('name', id).attr('id', id).val('').removeAttr("checked");
|
$(this).attr('name', id).attr('id', id).val('').removeAttr("checked");
|
||||||
});
|
});
|
||||||
oldrow.after(row);
|
oldrow.after(row);
|
||||||
}); //End add new entry
|
}); //End add new entry
|
||||||
|
|
||||||
//Remove row
|
//Remove row
|
||||||
$this.find("button[data-toggle=fieldset-remove-row]").click(function() {
|
$this.find("button[data-toggle=fieldset-remove-row]").click(function() {
|
||||||
if($this.find("[data-toggle=fieldset-entry]").length > 1) {
|
if ($this.find("[data-toggle=fieldset-entry]").length > 1) {
|
||||||
var thisRow = $(this).closest("[data-toggle=fieldset-entry]");
|
var thisRow = $(this).closest("[data-toggle=fieldset-entry]");
|
||||||
thisRow.remove();
|
thisRow.remove();
|
||||||
}
|
}
|
||||||
}); //End remove row
|
}); //End remove row
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$( function() {
|
$(function() {
|
||||||
$( "#draggable" ).draggable();
|
$("#draggable").draggable();
|
||||||
$( "#droppable" ).droppable({
|
$("#droppable").droppable({
|
||||||
drop: function( event, ui ) {
|
drop: function(event, ui) {
|
||||||
$( this )
|
$(this)
|
||||||
.addClass( "ui-state-highlight" )
|
.addClass("ui-state-highlight")
|
||||||
.find( "p" )
|
.find("p")
|
||||||
.html( "Dropped!" );
|
.html("Dropped!");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} );
|
});
|
||||||
|
|
||||||
$( "#title" ).click(function() {
|
$("#title").click(function() {
|
||||||
generateTitle(this);
|
generateTitle(this);
|
||||||
});
|
});
|
||||||
|
|
||||||
$( document ).ready(function() {
|
$(document).ready(function() {
|
||||||
generateTitle("#title");
|
generateTitle("#title");
|
||||||
});
|
});
|
||||||
|
|
||||||
function generateTitle(elem){
|
function generateTitle(elem) {
|
||||||
var x = ["XPERIMENTAL"]
|
var x = ["XPERIMENTAL"]
|
||||||
var p1 = ["POTENTIAL", "PUBLIC", "POST", "PI", "PLATFORM FOR", "PRETENTIOUS"]
|
var p1 = ["POTENTIAL", "PUBLIC", "POST", "PI", "PLATFORM FOR", "PRETENTIOUS"]
|
||||||
var p2 = ["PIRATE", "PERFORMATIVE", "PUBLIC", "PUBLISHING", "POTENTIAL"]
|
var p2 = ["PIRATE", "PERFORMATIVE", "PUBLIC", "PUBLISHING", "POTENTIAL"]
|
||||||
var l = ["LIBRARY", "LIAISON", "LAB", "LEGALITY", "LABOUR"]
|
var l = ["LIBRARY", "LIAISON", "LAB", "LEGALITY", "LABOUR"]
|
||||||
|
|
||||||
$(elem).text(x[Math.floor(Math.random()*x.length)]+" "+p1[Math.floor(Math.random()*p1.length)]+" "+p2[Math.floor(Math.random()*p2.length)]+" "+l[Math.floor(Math.random()*l.length)]);
|
$(elem).text(x[Math.floor(Math.random() * x.length)] + " " + p1[Math.floor(Math.random() * p1.length)] + " " + p2[Math.floor(Math.random() * p2.length)] + " " + l[Math.floor(Math.random() * l.length)]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$( function() {
|
$(function() {
|
||||||
$( "#tabs" ).tabs().addClass( "ui-tabs-vertical ui-helper-clearfix" );
|
$("#tabs").tabs().addClass("ui-tabs-vertical ui-helper-clearfix");
|
||||||
$( "#tabs li" ).removeClass( "ui-corner-top" ).addClass( "ui-corner-left" );
|
$("#tabs li").removeClass("ui-corner-top").addClass("ui-corner-left");
|
||||||
} );
|
|
||||||
|
|
||||||
|
|
||||||
var marquee = $('div.marquee');
|
|
||||||
marquee.each(function() {
|
|
||||||
var mar = $(this),indent = mar.width();
|
|
||||||
mar.marquee = function() {
|
|
||||||
indent--;
|
|
||||||
mar.css('text-indent',indent);
|
|
||||||
if (indent < -1 * mar.children('div.marquee-text').width()) {
|
|
||||||
indent = mar.width();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
mar.data('interval',setInterval(mar.marquee,1000/60));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$( ".no_cover" ).each(function() {
|
|
||||||
|
|
||||||
|
$(".no_cover").each(function() {
|
||||||
var string = $(this).attr('id')
|
var string = $(this).attr('id')
|
||||||
var randomColor = colorHash(string).rgb
|
var randomColor = colorHash(string).rgb
|
||||||
|
|
||||||
$(this).css({
|
$(this).css({
|
||||||
'background-color' : randomColor,
|
'background-color': randomColor,
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
})
|
||||||
)
|
|
||||||
|
|
||||||
function colorHash(inputString){
|
function colorHash(inputString) {
|
||||||
var sum = 0;
|
var sum = 0;
|
||||||
|
|
||||||
for(var i in inputString){
|
for (var i in inputString) {
|
||||||
sum += inputString.charCodeAt(i);
|
sum += inputString.charCodeAt(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
r = ~~(('0.' + Math.sin(sum + 1).toString().substr(6)) * 256);
|
||||||
|
g = ~~(('0.' + Math.sin(sum + 2).toString().substr(6)) * 256);
|
||||||
|
b = ~~(('0.' + Math.sin(sum + 3).toString().substr(6)) * 256);
|
||||||
|
|
||||||
|
var rgb = "rgb(" + r + ", " + g + ", " + b + ")";
|
||||||
|
|
||||||
|
var hex = "#";
|
||||||
|
|
||||||
|
hex += ("00" + r.toString(16)).substr(-2, 2).toUpperCase();
|
||||||
|
hex += ("00" + g.toString(18)).substr(-2, 2).toUpperCase();
|
||||||
|
hex += ("00" + b.toString(20)).substr(-2, 2).toUpperCase();
|
||||||
|
|
||||||
|
return {
|
||||||
|
r: r,
|
||||||
|
g: g,
|
||||||
|
b: b,
|
||||||
|
rgb: rgb,
|
||||||
|
hex: hex
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
r = ~~(('0.'+Math.sin(sum+1).toString().substr(6))*256);
|
|
||||||
g = ~~(('0.'+Math.sin(sum+2).toString().substr(6))*256);
|
|
||||||
b = ~~(('0.'+Math.sin(sum+3).toString().substr(6))*256);
|
|
||||||
|
|
||||||
var rgb = "rgb("+r+", "+g+", "+b+")";
|
|
||||||
|
|
||||||
var hex = "#";
|
//newsticker
|
||||||
|
var marquee = $('div.marquee');
|
||||||
hex += ("00" + r.toString(16)).substr(-2,2).toUpperCase();
|
marquee.each(function() {
|
||||||
hex += ("00" + g.toString(18)).substr(-2,2).toUpperCase();
|
var mar = $(this),
|
||||||
hex += ("00" + b.toString(20)).substr(-2,2).toUpperCase();
|
indent = mar.width();
|
||||||
|
mar.marquee = function() {
|
||||||
return {
|
indent--;
|
||||||
r: r
|
mar.css('text-indent', indent);
|
||||||
,g: g
|
if (indent < -1 * mar.children('div.marquee-text').width()) {
|
||||||
,b: b
|
indent = mar.width();
|
||||||
,rgb: rgb
|
}
|
||||||
,hex: hex
|
};
|
||||||
};
|
mar.data('interval', setInterval(mar.marquee, 10));
|
||||||
}
|
});
|
||||||
|
2377
app/static/js/bootstrap.js
vendored
2377
app/static/js/bootstrap.js
vendored
File diff suppressed because it is too large
Load Diff
7
app/static/js/bootstrap.min.js
vendored
7
app/static/js/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
@ -21,7 +21,7 @@
|
|||||||
<div id="newstext">
|
<div id="newstext">
|
||||||
<div class='marquee'>
|
<div class='marquee'>
|
||||||
<div class='marquee-text'>
|
<div class='marquee-text'>
|
||||||
Testing this marquee function
|
This is the XPPL ~ Library XPUB ~ Updates
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -47,6 +47,36 @@
|
|||||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||||
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||||
<script src="{{ url_for("static", filename="js/app.js") }}"></script>
|
<script src="{{ url_for("static", filename="js/app.js") }}"></script>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$( document ).ready(function() {
|
||||||
|
update();
|
||||||
|
function update() {
|
||||||
|
$.ajax({
|
||||||
|
url: "{{ url_for('get_updates') }}",
|
||||||
|
type: 'GET',
|
||||||
|
async: false,
|
||||||
|
success : function(text)
|
||||||
|
{
|
||||||
|
response = text;
|
||||||
|
$('.marquee-text').text(response)
|
||||||
|
console.log(response)
|
||||||
|
},
|
||||||
|
cache: false,
|
||||||
|
contentType: false,
|
||||||
|
processData: false
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
@ -4,9 +4,12 @@
|
|||||||
<h1 class="header" id="title">XPPL</h1>
|
<h1 class="header" id="title">XPPL</h1>
|
||||||
<p class="lead">This is the awesome library of Experimental Publishing. <br>
|
<p class="lead">This is the awesome library of Experimental Publishing. <br>
|
||||||
This might only be one interface to this library:
|
This might only be one interface to this library:
|
||||||
…
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<a href="{{url_for('scape')}}">Scape</a>
|
||||||
|
<a href="{{url_for('show_books_grid')}}">Grid</a>
|
||||||
|
<a href="{{url_for('show_books')}}">List</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
16
app/views.py
16
app/views.py
@ -10,7 +10,7 @@ from flask import Flask, render_template, request, redirect, url_for, flash, sen
|
|||||||
import json
|
import json
|
||||||
from sqlalchemy.sql.expression import func, select
|
from sqlalchemy.sql.expression import func, select
|
||||||
from app.forms import UploadForm, EditForm, SearchForm
|
from app.forms import UploadForm, EditForm, SearchForm
|
||||||
from app.models import Book, BookSchema, Author, AuthorSchema, Stack, StackSchema
|
from app.models import Book, BookSchema, Author, AuthorSchema, Stack, StackSchema, UserIns
|
||||||
from app.cover import get_cover
|
from app.cover import get_cover
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@ -69,6 +69,11 @@ def show_books():
|
|||||||
|
|
||||||
return render_template('show_books.html', books=books, form=search)
|
return render_template('show_books.html', books=books, form=search)
|
||||||
|
|
||||||
|
@app.route('/updates', methods=['POST', 'GET'])
|
||||||
|
def get_updates():
|
||||||
|
userin = UserIns.query.filter_by(title="lastViewed").first()
|
||||||
|
return "XPPL /////// Last viewed: " + userin.info + " /////// "
|
||||||
|
|
||||||
@app.route('/scape', methods=['POST', 'GET'])
|
@app.route('/scape', methods=['POST', 'GET'])
|
||||||
def scape():
|
def scape():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
@ -82,7 +87,6 @@ def scape():
|
|||||||
return render_template('scape.html', books=books)
|
return render_template('scape.html', books=books)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/books_grid')
|
@app.route('/books_grid')
|
||||||
def show_books_grid():
|
def show_books_grid():
|
||||||
books = db.session.query(Book).all() # or you could have used User.query.all()
|
books = db.session.query(Book).all() # or you could have used User.query.all()
|
||||||
@ -91,6 +95,14 @@ def show_books_grid():
|
|||||||
@app.route('/books/<int:id>')
|
@app.route('/books/<int:id>')
|
||||||
def show_book_by_id(id):
|
def show_book_by_id(id):
|
||||||
book = Book.query.get(id)
|
book = Book.query.get(id)
|
||||||
|
userin = UserIns.query.filter_by(title="lastViewed").first()
|
||||||
|
if userin != None:
|
||||||
|
userin.info = book.title
|
||||||
|
db.session.commit()
|
||||||
|
else:
|
||||||
|
user_info = UserIns("lastViewed", book.title)
|
||||||
|
db.session.add(user_info)
|
||||||
|
db.session.commit()
|
||||||
if not book:
|
if not book:
|
||||||
return render_template('red_link.html', id=id)
|
return render_template('red_link.html', id=id)
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user