public void Init() { if (!string.IsNullOrEmpty(DropField) && Parent.AvailableDocuments != null && Parent.AvailableDocuments.Count > 0) { var document = Parent.AvailableDocuments.FirstOrDefault(t => t.Model.Guid == Parent.Model.DocumentGuid); if (document != null && BaseVM.AvailableFields != null && BaseVM.AvailableFields.Any()) { var field = BaseVM.AvailableFields.FirstOrDefault(f => f.SystemName == document.Model.DetailObject); if (field != null && field.StepList.Any(s => s is CrossRefRequiredStepEdit)) { var requiredStep = (CrossRefRequiredStepEdit)field.StepList.FirstOrDefault(s => s is CrossRefRequiredStepEdit); if (requiredStep != null && requiredStep.CrossRefProcessId.HasValue) { var localsubfields = Model.Subfields.OrderBy(f => f.Level).ToArray(); foreach (var subfield in localsubfields) { var vm = new APQPDragAndDropOptionFieldViewModel(); vm.Initialize(subfield, this); Subfields.Add(vm); } if (Subfields.Count > 0) { DataTriggerSourceFieldsRetriever.BeginGetSourceFields( requiredStep.Process.SystemName, string.Join(".", Model.Subfields.OrderBy(f => f.Level).Select(f => f.FieldSystemName ?? string.Empty)) + "." + DropField, (newsender, e) => { if (e.Object != null && e.Object.AvailableFields != null) SetAvailableFields(e.Object.AvailableFields); else SetAvailableFields(new Dictionary<string, MobileObservableCollection<FieldInfo>>()); }); } else SetAvailableFields(new Dictionary<string, MobileObservableCollection<FieldInfo>>()); } } } } }
/// <summary> /// The add subfield after. /// </summary> /// <param name="fieldViewModel"> /// The field view model. /// </param> public void AddSubfieldAfter(APQPDragAndDropOptionFieldViewModel fieldViewModel) { var sourceField = fieldViewModel.GetSelectedField(); if (sourceField == null) return; var subfield = APQPDragAndDropOptionFieldEdit.NewSourceField(); subfield.Level = Model.Subfields.Count > 0 ? Model.Subfields.Max(f => f.Level) + 1 : 1; Model.Subfields.Add(subfield); var vm = new APQPDragAndDropOptionFieldViewModel(); vm.Initialize(subfield, this); Subfields.Add(vm); RaisePropertyChanged(() => Subfields); FieldList.BeginGetCrossReferenceSubfields( sourceField.DefinedIn, sourceField.SystemName, (sender, e) => { if (e.Error != null) return; vm.SetAvailableFields(e.Object); }); }
/// <summary> /// The remove subfields after. /// </summary> /// <param name="field"> /// The field. /// </param> public void RemoveSubfieldsAfter(APQPDragAndDropOptionFieldViewModel field) { var position = Subfields.IndexOf(field); for (var i = Subfields.Count - 1; i > position; --i) { Model.Subfields.Remove(Subfields[i].Model); Subfields.RemoveAt(i); RaisePropertyChanged(() => Subfields); } }
/// <summary> /// The add subfield. /// </summary> public void AddSubfield() { if (!string.IsNullOrEmpty(DropField) && BaseVM.AvailableDropFields != null && BaseVM.AvailableDropFields.Any()) { var sourceField = BaseVM.AvailableDropFields.FirstOrDefault(f => f.SystemName == DropField); if (sourceField == null) return; var subfield = APQPDragAndDropOptionFieldEdit.NewSourceField(); Model.Subfields.Add(subfield); var vm = new APQPDragAndDropOptionFieldViewModel(); vm.Initialize(subfield, this); Subfields.Add(vm); RaisePropertyChanged(() => Subfields); FieldList.BeginGetCrossReferenceSubfields( sourceField.DefinedIn, sourceField.SystemName, (sender, e) => { if (e.Error != null) return; vm.SetAvailableFields(e.Object); }); } }