mirror of
https://github.com/Sudo-JHare/FHIRFLARE-IG-Toolkit.git
synced 2025-06-15 13:09:59 +00:00
124 lines
7.1 KiB
HTML
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 %} |