Quintiq file version 2.0
|
#parent: #root
|
Method SelectScenario (
|
ScenarioMP scenario
|
) as Boolean id:Method_ApplicationMacroPlanner_SelectScenario
|
{
|
#keys: '[137862.0.9024813]'
|
Body:
|
[*
|
// Select the active MacroPlan based on passed in scenario
|
// Set active MacroPlan to the application
|
// ComponentMDS::Create( Application ) is not available in Editor -- still finding, if exist, all this code will be moved.
|
status := false;
|
|
if( not isnull( scenario ) )
|
{
|
editor := ExternalMDSEditor::Editor();
|
allinfo := editor.ObjectInfos();
|
|
mdsInfo := select ( allinfo, Elements, oinfo,
|
oinfo.MDSID().MDSKey() = scenario.DatasetMDSID()
|
or oinfo.Name() = scenario.DatasetName());
|
|
if ( not isnull( mdsInfo ) )
|
{
|
|
if( not mdsInfo.IsLoaded() )
|
{
|
scenario.SetAvailable( '' );
|
}
|
|
loop := true;
|
p := Progress::Level( 'Loading scenario...', 10 );
|
|
// changed the operation in "p.Current() < p.Maximum()" from <= to < as p.Maximum will never be reached
|
// causing an infinite loop when a dataset is no longer available
|
while( loop and p.Current() < p.Maximum() )
|
{
|
componentmds := ApplicationScope.ComponentMDS();
|
mdsinstance := select( componentmds, ComponentMDSKinds.ComponentMDSInstances, m, m.MDSID().MDSKey() = scenario.DatasetMDSID() );
|
|
if( not isnull( mdsinstance ) )
|
{
|
mdsinstance.ComponentMDSKind().SelectInstance( mdsinstance );
|
componentmds.Apply();
|
// To set the data holder if only a scenario has changed.
|
if( DataHolderActiveScenario.Data() <> scenario )
|
{
|
DataHolderActiveScenario.Data( scenario );
|
/*Setting the dataholder manually so that it can trigger the ondatachange for other dataholders that depend on it. When, this
|
dataholder is bind to extractor to retrieve MacroPlan automatically, it failed to trigger other dataholder ondatachange response when the MacroPlan first created.
|
*/
|
DataHolderMacroPlanner.Data( MacroPlan );
|
}
|
status := true;
|
loop := false;
|
}
|
p.Increment();
|
}
|
}
|
}
|
|
return status;
|
*]
|
}
|