kopia lustrzana https://github.com/miklobit/TiddlyWiki5
Changed format of story tiddlers to JSON
Allowing us to encode the template for each tiddlerprint-window-tiddler
rodzic
02aaa3567f
commit
cbb8ee3bb0
|
@ -12,29 +12,22 @@ var Tiddler = require("../Tiddler.js").Tiddler,
|
||||||
Dependencies = require("../Dependencies.js").Dependencies,
|
Dependencies = require("../Dependencies.js").Dependencies,
|
||||||
utils = require("../Utils.js");
|
utils = require("../Utils.js");
|
||||||
|
|
||||||
// Parse the text of a story tiddler into an array of tiddler titles
|
|
||||||
var parseStory = function(storyText) {
|
|
||||||
var storyLines = storyText.split("\n"),
|
|
||||||
tiddlers = [];
|
|
||||||
for(var t=0; t<storyLines.length; t++) {
|
|
||||||
var title = storyLines[t].trim();
|
|
||||||
if(title !== "") {
|
|
||||||
tiddlers.push(title);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return tiddlers;
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.macro = {
|
exports.macro = {
|
||||||
name: "story",
|
name: "story",
|
||||||
params: {
|
params: {
|
||||||
story: {byName: "default", type: "tiddler"},
|
story: {byName: "default", type: "tiddler"},
|
||||||
template: {byName: true, type: "tiddler"}
|
defaultViewTemplate: {byName: true, type: "tiddler"}
|
||||||
},
|
},
|
||||||
events: {
|
events: {
|
||||||
"tw-navigate": function(event) {
|
"tw-navigate": function(event) {
|
||||||
var storyTiddler = this.store.getTiddler(this.params.story);
|
var template = this.params.defaultViewTemplate ? this.params.defaultViewTemplate : "SimpleTemplate",
|
||||||
this.store.addTiddler(new Tiddler(storyTiddler,{text: event.navigateTo + "\n" + storyTiddler.text}));
|
storyTiddler = this.store.getTiddler(this.params.story),
|
||||||
|
story = {tiddlers: []};
|
||||||
|
if(storyTiddler && storyTiddler.hasOwnProperty("text")) {
|
||||||
|
story = JSON.parse(storyTiddler.text);
|
||||||
|
}
|
||||||
|
story.tiddlers.unshift({title: event.navigateTo, template: template});
|
||||||
|
this.store.addTiddler(new Tiddler(storyTiddler,{text: JSON.stringify(story)}));
|
||||||
$("html,body").animate({
|
$("html,body").animate({
|
||||||
scrollTop: 0
|
scrollTop: 0
|
||||||
}, 400);
|
}, 400);
|
||||||
|
@ -43,11 +36,11 @@ exports.macro = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
execute: function() {
|
execute: function() {
|
||||||
var tiddlers = parseStory(this.store.getTiddlerText(this.params.story)),
|
var story = JSON.parse(this.store.getTiddlerText(this.params.story)),
|
||||||
content = [];
|
content = [];
|
||||||
for(var t=0; t<tiddlers.length; t++) {
|
for(var t=0; t<story.tiddlers.length; t++) {
|
||||||
var m = Renderer.MacroNode("tiddler",
|
var m = Renderer.MacroNode("tiddler",
|
||||||
{target: tiddlers[t],template: this.params.template},
|
{target: story.tiddlers[t].title,template: story.tiddlers[t].template},
|
||||||
null,
|
null,
|
||||||
this.store);
|
this.store);
|
||||||
m.execute(this.parents,this.store.getTiddler(this.tiddlerTitle));
|
m.execute(this.parents,this.store.getTiddler(this.tiddlerTitle));
|
||||||
|
@ -59,7 +52,7 @@ exports.macro = {
|
||||||
/*jslint browser: true */
|
/*jslint browser: true */
|
||||||
// Get the tiddlers we're supposed to be displaying
|
// Get the tiddlers we're supposed to be displaying
|
||||||
var self = this,
|
var self = this,
|
||||||
targetTiddlers = parseStory(this.store.getTiddlerText(this.params.story)),
|
story = JSON.parse(this.store.getTiddlerText(this.params.story)),
|
||||||
template = this.params.template,
|
template = this.params.template,
|
||||||
t,n,domNode,
|
t,n,domNode,
|
||||||
findTiddler = function (childIndex,tiddlerTitle,templateTitle) {
|
findTiddler = function (childIndex,tiddlerTitle,templateTitle) {
|
||||||
|
@ -74,16 +67,16 @@ exports.macro = {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
for(t=0; t<targetTiddlers.length; t++) {
|
for(t=0; t<story.tiddlers.length; t++) {
|
||||||
// See if the node we want is already there
|
// See if the node we want is already there
|
||||||
var tiddlerNode = findTiddler(t,targetTiddlers[t],template);
|
var tiddlerNode = findTiddler(t,story.tiddlers[t].title,story.tiddlers[t].template);
|
||||||
if(tiddlerNode === null) {
|
if(tiddlerNode === null) {
|
||||||
// If not, render the tiddler
|
// If not, render the tiddler
|
||||||
var m = Renderer.MacroNode("tiddler",
|
var m = Renderer.MacroNode("tiddler",
|
||||||
{target: targetTiddlers[t],template: template},
|
{target: story.tiddlers[t].title,template: story.tiddlers[t].template},
|
||||||
null,
|
null,
|
||||||
this.store);
|
this.store);
|
||||||
m.execute(this.parents,this.store.getTiddler(targetTiddlers[t]));
|
m.execute(this.parents,this.store.getTiddler(story.tiddlers[t].title));
|
||||||
m.renderInDom(this.domNode,this.domNode.childNodes[t]);
|
m.renderInDom(this.domNode,this.domNode.childNodes[t]);
|
||||||
this.content.splice(t,0,m);
|
this.content.splice(t,0,m);
|
||||||
} else {
|
} else {
|
||||||
|
@ -102,12 +95,12 @@ exports.macro = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Remove any left over nodes
|
// Remove any left over nodes
|
||||||
if(this.content.length > targetTiddlers.length) {
|
if(this.content.length > story.tiddlers.length) {
|
||||||
for(t=targetTiddlers.length; t<this.content.length; t++) {
|
for(t=story.tiddlers.length; t<this.content.length; t++) {
|
||||||
domNode = this.content[t].domNode;
|
domNode = this.content[t].domNode;
|
||||||
domNode.parentNode.removeChild(domNode);
|
domNode.parentNode.removeChild(domNode);
|
||||||
}
|
}
|
||||||
this.content.splice(targetTiddlers.length,this.content.length-targetTiddlers.length);
|
this.content.splice(story.tiddlers.length,this.content.length-story.tiddlers.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
title: StoryTiddlers
|
title: StoryTiddlers
|
||||||
|
type: application/json
|
||||||
|
|
||||||
HelloThere
|
{
|
||||||
Introduction
|
"tiddlers": [
|
||||||
NewWikiTextFeatures
|
{"title": "HelloThere", "template": "SimpleTemplate"},
|
||||||
|
{"title": "Introduction", "template": "SimpleTemplate"},
|
||||||
|
{"title": "NewWikiTextFeatures", "template": "SimpleTemplate"}
|
||||||
|
]
|
||||||
|
}
|
|
@ -2,5 +2,5 @@ title: PageTemplate
|
||||||
|
|
||||||
{{navigation-panel{<<chooser>>}}}{{zoomer-panel{<<zoomer>>}}}
|
{{navigation-panel{<<chooser>>}}}{{zoomer-panel{<<zoomer>>}}}
|
||||||
{{container-fluid{
|
{{container-fluid{
|
||||||
<<story story:StoryTiddlers template:SimpleTemplate>>
|
<<story story:StoryTiddlers>>
|
||||||
}}}
|
}}}
|
Ładowanie…
Reference in New Issue