workspaces
Signed-off-by: Victor Seiji Hariki <victorseijih@gmail.com>
This commit is contained in:
parent
f215cac1f6
commit
02a0fb82dd
5 changed files with 177 additions and 11 deletions
|
@ -92,7 +92,7 @@
|
||||||
type="number"
|
type="number"
|
||||||
id="seed"
|
id="seed"
|
||||||
onchange="changeSeed()"
|
onchange="changeSeed()"
|
||||||
min="1"
|
min="-1"
|
||||||
max="9999999999"
|
max="9999999999"
|
||||||
value="-1"
|
value="-1"
|
||||||
step="1" />
|
step="1" />
|
||||||
|
@ -321,10 +321,12 @@
|
||||||
|
|
||||||
<!-- Basics -->
|
<!-- Basics -->
|
||||||
<script src="js/global.js?v=3a1cde6" type="text/javascript"></script>
|
<script src="js/global.js?v=3a1cde6" type="text/javascript"></script>
|
||||||
|
<script src="js/defaults.js?v=5b06818" type="text/javascript"></script>
|
||||||
|
|
||||||
<!-- Base Libs -->
|
<!-- Base Libs -->
|
||||||
<script src="js/lib/util.js?v=7f6847c" type="text/javascript"></script>
|
<script src="js/lib/util.js?v=7f6847c" type="text/javascript"></script>
|
||||||
<script src="js/lib/events.js?v=2ab7933" type="text/javascript"></script>
|
<script src="js/lib/events.js?v=2ab7933" type="text/javascript"></script>
|
||||||
|
<script src="js/lib/workspaces.js?v=4fbd55b" type="text/javascript"></script>
|
||||||
<script src="js/lib/input.js?v=09298ac" type="text/javascript"></script>
|
<script src="js/lib/input.js?v=09298ac" type="text/javascript"></script>
|
||||||
<script src="js/lib/layers.js?v=a1f8aea" type="text/javascript"></script>
|
<script src="js/lib/layers.js?v=a1f8aea" type="text/javascript"></script>
|
||||||
<script src="js/lib/commands.js?v=bf23c83" type="text/javascript"></script>
|
<script src="js/lib/commands.js?v=bf23c83" type="text/javascript"></script>
|
||||||
|
@ -341,7 +343,7 @@
|
||||||
|
|
||||||
<!-- Content -->
|
<!-- Content -->
|
||||||
<script src="js/prompt.js?v=7a1c68c" type="text/javascript"></script>
|
<script src="js/prompt.js?v=7a1c68c" type="text/javascript"></script>
|
||||||
<script src="js/index.js?v=afc36b6" type="text/javascript"></script>
|
<script src="js/index.js?v=a0ae6b5" type="text/javascript"></script>
|
||||||
|
|
||||||
<script
|
<script
|
||||||
src="js/ui/floating/history.js?v=fc92d14"
|
src="js/ui/floating/history.js?v=fc92d14"
|
||||||
|
|
28
js/defaults.js
Normal file
28
js/defaults.js
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/**
|
||||||
|
* Default settings for local configurations
|
||||||
|
*/
|
||||||
|
const localDefaults = {
|
||||||
|
/** Default Host */
|
||||||
|
host: "http://127.0.0.1:7860",
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default settings for workspace configurations
|
||||||
|
*/
|
||||||
|
const workspaceDefaults = {
|
||||||
|
/** Default Prompt - REQ */
|
||||||
|
prompt: "ocean floor scientific expedition, underwater wildlife",
|
||||||
|
/** Default Negative Prompt - REQ */
|
||||||
|
neg_prompt:
|
||||||
|
"people, person, humans, human, divers, diver, glitch, error, text, watermark, bad quality, blurry",
|
||||||
|
/** Default Stable Diffusion Seed - REQ */
|
||||||
|
seed: -1,
|
||||||
|
|
||||||
|
/** Default CFG Scale - REQ */
|
||||||
|
cfg_scale: 7.0,
|
||||||
|
/** Default steps - REQ */
|
||||||
|
steps: 30,
|
||||||
|
|
||||||
|
/** Default Resolution */
|
||||||
|
resolution: 512,
|
||||||
|
};
|
26
js/index.js
26
js/index.js
|
@ -140,6 +140,19 @@ var host = "";
|
||||||
var url = "/sdapi/v1/";
|
var url = "/sdapi/v1/";
|
||||||
const basePixelCount = 64; //64 px - ALWAYS 64 PX
|
const basePixelCount = 64; //64 px - ALWAYS 64 PX
|
||||||
|
|
||||||
|
function getSDData() {
|
||||||
|
const w = workspaces.current.settings;
|
||||||
|
w.ste;
|
||||||
|
return {
|
||||||
|
prompt: w.prompt,
|
||||||
|
negative_prompt: w.neg_prompt,
|
||||||
|
seed: w.seed,
|
||||||
|
|
||||||
|
cfg_scale: w.cfg_scale,
|
||||||
|
steps: w.steps,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function startup() {
|
function startup() {
|
||||||
testHostConfiguration();
|
testHostConfiguration();
|
||||||
loadSettings();
|
loadSettings();
|
||||||
|
@ -521,16 +534,16 @@ const makeSlider = (
|
||||||
textStep = null,
|
textStep = null,
|
||||||
valuecb = null
|
valuecb = null
|
||||||
) => {
|
) => {
|
||||||
const local = lsKey && localStorage.getItem(`openoutpaint/${lsKey}`);
|
const local = lsKey && workspaces.current.settings[lsKey];
|
||||||
const def = parseFloat(local === null ? defaultValue : local);
|
const def = parseFloat(local === null ? defaultValue : local);
|
||||||
let cb = (v) => {
|
let cb = (v) => {
|
||||||
stableDiffusionData[lsKey] = v;
|
stableDiffusionData[lsKey] = v;
|
||||||
if (lsKey) localStorage.setItem(`openoutpaint/${lsKey}`, v);
|
if (lsKey) workspaces.current.settings[lsKey] = v;
|
||||||
};
|
};
|
||||||
if (valuecb) {
|
if (valuecb) {
|
||||||
cb = (v) => {
|
cb = (v) => {
|
||||||
valuecb(v);
|
valuecb(v);
|
||||||
localStorage.setItem(`openoutpaint/${lsKey}`, v);
|
if (lsKey) workspaces.current.settings[lsKey] = v;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return createSlider(label, el, {
|
return createSlider(label, el, {
|
||||||
|
@ -1140,11 +1153,6 @@ function loadSettings() {
|
||||||
localStorage.getItem("openoutpaint/mask_blur") == null
|
localStorage.getItem("openoutpaint/mask_blur") == null
|
||||||
? 0
|
? 0
|
||||||
: localStorage.getItem("openoutpaint/mask_blur");
|
: localStorage.getItem("openoutpaint/mask_blur");
|
||||||
var _seed =
|
|
||||||
localStorage.getItem("openoutpaint/seed") == null
|
|
||||||
? -1
|
|
||||||
: localStorage.getItem("openoutpaint/seed");
|
|
||||||
|
|
||||||
let _enable_hr =
|
let _enable_hr =
|
||||||
localStorage.getItem("openoutpaint/enable_hr") === null
|
localStorage.getItem("openoutpaint/enable_hr") === null
|
||||||
? false
|
? false
|
||||||
|
@ -1175,7 +1183,7 @@ function loadSettings() {
|
||||||
|
|
||||||
// set the values into the UI
|
// set the values into the UI
|
||||||
document.getElementById("maskBlur").value = Number(_mask_blur);
|
document.getElementById("maskBlur").value = Number(_mask_blur);
|
||||||
document.getElementById("seed").value = Number(_seed);
|
document.getElementById("seed").value = workspaces.current.settings.seed;
|
||||||
document.getElementById("cbxHRFix").checked = Boolean(_enable_hr);
|
document.getElementById("cbxHRFix").checked = Boolean(_enable_hr);
|
||||||
document.getElementById("cbxRestoreFaces").checked = Boolean(_restore_faces);
|
document.getElementById("cbxRestoreFaces").checked = Boolean(_restore_faces);
|
||||||
document.getElementById("cbxSyncCursorSize").checked =
|
document.getElementById("cbxSyncCursorSize").checked =
|
||||||
|
|
0
js/lib/workspaces.d.js
Normal file
0
js/lib/workspaces.d.js
Normal file
128
js/lib/workspaces.js
Normal file
128
js/lib/workspaces.js
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
/**
|
||||||
|
* Workspaces (or sessions) are settings and canvas state storage structures that can be changed at will, saved, and restored.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a workspace
|
||||||
|
*
|
||||||
|
* @template [S] Settings type
|
||||||
|
*/
|
||||||
|
class Workspace {
|
||||||
|
/**
|
||||||
|
* The name of the workspace
|
||||||
|
* @type {string}
|
||||||
|
*/
|
||||||
|
name = "Workspace Name";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Workspace default settings.
|
||||||
|
*
|
||||||
|
* @type {S}
|
||||||
|
*/
|
||||||
|
defaults = {};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Storage for workspace settings.
|
||||||
|
*
|
||||||
|
* @type {S}
|
||||||
|
*/
|
||||||
|
settings = new Proxy(
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
get(t, name) {
|
||||||
|
if (t[name] === undefined)
|
||||||
|
t[name] =
|
||||||
|
JSON.parse(localStorage.getItem(`openoutpaint/${name}`)) ??
|
||||||
|
defaults[name];
|
||||||
|
return t[name];
|
||||||
|
},
|
||||||
|
set(t, name, value) {
|
||||||
|
localStorage.setItem(`openoutpaint/${name}`, JSON.stringify(value));
|
||||||
|
t[name] = value;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Storage for other data
|
||||||
|
*
|
||||||
|
* @type {Record<string, any>}
|
||||||
|
*/
|
||||||
|
data = new Proxy({}, {});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Saves the data to the workspace
|
||||||
|
*
|
||||||
|
* @param {string} key The key of the data to be saved (eg. history or layers)
|
||||||
|
* @param {any} data The data to be saved on this key. MUST BE SERIALIZABLE.
|
||||||
|
*/
|
||||||
|
save(key, data) {
|
||||||
|
this.data[key] = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets saved data from the workspace
|
||||||
|
*
|
||||||
|
* @param {string} key The key of the data to be saved (eg. history or layers)
|
||||||
|
* @param {any} data The data to be saved on this key. MUST BE SERIALIZABLE.
|
||||||
|
*/
|
||||||
|
load(key) {
|
||||||
|
return this.data[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} name The name of the workspace
|
||||||
|
* @param {Object} options
|
||||||
|
* @param {S} options.defaults Default workspace settings
|
||||||
|
*/
|
||||||
|
constructor(name, options = {}) {
|
||||||
|
defaultOpt(options, {
|
||||||
|
defaults: {},
|
||||||
|
});
|
||||||
|
|
||||||
|
this.name = name;
|
||||||
|
this.defaults = options.defaults;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const workspaces = {
|
||||||
|
/**
|
||||||
|
* Loaded workspace
|
||||||
|
*
|
||||||
|
* @type {Workspace<workspaceDefaults>}
|
||||||
|
*/
|
||||||
|
_workspace: null,
|
||||||
|
|
||||||
|
get current() {
|
||||||
|
return this._workspace;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On Workspace Changed
|
||||||
|
*
|
||||||
|
* @type {Observer<{workspace: Workspace<workspaceDefaults>}>}
|
||||||
|
*/
|
||||||
|
onchange: new Observer(),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads a workspace
|
||||||
|
*
|
||||||
|
* @param {Workspace<workspaceDefaults>} workspace Workspace to load
|
||||||
|
*/
|
||||||
|
loadWorkspace(workspace) {
|
||||||
|
console.info(`[workspaces] Loading workspace: ${workspace.name}`);
|
||||||
|
|
||||||
|
// Set current workspace
|
||||||
|
this._workspace = workspace;
|
||||||
|
|
||||||
|
// Notify observers that the workspace has changed
|
||||||
|
this.onchange.emit({workspace});
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// Creates a new workspace instance
|
||||||
|
workspaces.loadWorkspace(
|
||||||
|
new Workspace("Default", {
|
||||||
|
workspaceDefaults,
|
||||||
|
})
|
||||||
|
);
|
Loading…
Reference in a new issue