enhance(client): flash作成時のプリセットを追加
This commit is contained in:
		
							parent
							
								
									c9f5e60f43
								
							
						
					
					
						commit
						d600296360
					
				
					 6 changed files with 58 additions and 5 deletions
				
			
		|  | @ -935,6 +935,8 @@ manageCustomEmojis: "カスタム絵文字の管理" | |||
| youCannotCreateAnymore: "これ以上作成することはできません。" | ||||
| cannotPerformTemporary: "一時的に利用できません" | ||||
| cannotPerformTemporaryDescription: "操作回数が制限を超過するため一時的に利用できません。しばらく時間を置いてから再度お試しください。" | ||||
| preset: "プリセット" | ||||
| selectFromPresets: "プリセットから選択" | ||||
| 
 | ||||
| _role: | ||||
|   new: "ロールの作成" | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ | |||
| 		<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> | ||||
| 	</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"> | ||||
| 		<template #label>{{ c.title }}</template> | ||||
| 		<template v-for="child in c.children" :key="child"> | ||||
|  |  | |||
|  | @ -2,13 +2,14 @@ | |||
| <MkStickyContainer> | ||||
| 	<template #header><MkPageHeader :actions="headerActions" :tabs="headerTabs"/></template> | ||||
| 	<MkSpacer :content-max="700"> | ||||
| 		<div class="_gaps_m"> | ||||
| 		<div class="_gaps"> | ||||
| 			<MkInput v-model="title"> | ||||
| 				<template #label>{{ i18n.ts._play.title }}</template> | ||||
| 			</MkInput> | ||||
| 			<MkTextarea v-model="summary"> | ||||
| 				<template #label>{{ i18n.ts._play.summary }}</template> | ||||
| 			</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"> | ||||
| 				<template #label>{{ i18n.ts._play.script }}</template> | ||||
| 			</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() { | ||||
| 	if (flash) { | ||||
| 		os.apiWithDialog('flash/update', { | ||||
|  |  | |||
|  | @ -130,7 +130,7 @@ const parser = new Parser(); | |||
| let started = $ref(false); | ||||
| let aiscript = $shallowRef<Interpreter | null>(null); | ||||
| const root = ref<AsUiRoot>(); | ||||
| const components: Ref<AsUiComponent>[] = []; | ||||
| const components: Ref<AsUiComponent>[] = $ref([]); | ||||
| 
 | ||||
| function start() { | ||||
| 	started = true; | ||||
|  |  | |||
|  | @ -53,7 +53,7 @@ let aiscript: Interpreter; | |||
| const code = ref(''); | ||||
| const logs = ref<any[]>([]); | ||||
| const root = ref<AsUiRoot>(); | ||||
| let components: Ref<AsUiComponent>[] = []; | ||||
| let components: Ref<AsUiComponent>[] = $ref([]); | ||||
| let uiKey = $ref(0); | ||||
| 
 | ||||
| const saved = miLocalStorage.getItem('scratchpad'); | ||||
|  |  | |||
|  | @ -50,7 +50,7 @@ const { widgetProps, configure } = useWidgetPropsManager(name, | |||
| const parser = new Parser(); | ||||
| 
 | ||||
| const root = ref<AsUiRoot>(); | ||||
| const components: Ref<AsUiComponent>[] = []; | ||||
| const components: Ref<AsUiComponent>[] = $ref([]); | ||||
| 
 | ||||
| async function run() { | ||||
| 	const aiscript = new Interpreter({ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue