
Hi Aline, Now I am using sessionStorage memorizing the task id which is impossible to be located in another browser. I have talked with Zhengsheng and Sheldon, we figured out a solution to that. Pls ignore this patch since there might need more support from the backend. I will send an RFC mail to explain our idea and it's not just for debug report but also for all tasks. Thanks for the kindly reminding. Best Regards Wang Wen On 6/27/2014 4:41 AM, Aline Manera wrote:
It does not work for multiple client accesses. If I start a debug report generation, the loading icon is displayed but if I access kimchi from other browser I don't see anything related to that As we talked in the scrum meeting we will need to add a backend logic to enable it on ui
And also allow create multiples debug reports at the same time - so the "Generate" button should always be enabled And the "Rename", "Delete" and "Download" also should always be enabled when a debug report is selected.
On 06/24/2014 07:38 AM, Wen Wang wrote:
From: Wen Wang <wenwang@linux.vnet.ibm.com>
1) Enabled remove and download button when generating a debug report 2) Fixed the bug when changing tabs or refreshing generate indicator disappears.
Signed-off-by: Wen Wang <wenwang@linux.vnet.ibm.com> --- ui/js/src/kimchi.grid.js | 7 ++++ ui/js/src/kimchi.host.js | 67 +++++++++++++++++++++++++++++++++- ui/js/src/kimchi.report_add_main.js | 36 ++++++------------- 3 files changed, 83 insertions(+), 27 deletions(-)
diff --git a/ui/js/src/kimchi.grid.js b/ui/js/src/kimchi.grid.js index 2c70969..615d469 100644 --- a/ui/js/src/kimchi.grid.js +++ b/ui/js/src/kimchi.grid.js @@ -234,6 +234,12 @@ kimchi.widget.Grid.prototype = (function() { : null; };
+ var getSelectedAbove = function() { + return this.selectedIndex >= 0 + ? this.data[this.selectedIndex - 1] + : null; + }; + var startResizing = function(container, event) { var grid = event.data.grid; kimchi.widget.Grid.beingResized = grid; @@ -520,6 +526,7 @@ kimchi.widget.Grid.prototype = (function() { createDOM: createDOM, setData: setData, getSelected: getSelected, + getSelectedAbove:getSelectedAbove, reload: reload, destroy: destroy }; diff --git a/ui/js/src/kimchi.host.js b/ui/js/src/kimchi.host.js index f3de831..c3d0eef 100644 --- a/ui/js/src/kimchi.host.js +++ b/ui/js/src/kimchi.host.js @@ -310,7 +310,13 @@ kimchi.host_main = function() { label: i18n['KCHDR6009M'], disabled: true, onClick: function(event) { - var report = reportGrid.getSelected(); + var report = null; + if ($('.grid-body-view table tbody tr:first-child td:last-child', + '#' + reportGridID).attr('id') === 'id-debug-img') { + report = reportGrid.getSelectedAbove(); + } else { + report = reportGrid.getSelected(); + } if(!report) { return; } @@ -341,7 +347,13 @@ kimchi.host_main = function() { label: i18n['KCHDR6010M'], disabled: true, onClick: function(event) { - var report = reportGrid.getSelected(); + var report = null; + if ($('.grid-body-view table tbody tr:first-child td:last-child', + '#' + reportGridID).attr('id') === 'id-debug-img') { + report = reportGrid.getSelectedAbove(); + } else { + report = reportGrid.getSelected(); + } if(!report) { return; } @@ -383,6 +395,28 @@ kimchi.host_main = function() { else { initReportGrid(reports); } + var taskID = sessionStorage.getItem('sessionDebugReportID') + var reportName = sessionStorage.getItem('sessionDebugReportName'); + if (taskID != null) { + kimchi.getTask(taskID, function(result) { + var taskStatus = result['status']; + if (taskStatus === 'running') { + $('.grid-body-view table tbody', '#' + reportGridID).prepend( + '<tr>' + + '<td>' + + '<div class="cell-text-wrapper">' + reportName + '</div>' + + '</td>' + + '<td id ="id-debug-img">' + + '<div class="cell-text-wrapper">' + i18n['KCHDR6007M'] + '</div>' + + '</td>' + + '</tr>' + ); + $('#' + reportGridID + '-generate-button').prop('disabled', true); + } else { + $('#' + reportGridID + '-generate-button').prop('disabled', false); + } + }, ''); + } }, function(error) { if(error['status'] == 403) { $('#debug-report-section').addClass('hidden'); @@ -473,6 +507,35 @@ kimchi.host_main = function() { .subscribe(listDebugReports); } }); + var taskID = sessionStorage.getItem('sessionDebugReportID'); + if (taskID != null) { + var isRunning =false; + var trackTask = function() { + kimchi.getTask(taskID, function(result) { + var taskStatus = result['status']; + switch(taskStatus) { + case 'running': + if(kimchi.stopTrackingReport === true) { + return; + } + setTimeout(function() { + trackTask(); + }, 200); + break; + case 'finished': + listDebugReports(); + isRunning = true; + break; + default: + break; + } + }, ''); + } + if (!isRunning) + { + trackTask(); + } + } };
kimchi.getHost(function(data) { diff --git a/ui/js/src/kimchi.report_add_main.js b/ui/js/src/kimchi.report_add_main.js index 43484f5..3fdaa9d 100644 --- a/ui/js/src/kimchi.report_add_main.js +++ b/ui/js/src/kimchi.report_add_main.js @@ -17,25 +17,10 @@ */ kimchi.report_add_main = function() { var reportGridID = 'available-reports-grid'; - var generateButton = $('#' + reportGridID + '-generate-button'); var addReportForm = $('#form-report-add'); var submitButton = $('#button-report-add'); var nameTextbox = $('input[name="name"]', addReportForm); nameTextbox.select(); - - /* - * FIXME: - * Currently, all buttons will be disabled when a report is being - * generated. Though operations on existing debug reports shouldn't - * be affected when a new one is being generated, and it's expected - * to enable Rename/Remove/Download Buttons whenever users click an - * existing report row in the grid. - */ - var disableToolbarButtons = function(event, toEnable) { - $('#' + reportGridID + ' .grid-toolbar button') - .prop('disabled', !toEnable); - }; - var submitForm = function(event) { if(submitButton.prop('disabled')) { return false; @@ -48,15 +33,14 @@ kimchi.report_add_main = function() { } var formData = addReportForm.serializeObject(); var taskAccepted = false; - disableToolbarButtons(); + $('#' + reportGridID + '-generate-button').prop('disabled', true); submitButton.prop('disabled', true); - $('.grid-body table tr', '#' + reportGridID) - .on('click', disableToolbarButtons); kimchi.createReport(formData, function(result) { - $('.grid-body-view table tr:first-child', '#' + reportGridID).remove(); - $('.grid-body table tr', '#' + reportGridID) - .off('click', disableToolbarButtons); - generateButton.prop('disabled', false); + $('.grid-body-view table tr:first-child', + '#' + reportGridID).remove(); + $('#' + reportGridID + '-generate-button').prop('disabled', false); + sessionStorage.removeItem('sessionDebugReportID'); + sessionStorage.removeItem('sessionDebugReportName'); kimchi.topic('kimchi/debugReportAdded').publish({ result: result }); @@ -73,10 +57,10 @@ kimchi.report_add_main = function() { taskAccepted && $('.grid-body-view table tr:first-child', '#' + reportGridID).remove(); - $('.grid-body table tr', '#' + reportGridID) - .off('click', disableToolbarButtons); - generateButton.prop('disabled', false); + $('#' + reportGridID + '-generate-button').prop('disabled', false); submitButton.prop('disabled', false); + sessionStorage.removeItem('sessionDebugReportID'); + sessionStorage.removeItem('sessionDebugReportName'); nameTextbox.select(); }, function(result) { if(taskAccepted) { @@ -85,6 +69,8 @@ kimchi.report_add_main = function() { taskAccepted = true; kimchi.window.close(); var reportName = nameTextbox.val() || i18n['KCHDR6012M']; + sessionStorage.setItem('sessionDebugReportName',reportName); + sessionStorage.setItem('sessionDebugReportID',result['id']); $('.grid-body-view table tbody', '#' + reportGridID).prepend( '<tr>' + '<td>' +