The Brain style visualisation suite

48 views
Skip to first unread message

rakugo

unread,
Oct 23, 2008, 11:59:15 AM10/23/08
to TiddlyWiki
Hello

I've posted this quite a few times, but finally I've had some time to
work on this and implement alot of the wish list that has been
requested from me for this plugin through this group.

The plugin will allow you to visualise tiddler relationships in your
tiddlywiki. All you need to do is add a div element to your
PageTemplate and the plugin itself.

Since I last showed it I am now happy to announce that this plugin...
1) works in Internet Explorer
2) supports loading all tiddlers into the map at the start as well as
loading incremently
3) has configurable "tweaks" that allow you to customise how the
visualisation works
4) Supports panning the graph and zooming in and out allowing you to
visualise your TiddlyWiki as a whole better.

I've worked hard to make this easy to install/tweak and to give lots
of cool features for everyone to play with, however I am sure there is
lots more I could do with this, lots more things I could do more
simply and would urge you to provide feedback to drive my priorities.

My codes a bit messy but I'm working on this too ;-)

See a copy, grab a copy here:
http://tiddlytagmindmap.tiddlyspot.com/

Looking forward to your feedback..!

27escape

unread,
Oct 24, 2008, 3:30:17 AM10/24/08
to TiddlyWiki
I like this, but for me I would like to have the mindmap in a tiddler
area, is this possible?

Something like

<<mindmap tag:systemConfig zoom:yes>>

thanks
kevin

27escape

unread,
Oct 24, 2008, 3:38:17 AM10/24/08
to TiddlyWiki
Also, now that I notice the mention of Freemind on your TiddlyWiki, if
you could pull in a freemind map and use that as the basis of the mind
map and add tiddlers to the nodes that would tick ALL my boxes

<<mindmap file:///some/file/path zoom:"yes">>

kevin

rakugo

unread,
Oct 24, 2008, 10:39:11 AM10/24/08
to TiddlyWiki
Hi Kevin
Regarding having a mindmap in a tiddler area - it depends what you are
trying to achieve with this.

I can quite easily get the macro callable from a tiddler however the
problem arises if you call the macro again elsewhere. If you are
planning to have more than 1 mind map on the screen how would you
expect this to work? If you opened a tiddler - would it update both
graphs or just the last one? If I can understand better the use case
I'm sure I can come up with something.

In terms of loading from FreeMind Map, I'm sure this is possible as
this is just a case of traversing an xml file, working out how each
node connects and popping the data into the map/tiddlywiki. A generic
way of traversing xml files is on my to do list, but in the meantime
you may be interested in this macro. Maybe combining this with another
plugin might get you the effect you want?
config.macros.TagMindMapEdge = {};
config.macros.TagMindMapEdge.handler = function
(place,macroName,params,wikifier,paramString,tiddler) {

var from = params[0]; var to = params[1];
if(tiddlytagmindmapobject){
tiddlytagmindmapobject.drawEdge(from,to);
tiddlytagmindmapobject.computeThenPlot();
}

};

Usage:
<<TagMindMapEdge "The Earth" "The Moon">>

c.skye

unread,
Oct 24, 2008, 8:23:20 PM10/24/08
to TiddlyWiki
HI All

Love the dynamics of this plugin and would love to use it as a visual
navegation system within my TWs.

I tried putting the "tagmindmap" div id in the sidebar (I generally
work with a wider sidebar than normal (lots of tabs..) and NO MainMenu
(on left). This way the minmap will be always visible and does get
lost at the top of the page.

I have noticed three difficulties
...I also have HistoryPlugin installed, and it stopped working...it
normally allows only one tiddler open ...that is not working and the
backward and forward navegation buttons dont work either!
.... the mindmap itself does not "refresh"...when I click on a link in
the mindmap...it correctly opens that tiddler and in the re-
organisation of the mindmap leaves a ghosting effect ...which quickly
makes the mindmap unuseable. Note that this seems to happen in the top
and lower thirds of the mapdisplay area (which has been resized to 400
high by 200wide)
....the mindmap control buttons (toggle mindmap, expand, shrink) don´t
appear...I tried putting them into a TTMM_menu tiddler and putting
that into the SideOptions part of PageTemplate using the line <div
id='sidebarMindMap' refresh='content' tiddler='TTMM_Menu'></div>
before the tagmindmap div ine.....but it didn´t work.

Suggesting as to how to overcome these issues would be apprciated

Skye

wolfgang

unread,
Oct 25, 2008, 6:54:24 AM10/25/08
to TiddlyWiki
Hi Skye, all,

> ...I also have HistoryPlugin installed, and it stopped working...it
> normally allows only one tiddler open ...that is not working and the
> backward and forward navegation buttons dont work either!

This might be an incompatibility between these two plugins. You could
circumvent this by using BreadcrumbsPlugin of TiddlyTools, with which
it's possible to create a similar popup as HistoryPlugin, limit open
tiddler to a certain number, have a 'back' button with much
adaptability. Only the 'forward' button isn't possible to create with
breadcrumbs yet.

> .... the mindmap itself does not "refresh"...when I click on a link in
> the mindmap...it correctly opens that tiddler and in the re-
> organisation of the mindmap leaves a ghosting effect ...which quickly
> makes the mindmap unuseable. Note that this seems to happen in the top
> and lower thirds of the mapdisplay area (which has been resized to 400
> high by 200wide)

I experience something similiar due to a larger mind map. And I agree
that a refresh of the display, a centering and hiding of previously
visited further nodes, or something as a 'home' function which returns
to the initial display, would be quite useful in such cases.

> ....the mindmap control buttons (toggle mindmap, expand, shrink) don´t
> appear...I tried putting them into a TTMM_menu tiddler and putting
> that into the SideOptions part of PageTemplate using the line <div
> id='sidebarMindMap' refresh='content' tiddler='TTMM_Menu'></div>
> before the tagmindmap div ine.....but it didn´t work.
>

I placed the controls in a popup (with ShowPopup; needs
InlineJavascriptPlugin of TiddlyTools) and this works fine in a
example TW I created for comparing it with hypergraph:

file:///F:/Dropbox/My%20Dropbox/Public/TiddlyTagmapGraph.html

Regards,

W.

FND

unread,
Oct 25, 2008, 7:09:31 AM10/25/08
to Tiddl...@googlegroups.com
> file:///F:/Dropbox/My%20Dropbox/Public/TiddlyTagmapGraph.html

AKA http://dl.getdropbox.com/u/241006/TiddlyTagmapGraph.html


-- F.

wolfgang

unread,
Oct 25, 2008, 7:27:51 AM10/25/08
to TiddlyWiki
Thanks for correcting my mistake - the more for first mentioning this
online service - where one almost forgets that one's dropbox public
folder also has a http address.

W.

> > file:///F:/Dropbox/My%20Dropbox/Public/TiddlyTagmapGraph.html
>
> AKAhttp://dl.getdropbox.com/u/241006/TiddlyTagmapGraph.html
>
> -- F.

c.skye

unread,
Oct 25, 2008, 12:55:08 PM10/25/08
to TiddlyWiki
Thanks

Have disabled (removed) History Plugin. The question of this ghosting
is strange as th TW is not very lage and as yet has few tiddlers...in
fact its principally a TW I am using to test the plugin in. And its
strange that th ghosting is clearly on only part of the map and not th
cntral part....and that it happening from the start.

I have uploaded the TW to
https://dl-web.getdropbox.com/get/TW/R2withMindmapping.html?w=46688139
maybe someone has the time to open it and quickly see what is
happening.

Note - this plugin would be extra wondrful if it usd something like
TiddlyTools TagsTreePlugin......so that it maps from a specific tag
and then all th tiddlers directly relatd to it. Having the it map all
th etiddlers is grat for the TW developer.....but the map gets messy
with larger TWs. I can imagine many wonderful presentations using this
plugin...if I could map just those tags related to a specific
tag......is that possible?

Thanks
Skye

c.skye

unread,
Oct 25, 2008, 1:14:44 PM10/25/08
to TiddlyWiki
Hi Again

I played around with the widths and margins of the SideBarTabs (where
the map is actrually embdded) and now the ghosting effect has
dissapeared...don´t askme why!!!!

So, ignore my request to opn th file and check it out...and my
suggestion as to a functionality similar to TagsTreePlugin still
holds!!!

Thanks
Skye

On 25 out, 14:55, "c.skye" <s...@ipcp.org.br> wrote:
> Thanks
>
> Have disabled (removed) History Plugin. The question of this ghosting
> is strange as th TW is not very lage and as yet has few tiddlers...in
> fact its principally a TW I am using to test the plugin in. And its
> strange that th ghosting is clearly on only part of the map and not th
> cntral part....and that it happening from the start.
>
> I have uploaded the TW tohttps://dl-web.getdropbox.com/get/TW/R2withMindmapping.html?w=46688139

rakugo

unread,
Oct 26, 2008, 5:56:16 AM10/26/08
to TiddlyWiki
Strange..
I just posted but it doesn't seem to have appeared.

I know exactly why your history plugin is not working and I've made a
fix for the next release. HistoryPlugin and TagMindMap both make use
of the function to display tiddlers however mine does it quite crudely
and forgets the previous function, so due to the alphabet
HistoryPlugin gets loaded first, then TagMindMap loads and undoes one
of HistoryPlugins changes.. bit rude. If you are keen for a quick fix
in the plugin find the function Story.prototype.displayTiddler =
function(srcElement,tiddler,template,animate,unused,customFields,toggle)
and replace with the code at the bottom. Apologies for this!

In terms of tag trees plugin - I can think of a way this could be
done, but it depends on your goals. If you just want to use TagMindMap
as a table of contents I could provide options to turn off the graph
updates -this would then give you full control of what data goes into
the mind map (ie. clicking on a tiddler wouldn't draw it in the map)),
then what we could do is expose a macro <<LoadBranch tiddler>> which
starting with tiddler would load all data on a branch into the graph
(just like TagsTreePlugin), which you could run at startup or place in
certain tiddlers where you would like content pages. What are your
thoughts on this?

In terms of ghosting effect could you reupload that file? I would be
keen to diagnose your problem!

Thanks
Jon
---------------------------
/*CODE*/
Story.prototype.beforettmm_displayTiddler =
Story.prototype.displayTiddler;

Story.prototype.displayTiddler =
function(srcElement,tiddler,template,animate,unused,customFields,toggle)
{
story.beforettmm_displayTiddler(srcElement,tiddler,template,animate,unused,customFields,toggle);

if(!ttmm_current) config.macros.tiddlytagmindmap.handler();
var title = (tiddler instanceof Tiddler)? tiddler.title : tiddler;
var tiddlerElem = this.getTiddler(title);


if(ttmm_current){
try{
var res = ttmm_current.createNodeFromJSON(createJSON(title));
if(res && ttmm_current.rgraph){
ttmm_current.centerOnNode(title);
ttmm_current.computeThenPlot();
}
}
catch(e){
console.log("exception: " + e);
}

}
doColouring(title);
};

rakugo

unread,
Oct 26, 2008, 6:01:10 AM10/26/08
to TiddlyWiki
whoops.. realised I've made some other changes since that might effect
the code I posted above.
Should be "tiddlytagmindmapobject" where it says "ttmm_current".
I'd recommend backing up any changes before applying this fix. If
there is no rush here should be a new version up by the end of the
week!

/*CODE*/
Story.prototype.beforettmm_displayTiddler =
Story.prototype.displayTiddler;

Story.prototype.displayTiddler =
function(srcElement,tiddler,template,animate,unused,customFields,toggle)
{
story.beforettmm_displayTiddler(srcElement,tiddler,template,animate,unused,customFields,toggle);

if(!tiddlytagmindmapobject) config.macros.tiddlytagmindmap.handler();
var title = (tiddler instanceof Tiddler)? tiddler.title :
tiddler;
var tiddlerElem = this.getTiddler(title);

if(tiddlytagmindmapobject){
try{
var res = ttmm_current.createNodeFromJSON(createJSON(title));
if(res && ttmm_current.rgraph){
tiddlytagmindmapobject.centerOnNode(title);
tiddlytagmindmapobject.computeThenPlot();
}
}
catch(e){
console.log("exception: " + e);
}

}

doColouring(title);

};


27escape

unread,
Oct 28, 2008, 4:19:01 AM10/28/08
to TiddlyWiki
Hi Rakugo,

I could not get that to work. I think I will wait for your next update
and see how things have progressed, too much work getting in my way at
the moment.

thanks

kevin

Ken Girard

unread,
Oct 29, 2008, 9:14:44 AM10/29/08
to TiddlyWiki
Just saw your post and was interested.
In Firefox it was pushing over to the left side of the screen, so I
added "margin:1em 17em 1em 14em;" to the #tagmindmap line in the
StyleSheet.
Haven't played with it enough to figure out how to make the mindmap
fill the width yet, and would love to see a toggle to make it jump up
to full screen, kind of the way that the backstage does.
I find I need more room to visualize my plans to take over... the bed.
The woman keeps stealing all the blankets and shoving me to one side
of the bed.

Ken Girard

rakugo

unread,
Nov 8, 2008, 7:49:02 AM11/8/08
to TiddlyWiki
Hello!
Just wanted to inform everyone I have released a new version of the
plugin.

I am pleased to announce...
* I've fixed the displayTiddler issue so it should now be compatible
with any other plugin.
* I've also turned it into what I'm calling a "structured tagcloud".
* You can now have multiple tagmindmaps on a single tiddlywiki
* You can run macro calls anywhere in the document rather than relying
on the tagmindmap div.
* Whole host of other features I've forgotten.

Please inform me if you have any problems with installing or issues
with css so I can address these problems.

Please see www.jonrobson.me.uk and hit the load all button to see it
in action on a big data set.
Find out more at http://tiddlytagmindmap.tiddlyspot.com/ - lots of
examples and usage notes on the plugin itself.

Enjoy!
Jon

Alex Hough

unread,
Nov 8, 2008, 11:10:34 AM11/8/08
to Tiddl...@googlegroups.com
Hi Jon,

Just wanted to congratulate you on this work. I was a Brain user and somthing like this is very interesting to me.
Thanks

Alex

2008/11/8 rakugo <jdlr...@gmail.com>

dsjolie

unread,
Nov 20, 2008, 5:43:20 AM11/20/08
to TiddlyWiki

Hi there!

First - very nice plugin! :)

Second - I wanted to be able to set the width of the map to 100% but
it didn't work since the canvas doesn't seem to get this percent
with... The change below fixed this problem and I don't think there
are any ill effects? Only tested on firefox (obviously) ...

In:
_init_html_elements: function(wrapperID){

change the size initiation to:

canvas.width = parseInt(wrapper.offsetWidth);
canvas.height =parseInt(wrapper.offsetHeight);

/Daniel

rakugo

unread,
Nov 20, 2008, 5:59:41 AM11/20/08
to TiddlyWiki
Thanks for the feedback!
Although this will fix the problem for Firefox I suspect it won't for
IE. I'll make sure it's in the next release :) Should be just a case
of looking for % sign at end of parameter. :)

Jon

Daniel Sjolie

unread,
Nov 20, 2008, 6:14:11 AM11/20/08
to Tiddl...@googlegroups.com
I actually peaked at the prototype ajax framework
(http://www.prototypejs.org/) to find this solution and it certainly
seems like it should be ie-compatible...

See also:
http://www.java2s.com/Code/JavaScriptReference/Javascript-Properties/offsetWidthSyntaxandNote.htm

Another feature request that I don't have time to implement myself
right now would be an ability to "maximize" the mindmap "window" so it
covers the entire window; for when you really want to use it to
"explore your data"... This should be combined with scaling of fonts
and customizing of clicking but that's already on you todo-list I
believe... :)

/Daniel

dsjolie

unread,
Nov 20, 2008, 11:08:31 AM11/20/08
to TiddlyWiki

Ok, this is a bit hackish but I did a click-customization that covers
what I want:

In the "constructor" for config.macros.tiddlytagmindmap.handler :

var clickF = function(node){
// changed:deepone
if ( node.id == tiddlytagmindmapobjects
[id].rgraph.root ) {
story.displayTiddler(null,
node.id,null,null,null,null,null,id);
} else {
try{
var res =
config.macros.tiddlytagmindmap.loadTiddlersIntoTTMM([node.id],id);
}
catch(e){
console.log(&quot;exception in display
tiddler: &quot; + e);
}
}
};

This makes it so you have to click the root/focused/central-node again
to display the associated tiddler... Nodes are still loaded though so
this means that you can browse your graph freely without being
disturbed by tiddlers popping up when you just want to explore
structures... And when you actually want to load a tiddler you just
click it twice...

/Daniel
Reply all
Reply to author
Forward
0 new messages