Commit Graph

51 Commits

Author SHA1 Message Date
Mark Liversedge
35448bdc6a Formula Vectors
You can create a vector using the notation:

   expr [ from : to ]

   Where 'expr' will be evaluated for every activity
   between the dates from and to.

   e.g. TSS[today - 90 : today]

   will evaluate to TSS for the last 90 days

   e.g. Activities [ date:date ] > 1

   Will find all days with more than one workout.

.. when using a vector in any arithmetic expression it
   will be evaluated to a sum; this will be fixed shortly
   to enable the use of sum/mean/max/min functions.

.. If needed we can add vector operations but this will
   likely confuse many users (hell, they confuse developers)
   so we will need a good reason to add them !

Lastly, I have also added daterange(from) and daterange(to)
literals to get access to the currently selected daterange
when working in the trends view.
2015-08-16 17:23:46 +01:00
Mark Liversedge
7728b3fabf DataFilter Functions and "math"
.. updated the datafilter to handle general functions
   and parse them without needing them declared in the lexer

.. makes it much easier to add new functions in the future

.. did this to add core math functions;
   *  sin, cos, tan, asin, acos, atan,
   *  sinh, cosh, tanh, asinh, acosh, atanh
   *  exp, log, log10, ceil, floor, round
   *  fabs, isinf, isnan

.. we can add more later; erf/gamma spring to mind !
2015-08-15 14:17:53 +01:00
Mark Liversedge
6f37b208b3 DataFilter Conditional Expression
.. uses the C/C++ notation:

   expr ? expr2 : expr3

   Where expr is the condition e.g. X>2
   and expr2 is what to evaluate to if expr is true
   and expr3 is what to evaluate to if expr is false

   e.g.

   (Workout_Code = "1L3") ? 1 : 0

   Will evaluate as 1 for all workouts where the
   workout code is 1L3 and 0 for all other workouts.
2015-08-13 09:24:26 +01:00
Mark Liversedge
6c2cb6d73b Enhanced DataFilter Completion
.. now will repeat completion beyond the very
   first word on the line

.. needs to be enhanced to work when not at the
   end of the text (i.e. cursor move)
2015-08-13 07:38:22 +01:00
Mark Liversedge
8b65975ff5 Fix exit SEGV on SearchBox
.. resize event was checking menu icon, which was never
   going to change due to a resize event.

.. it crashed during window exit since it dereferenced objects
   that had been deleted.
2015-08-12 23:16:58 +01:00
Mark Liversedge
477e2ff613 Fix QCompleter Crash
.. still only works for first typing and will fix
   that, but no longer crashes on change mode from
   named search.
2015-08-12 17:35:38 +01:00
Mark Liversedge
5a0499c22c Disable Searchbox completer
.. for now, it crashes occasionally due to cross-thread
   issues, and doesn't work across the text anyway.
   will make it permanently associated by not active
   when in search mode.
2015-08-12 13:34:57 +01:00
Mark Liversedge
226e63f9f4 Basic Autocompleter for Filter
.. need to update to work in the middle of the expression
   not just at the beginning.
2015-08-12 11:54:56 +01:00
Mark Liversedge
255f69c1ad ConfigChanged Part 1 of 3
.. introduce concept of configChanged(what) to
   pass details of what config has been changed

.. fixed zones changes to re-read after write
   to correct the save twice to get changes to
   zones bug.

.. next parts need to spot changes (part 2) and
   then action appropriately (part 3)
2014-12-29 13:41:50 +00:00
Joern
1010ce3903 ColumnChooser - Drag&Drop problem with special Characters and QT 4.6.8
... the .toUTF8() conversion used with QT5.3.x to handle special
characters (e.g. german Umlaute) in column chooser does not work for QT
4.8.6 (at least not for the Windows) - as a result (Drag&Drop from those
fields into Columns or Search Field is not working)
... following the approach other places, changed approach to
"serialization" of the info for "Drag&Drop" - so work independent on any
QT conversions (which seem to depend on other conditions - change over
time)
2014-07-21 19:13:06 +02:00
Joern
af074d3e91 Bikescore (TM) unique Handling (Part 2)
... have the same consistent handling for (TM) at all visible places
... do not allow Translation of BikeScore (since it's a TM and might
cause unexpected behavior)
... Have (TM) sign everwhere visible - only in Searches just use
"BikeScore" as Symbol
2014-06-11 18:55:23 +02:00
Mark Liversedge
3cfbf6aa49 Searchbox rounded corners
.. gone in flat mode.
2014-06-09 20:39:59 +01:00
Joern
1d366df734 Data Filter - Internal Field Names + Multiple tr()
... allow/use only internal field names (delivered by Column Chooser) in
Data Filter expressions
... multipe tr()

(cherry picked from commit bc4164adab74dd82c0a0307d7d0fbb736f95ef0d)
2014-06-09 20:26:43 +02:00
Mark Liversedge
0a215562d5 Add Filter Sidebar
To allow selection of filters aka Named Searches when
plotting charts.

Fixes #732
2013-12-05 14:30:42 +00:00
Mark Liversedge
ed2bdc5d3a MainWindow Refactor Part 4 of 5
Split the views in MainWindow into separate classes;

* Tab is a collection of the 4 main views

* TabView is a base class for all of the 4 view types

* {Analysis,Train,Diary,Home}View are all derived from
  TabView and deal with specifics of those views (e.g.
  Diary/Home worry about date ranges).

We should be ready to move to tabbed athletes soon.

There are a few nits left for this part of the refactor
that will need to be resolved in some fixups over the
next few days;

* tile mode segment selector has wrong segment selected
  when the view is in tile mode.

* Minimum height/width of MainWindow is large for some
  reason

* the Train view controls (play, ffwd etc) have nowhere
  to go at present -- need to fix that !!!

* When you resize the mainwindow width the sidebars expand
  and should remain a fixed width

* not sure if it will build on Windows or Mac!
2013-07-27 21:41:03 +01:00
Mark Liversedge
6a8e5d9a49 More MainWindow tidy
.. reduce the number of public members
2013-07-19 15:28:29 +01:00
Mark Liversedge
d710b1a43c Fixup column chooser
.. in AnalysisSidebar
.. and SearchBox

Will need to fixup again when we introduce Tabs into
MainWindow, but it will be obvious when we get there.
2013-07-18 08:55:39 +01:00
Mark Liversedge
b827cedd80 Introduce AnalysisSidebar widget
Moving the code intertwined into MainWindow for
the analysis view sidebar; activity list, intervals
and calendar into a new AnalysisSidebar class.

                WARNING!

This is a work in progress checkpoint commit
as the sidebar menus and context menus have
not yet been migrated out -- this will be done
in the next commit or two.
2013-07-15 22:24:31 +01:00
Mark Liversedge
d59655d730 Fixup MainWindow refactor Part 2
.. Minor oopsie with references to context->mainWindow->athlete
   instead of simply context->athlete.

The MainWindow refactor will be complete when references to
the mainWindow class is for gui reasons only.
2013-07-12 08:57:49 +01:00
Mark Liversedge
0fcbbe1b77 Refactor MainWindow Part 2 of 5
Decoupled classes from MainWindow to reference Context
and Athlete (and introduced a couple of new headers).

We no longer pass around a MainWindow pointer to children
but pass a context instead.

There are still a few pieces left in MainWindow that need
to move to a better place;
    * Setting/clearing filter selection
    * Working with Intervals
    * Adding/Deleting Rides
    * Save on Exit

As mentioned previously there are lots of other parts to
this refactor left to do;
    * break MainWindow Gui elements into Toolbar and Views

    * migrate from RideItem and Ridelist to ActivityCollection
      and Activity classes that are not tied into gui elements.

    * introduce Application Context and AthleteCollection
2013-07-11 14:02:02 +01:00
Mark Liversedge
c56c5a9567 MainWindow Refactor Part 1 of 5
Breaking the MainWindow 'god object' into
separate classes for Athlete and Context.

Further updates will need to;
- break MainWindow Gui elements into Toolbar and Views

- migrate from RideItem and Ridelist to ActivityCollection
  and Activity classes that are not tied into gui elements.

- introduce Application Context and AthleteCollection

Once these are done we will be in a position to decouple
most classes from mainwindow and also introduce tabbed
athletes.
2013-07-07 15:50:28 +01:00
Mark Liversedge
5a3480e6ba Remove Column Chooser from Chart Settings
Because the chart settings are modal its a really bad
idea to open up a column chooser from there. So, by
default, we don't have a column chooser option on the
search/filter box -- it must be explicitly requested.

We therefore explicity set the column chooser from the
mainwindow and also from the ride navigator window.
2013-06-05 07:01:36 +01:00
Mark Liversedge
1862fb8ba2 Named Search Menu
Better UX to put less used options at bottom of the menu.
2013-04-27 20:53:39 +01:00
Mark Liversedge
ca540be954 Edit Named Searches
Fixes #577
2013-04-27 13:49:27 +01:00
Mark Liversedge
7e501dc3da Visual cue for filter
.. by highlighting chart title too if a filter is
   being applied.

This is important to warn users that the data being plotted
is adjusted to the search/filter (either globally or in the
chart settings).
2013-04-26 12:44:51 +01:00
Mark Liversedge
820c32a2a6 Add Column Chooser for SearchBox
.. so you can drag and drop fields in when creating a filter.
2013-04-25 21:57:44 +01:00
Mark Liversedge
90c0739fc2 Fix urls in FAQ document 2013-04-23 21:39:10 +01:00
Mark Liversedge
0768e604ff Color fixups for Windows
.. tested on Windows 8.
.. still needs foxus rectangle on the search box
   in Mac to be drawn properly.
2013-04-07 13:34:56 +01:00
Mark Liversedge
f8414d4a5a Minor focus/highlight fixups Linux
Search box gets a focus and the calendar highlighting uses
the default palette highlight -- only good for new installs
or if the user resets their colors but at least it now does
the right thing.

Need to test and fixup on Mac and Windows.
2013-04-07 13:19:40 +01:00
Mark Liversedge
fc6e4cd215 UI Nits: Move searchbox toolbutton
.. to the right 2 pixels on Windows/Linux
   Seems obsessive but if I'm gonna look at this for the
   next year I want it to be perfect.
2013-04-06 15:36:25 +01:00
Mark Liversedge
a407f27daa UI Nits: Search box clear icon
.. more like a Mac and better suited to rounded edges.
2013-04-06 14:59:18 +01:00
Mark Liversedge
8102d96ded UI Nits: SearchBox icon/tool position tweak. 2013-04-05 20:26:34 +01:00
Mark Liversedge
54771dfbc0 UI Nits: Search Box Height 21px 2013-04-05 20:20:29 +01:00
Mark Liversedge
13b1e8aa58 Search Box Rounded Corners for Linux/Windows
.. it looks ok.
2013-04-05 19:54:38 +01:00
Mark Liversedge
c822c566e0 UI Nits: Searchboxm on a Mac cosmetics
.. just rounded corners and slightly different icons.
2013-04-05 19:45:37 +01:00
Mark Liversedge
69298ef7c2 Mac allow search AND filter on toolbar
.. to support the recent update to allow search filter across
   the charts as well as the sidebar.
2013-04-05 19:04:40 +01:00
Mark Liversedge
31ced60209 Search/Filter on toolbar applies to Charts
When the user free text searches or applies a data filter in
the top right toolbar search box it gets applied to any charts
that plot data from many rides, including;

- CP curve
- Calendar
- Histogram
- LTM
- TreeMap
- Summary

I need to update on a Mac to no longer use a Mac text search box
but now use a search filter box on the top right.
2013-04-05 16:23:16 +01:00
Alejandro Martinez
4a1766f57b Enabled translation of Search and Group By
Update spanish translation
Update italian translation (by Marco Piccirilli)
2013-04-04 11:10:41 -03:00
Mark Liversedge
b580644e26 Fix searchbox dropdown alignment
Fixes #528.
2013-03-27 19:32:12 +00:00
Mark Liversedge
8812de5711 Windows Look and Feel
.. akin to the Mac look and feel
.. still needs a bit of cosmetic work, but basically sound
.. also added in fixes to native file imports

Fixes #404
Fixes #504
2013-03-14 22:53:37 +00:00
Mark Liversedge
1d31c34424 UI Nits: Cosmetic gui updates
- searchbox border
- LTM controls - make search box expand
- Histogram controls - make slider expand
2013-01-08 09:48:37 +00:00
Mark Liversedge
ec73766677 UI Nits: Filter Tooltip colors 2012-11-07 10:24:00 +00:00
Mark Liversedge
44d4455067 UI Nits: SearchBox menu and Tooltip
Use the wrong stylesheet and are hard to read. This adjusts
tooltip and menu to make them more readable but may not be
ideal for those with heavily customised setups.
2012-11-06 13:50:04 +00:00
Mark Liversedge
83977a3ab9 UI Nits: Named Search Input Box
The named search dialog box uses the same style sheet as
the search box, which looks odd in a dialog box.

This patch ensures the stylesheet is only applied to the
search box and not any children.
2012-11-06 13:26:40 +00:00
Mark Liversedge
e09cb7b185 Mac UI Sidebar Cosmetics
The sidebar elements all get a blue focus rectangle on
Mac OSX. This is a platform specific setting. This patch
removes the focus rectangle for sidebar components only.
2012-11-06 11:16:41 +00:00
Mark Liversedge
a5bcec5265 Data Filter (Part 3 of 3)
Last part of the search/filter functionality;

* SearchBox now incorporates filter and search
  with a new widget. We can update this widget
  to include more fancy UI/Interactions without
  having to change the ride list or charts etc.

* Added search/filter widget to the relevant charts
  and screens; Metrics, TreeMap, CP, Histogram,
  Activity Log, Ride list (refactored out of MainWindow)

* Added namedsearches.xml and adding/selecting them
  from a drop down menu on the search box.

* Fixed some performance bugs related to duplicate
  signals and redraw/reprocessing. Also ensured that
  CLucene remains optional -- but means no search or
  filter functionality unless it is available.
2012-11-05 15:44:01 +00:00
Mark Liversedge
68aab9dfad Data Filter (Part 2 of 3)
Added evaluation of filters and integrated with the ride list, this
means the user can filter the rides listed.

Additionally the search box will highlight the filter in red if
it doesn't parse correctly, and a tooltip describes the errors.
2012-10-29 15:33:08 +00:00
Mark Liversedge
7e4786bc5a Data Filter (Part 1 of 3)
Part 1 of Data filtering, this patch adds the ability
to enter and parse filter statements in the search box
(by clicking on the magnifying glass it becomes a filter
box).

The statements can reference metrics and metadata fields
allowing the user to define boolean expressions to filter
data. An example of the syntax;

    Average_Power > 200 and Duration > 3600

This references the metric Average_Power and ride Duration. But
will also support operations on metadata fields, for example;

    Workout_Code endsWith "SST"

The operators are;
    = <> > >= < <= matches contains endswith beginswith
    ( ) && and || or

Filters are syntactically and semantically validated. But at
this point the resulting tree is not evaluated, i.e. we can
parse the filters, but do not execute them.

Two further updates are pending (once written and tested):
- Part 2 of 3 : Execute filters and apply to the ride list
- Part 3 of 3 : Allow named filters and apply to LTM charts

Further updates will support a visual editor and allowing filters
to be applied to CP and Histogram charts and affect the PMC stress
calculators.
2012-10-28 20:05:12 +00:00
Mark Liversedge
b3da24901e Change Search Strategy
1. Use the whitespace analyzer so its easier to search for
tokens that are a mix of letters and numbers e.g. workout
codes and TT route names.

2. Search as you type. Since we have very small collections
to search across (typically no more than a couple of thousand)
there is no major overhead in searching as you type.

3. Search all texts by default not just the Notes field. This is
a more appropriate default and is less likely to confuse new
users. In addition, it is most likely what most users want to
do anyway.
2012-10-27 08:46:36 +01:00
Mark Liversedge
844daef864 Searchbox toggle search/filter
Clicking the icon to toggle between text search and
data filter mode for searchbox.

As part of filtering implementation.
2012-10-23 21:27:06 +01:00