From 28db76ddb301e4c8f5b934f2ec057b111a61b054 Mon Sep 17 00:00:00 2001 From: Jermolene Date: Mon, 14 Apr 2014 09:53:13 +0100 Subject: [PATCH] Refactor page rendering into a separate function Refactoring page rendering so that we can fix the performance issues with editing drafts. The plan is to defer the refresh cycle if all the changes are to draft tiddlers. We need to do a bit more of this to get startup.js into better shape (and more extensible). --- core/modules/startup.js | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/core/modules/startup.js b/core/modules/startup.js index 4827332ad..5f665c326 100755 --- a/core/modules/startup.js +++ b/core/modules/startup.js @@ -209,19 +209,8 @@ exports.startup = function() { $tw.styleElement.innerHTML = $tw.styleContainer.textContent; } })); - // Display the PageMacros, which includes the PageTemplate - var templateTitle = "$:/core/ui/PageMacros", - parser = $tw.wiki.parseTiddler(templateTitle); - $tw.perf.report("mainRender",function() { - $tw.pageWidgetNode = $tw.wiki.makeWidget(parser,{document: document, parentWidget: $tw.rootWidget}); - $tw.pageContainer = document.createElement("div"); - $tw.utils.addClass($tw.pageContainer,"tw-page-container-wrapper"); - document.body.insertBefore($tw.pageContainer,document.body.firstChild); - $tw.pageWidgetNode.render($tw.pageContainer,null); - })(); - $tw.wiki.addEventListener("change",$tw.perf.report("mainRefresh",function(changes) { - $tw.pageWidgetNode.refresh(changes,$tw.pageContainer,null); - })); + // Display the $:/PageMacros tiddler to kick off the display + renderPage(); // Fix up the link between the root widget and the page container $tw.rootWidget.domNodes = [$tw.pageContainer]; $tw.rootWidget.children = [$tw.pageWidgetNode]; @@ -251,7 +240,22 @@ exports.startup = function() { ); commander.execute(); } - }; +function renderPage() { + // Display the PageMacros, which includes the PageTemplate + var templateTitle = "$:/core/ui/PageMacros", + parser = $tw.wiki.parseTiddler(templateTitle); + $tw.perf.report("mainRender",function() { + $tw.pageWidgetNode = $tw.wiki.makeWidget(parser,{document: document, parentWidget: $tw.rootWidget}); + $tw.pageContainer = document.createElement("div"); + $tw.utils.addClass($tw.pageContainer,"tw-page-container-wrapper"); + document.body.insertBefore($tw.pageContainer,document.body.firstChild); + $tw.pageWidgetNode.render($tw.pageContainer,null); + })(); + $tw.wiki.addEventListener("change",$tw.perf.report("mainRefresh",function(changes) { + $tw.pageWidgetNode.refresh(changes,$tw.pageContainer,null); + })); +} + })();