From 3b51b1865fb44cd2fde3d7796ea53541cb6e403c Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Mon, 21 May 2012 14:02:48 -0700 Subject: [PATCH] CS-15015: cloudstack 3.0 UI - detailView widget - add new property "pollAgainIfValueIsIn" to keep polling newest info from server when a column has a specific value (e.g. volume state column has value 'UploadNotStarted') --- ui/scripts/storage.js | 16 ++++++++++++---- ui/scripts/ui/widgets/detailView.js | 24 +++++++++++++++++++++++- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/ui/scripts/storage.js b/ui/scripts/storage.js index 36d4464595f..730267dcf94 100644 --- a/ui/scripts/storage.js +++ b/ui/scripts/storage.js @@ -33,14 +33,17 @@ fields: { name: { label: 'label.name' }, type: { label: 'label.type' }, - //hypervisor: { label: 'label.hypervisor' }, - //vmdisplayname: { label: 'label.vm.display.name' }, - state: { + hypervisor: { label: 'label.hypervisor' }, + vmdisplayname: { label: 'label.vm.display.name' }, + + /* + state: { label: 'State', indicator: { 'Ready': 'on' } } + */ }, // List view actions @@ -943,7 +946,12 @@ { id: { label: 'ID' }, zonename: { label: 'label.zone' }, - state: { label: 'label.state' }, + state: { + label: 'label.state', + pollAgainIfValueIsIn: { + 'UploadNotStarted': 1 + } + }, type: { label: 'label.type' }, storagetype: { label: 'label.storage.type' }, hypervisor: { label: 'label.hypervisor' }, diff --git a/ui/scripts/ui/widgets/detailView.js b/ui/scripts/ui/widgets/detailView.js index 860983252d6..14a472f8278 100644 --- a/ui/scripts/ui/widgets/detailView.js +++ b/ui/scripts/ui/widgets/detailView.js @@ -680,7 +680,29 @@ } else if (key != 'name') { isOddRow = true; } - + + //??? + if("pollAgainIfValueIsIn" in value) { + if (content in value.pollAgainIfValueIsIn) { + //poll again + var intervalKey = setInterval(function() { + $.ajax({ + url: createURL("listVolumes&id=" + context.volumes[0].id), + dataType: "json", + async: true, + success: function(json) { + var jsonObj = json.listvolumesresponse.volume[0]; + if(jsonObj[key] != content) { + //if(jsonObj[key] == content) { //for testing, remove it before check in + clearInterval(intervalKey); + $('.detail-view .toolbar .button.refresh').click(); //click Refresh button to refresh detailView + } + } + }); + }, 5000); + } + } + $name.html(_l(value.label)); $value.html(_s(content));