Difference between revisions of "WikiDB/Roadmap"

From TestWiki
Jump to: navigation, search
(Planned features (in progress): IMPLEMENTED: The 'number' data type is now locale aware on input)
(Planned features (in progress): Added a bunch of current WIP stuff and re-ordered/re-grouped to break things down better.)
Line 7: Line 7:
 
== Planned features (in progress) ==
 
== Planned features (in progress) ==
  
=== Back-end ===
+
=== Table definitions ===
 +
 
 +
* Allow foreign keys to be defined.
 +
* <code>&lt;data&gt;</code> tags on Table pages should allow the <code>table</code> attribute to be omitted (defaulting to the current page).
 +
* Allow 'closed' tables (where all data is supplied on the schema page), as a method for implementing Enum fields.
 +
 
 +
=== Data types ===
 +
 
 +
* Introduce new class-based method for defining data types (custom and internal) to improve code re-use and to make it easier to add new features.
 
* Add 'date' data-type.
 
* Add 'date' data-type.
* Joins in queries
+
 
* Foreign key definitions
+
=== Querying back-end ===
 +
 
 +
* Allow JOINS in queries.
 +
* Add support for boolean NOT operator (AND, OR and XOR are implemented, but NOT is unary and therefore trickier).
 +
* Add support for LIKE comparisons?
 +
* Add support for REGEX comparisons?
 +
* Add support for OFFSET/LIMIT.
 +
* Add support for field lists and DISTINCT clause.
 +
* Add support for calculated fields.
 +
* Add support for custom functions.
  
 
=== Syntax ===
 
=== Syntax ===
* Repeat tag - Add boolean NOT operator (AND, OR and XOR are implemented, but NOT is unary and therefore trickier).
+
 
* Repeat tag - Allow LIMIT argument (or maybe 'range'), possibly with pagination.
+
* Formalise syntax for referring to identifiers and literals.
* Provide a mechanism for 'pass-through' parameters to the &lt;data&gt; tag (i.e. parameters that are supplied to the template, but which don't get added to the table).  Suggestion is to prefix the name with an exclamation mark.  Alternatively, an underscore could be used, as this is already reserved in table definitions, and therefore is not allowed in data tags (though this is not enforced) - may kill two birds with one stone...
+
* <code>&lt;repeat&gt;</code> tag:
 +
** Allow LIMIT argument (or maybe 'range'), possibly with pagination.
 +
** Add ability to specify field list and limit to DISTINCT rows.
 +
* &lt;data&gt; tag:
 +
** Provide a mechanism for 'pass-through' parameters (i.e. parameters that are supplied to the template, but which don't get added to the table).  Suggestion is to prefix the name with an exclamation mark.  Alternatively, an underscore could be used, as this is already reserved in table definitions, and therefore is not allowed in data tags (though this is not enforced) - may kill two birds with one stone...
 +
** Allow multi-line field data.
  
 
=== Interface ===
 
=== Interface ===
 +
 
* Highlight 'bad' data on the table's data page.
 
* Highlight 'bad' data on the table's data page.
 +
* Add special page to list all defined data types.
 +
* 'What links here' should show templates that are included via data tags.
  
=== Code Tidying ===
+
=== Internals ===
* Add profiling statements.
+
  
=== Administration ===
+
* Code Tidying:
* 'What links here' should show templates that are included via data tags.
+
** Add profiling statements.
 +
* Internationalisation:
 +
** Allow type names to be translated.
 +
** Allow type aliases to be translated.
 +
** Allow tag names to be translated?
 +
** Allow data to be translated?
  
 
== Other possible features (speculative) ==
 
== Other possible features (speculative) ==

Revision as of 16:49, 9 August 2021

This is an (incomplete) list of features that I plan to add. There are also good ideas from other people scattered around the wiki, which I should really add to this page, but haven't yet.

Note that this page reflects my current development version - if an item is removed from this page due to being implemented, it may not turn up in a public release for a little while.

The bug list has been moved to WikiDB/Bugs. Please report bugs there.

Planned features (in progress)

Table definitions

  • Allow foreign keys to be defined.
  • <data> tags on Table pages should allow the table attribute to be omitted (defaulting to the current page).
  • Allow 'closed' tables (where all data is supplied on the schema page), as a method for implementing Enum fields.

Data types

  • Introduce new class-based method for defining data types (custom and internal) to improve code re-use and to make it easier to add new features.
  • Add 'date' data-type.

Querying back-end

  • Allow JOINS in queries.
  • Add support for boolean NOT operator (AND, OR and XOR are implemented, but NOT is unary and therefore trickier).
  • Add support for LIKE comparisons?
  • Add support for REGEX comparisons?
  • Add support for OFFSET/LIMIT.
  • Add support for field lists and DISTINCT clause.
  • Add support for calculated fields.
  • Add support for custom functions.

Syntax

  • Formalise syntax for referring to identifiers and literals.
  • <repeat> tag:
    • Allow LIMIT argument (or maybe 'range'), possibly with pagination.
    • Add ability to specify field list and limit to DISTINCT rows.
  • <data> tag:
    • Provide a mechanism for 'pass-through' parameters (i.e. parameters that are supplied to the template, but which don't get added to the table). Suggestion is to prefix the name with an exclamation mark. Alternatively, an underscore could be used, as this is already reserved in table definitions, and therefore is not allowed in data tags (though this is not enforced) - may kill two birds with one stone...
    • Allow multi-line field data.

Interface

  • Highlight 'bad' data on the table's data page.
  • Add special page to list all defined data types.
  • 'What links here' should show templates that are included via data tags.

Internals

  • Code Tidying:
    • Add profiling statements.
  • Internationalisation:
    • Allow type names to be translated.
    • Allow type aliases to be translated.
    • Allow tag names to be translated?
    • Allow data to be translated?

Other possible features (speculative)

These are some thoughts on later developments, for further down the line.

Interface

  • Form-based data entry.

Data linking

  • Ability to specify joins between tables.
  • Able to specify relationships between data, e.g. 'is a type of'