Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
This commit is contained in:
tamaina 2020-07-26 13:30:36 +09:00 committed by GitHub
parent 55be9cc9d1
commit 056fef70da
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 74 additions and 37 deletions

View file

@ -104,6 +104,8 @@ unblockConfirm: "ブロック解除しますか?"
suspendConfirm: "凍結しますか?" suspendConfirm: "凍結しますか?"
unsuspendConfirm: "解凍しますか?" unsuspendConfirm: "解凍しますか?"
selectList: "リストを選択" selectList: "リストを選択"
selectAntenna: "アンテナを選択"
selectWidget: "ウィジェットを選択"
customEmojis: "カスタム絵文字" customEmojis: "カスタム絵文字"
emoji: "絵文字" emoji: "絵文字"
emojiName: "絵文字名" emojiName: "絵文字名"
@ -535,6 +537,8 @@ enableAll: "全て有効にする"
disableAll: "全て無効にする" disableAll: "全て無効にする"
tokenRequested: "アカウントへのアクセス許可" tokenRequested: "アカウントへのアクセス許可"
pluginTokenRequestedDescription: "このプラグインはここで設定した権限を行使できるようになります。" pluginTokenRequestedDescription: "このプラグインはここで設定した権限を行使できるようになります。"
notificationType: "通知の種類"
edit: "編集"
useStarForReactionFallback: "リアクション絵文字が不明な場合、代わりに★を使う" useStarForReactionFallback: "リアクション絵文字が不明な場合、代わりに★を使う"
emailConfig: "メールサーバー設定" emailConfig: "メールサーバー設定"
enableEmail: "メール配信機能を有効化する" enableEmail: "メール配信機能を有効化する"
@ -1225,10 +1229,27 @@ _notification:
yourFollowRequestAccepted: "フォローリクエストが承認されました" yourFollowRequestAccepted: "フォローリクエストが承認されました"
youWereInvitedToGroup: "グループに招待されました" youWereInvitedToGroup: "グループに招待されました"
_types:
all: "すべて"
follow: "フォロー"
mention: "メンション"
reply: "リプライ"
renote: "Renote"
quote: "引用"
reaction: "リアクション"
pollVote: "投票"
receiveFollowRequest: "フォローリクエスト"
_deck: _deck:
alwaysShowMainColumn: "常にメインカラムを表示" alwaysShowMainColumn: "常にメインカラムを表示"
columnAlign: "カラムの寄せ" columnAlign: "カラムの寄せ"
addColumn: "カラムを追加" addColumn: "カラムを追加"
swapLeft: "左に移動"
swapRight: "右に移動"
swapUp: "上に移動"
swapDown: "下に移動"
stackLeft: "左に重ねる"
popRight: "右に出す"
_columns: _columns:
widgets: "ウィジェット" widgets: "ウィジェット"

View file

@ -4,7 +4,7 @@
<fa :icon="faSatellite"/><span style="margin-left: 8px;">{{ column.name }}</span> <fa :icon="faSatellite"/><span style="margin-left: 8px;">{{ column.name }}</span>
</template> </template>
<x-timeline ref="timeline" src="antenna" :antenna="column.antennaId" @after="() => $emit('loaded')"/> <x-timeline v-if="column.antennaId" ref="timeline" src="antenna" :antenna="column.antennaId" @after="() => $emit('loaded')"/>
</x-column> </x-column>
</template> </template>
@ -33,7 +33,6 @@ export default Vue.extend({
data() { data() {
return { return {
menu: null,
faSatellite faSatellite
}; };
}, },
@ -47,28 +46,36 @@ export default Vue.extend({
created() { created() {
this.menu = [{ this.menu = [{
icon: faCog, icon: faCog,
text: this.$t('antenna'), text: this.$t('selectAntenna'),
action: async () => { action: this.setAntenna
}];
},
mounted() {
if (this.column.antennaId == null) {
this.setAntenna();
}
},
methods: {
async setAntenna() {
const antennas = await this.$root.api('antennas/list'); const antennas = await this.$root.api('antennas/list');
this.$root.dialog({ const { canceled, result: antenna } = await this.$root.dialog({
title: this.$t('antenna'), title: this.$t('selectAntenna'),
type: null, type: null,
select: { select: {
items: antennas.map(x => ({ items: antennas.map(x => ({
value: x, text: x.name value: x, text: x.name
})) })),
default: this.column.antennaId
}, },
showCancelButton: true showCancelButton: true
}).then(({ canceled, result: antenna }) => {
if (canceled) return;
this.column.antennaId = antenna.id;
this.$store.commit('deviceUser/updateDeckColumn', this.column);
}); });
} if (canceled) return;
}]; Vue.set(this.column, 'antennaId', antenna.id);
this.$store.commit('deviceUser/updateDeckColumn', this.column);
}, },
methods: {
focus() { focus() {
(this.$refs.timeline as any).focus(); (this.$refs.timeline as any).focus();
} }

View file

@ -150,37 +150,37 @@ export default Vue.extend({
} }
}, null, { }, null, {
icon: faArrowLeft, icon: faArrowLeft,
text: this.$t('swap-left'), text: this.$t('_deck.swapLeft'),
action: () => { action: () => {
this.$store.commit('deviceUser/swapLeftDeckColumn', this.column.id); this.$store.commit('deviceUser/swapLeftDeckColumn', this.column.id);
} }
}, { }, {
icon: faArrowRight, icon: faArrowRight,
text: this.$t('swap-right'), text: this.$t('_deck.swapRight'),
action: () => { action: () => {
this.$store.commit('deviceUser/swapRightDeckColumn', this.column.id); this.$store.commit('deviceUser/swapRightDeckColumn', this.column.id);
} }
}, this.isStacked ? { }, this.isStacked ? {
icon: faArrowUp, icon: faArrowUp,
text: this.$t('swap-up'), text: this.$t('_deck.swapUp'),
action: () => { action: () => {
this.$store.commit('deviceUser/swapUpDeckColumn', this.column.id); this.$store.commit('deviceUser/swapUpDeckColumn', this.column.id);
} }
} : undefined, this.isStacked ? { } : undefined, this.isStacked ? {
icon: faArrowDown, icon: faArrowDown,
text: this.$t('swap-down'), text: this.$t('_deck.swapDown'),
action: () => { action: () => {
this.$store.commit('deviceUser/swapDownDeckColumn', this.column.id); this.$store.commit('deviceUser/swapDownDeckColumn', this.column.id);
} }
} : undefined, null, { } : undefined, null, {
icon: faWindowRestore, icon: faWindowRestore,
text: this.$t('stack-left'), text: this.$t('_deck.stackLeft'),
action: () => { action: () => {
this.$store.commit('deviceUser/stackLeftDeckColumn', this.column.id); this.$store.commit('deviceUser/stackLeftDeckColumn', this.column.id);
} }
}, this.isStacked ? { }, this.isStacked ? {
icon: faWindowMaximize, icon: faWindowMaximize,
text: this.$t('pop-right'), text: this.$t('_deck.popRight'),
action: () => { action: () => {
this.$store.commit('deviceUser/popRightDeckColumn', this.column.id); this.$store.commit('deviceUser/popRightDeckColumn', this.column.id);
} }

View file

@ -46,7 +46,7 @@ export default Vue.extend({
created() { created() {
this.menu = [{ this.menu = [{
icon: faCog, icon: faCog,
text: this.$t('list'), text: this.$t('selectList'),
action: this.setList action: this.setList
}]; }];
}, },
@ -61,7 +61,7 @@ export default Vue.extend({
async setList() { async setList() {
const lists = await this.$root.api('users/lists/list'); const lists = await this.$root.api('users/lists/list');
const { canceled, result: list } = await this.$root.dialog({ const { canceled, result: list } = await this.$root.dialog({
title: this.$t('list'), title: this.$t('selectList'),
type: null, type: null,
select: { select: {
items: lists.map(x => ({ items: lists.map(x => ({

View file

@ -45,14 +45,14 @@ export default Vue.extend({
this.menu = [{ this.menu = [{
icon: faCog, icon: faCog,
text: this.$t('@.notification-type'), text: this.$t('notificationType'),
action: () => { action: () => {
this.$root.dialog({ this.$root.dialog({
title: this.$t('@.notification-type'), title: this.$t('notificationType'),
type: null, type: null,
select: { select: {
items: ['all', 'follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest'].map(x => ({ items: ['all', 'follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest'].map(x => ({
value: x, text: this.$t('@.notification-types.' + x) value: x, text: this.$t(`_notification._types.${x}`)
})) }))
default: this.column.notificationType, default: this.column.notificationType,
}, },

View file

@ -5,9 +5,12 @@
<div class="wtdtxvec"> <div class="wtdtxvec">
<template v-if="edit"> <template v-if="edit">
<header> <header>
<select v-model="widgetAdderSelected" @change="addWidget"> <mk-select v-model="widgetAdderSelected" style="margin-bottom: var(--margin)">
<option v-for="widget in widgets" :value="widget" :key="widget">{{ widget }}</option> <template #label>{{ $t('selectWidget') }}</template>
</select> <option v-for="widget in widgets" :value="widget" :key="widget">{{ $t(`_widgets.${widget}`) }}</option>
</mk-select>
<mk-button inline @click="addWidget" primary><fa :icon="faPlus"/> {{ $t('add') }}</mk-button>
<mk-button inline @click="edit = false">{{ $t('close') }}</mk-button>
</header> </header>
<x-draggable <x-draggable
:list="column.widgets" :list="column.widgets"
@ -15,7 +18,7 @@
@sort="onWidgetSort" @sort="onWidgetSort"
> >
<div v-for="widget in column.widgets" class="customize-container" :key="widget.id" @click="widgetFunc(widget.id)"> <div v-for="widget in column.widgets" class="customize-container" :key="widget.id" @click="widgetFunc(widget.id)">
<button class="remove _button" @click="removeWidget(widget)"><fa :icon="faTimes"/></button> <button class="remove _button" @click.prevent.stop="removeWidget(widget)"><fa :icon="faTimes"/></button>
<component :is="`mkw-${widget.name}`" :widget="widget" :ref="widget.id" :is-customize-mode="true" :column="column"/> <component :is="`mkw-${widget.name}`" :widget="widget" :ref="widget.id" :is-customize-mode="true" :column="column"/>
</div> </div>
</x-draggable> </x-draggable>
@ -29,7 +32,9 @@
import Vue from 'vue'; import Vue from 'vue';
import * as XDraggable from 'vuedraggable'; import * as XDraggable from 'vuedraggable';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { faWindowMaximize, faTimes, faCog } from '@fortawesome/free-solid-svg-icons'; import { faWindowMaximize, faTimes, faCog, faPlus } from '@fortawesome/free-solid-svg-icons';
import MkSelect from '../../components/ui/select.vue';
import MkButton from '../../components/ui/button.vue';
import XColumn from './column.vue'; import XColumn from './column.vue';
import { widgets } from '../../widgets'; import { widgets } from '../../widgets';
@ -37,6 +42,8 @@ export default Vue.extend({
components: { components: {
XColumn, XColumn,
XDraggable, XDraggable,
MkSelect,
MkButton,
}, },
props: { props: {
@ -56,7 +63,7 @@ export default Vue.extend({
menu: null, menu: null,
widgetAdderSelected: null, widgetAdderSelected: null,
widgets, widgets,
faWindowMaximize, faTimes faWindowMaximize, faTimes, faPlus
}; };
}, },
@ -80,6 +87,8 @@ export default Vue.extend({
}, },
addWidget() { addWidget() {
if (this.widgetAdderSelected == null) return;
this.$store.commit('deviceUser/addDeckWidget', { this.$store.commit('deviceUser/addDeckWidget', {
id: this.column.id, id: this.column.id,
widget: { widget: {