Difference between revisions of "WikiDB/Features"

From TestWiki
Jump to: navigation, search
(Interface: + Allpages - not sure why that wasn't here already!)
(Data: Remove duplication and simply point to the fuller explanation.)
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
''Note: This page is still fairly incomplete.  I will add to it as I remember things.''   
 
''Note: This page is still fairly incomplete.  I will add to it as I remember things.''   
  
If you want to suggest new features, please use [[WikiDB/Feature requests]] rather than this page.
+
* To see features planned for future versions, see [[WikiDB/Roadmap]].
 +
* To suggest new features, please use [[WikiDB/Feature requests]].
  
 
== Current features ==
 
== Current features ==
Line 11: Line 12:
 
* You can define data without defining any kind of table structure.
 
* You can define data without defining any kind of table structure.
 
* Data may be typed, but all typing is loose, and does not affect the stored data.
 
* Data may be typed, but all typing is loose, and does not affect the stored data.
 +
* Individual fields may contain multiple values, e.g. a Student record for a joint-honours student may need to contain multiple values in the Course field.  See [[WikiDB/Defining data#Multi-value fields|the defining data page]] for more detail.
  
 
=== Table definitions ===
 
=== Table definitions ===
Line 19: Line 21:
 
* An extensible type mechanism allows new custom field types to be added.  For example, you could create an 'ISBN' data type that only allowed valid ISBN numbers.  The data types can be as complex as you want.
 
* An extensible type mechanism allows new custom field types to be added.  For example, you could create an 'ISBN' data type that only allowed valid ISBN numbers.  The data types can be as complex as you want.
 
* The data page shows you how the data looks when formatted to the tables current specification
 
* The data page shows you how the data looks when formatted to the tables current specification
 +
* Table pages that are redirects automatically map to the target table.  All data that points to a redirect actually ends up in the table it redirects to.
  
 
=== Queries ===
 
=== Queries ===
You can use the <repeat> tag to perform queries.
+
You can use the [[WikiDB/Repeat tag syntax|<repeat> tag]] to perform queries.
 
* The tag can be used on any page in the wiki.
 
* The tag can be used on any page in the wiki.
* You can specify multiple fields to sort on.
+
* You can specify the criteria by which the results should be filtered in [[WikiDB/Querying data|a variety of ways]].
 +
* You can specify one or more fields to sort on.
 
* Fields can be sorted in ascending or descending order.
 
* Fields can be sorted in ascending or descending order.
* You can filter results (currently only very simply)
 
 
* The contents of the tag are repeated for each row returned by the query, with {{{fields}}} replaced by their data.
 
* The contents of the tag are repeated for each row returned by the query, with {{{fields}}} replaced by their data.
 +
* Default values may be specified for fields, to be displayed if there is no data.
 
* If the tag has no contents, the results are displayed in a standard format.
 
* If the tag has no contents, the results are displayed in a standard format.
 +
* You can specify <header> and <footer> sections to make custom tables.
 +
* You can also live-query a table via the 'data' tab, for quick, ad-hoc searches.
  
 
=== Interface ===
 
=== Interface ===
Line 34: Line 40:
 
* [[Special:UndefinedTables]] lists tables that do not exist, but for which data has been defined.
 
* [[Special:UndefinedTables]] lists tables that do not exist, but for which data has been defined.
 
* [[Special:EmptyTables]] lists tables that have a definition but no data.
 
* [[Special:EmptyTables]] lists tables that have a definition but no data.
 
== Planned features (in progress) ==
 
The following features are in the pipeline, but have not yet been implemented.  There are others that I have forgotten about, which will add when I think of them.  See also [[WikiDB/ToDo]]
 
 
=== Queries ===
 
* More sophisticated filtering, including full range of equality operators (<nowiki>>, <, >=, <=, =, <></nowiki>) at the very least.
 
* Allow default values to be specified in {{{field}}} references.
 
 
=== Interface ===
 
* Highlight 'bad' data on the table's data page.
 
* Table pages that are redirects should automatically map to the target table.
 
 
 
== 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'
 

Latest revision as of 22:36, 7 February 2022

Note: This page is still fairly incomplete. I will add to it as I remember things.

Current features[edit]

The following features are currently working (or mostly working). Please see the Tutorial first - some of these features may be a little unclear until you understand what the extension does.

Data[edit]

  • Data may be defined on any page in the wiki.
  • The new <data> tag can be used to replace infobox templates. The result is identical, but the data is also added to the appropriate table.
  • You can define data without defining any kind of table structure.
  • Data may be typed, but all typing is loose, and does not affect the stored data.
  • Individual fields may contain multiple values, e.g. a Student record for a joint-honours student may need to contain multiple values in the Course field. See the defining data page for more detail.

Table definitions[edit]

  • Support for multiple table namespaces for easy separation of data.
  • Table definitions can include standard wiki markup for ease of annotating their use.
  • Aliases may be defined for fields, so that common naming mistakes or legacy data can be seamlessly mapped to the correct field.
  • Fields can be typed and, where appropriate, a range can be specified.
  • An extensible type mechanism allows new custom field types to be added. For example, you could create an 'ISBN' data type that only allowed valid ISBN numbers. The data types can be as complex as you want.
  • The data page shows you how the data looks when formatted to the tables current specification
  • Table pages that are redirects automatically map to the target table. All data that points to a redirect actually ends up in the table it redirects to.

Queries[edit]

You can use the <repeat> tag to perform queries.

  • The tag can be used on any page in the wiki.
  • You can specify the criteria by which the results should be filtered in a variety of ways.
  • You can specify one or more fields to sort on.
  • Fields can be sorted in ascending or descending order.
  • The contents of the tag are repeated for each row returned by the query, with {{{fields}}} replaced by their data.
  • Default values may be specified for fields, to be displayed if there is no data.
  • If the tag has no contents, the results are displayed in a standard format.
  • You can specify <header> and <footer> sections to make custom tables.
  • You can also live-query a table via the 'data' tab, for quick, ad-hoc searches.

Interface[edit]

  • New 'data' tab for table pages, which shows you all the data defined for that table. This tab is available even if no table definition is defined.
  • Special:AllTables lists all defined tables on the wiki.
  • Special:UndefinedTables lists tables that do not exist, but for which data has been defined.
  • Special:EmptyTables lists tables that have a definition but no data.