Subject Re: [firebird-support] GUI for Firebird
Author Milan Babuskov
Nigel Weeks wrote:
> You've got an user-interface creator that you use in your work - got any
> info about it?

It's PHP driven. It supports:

- simple tables (and views)
- foreign key lookups (now with fast-search like PHP function list on php website)
- cascading lookups (a selected value in one lookup can be filter for some other
- master-detail relationships (even multilevel)
- nice javascript GUI calendar for date fields
- formatter for integer/decimal fields
- simple builder interface where you can define which fields you need, and
determine their properties

The architecture:

1. builder-interface
A small php web application which connects to database of your choice, loads
list of tables and their fields, and lets you define fields. Fields can have
many definitions like:
- label
- data type (text, memo, date, timestamp, decimal)
- primary key
- foreign key (other table, key in other table, field in other table used for
- not null
- use generator
- allow-insert
- allow-update
- visible/hidden
- etc.

2. the builder interface saves definition in database (makes 2 additional tables
for that) so you can access it later. It also generates a simple "definition
file". That file contains a bunch of PHP variables (mostly arrays) that define
what can be done. There are things which builder interface does not support yet,
but the engine(3) itself does, so you can fine-tune it in these text files.

3. The generator (engine)
It loads the "definition file" at runtime and runs the application. As you can
see, there really is no "final" PHP code. The entire application is run by
engine. Of course, you can add some custom .php files and link back-and-forth
without any problems. The entire GUI is divided in three parts:

- menu: a left side frame with tree that acts as a menu

- data overview: each menu item opens a HTML table with shows content of some
database table. It shows limited number of items, with Prev/Next navigation
elements. The number of items can be configured by user. Each item has a link to
edit it, there is a button to add new item, and a search field, that enables
user to search on the table/view (even with FK-related fields). You can also
click on any column in header and sort by that column (first click for ascending
second for descending).

- form: the simple HTML form opens with all the fields, you can enter/edit
values and depending on action selected in "data overview" you can insert,
update or delete.

> Did you write it? Do you sell it?

I wrote it, and I'm still writing it. I still don't consider selling it since:

a) it does have the functionality, but the builder-interface needs a lot of
improving before it could be ready for public. I still write some field
definitions by hand.

b) it is in Serbian language, I'd have to translate it to english first

c) since I only use it for myself currently, it needs much more documentation

d) it needs some improvement in making design (colors, fonts, etc.) independent
of engine

I'm not sure whether or when I'd prepare it for selling. The thing is that I'm
way too busy with using it ;)

Milan Babuskov