From 57c5cca688c27e9b12a61d7817af4233b1da6648 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Thu, 14 Nov 2019 18:45:32 +0100 Subject: [PATCH] fetch possible values for gallery view --- pdb-js/src/app/plot.service.ts | 21 +++++++++++++++++-- .../query-autocomplete.component.ts | 4 ++-- .../visualization-page.component.html | 2 +- .../visualization-page.component.ts | 12 +++++++++++ .../recommind/logs/XAxisTimeTicks.java | 2 +- .../java/org/lucares/pdbui/PdbController.java | 5 +++-- 6 files changed, 38 insertions(+), 8 deletions(-) diff --git a/pdb-js/src/app/plot.service.ts b/pdb-js/src/app/plot.service.ts index b7a0b2f..6c32bbb 100644 --- a/pdb-js/src/app/plot.service.ts +++ b/pdb-js/src/app/plot.service.ts @@ -1,6 +1,7 @@ import { Injectable, OnInit } from '@angular/core'; import { HttpClient, HttpParams } from '@angular/common/http'; import { Observable } from 'rxjs/Observable'; +import { map } from 'rxjs/operators'; @Injectable({ @@ -39,12 +40,13 @@ export class PlotService { return this.http.get>('//'+window.location.hostname+':8080/fields'); } - autocomplete(query: string, caretIndex: number): Observable + autocomplete(query: string, caretIndex: number, resultMode: ResultMode): Observable { const options = { params: new HttpParams() .set('caretIndex', ""+caretIndex) - .set('query', query) + .set('query', query) + .set('resultMode', resultMode) }; return this.http.get('//'+window.location.hostname+':8080/autocomplete', options); } @@ -58,6 +60,16 @@ export class PlotService { getFilterDefaults(): Observable{ return this.http.get('//'+window.location.hostname+':8080/filters/defaults') } + + splitQuery(query: string, splitBy:string) : Observable>{ + + const q = "("+query+") and "+splitBy+"="; + return this.autocomplete(q, q.length+1, ResultMode.FULL_VALUES).pipe( + map( + autocompleteResult => autocompleteResult.proposals.map(suggestion => suggestion.value) + ) + ); + } } @@ -172,3 +184,8 @@ export class FilterDefaults { fields: Array; splitBy: string; } + +export enum ResultMode { + CUT_AT_DOT = "CUT_AT_DOT", + FULL_VALUES = "FULL_VALUES" +} diff --git a/pdb-js/src/app/query-autocomplete/query-autocomplete.component.ts b/pdb-js/src/app/query-autocomplete/query-autocomplete.component.ts index 661df12..94cbea8 100644 --- a/pdb-js/src/app/query-autocomplete/query-autocomplete.component.ts +++ b/pdb-js/src/app/query-autocomplete/query-autocomplete.component.ts @@ -3,7 +3,7 @@ import {FormControl} from '@angular/forms'; import {Observable} from 'rxjs'; import {startWith, map} from 'rxjs/operators'; import {MatAutocompleteTrigger } from '@angular/material/autocomplete'; -import { PlotService, PlotType, AutocompleteResult, Suggestion } from '../plot.service'; +import { PlotService, PlotType, AutocompleteResult, Suggestion, ResultMode } from '../plot.service'; @Component({ selector: 'pdb-query-autocomplete', @@ -64,7 +64,7 @@ export class QueryAutocompleteComponent implements OnInit { : this.queryField.value.newQuery; this.plotService - .autocomplete(query, caretIndex) + .autocomplete(query, caretIndex, ResultMode.CUT_AT_DOT) .subscribe( (data: AutocompleteResult) => {// success path //console.log(JSON.stringify(data.proposals)); diff --git a/pdb-js/src/app/visualization-page/visualization-page.component.html b/pdb-js/src/app/visualization-page/visualization-page.component.html index 72e1581..deebe5c 100644 --- a/pdb-js/src/app/visualization-page/visualization-page.component.html +++ b/pdb-js/src/app/visualization-page/visualization-page.component.html @@ -80,7 +80,7 @@ *ngIf="enableGallery" mat-button matTooltip="Create Gallery" - (click)="plot()" + (click)="gallery()" [disabled]="this.splitBy == null"> Gallery diff --git a/pdb-js/src/app/visualization-page/visualization-page.component.ts b/pdb-js/src/app/visualization-page/visualization-page.component.ts index 60ded4d..f9ce2d0 100644 --- a/pdb-js/src/app/visualization-page/visualization-page.component.ts +++ b/pdb-js/src/app/visualization-page/visualization-page.component.ts @@ -90,6 +90,18 @@ export class VisualizationPageComponent implements OnInit { dateRangeAsString() : string { return (document.getElementById("search-date-range")).value; } + + gallery(){ + const that = this; + this.plotService.splitQuery(this.query.query, this.splitBy.name).subscribe(function(valuesForSplitBy){ + console.log("valuesForSplitBy: " + JSON.stringify(valuesForSplitBy)); + that.plotView.errorMessage = ''; + }, + error => { + that.plotView.imageUrl = ''; + that.plotView.errorMessage = error.error.message; + }); + } plot(){ const that = this; diff --git a/pdb-plotting/src/main/java/org/lucares/recommind/logs/XAxisTimeTicks.java b/pdb-plotting/src/main/java/org/lucares/recommind/logs/XAxisTimeTicks.java index 637e89e..071939b 100644 --- a/pdb-plotting/src/main/java/org/lucares/recommind/logs/XAxisTimeTicks.java +++ b/pdb-plotting/src/main/java/org/lucares/recommind/logs/XAxisTimeTicks.java @@ -17,7 +17,7 @@ public class XAxisTimeTicks { int widthInPx = settings.getWidth() - GnuplotSettings.GNUPLOT_LEFT_RIGHT_MARGIN; - final long maxLabels = widthInPx / (GnuplotSettings.TICKS_FONT_SIZE * 8); + final long maxLabels = Math.max(1, widthInPx / (GnuplotSettings.TICKS_FONT_SIZE * 8)); final long tickIncrement = roundToTickIncrement(rangeInMs / maxLabels); diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/PdbController.java b/pdb-ui/src/main/java/org/lucares/pdbui/PdbController.java index 274a27c..4808bdb 100644 --- a/pdb-ui/src/main/java/org/lucares/pdbui/PdbController.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/PdbController.java @@ -225,13 +225,14 @@ public class PdbController implements HardcodedValues, PropertyKeys { ) @ResponseBody AutocompleteResponse autocomplete(@RequestParam(name = "query") final String query, - @RequestParam(name = "caretIndex") final int caretIndex) { + @RequestParam(name = "caretIndex") final int caretIndex, + @RequestParam(name="resultMode", defaultValue = "CUT_AT_DOT") ResultMode resultMode) { // TODO get date range from UI final DateTimeRange dateRange = DateTimeRange.max(); final int zeroBasedCaretIndex = caretIndex - 1; final QueryWithCaretMarker q = new QueryWithCaretMarker(query, dateRange, zeroBasedCaretIndex, - ResultMode.CUT_AT_DOT); + resultMode); final AutocompleteResponse result = new AutocompleteResponse();