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(a)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(a)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>' +