From cbf2e9add912f1cd806bd6697982035c00771038 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 19 Mar 2013 22:39:24 +0000 Subject: [PATCH] Add fieldgrid in tiddler info dropdown --- core/modules/widgets/fieldgrid.js | 85 ++++++++++++++++++++++++++++++ core/styles/base.tid | 16 ++++++ core/templates/TiddlerDropdown.tid | 2 +- 3 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 core/modules/widgets/fieldgrid.js 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