private void BuildGroentijdenMatrix() { if (GroentijdenSets == null || GroentijdenSets.Count == 0) { SetNames.Clear(); FasenNames.Clear(); GroentijdenMatrix = new GroentijdViewModel[0, 0]; RaisePropertyChanged(nameof(SetNames)); RaisePropertyChanged(nameof(FasenNames)); RaisePropertyChanged(nameof(GroentijdenMatrix)); } foreach (var mgsvm in GroentijdenSets) { mgsvm.Groentijden.BubbleSort(); mgsvm.GroentijdenSet.Groentijden.BubbleSort(); } SetNames.Clear(); FasenNames.Clear(); var fccount = _Controller.Fasen.Count; if (fccount == 0 || GroentijdenSets == null || GroentijdenSets.Count == 0) { return; } GroentijdenMatrix = new GroentijdViewModel[GroentijdenSets.Count, fccount]; int i = 0, j = 0; foreach (var mgsvm in GroentijdenSets) { SetNames.Add(mgsvm.GroentijdenSet.Naam); j = 0; foreach (var mgvm in mgsvm.Groentijden) { // Build fasen list for row headers from first set if (i == 0) { FasenNames.Add(mgvm.FaseCyclus); } // set data in bound matrix if (j < fccount) { GroentijdenMatrix[i, j] = mgvm; } else { throw new IndexOutOfRangeException(); } j++; } i++; } RaisePropertyChanged(nameof(SetNames)); RaisePropertyChanged(nameof(FasenNames)); RaisePropertyChanged(nameof(GroentijdenMatrix)); }
public void BuildGroentijdenMatrix() { if (GroentijdenSets == null || GroentijdenSets.Count == 0) { return; } foreach (GroentijdenSetViewModel mgsvm in GroentijdenSets) { #warning CHECK > why is this needed? It's double, only the first one should be necessary. mgsvm.GroentijdenSetList.BubbleSort(); if (!mgsvm.GroentijdenSet.Groentijden.IsSorted()) { mgsvm.GroentijdenSet.Groentijden.BubbleSort(); } } SetNames.Clear(); FasenNames.Clear(); int fccount = _Controller.Fasen.Count; if (fccount == 0 || GroentijdenSets == null || GroentijdenSets.Count == 0) { return; } GroentijdenMatrix = new GroentijdViewModel[GroentijdenSets.Count, fccount]; int i = 0, j = 0; foreach (GroentijdenSetViewModel mgsvm in GroentijdenSets) { SetNames.Add(mgsvm.GroentijdenSet.Naam); j = 0; foreach (GroentijdViewModel mgvm in mgsvm.GroentijdenSetList) { // Build fasen list for row headers from first set if (i == 0) { FasenNames.Add(mgvm.FaseCyclus.Replace(SettingsProvider.Instance.GetFaseCyclusDefinePrefix(), "")); } // set data in bound matrix if (j < fccount) { GroentijdenMatrix[i, j] = mgvm; } else { throw new NotImplementedException(); } j++; } i++; } OnPropertyChanged("SetNames"); OnPropertyChanged("FasenNames"); OnPropertyChanged("GroentijdenMatrix"); }
/// <summary> /// Builds a new string[,] to be exposed to the View. The 2D array is filled with data /// from the collection of FaseCyclusViewModel, and then from the collection of ConflictViewModel /// they contain. /// </summary> public void BuildConflictMatrix() { if (_Controller == null || _Controller.Fasen == null || _Controller.Fasen.Count <= 0) { return; } int fccount = Fasen.Count; _FasenNames = new ObservableCollection <string>(); foreach (FaseCyclusModel fcvm in Fasen) { FasenNames.Add(fcvm.Naam); } OnPropertyChanged("FasenNames"); if (fccount == 0) { ConflictMatrix = null; return; } ConflictMatrix = new SynchronisatieViewModel[fccount, fccount]; for (int fcm_from = 0; fcm_from < fccount; ++fcm_from) { for (int fcm_to = 0; fcm_to < fccount; ++fcm_to) { if (ConflictMatrix[fcm_from, fcm_to] == null) { if (fcm_from == fcm_to) { ConflictMatrix[fcm_from, fcm_to] = new SynchronisatieViewModel(true); } else { ConflictMatrix[fcm_from, fcm_to] = new SynchronisatieViewModel(); ConflictMatrix[fcm_from, fcm_to].FaseVan = Fasen[fcm_from].Define; ConflictMatrix[fcm_from, fcm_to].FaseNaar = Fasen[fcm_to].Define; } } foreach (ConflictModel cm in _Controller.InterSignaalGroep.Conflicten) { if (Fasen[fcm_from].Define == cm.FaseVan && Fasen[fcm_to].Define == cm.FaseNaar) { ConflictMatrix[fcm_from, fcm_to].Conflict = cm; break; } } foreach (NaloopModel nm in _Controller.InterSignaalGroep.Nalopen) { if (Fasen[fcm_from].Define == nm.FaseVan && Fasen[fcm_to].Define == nm.FaseNaar) { ConflictMatrix[fcm_from, fcm_to].Naloop = nm; if (ConflictMatrix[fcm_to, fcm_from] == null) { ConflictMatrix[fcm_to, fcm_from] = new SynchronisatieViewModel(); ConflictMatrix[fcm_to, fcm_from].FaseVan = Fasen[fcm_from].Define; ConflictMatrix[fcm_to, fcm_from].FaseNaar = Fasen[fcm_to].Define; } ConflictMatrix[fcm_to, fcm_from].HasOppositeNaloop = true; break; } } foreach (GelijkstartModel gm in _Controller.InterSignaalGroep.Gelijkstarten) { if (Fasen[fcm_from].Define == gm.FaseVan && Fasen[fcm_to].Define == gm.FaseNaar) { ConflictMatrix[fcm_from, fcm_to].Gelijkstart = gm; break; } } foreach (VoorstartModel vm in _Controller.InterSignaalGroep.Voorstarten) { if (Fasen[fcm_from].Define == vm.FaseVan && Fasen[fcm_to].Define == vm.FaseNaar) { ConflictMatrix[fcm_from, fcm_to].Voorstart = vm; if (ConflictMatrix[fcm_to, fcm_from] == null) { ConflictMatrix[fcm_to, fcm_from] = new SynchronisatieViewModel(); ConflictMatrix[fcm_to, fcm_from].FaseVan = Fasen[fcm_from].Define; ConflictMatrix[fcm_to, fcm_from].FaseNaar = Fasen[fcm_to].Define; } ConflictMatrix[fcm_to, fcm_from].HasOppositeVoorstart = true; break; } } if (!ConflictMatrix[fcm_from, fcm_to].IsOK()) { throw new NotImplementedException(); } ConflictMatrix[fcm_from, fcm_to].DisplayType = this.DisplayType; } } OnPropertyChanged("ConflictMatrix"); if (ConflictMatrix != null && ConflictMatrix.Length > 0) { SelectedSynchronisatie = ConflictMatrix[0, 0]; } }
/// <summary> /// Builds a new string[,] to be exposed to the View. The 2D array is filled with data /// from the collection of FaseCyclusViewModel, and then from the collection of ConflictViewModel /// they contain. /// </summary> public void BuildConflictMatrix() { if (_Controller == null || _Controller.Fasen == null || _Controller.Fasen.Count <= 0) { ConflictMatrix = null; RaisePropertyChanged("ConflictMatrix"); return; } var fccount = Fasen.Count; _FasenNames = new ObservableCollection <string>(); foreach (var fcvm in Fasen) { FasenNames.Add(fcvm.Naam); } RaisePropertyChanged("FasenNames"); ConflictMatrix = new SynchronisatieViewModel[fccount, fccount]; for (var fcm_from = 0; fcm_from < fccount; ++fcm_from) { for (var fcm_to = 0; fcm_to < fccount; ++fcm_to) { if (ConflictMatrix[fcm_from, fcm_to] == null) { if (fcm_from == fcm_to) { ConflictMatrix[fcm_from, fcm_to] = new SynchronisatieViewModel(true); } else { ConflictMatrix[fcm_from, fcm_to] = new SynchronisatieViewModel(); ConflictMatrix[fcm_from, fcm_to].FaseVan = Fasen[fcm_from].Naam; ConflictMatrix[fcm_from, fcm_to].FaseNaar = Fasen[fcm_to].Naam; } } ConflictMatrix[fcm_from, fcm_to].DisplayType = this.DisplayType; } } foreach (var cm in _Controller.InterSignaalGroep.Conflicten) { foreach (var svm in ConflictMatrix) { if (svm.FaseVan == cm.FaseVan && svm.FaseNaar == cm.FaseNaar) { svm.Conflict = cm; break; } } } foreach (var nm in _Controller.InterSignaalGroep.Nalopen) { foreach (var svm in ConflictMatrix) { if (svm.FaseVan == nm.FaseVan && svm.FaseNaar == nm.FaseNaar) { svm.Naloop = nm; foreach (var svm_opp in ConflictMatrix) { if (svm_opp.FaseVan == nm.FaseNaar && svm_opp.FaseNaar == nm.FaseVan) { svm_opp.HasOppositeNaloop = true; break; } } break; } } } foreach (var gm in _Controller.InterSignaalGroep.Gelijkstarten) { foreach (var svm in ConflictMatrix) { if (svm.FaseVan == gm.FaseVan && svm.FaseNaar == gm.FaseNaar) { svm.Gelijkstart = gm; foreach (var svm_opp in ConflictMatrix) { if (svm_opp.FaseVan == gm.FaseNaar && svm_opp.FaseNaar == gm.FaseVan) { svm_opp.HasGelijkstart = true; svm_opp.Gelijkstart.GelijkstartOntruimingstijdFaseNaar = svm.Gelijkstart.GelijkstartOntruimingstijdFaseVan; svm_opp.Gelijkstart.GelijkstartOntruimingstijdFaseVan = svm.Gelijkstart.GelijkstartOntruimingstijdFaseNaar; svm_opp.Gelijkstart.DeelConflict = svm.Gelijkstart.DeelConflict; break; } } break; } } } foreach (var vm in _Controller.InterSignaalGroep.Voorstarten) { foreach (var svm in ConflictMatrix) { if (svm.FaseVan == vm.FaseVan && svm.FaseNaar == vm.FaseNaar) { svm.Voorstart = vm; foreach (var svm_opp in ConflictMatrix) { if (svm_opp.FaseVan == vm.FaseNaar && svm_opp.FaseNaar == vm.FaseVan) { svm_opp.HasOppositeVoorstart = true; break; } } } } } foreach (var lrm in _Controller.InterSignaalGroep.LateReleases) { foreach (var svm in ConflictMatrix) { if (svm.FaseVan == lrm.FaseVan && svm.FaseNaar == lrm.FaseNaar) { svm.LateRelease = lrm; foreach (var svm_opp in ConflictMatrix) { if (svm_opp.FaseVan == lrm.FaseNaar && svm_opp.FaseNaar == lrm.FaseVan) { svm_opp.HasOppositeLateRelease = true; break; } } } } } foreach (var mm in _Controller.InterSignaalGroep.Meeaanvragen) { foreach (var svm in ConflictMatrix) { if (svm.FaseVan == mm.FaseVan && svm.FaseNaar == mm.FaseNaar) { svm.Meeaanvraag = mm; foreach (var svm_opp in ConflictMatrix) { if (svm_opp.FaseVan == mm.FaseNaar && svm_opp.FaseNaar == mm.FaseVan) { svm_opp.HasOppositeMeeaanvraag = true; break; } } } } } RaisePropertyChanged("ConflictMatrix"); _MatrixChanged = false; if (SelectedSynchronisatie == null && ConflictMatrix != null && ConflictMatrix.GetLength(0) > 1 && ConflictMatrix.GetLength(1) > 1) { SelectedSynchronisatie = ConflictMatrix[0, 1]; } }