diff --git a/examples/server/public_mikupad/index.html b/examples/server/public_mikupad/index.html index d1714a30..89ab7679 100644 --- a/examples/server/public_mikupad/index.html +++ b/examples/server/public_mikupad/index.html @@ -4073,7 +4073,7 @@ return html` e.stopPropagation(); startRenamePrompt(prompt.filename); }} - title="Load this prompt"> + title="Rename this prompt"> <${SVG_Rename}/> + + `} + + + `; +} function Widget({ isOpen, onClose, title, id, children, ...props }) { if (!isOpen) { @@ -5432,11 +5534,26 @@ export function App({ sessionStorage, templateStorage, useSessionState, useDBTem const [promptPreviewTokens, setPromptPreviewTokens] = useSessionState('promptPreviewTokens', defaultPresets.promptPreviewTokens); const [zstdTable, setZstdTable] = useState(''); const [zstdColumn, setZstdColumn] = useState(''); - const [zstdLevel, setZstdLevel] = useState(3); - const [zstdRatio, setZstdRatio] = useState(0.1); + const [zstdLevel, setZstdLevel] = useState(22); + const [zstdRatio, setZstdRatio] = useState(100); const [showCustomMaintenance, setShowCustomMaintenance] = useState(false); const [maintenanceDuration, setMaintenanceDuration] = useState(''); const [maintenanceDbLoad, setMaintenanceDbLoad] = useState(0.5); + const [configData, setConfigData] = useState(''); + + useEffect(() => { + const fetchData = async () => { + try { + const res = await fetch('/zstd_get_configs'); + const data = await res.json(); + if (data.ok) { + console.log(data.configs); + setConfigData(data.configs); + } + } catch (err) {} + }; + fetchData(); + }, []); function replacePlaceholders(string,placeholders) { // give placeholders as json object @@ -7368,9 +7485,12 @@ export function App({ sessionStorage, templateStorage, useSessionState, useDBTem const data = await res.json(); if (data.ok) { console.log(data.configs); + setConfigData(data.configs); + toggleModal("compression") } else { console.log(data.message); + toggleModal("compression") } }}> Show Configs @@ -7380,8 +7500,9 @@ export function App({ sessionStorage, templateStorage, useSessionState, useDBTem
<${InputSlider} label="Compression Level" type="number" step="1" min="1" max="22" readOnly=${!!cancel} value=${zstdLevel} onValueChange=${setZstdLevel}/> - <${InputSlider} label="Samples Ratio" type="number" step="0.05" max="1" + <${InputSlider} label="Samples Ratio" type="number" step="1" min-"1" max="100" readOnly=${!!cancel} value=${zstdRatio} onValueChange=${setZstdRatio}/> + ${!configData ? html` + Enable + ` : html` + `}
@@ -7668,6 +7803,12 @@ export function App({ sessionStorage, templateStorage, useSessionState, useDBTem closeModal=${() => toggleModal("saved_prompts")} cancel=${cancel}/> + <${CompressionInfoModal} + isOpen=${modalState.compression} + closeModal=${() => closeModal("compression")} + compressionData=${configData} + cancel=${cancel}/> + <${EditorContextMenu} isOpen=${contextMenuState.visible} closeMenu=${() => setContextMenuState({ visible: false, x: 0, y: 0 })} diff --git a/examples/server/server.cpp b/examples/server/server.cpp index d44a7dbb..fb4166c3 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -4053,6 +4053,12 @@ int main(int argc, char ** argv) { res.set_content(json{"ok", true}.dump(), "application/json"); }); + const auto handle_zstd_config_update = db_handler([](auto& db, const json& body, auto&, auto& res) { + std::string patch_json = "{\"compression_level\": " + std::to_string(body["compression_level"].get()) + ", \"train_dict_samples_ratio\": " + std::to_string(body["train_dict_samples_ratio"].get()) + "}"; + db.db << "update _zstd_configs set config = json_patch(config, '" + patch_json + "')"; + res.set_content(json{{"ok", true}}.dump(), "application/json"); + }); + // // Router // @@ -4130,12 +4136,13 @@ int main(int argc, char ** argv) { svr->Post("/sessions", handle_sessions); svr->Get ("/sessions", handle_sessions); svr->Post("/delete", handle_delete); - //VACUUM is there for the extension but does not require the extension - svr->Get ("/vacuum", handle_vacuum); + //VACUUM is there for the extension but does not require the extension + svr->Get ("/vacuum", handle_vacuum); if (sqlite_extension_loaded) { svr->Get ("/zstd_get_configs", handle_zstd_get_configs); svr->Post("/zstd_incremental_maintenance", handle_zstd_maintenance); svr->Post("/zstd_enable_transparent", handle_zstd_enable); + svr->Post("/zstd_update_transparent", handle_zstd_config_update); } }