') + ')', '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); } })(); })(); Fix custom pageSize for Dash App Previews by tarzzz · Pull Request #243 · plotly/orca · GitHub
Skip to content
This repository was archived by the owner on Aug 27, 2026. It is now read-only.
/orcaPublic archive

Fix custom pageSize for Dash App Previews - #243

Merged
tarzzz merged 3 commits into
3.2-releasefrom
fix-custom-size-arg
Sep 9, 2019
Merged

Fix custom pageSize for Dash App Previews#243
tarzzz merged 3 commits into
3.2-releasefrom
fix-custom-size-arg

Conversation

@tarzzz

@tarzzztarzzz commented Sep 6, 2019

Copy link
Copy Markdown
Contributor

Part of https://github.com/plotly/streambed/issues/13458

  • Test different size combinations in an on-prem environment.

The custom size is not working because remote.CreateBrowserWindow expects the height/width to be "non-strings" (ie integers or floats). This fixes the issue.

Comment threadsrc/component/plotly-dash-preview/parse.js Outdated
@tarzzz
tarzzzforce-pushed the fix-custom-size-arg branch 4 times, most recently from 1c9b6d6 to b002aa3CompareSeptember 6, 2019 21:32
@tarzzztarzzz changed the title Ensure that width/height settings are IntsFix custom pageSize for Dash App PreviewsSep 6, 2019
@chriddyp

Copy link
Copy Markdown
Member

I think only integers are supported - there's an electron bug with floats: electron/electron#9361 (comment)

@tarzzz

Copy link
Copy Markdown
ContributorAuthor

In my investigations, I noticed that the pageSize specified in the request body is not being passed to printToPDF call. This fixes the issue.

I think only integers are supported - there's an electron bug with floats:electron/electron#9361 (comment)

We can Math.ceil the incoming values to ensure only integers are passed along. Choosing b/w Math.ceil or Math.floor or Math.round does not matter because it will only change by +- 1 micron.

@tarzzz

Copy link
Copy Markdown
ContributorAuthor

@antoinerg or @etpinard Please review.. I have checked this in an on-prem environment and custom page sizes work for me.

@joaoalf

Copy link
Copy Markdown
Contributor

@tarzzz Don't we want this for 3.2-release?

@etpinard

Copy link
Copy Markdown
Contributor

Looks good to me 💃

That said, are folks ok with providing the page size in microns? Maybe we could change it to pixels, call this a breaking change and bump orca to v2?

@tarzzz

Copy link
Copy Markdown
ContributorAuthor

are folks ok with providing the page size in microns

It is not a breaking change as the pageSize has always been in microns in the API.

@tarzzz
tarzzz changed the base branch from master to 3.2-releaseSeptember 9, 2019 15:15
@etpinard

Copy link
Copy Markdown
Contributor

Correct @tarzzz your PR here does not introduce a breaking change.

But what if we'd like to improve the API (here OR in a future PR), I think making users input page dimensions in pixels would be beneficial.

@tarzzz

Copy link
Copy Markdown
ContributorAuthor

But what if we'd like to improve the API (here OR in a future PR), I think making users input page dimensions in pixels would be beneficial.

Yes, but this is going to be the part of a maintenance release.. so we should not be introducing breaking change(s) or new features.

If required, We can add the new issue (for dimensions in pixels) as the part of the next release work.

@tarzzz
tarzzz merged commit e869f80 into 3.2-releaseSep 9, 2019
@antoinerg

Copy link
Copy Markdown
Collaborator

@tarzzz thanks again for taking on this issue. Could you also make a PR to merge those changes into master?

@tarzzztarzzz mentioned this pull request Sep 10, 2019
@tarzzz
tarzzz deleted the fix-custom-size-arg branch September 10, 2019 13:30
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@tarzzz@chriddyp@joaoalf@etpinard@antoinerg