define( ["./DataStoreUtils.js"], function( DataStoreUtils ) { "use strict"; function Control() { }; Control.prototype.initialize = function( oControlHost, fnDoneInitializing ) { this.m_oControlHost = oControlHost; this.m_oConfiguration = this.m_oControlHost.configuration || {}; fnDoneInitializing(); }; Control.prototype.setData = function( oControlHost, oDataStore ) { this.m_oDataStore = oDataStore; this.m_oJson = DataStoreUtils.extractData( oDataStore ); this.m_aCascadingColumnsThatSetAParameter = []; this.m_aCascadingColumns = this.m_oConfiguration["cascading columns"] || this.m_oJson.columns.map( function( oColumn ) { return { "use": oColumn.name, "display": oColumn.name, "parameter": oColumn.name } } ); this.m_aCascadingColumns.forEach( function( oColumn, iIndex ) { oColumn.iIndex = iIndex; oColumn.use = oColumn.use || this.m_oDataStore.columnNames[iIndex]; oColumn.iUseColumnIndex = this.m_oDataStore.getColumnIndex( oColumn.use ); oColumn.display = oColumn.display || oColumn.use; oColumn.iDisplayColumnIndex = this.m_oDataStore.getColumnIndex( oColumn.display ); oColumn.oSelectedValueIndexes = new Set(); if ( oColumn.parameter ) { this.m_aCascadingColumnsThatSetAParameter.push( oColumn ); var oParameter = this.m_oControlHost.getParameter( oColumn.parameter ); if ( oParameter ) { oParameter.values.forEach( function( oValue ) { oColumn.oSelectedValueIndexes.add( this.m_oJson.columns[oColumn.iUseColumnIndex].values.indexOf( oValue.use ) ); }, this ); } } }, this ); this.m_aCascadingColumns[0].oCascadeJson = this.m_oJson; }; Control.prototype.draw = function( oControlHost ) { var bVertical = !!this.m_oConfiguration.vertical; var sId = '#' + oControlHost.container.id + ' '; var sHtml = ''; sHtml += '
'; var sDefaultMinWidth = this.m_oConfiguration.minWidth || '150px'; for ( var i = 0; i < this.m_aCascadingColumns.length; i++ ) { var oCascadingColumn = this.m_aCascadingColumns[i]; sHtml += '
'; sHtml += '
' + this.HTMLEncode( oCascadingColumn.label || oCascadingColumn.display ) + ':
'; sHtml += '