init
This commit is contained in:
4
ui/.bowerrc
Normal file
4
ui/.bowerrc
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"directory": "public/components",
|
||||
"json": "bower.json"
|
||||
}
|
||||
10
ui/.editorconfig
Normal file
10
ui/.editorconfig
Normal file
@@ -0,0 +1,10 @@
|
||||
# http://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
4
ui/.gitignore
vendored
Normal file
4
ui/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
node_modules/
|
||||
public/components
|
||||
.nyc_output
|
||||
.sass-cache
|
||||
10
ui/.yo-rc.json
Normal file
10
ui/.yo-rc.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"generator-express": {
|
||||
"promptValues": {
|
||||
"type": "Basic",
|
||||
"viewEngine": "EJS",
|
||||
"cssPreprocessor": "None",
|
||||
"buildTool": "Gulp"
|
||||
}
|
||||
}
|
||||
}
|
||||
69
ui/app.js
Normal file
69
ui/app.js
Normal file
@@ -0,0 +1,69 @@
|
||||
|
||||
|
||||
var express = require('express');
|
||||
var path = require('path');
|
||||
var favicon = require('serve-favicon');
|
||||
var logger = require('morgan');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var bodyParser = require('body-parser');
|
||||
|
||||
var routes = require('./routes/index');
|
||||
|
||||
var app = express();
|
||||
|
||||
var env = process.env.NODE_ENV || 'development';
|
||||
app.locals.ENV = env;
|
||||
app.locals.ENV_DEVELOPMENT = env == 'development';
|
||||
|
||||
// view engine setup
|
||||
|
||||
app.set('views', path.join(__dirname, 'views'));
|
||||
app.set('view engine', 'ejs');
|
||||
|
||||
// app.use(favicon(__dirname + '/public/img/favicon.ico'));
|
||||
app.use(logger('dev'));
|
||||
app.use(bodyParser.json());
|
||||
app.use(bodyParser.urlencoded({
|
||||
extended: true
|
||||
}));
|
||||
app.use(cookieParser());
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
|
||||
app.use('/', routes);
|
||||
|
||||
/// catch 404 and forward to error handler
|
||||
app.use(function(req, res, next) {
|
||||
var err = new Error('Not Found');
|
||||
err.status = 404;
|
||||
next(err);
|
||||
});
|
||||
|
||||
/// error handlers
|
||||
|
||||
// development error handler
|
||||
// will print stacktrace
|
||||
|
||||
if (app.get('env') === 'development') {
|
||||
app.use(function(err, req, res, next) {
|
||||
res.status(err.status || 500);
|
||||
res.render('error', {
|
||||
message: err.message,
|
||||
error: err,
|
||||
title: 'error'
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// production error handler
|
||||
// no stacktraces leaked to user
|
||||
app.use(function(err, req, res, next) {
|
||||
res.status(err.status || 500);
|
||||
res.render('error', {
|
||||
message: err.message,
|
||||
error: {},
|
||||
title: 'error'
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
module.exports = app;
|
||||
8
ui/bin/www
Normal file
8
ui/bin/www
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env node
|
||||
var app = require('../app');
|
||||
|
||||
app.set('port', process.env.PORT || 3000);
|
||||
|
||||
var server = app.listen(app.get('port'), function() {
|
||||
console.log('Express server listening on port ' + server.address().port);
|
||||
});
|
||||
13
ui/bower.json
Normal file
13
ui/bower.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "ui",
|
||||
"version": "0.0.1",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"components"
|
||||
],
|
||||
"dependencies": {
|
||||
"rickshaw": "^1.6.0",
|
||||
"jquery": "^3.1.1"
|
||||
}
|
||||
}
|
||||
26
ui/gulpfile.js
Normal file
26
ui/gulpfile.js
Normal file
@@ -0,0 +1,26 @@
|
||||
var gulp = require('gulp'),
|
||||
nodemon = require('gulp-nodemon'),
|
||||
plumber = require('gulp-plumber'),
|
||||
livereload = require('gulp-livereload');
|
||||
|
||||
|
||||
gulp.task('develop', function () {
|
||||
livereload.listen();
|
||||
nodemon({
|
||||
script: 'bin/www',
|
||||
ext: 'js ejs coffee',
|
||||
stdout: false
|
||||
}).on('readable', function () {
|
||||
this.stdout.on('data', function (chunk) {
|
||||
if(/^Express server listening on port/.test(chunk)){
|
||||
livereload.changed(__dirname);
|
||||
}
|
||||
});
|
||||
this.stdout.pipe(process.stdout);
|
||||
this.stderr.pipe(process.stderr);
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('default', [
|
||||
'develop'
|
||||
]);
|
||||
32
ui/package.json
Normal file
32
ui/package.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"name": "ui",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"main": "app.js",
|
||||
"scripts": {
|
||||
"start": "node ./bin/www",
|
||||
"test": "mocha --recursive test",
|
||||
"test:coverage": "nyc npm test",
|
||||
"test:unit": "mocha --recursive test/middleware test/models test/routes",
|
||||
"test:integration": "mocha --recursive test/integration"
|
||||
},
|
||||
"dependencies": {
|
||||
"express": "^4.13.3",
|
||||
"serve-favicon": "^2.3.0",
|
||||
"morgan": "^1.6.1",
|
||||
"cookie-parser": "^1.3.3",
|
||||
"body-parser": "^1.13.3",
|
||||
"ejs": "^2.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"chai": "^3.5.0",
|
||||
"debug": "^2.2.0",
|
||||
"gulp": "^3.9.0",
|
||||
"gulp-nodemon": "^2.0.2",
|
||||
"gulp-livereload": "^3.8.0",
|
||||
"gulp-plumber": "^1.0.0",
|
||||
"mocha": "^3.0.2",
|
||||
"nyc": "^10.0.0",
|
||||
"supertest": "^2.0.0"
|
||||
}
|
||||
}
|
||||
8
ui/public/css/style.css
Normal file
8
ui/public/css/style.css
Normal file
@@ -0,0 +1,8 @@
|
||||
body {
|
||||
padding: 50px;
|
||||
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #00B7FF;
|
||||
}
|
||||
10
ui/routes/index.js
Normal file
10
ui/routes/index.js
Normal file
@@ -0,0 +1,10 @@
|
||||
var express = require('express');
|
||||
var router = express.Router();
|
||||
|
||||
/* GET home page. */
|
||||
|
||||
router.get('/', function(req, res) {
|
||||
res.render('index', { title: 'Express' });
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
7
ui/views/error.ejs
Normal file
7
ui/views/error.ejs
Normal file
@@ -0,0 +1,7 @@
|
||||
<% include header %>
|
||||
|
||||
<%- message %>
|
||||
<%- error.status %>
|
||||
<%- error.stack %>
|
||||
|
||||
<% include footer %>
|
||||
2
ui/views/footer.ejs
Normal file
2
ui/views/footer.ejs
Normal file
@@ -0,0 +1,2 @@
|
||||
</body>
|
||||
</html>
|
||||
12
ui/views/header.ejs
Normal file
12
ui/views/header.ejs
Normal file
@@ -0,0 +1,12 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title><%- title %></title>
|
||||
<link rel="stylesheet" href="/css/style.css">
|
||||
<% if (ENV_DEVELOPMENT) { %>
|
||||
<script src="http://localhost:35729/livereload.js"></script>
|
||||
<% } %>
|
||||
</head>
|
||||
<body>
|
||||
47
ui/views/index.ejs
Normal file
47
ui/views/index.ejs
Normal file
@@ -0,0 +1,47 @@
|
||||
<% include header %>
|
||||
|
||||
<h1></h1>
|
||||
<p>bitminer</p>
|
||||
<div id="chart" style="height:500px"></div>
|
||||
<link rel="stylesheet" type="text/css" href="/components/rickshaw/rickshaw.css" />
|
||||
<script src="/components/moment/min/moment.min.js"></script>
|
||||
<script src="/components/d3/d3.min.js"></script>
|
||||
<script src="/components/rickshaw/rickshaw.min.js"></script>
|
||||
<script src="/components/underscore/underscore-min.js"></script>
|
||||
<script src="/components/jquery/jquery.min.js"></script>
|
||||
<script>
|
||||
var data = []
|
||||
var graph = new Rickshaw.Graph({
|
||||
element: document.querySelector("#chart"),
|
||||
renderer: 'line',
|
||||
series: [{
|
||||
data: data,
|
||||
//data: [ { x: parseInt(moment.utc('2017-01-01 10:01').format('X')), y: 20 }, { x: parseInt(moment.utc('2017-01-01 11:00').format('X')), y: 60 }],
|
||||
color: 'steelblue'
|
||||
}]
|
||||
});
|
||||
var yAxis = new Rickshaw.Graph.Axis.Y({
|
||||
graph: graph,
|
||||
tickFormat: Rickshaw.Fixtures.Number.formatKMBT,
|
||||
ticksTreatment: "glow"
|
||||
});
|
||||
var addData = function(){
|
||||
|
||||
data.length = 0
|
||||
calculatedData = _.chain(sampleData)
|
||||
.map(function(data){
|
||||
return {x: parseInt(moment.utc(data.date).format('x')), y: data.value}
|
||||
})
|
||||
.sortBy(function(mappedObj){return mappedObj.x;}).value();
|
||||
_.each(calculatedData, function(item){data.push(item)});
|
||||
graph.update();
|
||||
|
||||
}
|
||||
new Rickshaw.Graph.Axis.Time({
|
||||
graph: graph
|
||||
});
|
||||
|
||||
graph.render();
|
||||
|
||||
</script>
|
||||
<% include footer %>
|
||||
Reference in New Issue
Block a user