[Kimchi-devel] [PATCH] Enhancement:Enable operations when generating a debug report
Aline Manera
alinefm at linux.vnet.ibm.com
Thu Jun 26 20:41:01 UTC 2014
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 at 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 at 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>' +
More information about the Kimchi-devel
mailing list