You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
matrix-spec/layouts/partials/events/render-event.html

102 lines
3.0 KiB
HTML

{{/*
Renders a single event, given:
* `event_name`: the name we want to display for the event
* `event_data`: the event specification
* `desired_example_name` (optional): the exact name of the examples to render.
If `desired_example_name` is omitted we render all examples
whose names start with the `event_name`.
*/}}
{{ $event_name := .event_name }}
{{ $desired_example_name := .desired_example_name }}
{{ $event_data := .event_data }}
<section class="rendered-data event">
<details {{ if not .Site.Params.ui.rendered_data_collapsed }}open{{ end }}>
<summary>
<h1 id="{{ anchorize $event_name }}">
<code>{{ $event_name }}</code>
</h1>
<hr/>
{{ if (index $event_data "x-addedInMatrixVersion") }}
{{ partial "added-in" (dict "v" (index $event_data "x-addedInMatrixVersion")) }}
{{ end }}
{{ if (index $event_data "x-changedInMatrixVersion") }}
{{ partial "changed-in" (dict "changes_dict" (index $event_data "x-changedInMatrixVersion")) }}
{{ end -}}
{{ $event_data.description | markdownify }}
</summary>
{{ $state_key := index $event_data.properties "state_key" }}
<table class="basic-info">
<tr>
<th>Event type:</th>
<td>{{ if $state_key }}State event{{ else }}Message event{{ end }}</td>
</tr>
{{ if $state_key }}
<tr>
<th>State key</th>
<td>{{ $state_key.description | markdownify }}</td>
</tr>
{{ end }}
</table>
<h2>Content</h2>
{{ $anchor_base := anchorize $event_name }}
{{ $additional_types := partial "json-schema/resolve-additional-types" (dict "schema" $event_data.properties.content "anchor_base" $anchor_base) }}
{{ range $additional_types }}
{{ partial "openapi/render-object-table" . }}
{{end}}
<h2>Examples</h2>
{{ $all_examples := index site.Data "event-schemas" "examples" }}
{{ range $example_name, $example := $all_examples }}
{{/*
This is to allow the msgtype template to work.
It lets callers specify exactly the name of the example they want
*/}}
{{ if $desired_example_name }}
{{ if eq $example_name $desired_example_name }}
{{ $example_content := partial "json-schema/resolve-refs" (dict "schema" $example "path" "event-schemas/examples") }}
```json
{{ jsonify (dict "indent" " ") $example_content }}
```
{{ end }}
{{/*
If `$desired_example_name` is not given, we will include any
examples whose first part (before "$") matches the event name
*/}}
{{ else }}
{{ $pieces := split $example_name "$" }}
{{ $example_base_name := index $pieces 0 }}
{{ if eq $event_name $example_base_name }}
{{ $example_content := partial "json-schema/resolve-refs" (dict "schema" $example "path" "event-schemas/examples") }}
{{ $example_json := jsonify (dict "indent" " ") $example_content }}
{{ $example_json = replace $example_json "\\u003c" "<" }}
{{ $example_json = replace $example_json "\\u003e" ">" | safeHTML }}
```json
{{ $example_json }}
```
{{ end }}
{{ end }}
{{ end }}
</section>