Пример #1
0
        public Alternatives(Criteria criteria, ReferenceRanking referenceRanking)
        {
            _criteria              = criteria;
            _referenceRanking      = referenceRanking;
            AlternativesCollection = new ObservableCollection <Alternative>();

            PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName != nameof(AlternativesCollection))
                {
                    return;
                }
                SetReferenceRankingUsingReferenceRankAlternativeProperty();
                InitializeCriteriaMinMaxUpdaterWatcher();
                InitializeReferenceRankingUpdaterWatcher();
            };

            _criteria.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName != nameof(_criteria.CriteriaCollection))
                {
                    return;
                }
                InitializeCriterionValueNameUpdaterWatcher();
            };

            InitializeCriteriaMinMaxUpdaterWatcher();
            InitializeCriterionValueNameUpdaterWatcher();
            InitializeReferenceRankingUpdaterWatcher();
        }
Пример #2
0
        public ReferenceRankingTabViewModel(ReferenceRanking referenceRanking, Alternatives alternatives)
        {
            Name             = "Reference Ranking";
            ReferenceRanking = referenceRanking;
            Alternatives     = alternatives;

            AlternativesWithoutRanksCollectionView = new ListCollectionView(Alternatives.AlternativesCollection)
            {
                Filter = o => ((Alternative)o).ReferenceRank == null
            };

            ReferenceRanking.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName != nameof(ReferenceRanking.RankingsCollection))
                {
                    return;
                }
                RefreshFilter();
                InitializeReferenceRankFilterWatchers();
            };

            Alternatives.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName != nameof(Alternatives.AlternativesCollection))
                {
                    return;
                }
                AlternativesWithoutRanksCollectionView = new ListCollectionView(Alternatives.AlternativesCollection)
                {
                    Filter = o => ((Alternative)o).ReferenceRank == null
                };
            };

            InitializeReferenceRankFilterWatchers();

            NewRank = new ObservableCollection <Alternative>();
            NewRank.CollectionChanged += (sender, args) =>
            {
                if (args.Action != NotifyCollectionChangedAction.Add)
                {
                    return;
                }
                // NewRank is cleared by AlternativeDroppedOnNewRank event handler, so we always have only one item in this collection
                ReferenceRanking.AddAlternativeToRank(NewRank[0], ReferenceRanking.RankingsCollection.Count);
            };

            RemoveRankCommand = new RelayCommand(rank => ReferenceRanking.RemoveRank((int)rank));
            RemoveAlternativeFromRankCommand = new RelayCommand(alternative =>
            {
                var alternativeToRemove = (Alternative)alternative;
                if (alternativeToRemove.ReferenceRank != null)
                {
                    ReferenceRanking.RemoveAlternativeFromRank(alternativeToRemove, (int)alternativeToRemove.ReferenceRank);
                }
            });
        }
Пример #3
0
 public Results CalculateResults(ReferenceRanking referenceRanking)
 {
     return(new Results());
 }
Пример #4
0
        public MainViewModel(IDialogCoordinator dialogCoordinator)
        {
            Criteria         = new Criteria();
            ReferenceRanking = new ReferenceRanking();
            Alternatives     = new Alternatives(Criteria, ReferenceRanking);
            Results          = new Results();

            _dialogCoordinator = dialogCoordinator;
            _saveData          = new SaveData(null, null);

            Tabs = new ObservableCollection <ITab>();
            Tabs.CollectionChanged += TabsCollectionChanged;
            ChartTabViewModels      = new ObservableCollection <ChartTabViewModel>();
            ShowTabCommand          = new RelayCommand(tabViewModel => ShowTab((ITab)tabViewModel));

            CriteriaTabViewModel         = new CriteriaTabViewModel(Criteria);
            AlternativesTabViewModel     = new AlternativesTabViewModel(Criteria, Alternatives);
            ReferenceRankingTabViewModel = new ReferenceRankingTabViewModel(ReferenceRanking, Alternatives);
            SettingsTabViewModel         = new SettingsTabViewModel();
            WelcomeTabViewModel          = new WelcomeTabViewModel();

            Criteria.CriteriaCollection.CollectionChanged                 += InstancePropertyChanged;
            Alternatives.AlternativesCollection.CollectionChanged         += InstancePropertyChanged;
            ReferenceRanking.RankingsCollection.CollectionChanged         += InstancePropertyChanged;
            Results.FinalRanking.FinalRankingCollection.CollectionChanged += InstancePropertyChanged;

            Criteria.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName != nameof(Criteria.CriteriaCollection))
                {
                    return;
                }
                InstancePropertyChanged();
                Criteria.CriteriaCollection.CollectionChanged += InstancePropertyChanged;
            };
            Alternatives.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName != nameof(Alternatives.AlternativesCollection))
                {
                    return;
                }
                InstancePropertyChanged();
                Alternatives.AlternativesCollection.CollectionChanged += InstancePropertyChanged;
            };
            ReferenceRanking.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName != nameof(ReferenceRanking.RankingsCollection))
                {
                    return;
                }
                InstancePropertyChanged();
                ReferenceRanking.RankingsCollection.CollectionChanged += InstancePropertyChanged;
            };
            Results.FinalRanking.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName != nameof(Results.FinalRanking.FinalRankingCollection))
                {
                    return;
                }
                InstancePropertyChanged();
                Results.FinalRanking.FinalRankingCollection.CollectionChanged += InstancePropertyChanged;
            };
        }