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 @@
-
- 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);