{% extends "base.html" %} {% block title %}仪表盘 · 西湖生存手册{% endblock %} {% macro short_value(val) -%} {%- if val is none or val == "" or val == {} or val == [] -%} — {%- elif val is mapping -%} {%- set label = val.get('title') or val.get('name') or val.get('text') or val.get('grade') or val.get('campus') -%} {%- set extra = val.get('start') or val.get('due_at') or val.get('time') or val.get('campus') -%} {%- if label -%}{{ label }}{% if extra and extra != label %} · {{ extra }}{% endif %} {%- else -%}{{ val | tojson }}{%- endif -%} {%- elif val is sequence and val is not string -%} {%- if val -%}{{ val | length }} 条{%- else -%}—{%- endif -%} {%- else -%} {{ val }} {%- endif -%} {%- endmacro %} {% block content %}
西湖生存手册
Westlake Survival · 课表 · 成绩 · 班车 · 培养方案 · 地图

现在

{% set portal = ctx.get('extras', {}).get('portal', {}) if ctx is mapping else {} %} {% set portal_loading = ctx.get('extras', {}).get('portal_loading') if ctx is mapping else False %} {% if portal or portal_loading %}
未读邮件
{{ portal.unread_email if portal else '…' }}
在借图书
{{ portal.borrowed_books if portal else '…' }}
待办(待办理)
{{ portal.todo_pending if portal else '…' }}
已发起 / 已处理
{{ portal.todo_started if portal else '…' }} / {{ portal.todo_done if portal else '…' }}
{% endif %} {% if not available %}
context 模块暂不可用(或数据源缺失),卡片以「—」占位。页面其余功能不受影响。
{% endif %}
日期
{{ ctx.get('date') | fmt_date }}
{{ ctx.get('weekday_cn') or (ctx.get('date') | weekday_cn) }}
教学周
{% if ctx.get('week_number') is not none %} 第 {{ ctx.get('week_number') }} 周 {% else %}—{% endif %}
{{ ctx.get('semester_name') or '当前学期 —' }}

接着发生

{% for key, label in fields %}
{{ label }}
{{ short_value(ctx.get(key)) }}
{% endfor %}

最近事件

{% if next_event and next_event.get('title') %}
{{ next_event.get('title') }}
{{ next_event.get('start') | fmt_date }} {%- set end = next_event.get('end') %} {%- if end and end != next_event.get('start') %} ~ {{ end | fmt_date }}{% endif %} {%- set d = (end or next_event.get('start')) | days_until(today) %} {%- if d is not none %} · {% if d < 0 %}已进行中{% elif d == 0 %}今天{% else %}{{ d }} 天后{% endif %} {%- endif %}
{% else %}
暂无即将到来的校历事件(或校历数据不可用)。
{% endif %}

下班车

{% if departures %} {% for item in departures %} {% endfor %}
时刻校区日别
{{ item.get('time') }} {{ item.get('campus') }} {{ item.get('day_kind') }}
{% else %}
暂无班车数据。
{% endif %} {% endblock %}