/// <summary> /// Constructor /// </summary> public OctaneItemViewModel(BaseEntity entity) : base(entity) { SubTitleField = new FieldViewModel(Entity, MyWorkMetadata.Instance.GetSubTitleFieldInfo(entity)); var topFields = new List <FieldViewModel>(); foreach (FieldInfo fieldInfo in MyWorkMetadata.Instance.GetTopFieldsInfo(entity)) { topFields.Add(new FieldViewModel(Entity, fieldInfo)); } TopFields = FieldsWithSeparators(topFields).ToList(); var bottomFields = new List <FieldViewModel>(); foreach (FieldInfo fieldInfo in MyWorkMetadata.Instance.GetBottomFieldsInfo(entity)) { bottomFields.Add(new FieldViewModel(Entity, fieldInfo)); } BottomFields = FieldsWithSeparators(bottomFields).ToList(); }
/// <summary> /// Initialize detailed information about the cached entity /// </summary> public async Task InitializeAsync() { try { OctaneServices octaneService = OctaneServices.GetInstance(); List <FieldMetadata> fields = await FieldsMetadataService.GetFieldMetadata(Entity); List <string> fieldNames = fields.Select(fm => fm.Name).ToList(); OctaneServices _octaneService = OctaneServices.GetInstance(); if (octaneVersion == null) { octaneVersion = await _octaneService.GetOctaneVersion(); } // client lock stamp was introduced in octane 12.55.8 if (octaneVersion.CompareTo(OctaneVersion.FENER_P3) > 0) { // add client lock stamp to the fields that we want to retrieve fieldNames.Add(lockStamp); } Entity = await _octaneService.FindEntityAsync(Entity, fieldNames); await HandleImagesInDescription(); _allEntityFields.Clear(); var visibleFieldsHashSet = FieldsCache.Instance.GetVisibleFieldsForEntity(EntityType); var fieldsToHideHashSet = FieldsCache.GetFieldsToHide(Entity); foreach (var field in fields.Where(f => !fieldsToHideHashSet.Contains(f.Name))) { var fieldViewModel = new FieldViewModel(Entity, field, visibleFieldsHashSet.Contains(field.Name)); // add change handler to field view model fieldViewModel.ChangeHandler += (sender, e) => { SaveIsEnabled = true; }; if (!string.Equals(fieldViewModel.Metadata.FieldType, "memo", StringComparison.OrdinalIgnoreCase)) { _allEntityFields.Add(fieldViewModel); } } if (EntitySupportsComments) { await RetrieveComments(); } var transitions = await octaneService.GetTransitionsForEntityType(EntityType); if (Entity.TypeName != "run" && Entity.TypeName != "run_manual" && Entity.TypeName != "run_suite") { var phaseEntity = Entity.GetValue(CommonFields.Phase) as BaseEntity; var currentPhaseName = phaseEntity.Name; _phaseTransitions.Clear(); SelectedNextPhase = null; foreach (var transition in transitions.Where(t => t.SourcePhase.Name == currentPhaseName)) { if (transition.IsPrimary) { _phaseTransitions.Insert(0, transition.TargetPhase); } else { _phaseTransitions.Add(transition.TargetPhase); } } this._selectIsEnabled = _phaseTransitions.Count != 0; } Mode = WindowMode.Loaded; } catch (Exception ex) { Mode = WindowMode.FailedToLoad; ErrorMessage = ex.Message; } NotifyPropertyChanged(); }