tc3t / dfglib Goto Github PK
View Code? Open in Web Editor NEWExperimental general purpose utility library for C++, which has become mostly a backbone for csv-oriented table editor, dfgQtTableEditor, included in the repository in dfgExamples.
Experimental general purpose utility library for C++, which has become mostly a backbone for csv-oriented table editor, dfgQtTableEditor, included in the repository in dfgExamples.
To prevent accidental edits and to make it possible to tune UI for read-only use case (could e.g. hide edit-related menu items in context menus).
Both in guide and in context menu dialogs.
Parsing input such as
"a",b
with separator auto detection fails to detect second cell and results to only one cell handler call with content a
Diff application seem to have some problems dealing with unit separator (\1F), so to be revised if it is a good default choice as separator instead of comma.
Currently many of the unit tests use loops and templates and if something fails, reasoning about the actual cause from the output maybe hard as failing line can occur in various contexts. There are ways readily available to improve such cases and those might worth taking into use at least when writing new tests.
Some references:
https://stackoverflow.com/questions/17079702/gtest-testing-template-class
https://stackoverflow.com/questions/50843846/gtest-report-index-variable-for-loop-with-expect-eq
https://github.com/google/googletest/blob/master/googletest/docs/primer.md
https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#typed-tests
JSON-based controls are not that convenient to use so for better user experience, need "basic" and "advanced" modes for chart item definition widget.
Currently trying to open file that uses \r EOL causes even for relatively small file the table to have huge number of columns. Since every column among other things allocates 2k content block, this can easily cause memory consumption to grow too much or if memory consumption can be coped with, table view view may effectively freeze due to the high number of columns.
(row, ptr)-container might be better as vector-based instead of map-based. If, however, keeping map-based structure, at least SoA-style should probably be used to avoid wasting space for padding as current happens in 64-bit builds (pair size with int32-index: 32-bit 4+4=8, with 64-bit 4+8+padding=16).
Currently if opening a file that takes too long to open, the only way to stop loading is to terminate the application. To require less dramatic actions, Open-dialog could provide "Cancel"-button.
Currently BasicIfStream calls fgetc() on every get(), which is pretty heavy operation compared to what would suffice in case that there was a separate read buffer from which to return next char.
Like CsvFileDataSource, but for reading from SQLite database.
New chart operation to be able to make custom element-wise transforms such as shifts, at least +-*/ is to be supported and it should be readily available to add unary operations later on.
To show detailed information about nearby points, e.g. for scatter plots (x, y) values.
In order to keep the chart definitions between different sessions, json-list could be stored e.g. to .conf-file related to the .csv-file.
Needs new chart item properties and actual plotting implementation. For implementation with QCustomPlot, see QCPLayoutGrid and setupAdvancedAxesDemo() in examples.
Currently the only way to save a filtered view is to copy-paste it to a new table and save. There could be a direct option "Save visible".
Currently all graphs have the same line/point colour and while it can can set manually, for convenience different graphs in same panel should automatically have different colours.
With csv/sqlite file data sources and json chart entry definition, it should be possible to create e.g. a command line application doing chart exports without user interaction. Either completely new example or bundled to dfgQtTableEditor.
Would make it possible to open filtered view without the need to every time manually "Open file with options".
QCustomPlot already has functionality available (QCustomPlot::savePdf() et al.), only context menu entries and dialog for choosing export parameters are needed.
Currently histograms can be created from numerical data, but not from text. With this feature it would be possible to do histogram from column content like
a,b,c,a,a,b,b,c,c,c,c,a
which would effectively be identical to bar chart (#35) from content
a,4
b,3
c,5
Currently it is possible to filter only by single column or from all columns. While it is often possible to achieve effectively the same multicolumn filtering result by using regexp and filtering from all columns, it is not always possible and possibly less convenient than being able to define filter expression for many columns.
For example through context menu.
Currently line colour can be controlled, but not fill colour of bars.
Ability to auto-expand panels could provide a convenient way to do some custom panel configurations without need for span controls.
For example creating three graphs where first would cover whole first grid line and the two others would be on second line, could be created by settings panels at (1, 1), (2, 1) and (2,2), and enabling auto-expand, which would detect that (1, 2) is empty and expand panel at (1, 1) rightwards.
Words such as 'chart', 'graph' and 'plot' may often be used more or less interchangeably, but at least within the library there should be defined terminology for clarity and consistency.
Add ability to enable/disable chart entries.
Commit 3390d1b fixed a performance issue as a first aid only for double types. Introduce improvement also for other types.
For example by negative indexes, could define "last N rows".
Instead of showing content only from a csv-file, table view would provide ability to open SQLite database and show the result of a query.
Requires:
Currently implementation is limited to types that have std::is_pod = true.
To allow opening filtered csv-file, e.g. only a small part of massive file. Filtering could be e.g.
In addition to CsvTableView, needs work at least in CsvItemModel.
In order to be able to add data transforms such as smoothing and pass windows, json-format should have support for defining sequence of transforms and internal structures be able to process them.
Add ability to select chart type for chart entries (e.g. scatter/histogram)
Feature is readily available in QCustomPlot (https://www.qcustomplot.com/index.php/demos/barchartdemo); a way to define the stack groups is needed.
Simple bar chart from content like
a,1
b,2
c,3
When drawing data that has x-values from "column x" and y-values from "column y", show these as axis titles.
Add ability to draw basic histograms
Blocked by: #7
Currently IfStreamBufferWithEncoding is not able to read files that are too big to fit in memory -> implement file stream fallback.
Currently filtered read always reads the whole input even when include rows has been defined and last row has been passed.
Currently show_legend can only be controlled in global_config
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.