mirror of
https://github.com/eitchtee/WYGIWYH.git
synced 2026-05-20 06:37:24 +02:00
feat: first batch of work
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
{% block body %}
|
||||
{% if message %}
|
||||
<div class="alert alert-info" role="alert" id="msg" hx-preserve="true">
|
||||
<h6 class="alert-heading tw:italic tw:font-bold">{% trans 'A message from the author' %}</h6>
|
||||
<h6 class="alert-heading italic font-bold">{% trans 'A message from the author' %}</h6>
|
||||
<hr>
|
||||
<p class="mb-0">{{ message|linebreaksbr }}</p>
|
||||
</div>
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
{% load i18n %}
|
||||
<div class="tw:container tw:px-md-3 tw:py-3 tw:column-gap-5">
|
||||
<div class="tw:text-3xl tw:font-bold tw:font-mono tw:w-full tw:mb-3">
|
||||
<div class="container px-md-3 py-3 column-gap-5">
|
||||
<div class="text-3xl font-bold font-mono w-full mb-3">
|
||||
{% spaceless %}
|
||||
<div>{% translate 'Import Profiles' %}<span>
|
||||
<span class="tw:dropdown" data-bs-toggle="tooltip"
|
||||
<span class="dropdown" data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Add" %}">
|
||||
<a class="tw:no-underline tw:text-2xl tw:p-1" role="button"
|
||||
<a class="no-underline text-2xl p-1" role="button"
|
||||
data-bs-toggle="dropdown"
|
||||
data-bs-title="{% translate "Add" %}" aria-expanded="false">
|
||||
<i class="fa-solid fa-circle-plus fa-fw"></i>
|
||||
</a>
|
||||
<ul class="tw:dropdown-content tw:menu tw:bg-base-100 tw:rounded-box tw:z-[1] tw:w-52 tw:p-2 tw:shadow">
|
||||
<ul class="dropdown-content menu bg-base-100 rounded-box z-[1] w-52 p-2 shadow">
|
||||
<li><a role="button"
|
||||
hx-get="{% url 'import_profiles_add' %}"
|
||||
hx-target="#generic-offcanvas">{% trans 'New' %}</a></li>
|
||||
@@ -23,14 +23,14 @@
|
||||
{% endspaceless %}
|
||||
</div>
|
||||
|
||||
<div class="tw:card tw:bg-base-100 tw:shadow-xl">
|
||||
<div class="tw:card-body tw:overflow-x-auto">
|
||||
<div class="card bg-base-100 shadow-xl">
|
||||
<div class="card-body overflow-x-auto">
|
||||
{% if profiles %}
|
||||
<c-config.search></c-config.search>
|
||||
<table class="tw:table tw:table-hover tw:whitespace-nowrap">
|
||||
<table class="table table-hover whitespace-nowrap">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="tw:w-auto"></th>
|
||||
<th scope="col" class="w-auto"></th>
|
||||
<th scope="col">{% translate 'Name' %}</th>
|
||||
<th scope="col">{% translate 'Version' %}</th>
|
||||
</tr>
|
||||
@@ -38,30 +38,30 @@
|
||||
<tbody>
|
||||
{% for profile in profiles %}
|
||||
<tr class="profile">
|
||||
<td class="tw:w-auto">
|
||||
<div class="tw:join" role="group" aria-label="{% translate 'Actions' %}">
|
||||
<a class="tw:btn tw:btn-secondary tw:btn-sm tw:join-item"
|
||||
<td class="w-auto">
|
||||
<div class="join" role="group" aria-label="{% translate 'Actions' %}">
|
||||
<a class="btn btn-secondary btn-sm join-item"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Edit" %}"
|
||||
hx-get="{% url 'import_profile_edit' profile_id=profile.id %}"
|
||||
hx-target="#generic-offcanvas">
|
||||
<i class="fa-solid fa-pencil fa-fw"></i></a>
|
||||
<a class="tw:btn tw:btn-secondary tw:btn-sm tw:join-item tw:text-success"
|
||||
<a class="btn btn-secondary btn-sm join-item text-success"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Runs" %}"
|
||||
hx-get="{% url 'import_profile_runs_list' profile_id=profile.id %}"
|
||||
hx-target="#persistent-generic-offcanvas-left">
|
||||
<i class="fa-solid fa-person-running fa-fw"></i></a>
|
||||
<a class="tw:btn tw:btn-secondary tw:btn-sm tw:join-item tw:text-primary"
|
||||
<a class="btn btn-secondary btn-sm join-item text-primary"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Import" %}"
|
||||
hx-get="{% url 'import_run_add' profile_id=profile.id %}"
|
||||
hx-target="#generic-offcanvas">
|
||||
<i class="fa-solid fa-file-import fa-fw"></i></a>
|
||||
<a class="tw:btn tw:btn-secondary tw:btn-sm tw:join-item tw:text-error"
|
||||
<a class="btn btn-secondary btn-sm join-item text-error"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Delete" %}"
|
||||
|
||||
@@ -6,28 +6,28 @@
|
||||
|
||||
{% block body %}
|
||||
{% if presets %}
|
||||
<div id="search" class="tw:mb-3">
|
||||
<label class="tw:w-full">
|
||||
<div id="search" class="mb-3">
|
||||
<label class="w-full">
|
||||
<input type="search"
|
||||
class="tw:input tw:input-bordered tw:w-full"
|
||||
class="input input-bordered w-full"
|
||||
placeholder="{% translate 'Search' %}"
|
||||
_="on input or search
|
||||
show < .col /> in <#items/>
|
||||
when its textContent.toLowerCase() contains my value.toLowerCase()"/>
|
||||
</label>
|
||||
</div>
|
||||
<div class="tw:grid tw:grid-cols-1 tw:gap-4" id="items">
|
||||
<div class="grid grid-cols-1 gap-4" id="items">
|
||||
{% for preset in presets %}
|
||||
<a class="tw:no-underline"
|
||||
<a class="no-underline"
|
||||
role="button"
|
||||
hx-post="{% url 'import_profiles_add' %}"
|
||||
hx-vals='{"yaml_config": {{ preset.config }}, "name": "{{ preset.name }}", "version": "{{ preset.schema_version }}", "message": {{ preset.message }}}'
|
||||
hx-target="#generic-offcanvas">
|
||||
|
||||
<div class="col">
|
||||
<div class="tw:card tw:bg-base-100 tw:shadow-xl">
|
||||
<div class="tw:card-body">
|
||||
<h5 class="tw:card-title">{{ preset.name }}</h5>
|
||||
<div class="card bg-base-100 shadow-xl">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">{{ preset.name }}</h5>
|
||||
<hr>
|
||||
<p>{{ preset.description }}</p>
|
||||
<p>{% trans 'By' %} {{ preset.authors|join:", " }}</p>
|
||||
|
||||
@@ -11,24 +11,24 @@
|
||||
class="show-loading"
|
||||
hx-swap="show:none scroll:none">
|
||||
{% if runs %}
|
||||
<div class="tw:grid tw:grid-cols-1 tw:gap-4">
|
||||
<div class="grid grid-cols-1 gap-4">
|
||||
{% for run in runs %}
|
||||
<div class="col">
|
||||
<div class="tw:card tw:bg-base-100 tw:shadow-xl">
|
||||
<div class="tw:card-header tw:bg-base-200 tw:p-4 tw:text-sm {% if run.status == run.Status.QUEUED %}tw:text-base-content{% elif run.status == run.Status.PROCESSING %}tw:text-warning{% elif run.status == run.Status.FINISHED %}tw:text-success{% else %}tw:text-error{% endif %}">
|
||||
<span><i class="fa-solid {% if run.status == run.Status.QUEUED %}fa-hourglass-half{% elif run.status == run.Status.PROCESSING %}fa-spinner{% elif run.status == run.Status.FINISHED %}fa-check{% else %}fa-xmark{% endif %} fa-fw tw:me-2"></i>{{ run.get_status_display }}</span>
|
||||
<div class="card bg-base-100 shadow-xl">
|
||||
<div class="card-header bg-base-200 p-4 text-sm {% if run.status == run.Status.QUEUED %}text-base-content{% elif run.status == run.Status.PROCESSING %}text-warning{% elif run.status == run.Status.FINISHED %}text-success{% else %}text-error{% endif %}">
|
||||
<span><i class="fa-solid {% if run.status == run.Status.QUEUED %}fa-hourglass-half{% elif run.status == run.Status.PROCESSING %}fa-spinner{% elif run.status == run.Status.FINISHED %}fa-check{% else %}fa-xmark{% endif %} fa-fw me-2"></i>{{ run.get_status_display }}</span>
|
||||
</div>
|
||||
<div class="tw:card-body">
|
||||
<h5 class="tw:card-title"><i class="fa-solid fa-hashtag tw:me-1 tw:text-xs tw:text-gray-400"></i>{{ run.id }}<span class="tw:text-xs tw:text-gray-400 tw:ms-1">({{ run.file_name }})</span></h5>
|
||||
<div class="card-body">
|
||||
<h5 class="card-title"><i class="fa-solid fa-hashtag me-1 text-xs text-gray-400"></i>{{ run.id }}<span class="text-xs text-gray-400 ms-1">({{ run.file_name }})</span></h5>
|
||||
<hr>
|
||||
<div class="tw:grid tw:grid-cols-1 tw:md:grid-cols-2 tw:lg:grid-cols-3 tw:w-full tw:gap-4">
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 w-full gap-4">
|
||||
<div class="col">
|
||||
<div class="tw:flex tw:flex-row">
|
||||
<div class="tw:flex tw:flex-col">
|
||||
<div class="tw:text-base-content/70 tw:text-xs tw:font-medium">
|
||||
<div class="flex flex-row">
|
||||
<div class="flex flex-col">
|
||||
<div class="text-base-content/70 text-xs font-medium">
|
||||
{% trans 'Total Items' %}
|
||||
</div>
|
||||
<div class="tw:text-sm">
|
||||
<div class="text-sm">
|
||||
{{ run.total_rows }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -36,12 +36,12 @@
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<div class="tw:flex tw:flex-row">
|
||||
<div class="tw:flex tw:flex-col">
|
||||
<div class="tw:text-base-content/70 tw:text-xs tw:font-medium">
|
||||
<div class="flex flex-row">
|
||||
<div class="flex flex-col">
|
||||
<div class="text-base-content/70 text-xs font-medium">
|
||||
{% trans 'Processed Items' %}
|
||||
</div>
|
||||
<div class="tw:text-sm">
|
||||
<div class="text-sm">
|
||||
{{ run.processed_rows }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -49,12 +49,12 @@
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<div class="tw:flex tw:flex-row">
|
||||
<div class="tw:flex tw:flex-col">
|
||||
<div class="tw:text-base-content/70 tw:text-xs tw:font-medium">
|
||||
<div class="flex flex-row">
|
||||
<div class="flex flex-col">
|
||||
<div class="text-base-content/70 text-xs font-medium">
|
||||
{% trans 'Skipped Items' %}
|
||||
</div>
|
||||
<div class="tw:text-sm">
|
||||
<div class="text-sm">
|
||||
{{ run.skipped_rows }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -62,12 +62,12 @@
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<div class="tw:flex tw:flex-row">
|
||||
<div class="tw:flex tw:flex-col">
|
||||
<div class="tw:text-base-content/70 tw:text-xs tw:font-medium">
|
||||
<div class="flex flex-row">
|
||||
<div class="flex flex-col">
|
||||
<div class="text-base-content/70 text-xs font-medium">
|
||||
{% trans 'Failed Items' %}
|
||||
</div>
|
||||
<div class="tw:text-sm">
|
||||
<div class="text-sm">
|
||||
{{ run.failed_rows }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -75,12 +75,12 @@
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<div class="tw:flex tw:flex-row">
|
||||
<div class="tw:flex tw:flex-col">
|
||||
<div class="tw:text-base-content/70 tw:text-xs tw:font-medium">
|
||||
<div class="flex flex-row">
|
||||
<div class="flex flex-col">
|
||||
<div class="text-base-content/70 text-xs font-medium">
|
||||
{% trans 'Successful Items' %}
|
||||
</div>
|
||||
<div class="tw:text-sm">
|
||||
<div class="text-sm">
|
||||
{{ run.successful_rows }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -89,14 +89,14 @@
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="tw:card-footer tw:bg-base-200 tw:p-4 tw:text-base-content/70">
|
||||
<a class="tw:no-underline tw:text-info"
|
||||
<div class="card-footer bg-base-200 p-4 text-base-content/70">
|
||||
<a class="no-underline text-info"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Logs" %}"
|
||||
hx-get="{% url 'import_run_log' profile_id=profile.id run_id=run.id %}"
|
||||
hx-target="#generic-offcanvas"><i class="fa-solid fa-file-lines"></i></a>
|
||||
<a class="tw:no-underline tw:text-error"
|
||||
<a class="no-underline text-error"
|
||||
role="button"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-title="{% translate "Delete" %}"
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
{% block title %}{% translate 'Logs for' %} #{{ run.id }}{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="tw:card tw:bg-base-100 tw:shadow-xl tw:max-h-full tw:overflow-auto">
|
||||
<div class="tw:card-body">
|
||||
<div class="card bg-base-100 shadow-xl max-h-full overflow-auto">
|
||||
<div class="card-body">
|
||||
{{ run.logs|linebreaks }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user