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; }
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); }
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); }
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; }
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); }
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); }
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(); }
/// <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); }
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); }
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); }