summaryrefslogtreecommitdiff
path: root/packages/client/src/components
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-06-21 17:55:38 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-06-21 17:55:38 +0900
commitf880d0631c7daf9cffbc388dcb81fd1f7f4259fb (patch)
tree3e3ec034957bd9f7188d1d50e6c3d04daf6d1f70 /packages/client/src/components
parentrefactor(client): use composition api (diff)
downloadsharkey-f880d0631c7daf9cffbc388dcb81fd1f7f4259fb.tar.gz
sharkey-f880d0631c7daf9cffbc388dcb81fd1f7f4259fb.tar.bz2
sharkey-f880d0631c7daf9cffbc388dcb81fd1f7f4259fb.zip
tweak client
Diffstat (limited to 'packages/client/src/components')
-rw-r--r--packages/client/src/components/abuse-report.vue3
-rw-r--r--packages/client/src/components/instance-info.vue96
2 files changed, 98 insertions, 1 deletions
diff --git a/packages/client/src/components/abuse-report.vue b/packages/client/src/components/abuse-report.vue
index 86eccd6276..e8ab6f600e 100644
--- a/packages/client/src/components/abuse-report.vue
+++ b/packages/client/src/components/abuse-report.vue
@@ -79,7 +79,8 @@ function resolve() {
align-items: center;
padding: 14px;
border-radius: 8px;
- background-image: linear-gradient(45deg, rgb(255 196 0 / 15%) 16.67%, transparent 16.67%, transparent 50%, rgb(255 196 0 / 15%) 50%, rgb(255 196 0 / 15%) 66.67%, transparent 66.67%, transparent 100%);
+ --c: rgb(255 196 0 / 15%);
+ background-image: linear-gradient(45deg, var(--c) 16.67%, transparent 16.67%, transparent 50%, var(--c) 50%, var(--c) 66.67%, transparent 66.67%, transparent 100%);
background-size: 16px 16px;
> .avatar {
diff --git a/packages/client/src/components/instance-info.vue b/packages/client/src/components/instance-info.vue
new file mode 100644
index 0000000000..e55c1d8215
--- /dev/null
+++ b/packages/client/src/components/instance-info.vue
@@ -0,0 +1,96 @@
+<template>
+<div :class="[$style.root, { yellow: instance.isNotResponding, red: instance.isBlocked, gray: instance.isSuspended }]">
+ <img v-if="instance.iconUrl" class="icon" :src="instance.iconUrl" alt=""/>
+ <div class="body">
+ <span class="host">{{ instance.host }}</span>
+ <span class="sub">{{ instance.softwareName || '?' }} {{ instance.softwareVersion }}</span>
+ </div>
+ <MkMiniChart v-if="chart" class="chart" :src="chart.requests.received"/>
+</div>
+</template>
+
+<script lang="ts" setup>
+import * as misskey from 'misskey-js';
+import MkMiniChart from '@/components/mini-chart.vue';
+import * as os from '@/os';
+
+const props = defineProps<{
+ instance: misskey.entities.Instance;
+}>();
+
+const chart = $ref(null);
+
+os.api('charts/instance', { host: props.instance.host, limit: 16, span: 'hour' }).then(res => {
+ chart = res;
+});
+</script>
+
+<style lang="scss" module>
+.root {
+ $bodyTitleHieght: 18px;
+ $bodyInfoHieght: 16px;
+
+ display: flex;
+ align-items: center;
+ padding: 16px;
+ background: var(--panel);
+ border-radius: 8px;
+
+ > :global(.icon) {
+ display: block;
+ width: ($bodyTitleHieght + $bodyInfoHieght);
+ height: ($bodyTitleHieght + $bodyInfoHieght);
+ object-fit: cover;
+ border-radius: 4px;
+ margin-right: 8px;
+ }
+
+ > :global(.body) {
+ flex: 1;
+ overflow: hidden;
+ font-size: 0.9em;
+ color: var(--fg);
+ padding-right: 8px;
+
+ > :global(.host) {
+ display: block;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ line-height: $bodyTitleHieght;
+ }
+
+ > :global(.sub) {
+ font-size: 75%;
+ opacity: 0.7;
+ line-height: $bodyInfoHieght;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ }
+
+ > :global(.chart) {
+ height: 30px;
+ }
+
+ &:global(.yellow) {
+ --c: rgb(255 196 0 / 15%);
+ background-image: linear-gradient(45deg, var(--c) 16.67%, transparent 16.67%, transparent 50%, var(--c) 50%, var(--c) 66.67%, transparent 66.67%, transparent 100%);
+ background-size: 16px 16px;
+ }
+
+ &:global(.red) {
+ --c: rgb(255 0 0 / 15%);
+ background-image: linear-gradient(45deg, var(--c) 16.67%, transparent 16.67%, transparent 50%, var(--c) 50%, var(--c) 66.67%, transparent 66.67%, transparent 100%);
+ background-size: 16px 16px;
+ }
+
+ &:global(.gray) {
+ --c: var(--bg);
+ background-image: linear-gradient(45deg, var(--c) 16.67%, transparent 16.67%, transparent 50%, var(--c) 50%, var(--c) 66.67%, transparent 66.67%, transparent 100%);
+ background-size: 16px 16px;
+ }
+}
+</style>