mirror of
https://github.com/KoboldAI/KoboldAI-Client.git
synced 2025-06-05 21:59:24 +02:00
Improve drag thingey
This commit is contained in:
24
aiserver.py
24
aiserver.py
@@ -7337,6 +7337,30 @@ def UI_2_upload_world_info_folder(data):
|
|||||||
json_data = json.loads(data['data'])
|
json_data = json.loads(data['data'])
|
||||||
koboldai_vars.worldinfo_v2.load_json(json_data, folder=data['folder'])
|
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
|
# Event triggered when user edits phrase biases
|
||||||
|
@@ -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_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")
|
self.socketio.emit("world_info_entry", self.world_info[uid], broadcast=True, room="UI_2")
|
||||||
ignore = self.koboldai_vars.calc_ai_text()
|
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': {}}):
|
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']
|
old_folder = self.world_info[uid]['folder']
|
||||||
|
@@ -1695,7 +1695,7 @@ body {
|
|||||||
top: 0px;
|
top: 0px;
|
||||||
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
z-index: 20;
|
z-index: 99999999;
|
||||||
|
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
|
@@ -2918,22 +2918,13 @@ function detect_key_up(e) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadNAILorebook(data) {
|
function loadNAILorebook(data, filename) {
|
||||||
let lorebookVersion = data.lorebookVersion;
|
let lorebookVersion = data.lorebookVersion;
|
||||||
|
let wi_data = {folders: {[filename]: []}, entries: {}};
|
||||||
console.log(`Loading NAI lorebook version ${lorebookVersion}`);
|
console.log(`Loading NAI lorebook version ${lorebookVersion}`);
|
||||||
|
|
||||||
// TODO: Make folder
|
let i = 0;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const entry of data.entries) {
|
for (const entry of data.entries) {
|
||||||
console.log(entry);
|
|
||||||
// contextConfig: Object { suffix: "\n", tokenBudget: 2048, reservedTokens: 0, … }
|
// contextConfig: Object { suffix: "\n", tokenBudget: 2048, reservedTokens: 0, … }
|
||||||
// displayName: "Aboleth"
|
// displayName: "Aboleth"
|
||||||
// enabled: true
|
// enabled: true
|
||||||
@@ -2942,14 +2933,15 @@ function loadNAILorebook(data) {
|
|||||||
// lastUpdatedAt: 1624443329051
|
// lastUpdatedAt: 1624443329051
|
||||||
// searchRange: 1000
|
// searchRange: 1000
|
||||||
// text
|
// text
|
||||||
data = {
|
|
||||||
|
wi_data.entries[i.toString()] = {
|
||||||
"uid": uid,
|
"uid": uid,
|
||||||
"title": entry.displayName,
|
"title": entry.displayName,
|
||||||
"key": entry.keys,
|
"key": entry.keys,
|
||||||
"keysecondary": [],
|
"keysecondary": [],
|
||||||
"folder": folder,
|
"folder": folder,
|
||||||
"constant": entry.forceActivation,
|
"constant": entry.forceActivation,
|
||||||
"content": "",//entry.text,
|
"content": "",
|
||||||
"manual_text": entry.text,
|
"manual_text": entry.text,
|
||||||
"comment": "",
|
"comment": "",
|
||||||
"token_length": 0,
|
"token_length": 0,
|
||||||
@@ -2957,17 +2949,32 @@ function loadNAILorebook(data) {
|
|||||||
"wpp": {"name": "", "type": "", "format": "W++", "attributes": {}},
|
"wpp": {"name": "", "type": "", "format": "W++", "attributes": {}},
|
||||||
"use_wpp": false,
|
"use_wpp": false,
|
||||||
};
|
};
|
||||||
uid--;
|
wi_data.folders[filename].push(i);
|
||||||
card = world_info_entry(data);
|
|
||||||
card.scrollIntoView(false);
|
|
||||||
console.log(card);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
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) {
|
async function processDroppedFile(file) {
|
||||||
let extension = /.*\.(.*)/.exec(file.name)[1];
|
let extension = /.*\.(.*)/.exec(file.name)[1];
|
||||||
console.log("file is", file)
|
console.log("file is", file)
|
||||||
|
let data;
|
||||||
|
|
||||||
switch (extension) {
|
switch (extension) {
|
||||||
case "png":
|
case "png":
|
||||||
@@ -2976,14 +2983,21 @@ async function processDroppedFile(file) {
|
|||||||
console.warn("TODO: NAI LORECARDS");
|
console.warn("TODO: NAI LORECARDS");
|
||||||
return;
|
return;
|
||||||
case "json":
|
case "json":
|
||||||
// KoboldAI story (probably, parse to be sure.);
|
// KoboldAI file
|
||||||
console.warn("TODO: KOBOLD STORY");
|
data = JSON.parse(await file.text());
|
||||||
|
loadKoboldData(data, file.name);
|
||||||
break;
|
break;
|
||||||
case "lorebook":
|
case "lorebook":
|
||||||
// NovelAI lorebook, JSON encoded.
|
// NovelAI lorebook, JSON encoded.
|
||||||
let data = JSON.parse(await file.text());
|
data = JSON.parse(await file.text());
|
||||||
loadNAILorebook(data);
|
loadNAILorebook(data, file.name);
|
||||||
break;
|
break;
|
||||||
|
case "css":
|
||||||
|
console.warn("TODO: THEME");
|
||||||
|
break;
|
||||||
|
case "lua":
|
||||||
|
console.warn("TODO: USERSCRIPT");
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user