return a.localeCompare(b, undefined, {numeric: true});
}
+function update_job_table(table_obj, new_data) {
+ var rows = table_obj.rows();
+ var old_jobs = {};
+ table_obj.data().toArray().forEach(function(job) {
+ old_jobs[job.jobid] = job;
+ });
+ var new_jobs = {};
+ new_data.forEach(function(job) {
+ new_jobs[job.jobid] = job;
+ });
+
+ var job_add_mod = {};
+ for (var jobid in new_jobs) {
+ if (!old_jobs.hasOwnProperty(jobid) || new_jobs[jobid].jobstatus != old_jobs[jobid].jobstatus) {
+ job_add_mod[jobid] = new_jobs[jobid];
+ }
+ }
+ var job_rm = {};
+ for (var jobid in old_jobs) {
+ if (!new_jobs.hasOwnProperty(jobid)) {
+ job_rm[jobid] = old_jobs[jobid];
+ }
+ }
+
+ var rows_rm_idxs = [];
+ var rows_list = rows.toArray();
+ var jobid;
+ for (var i = 0; i < rows_list[0].length; i++) {
+ row = rows_list[0][i];
+ jobid = table_obj.row(row).data().jobid
+ if (job_add_mod.hasOwnProperty(jobid)) {
+ // update modified row
+ table_obj.row(row).data(job_add_mod[jobid]).draw();
+ // remove modified jobs from table
+ delete job_add_mod[jobid];
+ continue;
+ }
+ if (job_rm.hasOwnProperty(jobid)) {
+ // get rows to remove
+ rows_rm_idxs.push(row);
+ continue;
+ }
+ };
+
+ // remove old rows
+ if (rows_rm_idxs.length > 0) {
+ table_obj.rows(rows_rm_idxs).remove().draw();
+ }
+
+ // add new rows
+ for (var jobid in job_add_mod) {
+ table_obj.row.add(job_add_mod[jobid]).draw();
+ }
+}
+
$(function() {
W3SideBar.init();
set_sbbr_compatibility();
var callback_time_offset = 0;
var oData;
var MonitorCalls = [];
+var MonitorCallsInterval = [];
$(function() {
if (is_small) {
W3SideBar.close();
for (var i = 0; i < calls_len; i++) {
MonitorCalls[i]();
}
+ var calls_interval_len = MonitorCallsInterval.length;
+ for (var i = 0; i < calls_interval_len; i++) {
+ MonitorCallsInterval[i]();
+ }
if (calls_len > 0) {
Formatters.set_formatters();
}
job_list: 'job_for_client_list',
job_list_body: 'job_for_client_list_body'
},
- clientid: 0,
data: [],
table: null,
- init: function(clientid) {
- this.clientid = clientid;
- this.prepare_data();
- this.set_table();
- },
- prepare_data: function() {
- for (var i = 0; i < oData.jobs.length; i++) {
- if (oData.jobs[i].clientid == this.clientid) {
- this.data.push(oData.jobs[i]);
- }
+ init: function() {
+ this.data = oData.jobs;
+ if (this.table) {
+ update_job_table(this.table, this.data);
+ } else {
+ this.set_table();
}
},
set_table: function() {
});
}
};
-MonitorParams = {jobs: null};
+MonitorParams = {
+ jobs: {
+ client: ['<%=$this->getClientName()%>']
+ }
+};
$(function() {
- MonitorCalls.push(function() { oJobForClientList.init(<%=$this->getClientId()%>); });
+ MonitorCallsInterval.push(function() { oJobForClientList.init(); });
});
</script>
<div class="w3-container tab_item" id="client_config" style="display: none">
job_list: 'job_list',
job_list_body: 'job_list_body'
},
+ data: [],
+ table: null,
init: function() {
- this.set_table();
+ this.data = oData.jobs;
+ if (this.table) {
+ update_job_table(this.table, this.data);
+ } else {
+ this.set_table();
+ }
},
set_table: function() {
- var table = $('#' + this.ids.job_list).DataTable({
- data: oData.jobs,
+ this.table = $('#' + this.ids.job_list).DataTable({
+ data: this.data,
deferRender: true,
columns: [
{
};
MonitorParams = {jobs: null};
$(function() {
- MonitorCalls.push(function() { oJobList.init(); });
+ MonitorCallsInterval.push(function() { oJobList.init(); });
});
</script>
</com:TContent>
job_list: 'job_history_list',
job_list_body: 'job_history_list_body'
},
- job_name: '',
data: [],
table: null,
- init: function(job_name) {
- this.job_name = job_name;
- this.prepare_data();
- this.set_table();
- },
- prepare_data: function() {
- for (var i = 0; i < oData.jobs.length; i++) {
- if (oData.jobs[i].name == this.job_name) {
- this.data.push(oData.jobs[i]);
- }
+ init: function() {
+ this.data = oData.jobs;
+ if (this.table) {
+ update_job_table(this.table, this.data);
+ } else {
+ this.set_table();
}
},
set_table: function() {
}
};
$(function() {
- MonitorCalls.push(function() { oJobHistoryList.init('<%=$this->getJobName()%>'); });
+ MonitorCallsInterval.push(function() { oJobHistoryList.init(); });
});
</script>
</div>
if (is_array($params) && key_exists('jobs', $params)) {
$job_params = array('jobs');
$job_query = array();
- if (is_array($params['jobs']) && key_exists('name', $params['jobs']) && is_array($params['jobs']['name'])) {
- for ($i = 0; $i < count($params['jobs']['name']); $i++) {
- $job_query['name'] = $params['jobs']['name'][$i];
+ if (is_array($params['jobs'])) {
+ if (key_exists('name', $params['jobs']) && is_array($params['jobs']['name'])) {
+ for ($i = 0; $i < count($params['jobs']['name']); $i++) {
+ $job_query['name'] = $params['jobs']['name'][$i];
+ }
+ }
+ if (key_exists('client', $params['jobs']) && is_array($params['jobs']['client'])) {
+ for ($i = 0; $i < count($params['jobs']['client']); $i++) {
+ $job_query['client'] = $params['jobs']['client'][$i];
+ }
}
}
if ($this->Request->contains('use_limit') && $this->Request['use_limit'] == 1) {