private void LoadSimulationCommandExecute(object obj) { var dialog = new OpenFileDialog() { DefaultExt = ".xml", Filter = "XML Files (.xml)|*.xml" }; if (dialog.ShowDialog() != true) { return; } ChunkControls.Clear(); xmlPath = dialog.FileName; var xml = File.ReadAllText(xmlPath); ParserResult = simulationCaseParser.Parse(xml); SimulationName = ParserResult.Name; foreach (var chunk in ParserResult.Chunks) { var chunkVm = new ChunkControlViewModel(this); foreach (var tEvent in chunk.GetEvents()) { // var actor = ParserResult.Actors.Find(x => x.Id == tEvent.RaisedByActorId); // var role = GetActorRole(actor.ActorKindId); // var actorVm = new ActorViewModel(actor.Id,actor.FullName,role.Name, role.Id); var tInstance = ParserResult.ProcessInstance.GetTransactionById(tEvent.TransactionInstanceId); // var tKind = ProcessKind.GetTransactionById(tInstance.TransactionKindId); var eventVm = new EventControlViewModel(chunkVm) { CreationTime = tEvent.Created.ToString(XmlParsersConfig.DateTimeFormat), SelectedCompletion = tEvent.Completion }; // eventVm.SelectedTransactionInstance = new TransactionViewModel(tInstance, tKind.Name); eventVm.SetSelectedTransactionInstance(tInstance.Id); eventVm.SetSelectedActor(tEvent.RaisedByActorId); chunkVm.Events.Add(new EventControl(eventVm)); } ChunkControls.Add(new ChunkControl(chunkVm)); } }
public EventControlViewModel(ChunkControlViewModel chunkControlViewModel) { this.chunkControlViewModel = chunkControlViewModel; RemoveMeCommand = new Command(RemoveMeCommandExecute); // TransactionEventTypes = new List<TransactionEventType>(Enum.GetValues(typeof(TransactionEventType)).Cast<TransactionEventType>()); TransactionCompletions = new List <TransactionCompletion>(Enum.GetValues(typeof(TransactionCompletion)).Cast <TransactionCompletion>()); Actors = new ObservableCollection <ActorViewModel>(); foreach (var actor in MainPageViewModel.ParserResult.Actors) { var role = MainPageViewModel.GetActorRole(actor.ActorKindId); Actors.Add(new ActorViewModel(actor.Id, actor.FullName, role.Name, role.Id)); } TransactionInstances = new ObservableCollection <TransactionViewModel>(); foreach (var instance in MainPageViewModel.ParserResult.ProcessInstance.GetTransactions()) { var kind = MainPageViewModel.ProcessKind.GetTransactionById(instance.TransactionKindId); var vm = new TransactionViewModel(instance, kind.Name); TransactionInstances.Add(vm); TreeStructureHelper.Traverse(instance, TransactionInstances, (i, list) => { var tKind = MainPageViewModel.ProcessKind.GetTransactionById(i.TransactionKindId); list.Add(new TransactionViewModel(i, tKind.Name)); }); } var lastChunk = MainPageViewModel.SecondLastChunk(); if (this.chunkControlViewModel.Events.Count > 1) { CreationTime = ((EventControlViewModel)chunkControlViewModel.Events[chunkControlViewModel.Events.Count - 2] .DataContext).CreationTime; } else if (lastChunk != null && lastChunk.Events.Count > 0) { CreationTime = ((EventControlViewModel)(lastChunk.Events[lastChunk.Events.Count - 1] .DataContext)).CreationTime; } else { CreationTime = "01-02-2018 15:34:23"; } }