110 lines
4.5 KiB
HTML
110 lines
4.5 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block content %}
|
|
<section class="hero-panel compact page-header-compact engine-detail-hero">
|
|
<div class="hero-copy">
|
|
<p class="eyebrow">Engine Detail</p>
|
|
<h1>{{ family.engine_name }}</h1>
|
|
<p class="hero-text">查看家族级字段,以及该引擎下全部配置项的关键性能参数。</p>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="detail-grid">
|
|
<article class="panel">
|
|
<div class="panel-heading">
|
|
<p class="eyebrow">Family</p>
|
|
<h2>基础信息</h2>
|
|
</div>
|
|
<div class="summary-grid">
|
|
<div class="summary-card">
|
|
<span class="summary-label">Part Name</span>
|
|
<strong>{{ family.part_name or "-" }}</strong>
|
|
</div>
|
|
<div class="summary-card">
|
|
<span class="summary-label">Cycle</span>
|
|
<strong>{{ family.cycle or "-" }}</strong>
|
|
</div>
|
|
<div class="summary-card">
|
|
<span class="summary-label">Size</span>
|
|
<strong>{{ family.size_m|fmt_decimal }}</strong>
|
|
</div>
|
|
<div class="summary-card">
|
|
<span class="summary-label">Entry Cost</span>
|
|
<strong>{{ family.entry_cost if family.entry_cost is not none else "-" }}</strong>
|
|
</div>
|
|
</div>
|
|
<div class="button-row top-gap">
|
|
<a class="secondary-button" href="{{ url_for('web.engine_edit', family_id=family.id) }}">编辑这个引擎</a>
|
|
<a class="module-link" href="{{ url_for('web.engine_list') }}">返回列表</a>
|
|
<form
|
|
method="post"
|
|
action="{{ url_for('web.engine_delete', family_id=family.id) }}"
|
|
class="inline-form"
|
|
onsubmit="return confirm('确认删除 {{ family.engine_name }} ?')"
|
|
>
|
|
<button class="danger-link" type="submit">删除引擎</button>
|
|
</form>
|
|
</div>
|
|
</article>
|
|
|
|
<article class="panel panel-wide">
|
|
<div class="panel-heading">
|
|
<p class="eyebrow">Variants</p>
|
|
<h2>配置列表</h2>
|
|
</div>
|
|
<div class="table-shell">
|
|
<table class="data-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Config</th>
|
|
<th>Fuel</th>
|
|
<th>Env</th>
|
|
<th>SL Thrust</th>
|
|
<th>Vac Thrust</th>
|
|
<th>SL ISP</th>
|
|
<th>Vac ISP</th>
|
|
<th>Mass</th>
|
|
<th>TWR</th>
|
|
<th>Price</th>
|
|
<th>Ignitions</th>
|
|
<th>Mod</th>
|
|
<th>Tech</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for row in variant_rows %}
|
|
{% set variant = row.variant %}
|
|
<tr>
|
|
<td>
|
|
<strong>{{ variant.config_name or "Default" }}</strong>
|
|
{% if variant.config_note %}
|
|
<div class="variant-note">{{ variant.config_note }}</div>
|
|
{% endif %}
|
|
</td>
|
|
<td>{{ variant.fuel_type }}</td>
|
|
<td>{{ variant.work_env or "-" }}</td>
|
|
<td>{{ row.sl_thrust_kn|fmt_decimal }}</td>
|
|
<td>{{ row.vac_thrust_kn|fmt_decimal }}</td>
|
|
<td>{{ variant.sl_isp|fmt_decimal }}</td>
|
|
<td>{{ variant.vac_isp|fmt_decimal }}</td>
|
|
<td>{{ variant.mass_t|fmt_decimal }}</td>
|
|
<td>{{ variant.twr|fmt_decimal }}</td>
|
|
<td>{{ variant.price_kd if variant.price_kd is not none else "-" }}</td>
|
|
<td>
|
|
{% if variant.has_unlimited_ignitions %}
|
|
Unlimited
|
|
{% else %}
|
|
{{ variant.ignitions if variant.ignitions is not none else "-" }}
|
|
{% endif %}
|
|
</td>
|
|
<td>{{ variant.mod_source or "-" }}</td>
|
|
<td>{{ variant.tech_required or "-" }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</article>
|
|
</section>
|
|
{% endblock %}
|