Skip to content

Fix support for Latex in legends - #3018

Merged
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend
Sep 18, 2018
Merged

Fix support for Latex in legends#3018
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend

Conversation

@jonmmease

@jonmmeasejonmmease commented Sep 15, 2018

Copy link
Copy Markdown
Contributor

This PR introduces a few small fixes for MathJax Latex names in the legend. I know this has worked in the past, but it has not worked consistently in my testing. When it "doesn't work" the entire legend is not shown, and there are SVG console errors complaining that rect width/height cannot be set to NaN.

I believe this to be a concurrency issue that is addressed in 74328f3. The issue is that the call to drawTexts (line 123 in src/components/legend/draw.js) triggers an async rendering call for MathJax text, and then the call to computeLegendDimensions (new line 130) assumes the text has already been rendered.

Commit f23eb74 introduces no new logic, it just applies the indent that was omitted in 74328f3 to make the logical changes clearer.

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

Commits acf5d7b and 6c27224 re-enable the Latex legend string in the mathjax mock. The mock now renders consistently as follows:

mathjax

@etpinard

Copy link
Copy Markdown
Contributor

Looking good to my 👀

Thanks for splitting commits f23eb74 and 74328f3 making this PR very easy to review.

@etpinard

Copy link
Copy Markdown
Contributor

Does this fix #2303 or/and #966 ?

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

The alignment issue in #2303 is fixed by

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

I don't think the scrollbar issue in #966 is reproducible in the current master. I've never seen a scroll bar (with or without this fix), but I can confirm that the particular example in the codepen of #996 renders fine now and without a scroll bar. So I'd call it fixed 🙂

@alexcjohnson

Copy link
Copy Markdown
Collaborator

I don't think the scrollbar issue in #966 is reproducible in the current master.

#966 seems to have disappeared between 1.34 and 1.35 despite the fact that they both have the horizontal alignment problem. Likely #2426 fixed the scrollbar issue, but since MathJax was unusable in legends until this PR, I'll let you close #966 when this PR is merged.

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Fantastic work @jonmmease - 💃

@etpinard

Copy link
Copy Markdown
Contributor

Awesome work @jonmmease

This one will be released today as part of 1.41.1.

@etpinard

Copy link
Copy Markdown
Contributor

I'm all set to release 1.41.1, so I'll go ahead and merge this PR. I hope @jonmmease won't mind.

Thanks again for this fix!

@etpinard
etpinard merged commit 515953a into plotly:masterSep 18, 2018
@xhluca

Copy link
Copy Markdown

Amazing! I was waiting for this one to fix my regression app. Any idea when 1.41.1 will be bundled for plotly.py? Thanks!

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

@xhlulu it will be in plotly.py 3.3 which should be out by the end of next week. If plotly.js releases a 1.41.2 next week we'll try to line up with that.

@xhluca

Copy link
Copy Markdown

Thank you

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugsomething broken

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jonmmease@etpinard@alexcjohnson@xhluca
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Fix support for Latex in legends by jonmmease · Pull Request #3018 · plotly/plotly.js · GitHub
Skip to content

Fix support for Latex in legends - #3018

Merged
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend
Sep 18, 2018
Merged

Fix support for Latex in legends#3018
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend

Conversation

@jonmmease

@jonmmeasejonmmease commented Sep 15, 2018

Copy link
Copy Markdown
Contributor

This PR introduces a few small fixes for MathJax Latex names in the legend. I know this has worked in the past, but it has not worked consistently in my testing. When it "doesn't work" the entire legend is not shown, and there are SVG console errors complaining that rect width/height cannot be set to NaN.

I believe this to be a concurrency issue that is addressed in 74328f3. The issue is that the call to drawTexts (line 123 in src/components/legend/draw.js) triggers an async rendering call for MathJax text, and then the call to computeLegendDimensions (new line 130) assumes the text has already been rendered.

Commit f23eb74 introduces no new logic, it just applies the indent that was omitted in 74328f3 to make the logical changes clearer.

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

Commits acf5d7b and 6c27224 re-enable the Latex legend string in the mathjax mock. The mock now renders consistently as follows:

mathjax

@etpinard

Copy link
Copy Markdown
Contributor

Looking good to my 👀

Thanks for splitting commits f23eb74 and 74328f3 making this PR very easy to review.

@etpinard

Copy link
Copy Markdown
Contributor

Does this fix #2303 or/and #966 ?

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

The alignment issue in #2303 is fixed by

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

I don't think the scrollbar issue in #966 is reproducible in the current master. I've never seen a scroll bar (with or without this fix), but I can confirm that the particular example in the codepen of #996 renders fine now and without a scroll bar. So I'd call it fixed 🙂

@alexcjohnson

Copy link
Copy Markdown
Collaborator

I don't think the scrollbar issue in #966 is reproducible in the current master.

#966 seems to have disappeared between 1.34 and 1.35 despite the fact that they both have the horizontal alignment problem. Likely #2426 fixed the scrollbar issue, but since MathJax was unusable in legends until this PR, I'll let you close #966 when this PR is merged.

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Fantastic work @jonmmease - 💃

@etpinard

Copy link
Copy Markdown
Contributor

Awesome work @jonmmease

This one will be released today as part of 1.41.1.

@etpinard

Copy link
Copy Markdown
Contributor

I'm all set to release 1.41.1, so I'll go ahead and merge this PR. I hope @jonmmease won't mind.

Thanks again for this fix!

@etpinard
etpinard merged commit 515953a into plotly:masterSep 18, 2018
@xhluca

Copy link
Copy Markdown

Amazing! I was waiting for this one to fix my regression app. Any idea when 1.41.1 will be bundled for plotly.py? Thanks!

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

@xhlulu it will be in plotly.py 3.3 which should be out by the end of next week. If plotly.js releases a 1.41.2 next week we'll try to line up with that.

@xhluca

Copy link
Copy Markdown

Thank you

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugsomething broken

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jonmmease@etpinard@alexcjohnson@xhluca
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix support for Latex in legends by jonmmease · Pull Request #3018 · plotly/plotly.js · GitHub
Skip to content

Fix support for Latex in legends - #3018

Merged
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend
Sep 18, 2018
Merged

Fix support for Latex in legends#3018
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend

Conversation

@jonmmease

@jonmmeasejonmmease commented Sep 15, 2018

Copy link
Copy Markdown
Contributor

This PR introduces a few small fixes for MathJax Latex names in the legend. I know this has worked in the past, but it has not worked consistently in my testing. When it "doesn't work" the entire legend is not shown, and there are SVG console errors complaining that rect width/height cannot be set to NaN.

I believe this to be a concurrency issue that is addressed in 74328f3. The issue is that the call to drawTexts (line 123 in src/components/legend/draw.js) triggers an async rendering call for MathJax text, and then the call to computeLegendDimensions (new line 130) assumes the text has already been rendered.

Commit f23eb74 introduces no new logic, it just applies the indent that was omitted in 74328f3 to make the logical changes clearer.

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

Commits acf5d7b and 6c27224 re-enable the Latex legend string in the mathjax mock. The mock now renders consistently as follows:

mathjax

@etpinard

Copy link
Copy Markdown
Contributor

Looking good to my 👀

Thanks for splitting commits f23eb74 and 74328f3 making this PR very easy to review.

@etpinard

Copy link
Copy Markdown
Contributor

Does this fix #2303 or/and #966 ?

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

The alignment issue in #2303 is fixed by

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

I don't think the scrollbar issue in #966 is reproducible in the current master. I've never seen a scroll bar (with or without this fix), but I can confirm that the particular example in the codepen of #996 renders fine now and without a scroll bar. So I'd call it fixed 🙂

@alexcjohnson

Copy link
Copy Markdown
Collaborator

I don't think the scrollbar issue in #966 is reproducible in the current master.

#966 seems to have disappeared between 1.34 and 1.35 despite the fact that they both have the horizontal alignment problem. Likely #2426 fixed the scrollbar issue, but since MathJax was unusable in legends until this PR, I'll let you close #966 when this PR is merged.

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Fantastic work @jonmmease - 💃

@etpinard

Copy link
Copy Markdown
Contributor

Awesome work @jonmmease

This one will be released today as part of 1.41.1.

@etpinard

Copy link
Copy Markdown
Contributor

I'm all set to release 1.41.1, so I'll go ahead and merge this PR. I hope @jonmmease won't mind.

Thanks again for this fix!

@etpinard
etpinard merged commit 515953a into plotly:masterSep 18, 2018
@xhluca

Copy link
Copy Markdown

Amazing! I was waiting for this one to fix my regression app. Any idea when 1.41.1 will be bundled for plotly.py? Thanks!

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

@xhlulu it will be in plotly.py 3.3 which should be out by the end of next week. If plotly.js releases a 1.41.2 next week we'll try to line up with that.

@xhluca

Copy link
Copy Markdown

Thank you

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugsomething broken

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jonmmease@etpinard@alexcjohnson@xhluca
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix support for Latex in legends by jonmmease · Pull Request #3018 · plotly/plotly.js · GitHub
Skip to content

Fix support for Latex in legends - #3018

Merged
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend
Sep 18, 2018
Merged

Fix support for Latex in legends#3018
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend

Conversation

@jonmmease

@jonmmeasejonmmease commented Sep 15, 2018

Copy link
Copy Markdown
Contributor

This PR introduces a few small fixes for MathJax Latex names in the legend. I know this has worked in the past, but it has not worked consistently in my testing. When it "doesn't work" the entire legend is not shown, and there are SVG console errors complaining that rect width/height cannot be set to NaN.

I believe this to be a concurrency issue that is addressed in 74328f3. The issue is that the call to drawTexts (line 123 in src/components/legend/draw.js) triggers an async rendering call for MathJax text, and then the call to computeLegendDimensions (new line 130) assumes the text has already been rendered.

Commit f23eb74 introduces no new logic, it just applies the indent that was omitted in 74328f3 to make the logical changes clearer.

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

Commits acf5d7b and 6c27224 re-enable the Latex legend string in the mathjax mock. The mock now renders consistently as follows:

mathjax

@etpinard

Copy link
Copy Markdown
Contributor

Looking good to my 👀

Thanks for splitting commits f23eb74 and 74328f3 making this PR very easy to review.

@etpinard

Copy link
Copy Markdown
Contributor

Does this fix #2303 or/and #966 ?

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

The alignment issue in #2303 is fixed by

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

I don't think the scrollbar issue in #966 is reproducible in the current master. I've never seen a scroll bar (with or without this fix), but I can confirm that the particular example in the codepen of #996 renders fine now and without a scroll bar. So I'd call it fixed 🙂

@alexcjohnson

Copy link
Copy Markdown
Collaborator

I don't think the scrollbar issue in #966 is reproducible in the current master.

#966 seems to have disappeared between 1.34 and 1.35 despite the fact that they both have the horizontal alignment problem. Likely #2426 fixed the scrollbar issue, but since MathJax was unusable in legends until this PR, I'll let you close #966 when this PR is merged.

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Fantastic work @jonmmease - 💃

@etpinard

Copy link
Copy Markdown
Contributor

Awesome work @jonmmease

This one will be released today as part of 1.41.1.

@etpinard

Copy link
Copy Markdown
Contributor

I'm all set to release 1.41.1, so I'll go ahead and merge this PR. I hope @jonmmease won't mind.

Thanks again for this fix!

@etpinard
etpinard merged commit 515953a into plotly:masterSep 18, 2018
@xhluca

Copy link
Copy Markdown

Amazing! I was waiting for this one to fix my regression app. Any idea when 1.41.1 will be bundled for plotly.py? Thanks!

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

@xhlulu it will be in plotly.py 3.3 which should be out by the end of next week. If plotly.js releases a 1.41.2 next week we'll try to line up with that.

@xhluca

Copy link
Copy Markdown

Thank you

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugsomething broken

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jonmmease@etpinard@alexcjohnson@xhluca
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Fix support for Latex in legends by jonmmease · Pull Request #3018 · plotly/plotly.js · GitHub
Skip to content

Fix support for Latex in legends - #3018

Merged
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend
Sep 18, 2018
Merged

Fix support for Latex in legends#3018
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend

Conversation

@jonmmease

@jonmmeasejonmmease commented Sep 15, 2018

Copy link
Copy Markdown
Contributor

This PR introduces a few small fixes for MathJax Latex names in the legend. I know this has worked in the past, but it has not worked consistently in my testing. When it "doesn't work" the entire legend is not shown, and there are SVG console errors complaining that rect width/height cannot be set to NaN.

I believe this to be a concurrency issue that is addressed in 74328f3. The issue is that the call to drawTexts (line 123 in src/components/legend/draw.js) triggers an async rendering call for MathJax text, and then the call to computeLegendDimensions (new line 130) assumes the text has already been rendered.

Commit f23eb74 introduces no new logic, it just applies the indent that was omitted in 74328f3 to make the logical changes clearer.

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

Commits acf5d7b and 6c27224 re-enable the Latex legend string in the mathjax mock. The mock now renders consistently as follows:

mathjax

@etpinard

Copy link
Copy Markdown
Contributor

Looking good to my 👀

Thanks for splitting commits f23eb74 and 74328f3 making this PR very easy to review.

@etpinard

Copy link
Copy Markdown
Contributor

Does this fix #2303 or/and #966 ?

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

The alignment issue in #2303 is fixed by

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

I don't think the scrollbar issue in #966 is reproducible in the current master. I've never seen a scroll bar (with or without this fix), but I can confirm that the particular example in the codepen of #996 renders fine now and without a scroll bar. So I'd call it fixed 🙂

@alexcjohnson

Copy link
Copy Markdown
Collaborator

I don't think the scrollbar issue in #966 is reproducible in the current master.

#966 seems to have disappeared between 1.34 and 1.35 despite the fact that they both have the horizontal alignment problem. Likely #2426 fixed the scrollbar issue, but since MathJax was unusable in legends until this PR, I'll let you close #966 when this PR is merged.

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Fantastic work @jonmmease - 💃

@etpinard

Copy link
Copy Markdown
Contributor

Awesome work @jonmmease

This one will be released today as part of 1.41.1.

@etpinard

Copy link
Copy Markdown
Contributor

I'm all set to release 1.41.1, so I'll go ahead and merge this PR. I hope @jonmmease won't mind.

Thanks again for this fix!

@etpinard
etpinard merged commit 515953a into plotly:masterSep 18, 2018
@xhluca

Copy link
Copy Markdown

Amazing! I was waiting for this one to fix my regression app. Any idea when 1.41.1 will be bundled for plotly.py? Thanks!

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

@xhlulu it will be in plotly.py 3.3 which should be out by the end of next week. If plotly.js releases a 1.41.2 next week we'll try to line up with that.

@xhluca

Copy link
Copy Markdown

Thank you

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugsomething broken

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jonmmease@etpinard@alexcjohnson@xhluca
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix support for Latex in legends by jonmmease · Pull Request #3018 · plotly/plotly.js · GitHub
Skip to content

Fix support for Latex in legends - #3018

Merged
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend
Sep 18, 2018
Merged

Fix support for Latex in legends#3018
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend

Conversation

@jonmmease

@jonmmeasejonmmease commented Sep 15, 2018

Copy link
Copy Markdown
Contributor

This PR introduces a few small fixes for MathJax Latex names in the legend. I know this has worked in the past, but it has not worked consistently in my testing. When it "doesn't work" the entire legend is not shown, and there are SVG console errors complaining that rect width/height cannot be set to NaN.

I believe this to be a concurrency issue that is addressed in 74328f3. The issue is that the call to drawTexts (line 123 in src/components/legend/draw.js) triggers an async rendering call for MathJax text, and then the call to computeLegendDimensions (new line 130) assumes the text has already been rendered.

Commit f23eb74 introduces no new logic, it just applies the indent that was omitted in 74328f3 to make the logical changes clearer.

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

Commits acf5d7b and 6c27224 re-enable the Latex legend string in the mathjax mock. The mock now renders consistently as follows:

mathjax

@etpinard

Copy link
Copy Markdown
Contributor

Looking good to my 👀

Thanks for splitting commits f23eb74 and 74328f3 making this PR very easy to review.

@etpinard

Copy link
Copy Markdown
Contributor

Does this fix #2303 or/and #966 ?

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

The alignment issue in #2303 is fixed by

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

I don't think the scrollbar issue in #966 is reproducible in the current master. I've never seen a scroll bar (with or without this fix), but I can confirm that the particular example in the codepen of #996 renders fine now and without a scroll bar. So I'd call it fixed 🙂

@alexcjohnson

Copy link
Copy Markdown
Collaborator

I don't think the scrollbar issue in #966 is reproducible in the current master.

#966 seems to have disappeared between 1.34 and 1.35 despite the fact that they both have the horizontal alignment problem. Likely #2426 fixed the scrollbar issue, but since MathJax was unusable in legends until this PR, I'll let you close #966 when this PR is merged.

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Fantastic work @jonmmease - 💃

@etpinard

Copy link
Copy Markdown
Contributor

Awesome work @jonmmease

This one will be released today as part of 1.41.1.

@etpinard

Copy link
Copy Markdown
Contributor

I'm all set to release 1.41.1, so I'll go ahead and merge this PR. I hope @jonmmease won't mind.

Thanks again for this fix!

@etpinard
etpinard merged commit 515953a into plotly:masterSep 18, 2018
@xhluca

Copy link
Copy Markdown

Amazing! I was waiting for this one to fix my regression app. Any idea when 1.41.1 will be bundled for plotly.py? Thanks!

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

@xhlulu it will be in plotly.py 3.3 which should be out by the end of next week. If plotly.js releases a 1.41.2 next week we'll try to line up with that.

@xhluca

Copy link
Copy Markdown

Thank you

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugsomething broken

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jonmmease@etpinard@alexcjohnson@xhluca
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Fix support for Latex in legends by jonmmease · Pull Request #3018 · plotly/plotly.js · GitHub
Skip to content

Fix support for Latex in legends - #3018

Merged
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend
Sep 18, 2018
Merged

Fix support for Latex in legends#3018
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend

Conversation

@jonmmease

@jonmmeasejonmmease commented Sep 15, 2018

Copy link
Copy Markdown
Contributor

This PR introduces a few small fixes for MathJax Latex names in the legend. I know this has worked in the past, but it has not worked consistently in my testing. When it "doesn't work" the entire legend is not shown, and there are SVG console errors complaining that rect width/height cannot be set to NaN.

I believe this to be a concurrency issue that is addressed in 74328f3. The issue is that the call to drawTexts (line 123 in src/components/legend/draw.js) triggers an async rendering call for MathJax text, and then the call to computeLegendDimensions (new line 130) assumes the text has already been rendered.

Commit f23eb74 introduces no new logic, it just applies the indent that was omitted in 74328f3 to make the logical changes clearer.

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

Commits acf5d7b and 6c27224 re-enable the Latex legend string in the mathjax mock. The mock now renders consistently as follows:

mathjax

@etpinard

Copy link
Copy Markdown
Contributor

Looking good to my 👀

Thanks for splitting commits f23eb74 and 74328f3 making this PR very easy to review.

@etpinard

Copy link
Copy Markdown
Contributor

Does this fix #2303 or/and #966 ?

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

The alignment issue in #2303 is fixed by

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

I don't think the scrollbar issue in #966 is reproducible in the current master. I've never seen a scroll bar (with or without this fix), but I can confirm that the particular example in the codepen of #996 renders fine now and without a scroll bar. So I'd call it fixed 🙂

@alexcjohnson

Copy link
Copy Markdown
Collaborator

I don't think the scrollbar issue in #966 is reproducible in the current master.

#966 seems to have disappeared between 1.34 and 1.35 despite the fact that they both have the horizontal alignment problem. Likely #2426 fixed the scrollbar issue, but since MathJax was unusable in legends until this PR, I'll let you close #966 when this PR is merged.

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Fantastic work @jonmmease - 💃

@etpinard

Copy link
Copy Markdown
Contributor

Awesome work @jonmmease

This one will be released today as part of 1.41.1.

@etpinard

Copy link
Copy Markdown
Contributor

I'm all set to release 1.41.1, so I'll go ahead and merge this PR. I hope @jonmmease won't mind.

Thanks again for this fix!

@etpinard
etpinard merged commit 515953a into plotly:masterSep 18, 2018
@xhluca

Copy link
Copy Markdown

Amazing! I was waiting for this one to fix my regression app. Any idea when 1.41.1 will be bundled for plotly.py? Thanks!

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

@xhlulu it will be in plotly.py 3.3 which should be out by the end of next week. If plotly.js releases a 1.41.2 next week we'll try to line up with that.

@xhluca

Copy link
Copy Markdown

Thank you

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugsomething broken

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jonmmease@etpinard@alexcjohnson@xhluca
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Fix support for Latex in legends by jonmmease · Pull Request #3018 · plotly/plotly.js · GitHub
Skip to content

Fix support for Latex in legends - #3018

Merged
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend
Sep 18, 2018
Merged

Fix support for Latex in legends#3018
etpinard merged 6 commits into
plotly:masterfrom
jonmmease:mathjax_legend

Conversation

@jonmmease

@jonmmeasejonmmease commented Sep 15, 2018

Copy link
Copy Markdown
Contributor

This PR introduces a few small fixes for MathJax Latex names in the legend. I know this has worked in the past, but it has not worked consistently in my testing. When it "doesn't work" the entire legend is not shown, and there are SVG console errors complaining that rect width/height cannot be set to NaN.

I believe this to be a concurrency issue that is addressed in 74328f3. The issue is that the call to drawTexts (line 123 in src/components/legend/draw.js) triggers an async rendering call for MathJax text, and then the call to computeLegendDimensions (new line 130) assumes the text has already been rendered.

Commit f23eb74 introduces no new logic, it just applies the indent that was omitted in 74328f3 to make the logical changes clearer.

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

Commits acf5d7b and 6c27224 re-enable the Latex legend string in the mathjax mock. The mock now renders consistently as follows:

mathjax

@etpinard

Copy link
Copy Markdown
Contributor

Looking good to my 👀

Thanks for splitting commits f23eb74 and 74328f3 making this PR very easy to review.

@etpinard

Copy link
Copy Markdown
Contributor

Does this fix #2303 or/and #966 ?

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

The alignment issue in #2303 is fixed by

Commit 1482077 applies the same horizontal offset to latex legend values as are applied to non-latex legend values (this was zero previously). And then I moved this to a more appropriate location and refactored to extract the constant in 222357c.

I don't think the scrollbar issue in #966 is reproducible in the current master. I've never seen a scroll bar (with or without this fix), but I can confirm that the particular example in the codepen of #996 renders fine now and without a scroll bar. So I'd call it fixed 🙂

@alexcjohnson

Copy link
Copy Markdown
Collaborator

I don't think the scrollbar issue in #966 is reproducible in the current master.

#966 seems to have disappeared between 1.34 and 1.35 despite the fact that they both have the horizontal alignment problem. Likely #2426 fixed the scrollbar issue, but since MathJax was unusable in legends until this PR, I'll let you close #966 when this PR is merged.

@alexcjohnson

Copy link
Copy Markdown
Collaborator

Fantastic work @jonmmease - 💃

@etpinard

Copy link
Copy Markdown
Contributor

Awesome work @jonmmease

This one will be released today as part of 1.41.1.

@etpinard

Copy link
Copy Markdown
Contributor

I'm all set to release 1.41.1, so I'll go ahead and merge this PR. I hope @jonmmease won't mind.

Thanks again for this fix!

@etpinard
etpinard merged commit 515953a into plotly:masterSep 18, 2018
@xhluca

Copy link
Copy Markdown

Amazing! I was waiting for this one to fix my regression app. Any idea when 1.41.1 will be bundled for plotly.py? Thanks!

@jonmmease

Copy link
Copy Markdown
ContributorAuthor

@xhlulu it will be in plotly.py 3.3 which should be out by the end of next week. If plotly.js releases a 1.41.2 next week we'll try to line up with that.

@xhluca

Copy link
Copy Markdown

Thank you

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugsomething broken

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jonmmease@etpinard@alexcjohnson@xhluca