Skip to content

Commit

Permalink
basic instrumentation of My Solution screen, #92
Browse files Browse the repository at this point in the history
  • Loading branch information
pixelzoom committed Jan 30, 2020
1 parent 2902127 commit 8112881
Show file tree
Hide file tree
Showing 4 changed files with 1,440 additions and 23 deletions.
1 change: 1 addition & 0 deletions js/macro/view/NeutralIndicatorNode.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright 2013-2020, University of Colorado Boulder

//TODO #92 how to totally disable this feature from PhET-iO?
/**
* Indicator that the solution is neutral.
* This consists of 'Neutral' on a translucent background.
Expand Down
4 changes: 3 additions & 1 deletion js/mysolution/model/MySolutionModel.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ define( require => {
this.beaker = new Beaker( new Vector2( 750, 580 ), new Dimension2( 450, 300 ) );

// @public Solution in the beaker
this.solution = new Solution( new Property( Solute.createCustom( 7 ) ), 0.5, 0, this.beaker.volume );
this.solution = new Solution( new Property( Solute.createCustom( 7 ) ), 0.5, 0, this.beaker.volume, {
tandem: tandem.createTandem( 'solution' )
} );
}

/**
Expand Down
47 changes: 35 additions & 12 deletions js/mysolution/view/MySolutionScreenView.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,43 +52,66 @@ define( require => {
const viewProperties = new PHScaleViewProperties( tandem.createTandem( 'viewProperties' ) );

// beaker
const beakerNode = new BeakerNode( model.beaker, modelViewTransform );
const solutionNode = new SolutionNode( model.solution, model.beaker, modelViewTransform );
const volumeIndicatorNode = new VolumeIndicatorNode( model.solution.volumeProperty, model.beaker, modelViewTransform );
const beakerNode = new BeakerNode( model.beaker, modelViewTransform, {
tandem: tandem.createTandem( 'beakerNode' )
} );

// solution in the beaker
const solutionNode = new SolutionNode( model.solution, model.beaker, modelViewTransform, {
tandem: tandem.createTandem( 'solutionNode' )
} );

// volume indicator along the right edge of the beaker
const volumeIndicatorNode = new VolumeIndicatorNode( model.solution.volumeProperty, model.beaker, modelViewTransform, {
tandem: tandem.createTandem( 'volumeIndicatorNode' )
} );

// 'H3O+/OH- ratio' representation
const ratioNode = new RatioNode( model.beaker, model.solution, modelViewTransform, { visible: viewProperties.ratioVisibleProperty.get() } );
const ratioNode = new RatioNode( model.beaker, model.solution, modelViewTransform, {
visible: viewProperties.ratioVisibleProperty.get(),
tandem: tandem.createTandem( 'ratioNode' )
} );
viewProperties.ratioVisibleProperty.linkAttribute( ratioNode, 'visible' );

// 'molecule count' representation
const moleculeCountNode = new MoleculeCountNode( model.solution );
const moleculeCountNode = new MoleculeCountNode( model.solution, {
tandem: tandem.createTandem( 'moleculeCountNode' )
} );
viewProperties.moleculeCountVisibleProperty.linkAttribute( moleculeCountNode, 'visible' );

// beaker controls
const beakerControlPanel = new BeakerControlPanel( viewProperties.ratioVisibleProperty, viewProperties.moleculeCountVisibleProperty,
{ maxWidth: 0.85 * beakerNode.width } );
const beakerControlPanel = new BeakerControlPanel(
viewProperties.ratioVisibleProperty,
viewProperties.moleculeCountVisibleProperty, {
maxWidth: 0.85 * beakerNode.width,
tandem: tandem.createTandem( 'beakerControlPanel' )
} );

// graph
const graphNode = new GraphNode( model.solution, viewProperties.graphExpandedProperty, {
isInteractive: true,
logScaleHeight: 565
logScaleHeight: 565,
tandem: tandem.createTandem( 'graphNode' )
} );

// pH meter
const pHMeterTop = 15;
const pHMeterNode = new PHMeterNode( model.solution,
modelViewTransform.modelToViewY( model.beaker.position.y ) - pHMeterTop,
viewProperties.pHMeterExpandedProperty,
{ attachProbe: 'right', isInteractive: true }
);
viewProperties.pHMeterExpandedProperty, {
attachProbe: 'right',
isInteractive: true,
tandem: tandem.createTandem( 'pHMeterNode' )
} );

const resetAllButton = new ResetAllButton( {
scale: 1.32,
listener: () => {
model.reset();
viewProperties.reset();
graphNode.reset();
}
},
tandem: tandem.createTandem( 'resetAllButton' )
} );

// Parent for all nodes added to this screen
Expand Down
Loading

0 comments on commit 8112881

Please sign in to comment.