mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-02-03 12:49:09 +00:00
Report ZoomIn issues when using tiddler template that starts with a text node (#7007)
* add alert when zoomin error occurs plus protection to avoid TW getting stuck when it happens * Reverted additional logging and made the zoomin just silently and safely ignore the issue
This commit is contained in:
parent
5bce35d90b
commit
3a9f848ea0
@ -40,6 +40,7 @@ Error/RetrievingSkinny: Error retrieving skinny tiddler list
|
|||||||
Error/SavingToTWEdit: Error saving to TWEdit
|
Error/SavingToTWEdit: Error saving to TWEdit
|
||||||
Error/WhileSaving: Error while saving
|
Error/WhileSaving: Error while saving
|
||||||
Error/XMLHttpRequest: XMLHttpRequest error code
|
Error/XMLHttpRequest: XMLHttpRequest error code
|
||||||
|
Error/ZoominTextNode: Story View Error: It appears you tried to interact with a tiddler that displays in a custom container. This is most likely caused by using `$:/tags/StoryTiddlerTemplateFilter` with a template that contains text or whitespace at the start. Please use the pragma `\whitespace trim` and ensure the whole contents of the tiddler is wrapped in a single HTML element. The text that caused this issue:
|
||||||
InternalJavaScriptError/Title: Internal JavaScript Error
|
InternalJavaScriptError/Title: Internal JavaScript Error
|
||||||
InternalJavaScriptError/Hint: Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser
|
InternalJavaScriptError/Hint: Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser
|
||||||
LayoutSwitcher/Description: Open the layout switcher
|
LayoutSwitcher/Description: Open the layout switcher
|
||||||
|
@ -17,6 +17,10 @@ var easing = "cubic-bezier(0.645, 0.045, 0.355, 1)"; // From http://easings.net/
|
|||||||
var ZoominListView = function(listWidget) {
|
var ZoominListView = function(listWidget) {
|
||||||
var self = this;
|
var self = this;
|
||||||
this.listWidget = listWidget;
|
this.listWidget = listWidget;
|
||||||
|
this.textNodeLogger = new $tw.utils.Logger("zoomin story river view", {
|
||||||
|
enable: true,
|
||||||
|
colour: 'red'
|
||||||
|
});
|
||||||
// Get the index of the tiddler that is at the top of the history
|
// Get the index of the tiddler that is at the top of the history
|
||||||
var history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),
|
var history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),
|
||||||
targetTiddler;
|
targetTiddler;
|
||||||
@ -48,7 +52,10 @@ ZoominListView.prototype.navigateTo = function(historyInfo) {
|
|||||||
var listItemWidget = this.listWidget.children[listElementIndex],
|
var listItemWidget = this.listWidget.children[listElementIndex],
|
||||||
targetElement = listItemWidget.findFirstDomNode();
|
targetElement = listItemWidget.findFirstDomNode();
|
||||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||||
if(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {
|
if(!targetElement) {
|
||||||
|
return;
|
||||||
|
} else if (targetElement.nodeType === Node.TEXT_NODE) {
|
||||||
|
this.logTextNodeRoot(targetElement);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Make the new tiddler be position absolute and visible so that we can measure it
|
// Make the new tiddler be position absolute and visible so that we can measure it
|
||||||
@ -130,7 +137,10 @@ function findTitleDomNode(widget,targetClass) {
|
|||||||
ZoominListView.prototype.insert = function(widget) {
|
ZoominListView.prototype.insert = function(widget) {
|
||||||
var targetElement = widget.findFirstDomNode();
|
var targetElement = widget.findFirstDomNode();
|
||||||
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
// Abandon if the list entry isn't a DOM element (it might be a text node)
|
||||||
if(!targetElement || targetElement.nodeType === Node.TEXT_NODE) {
|
if(!targetElement) {
|
||||||
|
return;
|
||||||
|
} else if (targetElement.nodeType === Node.TEXT_NODE) {
|
||||||
|
this.logTextNodeRoot(targetElement);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Make the newly inserted node position absolute and hidden
|
// Make the newly inserted node position absolute and hidden
|
||||||
@ -173,16 +183,21 @@ ZoominListView.prototype.remove = function(widget) {
|
|||||||
var toWidgetDomNode = toWidget && toWidget.findFirstDomNode();
|
var toWidgetDomNode = toWidget && toWidget.findFirstDomNode();
|
||||||
// Set up the tiddler we're moving back in
|
// Set up the tiddler we're moving back in
|
||||||
if(toWidgetDomNode) {
|
if(toWidgetDomNode) {
|
||||||
$tw.utils.addClass(toWidgetDomNode,"tc-storyview-zoomin-tiddler");
|
if (toWidgetDomNode.nodeType === Node.TEXT_NODE) {
|
||||||
$tw.utils.setStyle(toWidgetDomNode,[
|
this.logTextNodeRoot(toWidgetDomNode);
|
||||||
{display: "block"},
|
toWidgetDomNode = null;
|
||||||
{transformOrigin: "50% 50%"},
|
} else {
|
||||||
{transform: "translateX(0px) translateY(0px) scale(10)"},
|
$tw.utils.addClass(toWidgetDomNode,"tc-storyview-zoomin-tiddler");
|
||||||
{transition: $tw.utils.roundTripPropertyName("transform") + " " + duration + "ms " + easing + ", opacity " + duration + "ms " + easing},
|
$tw.utils.setStyle(toWidgetDomNode,[
|
||||||
{opacity: "0"},
|
{display: "block"},
|
||||||
{zIndex: "500"}
|
{transformOrigin: "50% 50%"},
|
||||||
]);
|
{transform: "translateX(0px) translateY(0px) scale(10)"},
|
||||||
this.currentTiddlerDomNode = toWidgetDomNode;
|
{transition: $tw.utils.roundTripPropertyName("transform") + " " + duration + "ms " + easing + ", opacity " + duration + "ms " + easing},
|
||||||
|
{opacity: "0"},
|
||||||
|
{zIndex: "500"}
|
||||||
|
]);
|
||||||
|
this.currentTiddlerDomNode = toWidgetDomNode;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Animate them both
|
// Animate them both
|
||||||
// Force layout
|
// Force layout
|
||||||
@ -206,6 +221,10 @@ ZoominListView.prototype.remove = function(widget) {
|
|||||||
return true; // Indicate that we'll delete the DOM node
|
return true; // Indicate that we'll delete the DOM node
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ZoominListView.prototype.logTextNodeRoot = function(node) {
|
||||||
|
this.textNodeLogger.log($tw.language.getString("Error/ZoominTextNode") + " " + node.textContent);
|
||||||
|
};
|
||||||
|
|
||||||
exports.zoomin = ZoominListView;
|
exports.zoomin = ZoominListView;
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
Loading…
Reference in New Issue
Block a user