DBM - A New Task Management Tool
Some more thoughts:
Nowadays task management software is quite popular and most of the available solutions are web-based.
The advantage of getting access to the actual task-list over the web has some charm, but is not always wanted.
Because of security reasons, it might be a better solution to share information over a VPN tunnel with defined access rights.
The PHP/MySQL/Apache stack sometimes is a bit overkill and of course you need a provider.
And what, if your network is not attached to the www and has no web server running ?…
With tcl/tk in mind, it soon becomes quite clear of how the implementation of the above mentioned requirements will look like.
It took me quite a while to develop the program, but here it is!
The DBM is essentially an application that allows to create and manage arbitrary (database-)tables.
Tables may e.g. work-lists, to-do lists, checklists, etc. Thus, the DBM is suitable as a task management tool within a team.
Features in brief:
The DBM is based on SQLite, whereas the database consists of only one file.
The database does not need a server.
Any number of users can edit the same database table at the same time.
The database file is not “locked”, changes are made under transaction control, i.e. as long as a transaction is not completed, it will not be visible to other users.
Database changes are updated within the GUI with the help of the “Refresh” button.
There is no “save data” - changes are saved directly in the database!
A database manager (based on tkSQLite) is available for managing the database tables.
Main dialog window:
Table layout and value entry:
The behavior of a database table entry can be controlled via the corresponding type declaration.
So for instance, if the type declaration is
TEXT, a text entry window is automatically available to enter text.
Or if the type is declared as
DATETIME, a date-chooser dialog pops up automatically.
The following type declarations are possible:
|Attribute:||Usage / assigned function:|
||Unique line number, usually: PRIMARY KEY UNIQUE NOT NULL|
||Date, date-chooser dialog box will be displayed|
||Text input, text editor will be displayed, the text editor window also allows to enter multi-line text|
||Yes / No Switch, when clicking on a field, the status is changed immediately|
||in conjunction with the
Example - showing a typical table layout:
CREATE TABLE 'Project_X_Worklist' ( 'Nr' INTEGER PRIMARY KEY UNIQUE NOT NULL, 'CDATE' DATETIME, 'MNR' INTEGER, 'Description' TEXT, 'Remark' TEXT, 'Johann' BOOLEAN, 'Hugo' BOOLEAN, 'NAME-1' BOOLEAN, 'NAME-2' BOOLEAN, 'DEADLINE' DATETIME, 'DONE %' NUMERIC )
The DBM is meant to be: a replacement for a spreadsheet to manage open issues within a group of people.
For what the DBM is not meant to be: as a replacement for a database. The DBM works in the background exactly the same as a database application (SQL driven), although it’s intention is to be a tool for entering and sharing information in a quick and easy way.
|Open Existing Database…||Select existing sqlite database file.|
|Create new Database…||Use this function to create something new.|
|Close Database…||Use this function as usual to close the a actual database.|
|Clean temporary files…||Used to wipe out user settings from the system’s TEMP directory.Once deleted, the application needs to be closed and re-opened.|
|Export all available Images…||Images (if any) can be exported to file.
The function asks to specify the export directory.
All images are organized in the export directory as sub-folders according to their individual table item number.
The database manager allows to manage the underlying database to its full extend.
Make sure to create a backup before modifying the database.
If there are images available on the database, it might be a good idea to export this information as well.
If a table is deleted by accident, all data is lost, there is no undo function implemented.
Changes on the table layout can be done at any time. Once a change is done, the GUI needs to be re-opended.
The following nomenclature is used for internal tables:
_imagesrequired for image storage, images are directly written to the database as BLOB (binary large objects). The corresponding image table will be created automatically for each data table.
sqlite_sequenceRequired internally for the sequence counter. Under no circumstances delete this table.
Backup & Restore:
Create Backup File...
Creates a snapshot file of the currently open database. In general, it is recommended to use this function periodically to create a backup copy.
This function can be called at any time.
On the other hand, backing up the database file with the file manager is not recommended, doing so, the data integrity is not is ensured.
Create backupfunction uses the API of the database, so it also takes care of data integrity even if there are more than one user accessing the database at the same time. The database will not be blocked.
The backup file will be stored side by side to the actual database file (same name, but with
Restore from Backup...
This function restores all tables and informations from an existing backup file.
Attention: Be aware, that all changes which could have been done in the meantime are lost!
|Refresh||Re-read all table information according to the actual database information.|
|New Item||Insert a new data entry.
Database item is selected: the new item is inserted directly after the current selection, all following rows are pushed down, row numbering will be modified accordingly.
Nothing selected: The new item appears after the last row.
|Delete Item||The currently selected row will be deleted. If there is nothing selected, no action takes place.|
|Recalculate Index||Allows to re-calculate all row index numbers (1st column).|
|Export||Allows to export a database table as an excel file.
Remark: Only those information, which is visible in the dialog is exported (what you see is what you get).
There is a basic functionality available which allows to attach images (e.g. screen-shots) to each individual row entry. The number of images per item is not restricted.
Big sized images are shrinked down to a predefined size. This might take some time. For each image a thumbnail is created in parallel to speed up the dialog a little bit.
Export tablelist to Markdown
The Markdown2Go executable needs to be stored in in the same directory as the DBM executable.
Note: If required, columns can be hidden before starting the export. There is a no-show filter (right mouse button in the tablelist widget) available for doing that.
Preferences / Settings:
|Font Selection Dialog||Hint: font types with UI in the name are (maybe a bit more) easier to read.|
|Automatically open||When enabled, the previously selected table is automatically opend the next time the program is launched (recommended setting).|
|Side-panel animation||Enable/disable a dynamic effect of the side panel.|
|Scroll to bottom||Scroll down automatically to the bottom once a new table will be opend or the refresh button is pressed (recommended setting).|
|Fixed title column||If enabled, the 1st column keeps visible all the time (recommended setting).|
|Allow resizeable header items||If enabled, it is possible to move each column of the tablelist individually (if in doubt, leave this option deactivated).|
|Enable move over effect||If enabled, a visual effect is shown when hovering with the mouse pointer over the tablelist.
There are some side-effects with the arrow navigation, so for the moment this option is stated as experimental. (If in doubt, leave this option deactivated).
|Additional row spacing||To add extra space above and below each tablelist row (in pixel).
The value 5 is recommended to make the table more readable. Once this setting is changed, it is required to re-open the actual tablelist window.
|Header max.height||Allows to specify the max.height of the header line (in pixel). Default is 60px. Once this setting is changed, it is required to re-open the actual tablelist window.|
|Imagepanel height||Allows to specify the height of the image panel (in pixel). The default value is 100px.|
|Name:||Size / byte:|
Last modified date: 09.05.2020