Extension:TableEdit2: Difference between revisions
DanielRenfro (talk | contribs) mNo edit summary |
DanielRenfro (talk | contribs) No edit summary |
||
Line 38: | Line 38: | ||
==References== |
==References== |
||
=Overall Description= |
=Overall Description= |
||
Line 60: | Line 62: | ||
==Performance requirements gf== |
==Performance requirements gf== |
||
==Logical database requirement== |
==Logical database requirement== |
||
===Database structure=== |
===Database structure=== |
||
TableEdit currently supports only [[wikipedia:MySQL|MySQL]] databases, and does so badly. Version 2 needs to make use of the MW syntax for SQL files, to support custom table prefixes. |
TableEdit currently supports only [[wikipedia:MySQL|MySQL]] databases, and does so badly. Version 2 needs to make use of the MW syntax for SQL files, to support custom table prefixes. |
||
Line 83: | Line 84: | ||
==Design constraints== |
==Design constraints== |
||
==Key features== |
==Key features== |
||
=Deliverables= |
|||
{| class="wikitable" |
|||
|- |
|||
! release |
|||
! projected date |
|||
! functionality |
|||
! notes |
|||
|- |
|||
| 2.0 |
|||
| Jan. 1, 2011 |
|||
| |
|||
* |
|||
* |
|||
| |
|||
|} |
|||
Line 253: | Line 270: | ||
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 |
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 |
||
{| class=" |
{| class="wikitable" |
||
! <tt><format></tt> value |
! <tt><format></tt> value |
||
! description |
! description |
Revision as of 20:15, 3 October 2011
This is a tentative specification for the new version of the extension TableEdit. Eventually this will get moved to a sub-page and the extension details/installation/notes will go on this page. Please feel free to edit as you see fit.
Introduction
This document is meant to be a software requirement specification for tableEdit(2).
Contact Info
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!)
Purpose(s)
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.
TableEdit replaces <newTableEdit/> tags in wikitext with a "Create Table Here" link. Following this link goes to a Special page that creates HTML comment-delimited tables The content is controlled by an external MySQL database, but the tables are saved back to the wiki in normal wikitext surrounded by HTML comments with the id number of the table in the database. Users can
- Insert rows
- Append columns
- Change styles for tables, heading rows, and rows
- Use templates to provide abstraction of table headings, behavior, etc.
- Upload/Download entire tables.
This page provides a detailed explanation of most things TableEdit-v2.0+. If you need further assistance, contact Daniel Renfro, or Jim Hu. There is also a page on Mediawiki specifically about TableEdit.
Scope
- software
- All Mediawiki software installations.
- timeframe
-
- working prototype by 01/2012
- first release 03/2012
Definitions
- tableEdit
- the software extension to Mediawiki
- box
- the data representation of a table
System Overview
References
Overall Description
Product Perspective
Product Functions
User Characteristics
Constraints, Assumptions and Dependencies
- depends on Mediawiki's ResourceLoader
- depends on jQuery extension Datatables
- or Mediawiki Extension Datatables
- depends on MySQL
Specific Requirements
External interfaces
Functions
Performance requirements gf
Logical database requirement
Database structure
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.
Design constraints
Key features
Deliverables
release | projected date | functionality | notes |
---|---|---|---|
2.0 | Jan. 1, 2011 |
|
Old Old Old to-dos
- documentation
- 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- back/undo
add history-aware buttons like BACK and REVERT
optionally hide the table in the pageupdate 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 MVCintegrate the TableMarkerUpper script into tErow deletion- 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
- install.php
- create database tables
- upgrade existing database tables
- create Mediawiki:TableEdit.js and Mediawiki:TableEdit.css
- run tests, check for global vars in LocalSettings that we need
- parse out captions, table/heading attributes
Example templates
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.
This is a TableEdit table template.
<template>
<column> <heading>Qualifier</heading> <name>qualifier</name> <desc>Flags that modify the interpretation of an annotation.</desc> <format>select</format> <params> <option> </option> <option>NOT</option> <option>Contributes to</option> <option>Contributes to</option> <option>Colocalizes with</option> <option>Obsolete GO term</option> <option>Under review</option> <option>Deprecated</option> </params> </column>
<column> <heading>GO ID</heading> <name>go_id</name> <desc>A unique number associated with each GO term.</desc> <format>text</format> </column>
<column> <heading>GO term name</heading> <name>go_term</name> <desc>The name of the GO term.</desc> <format>go_term_lookup</format> </column>
<column> <heading>Reference(s)</heading> <name>refs</name> <desc>One or more unique identifiers for a single source cited as an authority for the attribution of the GO ID to this gene product. This may be a literature reference or a database record. The syntax is DB:accession_number.</desc> <format>textarea</format> </column>
<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>
<column> <heading>with/from</heading> <name>with</name> <desc>This field is used to hold an additional identifier for annotations using certain evidence codes (IC, IEA, IGI, IPI, ISS). For example, it can identify another gene product to which the annotated gene product is similar (ISS) or interacts with (IPI).</desc> <format>go_annotation_with</format> </column>
<column> <heading>Aspect</heading> <name>aspect</name> <desc>Refers to the namespace or ontology to which the GO ID (column 5) belongs; one of P (biological process), F (molecular function) or C (cellular component)</desc> <format>display</format> </column>
<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>
<column> <heading>Status</heading> <name>status</name> <desc>Informs the user which is remaining of the three needed fields.</desc> <format>display</format> </column>
<above>Template:Product GO help</above>
<help1>Template:Product GO help</help1>
<datatable>1</datatable>
</template>
Column-Rules
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> |
checkbox | ||
lookup | ||
calculation | ||
timestamp | ||
foreign | ||
coordinates | ||
... |