Thread: Announcing dataKiosk version 0.7

Announcing dataKiosk version 0.7

From
Adam Treat
Date:
Announcing dataKiosk version 0.7

******************************************************************************

-- What can this version of dataKiosk do? --

dataKiosk 0.7 can provide a fully featured data entry application tailored to
any SQL database in a matter of minutes.

-- What does fully featured mean? --

1. dataKiosk uses Trolltech's Qt SQL module which includes drivers for: MySQL,
    PostgreSQL, Oracle, MS SQL Server,IBM DB2, ODBC, SQLite, Interbase,
    Sybase.
          a) A single project can even include multiple tables from multiple
              databases.
          b) dataKiosk 0.7 ships with identical sample projects for both MySQL
              and PostgresSQL.

2. Integrated Basic, Advanced, and Custom SQL query modes that provide
    seamless searching capabilities no matter how simple or advanced your
    query needs.
          a) Basic searches are provided automatically via a search bar
              attached to every datatable.
          b) Advanced searches are available via a query editor allowing you
              to specify the tables/fields/operators and values you wish to
              narrow your search.
          c) Custom SQL searches allow you to edit the actual SQL used to
              generate your search.
          d) Advanced and Custom searches can be saved with the project to be
              used again and again.
          e) You can even specify parameters for your searches to be prompted
              from the user. Once the search is invoked a parameter prompt
              dialog pops up with data aware widgets asking the user for the
              appropriate parameters.

3. An optimized data entry form that automatically configures it's data aware
    widgets to the fields in your table including relation combo editors with
    full text completion.
          a) The data entry form can keep track of the state of the current
              record with a colorbox that surrounds the form indicating
              whether unsaved modifications have been made to the current
              record.
          b) The data entry form has navigation buttons and configurable
              keyboard shortcuts for optimum speed of entry.
          c) The relation combo editor has the ability to constrain itself to
              other values in the editor form.  Example: If I have two
              relation combo editors that point to the street and city values
              of an address, the street relation editor can be constrained to
              only display those streets from the current city value.

4. Customizable data tables that automatically include a search bar at the top
    which converts human language queries into SQL and filters accordingly.
          a) Data tables can be configured to display or exclude fields with
              customized labels.
          b) The fields order and many other properties are also configurable.
          c) Foreign key fields can be marked as such and configured to
              display another field via the foreign key relationship.

5. The ability to relate data tables with master-detail, one-to-one,
    one-to-many and many-to-many relationships.
          a) Selecting a particular record from the master table will
              constrain the child table's records and so on.
          b) The navigation buttons and keyboard shortcuts are sensitive to
              the relationships between fields.  For instance if you are
              currently in a child datatable that has a one-to-one
              relationship with it's parent and you navigate to the next
              record, you will actually navigate to the parent's next record.

6. Integrated data reports that can be configurably bound to any set of
    tables, fields and searches in your project.
          a) The reports can be associated with a particular saved search or
              they can be run against the current searches of their respective
              datatables.
          b) The reports can be configured to sort and group according to the
              set of fields associated with it.
          c) The reports automatically create a JOIN SQL statement combining
              the associated search (whether it is an Advanced search or a
              Custom SQL query) and the set of tables and fields associated
              with it.  The resultant data set is then used to generate an XML
              file and fed to Kugar.
          d) The reports can even display virtual fields. (See Below.)

7. Ability to specify the default sorting and grouping of your tables and
    reports. See above.

8. Virtual Fields can be added to any data table (and accordingly to any data
    report) and configured to calculate a user specified equation.  Every
    field in every table can be used as a variable in the virtual field along
    with constant variables like: current date, current time, a constant
    string or a constant number.

9. Clipboard manager modeled after the clipboard manager found in MS Excel or
    Access.  NOTE: This is not clippy!  It provides a clipboard stack that
    does not steal focus from the underlying editor form.  You can use this to
    copy disparate data into your editor form with tab navigation.

10. In short, INSERT/SELECT/DELETE and create a user friendly interface to any
      SQL database with a Qt SQL driver to your hearts content :)


HOMEPAGE: http://extragear.kde.org/apps/datakiosk/
EMAIL or CONTACT: treat@kde.org

Adam Treat

******************************************************************************

Detailed Changelog for dataKiosk 0.7:

* A number of changes after the freeze including the ability to insert and
   delete records... automatic inclusion of data fields that can not be null
   into the edit form... and more!

* Change the delimiter to relation combo's to '|' because comma's will screw
   up those fields with comma's in them.  Also, always paint the vertical line
   even when the field is null.

* Take into account the label's size when calculating the recommended size for
   a DataEditorBase.

* Lots of changes and bugs fixed.  Plus, the relation combo editor now
   supports top level constraints.

* Constraints now save state for relation editors.  Fixed the widths and made
   them more usable.

* Make sure to reset the child table when doing a search on the parent table
   turns up nothing.

* Propertly quote the constraint value and update the sample project to
   reflect this new feature.

* Handle null values in the edit form.

* Add a splashscreen for project loading.

* Implement explicit positioning of the datatables in the listview.

* Make the constraints bind to the dependent editor. When the dependent editor
   changes the constrained relation will update to reflect.

* Speed up the data report generation quite a lot by only selecting the fields
   from the database that are actually in the generated report.

* Strip some whitespace so foreign keys work with reports.

* Add a configuration menu for every field editor.

* NEW FEATURE: Virtual Fields
   Virtual Fields are fields that can be displayed in the edit form of a
   datatable, but do not actually exist in the database.  Instead, they are
   calculated from a simplified grammar created for DataKiosk.  The variables
   can include the current data,time,datatime stamps, and the current value of
   fields in the real database.  Operators include addition, subtraction,
   multiplication and division.  The virtual fields will eventually make their
   way into datareports.  Also, the configuration dialog for virtual fields
   also serves to specify whether _real_ datafields should be calculated upon
   INSERT statements from the equations alluded to above.  Eventually, you'll
   be able to tie this to a scripting engine to calculate all kinds of things.

* Update the sample project with a new virtual field of the Languages table
   that calculates the number of speakers of a given language in the country.
   It does this by multiplying Country.Population with
   CountryLanguage.Percentage. The virtual field is rendered with blue text on
   the edit form of the Languages table.

* Recalculate the virtual fields after a selection has been made in a parent
   table.

* Include Virtual Fields in the Data Report output.

* Make the name of virtual fields configurable.

* Add report field overrides to Relation Editors.  Now, you can mark a column
   as a preferred report field and it will be generated in place of the
   primary field in Kugar Reports.

* Fix null value problems that presented themselves when updating child
   tables.

* Change the order of the options for foreign/preferred.

* Add a new property of child datatables which describes the relationship it
   has with its parent.

* Added custom searches to the Advanced Search dialog allowing custom SQL
   along with the handy wizard.

* Quick browsing of parent tables when the parent/child relationship is
   one-to-one or many-to-one.

* Fix SQL generation of reports by moving the subselect filters of the
   individual tables into the FROM clause of the generated JOIN.

* Do not generate the report when it receives focus, rather wait for the user
   to generate a 'Refresh Report' action.

* Don't assume that a field marked as a primary key is unique.  The primary
   key itself must be unique, but they can be composed of multiple fields.

* Add a new alias function for proper namespacing.

* Rename the tabs as per Aaron's suggestion.

* Sanitize the alias so it can be used as a name for an xml attribute in the
   report generation.

* Double click on the View Table tab will bring you to the Edit Record tab as
   per Aaron's suggestion.

* Enable the context menu for View tab.

* Change the color of the selection to match the status of the current record.
   Green means the display matches the database and red means that something
   has been altered.

* Add a couple of icons for the insert/delete actions.

* Clean up insertion's so that they automatically begin on the Edit Record
   page.

* An aborted insert (the users scrolls to another record before the commit) is
   now deleted.

* Sorting columns must trigger a selection update.

* The View Table tab selection color now tracks the color box in the Edit
   Record tab.

* Implement changing the parent table's key by re-associating the child
   record.

* Introduced a new mode to the View Table tab which allows you to mouseover
   and select with a click.

* Update the selection on commit.

* Do not crash if we've removed a table and the saved searches no longer
   reference valid datatables or datafields.

* When the Relation Combo's constraint changes check to see if it is currently
   edited (ie, out of sync with the database) and if so, set the Relation
   Combo to a null value.

* If the Relation Combo constraint is changed back to match the database we
   should still setNullValue if the field itself is null.

* Get ready for a postgresql sample project and files.

* Add the postgres dump file and project file.

* Rename the mysql dump and project file.

* Fire SaveAs when Save doesn't have a filename and sort the fields upon load.

* Update the relations fields when the table changes.

* Rewrite how dataKiosk generates reports from the current search.  This will
   eventually allow the user to determine the sort order of the various report
   fields.

* Virtual fields and calculated fields now use the actual sanitized version of
   the table's label instead of the database table name.  Same goes for
   reports. Oh, and this is much faster too :)

* Implement sorting of reports according to the Report Wizard.

* Reset the ORDER BY when refreshing the table via the Clear Search button.

* Enable user specified default sorting of the datatables.

* Reports should be able to reference a particular saved search if need be.

* DataReports now can have a saved search as default.

* Set the searchline to display the advanced queries name instead of its first
   condition.  Also make sure to save the advanced query.

* Take the ampersand and related chars out of virtual fields too.

* Do LEFT JOIN for Reports not an INNER JOIN.

* Fix printing when more than one report is created.

* Add support for detail levels to generated Kugar reports.  This is another
   major requirement completed =)

* Various improvements and bugfixes WRT the saved searches.

* Edit Search and Remove Search only when we have a current saved search.

* Various fixes for editing saved searches.

* Add dialog class which will eventually allow popup prompts for advanced
   search fields.  These will be configured via the Advanced Search dialog.

* More changes to the advanced search prompt popup.

* Big changes to make the advanced search prompt popup work and work nicely :)

* There now, dataKiosk now has a working prompt for advanced and even custom
   sql queries.

* Custom SQL queries with popup prompts can now have multiple prompts for the
   same field.

* Store the custom queries in a safe way by removing special xml characters.

* Track unique values for advanced prompts.

* Don't set the override cursor until after the datasearch is invoked
   otherwise we might have an override in the middle of a prompt.

* Add a dialog for error handling when the database connection parameters
   change for some reason.

* Sneaking this new feature in before the next release ;) Ok, so has anyone
   seen the MS Office clipboard (NOTE: I'm emphatically __NOT__ talking about
   Clippy)?  Basically, it is a little dialog that allows the user to keep
   track of multiple copy buffers.  Not that different from Klipper or BasKet,
   right?  Well, yes it is different in one key respect: it doesn't gain
   keyboard focus at all.  This means that Keyboard focus remains with the
   application you are working on... in this case the Editor view of
   DataKiosk.  The user can then tab around the Editor with his keyboard and
   very quickly pasting into it with his/her mouse.  This is really useful for
   data entry applications...  So, how do I keep the dialog from ever gaining
   keyboard focus?  Simple.  I don't let the window manager manage the dialog.
   This means I had to recreate the title bar, border, buttons, etc, etc.  It
   is definately hackish, but seems to work exactly like the MS Office
   clipboard.

* Fix a few annoying bugs remaining in the foreign key wizards.

* No reason to exclude primary keys from having a foreign relation.