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.