Initial commit
This commit is contained in:
12
anime_easy_sync/templates/_formhelpers.jinja
Normal file
12
anime_easy_sync/templates/_formhelpers.jinja
Normal file
@ -0,0 +1,12 @@
|
||||
{% macro render_field(field) %}
|
||||
<dt>{{ field.label }}
|
||||
<dd>{{ field(**kwargs)|safe }}
|
||||
{% if field.errors %}
|
||||
<ul class=errors>
|
||||
{% for error in field.errors %}
|
||||
<li>{{ error }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</dd>
|
||||
{% endmacro %}
|
212
anime_easy_sync/templates/aes/index.jinja
Normal file
212
anime_easy_sync/templates/aes/index.jinja
Normal file
@ -0,0 +1,212 @@
|
||||
{% extends "base.jinja" %}
|
||||
{% block head %}
|
||||
<style>
|
||||
body {font-family: Arial, Helvetica, sans-serif;}
|
||||
|
||||
/* The Modal (background) */
|
||||
.modal {
|
||||
display: none; /* Hidden by default */
|
||||
position: fixed; /* Stay in place */
|
||||
z-index: 100; /* Sit on top */
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 1000px;
|
||||
height: 500px;
|
||||
max-width: 100%; /* Full width */
|
||||
max-height: 100%; /* Full height */
|
||||
background: white;
|
||||
box-shadow: 0 0 60px 10px rgba(0, 0, 0, 0.9);
|
||||
}
|
||||
|
||||
.modal-overlay {
|
||||
display: none;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 50;
|
||||
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
|
||||
/* Modal Content */
|
||||
.modal-content {
|
||||
position: absolute;
|
||||
background-color: #fefefe;
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
border: 1px solid #888;
|
||||
box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);
|
||||
-webkit-animation-name: animatetop;
|
||||
-webkit-animation-duration: 0.4s;
|
||||
animation-name: animatetop;
|
||||
animation-duration: 0.4s
|
||||
}
|
||||
|
||||
/* Add Animation */
|
||||
@-webkit-keyframes animatetop {
|
||||
from {top:-300px; opacity:0}
|
||||
to {top:0; opacity:1}
|
||||
}
|
||||
|
||||
@keyframes animatetop {
|
||||
from {top:-300px; opacity:0}
|
||||
to {top:0; opacity:1}
|
||||
}
|
||||
|
||||
/* The Close Button */
|
||||
.close {
|
||||
color: white;
|
||||
float: right;
|
||||
font-size: 28px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.close:hover,
|
||||
.close:focus {
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
padding: 2px 16px;
|
||||
background-color: #5cb85c;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.modal-body {padding: 2px 16px;}
|
||||
|
||||
.modal-footer {
|
||||
padding: 2px 16px;
|
||||
background-color: #5cb85c;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<a href="{{mal_url}}">Log in to MAL</a>
|
||||
<a href="{{anilist_url}}">Log in to Anilist</a>
|
||||
<a href="{{url_for('aes.kitsu')}}">Log in to Kitsu</a>
|
||||
<br/>
|
||||
{% if state %}
|
||||
{% if 'mal_token' in state %}
|
||||
<button id="syncMALBtn">Sync to MAL</button>
|
||||
{% endif %}
|
||||
{% if 'anilist_token' in state %}
|
||||
<button id="syncAnilistBtn">Sync to Anilist</button>
|
||||
{% endif %}
|
||||
{% if 'kitsu_token' in state %}
|
||||
<button id="syncKitsuBtn">Sync to Kitsu</button>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<table>
|
||||
<thead>
|
||||
{% set sites = 0 %}
|
||||
{% if state %}
|
||||
<tr>
|
||||
<th></th>
|
||||
{% if 'mal_token' in state %}
|
||||
{% set sites = sites + 1 %}
|
||||
<th colspan="4">MyAnimeList</th>
|
||||
{% endif %}
|
||||
{% if 'anilist_token' in state %}
|
||||
{% set sites = sites + 1 %}
|
||||
<th colspan="4">Anilist</th>
|
||||
{% endif %}
|
||||
{% if 'kitsu_token' in state %}
|
||||
{% set sites = sites + 1 %}
|
||||
<th colspan="4">Kitsu</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endif %}
|
||||
<tr>
|
||||
<th>Title</th>
|
||||
{% for i in range(sites) %}
|
||||
<th>Progress</th>
|
||||
<th>Score</th>
|
||||
<th>Status</th>
|
||||
<th>Links</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for x in discrepancies %}
|
||||
<tr>
|
||||
<td>{{ '[BROKEN] ' if x.is_broken() else '' }}{{ x.get_title() }}</td>
|
||||
{% for y in ['mal', 'anilist', 'kitsu'] %}
|
||||
{% if y in x.entries %}
|
||||
<td>{{ x.entries[y].progress|default('') }}</td>
|
||||
<td>{{ x.entries[y].score|default('') }}</td>
|
||||
<td>{{ x.entries[y].status|default('') }}</td>
|
||||
<td>{% if x.entries[y].link %}<a href="{{ x.entries[y].link }}">Link</a>{% endif %}</td>
|
||||
{% elif y + '_token' in state %}
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="modal-overlay"></div>
|
||||
<form action='' method="post" novalidate>
|
||||
{{ form.hidden_tag() }}
|
||||
{% for x in modals %}
|
||||
<div id="sync{{ x['type'] }}Modal" class="modal">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<span class="close">×</span>
|
||||
<h2>Sync to {{ x['type'] }}</h2>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p>{{ x['msg'] }}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
{% if x['type'] == 'MAL' %}
|
||||
{{ form.mal }}
|
||||
{% elif x['type'] == 'Anilist' %}
|
||||
{{ form.anilist }}
|
||||
{% elif x['type'] == 'Kitsu' %}
|
||||
{{ form.kitsu }}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</form>
|
||||
<script>
|
||||
var types = [
|
||||
{% for x in modals %}"{{ x['type'] }}",{% endfor %}
|
||||
]
|
||||
var i;
|
||||
for (i = 0; i < {{ modals|length }}; i++) {
|
||||
let overlay = document.getElementsByClassName("modal-overlay")[0]
|
||||
let modal = document.getElementById("sync"+types[i]+"Modal");
|
||||
let btn = document.getElementById("sync"+types[i]+"Btn");
|
||||
let span = modal.getElementsByClassName("close")[0];
|
||||
btn.onclick = function() {
|
||||
modal.style.display = "block";
|
||||
overlay.style.display = "block";
|
||||
}
|
||||
span.onclick = function() {
|
||||
modal.style.display = "none";
|
||||
overlay.style.display = "none";
|
||||
}
|
||||
window.addEventListener('click', event => {
|
||||
if (event.target == modal) {
|
||||
modal.style.display = "none";
|
||||
overlay.style.display = "none";
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
12
anime_easy_sync/templates/aes/kitsu.jinja
Normal file
12
anime_easy_sync/templates/aes/kitsu.jinja
Normal file
@ -0,0 +1,12 @@
|
||||
{% extends "base.jinja" %}
|
||||
{% from "_formhelpers.jinja" import render_field %}
|
||||
{% block content %}
|
||||
<form action='' method="post" novalidate>
|
||||
{{ form.hidden_tag() }}
|
||||
<dl>
|
||||
{{ render_field(form.username) }}
|
||||
{{ render_field(form.password) }}
|
||||
</dl>
|
||||
{{ form.submit() }}
|
||||
</form>
|
||||
{% endblock content %}
|
13
anime_easy_sync/templates/base.jinja
Normal file
13
anime_easy_sync/templates/base.jinja
Normal file
@ -0,0 +1,13 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>Anime Easy Sync</title>
|
||||
{% block head %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
{% block content %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user