feat: timeline refactor, docking UI, location/state dropdowns, sim_time cleanup

Templates:
- mission_timeline_preview: client-side rendering with lane stacking, wheel zoom,
  drag pan, percentage-based layout, event dedup, scale labels
- asset_detail: dock/undock modals with time selection, future event warning,
  Mission Label column replacing Location/State
- asset_entry_form: all_locations expanded to 72 items (draft board hierarchy),
  all_states dynamic from DB, event point dropdown uses same list
- Remove sim_time from all template url_for links
- base.html: remove Today button

JS:
- app.js: sim_time controls use POST /api/v1/sim-time API instead of URL param

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 15:29:10 +08:00
co-authored by Claude Opus 4.7
parent cc4c460840
commit 2fef743e83
15 changed files with 1791 additions and 1966 deletions
+8 -4
View File
@@ -46,7 +46,8 @@
{{ datetime_picker_field('开始', 'start', range_start_input, field_id='mission-list-start') }}
{{ datetime_picker_field('结束', 'end', range_end_input, field_id='mission-list-end') }}
<button class="primary-button" type="submit">应用</button>
<a class="secondary-button" href="{{ url_for('web.mission_list', sim_time=simulation_time_input) }}">重置</a>
<a class="secondary-button" href="{{ url_for('web.mission_list'
) }}">重置</a>
</div>
</div>
</form>
@@ -100,7 +101,8 @@
<div class="table-subline">{{ entry.status_label }}</div>
</td>
<td class="two-line-cell">
<strong><a class="table-link" href="{{ url_for('web.asset_detail', asset_id=entry.asset.id, sim_time=simulation_time_input) }}">{{ entry.asset_name }}</a></strong>
<strong><a class="table-link" href="{{ url_for('web.asset_detail', asset_id=entry.asset.id
) }}">{{ entry.asset_name }}</a></strong>
<div class="table-subline">{{ entry.asset_type }}</div>
</td>
<td class="two-line-cell">
@@ -117,8 +119,10 @@
<td>{{ entry.location }}</td>
<td>
<div class="table-actions">
<a class="table-link" href="{{ url_for('web.asset_detail', asset_id=entry.asset.id, sim_time=simulation_time_input) }}">查看资产</a>
<a class="table-link" href="{{ url_for('web.asset_entry_edit', asset_id=entry.asset.id, entry_id=entry.entry_id, sim_time=simulation_time_input) }}">编辑条目</a>
<a class="table-link" href="{{ url_for('web.asset_detail', asset_id=entry.asset.id
) }}">查看资产</a>
<a class="table-link" href="{{ url_for('web.asset_entry_edit', asset_id=entry.asset.id, entry_id=entry.entry_id
) }}">编辑条目</a>
</div>
</td>
</tr>