[Kimchi-devel] [PATCH v6 3/3] Software Update Support in Host Tab

Adam King rak at linux.vnet.ibm.com
Wed Mar 12 22:13:49 UTC 2014


Reviewed-by: Adam King <rak at linux.vnet.ibm.com>

On 03/12/2014 08:20 AM, Hongliang Wang wrote:
> Added software update grid in host tab.
>
> Signed-off-by: Hongliang Wang <hlwang at linux.vnet.ibm.com>
> ---
>   ui/css/theme-default/host.css |  29 ++++++++++++
>   ui/js/src/kimchi.host.js      | 104 ++++++++++++++++++++++++++++++++++++++----
>   ui/pages/tabs/host.html.tmpl  |  17 +++++++
>   3 files changed, 142 insertions(+), 8 deletions(-)
>
> diff --git a/ui/css/theme-default/host.css b/ui/css/theme-default/host.css
> index 470ed1b..0f8b941 100644
> --- a/ui/css/theme-default/host.css
> +++ b/ui/css/theme-default/host.css
> @@ -224,3 +224,32 @@
>       width: 300px;
>   }
>   /* End of Debug Report */
> +
> +/* Software Updates */
> +.host-panel #software-updates-grid {
> +    border-color: #ddd;
> +    height: 300px;
> +    width: 850px;
> +}
> +
> +.software-update-id {
> +    width: 30px;
> +}
> +
> +.software-update-name,
> +.software-update-repos {
> +    width: 220px;
> +}
> +
> +.software-update-version,
> +.software-update-arch {
> +    width: 190px;
> +}
> +
> +.host-panel #software-updates-progress-textarea {
> +    border: 1px solid #ddd;
> +    height: 100px;
> +    resize: vertical;
> +    width: 846px;
> +}
> +/* End of Software Updates */
> diff --git a/ui/js/src/kimchi.host.js b/ui/js/src/kimchi.host.js
> index 7974054..46b37ee 100644
> --- a/ui/js/src/kimchi.host.js
> +++ b/ui/js/src/kimchi.host.js
> @@ -22,6 +22,85 @@ kimchi.host_main = function() {
>           $(header).attr('aria-expanded', toExpand ? 'true' : 'false');
>       };
>
> +    var softwareUpdatesGridID = 'software-updates-grid';
> +    var softwareUpdatesGrid = null;
> +    var progressAreaID = 'software-updates-progress-textarea';
> +    var reloadProgressArea = function(result) {
> +        var progressArea = $('#' + progressAreaID)[0];
> +        $(progressArea).text(result['message']);
> +        var scrollTop = $(progressArea).prop('scrollHeight');
> +        $(progressArea).prop('scrollTop', scrollTop);
> +    };
> +
> +    var initSoftwareUpdatesGrid = function(softwareUpdates) {
> +        softwareUpdatesGrid = new kimchi.widget.Grid({
> +            container: 'software-updates-grid-container',
> +            id: softwareUpdatesGridID,
> +            title: i18n['KCHUPD6001M'],
> +            rowSelection: 'disabled',
> +            toolbarButtons: [{
> +                id: softwareUpdatesGridID + '-update-button',
> +                label: i18n['KCHUPD6006M'],
> +                disabled: true,
> +                onClick: function(event) {
> +                    var updateButton = $(this);
> +                    var progressArea = $('#' + progressAreaID)[0];
> +                    $('#software-updates-progress-container').removeClass('hidden');
> +                    $(progressArea).text('');
> +                    !kimchi.isElementInViewport(progressArea) &&
> +                        progressArea.scrollIntoView();
> +                    $(updateButton).text(i18n['KCHUPD6007M']).prop('disabled', true);
> +
> +                    kimchi.updateSoftware(function(result) {
> +                        reloadProgressArea(result);
> +                        $(updateButton).text(i18n['KCHUPD6006M']).prop('disabled', false);
> +                        kimchi.topic('kimchi/softwareUpdated').publish({
> +                            result: result
> +                        });
> +                    }, function() {}, reloadProgressArea);
> +                }
> +            }],
> +            frozenFields: [],
> +            fields: [{
> +                name: 'package_name',
> +                label: i18n['KCHUPD6002M'],
> +                'class': 'software-update-name'
> +            }, {
> +                name: 'version',
> +                label: i18n['KCHUPD6003M'],
> +                'class': 'software-update-version'
> +            }, {
> +                name: 'arch',
> +                label: i18n['KCHUPD6004M'],
> +                'class': 'software-update-arch'
> +            }, {
> +                name: 'repository',
> +                label: i18n['KCHUPD6005M'],
> +                'class': 'software-update-repos'
> +            }],
> +            data: listSoftwareUpdates
> +        });
> +    };
> +
> +    var listSoftwareUpdates = function(gridCallback) {
> +        kimchi.listSoftwareUpdates(function(softwareUpdates) {
> +            if(gridCallback) {
> +                gridCallback(softwareUpdates);
> +            }
> +            else {
> +                if(softwareUpdatesGrid) {
> +                    softwareUpdatesGrid.setData(softwareUpdates);
> +                }
> +                else {
> +                    initSoftwareUpdatesGrid(softwareUpdates);
> +                }
> +            }
> +
> +            var updateButton = $('#' + softwareUpdatesGridID + '-update-button');
> +            $(updateButton).prop('disabled', softwareUpdates.length === 0);
> +        });
> +    };
> +
>       var reportGridID = 'available-reports-grid';
>       var reportGrid = null;
>       var initReportGrid = function(reports) {
> @@ -192,18 +271,22 @@ kimchi.host_main = function() {
>           });
>
>           kimchi.getCapabilities(function(capabilities) {
> -            if(!capabilities['system_report_tool']) {
> -                return;
> +            if(capabilities['update_tool']) {
> +                $('#software-update-section').removeClass('hidden');
> +                initSoftwareUpdatesGrid();
> +                kimchi.topic('kimchi/softwareUpdated')
> +                    .subscribe(listSoftwareUpdates);
> +            }
> +
> +            if(capabilities['system_report_tool']) {
> +                $('#debug-report-section').removeClass('hidden');
> +                listDebugReports();
> +                kimchi.topic('kimchi/debugReportAdded')
> +                    .subscribe(listDebugReports);
>               }
> -            $('#debug-report-section').removeClass('hidden');
> -            listDebugReports();
>           });
>       };
>
> -    kimchi.topic('kimchi/debugReportAdded').subscribe(function(params) {
> -        listDebugReports();
> -    });
> -
>       kimchi.getHost(function(data) {
>           var htmlTmpl = $('#host-tmpl').html();
>           data['logo'] = data['logo'] || '';
> @@ -468,6 +551,11 @@ kimchi.host_main = function() {
>               kimchi.hostTimer = null;
>               delete kimchi.hostTimer;
>           }
> +
> +        softwareUpdatesGrid && softwareUpdatesGrid.destroy();
> +        kimchi.topic('kimchi/softwareUpdated').unsubscribe(listSoftwareUpdates);
> +
>           reportGrid && reportGrid.destroy();
> +        kimchi.topic('kimchi/debugReportAdded').unsubscribe(listDebugReports);
>       });
>   };
> diff --git a/ui/pages/tabs/host.html.tmpl b/ui/pages/tabs/host.html.tmpl
> index 52f849b..179deba 100644
> --- a/ui/pages/tabs/host.html.tmpl
> +++ b/ui/pages/tabs/host.html.tmpl
> @@ -120,6 +120,23 @@
>                       </div>
>                   </div>
>               </div>
> +            <div id="software-update-section" class="host-section hidden">
> +                <h3 class="section-header"
> +                    aria-controls="content-software-update">
> +                    $_("Software Updates")
> +                </h3>
> +                <div id="content-software-update" class="section-content">
> +                    <div class="section-row">
> +                        <div class="section-value">
> +                            <div id="software-updates-grid-container"></div>
> +                            <div id="software-updates-progress-container" class="hidden">
> +                                <label for="software-updates-progress-textarea">$_("Update Progress")</label>
> +                                <textarea id="software-updates-progress-textarea" readonly></textarea>
> +                            </div>
> +                        </div>
> +                    </div>
> +                </div>
> +            </div>
>               <div id="debug-report-section" class="host-section hidden">
>                   <h3 class="section-header"
>                       aria-controls="content-sys-reports">


-- 
Adam King <rak at linux.vnet.ibm.com>
IBM CSI




More information about the Kimchi-devel mailing list