diff --git a/app/main.py b/app/main.py index 1d7ab07..5fca47d 100644 --- a/app/main.py +++ b/app/main.py @@ -6,7 +6,7 @@ import traceback from flask import Flask, render_template, request, redirect, url_for, flash, jsonify from app import config -from app.scraper import scrape +from app.scraper import scrape, supported_sites from app.mealie import MealieClient from app.tandoor import TandoorClient @@ -93,7 +93,8 @@ def import_page(): flash("Először állíts be legalább egy szolgáltatást (Mealie vagy Tandoor).", "warning") return redirect(url_for("settings")) return render_template("import.html", cfg=cfg, version=VERSION, - has_mealie=has_mealie, has_tandoor=has_tandoor) + has_mealie=has_mealie, has_tandoor=has_tandoor, + supported_sites=supported_sites()) @app.route("/scrape", methods=["POST"]) diff --git a/app/templates/import.html b/app/templates/import.html index 4104c59..2b3fddb 100644 --- a/app/templates/import.html +++ b/app/templates/import.html @@ -198,21 +198,215 @@ .result-card { display: none; } .result-card.visible { display: block; } + + /* Tab bar */ + .tab-bar { + display: flex; + gap: 0; + margin-bottom: 1.2rem; + border-bottom: 2px solid var(--border); + } + .tab-btn { + background: none; + border: none; + color: var(--text-dim); + padding: 0.6rem 1.2rem; + font-size: 0.95rem; + font-weight: 600; + cursor: pointer; + border-bottom: 2px solid transparent; + margin-bottom: -2px; + transition: color 0.15s, border-color 0.15s; + } + .tab-btn:hover { color: var(--text); } + .tab-btn.active { + color: var(--accent); + border-bottom-color: var(--accent); + } + + /* Radio labels */ + .radio-label { + display: inline-flex; + align-items: center; + gap: 0.4rem; + cursor: pointer; + font-size: 0.9rem; + color: var(--text); + margin-right: 1rem; + } + .radio-label input[type="radio"] { + accent-color: var(--accent); + width: auto; + margin: 0; + } + + /* Bulk progress table */ + .bulk-table { + width: 100%; + border-collapse: collapse; + font-size: 0.85rem; + margin-top: 0.5rem; + } + .bulk-table th, .bulk-table td { + padding: 0.4rem 0.6rem; + text-align: left; + border-bottom: 1px solid var(--border); + } + .bulk-table th { + color: var(--text-dim); + font-weight: 600; + text-transform: uppercase; + font-size: 0.75rem; + letter-spacing: 0.03em; + } + .bulk-table tr.row-active { background: rgba(233,69,96,0.08); } + .bulk-table .url-cell { + max-width: 220px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + /* Status badges */ + .status-badge { + display: inline-block; + padding: 0.15rem 0.5rem; + border-radius: 999px; + font-size: 0.8rem; + font-weight: 600; + white-space: nowrap; + } + .status-pending { background: var(--surface2); color: var(--text-dim); } + .status-scraping { background: rgba(52,152,219,0.2); color: #3498db; } + .status-reviewing { background: rgba(243,156,18,0.2); color: var(--warning); } + .status-importing { background: rgba(52,152,219,0.2); color: #3498db; } + .status-done { background: rgba(46,204,113,0.2); color: var(--success); } + .status-error { background: rgba(231,76,60,0.2); color: var(--danger); } + .status-skipped { background: var(--surface2); color: var(--text-dim); } + .status-duplicate { background: rgba(243,156,18,0.2); color: var(--warning); } + + .btn-sm { + padding: 0.3rem 0.8rem; + font-size: 0.85rem; + } + + .supported-sites { + color: var(--accent); + font-weight: 600; + } + + .bulk-options { margin-bottom: 1rem; } + .bulk-options .option-row { margin-bottom: 0.5rem; } + .bulk-tag-option { + margin-top: 0.3rem; + margin-left: 1.6rem; + padding: 0.5rem 0.8rem; + background: var(--surface2); + border-radius: var(--radius); + font-size: 0.85rem; + } + + .bulk-summary { + margin-top: 1rem; + padding: 0.8rem; + background: var(--surface2); + border-radius: var(--radius); + } {% endblock %} {% block content %}
+ Támogatott oldalak: {{ supported_sites | join(', ') }} + egyéb (schema.org) +
+