From c06f8cb9a8b30069c38961549308fadf88a5d12a Mon Sep 17 00:00:00 2001 From: serra82 Date: Sun, 14 Feb 2016 00:19:40 +0100 Subject: [PATCH] add simple ajax for table page and server for api with grunt-proxy --- Gruntfile.js | 46 ++- README.md | 9 +- app/index.html | 3 +- app/scripts/app.js | 12 +- app/scripts/controllers/tableContoller.js | 436 +++++++++++++++++++++ app/views/table.html | 405 +------------------- bower.json | 6 +- package.json | 3 + serverapi/server.js | 438 ++++++++++++++++++++++ 9 files changed, 947 insertions(+), 411 deletions(-) create mode 100644 app/scripts/controllers/tableContoller.js create mode 100644 serverapi/server.js diff --git a/Gruntfile.js b/Gruntfile.js index cf00783b8..83f0f1fb3 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -71,9 +71,47 @@ module.exports = function (grunt) { hostname: 'localhost', livereload: 35729 }, + proxies: [{ + context: '/api', // the context of the data service + //context: '/data-service-path', // the context of the data service + host: 'localhost', // wherever the data service is running + port: 8080, // the port that the data service is running on + rewrite: { + // the key '^/api' is a regex for the path to be rewritten + // the value is the context of the data service + '^/api': '/data-service-path' + } + }], livereload: { options: { open: true, + base: [ + '.tmp', + '<%= yeoman.app %>', + '<%= yeoman.bower_components %>' + ], + middleware: function (connect, options) { + console.log("option.base:"+options.base); + if (!Array.isArray(options.base)) { + options.base = [options.base]; + console.log("option.base added:" +option.base); + } + + // Setup the proxy + var middlewares = [require('grunt-connect-proxy/lib/utils').proxyRequest]; + + // Serve static files. + options.base.forEach(function(base) { + middlewares.push(connect.static(base)); + }); + + // Make directory browse-able. + var directory = options.directory || options.base[options.base.length - 1]; + middlewares.push(connect.directory(directory)); + + return middlewares; + } + /* middleware: function (connect) { return [ connect.static('.tmp'), @@ -83,7 +121,7 @@ module.exports = function (grunt) { ), connect.static(appConfig.app) ]; - } + }*/ } }, test: { @@ -93,10 +131,7 @@ module.exports = function (grunt) { return [ connect.static('.tmp'), connect.static('test'), - connect().use( - '/bower_components', - connect.static('./bower_components') - ), + //connect().use('/bower_components', connect.static('./bower_components') ), //removed for proxy connect.static(appConfig.app) ]; } @@ -374,6 +409,7 @@ module.exports = function (grunt) { 'clean:server', 'concurrent:server', 'autoprefixer', + 'configureProxies:server', 'connect:livereload', 'watch' ]); diff --git a/README.md b/README.md index 6bb5a7029..416933e84 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,11 @@ $ npm start ```sh $ npm run dist ``` - +- open another shell and run server for ajax calls +```sh +cd serverapi/ +node server.js +``` **Note:** If you get this following error, @@ -55,7 +59,8 @@ sudo chown -R [user name] ~/.config ## Roadmap -- Add sample AJAX calls and make the directives more modular +x Added sample AJAX calls for table +- make the directives more modular ### Automation tools diff --git a/app/index.html b/app/index.html index 63b938101..2d9d6738b 100644 --- a/app/index.html +++ b/app/index.html @@ -42,7 +42,7 @@ - + diff --git a/app/scripts/app.js b/app/scripts/app.js index 7c1b8b033..f63c8fafd 100644 --- a/app/scripts/app.js +++ b/app/scripts/app.js @@ -13,6 +13,7 @@ angular 'ui.router', 'ui.bootstrap', 'angular-loading-bar', + //'TableService', ]) .config(['$stateProvider','$urlRouterProvider','$ocLazyLoadProvider',function ($stateProvider,$urlRouterProvider,$ocLazyLoadProvider) { @@ -127,7 +128,16 @@ angular }) .state('dashboard.table',{ templateUrl:'views/table.html', - url:'/table' + url:'/table', + controller:'TableCtrl', + resolve: { + loadMyFile:function($ocLazyLoad) { + return $ocLazyLoad.load({ + name:'sbAdminApp', + files:['scripts/controllers/tableContoller.js'] + }) + } + } }) .state('dashboard.panels-wells',{ templateUrl:'views/ui-elements/panels-wells.html', diff --git a/app/scripts/controllers/tableContoller.js b/app/scripts/controllers/tableContoller.js new file mode 100644 index 000000000..9c739c9be --- /dev/null +++ b/app/scripts/controllers/tableContoller.js @@ -0,0 +1,436 @@ +'use strict'; + +angular.module('sbAdminApp', []) + .controller('TableCtrl', ['$scope', 'TableService', '$timeout', function ($scope, TableService, $timeout) { + + $scope.table = {}; + + TableService.getTableData(function(data){ + $scope.table = data; + }); + + }]) + + .factory('TableService', ['$http', function ($http) { + + var table = {}; + + return { + getTableData: function(callback) { + $http.get('/api/table') + .success(function(data) { + console.log(data); + table = data; + callback(data); + }) + .error(function(data) { + console.log('Get table data error: ' + data); + //for preview without serverapi running + callback( + [ + { + "engine":"Trident", + "browser":"Internet Explorer 4.0", + "platform":"Win 95+", + "version":"4", + "grade":"X" + }, + { + "engine":"Trident", + "browser":"Internet Explorer 5.0", + "platform":"Win 95+", + "version":"5", + "grade":"C" + }, + { + "engine":"Trident", + "browser":"Internet Explorer 5.5", + "platform":"Win 95+", + "version":"5.5", + "grade":"A" + }, + { + "engine":"Trident", + "browser":"Internet Explorer 6", + "platform":"Win 98+", + "version":"6", + "grade":"A" + }, + { + "engine":"Trident", + "browser":"Internet Explorer 7", + "platform":"Win XP SP2+", + "version":"7", + "grade":"A" + }, + { + "engine":"Trident", + "browser":"AOL browser (AOL desktop)", + "platform":"Win XP", + "version":"6", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Firefox 1.0", + "platform":"Win 98+ / OSX.2+", + "version":"1.7", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Firefox 1.5", + "platform":"Win 98+ / OSX.2+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Firefox 2.0", + "platform":"Win 98+ / OSX.2+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Firefox 3.0", + "platform":"Win 2k+ / OSX.3+", + "version":"1.9", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Camino 1.0", + "platform":"OSX.2+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Camino 1.5", + "platform":"OSX.3+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Netscape 7.2", + "platform":"Win 95+ / Mac OS 8.6-9.2", + "version":"1.7", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Netscape Browser 8", + "platform":"Win 98SE+", + "version":"1.7", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Netscape Navigator 9", + "platform":"Win 98+ / OSX.2+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.0", + "platform":"Win 95+ / OSX.1+", + "version":"1", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.1", + "platform":"Win 95+ / OSX.1+", + "version":"1.1", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.2", + "platform":"Win 95+ / OSX.1+", + "version":"1.2", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.3", + "platform":"Win 95+ / OSX.1+", + "version":"1.3", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.4", + "platform":"Win 95+ / OSX.1+", + "version":"1.4", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.5", + "platform":"Win 95+ / OSX.1+", + "version":"1.5", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.6", + "platform":"Win 95+ / OSX.1+", + "version":"1.6", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.7", + "platform":"Win 98+ / OSX.1+", + "version":"1.7", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.8", + "platform":"Win 98+ / OSX.1+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Seamonkey 1.1", + "platform":"Win 98+ / OSX.2+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Epiphany 2.20", + "platform":"Gnome", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"Safari 1.2", + "platform":"OSX.3", + "version":"125.5", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"Safari 1.3", + "platform":"OSX.3", + "version":"312.8", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"Safari 2.0", + "platform":"OSX.4+", + "version":"419.3", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"Safari 3.0", + "platform":"OSX.4+", + "version":"522.1", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"OmniWeb 5.5", + "platform":"OSX.4+", + "version":"420", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"iPod Touch / iPhone", + "platform":"iPod", + "version":"420.1", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"S60", + "platform":"S60", + "version":"413", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 7.0", + "platform":"Win 95+ / OSX.1+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 7.5", + "platform":"Win 95+ / OSX.2+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 8.0", + "platform":"Win 95+ / OSX.2+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 8.5", + "platform":"Win 95+ / OSX.2+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 9.0", + "platform":"Win 95+ / OSX.3+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 9.2", + "platform":"Win 88+ / OSX.3+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 9.5", + "platform":"Win 88+ / OSX.3+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera for Wii", + "platform":"Wii", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Nokia N800", + "platform":"N800", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Nintendo DS browser", + "platform":"Nintendo DS", + "version":"8.5", + "grade":"C/A1" + }, + { + "engine":"KHTML", + "browser":"Konqureror 3.1", + "platform":"KDE 3.1", + "version":"3.1", + "grade":"C" + }, + { + "engine":"KHTML", + "browser":"Konqureror 3.3", + "platform":"KDE 3.3", + "version":"3.3", + "grade":"A" + }, + { + "engine":"KHTML", + "browser":"Konqureror 3.5", + "platform":"KDE 3.5", + "version":"3.5", + "grade":"A" + }, + { + "engine":"Tasman", + "browser":"Internet Explorer 4.5", + "platform":"Mac OS 8-9", + "version":"-", + "grade":"X" + }, + { + "engine":"Tasman", + "browser":"Internet Explorer 5.1", + "platform":"Mac OS 7.6-9", + "version":"1", + "grade":"C" + }, + { + "engine":"Tasman", + "browser":"Internet Explorer 5.2", + "platform":"Mac OS 8-X", + "version":"1", + "grade":"C" + }, + { + "engine":"Misc", + "browser":"NetFront 3.1", + "platform":"Embedded devices", + "version":"-", + "grade":"C" + }, + { + "engine":"Misc", + "browser":"NetFront 3.4", + "platform":"Embedded devices", + "version":"-", + "grade":"A" + }, + { + "engine":"Misc", + "browser":"Dillo 0.8", + "platform":"Embedded devices", + "version":"-", + "grade":"X" + }, + { + "engine":"Misc", + "browser":"Links", + "platform":"Text only", + "version":"-", + "grade":"X" + }, + { + "engine":"Misc", + "browser":"Lynx", + "platform":"Text only", + "version":"-", + "grade":"X" + }, + { + "engine":"Misc", + "browser":"IE Mobile", + "platform":"Windows Mobile 6", + "version":"-", + "grade":"C" + }, + { + "engine":"Misc", + "browser":"PSP browser", + "platform":"PSP", + "version":"-", + "grade":"C" + }, + { + "engine":"Other browsers", + "browser":"All others", + "platform":"-", + "version":"-", + "grade":"U" + } + ] + ) + }); + }, + }; + }]); + \ No newline at end of file diff --git a/app/views/table.html b/app/views/table.html index 6a2bfd9f4..6dc2457e2 100644 --- a/app/views/table.html +++ b/app/views/table.html @@ -25,405 +25,12 @@

Tables

- - Trident - Internet Explorer 4.0 - Win 95+ - 4 - X - - - Trident - Internet Explorer 5.0 - Win 95+ - 5 - C - - - Trident - Internet Explorer 5.5 - Win 95+ - 5.5 - A - - - Trident - Internet Explorer 6 - Win 98+ - 6 - A - - - Trident - Internet Explorer 7 - Win XP SP2+ - 7 - A - - - Trident - AOL browser (AOL desktop) - Win XP - 6 - A - - - Gecko - Firefox 1.0 - Win 98+ / OSX.2+ - 1.7 - A - - - Gecko - Firefox 1.5 - Win 98+ / OSX.2+ - 1.8 - A - - - Gecko - Firefox 2.0 - Win 98+ / OSX.2+ - 1.8 - A - - - Gecko - Firefox 3.0 - Win 2k+ / OSX.3+ - 1.9 - A - - - Gecko - Camino 1.0 - OSX.2+ - 1.8 - A - - - Gecko - Camino 1.5 - OSX.3+ - 1.8 - A - - - Gecko - Netscape 7.2 - Win 95+ / Mac OS 8.6-9.2 - 1.7 - A - - - Gecko - Netscape Browser 8 - Win 98SE+ - 1.7 - A - - - Gecko - Netscape Navigator 9 - Win 98+ / OSX.2+ - 1.8 - A - - - Gecko - Mozilla 1.0 - Win 95+ / OSX.1+ - 1 - A - - - Gecko - Mozilla 1.1 - Win 95+ / OSX.1+ - 1.1 - A - - - Gecko - Mozilla 1.2 - Win 95+ / OSX.1+ - 1.2 - A - - - Gecko - Mozilla 1.3 - Win 95+ / OSX.1+ - 1.3 - A - - - Gecko - Mozilla 1.4 - Win 95+ / OSX.1+ - 1.4 - A - - - Gecko - Mozilla 1.5 - Win 95+ / OSX.1+ - 1.5 - A - - - Gecko - Mozilla 1.6 - Win 95+ / OSX.1+ - 1.6 - A - - - Gecko - Mozilla 1.7 - Win 98+ / OSX.1+ - 1.7 - A - - - Gecko - Mozilla 1.8 - Win 98+ / OSX.1+ - 1.8 - A - - - Gecko - Seamonkey 1.1 - Win 98+ / OSX.2+ - 1.8 - A - - - Gecko - Epiphany 2.20 - Gnome - 1.8 - A - - - Webkit - Safari 1.2 - OSX.3 - 125.5 - A - - - Webkit - Safari 1.3 - OSX.3 - 312.8 - A - - - Webkit - Safari 2.0 - OSX.4+ - 419.3 - A - - - Webkit - Safari 3.0 - OSX.4+ - 522.1 - A - - - Webkit - OmniWeb 5.5 - OSX.4+ - 420 - A - - - Webkit - iPod Touch / iPhone - iPod - 420.1 - A - - - Webkit - S60 - S60 - 413 - A - - - Presto - Opera 7.0 - Win 95+ / OSX.1+ - - - A - - - Presto - Opera 7.5 - Win 95+ / OSX.2+ - - - A - - - Presto - Opera 8.0 - Win 95+ / OSX.2+ - - - A - - - Presto - Opera 8.5 - Win 95+ / OSX.2+ - - - A - - - Presto - Opera 9.0 - Win 95+ / OSX.3+ - - - A - - - Presto - Opera 9.2 - Win 88+ / OSX.3+ - - - A - - - Presto - Opera 9.5 - Win 88+ / OSX.3+ - - - A - - - Presto - Opera for Wii - Wii - - - A - - - Presto - Nokia N800 - N800 - - - A - - - Presto - Nintendo DS browser - Nintendo DS - 8.5 - C/A1 - - - - KHTML - Konqureror 3.1 - KDE 3.1 - 3.1 - C - - - KHTML - Konqureror 3.3 - KDE 3.3 - 3.3 - A - - - KHTML - Konqureror 3.5 - KDE 3.5 - 3.5 - A - - - Tasman - Internet Explorer 4.5 - Mac OS 8-9 - - - X - - - Tasman - Internet Explorer 5.1 - Mac OS 7.6-9 - 1 - C - - - Tasman - Internet Explorer 5.2 - Mac OS 8-X - 1 - C - - - Misc - NetFront 3.1 - Embedded devices - - - C - - - Misc - NetFront 3.4 - Embedded devices - - - A - - - Misc - Dillo 0.8 - Embedded devices - - - X - - - Misc - Links - Text only - - - X - - - Misc - Lynx - Text only - - - X - - - Misc - IE Mobile - Windows Mobile 6 - - - C - - - Misc - PSP browser - PSP - - - C - - - Other browsers - All others - - - - - U + + {{row.engine}} + {{row.browser}} + {{row.platform}} + {{row.version}} + {{row.grade}} diff --git a/bower.json b/bower.json index ef05e6663..a230e7187 100644 --- a/bower.json +++ b/bower.json @@ -24,8 +24,8 @@ "angular-mocks": "1.2.16", "angular-scenario": "1.2.16" }, - "resolutions":{ - "bootstrap": "~3.1.1" - }, + "resolutions": { + "bootstrap": "~3.1.1" + }, "appPath": "app" } diff --git a/package.json b/package.json index 063a60ef0..f897a278c 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,12 @@ }, "dependencies": {}, "devDependencies": { + "body-parser": "^1.15.0", + "express": "^4.13.4", "grunt": "^0.4.1", "grunt-autoprefixer": "^0.7.3", "grunt-concurrent": "^0.5.0", + "grunt-connect-proxy": "^0.2.0", "grunt-contrib-clean": "^0.5.0", "grunt-contrib-concat": "^0.4.0", "grunt-contrib-connect": "^0.7.1", diff --git a/serverapi/server.js b/serverapi/server.js new file mode 100644 index 000000000..2fad1cdff --- /dev/null +++ b/serverapi/server.js @@ -0,0 +1,438 @@ +// call the packages we need +var express = require('express'); +var app = express(); +var bodyParser = require('body-parser'); + +// configure app to use bodyParser() +// this will let us get the data from a POST +app.use(bodyParser.urlencoded({ extended: true })); +app.use(bodyParser.json()); + +var port = process.env.PORT || 8080; // set our port + + +// ROUTES FOR OUR API +// ============================================================================= +var router = express.Router(); // get an instance of the express Router + +// test route to make sure everything is working (accessed at GET http://localhost:8080/api) +router.get('/', function(req, res) { + res.json({ message: 'hooray! welcome to our api!' }); +}); + +//http://localhost:8080/data-service-path/devices +router.get('/table', function(req, res) { + console.log("call for table data"); + res.json( + [ + { + "engine":"Trident", + "browser":"Internet Explorer 4.0", + "platform":"Win 95+", + "version":"4", + "grade":"X" + }, + { + "engine":"Trident", + "browser":"Internet Explorer 5.0", + "platform":"Win 95+", + "version":"5", + "grade":"C" + }, + { + "engine":"Trident", + "browser":"Internet Explorer 5.5", + "platform":"Win 95+", + "version":"5.5", + "grade":"A" + }, + { + "engine":"Trident", + "browser":"Internet Explorer 6", + "platform":"Win 98+", + "version":"6", + "grade":"A" + }, + { + "engine":"Trident", + "browser":"Internet Explorer 7", + "platform":"Win XP SP2+", + "version":"7", + "grade":"A" + }, + { + "engine":"Trident", + "browser":"AOL browser (AOL desktop)", + "platform":"Win XP", + "version":"6", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Firefox 1.0", + "platform":"Win 98+ / OSX.2+", + "version":"1.7", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Firefox 1.5", + "platform":"Win 98+ / OSX.2+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Firefox 2.0", + "platform":"Win 98+ / OSX.2+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Firefox 3.0", + "platform":"Win 2k+ / OSX.3+", + "version":"1.9", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Camino 1.0", + "platform":"OSX.2+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Camino 1.5", + "platform":"OSX.3+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Netscape 7.2", + "platform":"Win 95+ / Mac OS 8.6-9.2", + "version":"1.7", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Netscape Browser 8", + "platform":"Win 98SE+", + "version":"1.7", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Netscape Navigator 9", + "platform":"Win 98+ / OSX.2+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.0", + "platform":"Win 95+ / OSX.1+", + "version":"1", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.1", + "platform":"Win 95+ / OSX.1+", + "version":"1.1", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.2", + "platform":"Win 95+ / OSX.1+", + "version":"1.2", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.3", + "platform":"Win 95+ / OSX.1+", + "version":"1.3", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.4", + "platform":"Win 95+ / OSX.1+", + "version":"1.4", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.5", + "platform":"Win 95+ / OSX.1+", + "version":"1.5", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.6", + "platform":"Win 95+ / OSX.1+", + "version":"1.6", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.7", + "platform":"Win 98+ / OSX.1+", + "version":"1.7", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Mozilla 1.8", + "platform":"Win 98+ / OSX.1+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Seamonkey 1.1", + "platform":"Win 98+ / OSX.2+", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Gecko", + "browser":"Epiphany 2.20", + "platform":"Gnome", + "version":"1.8", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"Safari 1.2", + "platform":"OSX.3", + "version":"125.5", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"Safari 1.3", + "platform":"OSX.3", + "version":"312.8", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"Safari 2.0", + "platform":"OSX.4+", + "version":"419.3", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"Safari 3.0", + "platform":"OSX.4+", + "version":"522.1", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"OmniWeb 5.5", + "platform":"OSX.4+", + "version":"420", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"iPod Touch / iPhone", + "platform":"iPod", + "version":"420.1", + "grade":"A" + }, + { + "engine":"Webkit", + "browser":"S60", + "platform":"S60", + "version":"413", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 7.0", + "platform":"Win 95+ / OSX.1+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 7.5", + "platform":"Win 95+ / OSX.2+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 8.0", + "platform":"Win 95+ / OSX.2+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 8.5", + "platform":"Win 95+ / OSX.2+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 9.0", + "platform":"Win 95+ / OSX.3+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 9.2", + "platform":"Win 88+ / OSX.3+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera 9.5", + "platform":"Win 88+ / OSX.3+", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Opera for Wii", + "platform":"Wii", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Nokia N800", + "platform":"N800", + "version":"-", + "grade":"A" + }, + { + "engine":"Presto", + "browser":"Nintendo DS browser", + "platform":"Nintendo DS", + "version":"8.5", + "grade":"C/A1" + }, + { + "engine":"KHTML", + "browser":"Konqureror 3.1", + "platform":"KDE 3.1", + "version":"3.1", + "grade":"C" + }, + { + "engine":"KHTML", + "browser":"Konqureror 3.3", + "platform":"KDE 3.3", + "version":"3.3", + "grade":"A" + }, + { + "engine":"KHTML", + "browser":"Konqureror 3.5", + "platform":"KDE 3.5", + "version":"3.5", + "grade":"A" + }, + { + "engine":"Tasman", + "browser":"Internet Explorer 4.5", + "platform":"Mac OS 8-9", + "version":"-", + "grade":"X" + }, + { + "engine":"Tasman", + "browser":"Internet Explorer 5.1", + "platform":"Mac OS 7.6-9", + "version":"1", + "grade":"C" + }, + { + "engine":"Tasman", + "browser":"Internet Explorer 5.2", + "platform":"Mac OS 8-X", + "version":"1", + "grade":"C" + }, + { + "engine":"Misc", + "browser":"NetFront 3.1", + "platform":"Embedded devices", + "version":"-", + "grade":"C" + }, + { + "engine":"Misc", + "browser":"NetFront 3.4", + "platform":"Embedded devices", + "version":"-", + "grade":"A" + }, + { + "engine":"Misc", + "browser":"Dillo 0.8", + "platform":"Embedded devices", + "version":"-", + "grade":"X" + }, + { + "engine":"Misc", + "browser":"Links", + "platform":"Text only", + "version":"-", + "grade":"X" + }, + { + "engine":"Misc", + "browser":"Lynx", + "platform":"Text only", + "version":"-", + "grade":"X" + }, + { + "engine":"Misc", + "browser":"IE Mobile", + "platform":"Windows Mobile 6", + "version":"-", + "grade":"C" + }, + { + "engine":"Misc", + "browser":"PSP browser", + "platform":"PSP", + "version":"-", + "grade":"C" + }, + { + "engine":"Other browsers", + "browser":"All others", + "platform":"-", + "version":"-", + "grade":"U" + } + ]); +}); + + +// REGISTER OUR ROUTES ------------------------------- +// all of our routes will be prefixed with /data-service-path +app.use('/data-service-path', router); + +// START THE SERVER +// ============================================================================= +app.listen(port); +console.log('Magic happens on port ' + port);