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. ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org