diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/footer/footer.svelte | 2 | ||||
| -rw-r--r-- | src/components/forum/forum.svelte | 11 | ||||
| -rw-r--r-- | src/components/forum_list/forum_list.svelte | 7 | ||||
| -rw-r--r-- | src/components/glyph/glyph.svelte | 2 | ||||
| -rw-r--r-- | src/components/header/header.svelte | 2 | ||||
| -rw-r--r-- | src/components/topic/topic.svelte | 95 | ||||
| -rw-r--r-- | src/pages/_fallback.svelte | 2 | ||||
| -rw-r--r-- | src/pages/_layout.svelte | 12 | ||||
| -rw-r--r-- | src/pages/a/[id].svelte | 2 | ||||
| -rw-r--r-- | src/pages/f/[id].svelte | 2 | ||||
| -rw-r--r-- | src/pages/g/[id].svelte | 4 | ||||
| -rw-r--r-- | src/pages/index.svelte | 2 | ||||
| -rw-r--r-- | src/pages/p/[id].svelte | 5 | ||||
| -rw-r--r-- | src/pages/t/[id].svelte | 5 | ||||
| -rw-r--r-- | src/stores/apollo.js | 2 | ||||
| -rw-r--r-- | src/stores/forum.js | 2 | ||||
| -rw-r--r-- | src/stores/forums.js | 2 | ||||
| -rw-r--r-- | src/stores/post.js | 2 | ||||
| -rw-r--r-- | src/stores/tag.js | 2 | ||||
| -rw-r--r-- | src/stores/topic.js | 2 |
20 files changed, 79 insertions, 86 deletions
diff --git a/src/components/footer/footer.svelte b/src/components/footer/footer.svelte index 3587aab..317319e 100644 --- a/src/components/footer/footer.svelte +++ b/src/components/footer/footer.svelte @@ -1,7 +1,7 @@ <script> import { _ } from 'svelte-i18n'; - import LanguageSelector from '../language_selector/language_selector.svelte'; + import LanguageSelector from '$/components/language_selector/language_selector.svelte'; const licenseUrl = 'https://gitlab.com/rbdr/forum/'; </script> diff --git a/src/components/forum/forum.svelte b/src/components/forum/forum.svelte index 7008e66..8fc0538 100644 --- a/src/components/forum/forum.svelte +++ b/src/components/forum/forum.svelte @@ -2,20 +2,21 @@ export let id; import { _ } from 'svelte-i18n'; - import { getForum } from '$stores/forum'; - import ErrorBlock from '../error_block/error_block.svelte'; + import { getForum } from '$/stores/forum'; + import ErrorBlock from '$/components/error_block/error_block.svelte'; + import Loader from '$/components/loader/loader.svelte'; - import TopicSummary from '$components/topic_summary/topic_summary.svelte'; + import TopicSummary from '$/components/topic_summary/topic_summary.svelte'; $: store = getForum(id); $: forum = $store.data; </script> {#if $store.loading} - <p>Loading...</p> + <Loader /> {/if} {#if $store.error} - <ErrorBlock message={$_('forum_list.error.unavailable')} /> + <ErrorBlock message={$_('forum.error.unavailable')} /> {/if} {#if forum} <h1>{forum.glyph} {$_(forum.label)}</h1> diff --git a/src/components/forum_list/forum_list.svelte b/src/components/forum_list/forum_list.svelte index 46f60f0..2998c09 100644 --- a/src/components/forum_list/forum_list.svelte +++ b/src/components/forum_list/forum_list.svelte @@ -1,12 +1,13 @@ <script> import { _ } from 'svelte-i18n'; - import { forums } from '$stores/forums'; - import ErrorBlock from '../error_block/error_block.svelte'; + import { forums } from '$/stores/forums'; + import Loader from '$/components/loader/loader.svelte'; + import ErrorBlock from '$/components/error_block/error_block.svelte'; </script> <nav title="{$_('forum_list.title')}"> {#if $forums.loading} - <p>Loading...</p> + <Loader /> {/if} {#if $forums.error} <ErrorBlock message={$_('forum_list.error.unavailable')} /> diff --git a/src/components/glyph/glyph.svelte b/src/components/glyph/glyph.svelte index 98d1c6e..32e8ee6 100644 --- a/src/components/glyph/glyph.svelte +++ b/src/components/glyph/glyph.svelte @@ -1,6 +1,6 @@ <script> import { _ } from 'svelte-i18n'; - import { getGlyphHash } from '../../utils/glyph_hash'; + import { getGlyphHash } from '$/utils/glyph_hash'; export let uuid; </script> diff --git a/src/components/header/header.svelte b/src/components/header/header.svelte index 36d4d50..ed91526 100644 --- a/src/components/header/header.svelte +++ b/src/components/header/header.svelte @@ -1,7 +1,7 @@ <script> import { _ } from 'svelte-i18n'; - import { version } from '$config/config'; + import { version } from '$/config/config'; </script> <header title="{$_('header.title')}"> 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} diff --git a/src/pages/_fallback.svelte b/src/pages/_fallback.svelte index df7da3c..7c88129 100644 --- a/src/pages/_fallback.svelte +++ b/src/pages/_fallback.svelte @@ -1,5 +1,5 @@ <script> - import InvalidRoute from '$components/invalid_route/invalid_route.svelte'; + import InvalidRoute from '$/components/invalid_route/invalid_route.svelte'; </script> <InvalidRoute /> diff --git a/src/pages/_layout.svelte b/src/pages/_layout.svelte index 80cc29e..b296b73 100644 --- a/src/pages/_layout.svelte +++ b/src/pages/_layout.svelte @@ -1,14 +1,14 @@ <script> - import '$config/i18n'; + import '$/config/i18n'; import { isLoading } from 'svelte-i18n'; - import ForumList from '$components/forum_list/forum_list.svelte'; - import Header from '$components/header/header.svelte'; - import Footer from '$components/footer/footer.svelte'; + import ForumList from '$/components/forum_list/forum_list.svelte'; + import Header from '$/components/header/header.svelte'; + import Loader from '$/components/loader/loader.svelte'; + import Footer from '$/components/footer/footer.svelte'; </script> {#if $isLoading} - <h1>Loading.</h1> - <p>Please wait.</p> + <Loader /> {:else} <Header /> <main> diff --git a/src/pages/a/[id].svelte b/src/pages/a/[id].svelte index 9e6f184..f9bd858 100644 --- a/src/pages/a/[id].svelte +++ b/src/pages/a/[id].svelte @@ -1,5 +1,5 @@ <script> - import Author from '$components/author/author.svelte'; + import Author from '$/components/author/author.svelte'; </script> <Author/> diff --git a/src/pages/f/[id].svelte b/src/pages/f/[id].svelte index 0251694..473a58d 100644 --- a/src/pages/f/[id].svelte +++ b/src/pages/f/[id].svelte @@ -1,5 +1,5 @@ <script> - import Forum from '$components/forum/forum.svelte'; + import Forum from '$/components/forum/forum.svelte'; export let id; </script> diff --git a/src/pages/g/[id].svelte b/src/pages/g/[id].svelte index 04fda92..754f129 100644 --- a/src/pages/g/[id].svelte +++ b/src/pages/g/[id].svelte @@ -1,6 +1,6 @@ <script> + import Tag from '$/components/tag/tag.svelte'; export let id; </script> -<h1>Tag Index.</h1> -<p>This component lists topics for tag with id: {id}</p> +<Tag id={id}/> diff --git a/src/pages/index.svelte b/src/pages/index.svelte index 7000137..b716772 100644 --- a/src/pages/index.svelte +++ b/src/pages/index.svelte @@ -1,6 +1,8 @@ <script> import { _ } from 'svelte-i18n'; + import Loader from '$/components/loader/loader.svelte'; </script> +<Loader /> <h1>{$_('home.title')}</h1> <p>{$_('home.content')}</p> diff --git a/src/pages/p/[id].svelte b/src/pages/p/[id].svelte index 9caab6f..3504cea 100644 --- a/src/pages/p/[id].svelte +++ b/src/pages/p/[id].svelte @@ -1,5 +1,6 @@ <script> - import Post from '$components/post/post.svelte'; + import Post from '$/components/post/post.svelte'; + export let id; </script> -<Post/> +<Post id={id}/> diff --git a/src/pages/t/[id].svelte b/src/pages/t/[id].svelte index 3fd9560..e13fd04 100644 --- a/src/pages/t/[id].svelte +++ b/src/pages/t/[id].svelte @@ -1,5 +1,6 @@ <script> - import Topic from '$components/topic/topic.svelte'; + import Topic from '$/components/topic/topic.svelte'; + export let id; </script> -<Topic/> +<Topic id={id}/> diff --git a/src/stores/apollo.js b/src/stores/apollo.js index e2deecd..0ac2443 100644 --- a/src/stores/apollo.js +++ b/src/stores/apollo.js @@ -1,6 +1,6 @@ import { ApolloError } from '@apollo/client/core'; import { readable } from 'svelte/store'; -import { client } from '$config/apollo'; +import { client } from '$/config/apollo'; /* * This is a generic store for use with apollo diff --git a/src/stores/forum.js b/src/stores/forum.js index 110da57..a4a66a5 100644 --- a/src/stores/forum.js +++ b/src/stores/forum.js @@ -1,4 +1,4 @@ import { store } from './apollo'; -import { GET_FORUM } from '$data/queries'; +import { GET_FORUM } from '$/data/queries'; export const getForum = (id) => store({ key: 'forum', query: GET_FORUM, variables: { id } }); diff --git a/src/stores/forums.js b/src/stores/forums.js index 5cce7ba..583b0d3 100644 --- a/src/stores/forums.js +++ b/src/stores/forums.js @@ -1,4 +1,4 @@ import { store } from './apollo'; -import { GET_FORUMS } from '$data/queries'; +import { GET_FORUMS } from '$/data/queries'; export const forums = store({ key: 'forums', query: GET_FORUMS, initialValue: [] }); diff --git a/src/stores/post.js b/src/stores/post.js index ed19cd6..0cbf1d5 100644 --- a/src/stores/post.js +++ b/src/stores/post.js @@ -1,4 +1,4 @@ import { store } from './apollo'; -import { GET_POST } from '$data/queries'; +import { GET_POST } from '$/data/queries'; export const getPost = (id) => store({ key: 'post', query: GET_POST, variables: { id } }); diff --git a/src/stores/tag.js b/src/stores/tag.js index 742db51..d74b719 100644 --- a/src/stores/tag.js +++ b/src/stores/tag.js @@ -1,4 +1,4 @@ import { store } from './apollo'; -import { GET_TAG } from '$data/queries'; +import { GET_TAG } from '$/data/queries'; export const getTag = (id) => store({ key: 'tag', query: GET_TAG, variables: { id } }); diff --git a/src/stores/topic.js b/src/stores/topic.js index 3225a83..c90f1a3 100644 --- a/src/stores/topic.js +++ b/src/stores/topic.js @@ -1,4 +1,4 @@ import { store } from './apollo'; -import { GET_TOPIC } from '$data/queries'; +import { GET_TOPIC } from '$/data/queries'; export const getTopic = (id) => store({ key: 'topic', query: GET_TOPIC, variables: { id } }); |