Skip to content
Snippets Groups Projects
Commit e5fbdc0d authored by wactbprot's avatar wactbprot
Browse files

chart works

parent ca1c64eb
No related branches found
No related tags found
No related merge requests found
......@@ -5,7 +5,7 @@
require("../clients")(function(){
require("../extensions/api/api")(function() {
require("../extensions/frame/frame.js")(function() {
require("../extensions/plt/plt.js")(function() {
require("../extensions/chart/chart.js")(function() {
console.log(
" \n **** **** **** " +
" \n * **** * * **** * *** **** **** * *** * " +
......
......@@ -10,7 +10,7 @@ module.exports = function(cb){
})
, ok = {ok:true}
, err;
// call to start sc-broker clients
require("./lib/load").ini(function(err){
require("./lib/run").ini(function(err){
......@@ -18,14 +18,17 @@ module.exports = function(cb){
require("./lib/observe").ini(function(err){
require("./lib/mphandle").ini(function(err){
require("./lib/cdhandle").ini(function(err){
log.info(ok
, "----> ssmp clients start with access to port "+ conf.mem.port
);
if(_.isFunction(cb)){
require("./lib/exchangeUpdateTime").ini(function(err){
log.info(ok
, "execute clients callback");
cb();
}
, "----> ssmp clients start with access to port "+
conf.mem.port
);
if(_.isFunction(cb)){
log.info(ok
, "execute clients callback");
cb();
}
});
});
});
});
......
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>plt</title>
</head>
<body>
<link rel="stylesheet" href="/css/bootstrap.min.css">
<nav class="navbar navbar-default">
<ul class="nav nav-pills">
<li id="chart_tab_1" class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Chart 1</a>
<div id = "available_1" class="dropdown-menu">
</div>
</li>
<li id="chart_tab_2" class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Chart 2</a>
<div id = "available_2" class="dropdown-menu">
</div>
</li>
<li id="chart_tab_3" class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Chart 3</a>
<div id = "available_3" class="dropdown-menu">
</div>
</li>
</ul>
</nav>
<div class="container" style='width:900px;height:900px'>
<canvas id="chart_1" width="900" height="300" ></canvas>
<canvas id="chart_2" width="900" height="300" ></canvas>
<canvas id="chart_3" width="900" height="300" ></canvas>
</div>
<script src="/js/jquery3.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/Chart.min.js"></script>
<script src="/js/chart.js"></script>
</body>
</html>
......@@ -3,10 +3,11 @@ module.exports = function(cb){
, bunyan = require("bunyan")
, restify = require("restify")
, corsM = require('restify-cors-middleware')
, conf = require("../../lib/conf")
, broker = require("sc-broker")
, server = restify.createServer({name: conf.plt.appname})
, log = bunyan.createLogger({name: conf.plt.appname})
, conf = require("../../lib/conf")
, meth = require("./lib/methods")
, server = restify.createServer({name: conf.chart.appname})
, log = bunyan.createLogger({name: conf.chart.appname})
, mem = broker.createClient({port: conf.mem.port})
, ok = {ok:true}
, err;
......@@ -32,18 +33,42 @@ server.use(cors.actual)
server.get( "/css/:file", restify.plugins.serveStatic({
'directory': __dirname
}));
server.get( "/html/:file", restify.plugins.serveStatic({
server.get( "/:file", restify.plugins.serveStatic({
'directory': __dirname
}));
server.get( "/js/:file", restify.plugins.serveStatic({
'directory': __dirname
}));
server.get("/res/info", function(req, res, next){
meth.available(req, function(err, ro){
if(!err){
res.send(ro);
}else{
log.trace(err,
"get returns with error");
res.send(err.message);
}
});
next();
});
server.get("/:mpid/exchange/:obs/Value", function(req, res, next){
meth.data(req, function(err, ro){
if(!err){
res.send(ro);
}else{
log.trace(err,
"get returns with error");
res.send(err.message);
}
});
next();
});
server.listen(conf.plt.port, function() {
server.listen(conf.chart.port, function() {
log.info(ok
, " ----> plot server up and running http://" +conf.plt.server + ":" + conf.plt.port
, " ----> chart server up and running http://" +conf.chart.server + ":" + conf.chart.port
);
if(_.isFunction(cb)){
cb();
......
File moved
$( document ).ready(function() {
var $chart1 = $("#chart_1")
, $chart2 = $("#chart_2")
, $chart3 = $("#chart_3")
, $available1 = $("#available_1")
, $available2 = $("#available_2")
, $available3 = $("#available_3");
var opt = {
scales: {
xAxes: [{
type: 'linear',
position: 'bottom'
}]}
}
, chrtObj = {
type: 'scatter',
data: {datasets: [{
label: 'Scatter Dataset',
data: []
}]
},
options: opt
}
latest1 = 0;
latest2 = 0;
latest3 = 0;
$.ajax({
url: "/res/info"
}).done(function(res) {
for(i in res){
var a = ' <a class="dropdown-item" data-path="'+res[i].join("/")+'" data-toggle="tab" href="#">'+res[i][2]+'</a>'
$available1.append(a)
$available2.append(a)
$available3.append(a)
}
$('#chart_tab_1 a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var path = $(this).data("path");
chart1.data.datasets[0].label = path;
chart1.data.datasets[0].data =[];
setInterval(function(){
$.ajax({url:path
}).done(function(res) {
if(res.x > latest1){
latest1 = res.x;
if(chart1.data.datasets[0].data.length > 100){
chart1.data.datasets[0].data.shift();
}
chart1.data.datasets[0].data.push(res);
chart1.update()
}
})
}, 1000);
})
$('#chart_tab_2 a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var path = $(this).data("path");
chart2.data.datasets[0].label = path;
chart2.data.datasets[0].data =[];
setInterval(function(){
$.ajax({url:path
}).done(function(res) {
if(res.x > latest2){
latest2 = res.x;
if(chart2.data.datasets[0].data.length > 100){
chart2.data.datasets[0].data.shift();
}
chart2.data.datasets[0].data.push(res);
chart2.update()
}
})
}, 1000);
})
$('#chart_tab_3 a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var path = $(this).data("path");
chart3.data.datasets[0].label = path;
chart3.data.datasets[0].data =[];
setInterval(function(){
$.ajax({url:path
}).done(function(res) {
if(res.x > latest3){
latest3 = res.x;
if(chart3.data.datasets[0].data.length > 100){
chart3.data.datasets[0].data.shift();
}
chart3.data.datasets[0].data.push(res);
chart3.update()
}
})
}, 1000);
})
});
var chart1 = new Chart($chart1, JSON.parse(JSON.stringify(chrtObj)))
var chart2 = new Chart($chart2, JSON.parse(JSON.stringify(chrtObj)))
var chart3 = new Chart($chart3, JSON.parse(JSON.stringify(chrtObj)))
});
This diff is collapsed.
var _ = require("underscore")
, bunyan = require("bunyan")
, clone = require("clone")
, broker = require("sc-broker")
, conf = require("../../../lib/conf")
, log = bunyan.createLogger({name: "chart.methods"})
, ctrlstr = conf.ctrlStr
, ok = {ok:true}
, err;
var mem = broker.createClient({port: conf.mem.port});
/**
* Listet alle geladenen mps
* @param {Object} req Request-Objekt
* @param {Function} cb call back
*/
var available = function(req, cb){
var ret = [];
mem.getAll(function(err, mps){
if(!err){
for(mp in mps){
if(mps[mp]["exchange"]){
var exch = mps[mp]["exchange"]
for(entr in exch) {
if(exch[entr]["Value"]) {
ret.push([mp, "exchange", entr, "Value"])
}
}
}
}
cb(null,ret);
}else{
err = new Error("on attempt to mem.getAll()");
log.error(err
, " error on attempt to get all");
if(_.isFunction(cb)){
cb(err);
}
}
});
}
exports.available = available;
var data = function(req, cb){
var mpid = req.params.mpid
, obs = req.params.obs;
mem.get([mpid, "exchange", "update_time", "Value"], function(err, up){
mem.get([mpid, "exchange", obs, "Value"], function(err, dat){
cb(null,{x:up, y:dat});
});
});
}
exports.data = data;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>plt</title>
</head>
<body>
<link rel="stylesheet" href="/css/bootstrap.min.css">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand">plt</a>
</div>
</div>
</nav>
<div class="container" style='width:600px;height:400px'>
<canvas id="plt" width="600" height="400" ></canvas>
</div>
<script src="/js/jquery-3.2.1.slim.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/Chart.min.js"></script>
<script src="/js/plt.js"></script>
</body>
</html>
This diff is collapsed.
$( document ).ready(function() {
var $plt = $("#plt");
var opt = {
scales: {
xAxes: [{
type: 'linear',
position: 'bottom'
}]
}
}
data = [
{x: 1, y: 0}
,{x: 2, y: 1}
,{x: 3, y: 2}
,{x: 4, y: 0}
,{x: 5, y: 4}
,{x: 6, y: 3}
,{x: 7, y: 5}
,{x: 8, y: 6}
,{x: 9, y: 4}
,{x: 10, y: 0}
]
, chrtObj = {
type: 'scatter',
data: {
datasets: [{
label: 'Scatter Dataset',
data: data
}]
},
options: opt
}
var chart = new Chart(plt, chrtObj)
x=1
y=1
setInterval(function(){
x=x+1
y=y+1
chart.data.datasets[0].data.push({x:x, y:y})
chart.update()
console.log(x);
},500)
});
......@@ -22,12 +22,12 @@ var all = {
apppath: "extensions/frame/",
appname: "frame"
},
plt :{
chart :{
port: 8003,
server:"localhost",
intervall:500,
apppath: "extensions/plt/",
appname: "plt"
apppath: "extensions/chart/",
appname: "chart"
},
relay : {
server: "localhost",
......
/**
* exchangeUpdateTime updates a time stamp at mpid.exchanche.update_time
*
* @module exchangeUpdateTime
*/
var _ = require("underscore")
, bunyan = require("bunyan")
, clone = require("clone")
, broker = require("sc-broker")
, utils = require("./utils")
, conf = require("./conf")
, ok = {ok:true}, err
, cstr = conf.ctrlStr
, timerId = {}
, log = bunyan.createLogger({name: conf.app.name + ".exchangeUpdateTime",
streams: conf.log.streams
})
, mem = broker.createClient({port: conf.mem.port});
/**
* subscribs to all needed channels
* @method ini
* @param {Function} cb
*/
var ini = function (cb){
mem.subscribe("exchange", function (err){
if(!err){
log.trace(ok
, "exchangeUpdateTime.js subscribed to exchange channel");
if( _.isFunction (cb)){
cb(null, ok);
}
}
});
}
exports.ini = ini;
mem.on('message',function (ch, path){
var mpid = path[0];
mem.get([mpid, "exchange","start_time"], function(err, res){
var ct =((new Date()).getTime() - res.Value)/60000
, val = {Value: Math.round(ct*1000)/1000,
Unit:"min"};
mem.set([mpid, "exchange","update_time"], val, function (err){
if(!err){
log.trace(ok
, "exchange access, time updated");
}
});
});
});
......@@ -2,7 +2,7 @@
"author": "wactbprot",
"name": "ssmp",
"description": "server side measurment program",
"version": "1.6.0",
"version": "1.7.0",
"repository": {
"type": "git",
"url": "https://github.com/wactbprot/ssmp"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment