Commit Graph

453 Commits

Author SHA1 Message Date
772e7b40ae make left panel narrower
Using Arial, because sans-serif has different
width in Chrome and FF.
2019-10-29 17:59:14 +01:00
eaddf97a0d zoom by range selection 2019-10-28 18:39:12 +01:00
920851b39e add range selection in plot view 2019-10-28 17:37:50 +01:00
5a7cde7815 show plotted images 2019-10-27 08:08:55 +01:00
3190074ce3 add examples to the query suggestions 2019-10-26 19:14:51 +02:00
f235890cc1 prepare sending of plot requests
- values for query and date range were not
  propagated to the model
2019-10-26 10:32:11 +02:00
7636781315 fix StringIndexOutOfBounds when caret is in position 0 2019-10-26 10:30:02 +02:00
f28a67a5c1 make it possible to render any combination of plots 2019-10-20 10:16:25 +02:00
b7c4fe4c1f move scatter plot creation into an AggregateHandler 2019-10-20 08:11:09 +02:00
7c61686808 merge ScatterPlot into Plotter 2019-10-19 19:03:33 +02:00
4749d54499 fix deprecations due to SpringBoot 2.2.0
replace deprecated MediaType.APPLICATION_JSON_UTF8_VALUE with
MediaType.APPLICATION_JSON_VALUE
2019-10-19 18:56:44 +02:00
4094351063 udpate npm and JS dependencies 2019-10-19 18:42:32 +02:00
10e5c058ec update gradle and java dependencies 2019-10-19 18:31:02 +02:00
12be86a1d6 fix component interaction with sub-components 2019-10-19 18:18:17 +02:00
24bf7c98e3 add limit by 2019-10-19 08:48:21 +02:00
a3099d4981 initial version of the query autocompletion
Missing features at this point:
1. No suggestions when the input gets the focus.
2. Suggestions are not shown after selecting a suggestion.
2019-10-13 10:35:38 +02:00
47d8387fec change theme from purple to blue 2019-10-12 09:56:14 +02:00
2825654b7a improve styling of filter panel
Adapt width so that the date range fits.
Width of form fields is now 100%.
y-range restrictions are now rendered in one line.
2019-10-12 09:06:19 +02:00
708a85c28c add daterangepicker
We are now adding the daterangepicker without Angular. This is a little
bit dirty, because we have to load jquery, moment and daterangepicker
manually via script tags, but it works without major hassle.
2019-10-11 17:47:34 +02:00
e61f415880 add date range field
It is (again) surprisingly hard to find a decent date+time-range
picker that works with Angular. Daterangepicker, which I used with
my VueJS application does not work with Angular. I can't get the
angularized version
https://github.com/fragaria/angular-daterangepicker) to work either.
And and a native Angular date picker
(https://github.com/GNURub/ngx-daterangepicker) doesn't work either.
2019-10-11 17:29:14 +02:00
020c3b6c39 make the drop down for "combine with" dynamic 2019-10-11 09:54:26 +02:00
ca8ee7d8f7 add component for y-axis range 2019-10-10 16:54:02 +02:00
9cf9bf4673 add more plot type icons and disable not (yet) implemented plot types 2019-10-10 15:36:52 +02:00
7ca7b80255 create icons for plot types 2019-10-10 12:00:41 +02:00
69968b7682 ignore hs_err_pid files 2019-10-09 19:03:13 +02:00
2787b42c31 adding a few filters (no doing anything yet) 2019-10-09 19:02:34 +02:00
1afcc7cf38 add left/right panel to visualization page 2019-10-09 16:47:19 +02:00
8b42476b72 add pages for uploading and help 2019-10-09 16:11:05 +02:00
e547b67105 add icons from https://uxwing.com/ (MIT License) 2019-10-09 16:10:40 +02:00
65b37e9c67 initial commit of the new UI based on Angular
At this point it is still the example Angular application.
2019-10-08 18:18:24 +02:00
c128bdd532 my ideas on how to proceed
I need to clean up the UI and make it easier extendible.
2019-10-08 17:10:13 +02:00
57ad6a1cee update SpringBoot to 2.1.9
Also remove direct dependencies to log4j-api and log4j-core where
possible. log4j-slf4j-impl is enough in many cases.
2019-10-04 20:15:09 +02:00
d895eba47c remove duplicate values when rendering
Rendering plots with millions of values is expensive. Before this fix
we wrote all values into CSV files. The CSV files were then read by
Gnuplot that did the rendering. But in an image with n×m pixes there
can only be nm different values. In most realistic scenarios we will
have many values that will be drawn to the same pixels. So we are
wasting time yb first generation the CSV for too many values and then
by parsing that CSV again.
Fixed by using a sparse 2D array to de-duplicate many values before
they get written to the CSV. The additional time we spend de-duplicating
is often smaller than the time saved when writing the CSV, so that the
total CSV writing is about as 'fast' as before (sometimes a little
faster, sometimes a little slower). But the time Gnuplot needs for
rendering drastically reduces. The factor depends on the data, of
course. We have seen factor 50 for realistic examples. Making a 15s
job run in 300ms.
2019-09-29 18:57:57 +02:00
d40a7a71c8 update 3rd-party libs 2019-09-29 11:10:05 +02:00
242c83e590 extract constants for gnuplot margins in px 2019-09-08 08:34:14 +02:00
162ef1626c reduce memory usage for computation of cumulative distribution
Before: To compute the cumulative distribution we added every duration
into a LongList. This requires O(n) memory, where n is the number of
values.

Now: We store the durations + the number of occurrences in a
LongLongHashMap. This has the potential to reduce the memory
requirements if durations occur multiple times. There are a lot of
durations with 0, 1, 2 milliseconds. In the worst case every duration
is different. In that case the memory usage doubled with this solution.

Future: We are currently storing durations with milli seconds precision.
We don't have to do that. We cannot draw 100 million different values
on the y-axis in an images with only 1000px.
2019-09-07 18:31:18 +02:00
0e9e2cd53a remove dependency to Guava 2019-09-01 15:44:36 +02:00
8579974051 performance improvement
Queries like "firstname=John and lastname=???" were slightly
inefficient.
They fetched all firstnames, filtered to those that matched the prefix
(e.g. John or Jonathan is this example) and then iterated over all those
values and return the lastnames.
Fixed by having two implementations. One for the case that only a few
of the values in fieldA match and one for the case that many match.
2019-08-31 19:30:54 +02:00
d8a114dbaf handle globlike patterns in in-expressions 2019-08-31 17:34:17 +02:00
f8e859fb6d cleanup and javadoc 2019-08-31 16:52:13 +02:00
0eee012798 allow 'not' for negation in addition to '!' 2019-08-31 08:30:13 +02:00
4161cd7f98 only field prefixes returned instead of full values
When using autocomplete to return field values I
missed, that autocomplete had the feature that cut
values at dots. So instead of returning full field
values only the prefix up to the first dot was
returned.
Fixed by making the cut-at-dot feature optional.
2019-08-27 20:37:07 +02:00
a174ec21ad increase contrast between scatter and cumulative distribution 2019-08-26 20:38:57 +02:00
79c28f2f9e hide tics in gallery view 2019-08-25 18:56:08 +02:00
2f35978184 fetch available values for gallery via autocomplete method
We had a method that returned the values of a field
with respect to a query. That method was inefficient,
because it executed the query, fetched all Docs
and collected the values.
The autocomplete method we introduced a while back
can answer the same question but much more efficiently.
2019-08-25 18:52:05 +02:00
4f61d91c79 draw tic for max value on y-axis only if it makes sense 2019-08-25 15:40:20 +02:00
a905c608aa increase maximal allowed duration for 'parallel requests' plot 2019-08-25 10:47:23 +02:00
da97a13ed8 add new ranges for date picker 2019-08-25 10:40:05 +02:00
2cd0d71dde fix compile error in Eclipse
Eclipse marked this as an error. A Gradle build had
no issue.
2019-08-25 10:26:39 +02:00
5b57417f75 make the tics on the y-axis easier readable
People are having trouble to understand durations like
100000 or 2.7E+6 milliseconds. Therefore we are
hanging the labels on the y-axis to include the unit
in the tic's label. We also use multiples of seconds,
minutes, hours and days instead of multiples of 10.
2019-08-25 10:25:47 +02:00