phetsims / sun

User-interface components for PhET simulations, built on top of Scenery.
MIT License
4 stars 12 forks source link

Should CheckBox and other UI component LinkedElement property be phetioFeatured? #782

Open samreid opened 2 years ago

samreid commented 2 years ago

In https://github.com/phetsims/density-buoyancy-common/issues/74 @marlitas and I discovered that CheckBox linked element property is not phet-io featured. Is that by design? Should it be changed to phetioFeatured: true?

image
samreid commented 2 years ago

Mentioning @zepumph since he has worked in this area too.

arouinfar commented 2 years ago

Yes, that would be great. I didn't realize this was something that could be handled in common code since every UI component has a sim-specific property powering it.

samreid commented 2 years ago

I forgot that LinkedElement takes on the phetioFeatured value of the target element. Should we add an assertion that anything that gets added in a LinkedElement should be phetioFeatured: true? I'm not sure what else to do here (if we keep the constraint mentioned in the 1st sentence).

zepumph commented 2 years ago

Should we add an assertion that anything that gets added in a LinkedElement should be phetioFeatured: true

Yes, I think so.

samreid commented 2 years ago

I added a console.log to find all the un-featured core elements for linked elements. I ran the report on all phet-io-api-stable sims and got this result:

``` density.general.view.soundManager.enabledProperty density.general.view.soundManager.extraSoundEnabledProperty density.global.view.voicingManager.mainWindowVoicingEnabledProperty density.general.model.responseCollector.objectResponsesEnabledProperty density.general.model.responseCollector.contextResponsesEnabledProperty density.general.model.responseCollector.hintResponsesEnabledProperty density.global.view.voicingManager.voicePitchProperty density.global.view.voicingManager.voiceRateProperty density.global.view.voicingManager.voiceProperty density.introScreen.model.liquidMaterialProperty density.compareScreen.model.liquidMaterialProperty density.mysteryScreen.model.liquidMaterialProperty density.mysteryScreen.model.gravityProperty energyFormsAndChanges.general.view.soundManager.enabledProperty energyFormsAndChanges.general.view.soundManager.extraSoundEnabledProperty energyFormsAndChanges.global.view.voicingManager.mainWindowVoicingEnabledProperty energyFormsAndChanges.general.model.responseCollector.objectResponsesEnabledProperty energyFormsAndChanges.general.model.responseCollector.contextResponsesEnabledProperty energyFormsAndChanges.general.model.responseCollector.hintResponsesEnabledProperty energyFormsAndChanges.global.view.voicingManager.voicePitchProperty energyFormsAndChanges.global.view.voicingManager.voiceRateProperty energyFormsAndChanges.global.view.voicingManager.voiceProperty energyFormsAndChanges.introScreen.view.timeControlNode.playPauseStepButtons.enabledProperty energyFormsAndChanges.systemsScreen.model.energySources.faucetAndWater.activeProperty energyFormsAndChanges.systemsScreen.view.timeControlNode.playPauseStepButtons.enabledProperty friction.general.view.soundManager.enabledProperty friction.general.view.soundManager.extraSoundEnabledProperty friction.global.view.voicingManager.mainWindowVoicingEnabledProperty friction.general.model.responseCollector.objectResponsesEnabledProperty friction.general.model.responseCollector.contextResponsesEnabledProperty friction.general.model.responseCollector.hintResponsesEnabledProperty friction.global.view.voicingManager.voicePitchProperty friction.global.view.voicingManager.voiceRateProperty friction.global.view.voicingManager.voiceProperty graphingQuadratics.general.view.soundManager.enabledProperty graphingQuadratics.general.view.soundManager.extraSoundEnabledProperty graphingQuadratics.global.view.voicingManager.mainWindowVoicingEnabledProperty graphingQuadratics.general.model.responseCollector.objectResponsesEnabledProperty graphingQuadratics.general.model.responseCollector.contextResponsesEnabledProperty graphingQuadratics.general.model.responseCollector.hintResponsesEnabledProperty graphingQuadratics.global.view.voicingManager.voicePitchProperty graphingQuadratics.global.view.voicingManager.voiceRateProperty graphingQuadratics.global.view.voicingManager.voiceProperty gravityAndOrbits.general.view.soundManager.enabledProperty gravityAndOrbits.general.view.soundManager.extraSoundEnabledProperty gravityAndOrbits.global.view.voicingManager.mainWindowVoicingEnabledProperty gravityAndOrbits.general.model.responseCollector.objectResponsesEnabledProperty gravityAndOrbits.general.model.responseCollector.contextResponsesEnabledProperty gravityAndOrbits.general.model.responseCollector.hintResponsesEnabledProperty gravityAndOrbits.global.view.voicingManager.voicePitchProperty gravityAndOrbits.global.view.voicingManager.voiceRateProperty gravityAndOrbits.global.view.voicingManager.voiceProperty gravityAndOrbits.modelScreen.model.starPlanetScene.zoomLevelProperty gravityAndOrbits.modelScreen.model.starPlanetMoonScene.zoomLevelProperty gravityAndOrbits.modelScreen.model.planetMoonScene.zoomLevelProperty gravityAndOrbits.modelScreen.model.planetSatelliteScene.satellite.velocityProperty gravityAndOrbits.modelScreen.model.planetSatelliteScene.zoomLevelProperty gravityAndOrbits.modelScreen.view.timeControlNode.playPauseStepButtons.enabledProperty gravityAndOrbits.toScaleScreen.model.starPlanetScene.measuringTape.startPointProperty gravityAndOrbits.toScaleScreen.model.starPlanetScene.measuringTape.endPointProperty gravityAndOrbits.toScaleScreen.model.starPlanetScene.zoomLevelProperty gravityAndOrbits.toScaleScreen.model.starPlanetMoonScene.measuringTape.startPointProperty gravityAndOrbits.toScaleScreen.model.starPlanetMoonScene.measuringTape.endPointProperty gravityAndOrbits.toScaleScreen.model.starPlanetMoonScene.zoomLevelProperty gravityAndOrbits.toScaleScreen.model.planetMoonScene.measuringTape.startPointProperty gravityAndOrbits.toScaleScreen.model.planetMoonScene.measuringTape.endPointProperty gravityAndOrbits.toScaleScreen.model.planetMoonScene.zoomLevelProperty gravityAndOrbits.toScaleScreen.model.planetSatelliteScene.measuringTape.startPointProperty gravityAndOrbits.toScaleScreen.model.planetSatelliteScene.measuringTape.endPointProperty gravityAndOrbits.toScaleScreen.model.planetSatelliteScene.zoomLevelProperty gravityAndOrbits.toScaleScreen.view.timeControlNode.playPauseStepButtons.enabledProperty gravityForceLab.general.view.soundManager.enabledProperty gravityForceLab.general.view.soundManager.extraSoundEnabledProperty gravityForceLab.global.view.voicingManager.mainWindowVoicingEnabledProperty gravityForceLab.general.model.responseCollector.objectResponsesEnabledProperty gravityForceLab.general.model.responseCollector.contextResponsesEnabledProperty gravityForceLab.general.model.responseCollector.hintResponsesEnabledProperty gravityForceLab.global.view.voicingManager.voicePitchProperty gravityForceLab.global.view.voicingManager.voiceRateProperty gravityForceLab.global.view.voicingManager.voiceProperty moleculePolarity.general.view.soundManager.enabledProperty moleculePolarity.general.view.soundManager.extraSoundEnabledProperty moleculePolarity.global.view.voicingManager.mainWindowVoicingEnabledProperty moleculePolarity.general.model.responseCollector.objectResponsesEnabledProperty moleculePolarity.general.model.responseCollector.contextResponsesEnabledProperty moleculePolarity.general.model.responseCollector.hintResponsesEnabledProperty moleculePolarity.global.view.voicingManager.voicePitchProperty moleculePolarity.global.view.voicingManager.voiceRateProperty moleculePolarity.global.view.voicingManager.voiceProperty moleculePolarity.threeAtomsScreen.model.molecule.bondAB.angleProperty moleculePolarity.threeAtomsScreen.model.molecule.bondBC.angleProperty naturalSelection.general.view.soundManager.enabledProperty naturalSelection.general.view.soundManager.extraSoundEnabledProperty naturalSelection.global.view.voicingManager.mainWindowVoicingEnabledProperty naturalSelection.general.model.responseCollector.objectResponsesEnabledProperty naturalSelection.general.model.responseCollector.contextResponsesEnabledProperty naturalSelection.general.model.responseCollector.hintResponsesEnabledProperty naturalSelection.global.view.voicingManager.voicePitchProperty naturalSelection.global.view.voicingManager.voiceRateProperty naturalSelection.global.view.voicingManager.voiceProperty naturalSelection.introScreen.model.generationClock.timeInSecondsProperty naturalSelection.introScreen.model.bunnyCollection.liveBunnies.lengthProperty naturalSelection.introScreen.model.graphs.populationModel.xRangeProperty naturalSelection.introScreen.model.graphs.populationModel.dataProbe.offsetProperty naturalSelection.introScreen.model.generationClock naturalSelection.introScreen.model.graphs.populationModel.totalVisibleProperty naturalSelection.introScreen.model.graphs.populationModel.straightEarsVisibleProperty naturalSelection.introScreen.model.graphs.populationModel.floppyEarsVisibleProperty naturalSelection.introScreen.model.graphs.populationModel.shortTeethVisibleProperty naturalSelection.introScreen.model.graphs.populationModel.longTeethVisibleProperty naturalSelection.introScreen.model.graphs.populationModel.yZoomLevelProperty naturalSelection.introScreen.model.graphs.populationModel.dataProbe naturalSelection.introScreen.model.graphs.populationModel naturalSelection.introScreen.model.graphs.proportionsModel.earsVisibleProperty naturalSelection.introScreen.model.graphs.proportionsModel.teethVisibleProperty naturalSelection.introScreen.model.graphs.proportionsModel naturalSelection.introScreen.model.graphs.pedigreeModel.earsAllelesVisibleProperty naturalSelection.introScreen.model.graphs.pedigreeModel.teethAllelesVisibleProperty naturalSelection.labScreen.model.generationClock.timeInSecondsProperty naturalSelection.labScreen.model.bunnyCollection.liveBunnies.lengthProperty naturalSelection.labScreen.model.graphs.populationModel.xRangeProperty naturalSelection.labScreen.model.graphs.populationModel.dataProbe.offsetProperty naturalSelection.labScreen.model.generationClock naturalSelection.labScreen.model.graphs.populationModel.yZoomLevelProperty naturalSelection.labScreen.model.graphs.populationModel.dataProbe naturalSelection.labScreen.model.graphs.populationModel naturalSelection.labScreen.model.graphs.proportionsModel phScale.general.view.soundManager.enabledProperty phScale.general.view.soundManager.extraSoundEnabledProperty phScale.global.view.voicingManager.mainWindowVoicingEnabledProperty phScale.general.model.responseCollector.objectResponsesEnabledProperty phScale.general.model.responseCollector.contextResponsesEnabledProperty phScale.general.model.responseCollector.hintResponsesEnabledProperty phScale.global.view.voicingManager.voicePitchProperty phScale.global.view.voicingManager.voiceRateProperty phScale.global.view.voicingManager.voiceProperty phScale.macroScreen.model.dropper.enabledProperty phScale.macroScreen.model.dropper.visibleProperty phScale.macroScreen.model.waterFaucet.enabledProperty phScale.macroScreen.model.waterFaucet.flowRateProperty phScale.macroScreen.model.drainFaucet.enabledProperty phScale.macroScreen.model.drainFaucet.flowRateProperty phScale.microScreen.model.dropper.enabledProperty phScale.microScreen.model.dropper.visibleProperty phScale.microScreen.model.waterFaucet.enabledProperty phScale.microScreen.model.waterFaucet.flowRateProperty phScale.microScreen.model.drainFaucet.enabledProperty phScale.microScreen.model.drainFaucet.flowRateProperty phScaleBasics.general.view.soundManager.enabledProperty phScaleBasics.general.view.soundManager.extraSoundEnabledProperty phScaleBasics.global.view.voicingManager.mainWindowVoicingEnabledProperty phScaleBasics.general.model.responseCollector.objectResponsesEnabledProperty phScaleBasics.general.model.responseCollector.contextResponsesEnabledProperty phScaleBasics.general.model.responseCollector.hintResponsesEnabledProperty phScaleBasics.global.view.voicingManager.voicePitchProperty phScaleBasics.global.view.voicingManager.voiceRateProperty phScaleBasics.global.view.voicingManager.voiceProperty phScaleBasics.macroScreen.model.dropper.enabledProperty phScaleBasics.macroScreen.model.dropper.visibleProperty phScaleBasics.macroScreen.model.waterFaucet.enabledProperty phScaleBasics.macroScreen.model.waterFaucet.flowRateProperty phScaleBasics.macroScreen.model.drainFaucet.enabledProperty phScaleBasics.macroScreen.model.drainFaucet.flowRateProperty statesOfMatter.general.view.soundManager.enabledProperty statesOfMatter.general.view.soundManager.extraSoundEnabledProperty statesOfMatter.global.view.voicingManager.mainWindowVoicingEnabledProperty statesOfMatter.general.model.responseCollector.objectResponsesEnabledProperty statesOfMatter.general.model.responseCollector.contextResponsesEnabledProperty statesOfMatter.general.model.responseCollector.hintResponsesEnabledProperty statesOfMatter.global.view.voicingManager.voicePitchProperty statesOfMatter.global.view.voicingManager.voiceRateProperty statesOfMatter.global.view.voicingManager.voiceProperty statesOfMatter.statesScreen.model.temperatureSetPointProperty statesOfMatter.statesScreen.view.timeControlNode.playPauseStepButtons.enabledProperty statesOfMatter.phaseChangesScreen.model.temperatureSetPointProperty statesOfMatter.phaseChangesScreen.view.timeControlNode.playPauseStepButtons.enabledProperty statesOfMatter.interactionScreen.view.timeControlNode.playPauseStepButtons.enabledProperty statesOfMatterBasics.general.view.soundManager.enabledProperty statesOfMatterBasics.general.view.soundManager.extraSoundEnabledProperty statesOfMatterBasics.global.view.voicingManager.mainWindowVoicingEnabledProperty statesOfMatterBasics.general.model.responseCollector.objectResponsesEnabledProperty statesOfMatterBasics.general.model.responseCollector.contextResponsesEnabledProperty statesOfMatterBasics.general.model.responseCollector.hintResponsesEnabledProperty statesOfMatterBasics.global.view.voicingManager.voicePitchProperty statesOfMatterBasics.global.view.voicingManager.voiceRateProperty statesOfMatterBasics.global.view.voicingManager.voiceProperty statesOfMatterBasics.statesScreen.model.temperatureSetPointProperty statesOfMatterBasics.statesScreen.view.timeControlNode.playPauseStepButtons.enabledProperty statesOfMatterBasics.phaseChangesScreen.model.temperatureSetPointProperty statesOfMatterBasics.phaseChangesScreen.view.timeControlNode.playPauseStepButtons.enabledProperty statesOfMatterBasics.phaseChangesScreen.model.adjustableAtomInteractionStrengthProperty sun.general.view.soundManager.enabledProperty sun.general.view.soundManager.extraSoundEnabledProperty sun.global.view.voicingManager.mainWindowVoicingEnabledProperty sun.general.model.responseCollector.objectResponsesEnabledProperty sun.general.model.responseCollector.contextResponsesEnabledProperty sun.general.model.responseCollector.hintResponsesEnabledProperty sun.global.view.voicingManager.voicePitchProperty sun.global.view.voicingManager.voiceRateProperty sun.global.view.voicingManager.voiceProperty ```
There are 200 (some overlaps from voicingManager etc.). Do we want to feature all of these?
pixelzoom commented 2 years ago

It looks like grunt generate-phet-io-api has not been run for all sims. I made unrelated changes to natural-selection this morning, and phetioFeatured: true was added for a larger number of elements (all *StringProperty?) under general.string.joist.a11Y. This was unexpected and confusing.

The a11Y (capital 'Y') in general.string.joist.a11Y was also an unexpected diversion, see https://github.com/phetsims/chipper/issues/1311.

zepumph commented 2 years ago

has not been run for all sims

Yes! Agreed. Consistently it has been out of date for the last 2 weeks. The phetioFeatured was added in https://github.com/phetsims/chipper/commit/d2b106e08c42c805e082570609352aab5f39aefc for https://github.com/phetsims/axon/issues/408. The API files were just updated and committed in https://github.com/phetsims/phet-io-sim-specific/commit/1cc3810e5ce330135db6d9c77b7ec95091fe1cab to https://github.com/phetsims/chipper/issues/1311