Wan_Backup / custom_nodes /ComfyUI-Easy-Use /ComfyUI-Easy-Use-Frontend /src /composable /widgets /BooleanWidget.js
| import { BaseWidget } from "./BaseWidget" | |
| import { THEME_COLOR } from "@/constants"; | |
| export class BooleanWidget extends BaseWidget { | |
| constructor(options) { | |
| super(options); | |
| this.type = "toggle"; | |
| } | |
| drawWidget(ctx, { | |
| width, | |
| showText = true, | |
| isEasyUseTheme = false, | |
| }) { | |
| const { height, y } = this; | |
| const { margin } = BaseWidget; | |
| this.drawWidgetShape(ctx, { width, showText, isEasyUseTheme}); | |
| ctx.fillStyle = this.value ? THEME_COLOR : "#333"; | |
| ctx.beginPath(); | |
| ctx.arc( | |
| width - margin * 2 + (isEasyUseTheme ? 4 : 0), | |
| y + height * 0.5, | |
| height * (isEasyUseTheme ? 0.25 : 0.36), | |
| 0, | |
| Math.PI * 2, | |
| ); | |
| ctx.fill(); | |
| if (showText) { | |
| this.drawLabel(ctx, margin * 2 - (isEasyUseTheme ? 8 : 0)); | |
| this.drawValue(ctx, width - (isEasyUseTheme ? 36 : 40)); | |
| } | |
| } | |
| drawLabel(ctx, x) { | |
| // Draw label | |
| ctx.fillStyle = this.secondary_text_color; | |
| const { displayName } = this; | |
| if (displayName) ctx.fillText(displayName, x, this.labelBaseline); | |
| } | |
| drawValue(ctx, x) { | |
| // Draw value | |
| ctx.fillStyle = this.value ? this.text_color : this.secondary_text_color; | |
| ctx.textAlign = "right"; | |
| const value = this.value ? this.options.on || "true" : this.options.off || "false"; | |
| ctx.fillText(value, x, this.labelBaseline); | |
| } | |
| onClick(options) { | |
| this.setValue(!this.value, options); | |
| } | |
| } |