phetsims / circuit-construction-kit-common

"Circuit Construction Kit: Basics" is an educational simulation in HTML5, by PhET Interactive Simulations.
GNU General Public License v3.0
10 stars 10 forks source link

phetioFeatured overrides #836

Closed arouinfar closed 1 year ago

arouinfar commented 2 years ago

Self-assigning to take care of the phetioFeatured overrides.

@samreid I added this to the client preview milestone, but it can be done concurrently with QA testing.

arouinfar commented 2 years ago

I committed a draft of the phetioFeatured overrides. I think it's good enough for the client preview, but it's still rough.

  1. Tree needs thorough review to make sure nothing was missed.
  2. Design pattern for carousel needs to be established.
  3. I found instances of over-instrumentation that should be addressed.
  4. Several elements should bephetioReadOnly: true.

I will open up separate issues for items 2-4.

arouinfar commented 1 year ago

Finalizing the overrides should wait until the design is complete.

matthew-blackman commented 1 year ago

Note: @arouinfar and I will revisit the view.circuitElementToolbox components after the carousel-dynamic branch has been merged back into master.

matthew-blackman commented 1 year ago

@arouinfar and I reviewed the featured overrides of all introScreen.model and labScreen.model components, and through the introScreen.view.displayOptionsPanel components. We skipped over view.circuitElementToolbox and still need to pick up where we left off with introScreen.view.meterNodes.

matthew-blackman commented 1 year ago

@arouinfar and I completed the overrides, with the exception of the following:

arouinfar commented 1 year ago

Once everything is wrapped up for CCK: DC, we should propagate the overrides to circuit-construction-kit-dc-virtual-lab. We can copy over the overrides from circuit-construction-kit-dc, but with these changes:

samreid commented 1 year ago

Once the overrides are defined for Circuit Construction Kit: DC, I think it would be nice to propagate them out of the overrides file into the code. That will reduce overhead and hassles described in https://github.com/phetsims/phet-io/issues/1873, and will also make it so we don't need to copy paste overrides for dc-virtual lab, or AC or AC virtual lab.

samreid commented 1 year ago

I propagated the overrides to the code and it went well. Here is a patch for that:

```diff Subject: [PATCH] Update probe locations on isActiveProperty change, see https://github.com/phetsims/circuit-construction-kit-common/issues/951 --- Index: main/phet-io-sim-specific/repos/circuit-construction-kit-dc/circuit-construction-kit-dc-phet-io-api.json IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/phet-io-sim-specific/repos/circuit-construction-kit-dc/circuit-construction-kit-dc-phet-io-api.json b/main/phet-io-sim-specific/repos/circuit-construction-kit-dc/circuit-construction-kit-dc-phet-io-api.json --- a/main/phet-io-sim-specific/repos/circuit-construction-kit-dc/circuit-construction-kit-dc-phet-io-api.json (revision d146e4d0df3d3b02d9f8b3bf815700a36a6b78e2) +++ b/main/phet-io-sim-specific/repos/circuit-construction-kit-dc/circuit-construction-kit-dc-phet-io-api.json (date 1675680967576) @@ -5245,6 +5245,7 @@ }, "_metadata": { "phetioDocumentation": "All Circuit Elements, used for state save/restore", + "phetioFeatured": true, "phetioTypeName": "ObservableArrayIO>" }, "elementAddedEmitter": { @@ -5321,6 +5322,7 @@ } }, "_metadata": { + "phetioFeatured": true, "phetioHighFrequency": true, "phetioIsArchetype": true, "phetioReadOnly": true, @@ -5346,6 +5348,7 @@ }, "endVertexProperty": { "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioReadOnly": true, "phetioState": false, @@ -5362,6 +5365,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the view can display the resistor color code bands", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -5376,6 +5380,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement can be disposed. Set this to false to make the CircuitElement persisent", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -5390,6 +5395,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement can have its numerical characteristics changed by the user", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -5404,6 +5410,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement's value can be displayed when the \"values\" checkbox is selected", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -5418,6 +5425,7 @@ }, "_metadata": { "phetioDocumentation": "Shows a custom text label next to the circuit element", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -5432,6 +5440,7 @@ }, "_metadata": { "phetioDocumentation": "The dissipated power in Watts", + "phetioFeatured": true, "phetioHighFrequency": true, "phetioIsArchetype": true, "phetioReadOnly": true, @@ -5479,6 +5488,7 @@ } }, "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "NumberPropertyIO" }, @@ -5503,6 +5513,7 @@ }, "startVertexProperty": { "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioReadOnly": true, "phetioState": false, @@ -5820,6 +5831,7 @@ } }, "_metadata": { + "phetioFeatured": true, "phetioHighFrequency": true, "phetioIsArchetype": true, "phetioReadOnly": true, @@ -5845,6 +5857,7 @@ }, "endVertexProperty": { "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioReadOnly": true, "phetioState": false, @@ -5861,6 +5874,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the view can display the resistor color code bands", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -5875,6 +5889,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement can be disposed. Set this to false to make the CircuitElement persisent", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -5889,6 +5904,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement can have its numerical characteristics changed by the user", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -5903,6 +5919,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement's value can be displayed when the \"values\" checkbox is selected", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -5917,6 +5934,7 @@ }, "_metadata": { "phetioDocumentation": "Shows a custom text label next to the circuit element", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -5931,6 +5949,7 @@ }, "_metadata": { "phetioDocumentation": "The dissipated power in Watts", + "phetioFeatured": true, "phetioHighFrequency": true, "phetioIsArchetype": true, "phetioReadOnly": true, @@ -5978,6 +5997,7 @@ } }, "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "NumberPropertyIO" }, @@ -6002,6 +6022,7 @@ }, "startVertexProperty": { "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioReadOnly": true, "phetioState": false, @@ -11573,6 +11594,7 @@ }, "displayOptionsPanel": { "_metadata": { + "phetioFeatured": true, "phetioTypeName": "NodeIO" }, "currentTypeRadioButtonGroup": { @@ -12163,7 +12185,6 @@ }, "_metadata": { "phetioDocumentation": "Controls whether the Node will be visible (and interactive).", - "phetioFeatured": true, "phetioTypeName": "PropertyIO" } } @@ -13144,7 +13165,6 @@ }, "_metadata": { "phetioDocumentation": "Controls whether the Node will be visible (and interactive).", - "phetioFeatured": true, "phetioTypeName": "PropertyIO" } }, @@ -13198,6 +13218,7 @@ }, "_metadata": { "phetioDocumentation": "When disabled, the button is grayed out and cannot be pressed", + "phetioFeatured": true, "phetioReadOnly": true, "phetioTypeName": "PropertyIO" } @@ -13923,6 +13944,7 @@ }, "_metadata": { "phetioDocumentation": "All Circuit Elements, used for state save/restore", + "phetioFeatured": true, "phetioTypeName": "ObservableArrayIO>" }, "elementAddedEmitter": { @@ -14563,6 +14585,7 @@ } }, "_metadata": { + "phetioFeatured": true, "phetioHighFrequency": true, "phetioIsArchetype": true, "phetioReadOnly": true, @@ -14588,6 +14611,7 @@ }, "endVertexProperty": { "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioReadOnly": true, "phetioState": false, @@ -14604,6 +14628,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the view can display the resistor color code bands", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -14618,6 +14643,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement can be disposed. Set this to false to make the CircuitElement persisent", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -14632,6 +14658,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement can have its numerical characteristics changed by the user", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -14646,6 +14673,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement's value can be displayed when the \"values\" checkbox is selected", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -14660,6 +14688,7 @@ }, "_metadata": { "phetioDocumentation": "Shows a custom text label next to the circuit element", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -14674,6 +14703,7 @@ }, "_metadata": { "phetioDocumentation": "The dissipated power in Watts", + "phetioFeatured": true, "phetioHighFrequency": true, "phetioIsArchetype": true, "phetioReadOnly": true, @@ -14721,6 +14751,7 @@ } }, "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "NumberPropertyIO" }, @@ -14745,6 +14776,7 @@ }, "startVertexProperty": { "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioReadOnly": true, "phetioState": false, @@ -15062,6 +15094,7 @@ } }, "_metadata": { + "phetioFeatured": true, "phetioHighFrequency": true, "phetioIsArchetype": true, "phetioReadOnly": true, @@ -15087,6 +15120,7 @@ }, "endVertexProperty": { "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioReadOnly": true, "phetioState": false, @@ -15103,6 +15137,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the view can display the resistor color code bands", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -15117,6 +15152,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement can be disposed. Set this to false to make the CircuitElement persisent", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -15131,6 +15167,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement can have its numerical characteristics changed by the user", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -15145,6 +15182,7 @@ }, "_metadata": { "phetioDocumentation": "Whether the CircuitElement's value can be displayed when the \"values\" checkbox is selected", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -15159,6 +15197,7 @@ }, "_metadata": { "phetioDocumentation": "Shows a custom text label next to the circuit element", + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "PropertyIO" } @@ -15173,6 +15212,7 @@ }, "_metadata": { "phetioDocumentation": "The dissipated power in Watts", + "phetioFeatured": true, "phetioHighFrequency": true, "phetioIsArchetype": true, "phetioReadOnly": true, @@ -15220,6 +15260,7 @@ } }, "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioTypeName": "NumberPropertyIO" }, @@ -15244,6 +15285,7 @@ }, "startVertexProperty": { "_metadata": { + "phetioFeatured": true, "phetioIsArchetype": true, "phetioReadOnly": true, "phetioState": false, @@ -21101,6 +21143,7 @@ }, "switchReadoutNode": { "_metadata": { + "phetioFeatured": true, "phetioTypeName": "NodeIO" }, "closedText": { @@ -21145,6 +21188,7 @@ }, "_metadata": { "phetioDocumentation": "Controls whether the Node will be visible (and interactive).", + "phetioFeatured": true, "phetioTypeName": "PropertyIO" } } @@ -23844,6 +23888,7 @@ }, "displayOptionsPanel": { "_metadata": { + "phetioFeatured": true, "phetioTypeName": "NodeIO" }, "currentTypeRadioButtonGroup": { @@ -24434,7 +24479,6 @@ }, "_metadata": { "phetioDocumentation": "Controls whether the Node will be visible (and interactive).", - "phetioFeatured": true, "phetioTypeName": "PropertyIO" } } @@ -25434,7 +25478,6 @@ }, "_metadata": { "phetioDocumentation": "Controls whether the Node will be visible (and interactive).", - "phetioFeatured": true, "phetioTypeName": "PropertyIO" } }, @@ -25488,6 +25531,7 @@ }, "_metadata": { "phetioDocumentation": "When disabled, the button is grayed out and cannot be pressed", + "phetioFeatured": true, "phetioReadOnly": true, "phetioTypeName": "PropertyIO" } Index: main/circuit-construction-kit-common/js/view/CCKCScreenView.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/view/CCKCScreenView.ts b/main/circuit-construction-kit-common/js/view/CCKCScreenView.ts --- a/main/circuit-construction-kit-common/js/view/CCKCScreenView.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/view/CCKCScreenView.ts (date 1675680901080) @@ -235,7 +235,10 @@ tandem.createTandem( 'sensorToolbox' ), { showSeriesAmmeters: options.showSeriesAmmeters, showNoncontactAmmeters: options.showNoncontactAmmeters, - showCharts: options.showCharts + showCharts: options.showCharts, + visiblePropertyOptions: { + phetioFeatured: true + } } ); this.viewRadioButtonGroup = new ViewRadioButtonGroup( @@ -341,7 +344,10 @@ // Create the zoom button group const zoomButtonGroup = new CCKZoomButtonGroup( model.zoomLevelProperty, { - tandem: tandem.createTandem( 'zoomButtonGroup' ) + tandem: tandem.createTandem( 'zoomButtonGroup' ), + visiblePropertyOptions: { + phetioFeatured: true + } } ); zoomButtonGroup.mutate( { scale: this.circuitElementToolbox.carousel.backgroundWidth / Index: main/circuit-construction-kit-common/js/model/Switch.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/Switch.ts b/main/circuit-construction-kit-common/js/model/Switch.ts --- a/main/circuit-construction-kit-common/js/model/Switch.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/Switch.ts (date 1675679687835) @@ -58,7 +58,8 @@ this.resistanceProperty = new NumberProperty( 0 ); this.isClosedProperty = new BooleanProperty( options.closed, { - tandem: tandem.createTandem( 'isClosedProperty' ) + tandem: tandem.createTandem( 'isClosedProperty' ), + phetioFeatured: true } ); this.isClosedProperty.link( closed => { Index: main/circuit-construction-kit-common/js/view/CircuitNode.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/view/CircuitNode.ts b/main/circuit-construction-kit-common/js/view/CircuitNode.ts --- a/main/circuit-construction-kit-common/js/view/CircuitNode.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/view/CircuitNode.ts (date 1675680901091) @@ -467,7 +467,8 @@ // with other global-use buttons), so we are using the screenView tandem here tandem: screenView.tandem.createTandem( 'vertexCutButton' ), enabledPropertyOptions: { - phetioReadOnly: true + phetioReadOnly: true, + phetioFeatured: true } } ); this.vertexCutButton.addListener( () => { Index: main/circuit-construction-kit-common/js/model/Resistor.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/Resistor.ts b/main/circuit-construction-kit-common/js/model/Resistor.ts --- a/main/circuit-construction-kit-common/js/model/Resistor.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/Resistor.ts (date 1675679606740) @@ -73,14 +73,16 @@ tandem: tandem.createTandem( 'resistanceProperty' ), // Specify the Property range for seamless PhET-iO interoperation - range: this.resistorType.range + range: this.resistorType.range, + phetioFeatured: true } ); this.powerDissipatedProperty = new PowerDissipatedProperty( this.currentProperty, this.resistanceProperty, tandem.createTandem( 'powerDissipatedProperty' ) ); this.isColorCodeVisibleProperty = new BooleanProperty( true, { tandem: tandem.createTandem( 'isColorCodeVisibleProperty' ), - phetioDocumentation: 'Whether the view can display the resistor color code bands' + phetioDocumentation: 'Whether the view can display the resistor color code bands', + phetioFeatured: true } ); } Index: main/circuit-construction-kit-common/js/model/VoltageSource.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/VoltageSource.ts b/main/circuit-construction-kit-common/js/model/VoltageSource.ts --- a/main/circuit-construction-kit-common/js/model/VoltageSource.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/VoltageSource.ts (date 1675679455916) @@ -26,6 +26,7 @@ voltagePropertyOptions?: { range?: Range; tandem?: Tandem; + phetioFeatured?: boolean; }; }; export type VoltageSourceOptions = SelfOptions & FixedCircuitElementOptions; @@ -61,7 +62,8 @@ isFlammable: true, numberOfDecimalPlaces: 1, voltagePropertyOptions: { - tandem: tandem.createTandem( 'voltageProperty' ) + tandem: tandem.createTandem( 'voltageProperty' ), + phetioFeatured: true } }, providedOptions ); super( startVertex, endVertex, length, tandem, options ); @@ -76,7 +78,8 @@ ( current, voltage ) => Math.abs( current * voltage ), { tandem: tandem.createTandem( 'powerGeneratedProperty' ), phetioValueType: NumberIO, - phetioHighFrequency: true + phetioHighFrequency: true, + phetioFeatured: true } ); this.initialOrientation = options.initialOrientation; Index: main/circuit-construction-kit-common/js/view/SwitchReadoutNode.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/view/SwitchReadoutNode.ts b/main/circuit-construction-kit-common/js/view/SwitchReadoutNode.ts --- a/main/circuit-construction-kit-common/js/view/SwitchReadoutNode.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/view/SwitchReadoutNode.ts (date 1675680704277) @@ -57,7 +57,11 @@ super( { children: [ messageNode ], - tandem: tandem + tandem: tandem, + phetioFeatured: true, + visiblePropertyOptions: { + phetioFeatured: true + } } ); } } Index: main/circuit-construction-kit-common/js/model/Vertex.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/Vertex.ts b/main/circuit-construction-kit-common/js/model/Vertex.ts --- a/main/circuit-construction-kit-common/js/model/Vertex.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/Vertex.ts (date 1675680158902) @@ -119,7 +119,8 @@ valueComparisonStrategy: 'equalsFunction', isValidValue: ( position: Vector2 ) => position.isFinite(), phetioReadOnly: true, - phetioHighFrequency: true + phetioHighFrequency: true, + phetioFeatured: true } ); this.unsnappedPositionProperty = new Vector2Property( position, { @@ -130,11 +131,13 @@ tandem: options.tandem && options.tandem.createTandem( 'voltageProperty' ), units: 'V', phetioReadOnly: true, - phetioHighFrequency: true + phetioHighFrequency: true, + phetioFeatured: true } ); this.isDraggableProperty = new BooleanProperty( options.draggable, { - tandem: options.tandem && options.tandem.createTandem( 'isDraggableProperty' ) + tandem: options.tandem && options.tandem.createTandem( 'isDraggableProperty' ), + phetioFeatured: true } ); this.interactiveProperty = new BooleanProperty( options.interactive ); @@ -147,7 +150,8 @@ this.outerWireStub = false; this.isCuttableProperty = new BooleanProperty( true, { - tandem: options.tandem.createTandem( 'isCuttableProperty' ) + tandem: options.tandem.createTandem( 'isCuttableProperty' ), + phetioFeatured: true } ); this.localizedString = new LocalizedString( '', options.tandem.createTandem( 'labelStringProperty' ) ); Index: main/circuit-construction-kit-common/js/model/Battery.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/Battery.ts b/main/circuit-construction-kit-common/js/model/Battery.ts --- a/main/circuit-construction-kit-common/js/model/Battery.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/Battery.ts (date 1675679341805) @@ -31,7 +31,7 @@ public static readonly HIGH_VOLTAGE_DEFAULT = 1000; public static readonly HIGH_VOLTAGE_RANGE = new Range( 100, 100000 ); public static readonly HIGH_VOLTAGE_DECIMAL_PLACES = 0; - public isReversibleProperty: BooleanProperty; + public readonly isReversibleProperty: BooleanProperty; public constructor( startVertex: Vertex, endVertex: Vertex, internalResistanceProperty: Property, batteryType: BatteryType, tandem: Tandem, providedOptions?: BatteryOptions ) { @@ -50,7 +50,8 @@ this.initialOrientation = options.initialOrientation; this.batteryType = batteryType; this.isReversibleProperty = new BooleanProperty( true, { - tandem: tandem.createTandem( 'isReversibleProperty' ) + tandem: tandem.createTandem( 'isReversibleProperty' ), + phetioFeatured: true } ); } Index: main/circuit-construction-kit-common/js/view/DisplayOptionsPanel.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/view/DisplayOptionsPanel.ts b/main/circuit-construction-kit-common/js/view/DisplayOptionsPanel.ts --- a/main/circuit-construction-kit-common/js/view/DisplayOptionsPanel.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/view/DisplayOptionsPanel.ts (date 1675680704271) @@ -159,7 +159,8 @@ vBox.boundsProperty.link( bounds => content.setChildren( bounds.isValid() ? [ alignBox ] : [] ) ); super( content, tandem, { - yMargin: 10 + yMargin: 10, + phetioFeatured: true } ); // Touch & Mouse area extends to the right across the control panel Index: main/circuit-construction-kit-common/js/model/PowerDissipatedProperty.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/PowerDissipatedProperty.ts b/main/circuit-construction-kit-common/js/model/PowerDissipatedProperty.ts --- a/main/circuit-construction-kit-common/js/model/PowerDissipatedProperty.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/PowerDissipatedProperty.ts (date 1675679400158) @@ -18,7 +18,8 @@ tandem: tandem, phetioValueType: NumberIO, phetioDocumentation: 'The dissipated power in Watts', - phetioHighFrequency: true + phetioHighFrequency: true, + phetioFeatured: true } ); } } Index: main/circuit-construction-kit-common/js/model/LightBulb.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/LightBulb.ts b/main/circuit-construction-kit-common/js/model/LightBulb.ts --- a/main/circuit-construction-kit-common/js/model/LightBulb.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/LightBulb.ts (date 1675679606743) @@ -127,6 +127,7 @@ this.isExtreme = options.isExtreme; this.resistanceProperty = new NumberProperty( resistance, { tandem: tandem.createTandem( 'resistanceProperty' ), + phetioFeatured: true, range: options.isExtreme ? new Range( 100, 10000 ) : options.isReal ? new Range( 0, Number.MAX_VALUE ) : // The non-ohmic bulb has its resistance computed in LinearTransientAnalysis.js new Range( 0, 120 ) Index: main/circuit-construction-kit-dc/js/circuit-construction-kit-dc-phet-io-overrides.js IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-dc/js/circuit-construction-kit-dc-phet-io-overrides.js b/main/circuit-construction-kit-dc/js/circuit-construction-kit-dc-phet-io-overrides.js --- a/main/circuit-construction-kit-dc/js/circuit-construction-kit-dc-phet-io-overrides.js (revision e29e4bf52b88143ad7961393a1338fd4251693a8) +++ b/main/circuit-construction-kit-dc/js/circuit-construction-kit-dc-phet-io-overrides.js (date 1675680945687) @@ -1,691 +1,2 @@ /* eslint-disable */ -window.phet.preloads.phetio.phetioElementsOverrides = - { - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.isReversibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.powerDissipatedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.powerGeneratedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.batteryGroup.archetype.voltageProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.circuitChangedEmitter": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.circuitElements.elementAddedEmitter": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.circuitElements.elementRemovedEmitter": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.circuitElements.lengthProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.fuseGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.fuseGroup.archetype.currentRatingProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.fuseGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.fuseGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.fuseGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.fuseGroup.archetype.isRepairableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.fuseGroup.archetype.isTrippedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.fuseGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.fuseGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.fuseGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.lightBulbGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.lightBulbGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.lightBulbGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.lightBulbGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.lightBulbGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.lightBulbGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.lightBulbGroup.archetype.powerDissipatedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.lightBulbGroup.archetype.resistanceProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.lightBulbGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.resistorGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.resistorGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.resistorGroup.archetype.isColorCodeVisibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.resistorGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.resistorGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.resistorGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.resistorGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.resistorGroup.archetype.powerDissipatedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.resistorGroup.archetype.resistanceProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.resistorGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.selectionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.switchGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.switchGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.switchGroup.archetype.isClosedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.switchGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.switchGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.switchGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.switchGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.vertexGroup.archetype.isCuttableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.vertexGroup.archetype.isDraggableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.vertexGroup.archetype.positionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.vertexGroup.archetype.voltageProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.wireGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.wireGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.wireGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.circuit.wireGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.currentTypeProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.ammeter1": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.ammeter1.bodyPositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.ammeter1.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.ammeter1.isActiveProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.ammeter1.probePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.ammeter2": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.ammeter2.bodyPositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.ammeter2.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.ammeter2.isActiveProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.ammeter2.probePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter1": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter1.blackProbePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter1.bodyPositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter1.isActiveProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter1.redProbePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter1.voltageProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter2": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter2.blackProbePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter2.bodyPositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter2.isActiveProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter2.redProbePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.meters.voltmeter2.voltageProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.showCurrentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.showLabelsProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.showValuesProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.sourceResistanceProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.viewTypeProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.wireResistivityProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.model.zoomLevelProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.view.circuitElementEditContainerNode.switchReadoutNode": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.view.circuitElementEditContainerNode.switchReadoutNode.visibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.view.displayOptionsPanel.visibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.view.sensorToolbox.noncontactAmmeterToolNode": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.view.sensorToolbox.visibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.view.sensorToolbox.voltmeterToolNode": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.introScreen.view.vertexCutButton.enabledProperty": { - "phetioFeatured": false - }, - "circuitConstructionKitDc.introScreen.view.zoomButtonGroup.visibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.addRealBulbsProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.isReversibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.powerDissipatedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.powerGeneratedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.batteryGroup.archetype.voltageProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.circuitChangedEmitter": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.circuitElements.elementAddedEmitter": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.circuitElements.elementRemovedEmitter": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.circuitElements.lengthProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.isReversibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.powerDissipatedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.powerGeneratedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeBatteryGroup.archetype.voltageProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeLightBulbGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeLightBulbGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeLightBulbGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeLightBulbGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeLightBulbGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeLightBulbGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeLightBulbGroup.archetype.powerDissipatedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeLightBulbGroup.archetype.resistanceProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.extremeLightBulbGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.fuseGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.fuseGroup.archetype.currentRatingProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.fuseGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.fuseGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.fuseGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.fuseGroup.archetype.isRepairableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.fuseGroup.archetype.isTrippedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.fuseGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.fuseGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.fuseGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.lightBulbGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.lightBulbGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.lightBulbGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.lightBulbGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.lightBulbGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.lightBulbGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.lightBulbGroup.archetype.powerDissipatedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.lightBulbGroup.archetype.resistanceProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.lightBulbGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.realLightBulbGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.realLightBulbGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.realLightBulbGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.realLightBulbGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.realLightBulbGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.realLightBulbGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.realLightBulbGroup.archetype.powerDissipatedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.realLightBulbGroup.archetype.resistanceProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.realLightBulbGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.resistorGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.resistorGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.resistorGroup.archetype.isColorCodeVisibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.resistorGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.resistorGroup.archetype.isEditableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.resistorGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.resistorGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.resistorGroup.archetype.powerDissipatedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.resistorGroup.archetype.resistanceProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.resistorGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.selectionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.seriesAmmeterGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.seriesAmmeterGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.seriesAmmeterGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.seriesAmmeterGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.switchGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.switchGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.switchGroup.archetype.isClosedProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.switchGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.switchGroup.archetype.isValueDisplayableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.switchGroup.archetype.labelStringProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.switchGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.vertexGroup.archetype.isCuttableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.vertexGroup.archetype.isDraggableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.vertexGroup.archetype.positionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.vertexGroup.archetype.voltageProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.wireGroup.archetype.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.wireGroup.archetype.endVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.wireGroup.archetype.isDisposableProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.circuit.wireGroup.archetype.startVertexProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.currentTypeProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.ammeter1": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.ammeter1.bodyPositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.ammeter1.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.ammeter1.isActiveProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.ammeter1.probePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.ammeter2": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.ammeter2.bodyPositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.ammeter2.currentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.ammeter2.isActiveProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.ammeter2.probePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter1": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter1.blackProbePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter1.bodyPositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter1.isActiveProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter1.redProbePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter1.voltageProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter2": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter2.blackProbePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter2.bodyPositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter2.isActiveProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter2.redProbePositionProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.meters.voltmeter2.voltageProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.showCurrentProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.showLabelsProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.showValuesProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.sourceResistanceProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.viewTypeProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.wireResistivityProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.model.zoomLevelProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.view.displayOptionsPanel.visibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.view.sensorToolbox.noncontactAmmeterToolNode": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.view.sensorToolbox.seriesAmmeterToolNode": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.view.sensorToolbox.visibleProperty": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.view.sensorToolbox.voltmeterToolNode": { - "phetioFeatured": true - }, - "circuitConstructionKitDc.labScreen.view.vertexCutButton.enabledProperty": { - "phetioFeatured": false - }, - "circuitConstructionKitDc.labScreen.view.zoomButtonGroup.visibleProperty": { - "phetioFeatured": true - } - }; \ No newline at end of file +window.phet.preloads.phetio.phetioElementsOverrides = {}; \ No newline at end of file Index: main/circuit-construction-kit-common/js/model/Ammeter.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/Ammeter.ts b/main/circuit-construction-kit-common/js/model/Ammeter.ts --- a/main/circuit-construction-kit-common/js/model/Ammeter.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/Ammeter.ts (date 1675680339992) @@ -35,11 +35,13 @@ tandem: tandem.createTandem( 'currentProperty' ), units: 'A', phetioValueType: NullableIO( NumberIO ), - phetioReadOnly: true + phetioReadOnly: true, + phetioFeatured: true } ); this.probePositionProperty = new Vector2Property( Vector2.ZERO, { - tandem: tandem.createTandem( 'probePositionProperty' ) + tandem: tandem.createTandem( 'probePositionProperty' ), + phetioFeatured: true } ); this.associatedCircuitElementProperty = new Property( null, { Index: main/circuit-construction-kit-common/js/model/CircuitElement.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/CircuitElement.ts b/main/circuit-construction-kit-common/js/model/CircuitElement.ts --- a/main/circuit-construction-kit-common/js/model/CircuitElement.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/CircuitElement.ts (date 1675679374531) @@ -166,21 +166,24 @@ phetioValueType: Vertex.VertexIO, tandem: tandem.createTandem( 'startVertexProperty' ), phetioState: false, - phetioReadOnly: true + phetioReadOnly: true, + phetioFeatured: true } ); this.endVertexProperty = new Property( endVertex, { phetioValueType: Vertex.VertexIO, tandem: tandem.createTandem( 'endVertexProperty' ), phetioState: false, - phetioReadOnly: true + phetioReadOnly: true, + phetioFeatured: true } ); this.currentProperty = new NumberProperty( 0, { reentrant: options.isCurrentReentrant, tandem: tandem.createTandem( 'currentProperty' ), phetioReadOnly: true, - phetioHighFrequency: true + phetioHighFrequency: true, + phetioFeatured: true } ); this.currentProperty.link( current => { assert && assert( !isNaN( current ) ); @@ -224,22 +227,26 @@ // PhET-iO-specific Properties this.isEditableProperty = new BooleanProperty( true, combineOptions>( { tandem: tandem.createTandem( 'isEditableProperty' ), - phetioDocumentation: 'Whether the CircuitElement can have its numerical characteristics changed by the user' + phetioDocumentation: 'Whether the CircuitElement can have its numerical characteristics changed by the user', + phetioFeatured: true }, options.isEditablePropertyOptions ) ); this.isDisposableProperty = new BooleanProperty( true, { tandem: tandem.createTandem( 'isDisposableProperty' ), - phetioDocumentation: 'Whether the CircuitElement can be disposed. Set this to false to make the CircuitElement persisent' + phetioDocumentation: 'Whether the CircuitElement can be disposed. Set this to false to make the CircuitElement persisent', + phetioFeatured: true } ); this.isValueDisplayableProperty = new BooleanProperty( true, combineOptions>( { tandem: tandem.createTandem( 'isValueDisplayableProperty' ), - phetioDocumentation: 'Whether the CircuitElement\'s value can be displayed when the "values" checkbox is selected' + phetioDocumentation: 'Whether the CircuitElement\'s value can be displayed when the "values" checkbox is selected', + phetioFeatured: true }, options.isValueDisplayablePropertyOptions ) ); this.labelStringProperty = new StringProperty( '', combineOptions>( { tandem: tandem.createTandem( 'labelStringProperty' ), - phetioDocumentation: 'Shows a custom text label next to the circuit element' + phetioDocumentation: 'Shows a custom text label next to the circuit element', + phetioFeatured: true }, options.labelStringPropertyOptions ) ); } Index: main/circuit-construction-kit-common/js/model/Circuit.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/Circuit.ts b/main/circuit-construction-kit-common/js/model/Circuit.ts --- a/main/circuit-construction-kit-common/js/model/Circuit.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/Circuit.ts (date 1675680528775) @@ -175,32 +175,37 @@ this.blackBoxStudy = options.blackBoxStudy; this.wireResistivityProperty = new NumberProperty( CCKCConstants.WIRE_RESISTIVITY_RANGE.min, { tandem: tandem.parentTandem!.createTandem( 'wireResistivityProperty' ), - range: CCKCConstants.WIRE_RESISTIVITY_RANGE + range: CCKCConstants.WIRE_RESISTIVITY_RANGE, + phetioFeatured: true } ); this.sourceResistanceProperty = new NumberProperty( CCKCConstants.DEFAULT_BATTERY_RESISTANCE, { tandem: tandem.parentTandem!.createTandem( 'sourceResistanceProperty' ), - range: CCKCConstants.BATTERY_RESISTANCE_RANGE + range: CCKCConstants.BATTERY_RESISTANCE_RANGE, + phetioFeatured: true } ); this.circuitElements = createObservableArray( { phetioState: true, phetioType: createObservableArray.ObservableArrayIO( ReferenceIO( CircuitElement.CircuitElementIO ) ), tandem: tandem.createTandem( 'circuitElements' ), - phetioDocumentation: 'All Circuit Elements, used for state save/restore' + phetioDocumentation: 'All Circuit Elements, used for state save/restore', + phetioFeatured: true } ); this.charges = createObservableArray(); this.currentTypeProperty = new EnumerationProperty( CCKCQueryParameters.currentType === 'electrons' ? CurrentType.ELECTRONS : CurrentType.CONVENTIONAL, { - tandem: tandem.parentTandem!.createTandem( 'currentTypeProperty' ) + tandem: tandem.parentTandem!.createTandem( 'currentTypeProperty' ), + phetioFeatured: true } ); // When the current type changes, mark everything as dirty and relayout charges this.currentTypeProperty.lazyLink( () => this.relayoutAllCharges() ); this.showCurrentProperty = new BooleanProperty( CCKCQueryParameters.showCurrent, { - tandem: tandem.parentTandem!.createTandem( 'showCurrentProperty' ) + tandem: tandem.parentTandem!.createTandem( 'showCurrentProperty' ), + phetioFeatured: true } ); this.timeProperty = new NumberProperty( 0 ); @@ -258,7 +263,8 @@ this.selectionProperty = new Property( null, { tandem: tandem.createTandem( 'selectionProperty' ), - phetioValueType: NullableIO( ReferenceIO( OrIO( [ CircuitElement.CircuitElementIO, Vertex.VertexIO ] ) ) ) + phetioValueType: NullableIO( ReferenceIO( OrIO( [ CircuitElement.CircuitElementIO, Vertex.VertexIO ] ) ) ), + phetioFeatured: true } ); const emitCircuitChanged = () => { Index: main/circuit-construction-kit-common/js/model/Meter.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/Meter.ts b/main/circuit-construction-kit-common/js/model/Meter.ts --- a/main/circuit-construction-kit-common/js/model/Meter.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/Meter.ts (date 1675680339994) @@ -40,16 +40,19 @@ super( { tandem: tandem, - phetioState: false + phetioState: false, + phetioFeatured: true } ); this.phetioIndex = phetioIndex; this.isActiveProperty = new BooleanProperty( false, { - tandem: tandem.createTandem( 'isActiveProperty' ) + tandem: tandem.createTandem( 'isActiveProperty' ), + phetioFeatured: true } ); this.bodyPositionProperty = new Vector2Property( Vector2.ZERO, { - tandem: tandem.createTandem( 'bodyPositionProperty' ) + tandem: tandem.createTandem( 'bodyPositionProperty' ), + phetioFeatured: true } ); this.draggingProbesWithBodyProperty = new BooleanProperty( true ); Index: main/circuit-construction-kit-common/js/model/Fuse.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/Fuse.ts b/main/circuit-construction-kit-common/js/model/Fuse.ts --- a/main/circuit-construction-kit-common/js/model/Fuse.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/Fuse.ts (date 1675679542114) @@ -53,11 +53,13 @@ this.currentRatingProperty = new NumberProperty( options.currentRating, { range: Fuse.RANGE, - tandem: tandem.createTandem( 'currentRatingProperty' ) + tandem: tandem.createTandem( 'currentRatingProperty' ), + phetioFeatured: true } ); this.isTrippedProperty = new BooleanProperty( false, { - tandem: tandem.createTandem( 'isTrippedProperty' ) + tandem: tandem.createTandem( 'isTrippedProperty' ), + phetioFeatured: true } ); this.resistanceProperty = new NumberProperty( CCKCConstants.MINIMUM_RESISTANCE ); @@ -66,7 +68,8 @@ this.timeCurrentRatingExceeded = 0; this.isRepairableProperty = new BooleanProperty( true, { - tandem: tandem.createTandem( 'isRepairableProperty' ) + tandem: tandem.createTandem( 'isRepairableProperty' ), + phetioFeatured: true } ); } Index: main/circuit-construction-kit-common/js/model/Voltmeter.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/Voltmeter.ts b/main/circuit-construction-kit-common/js/model/Voltmeter.ts --- a/main/circuit-construction-kit-common/js/model/Voltmeter.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/Voltmeter.ts (date 1675680374006) @@ -38,15 +38,18 @@ tandem: tandem.createTandem( 'voltageProperty' ), units: 'V', phetioValueType: NullableIO( NumberIO ), - phetioReadOnly: true + phetioReadOnly: true, + phetioFeatured: true } ); this.redProbePositionProperty = new Vector2Property( Vector2.ZERO, { - tandem: tandem.createTandem( 'redProbePositionProperty' ) + tandem: tandem.createTandem( 'redProbePositionProperty' ), + phetioFeatured: true } ); this.blackProbePositionProperty = new Vector2Property( Vector2.ZERO, { - tandem: tandem.createTandem( 'blackProbePositionProperty' ) + tandem: tandem.createTandem( 'blackProbePositionProperty' ), + phetioFeatured: true } ); this.blackConnectionProperty = new Property( null, { Index: main/axon/js/createObservableArray.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/axon/js/createObservableArray.ts b/main/axon/js/createObservableArray.ts --- a/main/axon/js/createObservableArray.ts (revision 9ba1b065d31b9d8071f458095ea7d54ca0962f79) +++ b/main/axon/js/createObservableArray.ts (date 1675680011739) @@ -35,10 +35,11 @@ elements?: T[]; tandem?: Tandem; - // Possibly passed through to the Emitter + // Possibly passed through to the Emitters phetioType?: IOType; phetioState?: boolean; phetioDocumentation?: string; + phetioFeatured?: boolean; }; type ObservableArray = { get: ( index: number ) => T; @@ -91,7 +92,8 @@ length: 0, elements: [], - tandem: Tandem.OPTIONAL + tandem: Tandem.OPTIONAL, + phetioFeatured: false }, providedOptions ); let emitterParameterOptions = null; @@ -113,21 +115,24 @@ const elementAddedEmitter = new Emitter<[ T ]>( { tandem: options.tandem.createTandem( 'elementAddedEmitter' ), parameters: [ emitterParameterOptions ], - phetioReadOnly: true + phetioReadOnly: true, + phetioFeatured: options.phetioFeatured } ); // notifies when an element has been removed const elementRemovedEmitter = new Emitter<[ T ]>( { tandem: options.tandem.createTandem( 'elementRemovedEmitter' ), parameters: [ emitterParameterOptions ], - phetioReadOnly: true + phetioReadOnly: true, + phetioFeatured: options.phetioFeatured } ); // observe this, but don't set it. Updated when Array modifiers are called (except array.length=...) const lengthProperty = new NumberProperty( 0, { numberType: 'Integer', tandem: options.tandem.createTandem( 'lengthProperty' ), - phetioReadOnly: true + phetioReadOnly: true, + phetioFeatured: options.phetioFeatured } ); // The underlying array which is wrapped by the Proxy Index: main/circuit-construction-kit-common/js/model/CircuitConstructionKitModel.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/model/CircuitConstructionKitModel.ts b/main/circuit-construction-kit-common/js/model/CircuitConstructionKitModel.ts --- a/main/circuit-construction-kit-common/js/model/CircuitConstructionKitModel.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/model/CircuitConstructionKitModel.ts (date 1675680901083) @@ -102,11 +102,13 @@ // whether to show lifelike or schematic representations this.viewTypeProperty = new EnumerationProperty( CircuitElementViewType.LIFELIKE, { - tandem: tandem.createTandem( 'viewTypeProperty' ) + tandem: tandem.createTandem( 'viewTypeProperty' ), + phetioFeatured: true } ); this.addRealBulbsProperty = new BooleanProperty( CCKCQueryParameters.addRealBulbs, { - tandem: includeLabElements ? tandem.createTandem( 'addRealBulbsProperty' ) : Tandem.OPT_OUT + tandem: includeLabElements ? tandem.createTandem( 'addRealBulbsProperty' ) : Tandem.OPT_OUT, + phetioFeatured: true } ); const circuitTandem = tandem.createTandem( 'circuit' ); @@ -135,11 +137,13 @@ } ); this.showLabelsProperty = new BooleanProperty( true, { - tandem: tandem.createTandem( 'showLabelsProperty' ) + tandem: tandem.createTandem( 'showLabelsProperty' ), + phetioFeatured: true } ); this.showValuesProperty = new BooleanProperty( false, { - tandem: tandem.createTandem( 'showValuesProperty' ) + tandem: tandem.createTandem( 'showValuesProperty' ), + phetioFeatured: true } ); assert && assert( CCKCConstants.ZOOM_SCALES.includes( 1 ), 'Zoom scales must include 1 as an option' ); @@ -152,7 +156,8 @@ phetioDocumentation: 'This Property is controlled by the zoom buttons. ' + 'It is an integer index that tells the sim how much to scale the view. ' + 'Smaller values are more zoomed out. ' + - 'See zoomScaleProperty for the actual scale value.' + 'See zoomScaleProperty for the actual scale value.', + phetioFeatured: true } ); // Scale factor for the current zoom level @@ -231,7 +236,8 @@ const circuitChangedEmitter = new Emitter( { tandem: circuitTandem.createTandem( 'circuitChangedEmitter' ), phetioDocumentation: 'Emits when any circuit model parameter or topology has changed', - phetioReadOnly: true + phetioReadOnly: true, + phetioFeatured: true } ); const emitCircuitChanged = () => circuitChangedEmitter.emit(); Index: main/circuit-construction-kit-common/js/view/SensorToolbox.ts IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== diff --git a/main/circuit-construction-kit-common/js/view/SensorToolbox.ts b/main/circuit-construction-kit-common/js/view/SensorToolbox.ts --- a/main/circuit-construction-kit-common/js/view/SensorToolbox.ts (revision 147fc85acade5e6f89b617ae0ed43f6e8d2842d4) +++ b/main/circuit-construction-kit-common/js/view/SensorToolbox.ts (date 1675680901075) @@ -121,7 +121,8 @@ const ammeterToolIcon = new AmmeterNode( ammeter, null, { isIcon: true, tandem: tandem.createTandem( 'noncontactAmmeterToolNode' ), - phetioVisiblePropertyInstrumented: true + phetioVisiblePropertyInstrumented: true, + phetioFeatured: true } ); const allAmmetersInPlayAreaProperty = DerivedProperty.and( ammeterNodes.map( ammeterNode => ammeterNode.ammeter.isActiveProperty ) ); allAmmetersInPlayAreaProperty.link( allInPlayArea => { @@ -171,7 +172,8 @@ touchAreaExpansionRight: 3, touchAreaExpansionBottom: 0, tandem: circuit.includeLabElements ? tandem.createTandem( 'seriesAmmeterToolNode' ) : Tandem.OPT_OUT, - ghostOpacity: 0 + ghostOpacity: 0, + phetioFeatured: true } ); const allSeriesAmmetersInPlayAreaProperty = new DerivedProperty( [ circuit.circuitElements.lengthProperty ], ( () => { return circuit.circuitElements.count( circuitElement => circuitElement instanceof SeriesAmmeter ) === MAX_SERIES_AMMETERS; @@ -207,7 +209,8 @@ voltmeterToolIcon, voltmeterText ], - excludeInvisibleChildrenFromBounds: false + excludeInvisibleChildrenFromBounds: false, + phetioFeatured: true } ); // Alter the visibility of the labels when the labels checkbox is toggled. ```

This reduces the total number of lines of code from 19635 to 19003, a reduction of 632 lines of code = 3.2% of the code. This change also automatically handled the extremeResistorGroup and householdObjectGroup, for example.

However, I did not yet commit since this change introduced variations that deviate from the original API file, and it is difficult for me to tell whether this (a) correctly unified unintentional variations or (b) introduced undesirable problems. For other cases, it was unclear whether a new phetioFeatured: true I introduced for simplicity would be acceptable, like for the circuitElements. So I think it would be best to review with @arouinfar and @matthew-blackman. I would also note that using https://benjamine.github.io/jsondiffpatch/demo/index.html, and pasting in the old API and new API made it very simple to see what had changed. For example, it looked like this:

image

UPDATE: I'm also carefully tracking my time spent on this, in case that can inform value in using this strategy in other sims. So far, I'm up to 46 minutes (includes the time to write this issue comment). Also, for future ones, I'm wondering if we can save even more time by collaboratively writing the phetioFeatured metadata. As it is now, there is cost to create the whole overrides file (with a lot of redundancy), then I have to deal with the redundancy when I propagate it back to the code (in keeping track of which things have been moved). While this may work well for asynchronous collaboration, perhaps synchronous development of this part may be more efficient overall.

samreid commented 1 year ago

@matthew-blackman and @arouinfar and I discussed this, and agree we want to move forward with the overrides in the code.

@matthew-blackman asks: What if one screen wants to have something featured, and another screen wants it non-featured? @samreid says: There are 3 lines of defense:

  1. Relax our constraints and allow something that is featured somewhere to be featured everwhere
  2. Pass through options for that
  3. Use the overrides file in a sparse way (if level 1 and 2 don't work).

@arouinfar also pointed out that it is a time-consuming process to specify the overrides in the first place, where things have to be propagated to other screens/sims, and there is a lot of duplication in the values. We could save time on this aspect as well.

@matthew-blackman wants to specify criteria for deciding level 2 vs level 3 above. One idea is: if something is screen specific (featured on one screen but not the other), put it in the overrides. @samreid: I would like to see all the overrides files disappear. But ultimately may be developer discretion.

@matthew-blackman also said we will have to redefine the workflow for this process. @samreid: Probably a working design meeting where the developer adds metadata as we go. @arouinfar: We should ask @pixelzoom what part of the existing process he wants to keep. If it is the decision-making, then the designer can save time by reporting like "feature the currentProperty of all circuit elements" instead of having to select that 16 times throughout the sim.

@matthew-blackman asks why we do this for phetioFeatured but not for other metadata, such as phetioReadOnly and phetioDocumentation. @samreid and @arouinfar weren't sure about this exactly, but I bet there is a paper trail.
@arouinfar says: It is important for things like phetioReadOnly to be in the code at the declaration site, so it is clear to developers. @matthew-blackman says it seems straightforward to treat phetioFeatured as we treat other metadata.

We will schedule a >=15 minute meeting to review the differences

samreid commented 1 year ago

After this is done, @arouinfar will review the featured tree asynchronously.

matthew-blackman commented 1 year ago

Regarding https://github.com/phetsims/circuit-construction-kit-common/issues/934, @samreid @arouinfar and I agree that the sensor connection axon properties should be featured so that a client can attach logic to the usage of the specific sensors.

arouinfar commented 1 year ago

@matthew-blackman @samreid I took a another pass through the tree and found one issue related to the phetioFeatured elements. Otherwise, things are looking good!

matthew-blackman commented 1 year ago

We should also do a pass over sensor instrumentation after https://github.com/phetsims/circuit-construction-kit-common/issues/934 is closed.

samreid commented 1 year ago

I fixed the request from https://github.com/phetsims/circuit-construction-kit-common/issues/836#issuecomment-1421603219

We should also do a pass over sensor instrumentation after https://github.com/phetsims/circuit-construction-kit-common/issues/934 is closed.

934 is ready for review. But I wasn't sure if we want to feature the red/black probes or other things. Also, I realized it is awkward you cannot autoselect a red/black probe itself. Should we add that?

samreid commented 1 year ago

Also, I realized it is awkward you cannot autoselect a red/black probe itself. Should we add that?

In discussion, I mentioned that it could take 30-60 minutes to instrument blackProbeNode and link it to a new model element blackProbe. We discussed and agreed the current behavior is OK. Autoselect on a probe takes you to the whole voltmeter node or voltmeter, and we agree that is nice and ok.

arouinfar commented 1 year ago

@samreid @matthew-blackman I verified the change in https://github.com/phetsims/circuit-construction-kit-common/issues/836#issuecomment-1421603219 and those related to #934. The only thing missing that should be featured is model.meters.ammeter*.probeConnectionProperty.

Once that's addressed, we should be good to close this issue.

samreid commented 1 year ago

OK I featured that in the commits, closing.