Giter Site home page Giter Site logo

Comments (1)

EliCDavis avatar EliCDavis commented on June 12, 2024 1

I've recreated this for my own purposes. I don't want to install Java to work on this repo, so I'll just post what I did here, if anyone's interested in integrating.

Snippets of code can be found here:
https://github.com/EliCDavis/polyform/blob/da485af4c39498f558c90565230f0cff919b5031/generator/html/server.html
https://github.com/EliCDavis/polyform/blob/da485af4c39498f558c90565230f0cff919b5031/generator/html/js/node_manager.js
https://github.com/EliCDavis/polyform/blob/da485af4c39498f558c90565230f0cff919b5031/generator/html/js/nodes/color_parameter.js
https://github.com/EliCDavis/polyform/blob/da485af4c39498f558c90565230f0cff919b5031/generator/html/js/color_selector.js

HTML For the Color Selecting

    <div id="colorSelectorContainer">
        <div id="colorSelector">
            <h2 style="margin-top: 0">Select Color</h2>
            <div>
                <input id="colorSelectorInput" type="color" name="color" value="#e66465" />
                <label for="color">Color</label>
            </div>

            <div
                style="margin-top: 16px; justify-content: space-around; align-items: center; flex-direction: row; display: flex;">
                <button id="colorSelectorOK" style="flex-grow: 1; margin-right: 8px;">OK</button>
                <button id="colorSelectorCancel" style="flex-grow: 1; margin-left: 8px;">Cancel</button>
            </div>

        </div>
    </div>

CSS For The Color Selecting

#colorSelectorContainer {
    position: absolute;
    width: 100%;
    display: flex;
    height: 100%;
    justify-content: center;
    align-items: center;
    background-color: #00000050;
}

#colorSelector {
    background-color: #000;
    color: white;
    border-radius: 8px;
    padding: 16px;
}

Color Selecting Code

export class ColorSelector {

    constructor(selectorContainerId) {
        this.okayCallback = null;
        this.cancelCallback = null;

        this.selectorContainer = document.getElementById(selectorContainerId);
        this.input = document.getElementById("colorSelectorInput");
        this.okButton = document.getElementById("colorSelectorOK");
        this.cancelButton = document.getElementById("colorSelectorCancel");

        this.okButton.onclick = () => {
            this.hide();
            if (this.okayCallback) {
                this.okayCallback(this.input.value);
            }
        }

        this.cancelButton.onclick = () => {
            this.hide();
            if (this.cancelCallback) {
                this.cancelCallback();
            }
        }

        this.hide();
    }

    hide() {
        this.selectorContainer.style.display = "none";
    }


    show(value, okay, cancel) {
        this.selectorContainer.style.display = "flex";
        this.input.value = value;
        this.okayCallback = okay;
        this.cancelCallback = cancel;
    }

}

Widget Code

const imgWidget = myNode.addWidget("color", "Color", "#00FF00", {});
const margin = 15;
imgWidget.draw = (ctx, node, widget_width, y, H) => {
    const adjustedWidth = widget_width - margin * 2
    ctx.beginPath(); 
    ctx.rect(margin, y, adjustedWidth, H); 
    ctx.fillStyle = imgWidget.value;
    ctx.fill(); 
}

imgWidget.mouse = (event, pos, node) => {
    if (event.type !== "mouseup") {
        return;
    }
    app.ColorSelector.show(imgWidget.value, (newColor) => {
        imgWidget.value = newColor;
        LightGraph.setDirtyCanvas(true);
    })
}

Results in this:

2024-04-01.09-43-31.mp4

from litegraph.js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.