How to "apify" OpenLayers with Node.js? - node.js

I was playing with an idea of having a openlayers instance running on node and being able to call it from my website?
For example I would like to send location parameters for it and use openlayers plugins to generate a response (since similar plugin isn't available for Leaflet and I wouldn't like to add two separate mapping librarys on the same page).
Could this be possible with virtualdom or similar?

Related

Creating a chart on client and on the server using d3.js?

I'm developing a library which targets browser and server ( node.js ), when trying to create an SVG on the server i ran into the error "document is not defined", because for some reason d3.js depends on the document object.
So i reached out for d3-node which depends on jsdom and probably will end up creating issues when building this library for the client.
One thing that is unknown to me is the fact I wish to generate same charts but when running on the browser i would like them to be interactive, which is something i can completely ignore when generating offline charts.
So i'm wondering if it's possible and worth to have a library that targets both environments and if possible have one simple build which runs on both environments?
Can't we use d3.js and generate the SVG string without depending on "document"? I believe the answer will be "NO" if i want to attach DOM events right? Therefore its likely i need to simply make a client build with all the features and design the library in a way it's possible to render the chart without adding DOM events.

Is it possible to use the WebAPIs in VsCode such as WebAudio etc?

I'd like to use the awesome WebAPIs which power VsCode/electron. So, is there a way to use VsCode for, say, playing audio from the local disk?
A VSCode extension does not have access to editor's DOM or web specific APIs. Two possible ways to work around this:
Use the previewHtml command if you need to create a custom view. This command allows you to hand VSCode an html document to render. Any scripts in the html will not have access to the editor's DOM, but can access their own dom and most web APIs. This approach works well if you are building a custom view or custom UI.
Call out to an external program to provide this functionality. Since the extension has access to node, to play audio for example, you could spawn a process that invokes afplay.

How to deploy TerriaJS on my site

I would like to deploy an instance of TerriaJS on my site for the purpose of 3D (with 2D-fallback) geospatial mapping. I am a bit confused as to how to actually "deploy" TerriaJS on my site. I am very familiar with Leaflet... pretty much just include the leaflet.js file, create a div, and off you go. However, I am running through the wiki on TerriaJS's github page and all I see is a bunch of NodeJS.
What am I missing? I am able to get the map to run with NPM and I see a nice 3D map (running inside of a node web server instance), but that doesn't do me any good as I want to be able to embed the map on my web site.
If anyone has a nice (plain English) tutorial or starting point, that would be awesome.
Thanks.
The Node-based web server that we usually use with TerriaJS only does a few things:
It serves up the static HTML, JavaScript, and CSS that make up the application.
It includes a simple service at /proxy that allows TerriaJS to access geospatial data servers that don't support CORS.
It includes another service at /convert that uses OGR to transform geospatial vector data (e.g. shapefiles) to GeoJSON for display by the TerriaJS client.
Of these, only the first is required. So, you can copy the wwwroot directory of a working TerriaJS application up to whatever web server runs your site and it will run there just as well as it does on the Node-based server. You'll have to make sure that all of your geospatial data is either on the same server or is hosted on servers that support CORS, and shapefile conversion won't be supported, but other than that you should be good to go.
Embedding TerriaJS in an existing web page is a bit trickier. You'll want to start with the index.js, index.html, and index.less files in the TerriaJS app you started with (NationalMap maybe?) and modify them to suite your needs. You'll need to use the gulp-based build process. But once that is all done, you can just copy the files up to your web server as before.
Depending on your needs, you may also consider embedding TerriaJS on your page in an iframe rather than building it into the page directly. You can control the content of the catalog and customize some basic aspects of the UI by specifying parameters to the URL. You can also control it by posting cross-window messages as described here.
Finally, it's possible to use TerriaJS without the provided user interface, e.g. by providing your own. This is a pretty advanced scenario, though, so probably best to post a separate question if you want to go down that road.

NodeJS Skinning

Is there a module or similar things that support skinning in NodeJS? I want to build a NodeJS website, and want to be able to re-skin the website as I like without much efforts, like in Wordpress.
Is skinning supported in NodeJS?
If you're interested in building a website in Node.js and don't need a wordpress-style cms behind it, there are few projects that can help you out.
Have you looked into Bootstrap? It's built with less which you can easily plug in to your Express setup (see the guide here, using the command line executable to set up a new project you can specify less like this: express --css less myapp and it will do all the work for you)
In the bootstrap less file are several variables you can use to change the colours, fonts, sizes, etc, and it's also got a lot of helpers for grid layouts and responsive designs.
It even includes a few useful javascript plugins too which make the ui nicer with less work.
There are also a lot of sites with themes and theme generators around which then work on top of bootstrap, and may achieve what you want.
Plugging in this sort of solution (whether bootstrap or other) is about as close as you can come to getting skinning for node; As otherwise suggested if you're looking for a CMS out of the box as well, probably best to look for another platform like Wordpress.
Node.js is not a content management system. It is a platform on top of which you could built a web server with a content management system. To answer your question you need to be looking for node.js based content management systems that support themes.
The only node.js CMS that I am aware of is Calipso. It's still pretty alpha-stage. It may have some theming support, but it is nowhere near as polished as Wordpress.
Also is there a reason why you want to use node.js? I mean there is nothing wrong in using Wordpress for creating a themeable website - it is just awesome for that.
If you just want another OnlineShop, or maybe a blog, i think nodejs is maybe not your right choose as Jed Watson told.
If your requirements are more complicated, and you want a quick and easy implementation of a nice web interface, and you have html, javascript, and css knowledge... I strongly recommend you just trying to work with MEAN.js
It puts together MongoDB Expressjs, AngularJs, and NodeJs.
Use this, for example with a yeoman fullstack constructor and you will have a powerful webapp, with user autentication, and much more in a few minutes.
After that, the use of jade, less, scss, and similar languages of modelling the front, and the easy way you can also model collections in the back, is for me the best combination you´ll find for creating a website today.
Hope it´ll help you
King Regards

Google feed api in a nodejs application?

I have a php application that uses the google feed api to get the feeds I want and display them. I was wondering how can I call the google feed api from a nodejs application ?
Use node's http.request() (or the shortcut version http.get()) functionality; that's conceptually the same thing you must be currently doing in PHP.
You might find that installing and using Mikeal's request module would make things even simpler.

Resources