Quintiq file version 2.0 #parent: #root Method UnloadDataset ( structured[LibOpt_SnapshotReplannableCopyDataset] snapshots ) id:Method_LibOpt_GlobalState_UnloadDataset { #keys: '[141860.2.581306648]' Body: [* // Unload the datasets that are attached to the LibOpt_SnapshotReplannableCopyDatasets loadedobjectinfos := ExternalMDSEditor::Editor().LoadedObjectInfos(); infocurrentdataset := loadedobjectinfos.Find( snapshots.First().MDSID() ); // Show a popup with a warning if you are trying to unload the currently selected dataset. traverse( snapshots, Elements, snapshot ) { if( infocurrentdataset.Name() = snapshot.DatasetName() ) { if ( MessageBox::Question( this, Translations::LibOpt_SnapshotReplannable_MessageBox_UnloadCurrentDataset(), '&Yes|&No' ) <> 0 ) { snapshots.Remove( snapshot ); } } } // The UnloadDatasetCopiesAndUpdateSnapshotStatus unloads all dataset copies. // When a dataset copy cannot be found, then the UnloadDatasetCopiesAndUpdateSnapshotStatus also updates all snapshots. // We both unload the datasets and update the snapshots in a single method to ensure that we only start 1 server transaction. // We cannot use the 'Group server calls in 1 transaction' checkbox, because UI methods (like this one) cannot be used when that checkbox is checked. isanydatasetdeleted := LibOpt_SnapshotReplannableCopyDataset::UnloadDatasetCopiesAndUpdateSnapshotStatus( snapshots ) if( isanydatasetdeleted ) { // Show a popup warning explaining that the status of the snapshots has been updated. MessageBox::Warning( this, Translations::LibOpt_SnapshotReplannable_MessageBox_UnexpectedStatus(), Translations::LibOpt_MessageBox_OK() ); } *] }