Giter Site home page Giter Site logo

tc3t / dfglib Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 3.0 8.77 MB

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.

C++ 98.59% C 0.13% CMake 0.08% QMake 0.46% Batchfile 0.14% HTML 0.60%
cpp csv csv-parser library

dfglib's People

Contributors

kluge avatar tc3t avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

paulharris kluge

dfglib's Issues

Testing: Improvements to template and loop handling in unit testing

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

qt::CsvItemModel: auto detection for \r EOL

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.

cont::TableSz: improve (row, ptr) storage

(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).

Examples: new example for automated chart export

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.

qt::charts: ability export chart to file

QCustomPlot already has functionality available (QCustomPlot::savePdf() et al.), only context menu entries and dialog for choosing export parameters are needed.

qt::charts: ability to create histograms from text content

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

qt::TableEditor: add multicolumn filtering

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.

qt::charts: auto-expand option for grid panels

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.

qt::charts: revise terminology

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.

qt::CsvTableView: Ability to open table from SQLite database

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:

  • CsvItemModel: support for opening and querying from SQLite database
  • CsvTableView: support opening from context menus
  • TableEditor: Text edit for providing query

qt::CsvTableView: add "Open filtered"-functionality

To allow opening filtered csv-file, e.g. only a small part of massive file. Filtering could be e.g.

  • Filter text similar to the one in TableEditor
  • Column selection (e.g. 'only selected' or 'all except selected')

In addition to CsvTableView, needs work at least in CsvItemModel.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.