TiddlyWiki5/js/macros/slider.js

55 wiersze
1.7 KiB
JavaScript
Czysty Zwykły widok Historia

2012-01-23 18:31:17 +00:00
/*\
title: js/macros/slider.js
\*/
(function(){
/*jslint node: true */
"use strict";
var Renderer = require("../Renderer.js").Renderer,
Dependencies = require("../Dependencies.js").Dependencies,
Tiddler = require("../Tiddler.js").Tiddler,
2012-02-06 11:31:23 +00:00
utils = require("../Utils.js");
2012-01-23 18:31:17 +00:00
exports.macro = {
name: "slider",
types: ["text/html","text/plain"],
params: {
state: {byPos: 0, type: "text", optional: false},
2012-01-23 18:31:17 +00:00
targetTiddler: {byPos: 1, type: "tiddler", optional: false},
label: {byPos: 2, type: "text", optional: false},
tooltip: {byPos: 3, type: "text", optional: true}
},
events: {
click: function(event,macroNode) {
var el = event.currentTarget.firstChild.firstChild.nextSibling,
stateTiddler = macroNode.params.state ? macroNode.store.getTiddler(macroNode.params.state) : {text: ""},
isOpen = stateTiddler.text.trim() === "open";
macroNode.store.addTiddler(new Tiddler(stateTiddler,{text: isOpen ? "closed" : "open"}));
el.style.display = isOpen ? "none" : "block";
event.preventDefault();
return false;
}
},
execute: function(macroNode,tiddler,store) {
var stateTiddler = macroNode.params.state ? store.getTiddler(macroNode.params.state) : {text: ""},
isOpen = stateTiddler.text.trim() === "open",
target = macroNode.params.targetTiddler,
dependencies = new Dependencies();
dependencies.addDependency(target,true);
var content = Renderer.SliderNode(macroNode.params.state,
macroNode.params.label,
macroNode.params.tooltip,
isOpen,
[
Renderer.MacroNode("tiddler",{target: target},null,dependencies,store)
]);
content.execute(tiddler);
return [content];
2012-01-23 18:31:17 +00:00
}
};
})();