phetsims / projectile-data-lab

"Projectile Data Lab" is an educational simulation in HTML5, by PhET Interactive Simulations.
GNU General Public License v3.0
0 stars 0 forks source link

Code Review Preview #183

Closed samreid closed 6 months ago

samreid commented 6 months ago

To begin a code review, the responsible developer should:


PhET Code-Review Checklist (a.k.a "CRC")

Specific Instructions

GitHub Issues

The following standard GitHub issues should exist. If these issues are missing, or have not been completed, pause code review until the issues have been created and addressed by the responsible dev.

Build and Run Checks

If any of these items fail, pause code review.

Memory Leaks

Please note that dynamic allocation/linking and disposal are not used in this sim. Models are created once. Views display DynamicProperties across models. The term "dispose" is forbidden via a lint rule.

Performance

Usability

Internationalization

Repository Structure

Coding Conventions

TypeScript Conventions

Math Libraries

IE11

Organization, Readability, and Maintainability

  public constructor( tickMarksVisibleProperty: Property<boolean>,
                      model: Pick<IntroModel, 'changeWaterLevel'>, // <-- Note the call site can pass the whole model, but we declare we will only use this part of it
                      waterCup: WaterCup, modelViewTransform: ModelViewTransform2,
                      providedOptions?: WaterCup3DNodeOptions ) {
cd {{repo}}/js ; wc -l `find . -name "*.ts" -print` | sort
``` ~/phet/root/projectile-data-lab/js$ wc -l `find . -name "*.ts" -print` | sort 9 ./common/model/MysteryOrCustom.ts 9 ./common/model/ScreenIdentifier.ts 9 ./common/model/SingleOrContinuous.ts 10 ./common/BinStrategy.ts 10 ./common/model/HistogramRepresentation.ts 10 ./projectileDataLab.ts 12 ./common-vsm/model/VSMFieldIdentifier.ts 13 ./common/model/HistogramData.ts 15 ./sampling/model/SamplingPhase.ts 19 ./common/model/LauncherConfiguration.ts 20 ./measures/view/MeasuresKeyboardHelpNode.ts 20 ./sampling/view/SamplingKeyboardHelpNode.ts 20 ./sources/view/SourcesKeyboardHelpNode.ts 20 ./variability/view/VariabilityKeyboardHelpNode.ts 25 ./common/view/PDLText.ts 27 ./common/view/PDLKeyboardHelpNode.ts 27 ./sampling/view/SamplingKeyboardShortcutsHelpSection.ts 28 ./common/view/PDLCheckboxRow.ts 28 ./common/view/SectionMysteryLauncher.ts 30 ./common-vsm/view/VSMKeyboardShortcutsHelpSection.ts 30 ./common/view/MysteryLauncherIcon.ts 31 ./common/view/MeanIndicatorNode.ts 34 ./common/view/PDLPanel.ts 37 ./variability/view/VariabilityLaunchPanel.ts 38 ./common/PDLUtils.ts 38 ./sources/view/SourcesLaunchPanel.ts 39 ./common-sm/model/SMField.ts 39 ./measures/MeasuresScreen.ts 39 ./sampling/SamplingScreen.ts 39 ./sources/SourcesScreen.ts 39 ./variability/VariabilityScreen.ts 40 ./common-sm/model/SMModel.ts 40 ./common-vsm/view/VSMLaunchPanel.ts 41 ./common/view/PDLRectangularRadioButtonGroup.ts 43 ./measures/view/MeasuresLaunchPanel.ts 43 ./variability/model/VariabilityModel.ts 44 ./common/view/PDLLaunchPanel.ts 45 ./sampling/view/SamplingLaunchPanel.ts 47 ./common-vsm/view/LauncherFlashNode.ts 47 ./common/model/MeanTone.ts 49 ./common/view/HistogramRepresentationIconNode.ts 49 ./common/view/PDLPanelSection.ts 50 ./common-sm/view/SectionCustomLauncher.ts 50 ./common/model/ProjectileType.ts 51 ./common-vsm/view/VSMHistogramNode.ts 52 ./common/view/HistogramAccordionBox.ts 52 ./sampling/view/SectionSampleSize.ts 54 ./common-vsm/view/VSMFieldSignNode.ts 54 ./common/model/ProjectileSound.ts 55 ./projectile-data-lab-main.ts 57 ./sources/model/SourcesModel.ts 61 ./common-vsm/model/LauncherMechanism.ts 65 ./sampling/view/SamplingFieldSignNode.ts 69 ./measures/view/MeasuresInteractiveToolPanel.ts 74 ./common-vsm/view/PDLStopwatchNode.ts 75 ./variability/view/VariabilityScreenView.ts 76 ./measures/view/MeasuresStaticToolPanel.ts 77 ./common/view/SectionLauncherConfiguration.ts 79 ./common-sm/view/CustomLauncherTypeRadioButtonGroup.ts 84 ./common/model/PDLEventTimer.ts 84 ./common/view/SectionProjectileType.ts 86 ./sampling/view/SamplingCanvasNode.ts 87 ./common/PDLQueryParameters.ts 88 ./sources/view/SourcesScreenView.ts 92 ./ProjectileDataLabStrings.ts 92 ./common/view/LauncherIconNode.ts 95 ./common-vsm/view/FieldRadioButtonGroup.ts 96 ./common/view/LaunchButton.ts 97 ./common/view/FieldOverlayNode.ts 98 ./common/view/SimulationPreferencesContentNode.ts 104 ./common-vsm/view/VSMCanvasNode.ts 105 ./common/PDLConstants.ts 105 ./sampling/view/SamplingHistogramNode.ts 110 ./sampling/view/SamplingAccordionBox.ts 111 ./common-vsm/view/TimeDisplayNode.ts 111 ./measures/view/SectionAnyLauncher.ts 112 ./common-vsm/view/InteractiveToolPanel.ts 117 ./common/view/FieldSignNode.ts 119 ./common/model/Launcher.ts 119 ./common/view/BinControlNode.ts 120 ./measures/view/MeasuresScreenView.ts 132 ./common-vsm/view/AngleStabilizerSection.ts 132 ./common/view/MysteryLauncherRadioButtonGroupWrapper.ts 135 ./common/model/Histogram.ts 136 ./common/view/HistogramCanvasPainter.ts 138 ./measures/model/MeasuresField.ts 143 ./common-vsm/view/StaticToolPanel.ts 143 ./measures/model/IntervalTool.ts 150 ./common-vsm/view/SpeedToolNode.ts 151 ./common/view/SelectorNode.ts 156 ./sampling/view/SampleSelectorNode.ts 157 ./common/view/PDLCanvasNode.ts 159 ./common-vsm/view/AngleToolNode.ts 162 ./common/model/HistogramSonifier.ts 163 ./common/view/FieldNode.ts 163 ./measures/view/MeasuresHistogramNode.ts 167 ./common/view/PDLScreenIconFactory.ts 190 ./measures/model/MeasuresModel.ts 195 ./common/model/PDLModel.ts 202 ./common-vsm/view/ProjectileSelectorNode.ts 204 ./common-vsm/view/CustomLauncherNode.ts 212 ./sampling/view/SampleSizeThumbnailNode.ts 213 ./common/model/Projectile.ts 222 ./common/PDLColors.ts 234 ./common-vsm/model/VSMField.ts 242 ./measures/view/DataMeasuresOverlay.ts 245 ./sampling/view/SamplingScreenView.ts 264 ./common/view/PDLScreenView.ts 273 ./sampling/model/SamplingModel.ts 284 ./common-vsm/model/VSMModel.ts 318 ./common-vsm/view/HeatMapToolNode.ts 338 ./common-vsm/view/VSMScreenView.ts 348 ./common/model/Field.ts 363 ./common/view/LauncherNode.ts 383 ./common/view/HistogramNode.ts 388 ./sampling/model/SamplingField.ts 418 ./measures/view/IntervalToolNode.ts 12458 total ```

Accessibility

This section may be omitted if the sim has not been instrumented with accessibility features. Accessibility includes various features, not all are always include. Ignore sections that do not apply.

General

Alternative Input

PhET-iO

This section may be omitted if the sim has not been instrumented for PhET-iO, but is likely good to glance at no matter.

samreid commented 6 months ago

@pixelzoom started code review in https://github.com/phetsims/projectile-data-lab/issues/32, we will continue there. Closing.