diff options
Diffstat (limited to 'src/components/topic/topic.svelte')
| -rw-r--r-- | src/components/topic/topic.svelte | 95 |
1 files changed, 41 insertions, 54 deletions
diff --git a/src/components/topic/topic.svelte b/src/components/topic/topic.svelte index 2aff79a..9be7346 100644 --- a/src/components/topic/topic.svelte +++ b/src/components/topic/topic.svelte @@ -1,59 +1,46 @@ <script> + export let id; + import { _ } from 'svelte-i18n'; + import { getTopic } from '$/stores/topic'; - import Glyph from '../glyph/glyph.svelte'; -</script> + import ErrorBlock from '$/components/error_block/error_block.svelte'; + import Loader from '$/components/loader/loader.svelte'; + import PostContent from '$/components/post_content/post_content.svelte'; + import { readableTime } from '$/utils/readable_time.js'; -<div class="h-entry" title="{$_('topic.title')}"> - <h1 class="p-name">This is a post in the forum.</h1> - <aside class="topic-meta" title="{$_('topic.metadata_title')}"> - <span class="topic-location">{$_('topic.category_location')} <a href="/f/interaction" - class="p-category">{$_('forum.name.interaction')}</a>.</span> - <span class="topic-ttl"><a class="u-url u-uid" title="{$_('topic.permalink_title')}" href="/t/2a3fc567af8c897ca6f55fb5fj">{$_('topic.remaining_time', { values: { remaining: $_('time.days', { values: { count: 3 } }) } })}</a>.</span> - </aside> - <aside class="topic-tags" title="{$_('topic.tags_title')}"> - {$_('topic.tags_location')} - <a href="/g/question" class="p-category">question<span class="tag-weight">(5)</span></a> - <a href="/g/meta" class="p-category">meta<span class="tag-weight">(34)</span></a> - <a href="/g/carrots" class="p-category">carrots<span class="tag-weight">(1)</span></a> - <a href="/g/tpbo" class="p-category">tpbo<span class="tag-weight">(2)</span></a> - </aside> - <aside class="post-meta" title="{$_('post.metadata_title', { values: { count: 1, total: 2 } })}"> - <Glyph uuid="3cd8c84e18144a2da71f6bace9392abc" /> - <span class="h-card"> - {$_('post.author_credit')} <a href="/a/rbdr" class="p-nickname u-url">rbdr</a>. - </span> - <time role="presentation" class="dt-published" datetime="2018-08-14T03:32:10.929Z"> - <a title="{$_('post.permalink_title')}" href="/p/a80c70ea0120387123097ce1907ff"> - 2018-08-14 03:32:10 - </a> - </time> - </aside> - <article class="e-content" title="{$_('post.title', { values: { count: 1, total: 2, author: 'rbdr' } })}"> - <p>This is a main topic in the forum. Does that abstraction still even make sense?</p> - <p>Is this really it??</p> - <p>This might all be fake but at least the links look purple when visited</p> - </article> - <hr/> - <aside class="post-meta" title="{$_('post.metadata_title', { values: { count: 2, total: 2 } })}"> - <Glyph uuid="b33f0339f7d64d1ca27f1c0aefb7d753" /> - <span class="h-card"> - {$_('post.author_credit')} <a href="/a/time4carrots" class="p-nickname u-url">time4carrots</a>. - </span> - <time role="presentation" class="dt-published" datetime="2018-08-15T04:10:00.929Z"> - <a href="/p/da9910f3febde91948000ce1535ea"> - 2018-08-15 04:10:00 - </a> - </time> - </aside> - <article class="e-content" title="{$_('post.title', { values: { count: 1, total: 2, author: 'time4carrots' } })}"> - <p>It's just how it is...</p> - </article> - <hr/> -</div> + $: store = getTopic(id); + $: topic = $store.data; + $: remainingTime = topic ? (topic.updated_at + topic.ttl) - Date.now() : 0; + $: remaining = readableTime(remainingTime); +</script> -<style> - .post-meta * { - vertical-align: top; - } -</style> +{#if $store.loading} + <Loader /> +{/if} +{#if $store.error} + <ErrorBlock message={$_('topic.error.unavailable')} /> +{/if} +{#if topic} + <div class="h-entry" title="{$_('topic.title')}"> + <h1 class="p-name">{topic.title}</h1> + <aside class="topic-meta" title="{$_('topic.metadata_title')}"> + {#if topic.forum} + <span class="topic-location">{$_('topic.category_location')} <a href="/f/{topic.forum.id}" + class="p-category">{topic.forum.glyph} {$_(topic.forum.label)}</a>.</span> + {/if} + <span class="topic-ttl"><a class="u-url u-uid" title="{$_('topic.permalink_title')}" href="/t/{topic.id}">({$_('topic.remaining_time', { values: { remaining: $_(remaining.label, { values: { count: remaining.count } }) } })})</a>.</span> + </aside> + {#if topic.tags.length > 0} + <aside class="topic-tags" title="{$_('topic.tags_title')}"> + {$_('topic.tags_location')} + {#each topic.tags as tag} + <a href="/g/{tag.id}" class="p-category">{tag.id}<span class="tag-weight">({tag.weight})</span></a>{' '} + {/each} + </aside> + {/if} + {#each topic.posts as post, index} + <PostContent post={post} index={index} count={topic.posts.length} /> + {/each} + </div> +{/if} |