define( function ( require, exports, module ) {
|
|
var Group = require( 'graphic/group' );
|
|
var Connection = require( '../graffle/bezierconnection' );
|
|
var Query = require( '../pathdiagram/dataquery' );
|
|
var Rect = require( 'graphic/rect' );
|
|
var Text = require( 'graphic/text' );
|
|
var TextSpan = require( 'graphic/textspan' );
|
|
var PathNode = require( '../pathdiagram/pathnode' );
|
|
var colors = require( '../pathdiagram/colors' );
|
|
|
|
var rHeight = 25;
|
|
var rWidth = 250;
|
|
var rMargin = 10;
|
|
var lMargin = 100;
|
|
|
|
var LevelContainer = require( 'core/class' ).createClass( 'LevelContainer', {
|
|
base: Group,
|
|
constructor: function ( level ) {
|
|
this.callBase();
|
|
this.level = level;
|
|
},
|
|
getPathNodes: function() {
|
|
return this.getItems();
|
|
},
|
|
render: function( stream, x, yMiddle ) {
|
|
this.clear();
|
|
if(!stream) {
|
|
return;
|
|
}
|
|
|
|
var yStart, i, y, node, data, text, pBox;
|
|
|
|
yStart = yMiddle - ( rHeight + rMargin ) * (stream.length - 1) / 2;
|
|
|
|
for(i = 0, y = yStart; i < stream.length; i++, y += rHeight + rMargin) {
|
|
data = stream[ i ];
|
|
node = new PathNode( x, y, rWidth, rHeight, data, this.level === 0 );
|
|
this.addShape( node );
|
|
node.on('click', this.onNodeClick.bind(this));
|
|
}
|
|
},
|
|
onNodeClick: function( e ) {
|
|
var node = e.targetShape;
|
|
while( false === (node instanceof PathNode)) {
|
|
node = node.container;
|
|
}
|
|
if( this.selected != node ) {
|
|
this.select(node);
|
|
} else {
|
|
this.select(null);
|
|
}
|
|
},
|
|
select: function(node) {
|
|
if(this.level === 0 && node === null) {
|
|
return;
|
|
}
|
|
if(typeof(node) === 'number') {
|
|
node = this.getItem(node);
|
|
}
|
|
var last = this.selected;
|
|
if(this.selected) {
|
|
this.selected.unselect();
|
|
}
|
|
this.selected = node;
|
|
if(node) {
|
|
node.select();
|
|
this.levelWord = node.data.word;
|
|
}
|
|
this.trigger('selected', {
|
|
level: this.level,
|
|
levelContainer: this,
|
|
pathNode: node,
|
|
lastPathNode: last
|
|
});
|
|
},
|
|
getSelected: function() {
|
|
return this.selected;
|
|
}
|
|
} );
|
|
LevelContainer.RECT_SIZE = {
|
|
width: rWidth,
|
|
height: rHeight
|
|
};
|
|
return LevelContainer;
|
|
} );
|