Commit 16ecf71d authored by Alain Takoudjou's avatar Alain Takoudjou

monitoring: minors ui changes

parent 22beacb2
...@@ -110,6 +110,13 @@ html.ui-mobile .ui-grid-container.ui-responsive > ul > li, html.ui-mobile .ui-gr ...@@ -110,6 +110,13 @@ html.ui-mobile .ui-grid-container.ui-responsive > ul > li, html.ui-mobile .ui-gr
overflow: hidden; overflow: hidden;
} }
.header-notice {
margin-top: 5px;
margin-left: 20px;
color: #5C676D;
font-size: .95em;
}
.ui-content .ui-table { .ui-content .ui-table {
border: 1px solid rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.05);
} }
...@@ -178,12 +185,15 @@ html .ui-panel-overview table { ...@@ -178,12 +185,15 @@ html .ui-panel-overview table {
border: 1px solid rgba(0,0,0,.05); border: 1px solid rgba(0,0,0,.05);
border-bottom: none; border-bottom: none;
} }
li
html .content-details table tr th, html .content-details table tr td { html .content-details table tr th, html .content-details table tr td {
padding: 7px; padding: 7px;
} }
html .content-details .instances-parameters table tr td { /*html .content-details .instances-parameters table tr td {
padding: 0 0 0 10px; padding: 0 0 0 10px;
}*/
html .content-details .instances-parameters table tr td:first-child {
width: 25%;
} }
html .content-details .instances-parameters table tr td:last-child { html .content-details .instances-parameters table tr td:last-child {
padding: 0; padding: 0;
...@@ -196,7 +206,12 @@ html .promise-list table tr { ...@@ -196,7 +206,12 @@ html .promise-list table tr {
padding: 10px; padding: 10px;
} }
table tr.line-edit { .ui-table-custom tr td, .ui-table-custom tr td {
padding: .2em .3em;
vertical-align: middle;
}
table tr .prop-edit {
cursor: pointer; cursor: pointer;
} }
......
...@@ -239,7 +239,7 @@ ...@@ -239,7 +239,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.30698.54042.4164</string> </value> <value> <string>952.2937.49164.58675</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -257,7 +257,7 @@ ...@@ -257,7 +257,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464340503.33</float> <float>1466607152.09</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -20,9 +20,12 @@ ...@@ -20,9 +20,12 @@
<td> <td>
<a class="ui-link" href="{{href}}">{{title}}</a> <a class="ui-link" href="{{href}}">{{title}}</a>
</td> </td>
<td> <td class="m-hidden">
<a class="ui-link" href="{{href}}">{{date}}</a> <a class="ui-link" href="{{href}}">{{date}}</a>
</td> </td>
<td class="m-hidden">
<a class="ui-link" href="{{href}}">{{amount}}</a>
</td>
</tr> </tr>
{{/each}} {{/each}}
</script> </script>
...@@ -35,10 +38,7 @@ ...@@ -35,10 +38,7 @@
<div data-gadget-url="gadget_monitoring_jio.html" data-gadget-scope="jio_gadget" data-gadget-sandbox="public"></div> <div data-gadget-url="gadget_monitoring_jio.html" data-gadget-scope="jio_gadget" data-gadget-sandbox="public"></div>
<div data-gadget-url="gadget_monitoring_login_widget.html" data-gadget-scope="login_gadget" data-gadget-sandbox="public"></div> <div data-gadget-url="gadget_monitoring_login_widget.html" data-gadget-scope="login_gadget" data-gadget-sandbox="public"></div>
<!--<div data-gadget-url="gadget_monitoring_document_edit.html" data-gadget-scope="config_gadget" data-gadget-sandbox="public"></div>--> <!--<div data-gadget-url="gadget_monitoring_document_edit.html" data-gadget-scope="config_gadget" data-gadget-sandbox="public"></div>-->
<div class="ui-grid-a ui-responsive"> <div class="ui-panel-overview hosting-list" style="min-height: 450px;">
<div class="ui-block-a">
<div class="ui-panel-overview" style="min-height: 450px;">
<div class="overview-header"> <div class="overview-header">
<div class='content-title ui-instance-title'> <div class='content-title ui-instance-title'>
<div class="overview-title"> <div class="overview-title">
...@@ -55,8 +55,9 @@ ...@@ -55,8 +55,9 @@
<thead class="ui-bar-inherit"> <thead class="ui-bar-inherit">
<tr> <tr>
<th class="padding-10">Status</th> <th class="padding-10">Status</th>
<th>Name</th> <th>Hosting Subscription Name</th>
<th>Status Date</th> <th class="m-hidden">Status Date</th>
<th class="m-hidden">Software Instance Amount</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
...@@ -69,10 +70,5 @@ ...@@ -69,10 +70,5 @@
</div> </div>
</div> </div>
</div>
<div class="ui-block-b" style="position: relative">
</div>
</div>
</body> </body>
</html> </html>
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.29612.46793.45533</string> </value> <value> <string>952.2597.36910.56320</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -261,7 +261,7 @@ ...@@ -261,7 +261,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464277179.89</float> <float>1466586586.9</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -131,6 +131,9 @@ ...@@ -131,6 +131,9 @@
} }
for (i = 0; i < document_list.length; i += 1) { for (i = 0; i < document_list.length; i += 1) {
hosting_dict = {}; hosting_dict = {};
hosting_dict.amount = 0;
hosting_dict.error = 0;
hosting_dict.success = 0;
status = 'OK'; status = 'OK';
hosting_dict.instance_list = []; hosting_dict.instance_list = [];
date = ''; date = '';
...@@ -138,12 +141,17 @@ ...@@ -138,12 +141,17 @@
if (document_list[i][j] === undefined) { if (document_list[i][j] === undefined) {
continue; continue;
} }
hosting_dict.amount += 1;
hosting_dict.instance_list.push({ hosting_dict.instance_list.push({
title: document_list[i][j].title, title: document_list[i][j].title,
status: document_list[i][j].status, status: document_list[i][j].status,
url: document_list[i][j]._links.monitor.href url: document_list[i][j]._links.monitor.href
}); });
if (document_list[i][j].status == "OK") {
hosting_dict.success += 1;
}
if (document_list[i][j].status === 'ERROR') { if (document_list[i][j].status === 'ERROR') {
hosting_dict.error += 1;
if (status !== 'ERROR') { if (status !== 'ERROR') {
status = 'ERROR'; status = 'ERROR';
date = document_list[i][j].date || ''; date = document_list[i][j].date || '';
...@@ -170,7 +178,7 @@ ...@@ -170,7 +178,7 @@
content = hosting_widget_template({ content = hosting_widget_template({
hosting_list: gadget.props.hosting_list hosting_list: gadget.props.hosting_list
}); });
gadget.props.element.querySelector('.ui-block-a table tbody') gadget.props.element.querySelector('.hosting-list table tbody')
.innerHTML = content; .innerHTML = content;
return gadget.props.render_deferred.resolve(); return gadget.props.render_deferred.resolve();
......
...@@ -239,7 +239,7 @@ ...@@ -239,7 +239,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.29657.60907.41591</string> </value> <value> <string>952.2580.7780.65228</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -257,7 +257,7 @@ ...@@ -257,7 +257,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464281193.24</float> <float>1466585583.31</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -27,17 +27,12 @@ ...@@ -27,17 +27,12 @@
</a> </a>
<div class="ui-collapse-content ui-content-hidden"> <div class="ui-collapse-content ui-content-hidden">
<fieldset> <fieldset>
<div class="ui-field-contain"> <div>
<div style="float: left; margin-right: 10px;">
<fieldset data-role="controlgroup" data-type="horizontal"> <fieldset data-role="controlgroup" data-type="horizontal">
{{#if ../status_list_url}} {{#if ../status_list_url}}
<a class="ui-btn ui-corner-all ui-btn-inline ui-mini" href="{{../status_list_url}}" title="Instance Promises List"><i class="fa fa-check-square"></i> Promises</a> <a class="ui-btn ui-corner-all ui-btn-inline ui-mini" href="{{../status_list_url}}" title="Instance Promises List"><i class="fa fa-check-square"></i> Promises</a>
{{/if}} {{/if}}
{{#if resource_url }}
<a href="{{resource_url}}" class="ui-btn ui-corner-all ui-btn-inline ui-mini" title="Instance Resource comsumption"><i class="fa fa-pie-chart"></i> Resources</a>
{{/if}}
{{#if process_url }}
<a href="{{process_url}}" class="ui-btn ui-corner-all ui-btn-inline ui-mini" title="Processes usage"><i class="fa fa-list-alt"></i> Processes</a>
{{/if}}
{{#if rss_url}} {{#if rss_url}}
<a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target='_blank' href="{{rss_url}}" title="RSS"><i class="fa fa-rss-square"></i> RSS</a> <a class="ui-btn ui-corner-all ui-btn-inline ui-mini" target='_blank' href="{{rss_url}}" title="RSS"><i class="fa fa-rss-square"></i> RSS</a>
{{/if}} {{/if}}
...@@ -51,6 +46,18 @@ ...@@ -51,6 +46,18 @@
--> -->
</fieldset> </fieldset>
</div> </div>
<div style="float: left">
<fieldset data-role="controlgroup" data-type="horizontal">
{{#if resource_url }}
<a href="{{resource_url}}" class="ui-btn ui-corner-all ui-btn-inline ui-mini" title="Instance Resource comsumption"><i class="fa fa-pie-chart"></i> Resources</a>
{{/if}}
{{#if process_url }}
<a href="{{process_url}}" class="ui-btn ui-corner-all ui-btn-inline ui-mini" title="Processes usage"><i class="fa fa-list-alt"></i> Processes</a>
{{/if}}
</fieldset>
</div>
<div class="clear"></div>
</div>
<table data-role="table" data-mode="columntoggle" class="ui-responsive table-stroke"> <table data-role="table" data-mode="columntoggle" class="ui-responsive table-stroke">
<tr> <tr>
<th><i class="fa fa-tachometer"></i> <strong>Status</strong></th> <th><i class="fa fa-tachometer"></i> <strong>Status</strong></th>
...@@ -91,7 +98,7 @@ ...@@ -91,7 +98,7 @@
<h3 class="margin-0 padding-tb-10">{{title}} <i class="fa fa-angle-up"></i></h3> <h3 class="margin-0 padding-tb-10">{{title}} <i class="fa fa-angle-up"></i></h3>
<table data-role="table" data-mode="columntoggle" class="table-stroke" title="{{title}}"> <table data-role="table" data-mode="columntoggle" class="table-stroke" title="{{title}}">
{{#each parameters}} {{#each parameters}}
<tr {{#if key}} class="line-edit" rel="{{../index}}"{{/if}}> <tr>
<td><strong>{{title}}</strong></td> <td><strong>{{title}}</strong></td>
{{#if key}} {{#if key}}
<td class="v-{{key}}">{{value}}</td> <td class="v-{{key}}">{{value}}</td>
......
...@@ -246,7 +246,7 @@ ...@@ -246,7 +246,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.30694.32099.54323</string> </value> <value> <string>952.2622.43851.41915</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -264,7 +264,7 @@ ...@@ -264,7 +264,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464340229.53</float> <float>1466588186.09</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -90,6 +90,7 @@ ...@@ -90,6 +90,7 @@
gadget.props = {}; gadget.props = {};
gadget.props.hosting_list = []; gadget.props.hosting_list = [];
gadget.props.opml_key_list = []; gadget.props.opml_key_list = [];
gadget.props.error_list = [];
gadget.props.title = 'Hosting Subscriptions View'; gadget.props.title = 'Hosting Subscriptions View';
return gadget.getDeclaredGadget("login_gadget") return gadget.getDeclaredGadget("login_gadget")
.push(function (login_gadget) { .push(function (login_gadget) {
...@@ -319,7 +320,7 @@ ...@@ -319,7 +320,7 @@
.push(function () { .push(function () {
var promise_list = [], var promise_list = [],
element_list = gadget.props.element.querySelectorAll('.hosting-block .ui-listview-container li > a'), element_list = gadget.props.element.querySelectorAll('.hosting-block .ui-listview-container li > a'),
edit_list = gadget.props.element.querySelectorAll('.hosting-block .line-edit'), edit_list = gadget.props.element.querySelectorAll('.hosting-block .prop-edit'),
i; i;
for (i = 0; i < element_list.length; i += 1) { for (i = 0; i < element_list.length; i += 1) {
promise_list.push(loopEventListener( promise_list.push(loopEventListener(
......
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.30703.26577.30839</string> </value> <value> <string>951.57042.58652.32665</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -260,7 +260,7 @@ ...@@ -260,7 +260,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464341533.1</float> <float>1466587106.1</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -166,6 +166,39 @@ ...@@ -166,6 +166,39 @@
}); });
} }
function clearDeletedMonitorUrl(opml_title) {
var jio_options = {
type: "query",
sub_storage: {
type: "uuid",
sub_storage: {
type: "indexeddb",
database: "monitoringdb"
}
}
},
jio_storage = jIO.createJIO(jio_options);
return jio_storage.allDocs({include_docs: true})
.push(function (document_list) {
var i,
document_id_list = [];
for (i = 0; i < document_list.data.total_rows; i += 1) {
if (document_list.data.rows[i].doc.opml_title === opml_title) {
document_id_list.push(document_list.data.rows[i].id);
}
}
return document_id_list;
})
.push(function (id_list) {
var promise_list = [],
i;
for (i = 0; i < id_list.length; i += 1) {
promise_list.push(jio_storage.remove(id_list[i]));
}
return RSVP.all(promise_list);
});
}
function concatArrayOfArray(arrayList) { function concatArrayOfArray(arrayList) {
var all_list = [], var all_list = [],
i; i;
...@@ -274,6 +307,9 @@ ...@@ -274,6 +307,9 @@
.declareMethod('getMonitorUrlList', function (query, opml_title) { .declareMethod('getMonitorUrlList', function (query, opml_title) {
return getMonitorUrlList(query, opml_title); return getMonitorUrlList(query, opml_title);
}) })
.declareMethod('clearDeletedMonitorUrl', function (opml_title) {
return clearDeletedMonitorUrl(opml_title);
})
.declareMethod('allDocs', function () { .declareMethod('allDocs', function () {
var storage = this.state_parameter_dict.jio_storage; var storage = this.state_parameter_dict.jio_storage;
return storage.allDocs.apply(storage, arguments) return storage.allDocs.apply(storage, arguments)
......
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
</script> </script>
<script src="gadget_monitoring_process_view.js"></script> <script src="gadget_monitoring_process_view.js"></script>
<script src="notify.min.js"></script>
</head> </head>
...@@ -60,6 +61,7 @@ ...@@ -60,6 +61,7 @@
<div data-gadget-url="gadget_monitoring_login_widget.html" data-gadget-scope="login_gadget" data-gadget-sandbox="public"></div> <div data-gadget-url="gadget_monitoring_login_widget.html" data-gadget-scope="login_gadget" data-gadget-sandbox="public"></div>
<div class="padding-lr-20 infobox-container"> <div class="padding-lr-20 infobox-container">
</div> </div>
<h2 class="header-notice"><i class="fa fa-info" aria-hidden="true"></i> Processes information will be reloaded automatically every minutes.</h2>
<div class="ui-panel-overview ui-grid-container process-all"> <div class="ui-panel-overview ui-grid-container process-all">
</div> </div>
......
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>948.60561.8606.7133</string> </value> <value> <string>952.2938.21043.21333</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -261,7 +261,7 @@ ...@@ -261,7 +261,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1455182077.48</float> <float>1466607162.96</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -61,13 +61,25 @@ ...@@ -61,13 +61,25 @@
.push(function () { .push(function () {
return gadget.property_dict.jio_gadget.get(gadget.property_dict.process_state); return gadget.property_dict.jio_gadget.get(gadget.property_dict.process_state);
}) })
.push(undefined, function(error) {
console.log(error);
$.notify(
"Error: Failed to get running process data!",
{
position:"top right",
autoHideDelay: 5000,
className: "error"
}
);
return undefined;
})
.push(function (process_list) { .push(function (process_list) {
var row_list = [], var row_list = [],
column_list = [], column_list = [],
process_content, process_content,
i; i;
column_list = [ column_list = [
{title: "name"}, {title: "Process"},
{title: "pid"}, {title: "pid"},
{title: "user"}, {title: "user"},
{title: "create date"}, {title: "create date"},
...@@ -134,6 +146,25 @@ ...@@ -134,6 +146,25 @@
.push(function () { .push(function () {
return gadget.property_dict.jio_gadget.get(gadget.property_dict.monitor_process_state); return gadget.property_dict.jio_gadget.get(gadget.property_dict.monitor_process_state);
}) })
.push(undefined, function(error) {
console.log(error);
$.notify(
"Error: Failed to get resource comsumption data!",
{
position:"top right",
autoHideDelay: 5000,
className: "error"
}
);
return {
cpu_percent: 0,
cpu_num_threads: 0,
cpu_time: 0,
memory_rss: 0,
memory_percent: 0,
disk_used: 0
};
})
.push(function (monitor_state) { .push(function (monitor_state) {
var monitor_resource_list = [], var monitor_resource_list = [],
resource_state_content; resource_state_content;
...@@ -192,7 +223,13 @@ ...@@ -192,7 +223,13 @@
if (gadget.property_dict.loading && gadget.property_dict.timer) { if (gadget.property_dict.loading && gadget.property_dict.timer) {
clearInterval(gadget.property_dict.timer); clearInterval(gadget.property_dict.timer);
} }
gadget.property_dict.timer = setInterval(function(){ gadget.property_dict.timer = setInterval(function(){
var hash = window.location.toString().split('#')[1];
if (hash.indexOf('page=process_view') < 0) {
clearInterval(gadget.property_dict.timer);
return;
}
return gadget.property_dict.jio_gadget.get(gadget.property_dict.process_state) return gadget.property_dict.jio_gadget.get(gadget.property_dict.process_state)
.push(function (process_list) { .push(function (process_list) {
var row_list = [], var row_list = [],
...@@ -200,7 +237,7 @@ ...@@ -200,7 +237,7 @@
process_content, process_content,
i; i;
column_list = [ column_list = [
{title: "name"}, {title: "Process"},
{title: "pid"}, {title: "pid"},
{title: "user"}, {title: "user"},
{title: "create date"}, {title: "create date"},
......
...@@ -239,7 +239,7 @@ ...@@ -239,7 +239,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>950.63263.62080.55091</string> </value> <value> <string>952.2947.62827.65245</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -257,7 +257,7 @@ ...@@ -257,7 +257,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1463148214.4</float> <float>1466607873.38</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -15,8 +15,7 @@ ...@@ -15,8 +15,7 @@
<script id="promise-widget-template" type="text/x-handlebars-template"> <script id="promise-widget-template" type="text/x-handlebars-template">
{{#with element}} {{#with element}}
<h2><i class="fa fa-cube"></i><strong> Promise Overview</strong></h2> <table data-role="table" data-mode="columntoggle" class="table-stroke">
<table data-role="table" data-mode="columntoggle" class="ui-responsive table-stroke">
<tr> <tr>
<th><i class="fa fa-tachometer"></i> Status</th> <th><i class="fa fa-tachometer"></i> Status</th>
<td><span class="label label-{{status}}">{{status}}</span></td> <td><span class="label label-{{status}}">{{status}}</span></td>
...@@ -29,7 +28,12 @@ ...@@ -29,7 +28,12 @@
<th><i class="fa fa-clock-o"></i> Report Date</th> <th><i class="fa fa-clock-o"></i> Report Date</th>
<td title="The date when the promise result was collected.">{{start-date}}</td> <td title="The date when the promise result was collected.">{{start-date}}</td>
</tr> </tr>
<tr>
<th><i class="fa fa-calendar"></i> Promise name</th>
<td>{{title}}</td>
</tr>
</table> </table>
<h2>Output content</h2>
<div style="border: 1px solid rgba(0,0,0,0.1); margin-top: 10px;"> <div style="border: 1px solid rgba(0,0,0,0.1); margin-top: 10px;">
<div class="ui-body"> <div class="ui-body">
{{#if message}} {{#if message}}
...@@ -55,7 +59,8 @@ ...@@ -55,7 +59,8 @@
{{/if}} {{/if}}
</fieldset> </fieldset>
</div> </div>
<table data-role="table" data-mode="columntoggle" class="ui-responsive table-stroke"> <h2>Software Instance status</h2>
<table data-role="table" data-mode="columntoggle" class="table-stroke">
<tr title="Hosting Subscription"> <tr title="Hosting Subscription">
<th><i class="fa fa-puzzle-piece"></i> H. Subscription</th> <th><i class="fa fa-puzzle-piece"></i> H. Subscription</th>
<td title="Hosting Subscription title">{{root_title}}</td> <td title="Hosting Subscription title">{{root_title}}</td>
...@@ -84,7 +89,7 @@ ...@@ -84,7 +89,7 @@
{{#with instance}} {{#with instance}}
<br/> <br/>
<h2><i class="fa fa-cubes"></i><strong> Software Instance Info</strong></h2> <h2><i class="fa fa-cubes"></i><strong> Software Instance Info</strong></h2>
<table data-role="table" data-mode="columntoggle" class="ui-responsive table-stroke"> <table data-role="table" data-mode="columntoggle" class="table-stroke">
<tr> <tr>
<th>Computer Reference</th> <th>Computer Reference</th>
<td>{{computer}}</td> <td>{{computer}}</td>
...@@ -114,7 +119,6 @@ ...@@ -114,7 +119,6 @@
</script> </script>
<script id="plinks-widget-template" type="text/x-handlebars-template"> <script id="plinks-widget-template" type="text/x-handlebars-template">
<h2><i class="fa fa-link"></i> <strong>Links</strong></h2>
<div class="ui-field-contain"> <div class="ui-field-contain">
<fieldset data-role="controlgroup" data-type="horizontal"> <fieldset data-role="controlgroup" data-type="horizontal">
{{#if public_url}} {{#if public_url}}
...@@ -132,14 +136,14 @@ ...@@ -132,14 +136,14 @@
<script id="phistory-widget-template" type="text/x-handlebars-template"> <script id="phistory-widget-template" type="text/x-handlebars-template">
<h2><i class="fa fa-history"></i> <strong>Promise Status History</strong></h2> <h2><i class="fa fa-history"></i> <strong>Promise Status History</strong></h2>
<div style="max-height: 200px; overflow: auto;"> <div style="max-height: 250px; overflow: auto;">
{{#if history_list}} {{#if history_list}}
<table data-role="table" data-mode="columntoggle" class="ui-responsive table-stroke"> <table data-role="table" data-mode="columntoggle" class="table-stroke">
{{#each history_list}} {{#each history_list}}
<tr title="{{message}}"> <tr title="{{message}}">
<td style="text-align: center;"><i class="fa fa-circle status-text-{{status}}"></i></td> <td style="text-align: center;"><i class="fa fa-circle status-text-{{status}}"></i></td>
<td style="text-align: center;">{{status}}</td> <td style="text-align: center;">{{start-date}}</td>
<td>{{start-date}}</td> <td class="text-overview">{{message}}</td>
</tr> </tr>
{{/each}} {{/each}}
</table> </table>
...@@ -161,14 +165,16 @@ ...@@ -161,14 +165,16 @@
<div class="ui-promise-body"> <div class="ui-promise-body">
<div id="promise-overview" class="custom-grid-wrap"> <div id="promise-overview" class="custom-grid-wrap">
<div class="custom-grid ui-corner-all ui-shadow ui-body-inherit"> <div class="custom-grid ui-corner-all ui-shadow ui-body-inherit">
<div class="ui-grid-b ui-responsive" style="padding: 15px;"> <div class="ui-grid-a ui-responsive" style="padding: 15px;">
<div class="ui-block-a"> <div class="ui-block-a">
<h2><i class="fa fa-check" aria-hidden="true"></i> <strong>Promise result view</strong></h2>
<div class="promise-links"> <div class="promise-links">
</div> </div>
</div> </div>
<div class="ui-block-b"> <div class="ui-block-b">
</div> </div>
<!--
<div class="ui-block-c"> <div class="ui-block-c">
<h2><i class="fa fa-bar-chart"></i> <strong>Instance Promises Status</strong></h2> <h2><i class="fa fa-bar-chart"></i> <strong>Instance Promises Status</strong></h2>
<div style="max-width: 300px; heigth: 150px;"> <div style="max-width: 300px; heigth: 150px;">
...@@ -176,8 +182,9 @@ ...@@ -176,8 +182,9 @@
</div> </div>
<br/><br/> <br/><br/>
<h2><i class="fa fa-line-chart"></i> <strong>Instance Promises Result History</strong></h2> <h2><i class="fa fa-line-chart"></i> <strong>Instance Promises Result History</strong></h2>
<div data-gadget-url="gadget_monitoring_chart.html" data-gadget-scope="chart1"></div> <div data-gadget-url="gadget_monitoring_chart.html" data-gadget-scope="chart1" style="height: 150px; max-width: 700px;"></div>
</div> </div>
-->
</div> </div>
</div> </div>
</div> </div>
......
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.27884.45406.55586</string> </value> <value> <string>952.2877.28811.46933</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -261,7 +261,7 @@ ...@@ -261,7 +261,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464171822.28</float> <float>1466603419.16</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -51,18 +51,18 @@ ...@@ -51,18 +51,18 @@
gadget.property_dict.login_gadget = login_gadget; gadget.property_dict.login_gadget = login_gadget;
}); });
}) })
.ready(function (gadget) { /*.ready(function (gadget) {
return gadget.getDeclaredGadget("chart0") return gadget.getDeclaredGadget("chart0")
.push(function (chart0) { .push(function (chart0) {
gadget.property_dict.chart0 = chart0; gadget.property_dict.chart0 = chart0;
}); });
}) })*/
.ready(function (gadget) { /*.ready(function (gadget) {
return gadget.getDeclaredGadget("chart1") return gadget.getDeclaredGadget("chart1")
.push(function (chart1) { .push(function (chart1) {
gadget.property_dict.chart1 = chart1; gadget.property_dict.chart1 = chart1;
}); });
}) })*/
.declareMethod('render', function (options) { .declareMethod('render', function (options) {
var gadget = this, var gadget = this,
global_state, global_state,
...@@ -237,7 +237,7 @@ ...@@ -237,7 +237,7 @@
history_content = history_widget_template({history_list: history_list}); history_content = history_widget_template({history_list: history_list});
gadget.property_dict.element.querySelector("#promise-overview .ui-block-a") gadget.property_dict.element.querySelector("#promise-overview .ui-block-a")
.innerHTML += history_content; .innerHTML += history_content;
}) })/*
.push(function () { .push(function () {
return gadget.property_dict.login_gadget.loginRedirect( return gadget.property_dict.login_gadget.loginRedirect(
global_state._links.private_url.href, global_state._links.private_url.href,
...@@ -373,7 +373,7 @@ ...@@ -373,7 +373,7 @@
}, },
data: data data: data
}); });
}); })*/;
}); });
}) })
.declareAcquiredMethod("updateHeader", "updateHeader") .declareAcquiredMethod("updateHeader", "updateHeader")
......
...@@ -239,7 +239,7 @@ ...@@ -239,7 +239,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.26579.32109.21009</string> </value> <value> <string>952.2808.64653.48657</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -257,7 +257,7 @@ ...@@ -257,7 +257,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464105558.24</float> <float>1466599317.84</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
</script> </script>
<script src="gadget_monitoring_resource_view.js"></script> <script src="gadget_monitoring_resource_view.js"></script>
<script src="notify.min.js"></script>
</head> </head>
...@@ -39,6 +40,7 @@ ...@@ -39,6 +40,7 @@
</div> </div>
</div> </div>
</div> </div>
<h2 class="header-notice"><i class="fa fa-info" aria-hidden="true"></i> Graph content will be reloaded automatically every minutes.</h2>
<ul class="ui-grid-column ui-grid-column-5 graph_cpu"> <ul class="ui-grid-column ui-grid-column-5 graph_cpu">
<li class="ui-grid-span-4 custom-grid-wrap graph-cell"> <li class="ui-grid-span-4 custom-grid-wrap graph-cell">
<div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_cpu" class="graph graph-h-medium"></div> <div data-gadget-url="gadget_erp5_graph.html" data-gadget-scope="graph_cpu" class="graph graph-h-medium"></div>
......
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>949.6675.61849.23210</string> </value> <value> <string>952.2963.6701.53282</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -261,7 +261,7 @@ ...@@ -261,7 +261,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1458306392.07</float> <float>1466608523.1</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -92,22 +92,37 @@ ...@@ -92,22 +92,37 @@
basic_login: credential.hash basic_login: credential.hash
} }
} }
}; },
resource_key = gadget.property_dict.ressource_dict[key];
gadget.property_dict.jio_gadget.createJio(jio_options, false); gadget.property_dict.jio_gadget.createJio(jio_options, false);
return gadget.property_dict.jio_gadget.get(gadget.property_dict.ressource_dict[key]) return gadget.property_dict.jio_gadget.get(resource_key)
.push(undefined, function(error) {
console.log(error);
$.notify(
"Error: Failed to get resource file '" + resource_key + "'",
{
position:"top right",
autoHideDelay: 5000,
className: "error"
}
);
return {
data: []
};
})
.push(function (jio_element) { .push(function (jio_element) {
if (!jio_element.hasOwnProperty('data')) { if (!jio_element.hasOwnProperty('data')) {
return {}; return {};
} }
// FIX
jio_element.data[0] = jio_element.data[0].replace('%', 'percent');
switch (key) { switch (key) {
case "memory_resource": case "memory_resource":
gadget.property_dict.mem_data = jio_element; gadget.property_dict.mem_data = jio_element;
break; break;
case "cpu_resource": case "cpu_resource":
gadget.property_dict.process_data = jio_element; gadget.property_dict.process_data = jio_element;
if (jio_element.data.length > 0) {
gadget.property_dict.graph_cpu_label_list = jio_element.data[0].split(','); gadget.property_dict.graph_cpu_label_list = jio_element.data[0].split(',');
}
break; break;
case "io_resource": case "io_resource":
gadget.property_dict.io_data = jio_element; gadget.property_dict.io_data = jio_element;
...@@ -159,7 +174,7 @@ ...@@ -159,7 +174,7 @@
.push(function (cred) { .push(function (cred) {
var key; var key;
gadget.property_dict.element.querySelector(".ui-panel-overview .overview-title > span") gadget.property_dict.element.querySelector(".ui-panel-overview .overview-title > span")
.innerHTML += options.title + ' [' + options.root + ']'; .innerHTML += options.root + ' > ' + options.title;
for (key in gadget.property_dict.ressource_dict) { for (key in gadget.property_dict.ressource_dict) {
promise_list.push(loadGraphData (options.jio_for + 'data/', key, cred)); promise_list.push(loadGraphData (options.jio_for + 'data/', key, cred));
...@@ -332,9 +347,14 @@ ...@@ -332,9 +347,14 @@
clearInterval(gadget.property_dict.timer); clearInterval(gadget.property_dict.timer);
} }
gadget.property_dict.timer = setInterval(function(){ gadget.property_dict.timer = setInterval(function(){
var hash = window.location.toString().split('#')[1];
if (hash.indexOf('page=resource_view') < 0) {
clearInterval(gadget.property_dict.timer);
return;
}
updateGraph(); updateGraph();
}, },
300000); 65000);
} }
return new RSVP.Queue() return new RSVP.Queue()
......
...@@ -239,7 +239,7 @@ ...@@ -239,7 +239,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.26681.53491.34628</string> </value> <value> <string>952.2983.39417.57600</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -257,7 +257,7 @@ ...@@ -257,7 +257,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464099522.87</float> <float>1466609798.4</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -176,6 +176,11 @@ ...@@ -176,6 +176,11 @@
<label for="sync-data-1h">1 h</label> <label for="sync-data-1h">1 h</label>
</fieldset> </fieldset>
<p>Last sync date: <span class="last-sync"></span></p> <p>Last sync date: <span class="last-sync"></span></p>
<h2><strong>Manual Sync:</strong></h2>
<p style="margin: 0; font-style: italic;">
<i class="fa fa-info" aria-hidden="true"></i>
If you just registered a new monitor, sync data now!
</p>
<button class="ui-btn ui-corner-all ui-btn-inline sync-all"><i class="fa fa-download"></i> Sync Data Now</button> <button class="ui-btn ui-corner-all ui-btn-inline sync-all"><i class="fa fa-download"></i> Sync Data Now</button>
</div> </div>
<div class="padding-5"> <div class="padding-5">
......
...@@ -239,7 +239,7 @@ ...@@ -239,7 +239,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.27941.44029.13363</string> </value> <value> <string>952.3071.6484.27750</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -257,7 +257,7 @@ ...@@ -257,7 +257,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464175062.51</float> <float>1466615110.36</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -115,7 +115,7 @@ ...@@ -115,7 +115,7 @@
{{#if promise_list}} {{#if promise_list}}
<h2><i class="fa fa-th-list"></i> <strong>Software Instance Promises</strong></h2> <h2><i class="fa fa-th-list"></i> <strong>Software Instance Promises</strong></h2>
<div style="overflow: auto;" class="padding-lr-10"> <div style="overflow: auto;" class="padding-lr-10">
<table data-role="table" data-mode="columntoggle" class="table-stroke"> <table data-role="table" data-mode="columntoggle" class="table-stroke ui-table-custom">
{{#each promise_list}} {{#each promise_list}}
<tr title="Promise reported at {{../date}}"> <tr title="Promise reported at {{../date}}">
<td><a href="{{href}}">{{title}}</a></td> <td><a href="{{href}}">{{title}}</a></td>
......
...@@ -264,7 +264,7 @@ ...@@ -264,7 +264,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464275000.12</float> <float>1466589448.35</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -558,7 +558,8 @@ ...@@ -558,7 +558,8 @@
return gadget.getSetting('monitor_url_description') return gadget.getSetting('monitor_url_description')
.push(function (url_description_dict) { .push(function (url_description_dict) {
var i, var i,
promise_list = []; promise_list = [],
delete_promise_list = [];
if(url_description_dict === undefined) { if(url_description_dict === undefined) {
url_description_dict = {}; url_description_dict = {};
} }
...@@ -567,6 +568,9 @@ ...@@ -567,6 +568,9 @@
promise_list.push( promise_list.push(
gadget.props.login_gadget.clearSettingFromParentUrl(url_description_dict[key_list[i]].href) gadget.props.login_gadget.clearSettingFromParentUrl(url_description_dict[key_list[i]].href)
); );
delete_promise_list.push(
gadget.props.jio_gadget.clearDeletedMonitorUrl(url_description_dict[key_list[i]].title)
);
delete url_description_dict[key_list[i]]; delete url_description_dict[key_list[i]];
} }
} }
...@@ -574,6 +578,9 @@ ...@@ -574,6 +578,9 @@
.push(function () { .push(function () {
return RSVP.all(promise_list); return RSVP.all(promise_list);
}) })
.push(function () {
return RSVP.all(delete_promise_list);
})
.push(function () { .push(function () {
return gadget.reload(); return gadget.reload();
}); });
......
...@@ -79,9 +79,6 @@ ...@@ -79,9 +79,6 @@
{path: 'jio_private/', query: {}, private_access: true}, {path: 'jio_private/', query: {}, private_access: true},
/*{path: 'jio_private/data/', query: { /*{path: 'jio_private/data/', query: {
//query: '_id: "%.data" AND _id: "%.status"' // Skip history //query: '_id: "%.data" AND _id: "%.status"' // Skip history
}},
/*{path: 'jio_private/report/', query: {
query: '_id:"%.report"' // Skip history
}}*/ }}*/
]; ];
......
...@@ -242,7 +242,7 @@ ...@@ -242,7 +242,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.28202.20258.49390</string> </value> <value> <string>951.28267.48379.7065</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -260,7 +260,7 @@ ...@@ -260,7 +260,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464194624.26</float> <float>1466610249.05</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -24,10 +24,10 @@ ...@@ -24,10 +24,10 @@
{{#each row_list}} {{#each row_list}}
<tr rel="{{index}}"> <tr rel="{{index}}">
<td class="ui-text-center"><a class="ui-link" href="{{href}}"> <td class="ui-text-center"><a class="ui-link" href="{{href}}">
<span class="ui-status-icon ui-status-{{status}}"></span></a></td> <span class="label label-{{status}}">{{status}}</span></a></td>
<td><a class="ui-link" href="{{href}}">{{date}}</a></td>
<td><a class="ui-link" href="{{href}}">{{value}}</a></td> <td><a class="ui-link" href="{{href}}">{{value}}</a></td>
<td><a class="ui-link" href="{{href}}">{{hosting_value}}</a></td> <td><a class="ui-link" href="{{href}}">{{hosting_value}}</a></td>
<td><a class="ui-link" href="{{href}}">{{date}}</a></td>
</tr> </tr>
{{/each}} {{/each}}
</tbody> </tbody>
......
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.29269.36506.17954</string> </value> <value> <string>952.2630.35534.25156</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -261,7 +261,7 @@ ...@@ -261,7 +261,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464254807.83</float> <float>1466588622.28</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -191,7 +191,7 @@ ...@@ -191,7 +191,7 @@
"date": all_document_list[j].date, "date": all_document_list[j].date,
"value": all_document_list[j].title, "value": all_document_list[j].title,
"hosting_value": all_document_list[j]['hosting-title'] || '', "hosting_value": all_document_list[j]['hosting-title'] || '',
"status": all_document_list[j].hasOwnProperty('status') ? all_document_list[j].status.toLowerCase() : '' "status": all_document_list[j].hasOwnProperty('status') ? all_document_list[j].status : 'ERROR'
}); });
} }
...@@ -202,9 +202,9 @@ ...@@ -202,9 +202,9 @@
row_list, row_list,
[ [
{title: 'Status'}, {title: 'Status'},
{title: 'Report Date'},
{title: 'Software Instance'}, {title: 'Software Instance'},
{title: 'Hosting Subscription'} {title: 'Hosting Subscription'},
{title: 'Report Date'}
] ]
]); ]);
}) })
......
...@@ -239,7 +239,7 @@ ...@@ -239,7 +239,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>951.29330.13166.23057</string> </value> <value> <string>952.2632.39409.25770</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -257,7 +257,7 @@ ...@@ -257,7 +257,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1464258374.01</float> <float>1466589417.88</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
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