From 596c6be5e52fc819289ba90b81cd81dfc93f8ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=B3nos?= Date: Thu, 20 May 2021 21:42:22 +0200 Subject: [PATCH 1/4] Gestione episodi assoluti (Pagina web) Gestione degli episodi assoluti per la parte di interfaccia web per l'inserimento delle informazioni nel file json --- config/app/__init__.py | 43 ++++++++++++++++++++++++--------- config/app/static/css/my.css | 30 +++++++++++++++++++++++ config/app/static/js/my.js | 32 +++++++++++++++++++++--- config/app/templates/index.html | 22 +++++++++++++++-- 4 files changed, 110 insertions(+), 17 deletions(-) diff --git a/config/app/__init__.py b/config/app/__init__.py index 7604b71..0af0245 100644 --- a/config/app/__init__.py +++ b/config/app/__init__.py @@ -10,6 +10,8 @@ log = logging.getLogger('werkzeug') log.setLevel(logging.ERROR) +LOG = None # variabile usata per inviare messaggi a schermo + @app.template_filter() def msgSafe(msg): msg = re.sub(r"[^a-zA-Z]", "", msg) @@ -22,13 +24,18 @@ def favicon(): @app.route('/append_anime', methods=['POST']) # Per aggiungere un anime def append_anime(): res = request.form - print(res, file=sys.stderr) data = { "title": request.form['title'], - "season": request.form['season'], + "season": "all", + "absolute": ("absolute" in request.form), "links": request.form.getlist('link') } - appendAnime(data) + if not data["absolute"]: + data["season"]= request.form['season'] + # print(data, file=sys.stderr) + + global LOG + LOG = appendAnime(data) return redirect(url_for('index')) @app.route('/delete_anime', methods=['POST']) # Per cancellare un anime @@ -63,9 +70,9 @@ def settings_update(): @app.route('/index') @app.route('/') def index(): - + log = get_log() anime = readData() - return render_template('index.html', infos=anime) + return render_template('index.html', infos=anime, log=log) @@ -97,30 +104,36 @@ def myOrder(serieInfo): return serieInfo["title"] table = readData() + log = None # In caso di errore viene segnalato a video + for anime in table: if data["title"] == anime["title"]: # Se esiste già l'anime nella tabella - if data["season"] in anime["seasons"]: # Se esiste già la stagione for link in data["links"]: if link not in anime["seasons"][data["season"]]: # Se il link non è già presente anime["seasons"][data["season"]].append(link) # aggiunge un'altro link - # print(f"\n-> È stata aggiunto un altro link per la stagione {season} della serie {SonarrTitle}.") + log = "Nuovo link aggiunto" else: - anime["seasons"][data["season"]] = list(data["links"]) # inizializza una nuova stagione - # print(f"\n-> È stata aggiunta la stagione {season} per la serie {SonarrTitle}.") + if not anime["absolute"] and not data["absolute"]: # Se la numerazione non è assoluta + anime["seasons"][data["season"]] = list(data["links"]) # inizializza una nuova stagione + log = f"Stagione {data['seasons']} di {data['title']} aggiunta" + else: + log = "ERRORE" break else: # se non è stato trovato nessun anime table.append({ "title": data["title"], - "seasons": {data["season"]: data["links"]} + "seasons": {data["season"]: data["links"]}, + "absolute": data["absolute"] }) + log = f"{data['title']} aggiunto" # print(f"\n-> È stata aggiunta la serie {SonarrTitle}.") table.sort(key=myOrder) writeData(table) - + return log ### getenv @@ -174,3 +187,11 @@ def WriteSettings(settings): json_location = "json/settings.json" with open(json_location, 'w') as f: f.write(json.dumps(settings, indent='\t')) + +### OTHER + +def get_log(): + global LOG + log = LOG + LOG = None + return log diff --git a/config/app/static/css/my.css b/config/app/static/css/my.css index afceb9c..5356f96 100644 --- a/config/app/static/css/my.css +++ b/config/app/static/css/my.css @@ -157,6 +157,29 @@ input{ /*#########################*/ +.row { + display: flex; + align-items: baseline; +} + +[type="checkbox"].filled-in:checked+span:not(.lever):after{ + top: 0; + width: 20px; + height: 20px; + border: 2px solid #9FA8DA; + background-color: #9FA8DA; + z-index: 0; +} + +.dropdown-content li:hover, +.dropdown-content{ + background-color: #242424 !important; +} + +.dropdown-content li>a, .dropdown-content li>span{ + color: #9FA8DA; +} + .tap-target{ background-color: #9FA8DA !important; } @@ -173,6 +196,13 @@ input{ background-color: #2c2c2c !important; } +span.badge.new { + background-color: #9FA8DA !important; + margin-right: 20px; +} + + + /*### OTHER ###*/ /* width */ diff --git a/config/app/static/js/my.js b/config/app/static/js/my.js index db5c12f..d375e09 100644 --- a/config/app/static/js/my.js +++ b/config/app/static/js/my.js @@ -42,6 +42,26 @@ document.addEventListener('DOMContentLoaded', function() { }); +function get_anime(){ + var elems = document.querySelectorAll('.collapsible-header'); + var data = {}; + + + for (var i = 0; i < elems.length; i++) { + data[elems[i].textContent.trim().replace('movie', '')] = null; + } + return data; +} + + +document.addEventListener('DOMContentLoaded', function () { + var elems = document.querySelectorAll('.autocomplete'); + var instances = M.Autocomplete.init(elems, { + data: get_anime() + }); +}); + + document.getElementById("add_link").addEventListener("click", function (){ var parent = this.parentNode; var input_links = document.querySelectorAll("#input_link"); @@ -54,9 +74,13 @@ document.getElementById("add_link").addEventListener("click", function (){ parent.insertBefore(clon, this); }) +document.getElementById("absolute").addEventListener("click", function () { + var elem = document.getElementById("season"); + if (this.checked == true) { + elem.disabled = true; + } else { + elem.disabled = false; + } +}) -// document.addEventListener('DOMContentLoaded', function() { -// var elems = document.querySelectorAll('.fixed-action-btn'); -// var instances = M.FloatingActionButton.init(elems, {}); -// }); \ No newline at end of file diff --git a/config/app/templates/index.html b/config/app/templates/index.html index 39a4df0..bd42e4d 100644 --- a/config/app/templates/index.html +++ b/config/app/templates/index.html @@ -51,16 +51,22 @@
Aggiungi un Anime
movie - + Helper text
-
+
turned_in Helper text
+
+ +