|This page is currently a draft.|
More information and discussion about changes to this draft on the talk page.
Extension in early development stages - page created as placeholder and container for any necessary discussion during development.
- 1 Introduction
- 2 Overall Description
- 3 Specific Requirements
- 3.1 Client-Side
- 3.2 Server-Side
- 3.3 External interfaces/APIs
- 3.4 Globals (Variables/Functions/etc.)
- 3.5 Hooks Needed
- 3.6 Classess/Methods
- 3.7 Performance requirements
- 3.8 Logical database requirement
- 3.9 Design constraints
- 3.10 Key features
- 4 Deliverables
- 5 Notes
This document is meant to be a software requirement specification for TableEdit v2.0.
TableEdit was originally written in 2006 by Jim Hu at Texas A&M University for use on EcoliWiki.net. Since then it has undergone quite a bit of change, and needs to be rewritten. Daniel Renfro worked on it over the years, and is undertaking a massive rewrite. (And is looking for help!)
Wiki markup can be challenging. Tables are one of the harder things for new users. TableEdit provides a simple table creation and editing system. TableEdit 2.0 should provide users of Mediawiki software a way to edit tables intuitively using the GUI instead of using markup. It should look and behave in a manner consistent with common applications and current web technologies; to use buzzwords, Web 2.0-ish. The benefits would be similar to those of the Usability Initiative extensions: ease of use for the common user, the power user, and to some extent, the admin. No-one shall ever need to type wiki-table syntax again! (Unless they want to, and that should be allowed by TableEdit, also.)
- The software extension to Mediawiki.
- This could be one of a few things:
- wiki-markup table
- HTML table
- a MySQL relational-database table
- a cell in a table that is contained by only one row and one column
- behavior/functionality which defines what a field does under two circumstances:
- being edited
- being rendered
TableEdit (v1.x) allows users to create and edit tables using HTML forms instead of editing the underlying (and sometimes quite esoteric and complex) wikitext. The user-interface is not intuitive and easy manipulation of existing rows and columns is lacking. The current version of TableEdit allows users to either create a single table, or define a table-template -- which can be transcluded from the Template namespace for multiple table instantiations.
TableEdit2 should allow more spreadsheet-like behavior of tables, including:
- Excel-like navigation based on keyboard input
- in-line editing of rows
- drag-and-drop manipulation of rows and columns
- options for hiding the wiki-text from editors
- based on permissions/groups
- a defined API both on the server- and the client- side
- server side
- formal Mediawiki API for editing rows/columns/fields (with authentication)
- TableEdit API for automated editing/data mining
- client side
- TableEdit object
Constraints, Assumptions and Dependencies
- depends on Mediawiki's ResourceLoader
- depends on jQuery extension Datatables
- or Mediawiki Extension Datatables
- KeyTable plugin
- jEditable plugin
- reset the template definitions list
- add resourceloader modules
- hide the tables from the editor
- unhide the tables
- resourceloader hook
- fix the tables - add a tbody, thead, tfoot, etc.
Logical database requirement
TableEdit currently supports only MySQL databases, and does so badly. Version 2 needs to make use of the MW syntax for SQL files, to support custom table prefixes.
The database tables need to be renamed into something shorter:
old name new name ext_TableEdit_box tE_box ext_TableEdit_row tE_row N/A tE_field ext_TableEdit_box_metadata tE_meta_box ext_TableEdit_row_metadata tE_meta_row ext_TableEdit_relations tE_relation
Some necessary changes:
- The page_name from tE_box should be removed because page_uid already handles this information.
- tE_row gets a new field, rev_id, which is a foreign key to the revision table.
- The entire table tE_field needs to be created to avoid having to split/join the row_data each time.
- tE_relation needs to be simplified to only hold the necessary field_id; or redo this completely.
|2.0||Jan. 1, 2011||
- Value types (can be combined):
- text field
- Data properties:
- Data-Tables in ASP: http://www.codeproject.com/KB/aspnet/MVC-CRUD-DataTable.aspx
- KeyEditableTable: Mixing DataTables, KeyTables and jEditable all together
- jQuery datatables
- Allan's KeyTable (Excel-like keyboard navigation)
don't forget about these:
- api modules
- ajax should call the api.php like in ExtendedCategoryPage
- caption, attributes
- new SQL file
- integrate into view, model
- finish tEio_IFALT
- links/URLS should get made into absolute paths upon export
- metadata SQL change:
- add a user_id field to the metadata...it makes sense to see which user made this save
- TableEditLinks code
- loading into tables -- tE should run the column_rules and handle exceptions intellegently to avoid data that doesn't conform to the column rule.
- handle the case when a table gets copied to a new page.
- styles for the messages/notes/etc
add a history stack
add history-aware buttons like BACK and REVERT
optionally hide the table in the page
update the export/importers
- change anything that relies on page_name, use page_uid
- rewrite all of the tE templates
- finish this documentation
- hook into rebuildall.php or provide a script to update to tE2
- or for internal conistency checkig
- make it work in the extensions/ directory (patch for EW)
fix the class heirarchyuse decorator and MVC
integrate the TableMarkerUpper script into tE
- hook into the preview (to show a preview of a new/existing box)
- add the edit buttons to the top of the edit view
type=1, export, wikitext
- add support for captions/cols/rowspans
- add box_style, heading_style for non-templated tables
- write an Install.php for tE2
- fix the metadata loading/saving
- deleting an entire table
- when you copy a table from one page to another, tE should recognize the change in page_uid values and throw a question asking:
- Did you mean to do this or was there an error?
- conflict detection
- relational foreign tables
- add admin stuff
- revert using wikitext
- row-level history
Everything to the left of the light blue line below is included in the template page. It is broken up into pieces only for readability.
When a user edits a row in a table, it is nice to style the form that they fill out the way you want. Maybe you want them to select a single value from a list of values - the "select" format. The column rules in TableEdit-v2.0 do just this. In the table's template
|<format> value||description||example definition|
|select||Creates a select dropdown menu where the value would be. A default option can be shown.||
<column> <heading>Evidence Code</heading> <name>evidence</name> <desc>see GO evidence code documentation.</desc> <format>select</format> <params> <option> </option> <option>IDA: Inferred from Direct Assay</option> <option>IPI: Inferred from Physical Interaction</option> <option>IMP: Inferred from Mutant Phenotype</option> <option>IGI: Inferred from Genetic Interaction</option> <option>IEP: Inferred from Expression Pattern</option> <option>ISS: Inferred from Sequence or Structural Similarity</option> <option>ISO: Inferred from Sequence Orthology</option> <option>ISA: Inferred from Sequence Alignment</option> <option>ISM: Inferred from Sequence Model</option> <option>IGC: Inferred from Genomic Context</option> <option>RCA: inferred from Reviewed Computational Analysis</option> <option>TAS: Traceable Author Statement</option> <option>NAS: Non-traceable Author Statement</option> <option>IC: Inferred by Curator</option> <option>ND: No biological Data available</option> <option>IEA: Inferred from Electronic Annotation</option> </params> </column>
|text||Creates an inline text input field.||
<column> <heading>GO ID</heading> <name>go_id</name> <desc>A unique number associated with each GO term.</desc> <format>text</format> </column>
|textarea|| Creates a textarea. Params:
<column> <heading>Notes</heading> <name>notes</name> <desc>Free text area for user notes. (Not included in the monthly submital to GO.)</desc> <format>textarea</format> </column>