Example #1
0
        public bool ProcessActions(IObjectViewModel viewModel)
        {
            var actions = GetActions((IActionProperties)viewModel);

            if (actions == null)
            {
                ErrorMessage = $"Ошибка запроса действий у объекта \"{viewModel.Properties.Name}\"";
                return(false);
            }

            var executableActions = actions
                                    .Where(action => !action.HasCondition || ConditionIsTrue(action, viewModel))
                                    .ToList();

            if (executableActions.Count > 0)
            {
                foreach (var action in executableActions)
                {
                    ApplyActionResult(action.Result);
                }
            }

            _variablesRepository.UpdateAllFormattedValues();
            UpdateAllFormattedText();
            _dataProvider.ProjectRepository.ProjectSettings.UpdateTitle();
            return(true);
        }
        private void SetSelected(IObjectViewModel viewModel)
        {
            if (viewModel == null)
            {
                // Сняли выделение
                if (_selected != null && HasChanges)
                {
                    AddToBuffer(_selected);
                }
                _selected              = null;
                IsSet                  = false;
                VariableIsChanged      = false;
                AnotherFieldsIsChanged = false;
                return;
            }

            //_variablesRepository.VariableChanged -= UpdateVariable;
            //_variablesRepository.VariableChanged += UpdateVariable;
            var saved = _unsavedChanges.FirstOrDefault(t => t.Properties.Id == viewModel.Properties.Id);

            _selected = saved ?? viewModel.Clone();

            RaisePropertyChanged(nameof(Id));
            RaisePropertyChanged(nameof(Name));
            RaisePropertyChanged(nameof(Type));
            RaisePropertyChanged(nameof(Text));
            RaisePropertyChanged(nameof(IsVisible));
            RaisePropertyChanged(nameof(IsRequired));
            RaisePropertyChanged(nameof(CanBeRequired));
            RaisePropertyChanged(nameof(IsTextBox));
            RaisePropertyChanged(nameof(IsRadioButton));

            if (_selected is IActionProperties)
            {
                HasVariable = true;
                InvariantVariable.Variable = ((IActionProperties)_selected).ActionProperties.Variable;

                var vm      = (IActionProperties)_selected;
                var actions = vm.ActionProperties.Actions.ToList();
                Actions.Clear();

                if (actions.Count > 0)
                {
                    foreach (var action in actions)
                    {
                        Actions.Add(action);
                    }
                }
            }
            else
            {
                Actions.Clear();
                HasVariable = false;
            }

            IsSet              = true;
            HasChanges         = saved != null;
            _variableIsChanged = false;
        }
Example #3
0
        public string GetObjectText(IObjectViewModel viewModel, bool isFormattedText = false)
        {
            if (!(viewModel is ITextProperties))
            {
                return(null);
            }

            var vm = (ITextProperties)viewModel;

            return(isFormattedText ? vm.TextProperties.FormattedText : vm.TextProperties.Text);
        }
Example #4
0
        public bool Update(IObjectViewModel buffer)
        {
            var viewModel = Find(buffer.Properties.Id);

            if (viewModel == null)
            {
                return(true);
            }

            var nameIsChanged = !Common.IsSameName(buffer.Properties.Name, viewModel.Properties.Name);

            if (nameIsChanged)
            {
                if (NameExists(buffer.Properties.Name))
                {
                    ErrorMessage = $"Объект с именем \"{buffer.Properties.Name}\" уже существует.";
                    return(false);
                }

                UpdateAllAssignedActions(viewModel.Properties.Name, buffer.Properties.Name);
            }

            if (viewModel is RadioViewModel)
            {
                SelectOnlyOneRadioInGroup((RadioViewModel)buffer);
            }

            if (viewModel is IActionProperties && buffer is IActionProperties)
            {
                var vm  = (IActionProperties)viewModel;
                var buf = (IActionProperties)buffer;

                var variableIsChanged = vm.ActionProperties.Variable != null &&
                                        !vm.ActionProperties.Variable.IsEqualTo(buf.ActionProperties.Variable);
                if (variableIsChanged)
                {
                    var oldVariableName =
                        !Common.IsSameName(buf.ActionProperties.Variable.Name, vm.ActionProperties.Variable.Name)
                            ? vm.ActionProperties.Variable.Name
                            : null;
                    if (!_variablesRepository.AddOrUpdate(buf.ActionProperties.Variable, oldVariableName))
                    {
                        ErrorMessage = _variablesRepository.ErrorMessage;
                        return(false);
                    }
                }
            }

            viewModel.Update(buffer);
            Select(viewModel);
            ObjectModified?.Invoke(viewModel.Properties.Id);
            return(true);
        }
        public void Update(IObjectViewModel buffer)
        {
            if (!(buffer is CheckBoxViewModel))
            {
                return;
            }
            var viewModel = (CheckBoxViewModel)buffer;

            Properties.Update(viewModel.Properties);
            TextProperties.Update(viewModel.TextProperties);
            ActionProperties.Update(viewModel.ActionProperties);
        }
Example #6
0
        public void Update(IObjectViewModel buffer)
        {
            if (!(buffer is LabelViewModel))
            {
                return;
            }
            var viewModel = (LabelViewModel)buffer;

            Properties.Update(viewModel.Properties);
            TextProperties.Update(viewModel.TextProperties);
            RaisePropertyChanged(nameof(Color));
        }
        public void Update(IObjectViewModel buffer)
        {
            if (!(buffer is DatePickerViewModel))
            {
                return;
            }
            var viewModel = (DatePickerViewModel)buffer;

            Properties.Update(viewModel.Properties);
            TextProperties.Update(viewModel.TextProperties);
            ActionProperties.Update(viewModel.ActionProperties);
            IsRequired = viewModel.IsRequired;
        }
Example #8
0
        public void Update(IObjectViewModel buffer)
        {
            if (!(buffer is RadioViewModel))
            {
                return;
            }
            var viewModel = (RadioViewModel)buffer;

            Properties.Update(viewModel.Properties);
            GroupName = viewModel.GroupName;
            TextProperties.Update(viewModel.TextProperties);
            ActionProperties.Update(viewModel.ActionProperties);
        }
Example #9
0
        public void Update(IObjectViewModel buffer)
        {
            if (!(buffer is TextBoxViewModel))
            {
                return;
            }
            var viewModel = (TextBoxViewModel)buffer;

            Properties.Update(viewModel.Properties);
            Text        = viewModel.Text;
            IsMultiline = viewModel.IsMultiline;
            IsRequired  = viewModel.IsRequired;
            ActionProperties.Update(viewModel.ActionProperties);
        }
Example #10
0
 private bool ConditionIsTrue(ObjectAction action, IObjectViewModel selector)
 {
     if (action.Condition.IsVariableTarget)
     {
         var variableName   = ((IActionProperties)selector).ActionProperties.Variable.Name;
         var targetVariable = _variablesRepository.Find(variableName);
         if (targetVariable == null)
         {
             // todo error
             return(false);
         }
         return(ConditionIsTrue(targetVariable, action.Condition));
     }
     return(ConditionIsTrue(selector, action.Condition));
 }
        private void OnObjectSelected(IObjectViewModel selectedObject)
        {
            if (selectedObject == null)
            {
                return;
            }
            if (Operation != ActionOperation.SetObjectText && Operation != ActionOperation.SetVisibility)
            {
                return;
            }
            var selector = TargetNames.FirstOrDefault(t => t == selectedObject.Properties.Name);

            if (selector != null)
            {
                TargetName = selector;
            }
        }
        private void AddToBuffer(IObjectViewModel selected)
        {
            if (_unsavedChanges.Count == 0)
            {
                _unsavedChanges.Add(selected);
                return;
            }

            var saved = _unsavedChanges.FirstOrDefault(t => t.Properties.Id == selected.Properties.Id);

            if (saved != null)
            {
                _unsavedChanges.Remove(saved);
            }

            _unsavedChanges.Add(selected);
        }
        private void OnObjectSelected(IObjectViewModel formObject)
        {
            if (formObject?.Properties == null)
            {
                OnUnselected();
                return;
            }

            if (formObject.Properties.FontSettings == null)
            {
                formObject.Properties.FontSettings = new FontSettings();
            }

            FontIsSet    = true;
            FontSettings = formObject.Properties.FontSettings;
            UpdateView();
        }
Example #14
0
        /// <summary>
        /// Добавление десериализуемого объекта
        /// </summary>
        public void Add(IFormObject formObject)
        {
            IObjectViewModel viewModel = null;

            if (formObject is CheckBoxObject)
            {
                viewModel = new CheckBoxViewModel((CheckBoxObject)formObject, _dataProvider);
            }
            else if (formObject is LabelObject)
            {
                viewModel = new LabelViewModel((LabelObject)formObject, _dataProvider);
            }
            else if (formObject is TextBoxObject)
            {
                viewModel = new TextBoxViewModel((TextBoxObject)formObject, _dataProvider);
            }
            else if (formObject is RadioButtonObject)
            {
                viewModel = new RadioViewModel((RadioButtonObject)formObject, _dataProvider);
            }
            else if (formObject is DateBoxObject)
            {
                viewModel = new DatePickerViewModel((DateBoxObject)formObject, _dataProvider);
            }
            else if (formObject is TimePickerObject)
            {
                viewModel = new TimePickerViewModel((TimePickerObject)formObject, _dataProvider);
            }

            if (viewModel == null)
            {
                return;
            }

            viewModel.Properties.Left       = formObject.Left;
            viewModel.Properties.Top        = formObject.Top;
            viewModel.Properties.IsSelected = false;
            viewModel.Properties.SetVisibility(formObject.IsVisible);
            viewModel.Properties.TabId = formObject.TabId;
            ViewModels.Add(viewModel);
            ObjectModified?.Invoke(viewModel.Properties.Id);
        }
Example #15
0
        public void Select(IObjectViewModel viewModel)
        {
            if (viewModel?.Properties == null ||
                _dataProvider.CommonSettings.AppMode != AppMode.Editor)
            {
                return;
            }

            var type = viewModel.GetType();

            UnselectAll();

            if (type == typeof(RadioViewModel))
            {
                SelectRadioGroup(((RadioViewModel)viewModel).GroupName);
            }

            viewModel.Properties.IsSelected = true;
            SelectionChanged?.Invoke(viewModel);
        }
Example #16
0
        private bool ConditionIsTrue(IObjectViewModel viewModel, ActionCondition condition)
        {
            if (condition == null)
            {
                return(false);
            }
            var type = condition.Operand.GetType();

            #region Сравнение видимости

            if (type == typeof(ActionVisibilityOperand))
            {
                if (!(condition.Value is ActionVisibilityOperand))
                {
                    ErrorMessage = WrongFormatMessage();
                    return(false);
                }

                var operand = (ActionVisibilityOperand)condition.Operand;
                var value   = viewModel.Properties.GetVisibility();

                switch (operand)
                {
                case ActionVisibilityOperand.Hide:
                    return(!value);

                case ActionVisibilityOperand.Show:
                    return(value);
                }
            }

            #endregion

            ErrorMessage = UnknownOperationMessage;
            return(false);
        }