summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2021-01-10statistics: convert chart to QQuickItemGravatar Berthold Stoeger
It turns out that the wrong base class was used for the chart. QQuickWidget can only be used on desktop, not in a mobile UI. Therefore, turn this into a QQuickItem and move the container QQuickWidget into desktop-only code. Currently, this code is insane: The chart is rendered onto a QGraphicsScene (as it was before), which is then rendered into a QImage, which is transformed into a QSGTexture, which is then projected onto the device. This is performed on every mouse move event, since these events in general change the position of the info-box. The plan is to slowly convert elements such as the info-box into QQuickItems. Browsing the QtQuick documentation, this will not be much fun. Also note that the rendering currently tears, flickers and has antialiasing artifacts, most likely owing to integer (QImage) to floating point (QGraphicsScene, QQuickItem) conversion problems. The data flow is QGraphicsScene (float) -> QImage (int) -> QQuickItem (float). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10statistics: fix 20 m binnerGravatar Berthold Stoeger
Copy&paste error: the 20 m binner binned to 10 m. Reported-by: Peter Zaal <peter.zaal@gmail.com> Reported-by: Rick Walsh <rickmwalsh@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10statistics: add count to box and whisker plotsGravatar Berthold Stoeger
When calculating the quartiles, we need the count of dives anyway, which makes it trivial to export this value to the frontend. Fixes an erroneous "mean", which should be "median". Suggested-by: Peter Zaal <peter.zaal@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10Make sure to sanitize the gasmix after editing itGravatar Linus Torvalds
Otherwise we end up showing the gasmix in a different form after editing for the usual air percentages, because we haven't normalized the gasmix values and store them back in the dive in the non-normalized format. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-01-10btdiscovery - Add second matcher for Ratio iX3MGravatar Damian Zaremba
New (late 2020) iX3M hardware (refered to as 'iX3m with Sequared Buttons' in the Ratio support section) appears to identify as iX5M, both in the Bluetooth name and reported revision e.g. $ ./ratio-toolbox-x86_64.AppImage info | head -n2 Model: Ratio® iX5M GPS TECH+ Firmware version: 4.1.26/016 (English) Add a second Bluetooth name matcher for this variation, returning the same (generic) model as is currently used. Signed-off-by: Damian Zaremba <damian@damianzaremba.co.uk>
2021-01-10statistics: add tags variableGravatar Berthold Stoeger
Trivially a copy of the "buddies" code. Suggested-by: Peter Zaal <peter.zaal@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10statistics: sort dive sitesGravatar Berthold Stoeger
The dive sites where sorted by location in RAM, which is just silly. Add a DiveSiteWrapper that sorts by name, though that should probably be improved. Suggested-by: Peter Zaal <peter.zaal@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-10statistics: add min and max operations for numerical typesGravatar Berthold Stoeger
This makes sense and is easy to implement. Suggested-by: Peter Zaal <peter.zaal@gmail.com> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-09build.sh: recreate previous behavior with no argsGravatar Dirk Hohndel
When calling build.sh with no args asking for a specific build type, that should be equivalent with calling it with the -desktop arg. Reported-by: Salvador Cuñat <salvador.cunat@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-09statistics: fix range in categorical axesGravatar Berthold Stoeger
The range for a one-bin chart is [-0.5,0.5], thus the range in an n-bin chart is [-0.5,n-0.5], not [-0.5,n+0.5]. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-09statistics: add a dive-# variableGravatar Berthold Stoeger
This was requested on the mailing list and it makes sense to have it. Of course, not all charts make sense: e.g. a plot dive-# vs. count is a bit redundant... Sadly, this can't use the generic IntRangeBinner, because dive-#s start at 1, not 0. Suggested-by: Christof Arnosti <charno@charno.ch> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-09statistics: add a mean depth variableGravatar Berthold Stoeger
This was requested on the mailing list. Reduce code size somewhat by deriving the binner and the variable classes from common base classes with a mean-vs-max flag. Suggested-by: Christof Arnosti <charno@charno.ch> Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-07[snap] enable ccache in Linux Snap workflowGravatar Michał Sawicz
Also adding `push` to triggering events to populate the cache. Signed-off-by: Michał Sawicz <michal@sawicz.net>
2021-01-07[snap] add missing Qt5Charts dependencyGravatar Michał Sawicz
Signed-off-by: Michał Sawicz <michal@sawicz.net>
2021-01-07[snap] add Linux Snap workflowGravatar Michał Sawicz
This will build and verify the snap on pull requests to `master`. Signed-off-by: Michał Sawicz <michal@sawicz.net>
2021-01-07[snap] add daily USN checkGravatar Michał Sawicz
This workflow will download the current snaps published in the `candidate` channel for all architectures and check them for packages with published Ubuntu Security Notices. If it finds one, it will trigger a build of the snap recipe: https://code.launchpad.net/~subsurface/+snap/subsurface-stable This will rebuild the snap with patched packages and publish it to the `candidate` channel. Signed-off-by: Michał Sawicz <michal@sawicz.net>
2021-01-07statistics: add ticks at beginning and end of the axisGravatar Berthold Stoeger
The grid is based on the axis ticks. If labels in histogram axes were skipped (because there are too many bins), it could happen that the grid was incomplete, because the first and/or last tick were missing. Add these explicitly. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-06statistics: improve placement of info-boxGravatar Berthold Stoeger
The info box was placed either above or below the mouse-pointer. If the pointer is at the center and the infobox higher than half the chart, it would cross the border. Detect this case and place the info box at the center. Same logic for right/left, though that should typically not happen. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-06statistics: fix chart features: regression line and median/meanGravatar Berthold Stoeger
The coordinates of these were calculated when creating the feature. This is wrong, because the min/max values of the axes can change on resize to get "nice" number. Therefore, recalculate after resizing. This means that the general "LineMarker" class has to be split into two classes, one for regression lines and one for median/mean markers. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-06statistics: paint custom gridGravatar Berthold Stoeger
With removal of QtCharts' axes, the grid was lost. Readd it. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-06statistics: draw title of axesGravatar Berthold Stoeger
Easy enough to implement, but one weirdness: To get the height of the rotated text, one has to access the width() member of the boundingRect. I'm not sure if that makes sense, but so be it. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-06statistics: replace QtCharts' axesGravatar Berthold Stoeger
Replace by custom implementation, with the ultimate goal to remove the QtCharts module. This doesn't yet display axis titles or a grid. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-06statistics: set correct z-value for barsGravatar Berthold Stoeger
The bars were set to the z-value of the labels. Not an issue, since the labels are generated after the bars and therefore plot later. Still, do the right thing. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-06statistics: render titleGravatar Berthold Stoeger
Since we want to get rid of QtCharts, we have to render our own title. Simply keep around a QGraphicsSimpleTextItem and put in the center of the chart. Define the borders to the scene as constants. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-06statistics: save axis with seriesGravatar Berthold Stoeger
In the future we want to use our own axis implementation to convert from/to screen coordinates. For this purpose, we need to save the axes with the series. Especially if we want to support multiple series on different axes. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-06statistics: save chart in axis classGravatar Berthold Stoeger
The chart was passed as argument to the function recalculating the axis labels. Instead, pass the chart in the constructor of the axes and save it. This gains us flexibility for the future: There will be more functions that need to access the chart (e.g. resizing of the axes). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-06preferences: remove pointless memberGravatar Dirk Hohndel
This could never have worked the way it was used. Some whitespace fixes snuck into this commit. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-06desktop/update-check: fix logic when to ask about update checkGravatar Dirk Hohndel
Checking a field that we intentionally don't store to disk is obviously wrong. It's been this way for a long time and it has annoyed me many times, but somehow I never spent the time to track down why this was happening. It makes much more sense to use the presence of either the don't check flag or a next check date as an indication that we have already asked this question. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-06desktop/UI: move statistics to View menuGravatar Dirk Hohndel
It seems to make more sense to have it there with the 'Yearly Statistics' and not in the Log menu. Interestingly enough, both locations were clearly considered when first adding this in commit 106f7a8e0e ("desktop: add statistics widget dummy and application state") as you can tell by the never implemented actionViewStats. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-06dekstop/UI: remove duplicate resourceGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-06desktop/UI: add shortcut for 'Open cloud storage'Gravatar Dirk Hohndel
This seems like a logical extension of the shortcuts we already have. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-05Add dive rating and visibility to statistics variablesGravatar Robert C. Helling
Signed-off-by: Robert C. Helling <helling@atdotde.de>
2021-01-04stats: fix line segment intersection mathGravatar Dirk Hohndel
Linear algebra class was a while ago, but somehow this does look more logical to me. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-03build-system/AppImage: ensure stats dependencies get bundledGravatar Dirk Hohndel
This will make sure QtCharts is part of the AppImage. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-03statistics: don't crash if the QCharts QML modules aren't foundGravatar Dirk Hohndel
We don't really give a user visible error message which is kind of a problem, but at least we don't crash anymore. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-03statistics: don't reset binner if binner is setGravatar Berthold Stoeger
Recently code was added to reset variable 1 binner if the second variable does not support an unbinned first variable. It forgot to check whether a binner was already set. Do this. But validate the old binner first! This code is extremely fragile and will have to be redone. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-03desktop: rename Statistics tab to SummaryGravatar Dirk Hohndel
We now have three different things that are kinda like statistics: - the summary tab (reasonably useful when looking at selected dives) - the yearly statistics (Ctrl/CMD-Y) - the full statistics (Ctrl/CMD-T) I'd argue that's at least one too many. But I'm sure some people will disagree. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-03statistics: add CHANGELOGGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-03build-system/Windows: package the QtCharts QML resourcesGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-03statistics: clip regression lineGravatar Berthold Stoeger
A steep regression line would shoot out of the chart. Therefore, clip to the y = minY and y = maxY lines. QtGraphicsScene has its own clipping routines, but they are very general, so let's do this trivial case by hand. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-03statistics: use RoundRectItem for legend and info-boxGravatar Berthold Stoeger
Dirk says rounded corners look better. This now looks a bit extreme to me and probably the border size should be increased. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-03ui: create a RoundRectItem classGravatar Berthold Stoeger
Factor out code from ProfileWidget's ToolTipItem, but make the radius of the corners dynamic. Move into backend-shared, though a new ui-shared might be preferred. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-03statistics: add parentheses around percentage in horizontal barsGravatar Berthold Stoeger
For better visual guidance, format labels as "count (percentage)" in horizontal bar charts. In vertical bar charts two lines are used anyway. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-03statistics: charts drop down looks better with smaller iconsGravatar Dirk Hohndel
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-03statistics: chart icons look better with rounded cornersGravatar Dirk Hohndel
This is certainly a ridiculous bike shedding effort, but I do like this better. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2021-01-03statistics: fix silly typo in legend codeGravatar Berthold Stoeger
After each column, instead of setting the new x-variable, the new value was added to the old value. This led to ever increasing gaps. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-03statistics: reverse chart selection logicGravatar Berthold Stoeger
The old ways was to select the chart first, then depending on the chart choose the binning. Willem says that it should work the other way round: select the binning (or operation) and make the charts depend on that. I'm not arguing one way or the other, just note that the new way is much more tricky, because it is easy to get unsupported combinations. For example, there is no chart where the first variable is unbinned, but the second axis is binned or has an operation. This makes things distinctly more tricky and this code still needs a thorough audit. Since this is all more tricky, implement a "invalid" chart state. Ideally that should be never shown to the user, but let's try to be defensive. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-03desktop: add statistics widget dummy and application stateGravatar Berthold Stoeger
Add a new "statistics" application state. In the statistics state show the statistics widget and the filter in the top quadrants. The idea is to allow filtering and doing statistics at the same time. Sadly, we can't use the filter-widget in different quadrants, because Qt's ownership model is completely broken / inflexible. It does not support a widget having different parents and thus a widget can only belong to one QStackedWidget. Hiding the map in the statistics view is quite hacky: Since the view of the quadrants is not determined by the "ApplicationState", we have to restore the original quadrant visibility when exiting the stats mode. Therefore, set the original visibility-state when changing application state. The MainWindow-quadrant code really needs to be rewritten! Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-03statistics: implement a statistics widget on desktopGravatar Berthold Stoeger
Implement a widget that shows the statistics state as comboboxes and the statistics chart. Calls into the statistics code if any of the comboboxes changes. The hardest part here is the formatting of the charts list with its icons and with headings. Sadly, it is not trivial to arrange icons horizontally. Therefore we would have to fully reimplement the ComboBox view, which is probably not fun. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-01-03statistics: add a model that describes a list of chartsGravatar Berthold Stoeger
Qt's comboboxes are controlled by models, there's no way around that. To customize the chart-selection widget this must therefore be abstracted into a model. On the upside, this hopefully can be used for desktop and mobile. The model provides icons and paints a warning-symbol on it if the statistics core code deems the chart to be not recommended. Notably, when plotting a categorical bar chart against a numerical value (in such a case histograms are preferred). Includes a fix for a silly oversight in CMakelist.txt: add the statstranslations.h header. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>