Improve drag thingey

This commit is contained in:
somebody
2022-08-29 17:49:31 -05:00
parent f846cde4a0
commit 1cf131a6cc
4 changed files with 63 additions and 24 deletions

View File

@@ -7337,6 +7337,30 @@ def UI_2_upload_world_info_folder(data):
json_data = json.loads(data['data'])
koboldai_vars.worldinfo_v2.load_json(json_data, folder=data['folder'])
@socketio.on('import_world_info')
def UI_2_import_world_info(data):
wi_data = data["data"]
uids = {}
for folder_name, children in wi_data["folders"].items():
koboldai_vars.worldinfo_v2.add_folder(folder_name)
for child in children:
# Child is index
if child not in uids:
entry_data = wi_data["entries"][str(child)]
uids[child] = koboldai_vars.worldinfo_v2.add_item(
title=entry_data["title"],
key=entry_data["key"],
keysecondary=entry_data["keysecondary"],
folder=folder_name,
constant=entry_data["constant"],
manual_text=entry_data["manual_text"],
comment=entry_data["comment"],
use_wpp=entry_data["use_wpp"],
wpp=entry_data["wpp"],
)
koboldai_vars.worldinfo_v2.add_item_to_folder(uids[child], folder_name)
#==================================================================#
# Event triggered when user edits phrase biases

View File

@@ -1258,6 +1258,7 @@ class KoboldWorldInfo(object):
self.socketio.emit("world_info_folder", {x: self.world_info_folder[x] for x in self.world_info_folder}, broadcast=True, room="UI_2")
self.socketio.emit("world_info_entry", self.world_info[uid], broadcast=True, room="UI_2")
ignore = self.koboldai_vars.calc_ai_text()
return uid
def edit_item(self, uid, title, key, keysecondary, folder, constant, manual_text, comment, use_wpp=False, before=None, wpp={'name': "", 'type': "", 'format': "W++", 'attributes': {}}):
old_folder = self.world_info[uid]['folder']

View File

@@ -1695,7 +1695,7 @@ body {
top: 0px;
background-color: rgba(0, 0, 0, 0.5);
z-index: 20;
z-index: 99999999;
width: 100vw;
height: 100vh;

View File

@@ -2918,22 +2918,13 @@ function detect_key_up(e) {
}
}
function loadNAILorebook(data) {
function loadNAILorebook(data, filename) {
let lorebookVersion = data.lorebookVersion;
let wi_data = {folders: {[filename]: []}, entries: {}};
console.log(`Loading NAI lorebook version ${lorebookVersion}`);
// TODO: Make folder
let folder = "root";
let uid = -1;
for (item of document.getElementsByClassName('world_info_card')) {
if (parseInt(item.getAttribute("uid")) <= uid) {
uid = parseInt(item.getAttribute("uid")) - 1;
}
}
let i = 0;
for (const entry of data.entries) {
console.log(entry);
// contextConfig: Object { suffix: "\n", tokenBudget: 2048, reservedTokens: 0, … }
// displayName: "Aboleth"
// enabled: true
@@ -2942,14 +2933,15 @@ function loadNAILorebook(data) {
// lastUpdatedAt: 1624443329051
// searchRange: 1000
// text
data = {
wi_data.entries[i.toString()] = {
"uid": uid,
"title": entry.displayName,
"key": entry.keys,
"keysecondary": [],
"folder": folder,
"constant": entry.forceActivation,
"content": "",//entry.text,
"content": "",
"manual_text": entry.text,
"comment": "",
"token_length": 0,
@@ -2957,17 +2949,32 @@ function loadNAILorebook(data) {
"wpp": {"name": "", "type": "", "format": "W++", "attributes": {}},
"use_wpp": false,
};
uid--;
card = world_info_entry(data);
card.scrollIntoView(false);
console.log(card);
}
wi_data.folders[filename].push(i);
i++;
}
socket.emit("import_world_info", {data: wi_data});
}
async function loadKoboldData(data, filename) {
if (data.gamestarted !== undefined) {
// Story
socket.emit("upload_file", {"filename": filename, "data": JSON.stringify(data)});
socket.emit("load_story_list", "");
} else if (data.folders !== undefined && data.entries !== undefined) {
// World Info Folder
socket.emit("import_world_info", {data: data});
} else {
// Bad data
console.error("Bad data!");
return;
}
}
async function processDroppedFile(file) {
let extension = /.*\.(.*)/.exec(file.name)[1];
console.log("file is", file)
let data;
switch (extension) {
case "png":
@@ -2976,14 +2983,21 @@ async function processDroppedFile(file) {
console.warn("TODO: NAI LORECARDS");
return;
case "json":
// KoboldAI story (probably, parse to be sure.);
console.warn("TODO: KOBOLD STORY");
// KoboldAI file
data = JSON.parse(await file.text());
loadKoboldData(data, file.name);
break;
case "lorebook":
// NovelAI lorebook, JSON encoded.
let data = JSON.parse(await file.text());
loadNAILorebook(data);
data = JSON.parse(await file.text());
loadNAILorebook(data, file.name);
break;
case "css":
console.warn("TODO: THEME");
break;
case "lua":
console.warn("TODO: USERSCRIPT");
break
}
}