Development/Plans

From Glom
< Development
Revision as of 22:45, 20 June 2006 by Murrayc (Talk | contribs)

Jump to: navigation, search

Please consider funding my work on Glom so that I can implement all these features. Murray Cumming

Or you could just donate via PayPal: x-click-but04.gif

1.0 Features

Done

  • Table Add/Remove: Plus set a startup default, and hide secondary tables from users.
  • Field Definitions: Just the basics.
  • Calculated Fields: For instance, totals, concatenation. Uses python. Recalculates existing values when changing the calculation.
  • Relationship Definitions
  • List and Details views
  • Automatic Layout: No awkward pixel-perfect positioning and no mess when translating.
  • Layout Design: Not pretty, but it works.
  • Related Fields: Show fields from related records, such as a contact name. Optionally create/edit related records via this.
  • Related Records: Show a list of related records on the layout, such as invoice lines. Create related records automatically.
  • Lookups: Store values from related records, such as a product price.
  • Drop-down choices "Value Lists" in FileMaker. For instance, a list of products when entering a product code.
  • Internationalized input and display: For instance, commas instead of dots for German numbers.
  • Access Control: Define groups (containing users) and their create/delete/view/edit rights for each table.
  • Finding: Let the user enter text in the regular layout and just click Find. No query language, no choosing fields, no explicit boolean nonsense. Do substring case-insensitive searching instead of for exact matches.
  • Printing: Simple default print layout, to HTML in the browser.
  • Simple "By" Reports
  • Minimal formatting options: Optional thousands separator, optional currency, decimal places. With check box to specify default formatting instead, with default formatting options as part of the field definition dialog.
  • Image fields: Show and save pictures in the database.
  • Related field Details button: A button next to IDs, when that is part of a to-one relationship, which takes the user to the full details for that related record.
  • Find ID button: A button next to lookup keys (fields used by looked-up fields) that opens a find dialog, to find an ID. Necessary when a drop-down list would be too big.
  • Remember Position: When returning to a table, in the same session, show the same layout (list or details) and the same record as last time.
  • Quick Find: Add an Entry to the layout in Find mode, use the input to search all fields, google-style. Time: 30 hours.
  • Find-Set information: Show whether we are looking at all records or just the result of a find. Allow us to change to all records Time: 20 hours.
  • Internationalization: Allow developers to enter titles (tables, fields, reports, relationships) for non-english languages. Time: 60 hours.
  • Scripting: Buttons may be added to the layout. When clicked they run custom python code.
  • System Properties relationship: Add "system properties" relationship to all lists of relationships, to provide access to, for instance, the organisation address. Time: 30 hours.
  • Doubly Related fields: For instance, allow Character::Actor(via Character::contact_id)::Agent(via Contacts::agent_id)::name on a Character details view.
  • Tabs: Add a notebook layout part. For instance, this would allow multiple related portals without making the layout huge.
  • Sort Found Set: Click on list column headers to sort.
  • Choose Date From Calendar: Add a calendar button next to date fields.

To Do

  • Tests: Make sure it all works together.


Post-1.0 Features

  • Quickly add Relationship/Field: For instance, when adding a field to a layout, quickly add a relationship so that you can add a field from it, without closing the layout window, opening the relationships window, and opening the layout window again. Or to quickly add a field to the current table when adding a field to the layout dialog. Or, when specifying a related choices lists (in a Field'a default formatting). (30 hours)
  • Automatic Server Detection: Patch postgres to use avahi for ZeroConf/Bonjour/Rendezvous service broadcast. Postgres already uses Bonjour on MacOS X.
  • Deal with lots of data The custom tree model should progressively gets only the record values that are visible in the scrolled window, but I am not sure if libgda has already requested the entire result set. The new libgda API might be better.
  • Custom Print Layout: For instance, a perfect-looking official invoice. Implement with CSS fixed positioning? Time: 80 hours.
  • Non-Indexed Calculated Fields: Optionally don't store values - just recalc them when seen/used, and therefore don't allow their use in relationships, though that's awkwardly technical when seen in FileMaker. Time-to-complete: 60 hours.
  • Internationalization via .po files: Add Export and Import buttons to Translations Window, so translators can use their usual .po file tools. Time: 10 hours.
  • Locking: Don't let a second user edit the same record. (Delay unlock for 5 seconds after entry loses focus). Update the display when the second user changes the same record. Time: 50 hours.
  • Drag-and-drop layout: Add a panel of available items and show visual feedback as they are moved around on the layout. But still use the automatic-layout system. Time: 60 hours.
  • Relationships Overview: See a picture of all the tables, with all their relationships to each other. Use a canvas and let the user drag the tables around. Time: 70 hours.
  • Related Records as Calendar: Display a portal of related records in a calendar, using a specified field as the date.
  • Warn when deleting used fields and relationships: If a field or relationship is on a layout or report, or a field is in a relationship, warn before deleting.
  • Scripting: Most common actions should be standard features without the awkwardness of scripting, but maybe we need some way via the custom buttons to, for instance, on Contacts details create a related Invoice and take you to the Invoice details. For this, we must just present a python API for some parts of the Glom structure in addition to the current record object.
  • Multi-column relationships: Match on 2 key fields instead of just one. Time: 30 hours.
  • Performance:: Keep connection alive, do less by-value copying, more caching and hashing. libgda 2.0 (when finished) should help with this.
  • GUI for creating the initial user, after asking for the root password.
  • Windows Port: Shouldn't be too difficult. All dependencies are portable. Time: 60 hours.
  • Web UI: Possible in principle, though it couldn't be so responsive as a desktop application. All the needed information is in the .glom document. Something for a web developer, and there's no need to choose a favourite language/platform - just do it.
  • Alien Tables: Allows some tables to get/set data in non-postgres sources, such as evolution-data-server, so people don't need to enter their contact information twice.