DBM A NEW TASK MANAGEMENT TOOL

DBM - A new Task management Tool


Motivation:

Let’s asume that there is a team of developers working together on a project.

It’s important, to write down every task, issue and problem, which needs to be adressed during the course of development.

Once a problem is on the task list, it might be delegated to a team memner, who is resposible for. For each task, a responsible person might be assigned, a target date might be specified and maybe also the working progress might be set (0% done, 25%, 50%, 75%, 100% done).

The simplest way for such a tasklist would be to create an excel sheet and use it as a kind of tasklist to drive the project. But hold on, although this can be done, it is not really the way to go.

In fact, such a taskmanagement application does not need to be complex. The key is a simple application which can be used simultaneously by each member of the team.

The main work is to quickly edit the tasklist and the task follow-up as the core business is the product development.

Summary:

  • Create a simple and easy to use application which can be used within a group of people to follow up tasks.

  • From a user point of view, the software should be fairly simple, the main focus is to work on one common source of information in real time.

  • The layout of the database (table) or interface should be freely editable and defineable (just like in a spread sheet application).

  • Data handling and management (to enter information, to filter existing data) should be intuitive and fast (without extra dialogs which needs to be filled in, etc…). In fact, the whole data management process should be somehow click-optimized.


Furthermore:

  • The application should be fairly easy to install, with no pre-requisites to be installed and as less dependencies as possible.
  • The software does not necessarily to be a web enabled solution, just needs to have multi-user capability.
  • No cloud based information storage wanted (for security), ideally the database should be just a file on a shared network drive.

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 tasklist over the web has some charm, but is not allways 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 ?…


Implementation:

With tcl/tk in mind, it soon becomes quite clear of how the implementaion of the above mentioned requirements will look like.

Sqlite:

SQLite for the database, there is no question about it, great thanks for this amazing piece of software.

  • The only question left for me so far:

    • is sqlite really capable to handle multi-user access ?

    • can the databasefile be located on a shared network drive (and maybe the share is accessed over aa remote VPN connection)?

    • and what, if for whatever reason the database file should be accessible over the net controlled via http and a web server?

      O.k. that’s definitly not the aim of sqlite (serverless), but there is allways a solution… In short: later on, I discovered that actually it is possible to implement a small PHP layer which can bridge the sqlite access.

    Let’s find out…


Tablelist:

tablelist for the main part of the GUI, there is also no question about it.

  • tablelist is a pure tcl/tk package, which I normally prefer in order to keep things simple
  • tablelist is active developed and thanks to Csaba Nemethi, there was a lot of improvements done recently
  • I also feel quite familar with tablelist and I really like this package.

BWidget:

BWidget still comes in quite handy to build the GUI.

Some goodies to point out:

  • nice and usefull gui widgets,
  • easy to programm with a clear interface and good documentation,
  • the package is still maintained and there is a good maintanance and bug fixing, (although there is not so much new development going on so far),
  • has been adopted to work with ttk

Overview of packages used so far:

In fact the DBM is based on the following packages and additional software applications:

icon1Public / tcllibicon2Custom packagesicon1Binary packages
autoscroll1.1customframe0.2Img-win32-1.4.7
base64_2.4.2dbmanager0.1sqlite33.12.2
Bwidget_1.9.12_mindiskutil0.1tkdnd2.8
BWidget_patch0.1dynnotebook0.3.1Tkhtml30-x86
cmdline1.5fontseldialog0.1Tktable2.11
comboboxgetfileordirectory0.1.4.2treectrl2.4.1
datechooser0.8html3widget0.2.5Trf2.1.4
fileutil1.15imageviewer1.6.1twapi
http1.5.3infowindow1.3.4twapi-bin
http1.7rframe0.2.1zlibtcl1.2.8
inifile0.3sashmanager0.1.1
json1.3.4savedefault1.3tksqlite-0.5.13-modified.vfs
led-0.0.2screenshot0.2.2Markdown2Go2.2.exe
mentry3.7_minscrolledwidget0.2
markdown1.0sqlitecmd0.1
tablelist6.5_bugfixsqlitedb0.1
textutil0.8styledentry0.1.1
tkexcel0.1stylemgr0.24.2
tooltip1.4.4text2rotatedimage0.1.1
xscale0.21

The column in the middle belongs to packages made from scratch or adopted from already existing source. It clearly shows that even with the massive help public domain packages, there is still quite some effort needed to bring an application to live.


DBM Usage

Short overview:

The DBM is essentially an application that allows to create and manage arbitrary tables.

Tables may e.g. Worklists, 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:

Dbm_overview


Table layout and value entry:

The behaviour 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 datechooser dialog pops up automatically.

The following type declarations are possible:

Attribute:Usage / assigned function:
INTEGERUnique line number, usually: PRIMARY KEY UNIQUE NOT NULL
DATETIMEDate, datechooser dialog box will be displayed
TEXTText input, text editor will be displayed, the text editor window also allows to enter multi-line text
BOOLEANYes / No Switch, when clicking on a field, the status is changed immediately
NUMERICin conjunction with the DONE% keyword, a filter dialogbox will be displayed

Example - 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
)

Summary:

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.


Function overview:

File Operations:

Function:Description:
folderOpen Existing Database…Select existing sqlite database file.
application-default-iconCreate new Database…Use this function to create something new.
edit-closeClose 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.
folder16Export 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.

accessories-text-editor Database Manager…

The database manager allows to manage the underlying database to its full extend.

Notes:

  • Make shure 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:

  • _images required 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_sequence Required 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.

    • The Create backup function 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 *.bak extension).

  • 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!


Tablelist functions:

FunctionDescription
edit-find-5RefreshRe-read all table information according to the actual database information.
edit-copy-6New ItemInsert 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.
archive-removeDelete ItemThe currently selected row will be deleted. If there is nothing selected, no action takes place.
edit-redoRecalculate IndexAllows to re-calculate all row index numbers (1st column).
document-exportExportAllows 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).

Image handling:

image_panel_overview

There is a basic functionality available which allows to attach images (e.g. screenshots) 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

export_markdown

Experimental:

  • The Markdown2Go executable needs to be stored in in the same directory as the DBM executable.

Remark: 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:

user_defined_preferences

SettingDescription
Font Selection DialogHint: font types with UI in the name are (maybe a bit more) easier to read.
Automatically openWhen enabled, the previously selected table is automaticly opend the next time the program is launched (recommended setting).
Sidepanel animationEnable/disable a dynamic effect of the side panel.
Scroll to bottomScroll down automaticly to the bottom once a new table will be opend or the refresh button is pressed (recommended setting).
Fixed title columnIf enabled, the 1st column keeps visible all the time (recommended setting).
Allow resizeable header itemsIf enabled, it is possible to move each column of the tablelist individually (if in doubt, leave this option deactivated).
Enable moveover effectIf 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 spacingTo 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 requred to re-open the actual tablelist window.
Header max.heightAllows to specify the max.height of the header line (in pixel). Default is 60px. Once this setting is changed, it is requred to re-open the actual tablelist window.
Imagepanel heightAllows to specify the height of the image panel (in pixel). The default value is 100px.

DBM Software:

Name:Size / byte:
DBM0.3.1_windows_binary.zip12736403
Markdown2Go2.2_windows_binary.zip10935964
test.db8192