Commit 8125968a authored by Leo Iannacone's avatar Leo Iannacone

Merge remote-tracking branch 'github/master' into portable

parents 8225c468 300f0309
......@@ -2,6 +2,7 @@ fs = require("fs")
path = require("path")
config = require("./config")
utils = require("./utils")
stats = require("./stats")
e = config.events.client
get_files_list_from_package = (data, callback) ->
......@@ -138,6 +139,10 @@ class Client
read_package_status data, (content) =>
@socket.emit e.package_info, content
@socket.on e.history, () =>
stats.get_all_packages (packages) =>
@socket.emit e.history, packages
# on client disconnection close all watchers
@socket.on "disconnect", =>
socket_watchers = @socket.watchers
......
......@@ -117,6 +117,7 @@ config.events.client.package_info = "c.package_info"
config.events.client.file = "c.file"
config.events.client.file_newcontent = "c.file_newcontent"
config.events.client.status = "c.status"
config.events.client.history = "c.history"
###
The status according with JSONLogger.py module
......
fs = require("fs")
glob = require("glob")
config = require("./config")
utils = require("./utils")
Tail = utils.Tail
e = config.events.broadcast
_get_distributions = (callback) ->
glob "#{config.debomatic.path}/*/pool", {}, (err, directories) ->
distributions = []
for dir in directories
name = dir.split('/')[-2..][0]
distributions.push name
callback(distributions)
class Debomatic
......@@ -20,13 +11,13 @@ class Debomatic
@status = {}
@distributions = []
@running = fs.existsSync (config.debomatic.pidfile)
_get_distributions (distributions) => @distributions = distributions
utils.get_distributions (distributions) => @distributions = distributions
# watcher on new distributions
watch_distributions: ->
fs.watch config.debomatic.path, (event, fileName) =>
check = =>
_get_distributions (new_distributions) =>
utils.get_distributions (new_distributions) =>
if not utils.arrayEqual(@distributions, new_distributions)
@distributions = new_distributions
@sockets.emit(e.distributions, @distributions)
......
fs = require('fs')
glob = require('glob')
config = require('./config')
utils = require('./utils')
get_all_packages = (cb) ->
compare = (a,b) ->
if a.start < b.start
return -1
if a.start > b.start
return 1
return 0
glob "#{config.debomatic.path}/*/pool/*/*.json", {}, (err, files) ->
if err?
utils.errors_handler "history:get_all_packages", err
return
packages = []
for f in files
fs.readFile f, (readerr, data) ->
if readerr?
utils.errors_handler "history:get_all_packages:readFile", readerr
json = ''
else
json = JSON.parse(data)
delete json.files
packages.push(json)
if packages.length == files.length
packages.sort(compare)
cb(packages)
module.exports.get_all_packages = get_all_packages
path = require("path")
fs = require("fs")
config = require("./config")
glob = require("glob")
Tail = require("tail").Tail
_check_no_backward = (backward_path) ->
......@@ -27,6 +28,14 @@ check_data_file = (data) ->
_check_no_backward(data.file.name)
get_distributions = (callback) ->
glob "#{config.debomatic.path}/*/pool", {}, (err, directories) ->
if err
errors_handler "get_distributions", err
return
distributions = (dir.split(path.sep)[-2...-1] for dir in directories)
callback(distributions)
get_distribution_pool_path = (data) ->
path.join(config.debomatic.path, data.distribution.name, "pool")
......@@ -132,6 +141,7 @@ Tail::close = ->
module.exports.check_data_distribution = check_data_distribution
module.exports.check_data_package = check_data_package
module.exports.check_data_file = check_data_file
module.exports.get_distributions = get_distributions
module.exports.get_distribution_pool_path = get_distribution_pool_path
module.exports.get_package_path = get_package_path
module.exports.get_file_path = get_file_path
......
......@@ -4,7 +4,7 @@
/* global Chartist: false */
/* global debug: false */
/* global debug_socket: false */
/* global dom_history: false */
/* global socket: false */
function Page_History() {
......@@ -234,21 +234,31 @@ function Page_History() {
socket.on(config.events.broadcast.status_update, function (socket_data) {
// TODO - implements _update_table
});
};
socket.on(config.events.client.history, function (socket_data) {
debug_socket('received', config.events.client.history, socket_data);
distributions_counter = {};
days_counter = {};
all_distributions = [];
all_days = [];
$('#history .tbody').html('');
// init table and some objects
for (var i = 0; i < socket_data.length; i++) {
var p = socket_data[i];
_add_row(p);
// count stats
_count_distributions(p);
_count_days(p);
}
all_distributions.sort();
_sort_table();
_create_graph_distributions();
_create_graph_days();
});
// init table and some objects
for (var i = 0; i < dom_history.length; i++) {
var p = dom_history[i];
_add_row(p);
// count stats
_count_distributions(p);
_count_days(p);
}
all_distributions.sort();
_sort_table();
_create_graph_distributions();
_create_graph_days();
debug_socket('emit', config.events.client.history, '');
socket.emit(config.events.client.history);
};
$('#download').on('click', function () {
_exportTableToCSV.apply(this, [$('#history'), 'history.csv']);
......
......@@ -19,18 +19,5 @@ exports.commands = (req, res) ->
return
exports.history = (req, res) ->
glob "#{config.debomatic.path}/*/pool/*/*.json", {}, (err, files) ->
get_info = (json_path) ->
json = JSON.parse(fs.readFileSync(json_path, 'utf8'))
delete json.files
return json
compare = (a,b) ->
if a.start < b.start
return -1
if a.start > b.start
return 1
return 0
config.history = (get_info(f) for f in files)
config.history.sort(compare)
res.render "history", config
res.render "history", config
return
......@@ -5,7 +5,6 @@
<p class="lead text-muted">
The log of packages
</p>
<script> var dom_history = <%- JSON.stringify(history) %> </script>
<div id="charts">
<div id="days-chart" class="ct-chart"></div>
<div id="distributions-chart" class="ct-chart"></div>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment