public static List <DataObjectViewModel> BuildItems( List <JObject> searchResults, bool includeMetadata, string dataType, IDataApiClient dataApiClient, IClipboard clipboard, ICollectionSwitcher collectionSwitcher, Action <DataObjectViewModel> deleteCallback) { var dataObjects = new List <DataObjectViewModel>(); var jsonViewModelFactory = new JsonViewModelFactory(clipboard, collectionSwitcher); foreach (var jObject in searchResults) { var id = jObject.ContainsKey("_id") ? jObject["_id"].Value <string>() : null; JToken data = jObject; if (!includeMetadata && jObject.ContainsKey("Data")) { data = jObject["Data"]; } if (!(jsonViewModelFactory.Create(data) is JObjectViewModel jObjectViewModel)) { continue; } var dataObject = new DataObjectViewModel(jObjectViewModel, dataType, id, dataApiClient, deleteCallback); dataObjects.Add(dataObject); } return(dataObjects); }
public DataObjectLoader( IDataApiClient dataApiClient, IClipboard clipboard, ICollectionSwitcher collectionSwitcher) { this.dataApiClient = dataApiClient; jsonViewModelFactory = new JsonViewModelFactory(clipboard, collectionSwitcher); }
public CollectionExplorationViewModel( IDataApiClient dataApiClient, CollectionInformation collectionInformation, DataVisualizer dataVisualizer, IClipboard clipboard, ICollectionSwitcher collectionSwitcher) { CollectionInformation = collectionInformation; DataObjectListViewModel = new DataObjectListViewModel(collectionInformation, dataApiClient, dataVisualizer, clipboard, collectionSwitcher); QueryEditorViewModel = new QueryEditorViewModel(dataApiClient, collectionInformation.CollectionName); QueryEditorViewModel.JsonSearchFinished += QueryEditorViewModel_JsonSearchFinished; }
public CollectionsMainViewModel( IDataApiClient dataApiClient, DataVisualizer dataVisualizer, IReadonlyObjectDatabase <UserProfile> userDatabase, IClipboard clipboard) { this.dataApiClient = dataApiClient; this.dataVisualizer = dataVisualizer; this.clipboard = clipboard; collectionSwitcher = new CollectionSwitcher(SwitchToCollection, Constants.DefaultQuery); CollectionListViewModel = new CollectionListViewModel(dataApiClient, userDatabase); CollectionListViewModel.PropertyChanged += CollectionListViewModel_PropertyChanged; }
public DataObjectListViewModel( CollectionInformation collectionInformation, IDataApiClient dataApiClient, DataVisualizer dataVisualizer, IClipboard clipboard, ICollectionSwitcher collectionSwitcher) { this.dataApiClient = dataApiClient; this.dataVisualizer = dataVisualizer; this.clipboard = clipboard; this.collectionSwitcher = collectionSwitcher; CollectionInformation = collectionInformation; CanVisualize = dataVisualizer.CanVisualize(CollectionInformation.CollectionName); ExportCommand = new RelayCommand(Export, CanExport); VisualizeCommand = new RelayCommand(Visualize, () => CanVisualize); }
public JPropertyViewModel( JProperty jProperty, JsonViewModelFactory jsonViewModelFactory, IClipboard clipboard, ICollectionSwitcher collectionSwitcher) { JToken = jProperty; this.clipboard = clipboard; this.collectionSwitcher = collectionSwitcher; Name = jProperty.Name; var referenceMatch = Regex.Match(Name, "^(?<ReferenceCollection>.+)(Id|ID)$"); IsReference = referenceMatch.Success; ReferencedCollection = DetermineReferencedCollection(referenceMatch); if (jProperty.Value.HasValues) { Value = string.Empty; if (jProperty.Value.Type == JTokenType.Array) { Children = jProperty.Value.Children() .Select(jsonViewModelFactory.Create) .Where(vm => vm != null) .ToList(); } else if (jProperty.Value.Type == JTokenType.Object) { Children = ((JObject)jProperty.Value) .Children() .Select(jsonViewModelFactory.Create) .ToList(); } } else { Value = jProperty.Value.ToString(); Children = new List <IJsonViewModel>(); } CopyNameCommand = new RelayCommand(CopyNameToClipboard); CopyValueCommand = new RelayCommand(CopyValueToClipboard); OpenReferenceCommand = new RelayCommand(OpenReference, () => IsReference); }
public JsonViewModelFactory(IClipboard clipboard, ICollectionSwitcher collectionSwitcher) { this.clipboard = clipboard; this.collectionSwitcher = collectionSwitcher; }