enhance(client): flash作成時のプリセットを追加

This commit is contained in:
syuilo 2023-01-16 10:04:10 +09:00
parent c9f5e60f43
commit d600296360
6 changed files with 58 additions and 5 deletions

View file

@ -935,6 +935,8 @@ manageCustomEmojis: "カスタム絵文字の管理"
youCannotCreateAnymore: "これ以上作成することはできません。" youCannotCreateAnymore: "これ以上作成することはできません。"
cannotPerformTemporary: "一時的に利用できません" cannotPerformTemporary: "一時的に利用できません"
cannotPerformTemporaryDescription: "操作回数が制限を超過するため一時的に利用できません。しばらく時間を置いてから再度お試しください。" cannotPerformTemporaryDescription: "操作回数が制限を超過するため一時的に利用できません。しばらく時間を置いてから再度お試しください。"
preset: "プリセット"
selectFromPresets: "プリセットから選択"
_role: _role:
new: "ロールの作成" new: "ロールの作成"

View file

@ -32,7 +32,7 @@
<template v-if="c.caption" #caption>{{ c.caption }}</template> <template v-if="c.caption" #caption>{{ c.caption }}</template>
<option v-for="item in c.items" :key="item.value" :value="item.value">{{ item.text }}</option> <option v-for="item in c.items" :key="item.value" :value="item.value">{{ item.text }}</option>
</MkSelect> </MkSelect>
<MkButton v-else-if="c.type === 'postFormButton'" :primary="c.primary" :rounded="c.rounded" :small="size === 'small'" @click="openPostForm">{{ c.text }}</MkButton> <MkButton v-else-if="c.type === 'postFormButton'" :primary="c.primary" :rounded="c.rounded" :small="size === 'small'" inline @click="openPostForm">{{ c.text }}</MkButton>
<MkFolder v-else-if="c.type === 'folder'" :default-open="c.opened"> <MkFolder v-else-if="c.type === 'folder'" :default-open="c.opened">
<template #label>{{ c.title }}</template> <template #label>{{ c.title }}</template>
<template v-for="child in c.children" :key="child"> <template v-for="child in c.children" :key="child">

View file

@ -2,13 +2,14 @@
<MkStickyContainer> <MkStickyContainer>
<template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template> <template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template>
<MkSpacer :content-max="700"> <MkSpacer :content-max="700">
<div class="_gaps_m"> <div class="_gaps">
<MkInput v-model="title"> <MkInput v-model="title">
<template #label>{{ i18n.ts._play.title }}</template> <template #label>{{ i18n.ts._play.title }}</template>
</MkInput> </MkInput>
<MkTextarea v-model="summary"> <MkTextarea v-model="summary">
<template #label>{{ i18n.ts._play.summary }}</template> <template #label>{{ i18n.ts._play.summary }}</template>
</MkTextarea> </MkTextarea>
<MkButton primary @click="selectPreset">{{ i18n.ts.selectFromPresets }}<i class="ti ti-chevron-down"></i></MkButton>
<MkTextarea v-model="script" class="_monospace" tall spellcheck="false"> <MkTextarea v-model="script" class="_monospace" tall spellcheck="false">
<template #label>{{ i18n.ts._play.script }}</template> <template #label>{{ i18n.ts._play.script }}</template>
</MkTextarea> </MkTextarea>
@ -67,6 +68,56 @@ Ui:render([
]) ])
`); `);
function selectPreset(ev: MouseEvent) {
os.popupMenu([{
text: 'Omikuji',
action: () => {
script = `/// @ 0.12.2
//
//
let choices = [
"ギガ吉"
"大吉"
"吉"
"中吉"
"小吉"
"末吉"
"凶"
"大凶"
]
// ID+
let random = Math:gen_rng(\`{USER_ID}{Date:day()}\`)
//
let chosen = choices[random(0 (choices.len - 1))]
//
let result = \`今日のあなたの運勢は **{chosen}** です。\`
// UI
Ui:render([
Ui:C:container({
align: 'center'
children: [
Ui:C:mfm({ text: result })
Ui:C:postFormButton({
text: "投稿する"
rounded: true
primary: true
form: {
text: \`{result}{Str:lf}{THIS_URL}\`
}
})
]
})
])
`;
},
}], ev.currentTarget ?? ev.target);
}
async function save() { async function save() {
if (flash) { if (flash) {
os.apiWithDialog('flash/update', { os.apiWithDialog('flash/update', {

View file

@ -130,7 +130,7 @@ const parser = new Parser();
let started = $ref(false); let started = $ref(false);
let aiscript = $shallowRef<Interpreter | null>(null); let aiscript = $shallowRef<Interpreter | null>(null);
const root = ref<AsUiRoot>(); const root = ref<AsUiRoot>();
const components: Ref<AsUiComponent>[] = []; const components: Ref<AsUiComponent>[] = $ref([]);
function start() { function start() {
started = true; started = true;

View file

@ -53,7 +53,7 @@ let aiscript: Interpreter;
const code = ref(''); const code = ref('');
const logs = ref<any[]>([]); const logs = ref<any[]>([]);
const root = ref<AsUiRoot>(); const root = ref<AsUiRoot>();
let components: Ref<AsUiComponent>[] = []; let components: Ref<AsUiComponent>[] = $ref([]);
let uiKey = $ref(0); let uiKey = $ref(0);
const saved = miLocalStorage.getItem('scratchpad'); const saved = miLocalStorage.getItem('scratchpad');

View file

@ -50,7 +50,7 @@ const { widgetProps, configure } = useWidgetPropsManager(name,
const parser = new Parser(); const parser = new Parser();
const root = ref<AsUiRoot>(); const root = ref<AsUiRoot>();
const components: Ref<AsUiComponent>[] = []; const components: Ref<AsUiComponent>[] = $ref([]);
async function run() { async function run() {
const aiscript = new Interpreter({ const aiscript = new Interpreter({