Beispiel #1
0
 private void OnDataCollectionChanged(object?sender, NotifyCollectionChangedEventArgs e)
 {
     if (e.Action == NotifyCollectionChangedAction.Add)
     {
         if (e.NewItems != null)
         {
             foreach (ConditionJsonData data in e.NewItems)
             {
                 PushAction(new ConditionsListHistoryAction(in data, e.NewStartingIndex, ListHistoryActionMode.ActionAdd, conditionsList));
             }
         }
     }
     else if (e.Action == NotifyCollectionChangedAction.Remove)
     {
         if (e.OldItems != null)
         {
             foreach (ConditionJsonData data in e.OldItems)
             {
                 PushAction(new ConditionsListHistoryAction(in data, e.OldStartingIndex, ListHistoryActionMode.ActionRemove, conditionsList));
             }
         }
     }
     else if (e.Action == NotifyCollectionChangedAction.Replace)
     {
         if (e.NewItems != null && e.OldItems != null && e.NewItems.Count == e.OldItems.Count)
         {
             for (int i = 0; i < e.NewItems.Count; ++i)
             {
                 ConditionJsonData oldItem = e.OldItems[i] is ConditionJsonData ? (ConditionJsonData)e.OldItems[i] ! : default;
                 ConditionJsonData newItem = e.NewItems[i] is ConditionJsonData ? (ConditionJsonData)e.NewItems[i] ! : default;
                 PushAction(new CondtionsListHistoryReplaceAction(in oldItem, in newItem, e.NewStartingIndex, conditionsList));
             }
         }
     }
 }
Beispiel #2
0
        private async Task AddNewItem()
        {
            var obj = new ConditionJsonData();

            obj.Id   = SourceItems.Max(x => x.Id) + 1;
            obj.Name = "CONDITION_";
            await OpenEditor(obj, true);
        }
        internal void UpdateCondition(ConditionJsonData data)
        {
            var old = conditionId;

            conditionId  = data.Id;
            readableHint = data.Description;
            RaisePropertyChanged(nameof(Readable));
            ConditionChanged?.Invoke(this, old, conditionId);
        }
Beispiel #4
0
        private async Task OpenEditor(ConditionJsonData item, bool isCreating)
        {
            var vm = new ConditionEditorViewModel(in item, windowManager, parameterFactory);

            if (await windowManager.ShowDialog(vm) && !vm.IsEmpty())
            {
                if (isCreating)
                {
                    SourceItems.Add(vm.Source.ToConditionJsonData());
                }
                else
                {
                    if (SelectedIndex >= 0)
                    {
                        SourceItems[SelectedIndex] = vm.Source.ToConditionJsonData();
                    }
                }
            }
        }
Beispiel #5
0
        private void SetParameterObjects(SmartBaseElement element, ConditionJsonData data)
        {
            element.Id           = data.Id;
            element.ReadableHint = data.Description;

            for (var i = 0; i < element.ParametersCount; ++i)
            {
                element.GetParameter(i).IsUsed = false;
            }

            if (data.Parameters == null)
            {
                return;
            }

            for (var i = 0; i < data.Parameters.Count; ++i)
            {
                string key = data.Parameters[i].Type;
                if (data.Parameters[i].Values != null)
                {
                    key = $"{data.Name}_{i}";
                    if (!parameterFactory.IsRegisteredLong(key))
                    {
                        parameterFactory.Register(key, new Parameter()
                        {
                            Items = data.Parameters[i].Values
                        });
                    }
                }

                IParameter <long> parameter = parameterFactory.Factory(key);

                element.GetParameter(i).Name      = data.Parameters[i].Name;
                element.GetParameter(i).IsUsed    = true;
                element.GetParameter(i).Parameter = parameter;
            }
        }