Ejemplo n.º 1
0
        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");
        }
Ejemplo n.º 3
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)
            {
                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];
            }
        }
Ejemplo n.º 4
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];
            }
        }