Sudo-JHare 86a2718dea 0.01b
initial port of the fork
2025-04-10 17:02:45 +10:00

124 lines
7.1 KiB
HTML

{# app/modules/fhir_ig_importer/templates/fhir_ig_importer/import_ig_page.html #}
{% extends "base.html" %} {# Or your control panel base template "cp_base.html" #}
{% from "_form_helpers.html" import render_field %} {# Assumes you have this macro #}
{% block content %} {# Or your specific CP content block #}
<div class="container mt-4">
<h2 class="mb-4"><i class="bi bi-bootstrap-reboot me-2"></i>Import FHIR Implementation Guide</h2>
<div class="row">
<div class="col-md-8">
{# --- Import Form --- #}
<div class="card mb-4">
<div class="card-body">
<h5 class="card-title">Enter Package Details</h5>
<form method="POST" action="{{ url_for('.import_ig') }}" novalidate> {# Use relative endpoint for blueprint #}
{{ form.hidden_tag() }} {# CSRF token #}
<div class="mb-3">
{{ render_field(form.package_name, class="form-control" + (" is-invalid" if form.package_name.errors else ""), placeholder="e.g., hl7.fhir.au.base") }}
</div>
<div class="mb-3">
{{ render_field(form.package_version, class="form-control" + (" is-invalid" if form.package_version.errors else ""), placeholder="e.g., 4.1.0 or latest") }}
</div>
<div class="mb-3">
{{ form.submit(class="btn btn-primary", value="Fetch & Download IG") }}
</div>
</form>
</div>
</div>
{# --- Results Section --- #}
<div id="results">
{# Display Fatal Error if passed #}
{% if fatal_error %}
<div class="alert alert-danger" role="alert">
<h5 class="alert-heading">Critical Error during Import</h5>
{{ fatal_error }}
</div>
{% endif %}
{# Display results if the results dictionary exists (meaning POST happened) #}
{% if results %}
<div class="card">
<div class="card-body">
{# Use results.requested for package info #}
<h5 class="card-title">Import Results for: <code>{{ results.requested[0] }}#{{ results.requested[1] }}</code></h5>
<hr>
{# --- Process Errors --- #}
{% if results.errors %}
<h6 class="mt-4 text-danger">Errors Encountered ({{ results.errors|length }}):</h6>
<ul class="list-group list-group-flush mb-3">
{% for error in results.errors %}
<li class="list-group-item list-group-item-danger py-1">{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{# --- Downloaded Files --- #}
<h6 class="mt-4">Downloaded Packages ({{ results.downloaded|length }} / {{ results.processed|length }} processed):</h6>
{# Check results.downloaded dictionary #}
{% if results.downloaded %}
<ul class="list-group list-group-flush mb-3">
{# Iterate through results.downloaded items #}
{% for (name, version), path in results.downloaded.items()|sort %}
<li class="list-group-item py-1 d-flex justify-content-between align-items-center">
<code>{{ name }}#{{ version }}</code>
{# Display relative path cleanly #}
<small class="text-muted ms-2">{{ path | replace('/app/', '') | replace('\\', '/') }}</small>
<span class="badge bg-success rounded-pill ms-auto">Downloaded</span> {# Moved badge to end #}
</li>
{% endfor %}
</ul>
<p><small>Files saved in server's `instance/fhir_packages` directory.</small></p>
{% else %}
<p><small>No packages were successfully downloaded.</small></p>
{% endif %}
{# --- All Dependencies Found --- #}
<h6 class="mt-4">Consolidated Dependencies Found:</h6>
{# Calculate unique_deps based on results.all_dependencies #}
{% set unique_deps = {} %}
{% for pkg_id, deps_dict in results.all_dependencies.items() %}
{% for dep_name, dep_version in deps_dict.items() %}
{% set _ = unique_deps.update({(dep_name, dep_version): true}) %}
{% endfor %}
{% endfor %}
{% if unique_deps %}
<p><small>Unique direct dependencies found across all processed packages:</small></p>
<dl class="row">
{% for (name, version), _ in unique_deps.items()|sort %}
<dt class="col-sm-4 text-muted"><code>{{ name }}</code></dt>
<dd class="col-sm-8">{{ version }}</dd>
{% endfor %}
</dl>
{% else %}
<div class="alert alert-secondary" role="alert" style="padding: 0.5rem 1rem;">
No explicit dependencies found in any processed package metadata.
</div>
{% endif %}
{# --- End Dependency Result --- #}
</div> {# End card-body #}
</div> {# End card #}
{% endif %} {# End if results #}
</div> {# End results #}
{# --- End Results Section --- #}
</div>
<div class="col-md-4">
{# --- Instructions Panel --- #}
<div class="card bg-light">
<div class="card-body">
<h5 class="card-title">Instructions</h5>
<p class="card-text">Enter the official FHIR package name (e.g., <code>hl7.fhir.au.base</code>) and the desired version (e.g., <code>4.1.0</code>, <code>latest</code>).</p>
<p class="card-text">The system will download the package and attempt to list its direct dependencies.</p>
<p class="card-text"><small>Downloads are saved to the server's `instance/fhir_packages` folder.</small></p>
</div>
</div>
</div>
</div> {# End row #}
</div> {# End container #}
{% endblock %}