') + ')', '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('^' + ".*" + ', '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" + ', '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('^' + ".*" + ', '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); } })(); })(); Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces by rpkyle · Pull Request #137 · plotly/dashR · GitHub
Skip to content

Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces - #137

Merged
rpkyle merged 6 commits into
devfrom
994-fix-viewer
Dec 25, 2019
Merged

Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces#137
rpkyle merged 6 commits into
devfrom
994-fix-viewer

Conversation

@rpkyle

@rpkylerpkyle commented Nov 4, 2019

Copy link
Copy Markdown
Contributor

As noted in plotly/dash#994, the current version of dash-renderer bundled with Dash for R attempts to embed the R stack trace within an iframe.

This PR proposes to upgrade dash-renderer from v1.0.0 to v1.2.0, and also includes conditional logic to properly handle both Python and R stack traces, as described in plotly/dash#996.

Additional work may be required:

  • ensure dash_renderer.dev.js.map is up-to-date
  • ensure dash_renderer.min.js.map is up-to-date

@rpkylerpkyle changed the title Update dash-renderer to 1.2.0 and fix dev tools UI display of stack tracesUpdate dash-renderer to 1.2.2 and fix dev tools UI display of stack tracesDec 23, 2019
@rpkyle
rpkyle requested review from shammamah-zz and removed request for alexcjohnsonDecember 23, 2019 21:25

@shammamah-zzshammamah-zz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💃 As soon as tests pass!

@rpkyle
rpkyle merged commit 93345e6 into devDec 25, 2019
@rpkyle
rpkyle deleted the 994-fix-viewer branch December 25, 2019 22:12
@rpkylerpkyle mentioned this pull request Jan 3, 2020
rpkyle added a commit that referenced this pull request Jan 4, 2020
* Provide support for no_update in Dash for R (#111)
* Use dev_tools_prune_errors instead of pruned_errors (#113)
* Better handling for user-defined error conditions in debug mode (#116)
* Provide support for multiple outputs (#119)
* Provide support for hot reloading in Dash for R (#127)
* Implement support for clientside callbacks in Dash for R (#130)
* Add line number context to stack traces when srcrefs are available (#133)
* Update dash-renderer to 1.2.2 and fix dev tools UI display of stack traces (#137)
* Support for meta tags in Dash for R (#142)
* Fixes for hot reloading interval handling and refreshing apps within viewer pane (#148)
* Support for asynchronous loading/compression in Dash for R (#157)
* Support returning asset URLs via public method within Dash class (#160)
* Minor fix for get_asset_url + docs, add url_base_pathname (#161)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@rpkyle@shammamah-zz@Marc-Andre-Rivet