diff --git a/core/modules/widgets/fieldgrid.js b/core/modules/widgets/fieldgrid.js new file mode 100644 index 000000000..b32820f8d --- /dev/null +++ b/core/modules/widgets/fieldgrid.js @@ -0,0 +1,85 @@ +/*\ +title: $:/core/modules/widget/fieldgrid.js +type: application/javascript +module-type: widget + +Implements the fieldgrid widget. + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +var FieldGridWidget = function(renderer) { + // Save state + this.renderer = renderer; + // Generate child nodes + this.generate(); +}; + +FieldGridWidget.prototype.generate = function() { + // Get attributes + this.tiddlerTitle = this.renderer.getAttribute("tiddler",this.renderer.getContextTiddlerTitle()); + this.exclude = this.renderer.getAttribute("exclude"); + this["class"] = this.renderer.getAttribute("class"); + // Set up the exclusion array + var exclude = []; + if(this.exclude) { + exclude = this.exclude.split(" "); + } + // Get the tiddler + var tiddler = this.renderer.renderTree.wiki.getTiddler(this.tiddlerTitle); + // Set up the classes + var classes = ["tw-fieldgrid-table"]; + if(this["class"]) { + $tw.utils.pushTop(classes,this["class"]); + } + // Set up the header row + var rows = [ + {type: "element", tag: "tr", children: [ + {type: "element", tag: "th", children: [ + {type: "text", text: "Field"}]}, + {type: "element", tag: "th", children: [ + {type: "text", text: "Value"}]}]} + ]; + // Add the rows for each field + if(tiddler) { + var fields = []; + for(var f in tiddler.fields) { + if(exclude.indexOf(f) === -1) { + fields.push(f); + } + } + fields.sort(); + for(f=0; f <$reveal type="match" state="$:/state/moreSideBarTabSet" text="fieldsTab" qualifyTiddlerTitles="yes"> -Fields... +<$fieldgrid /> \ No newline at end of file