[feat] add export as dataset
This commit is contained in:
@@ -472,5 +472,6 @@ export const languageEnglish = {
|
|||||||
sendName: "Send Name on Non-group Chat",
|
sendName: "Send Name on Non-group Chat",
|
||||||
utilOverride: "Utility Override",
|
utilOverride: "Utility Override",
|
||||||
template: "Template",
|
template: "Template",
|
||||||
chatAsOriginalOnSystem: "Send as original role"
|
chatAsOriginalOnSystem: "Send as original role",
|
||||||
|
exportAsDataset: "Export Save as Dataset",
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
import { checkDriver } from "src/ts/drive/drive";
|
import { checkDriver } from "src/ts/drive/drive";
|
||||||
import { LoadLocalBackup, SaveLocalBackup } from "src/ts/drive/backuplocal";
|
import { LoadLocalBackup, SaveLocalBackup } from "src/ts/drive/backuplocal";
|
||||||
import Button from "src/lib/UI/GUI/Button.svelte";
|
import Button from "src/lib/UI/GUI/Button.svelte";
|
||||||
import { autoServerBackup } from "src/ts/kei/backup";
|
import { exportAsDataset } from "src/ts/storage/exportAsDataset";
|
||||||
let openIframe = false
|
let openIframe = false
|
||||||
let openIframeURL = ''
|
let openIframeURL = ''
|
||||||
let popup:Window = null
|
let popup:Window = null
|
||||||
@@ -39,27 +39,25 @@
|
|||||||
}}></svelte:window>
|
}}></svelte:window>
|
||||||
|
|
||||||
<h2 class="mb-2 text-2xl font-bold mt-2">{language.account} & {language.files}</h2>
|
<h2 class="mb-2 text-2xl font-bold mt-2">{language.account} & {language.files}</h2>
|
||||||
<button
|
<Button
|
||||||
on:click={async () => {
|
on:click={async () => {
|
||||||
if(await alertConfirm(language.backupConfirm)){
|
if(await alertConfirm(language.backupConfirm)){
|
||||||
SaveLocalBackup()
|
SaveLocalBackup()
|
||||||
}
|
}
|
||||||
}}
|
}} className="mt-2">
|
||||||
class="drop-shadow-lg p-3 border-borderc border-solid mt-2 flex justify-center items-center ml-2 mr-2 border-1 hover:bg-selected text-sm">
|
{language.saveBackupLocal}
|
||||||
{language.saveBackupLocal} (Local)
|
</Button>
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
<Button
|
||||||
on:click={async () => {
|
on:click={async () => {
|
||||||
if((await alertConfirm(language.backupLoadConfirm)) && (await alertConfirm(language.backupLoadConfirm2))){
|
if((await alertConfirm(language.backupLoadConfirm)) && (await alertConfirm(language.backupLoadConfirm2))){
|
||||||
LoadLocalBackup()
|
LoadLocalBackup()
|
||||||
}
|
}
|
||||||
}}
|
}} className="mt-2">
|
||||||
class="drop-shadow-lg p-3 border-borderc border-solid mt-2 flex justify-center items-center ml-2 mr-2 border-1 hover:bg-selected text-sm mb-4">
|
{language.loadBackupLocal}
|
||||||
{language.loadBackupLocal} (Local)
|
</Button>
|
||||||
</button>
|
|
||||||
|
|
||||||
<button
|
<Button
|
||||||
on:click={async () => {
|
on:click={async () => {
|
||||||
if(await alertConfirm(language.backupConfirm)){
|
if(await alertConfirm(language.backupConfirm)){
|
||||||
localStorage.setItem('backup', 'save')
|
localStorage.setItem('backup', 'save')
|
||||||
@@ -70,12 +68,11 @@
|
|||||||
checkDriver('save')
|
checkDriver('save')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}}
|
}} className="mt-2">
|
||||||
class="drop-shadow-lg p-3 border-borderc border-solid mt-2 flex justify-center items-center ml-2 mr-2 border-1 hover:bg-selected text-sm">
|
|
||||||
{language.savebackup}
|
{language.savebackup}
|
||||||
</button>
|
</Button>
|
||||||
|
|
||||||
<button
|
<Button
|
||||||
on:click={async () => {
|
on:click={async () => {
|
||||||
if((await alertConfirm(language.backupLoadConfirm)) && (await alertConfirm(language.backupLoadConfirm2))){
|
if((await alertConfirm(language.backupLoadConfirm)) && (await alertConfirm(language.backupLoadConfirm2))){
|
||||||
localStorage.setItem('backup', 'load')
|
localStorage.setItem('backup', 'load')
|
||||||
@@ -87,10 +84,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
class="drop-shadow-lg p-3 border-borderc border-solid mt-2 flex justify-center items-center ml-2 mr-2 border-1 hover:bg-selected text-sm mb-4">
|
className="mt-2">
|
||||||
{language.loadbackup}
|
{language.loadbackup}
|
||||||
</button>
|
</Button>
|
||||||
<div class="bg-darkbg p-3 rounded-md mb-2 flex flex-col items-start">
|
|
||||||
|
<Button on:click={exportAsDataset} className="mt-2">
|
||||||
|
{language.exportAsDataset}
|
||||||
|
</Button>
|
||||||
|
<div class="bg-darkbg p-3 rounded-md mb-2 flex flex-col items-start mt-2">
|
||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
<h1 class="text-3xl font-black min-w-0">Risu Account{#if $DataBase.account}
|
<h1 class="text-3xl font-black min-w-0">Risu Account{#if $DataBase.account}
|
||||||
<button class="bg-selected p-1 text-sm font-light rounded-md hover:bg-green-500 transition-colors float-right" on:click={async () => {
|
<button class="bg-selected p-1 text-sm font-light rounded-md hover:bg-green-500 transition-colors float-right" on:click={async () => {
|
||||||
|
|||||||
29
src/ts/storage/exportAsDataset.ts
Normal file
29
src/ts/storage/exportAsDataset.ts
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import { get } from "svelte/store";
|
||||||
|
import { DataBase } from "./database";
|
||||||
|
import { downloadFile } from "./globalApi";
|
||||||
|
import { alertNormal } from "../alert";
|
||||||
|
import { language } from "src/lang";
|
||||||
|
|
||||||
|
export async function exportAsDataset(){
|
||||||
|
const db = get(DataBase)
|
||||||
|
|
||||||
|
let dataset = []
|
||||||
|
for(const char of db.characters){
|
||||||
|
if(char.type === 'group'){
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for(const chat of char.chats){
|
||||||
|
|
||||||
|
dataset.push({
|
||||||
|
character: char.name,
|
||||||
|
description: char.desc,
|
||||||
|
chats: chat.message,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await downloadFile('dataset.json',Buffer.from(JSON.stringify(dataset, null,4), 'utf-8'))
|
||||||
|
|
||||||
|
alertNormal(language.successExport)
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user