Repository navigation
Gauge and chart nodes, computed variables, pulse, repeating gradients - #48
Open
BuildCodelessly wants to merge 13 commits into
Open
BuildCodelessly wants to merge 13 commits into
BuildCodelessly wants to merge 13 commits into
Conversation
GaugeNode draws a dial: bindable value, zones, segments, ticks, labels, target notch and needle. ChartNode draws bar, line and timeline charts from a bound list of items, with stacked or grouped bar series, lines, areas with fill-between, ticks, reference lines and a bindable selected index. PaintModel.gradientTileMode repeats or mirrors gradients, which makes stripes from a short gradient with hard stops. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
VariableData.isComputed is true when the value is exactly ${= ...}. Type
sanitizing keeps the formula for every type, and getValue() returns null
for it: the runtime evaluates the formula.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
nodes.insertTree takes hand-written node JSON, which naturally leaves out defaults; a list view without properties or isScrollable crashed. The converter reads a missing properties map as defaults for every node, and scroll flags, placeholder type lists and a grid's delegate get JSON defaults. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
…actions Every other node defaults these; a hand-written or tool-written spacer that left them out failed to load. Also regenerates VarianceNode for the allowedTypes/deniedTypes defaults. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
BlendMixin.pulse (PulseModel: minOpacity, durationMillis), null by default and left out of JSON when unset. For skeleton placeholders and blinking alarm indicators. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
Icons are drawn from Google's icon set by base name and style, so a filled icon named home_outlined pointed at an icon that doesn't exist and drew nothing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FeVQ6NCLHS9Vrfxhii4Mj8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Model changes found while recreating a factory-floor OEE dashboard ("Linewatch") in the editor. This PR is intended ONLY to add the nodes and model fields below. Rendering is in the matching SDK PR, and editor support is in the matching CodelesslyEditor PR.
gaugenode (GaugeNode,GaugeProperties,GaugeZone)value, zone bands, LED segments, ticks and labels.chartnode (ChartNode,ChartProperties,ChartSeries,ChartReferenceLine)variables.data.selectedIndex, and achangedtrigger.PaintModel.gradientTileMode: clamp, repeated or mirror, for stripes such as hazard tape.BlendMixin.pulse(PulseModel): a looping opacity fade, for skeletons and blinking indicators. It defaults to null and is left out of JSON when unset.VariableData.isComputed/isFormulaValuemark a variable whose value is a${= ...}formula;getValue()returns null for it.properties.allowedTypes/deniedTypesdefault when left out.The changelog has an Unreleased section.
Checks run locally (the same steps as CI):
dart format: cleandart analyze --fatal-infos: no issuesdart test: 305 tests passdart pub publish --dry-run: 0 warningsKnown Issues
codelessly_apifrom pub.dev.Generated by Claude Code