Hi community!
I'm going to start my work on the view
I need. I hope it will be useful for the community
too, so sharing my ideas in order to get your
criticism on them.
I need a view that is able to display
data from various sources. I had a brief review of
the idea implemented in this change [1]. I believe
it to be a great solution, but what I really need
here is an ability to display charts. For example,
line series, especially more than one series on a
chart (to compare at a glance).
So, my vision on my new view is as
follows:
The view will consist of two main
parts: X axis that is shared between inner viewers
and a customizable set of lanes. A lane consists of
two viewers: legend or list of entities to display
and the data itself (Gantt or XY chart) along the X
axis. Right now I need two types of lanes: TimeGraph
lane and XYChart lane. A prototype of the view looks
like this: [2]
On the prototype one can see 5 lanes
and the X axis at the bottom:
- TimeGraph with alarms and two modes;
- XYChart with pressures;
- XYChart with gas concentrations;
- TimeGraph with one more mode that we
need to see next to previous XY;
- XYChart with more gases.
The main idea is to create an
opportunity to add/remove/modify lanes with various
data sources according to a user's wishes.
Implementation:
I'm going to implement the view to be
an orchestrator of lanes. The user should be able to
add or remove a lane. Lanes will have a property
'type' ('TimeGraph' and 'XY' for the start). Lane's
viewers will be based on the type. The user should
be able to choose a data provider (or analysis, or a
set of them?) according to the lane's type.
As a first step I plan to implement the
view using existing viewers that are used by
AbstractTimeGraphView and TmfChartView.
Also, I have a question regarding a
place where I can start my work. What should I
choose: Trace Compass, Incubator or a separate
plugin?
Thanks.
[1] https://git.eclipse.org/r/c/137165
[2]
https://imgur.com/a/ccxVWTv
--
Best regards,
Ivan Grinenko
Software Engineer
Auriga
First
of all, huge (YUGE) thanks for your involvement w/
the community so far! We have been chatting on
IRC, but I would like to summarize my (personal)
views on the subject.
With
respect to the view you are proposing, I have
personally on my own time experimented with the
idea. I have made a view I jokingly call the
"mother of all views"[1].
Now
we have data providers and data provider
descriptors[2]. We can therefore have a view that
gets "every" or a sub-list of all the data
providers and puts them in a gantt chart (time
graph view)
The
time graph view can support line charts now.[4]
and bar charts can be added soon(tm) [5]
With
this what's left is the content presentation.
Recently presentation providers [3] have been
merged under the name "fetchstyle". I sincerely
believe most of the heavier lifting is done. 🙂
Here
are some examples of views but they need to be
updated.
With
this solution, let's compare your requirements
>
The main requirements for the new view:
> (YES) - synchronized vertical sashes;
> (YES) - shared X axis (viewport boundaries
along the axis);
> (NO) - ability for a user to customize set
and order of pairs of viewers (can be named
"lanes", "rows"). Could be done with an additional
form where a user can define the set and order of
lanes;
> (NO, it is global at the moment, but we can
filter on entry) - ability for a user to customize
each lane with items to show there (like filters
for a TimeGraphView or checkboxes for a
TmfChartView);
> (NO, no major architectural issues though) -
each lane must have an ability to fix its Y axis
to user-defined values;
> (NO, this may be assisted by EASE.) - widgets
should not be created only by analysis, a user
should be able to add views that are not connected
to a specific analysis;
> (YES, the view can support it)- not sure if
any headers are needed for lanes.
I
would estimate this is non-trivial work, but if
your priorities are #1 and #2, you can deliver
something much faster. The hardest item in my
opinion is moving entries/lanes. That is mostly
since I haven't put much thought into it though,
maybe there's a simple answer out there.
Hi
all,
We have a need in something similar to the
idea described in "Proposal 3: Compressed"
here [1]. The main idea is to put different
viewers one under another to maintain the
same viewport in terms of time (or X axis).
The main requirements for the new view:
- synchronized vertical sashes;
- shared X axis (viewport boundaries along
the axis);
- ability for a user to customize set and
order of pairs of viewers (can be named
"lanes", "rows"). Could be done with an
additional form where a user can define the
set and order of lanes;
- ability for a user to customize each lane
with items to show there (like filters for a
TimeGraphView or checkboxes for a
TmfChartView);
- each lane must have an ability to fix its
Y axis to user-defined values;
- widgets should not be created only by
analysis, a user should be able to add views
that are not connected to a specific
analysis;
- not sure if any headers are needed for
lanes.
It is quite similar to the "Proposal 3", but
I'd like to make it possible to open any
view (or at least some of them) whether as a
separate view or as a TimeLineView widget.
Sometimes a user wants to see a widget twice
with different filters for example. At this
point I don't know whether it is possible
(or even makes sense) to make existing views
to be shown as widgets of another view or
should we create new widgets for the new
view.
Could anyone suggest the best entry point to
begin to investigate the topic, please?
Thanks!
--
Best regards,
Ivan Grinenko
Software Engineer
Auriga
[1] https://wiki.eclipse.org/Trace_Compass/Design_Documents/Aligned_x_axis