Manual float precision, toggle for old behavior (#1541)
* Add toggle for float rounding * Add manual precision override
This commit is contained in:
parent
26cd8405dd
commit
7c93afd2cd
@ -577,6 +577,25 @@ export class ComfyUI {
|
|||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.settings.addSetting({
|
||||||
|
id: "Comfy.DisableFloatRounding",
|
||||||
|
name: "Disable rounding floats (requires page reload).",
|
||||||
|
type: "boolean",
|
||||||
|
defaultValue: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.settings.addSetting({
|
||||||
|
id: "Comfy.FloatRoundingPrecision",
|
||||||
|
name: "Decimal places [0 = auto] (requires page reload).",
|
||||||
|
type: "slider",
|
||||||
|
attrs: {
|
||||||
|
min: 0,
|
||||||
|
max: 6,
|
||||||
|
step: 1,
|
||||||
|
},
|
||||||
|
defaultValue: 0,
|
||||||
|
});
|
||||||
|
|
||||||
const fileInput = $el("input", {
|
const fileInput = $el("input", {
|
||||||
id: "comfy-file-input",
|
id: "comfy-file-input",
|
||||||
type: "file",
|
type: "file",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { api } from "./api.js"
|
import { api } from "./api.js"
|
||||||
|
|
||||||
function getNumberDefaults(inputData, defaultStep) {
|
function getNumberDefaults(inputData, defaultStep, app) {
|
||||||
let defaultVal = inputData[1]["default"];
|
let defaultVal = inputData[1]["default"];
|
||||||
let { min, max, step, round} = inputData[1];
|
let { min, max, step, round} = inputData[1];
|
||||||
|
|
||||||
@ -8,12 +8,14 @@ function getNumberDefaults(inputData, defaultStep) {
|
|||||||
if (min == undefined) min = 0;
|
if (min == undefined) min = 0;
|
||||||
if (max == undefined) max = 2048;
|
if (max == undefined) max = 2048;
|
||||||
if (step == undefined) step = defaultStep;
|
if (step == undefined) step = defaultStep;
|
||||||
|
|
||||||
// precision is the number of decimal places to show.
|
// precision is the number of decimal places to show.
|
||||||
// by default, display the the smallest number of decimal places such that changes of size step are visible.
|
// by default, display the the smallest number of decimal places such that changes of size step are visible.
|
||||||
let precision = Math.max(-Math.floor(Math.log10(step)),0);
|
let precision = Math.max(-Math.floor(Math.log10(step)),0);
|
||||||
|
if (app.ui.settings.getSettingValue("Comfy.FloatRoundingPrecision") > 0) {
|
||||||
|
precision = app.ui.settings.getSettingValue("Comfy.FloatRoundingPrecision");
|
||||||
|
}
|
||||||
|
|
||||||
if (round == undefined || round === true) {
|
if (!app.ui.settings.getSettingValue("Comfy.DisableFloatRounding") && (round == undefined || round === true)) {
|
||||||
// by default, round the value to those decimal places shown.
|
// by default, round the value to those decimal places shown.
|
||||||
round = Math.round(1000000*Math.pow(0.1,precision))/1000000;
|
round = Math.round(1000000*Math.pow(0.1,precision))/1000000;
|
||||||
}
|
}
|
||||||
@ -273,7 +275,7 @@ export const ComfyWidgets = {
|
|||||||
"INT:noise_seed": seedWidget,
|
"INT:noise_seed": seedWidget,
|
||||||
FLOAT(node, inputName, inputData, app) {
|
FLOAT(node, inputName, inputData, app) {
|
||||||
let widgetType = isSlider(inputData[1]["display"], app);
|
let widgetType = isSlider(inputData[1]["display"], app);
|
||||||
const { val, config } = getNumberDefaults(inputData, 0.5);
|
const { val, config } = getNumberDefaults(inputData, 0.5, app);
|
||||||
return { widget: node.addWidget(widgetType, inputName, val,
|
return { widget: node.addWidget(widgetType, inputName, val,
|
||||||
function (v) {
|
function (v) {
|
||||||
if (config.round) {
|
if (config.round) {
|
||||||
@ -285,7 +287,7 @@ export const ComfyWidgets = {
|
|||||||
},
|
},
|
||||||
INT(node, inputName, inputData, app) {
|
INT(node, inputName, inputData, app) {
|
||||||
let widgetType = isSlider(inputData[1]["display"], app);
|
let widgetType = isSlider(inputData[1]["display"], app);
|
||||||
const { val, config } = getNumberDefaults(inputData, 1);
|
const { val, config } = getNumberDefaults(inputData, 1, app);
|
||||||
Object.assign(config, { precision: 0 });
|
Object.assign(config, { precision: 0 });
|
||||||
return {
|
return {
|
||||||
widget: node.addWidget(
|
widget: node.addWidget(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user