Remove hard FSCharting dependency - #65

Merged
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout
Sep 7, 2016
Merged

Remove hard FSCharting dependency #65
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout

Conversation

@npmurphy

@npmurphynpmurphy commented May 6, 2016

Copy link
Copy Markdown
Contributor

This will require a lot of testing to make sure it works.
Here is some example code

#load "FSCharting.fsx" // Windows
//#load "FSCharting.Gtk.fsx" // Linux/Mac requires FSCharting to use unstable Oxyplot version. IfSharp.FSCharting.Initialize()
let data = [ ("F#", 10); ("C#", 5); ("C++", 20); ("Java", 1); ]
FSharp.Charting.Chart.Bar(data) |> Display

@cgravill

cgravill commented May 6, 2016

Copy link
Copy Markdown
Member

Do you mean:
#load "FSCharting.fsx" // Windows

We wouldn't want to force a GTK dependency on Windows users.

@cgravill

Copy link
Copy Markdown
Member

That works for me on Windows too. I do get confusing warning:

image

The directory it's looking in is quite off, is the line as intended here:

#I "../../../bin/packages/FSharp.Charting/lib/net40"

I do think switching to Paket is overall a good change. It does mean we've added a quite manual set of steps i.e. from #61

./paket/paket.bootstrapper.exe
paket.exe install

Perhaps we could trigger those conditionally in the FSCharting.fsx? I'm thinking from a new user perspective who may have used a installer and not even know what Paket is.

@tpetricek

Copy link
Copy Markdown
Member

Many of the auto-generated load scripts (including the FsLab one) add #I for locations that might not exist (FsLab does that for NuGet directory layout and Paket directory layout).

You can add #nowarn "211" to disable the warning - but it has to be run before the interaction that causes the errors.

@cgravill

Copy link
Copy Markdown
Member

To avoid the manual steps, I've made a pull request npmurphy#6 where I reference Paket.Core.dll and fetch the dependencies at install time. This is probably a nicer solution as it leads to exposing the Paket api to users of the Notebook which would be a great way to get additional dependencies.

@tpetricek I tried moving the #nowarn "211" to the very top the of the fsx but it seems like fsi reads ahead, is that right? Would we have to turn off this warning before calling this?

As a more severe approach I've commented out those lines. On Windows with above Paket install that gets the required dlls in place to have a warning-free charting experience. Could you please check if that's OK elsewhere @npmurphy?

@cgravill

Copy link
Copy Markdown
Member

Great, thanks for tidying up the changes and adding to documentation. This change might cause a bit of temporary disruption for people with existing notebooks and FSCharting dependency (now removed from include.fsx, and you now need to call #load FSCharting.fsx or #load FSCharting.gtk.fsx). However, this allows us to extend support to Mac and Linux users and allow Windows users to update their FSCharting.

I'll merge this to the Jupyter branch now.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@npmurphy@cgravill@tpetricek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Remove hard FSCharting dependency - #65

Merged
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout
Sep 7, 2016
Merged

Remove hard FSCharting dependency #65
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout

Conversation

@npmurphy

@npmurphynpmurphy commented May 6, 2016

Copy link
Copy Markdown
Contributor

This will require a lot of testing to make sure it works.
Here is some example code

#load "FSCharting.fsx" // Windows
//#load "FSCharting.Gtk.fsx" // Linux/Mac requires FSCharting to use unstable Oxyplot version. IfSharp.FSCharting.Initialize()
let data = [ ("F#", 10); ("C#", 5); ("C++", 20); ("Java", 1); ]
FSharp.Charting.Chart.Bar(data) |> Display

@cgravill

cgravill commented May 6, 2016

Copy link
Copy Markdown
Member

Do you mean:
#load "FSCharting.fsx" // Windows

We wouldn't want to force a GTK dependency on Windows users.

@cgravill

Copy link
Copy Markdown
Member

That works for me on Windows too. I do get confusing warning:

image

The directory it's looking in is quite off, is the line as intended here:

#I "../../../bin/packages/FSharp.Charting/lib/net40"

I do think switching to Paket is overall a good change. It does mean we've added a quite manual set of steps i.e. from #61

./paket/paket.bootstrapper.exe
paket.exe install

Perhaps we could trigger those conditionally in the FSCharting.fsx? I'm thinking from a new user perspective who may have used a installer and not even know what Paket is.

@tpetricek

Copy link
Copy Markdown
Member

Many of the auto-generated load scripts (including the FsLab one) add #I for locations that might not exist (FsLab does that for NuGet directory layout and Paket directory layout).

You can add #nowarn "211" to disable the warning - but it has to be run before the interaction that causes the errors.

@cgravill

Copy link
Copy Markdown
Member

To avoid the manual steps, I've made a pull request npmurphy#6 where I reference Paket.Core.dll and fetch the dependencies at install time. This is probably a nicer solution as it leads to exposing the Paket api to users of the Notebook which would be a great way to get additional dependencies.

@tpetricek I tried moving the #nowarn "211" to the very top the of the fsx but it seems like fsi reads ahead, is that right? Would we have to turn off this warning before calling this?

As a more severe approach I've commented out those lines. On Windows with above Paket install that gets the required dlls in place to have a warning-free charting experience. Could you please check if that's OK elsewhere @npmurphy?

@cgravill

Copy link
Copy Markdown
Member

Great, thanks for tidying up the changes and adding to documentation. This change might cause a bit of temporary disruption for people with existing notebooks and FSCharting dependency (now removed from include.fsx, and you now need to call #load FSCharting.fsx or #load FSCharting.gtk.fsx). However, this allows us to extend support to Mac and Linux users and allow Windows users to update their FSCharting.

I'll merge this to the Jupyter branch now.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@npmurphy@cgravill@tpetricek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove hard FSCharting dependency - #65

Merged
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout
Sep 7, 2016
Merged

Remove hard FSCharting dependency #65
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout

Conversation

@npmurphy

@npmurphynpmurphy commented May 6, 2016

Copy link
Copy Markdown
Contributor

This will require a lot of testing to make sure it works.
Here is some example code

#load "FSCharting.fsx" // Windows
//#load "FSCharting.Gtk.fsx" // Linux/Mac requires FSCharting to use unstable Oxyplot version. IfSharp.FSCharting.Initialize()
let data = [ ("F#", 10); ("C#", 5); ("C++", 20); ("Java", 1); ]
FSharp.Charting.Chart.Bar(data) |> Display

@cgravill

cgravill commented May 6, 2016

Copy link
Copy Markdown
Member

Do you mean:
#load "FSCharting.fsx" // Windows

We wouldn't want to force a GTK dependency on Windows users.

@cgravill

Copy link
Copy Markdown
Member

That works for me on Windows too. I do get confusing warning:

image

The directory it's looking in is quite off, is the line as intended here:

#I "../../../bin/packages/FSharp.Charting/lib/net40"

I do think switching to Paket is overall a good change. It does mean we've added a quite manual set of steps i.e. from #61

./paket/paket.bootstrapper.exe
paket.exe install

Perhaps we could trigger those conditionally in the FSCharting.fsx? I'm thinking from a new user perspective who may have used a installer and not even know what Paket is.

@tpetricek

Copy link
Copy Markdown
Member

Many of the auto-generated load scripts (including the FsLab one) add #I for locations that might not exist (FsLab does that for NuGet directory layout and Paket directory layout).

You can add #nowarn "211" to disable the warning - but it has to be run before the interaction that causes the errors.

@cgravill

Copy link
Copy Markdown
Member

To avoid the manual steps, I've made a pull request npmurphy#6 where I reference Paket.Core.dll and fetch the dependencies at install time. This is probably a nicer solution as it leads to exposing the Paket api to users of the Notebook which would be a great way to get additional dependencies.

@tpetricek I tried moving the #nowarn "211" to the very top the of the fsx but it seems like fsi reads ahead, is that right? Would we have to turn off this warning before calling this?

As a more severe approach I've commented out those lines. On Windows with above Paket install that gets the required dlls in place to have a warning-free charting experience. Could you please check if that's OK elsewhere @npmurphy?

@cgravill

Copy link
Copy Markdown
Member

Great, thanks for tidying up the changes and adding to documentation. This change might cause a bit of temporary disruption for people with existing notebooks and FSCharting dependency (now removed from include.fsx, and you now need to call #load FSCharting.fsx or #load FSCharting.gtk.fsx). However, this allows us to extend support to Mac and Linux users and allow Windows users to update their FSCharting.

I'll merge this to the Jupyter branch now.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

Remove hard FSCharting dependency - #65

Merged
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout
Sep 7, 2016
Merged

Remove hard FSCharting dependency #65
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout

Conversation

@npmurphy

@npmurphynpmurphy commented May 6, 2016

Copy link
Copy Markdown
Contributor

This will require a lot of testing to make sure it works.
Here is some example code

#load "FSCharting.fsx" // Windows
//#load "FSCharting.Gtk.fsx" // Linux/Mac requires FSCharting to use unstable Oxyplot version. IfSharp.FSCharting.Initialize()
let data = [ ("F#", 10); ("C#", 5); ("C++", 20); ("Java", 1); ]
FSharp.Charting.Chart.Bar(data) |> Display

@cgravill

cgravill commented May 6, 2016

Copy link
Copy Markdown
Member

Do you mean:
#load "FSCharting.fsx" // Windows

We wouldn't want to force a GTK dependency on Windows users.

@cgravill

Copy link
Copy Markdown
Member

That works for me on Windows too. I do get confusing warning:

image

The directory it's looking in is quite off, is the line as intended here:

#I "../../../bin/packages/FSharp.Charting/lib/net40"

I do think switching to Paket is overall a good change. It does mean we've added a quite manual set of steps i.e. from #61

./paket/paket.bootstrapper.exe
paket.exe install

Perhaps we could trigger those conditionally in the FSCharting.fsx? I'm thinking from a new user perspective who may have used a installer and not even know what Paket is.

@tpetricek

Copy link
Copy Markdown
Member

Many of the auto-generated load scripts (including the FsLab one) add #I for locations that might not exist (FsLab does that for NuGet directory layout and Paket directory layout).

You can add #nowarn "211" to disable the warning - but it has to be run before the interaction that causes the errors.

@cgravill

Copy link
Copy Markdown
Member

To avoid the manual steps, I've made a pull request npmurphy#6 where I reference Paket.Core.dll and fetch the dependencies at install time. This is probably a nicer solution as it leads to exposing the Paket api to users of the Notebook which would be a great way to get additional dependencies.

@tpetricek I tried moving the #nowarn "211" to the very top the of the fsx but it seems like fsi reads ahead, is that right? Would we have to turn off this warning before calling this?

As a more severe approach I've commented out those lines. On Windows with above Paket install that gets the required dlls in place to have a warning-free charting experience. Could you please check if that's OK elsewhere @npmurphy?

@cgravill

Copy link
Copy Markdown
Member

Great, thanks for tidying up the changes and adding to documentation. This change might cause a bit of temporary disruption for people with existing notebooks and FSCharting dependency (now removed from include.fsx, and you now need to call #load FSCharting.fsx or #load FSCharting.gtk.fsx). However, this allows us to extend support to Mac and Linux users and allow Windows users to update their FSCharting.

I'll merge this to the Jupyter branch now.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

Remove hard FSCharting dependency - #65

Merged
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout
Sep 7, 2016
Merged

Remove hard FSCharting dependency #65
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout

Conversation

@npmurphy

@npmurphynpmurphy commented May 6, 2016

Copy link
Copy Markdown
Contributor

This will require a lot of testing to make sure it works.
Here is some example code

#load "FSCharting.fsx" // Windows
//#load "FSCharting.Gtk.fsx" // Linux/Mac requires FSCharting to use unstable Oxyplot version. IfSharp.FSCharting.Initialize()
let data = [ ("F#", 10); ("C#", 5); ("C++", 20); ("Java", 1); ]
FSharp.Charting.Chart.Bar(data) |> Display

@cgravill

cgravill commented May 6, 2016

Copy link
Copy Markdown
Member

Do you mean:
#load "FSCharting.fsx" // Windows

We wouldn't want to force a GTK dependency on Windows users.

@cgravill

Copy link
Copy Markdown
Member

That works for me on Windows too. I do get confusing warning:

image

The directory it's looking in is quite off, is the line as intended here:

#I "../../../bin/packages/FSharp.Charting/lib/net40"

I do think switching to Paket is overall a good change. It does mean we've added a quite manual set of steps i.e. from #61

./paket/paket.bootstrapper.exe
paket.exe install

Perhaps we could trigger those conditionally in the FSCharting.fsx? I'm thinking from a new user perspective who may have used a installer and not even know what Paket is.

@tpetricek

Copy link
Copy Markdown
Member

Many of the auto-generated load scripts (including the FsLab one) add #I for locations that might not exist (FsLab does that for NuGet directory layout and Paket directory layout).

You can add #nowarn "211" to disable the warning - but it has to be run before the interaction that causes the errors.

@cgravill

Copy link
Copy Markdown
Member

To avoid the manual steps, I've made a pull request npmurphy#6 where I reference Paket.Core.dll and fetch the dependencies at install time. This is probably a nicer solution as it leads to exposing the Paket api to users of the Notebook which would be a great way to get additional dependencies.

@tpetricek I tried moving the #nowarn "211" to the very top the of the fsx but it seems like fsi reads ahead, is that right? Would we have to turn off this warning before calling this?

As a more severe approach I've commented out those lines. On Windows with above Paket install that gets the required dlls in place to have a warning-free charting experience. Could you please check if that's OK elsewhere @npmurphy?

@cgravill

Copy link
Copy Markdown
Member

Great, thanks for tidying up the changes and adding to documentation. This change might cause a bit of temporary disruption for people with existing notebooks and FSCharting dependency (now removed from include.fsx, and you now need to call #load FSCharting.fsx or #load FSCharting.gtk.fsx). However, this allows us to extend support to Mac and Linux users and allow Windows users to update their FSCharting.

I'll merge this to the Jupyter branch now.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@npmurphy@cgravill@tpetricek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove hard FSCharting dependency - #65

Merged
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout
Sep 7, 2016
Merged

Remove hard FSCharting dependency #65
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout

Conversation

@npmurphy

@npmurphynpmurphy commented May 6, 2016

Copy link
Copy Markdown
Contributor

This will require a lot of testing to make sure it works.
Here is some example code

#load "FSCharting.fsx" // Windows
//#load "FSCharting.Gtk.fsx" // Linux/Mac requires FSCharting to use unstable Oxyplot version. IfSharp.FSCharting.Initialize()
let data = [ ("F#", 10); ("C#", 5); ("C++", 20); ("Java", 1); ]
FSharp.Charting.Chart.Bar(data) |> Display

@cgravill

cgravill commented May 6, 2016

Copy link
Copy Markdown
Member

Do you mean:
#load "FSCharting.fsx" // Windows

We wouldn't want to force a GTK dependency on Windows users.

@cgravill

Copy link
Copy Markdown
Member

That works for me on Windows too. I do get confusing warning:

image

The directory it's looking in is quite off, is the line as intended here:

#I "../../../bin/packages/FSharp.Charting/lib/net40"

I do think switching to Paket is overall a good change. It does mean we've added a quite manual set of steps i.e. from #61

./paket/paket.bootstrapper.exe
paket.exe install

Perhaps we could trigger those conditionally in the FSCharting.fsx? I'm thinking from a new user perspective who may have used a installer and not even know what Paket is.

@tpetricek

Copy link
Copy Markdown
Member

Many of the auto-generated load scripts (including the FsLab one) add #I for locations that might not exist (FsLab does that for NuGet directory layout and Paket directory layout).

You can add #nowarn "211" to disable the warning - but it has to be run before the interaction that causes the errors.

@cgravill

Copy link
Copy Markdown
Member

To avoid the manual steps, I've made a pull request npmurphy#6 where I reference Paket.Core.dll and fetch the dependencies at install time. This is probably a nicer solution as it leads to exposing the Paket api to users of the Notebook which would be a great way to get additional dependencies.

@tpetricek I tried moving the #nowarn "211" to the very top the of the fsx but it seems like fsi reads ahead, is that right? Would we have to turn off this warning before calling this?

As a more severe approach I've commented out those lines. On Windows with above Paket install that gets the required dlls in place to have a warning-free charting experience. Could you please check if that's OK elsewhere @npmurphy?

@cgravill

Copy link
Copy Markdown
Member

Great, thanks for tidying up the changes and adding to documentation. This change might cause a bit of temporary disruption for people with existing notebooks and FSCharting dependency (now removed from include.fsx, and you now need to call #load FSCharting.fsx or #load FSCharting.gtk.fsx). However, this allows us to extend support to Mac and Linux users and allow Windows users to update their FSCharting.

I'll merge this to the Jupyter branch now.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@npmurphy@cgravill@tpetricek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Remove hard FSCharting dependency - #65

Merged
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout
Sep 7, 2016
Merged

Remove hard FSCharting dependency #65
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout

Conversation

@npmurphy

@npmurphynpmurphy commented May 6, 2016

Copy link
Copy Markdown
Contributor

This will require a lot of testing to make sure it works.
Here is some example code

#load "FSCharting.fsx" // Windows
//#load "FSCharting.Gtk.fsx" // Linux/Mac requires FSCharting to use unstable Oxyplot version. IfSharp.FSCharting.Initialize()
let data = [ ("F#", 10); ("C#", 5); ("C++", 20); ("Java", 1); ]
FSharp.Charting.Chart.Bar(data) |> Display

@cgravill

cgravill commented May 6, 2016

Copy link
Copy Markdown
Member

Do you mean:
#load "FSCharting.fsx" // Windows

We wouldn't want to force a GTK dependency on Windows users.

@cgravill

Copy link
Copy Markdown
Member

That works for me on Windows too. I do get confusing warning:

image

The directory it's looking in is quite off, is the line as intended here:

#I "../../../bin/packages/FSharp.Charting/lib/net40"

I do think switching to Paket is overall a good change. It does mean we've added a quite manual set of steps i.e. from #61

./paket/paket.bootstrapper.exe
paket.exe install

Perhaps we could trigger those conditionally in the FSCharting.fsx? I'm thinking from a new user perspective who may have used a installer and not even know what Paket is.

@tpetricek

Copy link
Copy Markdown
Member

Many of the auto-generated load scripts (including the FsLab one) add #I for locations that might not exist (FsLab does that for NuGet directory layout and Paket directory layout).

You can add #nowarn "211" to disable the warning - but it has to be run before the interaction that causes the errors.

@cgravill

Copy link
Copy Markdown
Member

To avoid the manual steps, I've made a pull request npmurphy#6 where I reference Paket.Core.dll and fetch the dependencies at install time. This is probably a nicer solution as it leads to exposing the Paket api to users of the Notebook which would be a great way to get additional dependencies.

@tpetricek I tried moving the #nowarn "211" to the very top the of the fsx but it seems like fsi reads ahead, is that right? Would we have to turn off this warning before calling this?

As a more severe approach I've commented out those lines. On Windows with above Paket install that gets the required dlls in place to have a warning-free charting experience. Could you please check if that's OK elsewhere @npmurphy?

@cgravill

Copy link
Copy Markdown
Member

Great, thanks for tidying up the changes and adding to documentation. This change might cause a bit of temporary disruption for people with existing notebooks and FSCharting dependency (now removed from include.fsx, and you now need to call #load FSCharting.fsx or #load FSCharting.gtk.fsx). However, this allows us to extend support to Mac and Linux users and allow Windows users to update their FSCharting.

I'll merge this to the Jupyter branch now.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

Remove hard FSCharting dependency - #65

Merged
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout
Sep 7, 2016
Merged

Remove hard FSCharting dependency #65
cgravill merged 8 commits into
fsprojects:jupyterfrom
npmurphy:fscharting_ripout

Conversation

@npmurphy

@npmurphynpmurphy commented May 6, 2016

Copy link
Copy Markdown
Contributor

This will require a lot of testing to make sure it works.
Here is some example code

#load "FSCharting.fsx" // Windows
//#load "FSCharting.Gtk.fsx" // Linux/Mac requires FSCharting to use unstable Oxyplot version. IfSharp.FSCharting.Initialize()
let data = [ ("F#", 10); ("C#", 5); ("C++", 20); ("Java", 1); ]
FSharp.Charting.Chart.Bar(data) |> Display

@cgravill

cgravill commented May 6, 2016

Copy link
Copy Markdown
Member

Do you mean:
#load "FSCharting.fsx" // Windows

We wouldn't want to force a GTK dependency on Windows users.

@cgravill

Copy link
Copy Markdown
Member

That works for me on Windows too. I do get confusing warning:

image

The directory it's looking in is quite off, is the line as intended here:

#I "../../../bin/packages/FSharp.Charting/lib/net40"

I do think switching to Paket is overall a good change. It does mean we've added a quite manual set of steps i.e. from #61

./paket/paket.bootstrapper.exe
paket.exe install

Perhaps we could trigger those conditionally in the FSCharting.fsx? I'm thinking from a new user perspective who may have used a installer and not even know what Paket is.

@tpetricek

Copy link
Copy Markdown
Member

Many of the auto-generated load scripts (including the FsLab one) add #I for locations that might not exist (FsLab does that for NuGet directory layout and Paket directory layout).

You can add #nowarn "211" to disable the warning - but it has to be run before the interaction that causes the errors.

@cgravill

Copy link
Copy Markdown
Member

To avoid the manual steps, I've made a pull request npmurphy#6 where I reference Paket.Core.dll and fetch the dependencies at install time. This is probably a nicer solution as it leads to exposing the Paket api to users of the Notebook which would be a great way to get additional dependencies.

@tpetricek I tried moving the #nowarn "211" to the very top the of the fsx but it seems like fsi reads ahead, is that right? Would we have to turn off this warning before calling this?

As a more severe approach I've commented out those lines. On Windows with above Paket install that gets the required dlls in place to have a warning-free charting experience. Could you please check if that's OK elsewhere @npmurphy?

@cgravill

Copy link
Copy Markdown
Member

Great, thanks for tidying up the changes and adding to documentation. This change might cause a bit of temporary disruption for people with existing notebooks and FSCharting dependency (now removed from include.fsx, and you now need to call #load FSCharting.fsx or #load FSCharting.gtk.fsx). However, this allows us to extend support to Mac and Linux users and allow Windows users to update their FSCharting.

I'll merge this to the Jupyter branch now.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@npmurphy@cgravill@tpetricek