private void PopulateTerm(string field, CompletionSession session, IEditorView view, string termPrefix) { if (termPrefix.StartsWith("\"")) { termPrefix = termPrefix.Substring(1); } if (termPrefix.EndsWith("\"")) { termPrefix = termPrefix.Substring(0, termPrefix.Length - 1); } if (fieldTermsDictionary.ContainsKey(field) == false) { return; } var termsDictionary = fieldTermsDictionary[field]; List <string> terms; if (termsDictionary.ContainsKey(termPrefix)) { terms = termsDictionary[termPrefix]; } else { terms = new List <string>(); termsDictionary[termPrefix] = terms; QueryIndexAutoComplete.GetTermsForFieldAsync(indexName, field, terms, termPrefix) .ContinueOnSuccessInTheUIThread(() => { PopulateTerm(field, session, view, termPrefix); var completionItem = session.Items.FirstOrDefault(); if (completionItem != null) { session.Selection = new CompletionSelection(completionItem, CompletionSelectionState.Partial); session.Open(view); } }); } foreach (var term in terms) { var maybeQuotedTerm = term.IndexOfAny(new[] { ' ', '\t' }) == -1 ? term : "\"" + term + "\""; session.Items.Add(new CompletionItem { Text = term, ImageSourceProvider = new CommonImageSourceProvider(CommonImage.ConstantPublic), AutoCompletePreText = maybeQuotedTerm, }); } }
public override void LoadModelParameters(string parameters) { var urlParser = new UrlParser(parameters); UpdateAvailableIndexes(); ClearCurrentQuery(); if (urlParser.GetQueryParam("mode") == "dynamic") { var collection = urlParser.GetQueryParam("collection"); IsDynamicQuery = true; DatabaseCommands.GetTermsAsync("Raven/DocumentsByEntityName", "Tag", "", 100) .ContinueOnSuccessInTheUIThread(collections => { DynamicOptions.Match(new[] { "AllDocs" }.Concat(collections).ToArray()); string selectedOption = null; if (!string.IsNullOrEmpty(collection)) selectedOption = DynamicOptions.FirstOrDefault(s => s.Equals(collection)); if (selectedOption == null) selectedOption = DynamicOptions[0]; DynamicSelectedOption = selectedOption; DocumentsResult.SetChangesObservable(null); }); return; } IsDynamicQuery = false; var newIndexName = urlParser.Path.Trim('/'); if (string.IsNullOrEmpty(newIndexName)) { if (AvailableIndexes.Any()) { NavigateToIndexQuery(AvailableIndexes.FirstOrDefault()); return; } } IndexName = newIndexName; if (Database.Value.Statistics.Value.Errors.Any(error => error.Index == IndexName)) { QueryErrorMessage.Value = "The index " + IndexName + " has errors"; IsErrorVisible.Value = true; } DatabaseCommands.GetIndexAsync(IndexName) .ContinueOnUIThread(task => { if (task.IsFaulted || task.Result == null) { if (AvailableIndexes.Any()) { NavigateToIndexQuery(AvailableIndexes.FirstOrDefault()); } else { NavigateToIndexesList(); } return; } var fields = task.Result.Fields; QueryIndexAutoComplete = new QueryIndexAutoComplete(fields, IndexName, QueryDocument); var regex1 = new Regex(@"(?:SpatialIndex\.Generate|SpatialGenerate)"); var regex2 = new Regex(@"(?:SpatialIndex\.Generate|SpatialGenerate)\(@?\""([^\""]+)\"""); var strs = task.Result.Maps.ToList(); if (task.Result.Reduce != null) strs.Add(task.Result.Reduce); var legacyFields = new HashSet<string>(); foreach (var map in task.Result.Maps) { var count = regex1.Matches(map).Count; var matches = regex2.Matches(map).Cast<Match>().Select(x => x.Groups[1].Value).ToList(); if (matches.Count < count) legacyFields.Add(Constants.DefaultSpatialFieldName); matches.ForEach(x => legacyFields.Add(x)); } var spatialFields = task.Result.SpatialIndexes .Select(x => new SpatialQueryField { Name = x.Key, IsGeographical = x.Value.Type == SpatialFieldType.Geography, Units = x.Value.Units }) .ToList(); legacyFields.ForEach(x => spatialFields.Add(new SpatialQueryField { Name = x, IsGeographical = true, Units = SpatialUnits.Kilometers })); UpdateSpatialFields(spatialFields); HasTransform = !string.IsNullOrEmpty(task.Result.TransformResults); DocumentsResult.SetChangesObservable( d => d.IndexChanges .Where(n =>n.Name.Equals(indexName,StringComparison.InvariantCulture)) .Select(m => Unit.Default)); SetSortByOptions(fields); RestoreHistory(); }).Catch(); }
private void BeginUpdateFieldsAndSortOptions(string collection) { DatabaseCommands.QueryAsync("Raven/DocumentsByEntityName", new IndexQuery {Query = "Tag:" + collection, Start = 0, PageSize = 1}, null) .ContinueOnSuccessInTheUIThread(result => { if (result.Results.Count > 0) { var fields = DocumentHelpers.GetPropertiesFromJObjects(result.Results, includeNestedProperties: true, includeMetadata: false, excludeParentPropertyNames: true) .ToList(); SetSortByOptions(fields); QueryIndexAutoComplete = new QueryIndexAutoComplete(fields); RestoreHistory(); } }); }
public override void LoadModelParameters(string parameters) { var urlParser = new UrlParser(parameters); if (urlParser.GetQueryParam("mode") == "dynamic") { IsDynamicQuery = true; DatabaseCommands.GetTermsAsync("Raven/DocumentsByEntityName", "Tag", "", 100) .ContinueOnSuccess(collections => DynamicOptions.Match(new[] { "AllDocs" }.Concat(collections).ToArray())); return; } IndexName = urlParser.Path.Trim('/'); DatabaseCommands.GetIndexAsync(IndexName) .ContinueOnSuccessInTheUIThread(definition => { if (definition == null) { IndexDefinitionModel.HandleIndexNotFound(IndexName); return; } var fields = definition.Fields; QueryIndexAutoComplete = new QueryIndexAutoComplete(IndexName, Query, fields); const string spatialindexGenerate = "SpatialIndex.Generate"; IsSpatialQuerySupported = definition.Maps.Any(x => x.Contains(spatialindexGenerate)) || (definition.Reduce != null && definition.Reduce.Contains(spatialindexGenerate)); SetSortByOptions(fields); Execute.Execute(string.Empty); }).Catch(); }
private void UpdateQueryAutoComplete() { if (PatchOn != PatchOnOptions.Index || string.IsNullOrEmpty(SelectedItem)) { return; } ApplicationModel.Database.Value.AsyncDatabaseCommands.GetIndexAsync(SelectedItem) .ContinueOnUIThread(task => { if (task.IsFaulted || task.Result == null) { return; } var fields = task.Result.Fields; QueryIndexAutoComplete = new QueryIndexAutoComplete(fields, SelectedItem, QueryDoc); }).Catch(); }
public override void LoadModelParameters(string parameters) { var urlParser = new UrlParser(parameters); ExecutionElapsedTime.Value = TimeSpan.Zero; GroupByField.Value = ""; ValueCalculations.Clear(); UpdateAvailableIndexes(); var newIndexName = urlParser.Path.Trim('/'); if (string.IsNullOrEmpty(newIndexName)) { if (AvailableIndexes.Any()) { NavigateToIndexReport(AvailableIndexes.FirstOrDefault()); return; } } IndexName = newIndexName; DatabaseCommands.GetIndexAsync(IndexName) .ContinueOnUIThread(task => { if (task.IsFaulted || task.Result == null) { if (AvailableIndexes.Any()) { NavigateToIndexReport(AvailableIndexes.FirstOrDefault()); } else { NavigateToIndexesList(); } return; } var fields = task.Result.Fields; IndexFields.Match(fields); QueryIndexAutoComplete = new QueryIndexAutoComplete(fields, IndexName, FilterDoc); }).Catch(); }
public override void LoadModelParameters(string parameters) { var urlParser = new UrlParser(parameters); ClearCurrentQuery(); if (urlParser.GetQueryParam("mode") == "dynamic") { var collection = urlParser.GetQueryParam("collection"); IsDynamicQuery = true; DatabaseCommands.GetTermsAsync("Raven/DocumentsByEntityName", "Tag", "", 100) .ContinueOnSuccessInTheUIThread(collections => { DynamicOptions.Match(new[] { "AllDocs" }.Concat(collections).ToArray()); string selectedOption = null; if (!string.IsNullOrEmpty(collection)) selectedOption = DynamicOptions.FirstOrDefault(s => s.Equals(collection)); if (selectedOption == null) selectedOption = DynamicOptions[0]; DynamicSelectedOption = selectedOption; DocumentsResult.SetChangesObservable(null); }); return; } IsDynamicQuery = false; IndexName = urlParser.Path.Trim('/'); DatabaseCommands.GetIndexAsync(IndexName) .ContinueOnUIThread(task => { if (task.IsFaulted || task.Result == null) { IndexDefinitionModel.HandleIndexNotFound(IndexName); return; } var fields = task.Result.Fields; QueryIndexAutoComplete = new QueryIndexAutoComplete(fields, IndexName, QueryDocument); const string spatialindexGenerateLegacy = "SpatialIndex.Generate"; const string spatialindexGenerate = "SpatialGenerate"; IsSpatialQuerySupported = task.Result.Maps.Any(x => x.Contains(spatialindexGenerate) || x.Contains(spatialindexGenerateLegacy)) || (task.Result.Reduce != null && (task.Result.Reduce.Contains(spatialindexGenerate) || task.Result.Reduce.Contains(spatialindexGenerateLegacy))); HasTransform = !string.IsNullOrEmpty(task.Result.TransformResults); DocumentsResult.SetChangesObservable( d => d.IndexChanges .Where(n =>n.Name.Equals(indexName,StringComparison.InvariantCulture)) .Select(m => Unit.Default)); SetSortByOptions(fields); RestoreHistory(); }).Catch(); }