[Kde-extra-gear] Announcing dataKiosk version 0.7

Adam Treat treat at kde.org
Tue Jun 14 00:07:31 CEST 2005


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 at 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.



More information about the Kde-extra-gear mailing list