[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