On 01/24/2014 08:53 AM, Rodrigo Trujillo wrote:
Hi guys,

I wonder if someone expert in UI can help me with my latest patch.
Actually, the patch: [PATCH V2 7/7] (WIP) Storagepool SCSI/FC: Draft UI    to allow user to select a LUN to new VM

You guys will find the code some TODO's and FIXME

I need to popup a window with LUN's names and allow user to select one of them. Then retrieve this selection. I think this is not that complicated, but I could not research deeper how to do it. See an example below:

                                       (X) Close
Select Host

() Lun 1
() Lun 2
() Lun xxx

                                  | Select |

Hi Rodrigo, the general process to add a pop-up window is like:

1) Add the content page, related files include HTML, JS, and CSS.

2) Add a hook to trigger the window in parent page.

3) Add other corresponding content including Makefile, translation, etc.

  To quickly make it, you can copy existing window page file (like guest-add.html.tmpl, guest-edit.html.tmpl, etc.) and then modify based-on it. Here let me give you a draft code fragment.

create ui/pages/lun-select.html.tmpl

<div id="lun-select-window" class="window">
    <form id="form-lun-select">
            <h1 class="title">$_("Select LUN")</h1>
            <div class="close">X</div>
        <div class="content">
            <fieldset class="lun-select-fieldset">
                <legend>$_("Select a Name")</legend>
                <div id="lun-select-names">
            <div class="btn-group">
                <button id="lun-select-button-select">$_("Select")</button>

create ui/js/src/kimchi.lun_select_main.js

kimchi.lun_select_main = function() {
    var lunSelectForm = $('#lun-select-form');
    var selectButton = $('#lun-select-button-select');

    kimchi.listLUNs(function(luns) {
        $.each(luns, function(i, lun) {
             // Create radio button and append it to DOM node
             // e.g. $('<input id="lun-name-radio-' + i + '" type="radio" value="' + lun + '"><label for="lun-name-radio-' + i +'">' + lun + '</label>').appendTo('#lun-select-names')

    var submitForm = function(event) {
        $(selectButton).prop('disabled', true);
        var selected = $('input[checked="true"]', lunSelectForm).val();
        // Save to a kimchi scoped property
        kimchi.selecteLUN = selected;

    $(lunSelectForm).on('submit', submitForm);
    $(selectButton).on('click', submitForm);

create ui/css/theme-default/lun-select.css

/* Please refer to similar CSS files like guest-edit.css. */

Update ui/pages/Makefile.am

add one line in proper position:

    lun-select.html.tmpl \

Update po file

(optional) add related i18n variables in ui/pages/i18n.html.tmpl

Appreciate any help


Kimchi-devel mailing list