[Kimchi-devel] [PATCH V2 4/5] Implement frontend code to edit MAC address of a guest

Aline Manera alinefm at linux.vnet.ibm.com
Wed May 20 18:54:57 UTC 2015



On 13/05/2015 15:39, Jose Ricardo Ziviani wrote:
> Signed-off-by: Jose Ricardo Ziviani <joserz at linux.vnet.ibm.com>
> ---
>   ui/js/src/kimchi.guest_edit_main.js | 44 +++++++++++++++++++++++++------------
>   ui/pages/guest-edit.html.tmpl       |  6 +++--
>   2 files changed, 34 insertions(+), 16 deletions(-)
>
> diff --git a/ui/js/src/kimchi.guest_edit_main.js b/ui/js/src/kimchi.guest_edit_main.js
> index 9c088aa..90a9bb4 100644
> --- a/ui/js/src/kimchi.guest_edit_main.js
> +++ b/ui/js/src/kimchi.guest_edit_main.js
> @@ -164,6 +164,7 @@ kimchi.guest_edit_main = function() {
>           }).click(function(evt){
>               evt.preventDefault();
>               addItem({
> +                id: -1,
>                   mac: "",
>                   network: "",
>                   type: "network",
> @@ -171,12 +172,18 @@ kimchi.guest_edit_main = function() {
>                   editMode: ""
>               });
>           });
> -        var toggleEdit = function(item, on){
> -            $("label", item).toggleClass("hide", on);
> -            $("select", item).toggleClass("hide", !on);
> +        var toggleEdit = function(item, on, itemId){
> +            $("#label-mac-" + itemId, item).toggleClass("hide", on);
> +            $("#edit-mac-" + itemId, item).toggleClass("hide", !on);
> +            $("#label-network-" + itemId, item).toggleClass("hide", false);
> +            $("select", item).toggleClass("hide", true);
>               $(".action-area", item).toggleClass("hide");
>           };

>           var addItem = function(data) {
> +            if (data.id == -1) {
> +                var item = $(this).parent().parent();
> +                data.id = $(".item", item.parent()).size();
> +            }

Isn't there a way to get the element using an ID?
I think this .parent().parent() may be dangerous while changing the UI 
we could get the wrong element.

>               var itemNode = $.parseHTML(kimchi.substitute($('#interface-tmpl').html(),data));
>               $(".body", "#form-guest-edit-interface").append(itemNode);
>               $("select", itemNode).append(networkOptions);
> @@ -188,12 +195,12 @@ kimchi.guest_edit_main = function() {
>                   $("select", itemNode).val(data.network);
>               }
>               $(".edit", itemNode).button({
> -                disabled: true,
> +                disabled: false,
>                   icons: { primary: "ui-icon-pencil" },
>                   text: false
>               }).click(function(evt){

>                   evt.preventDefault();
> -                toggleEdit($(this).parent().parent(), true);
> +                toggleEdit($(this).parent().parent(), true, data.id);
>               });

Same here.

>               $(".delete", itemNode).button({
>                   icons: { primary: "ui-icon-trash" },
> @@ -213,21 +220,29 @@ kimchi.guest_edit_main = function() {
>                   var item = $(this).parent().parent();
>                   var interface = {
>                       network: $("select", item).val(),
> -                    type: "network"
> +                    type: "network",
> +                    mac: $(":text", item).val()
>                   };
> -                var postUpdate = function(){
> -                    $("label", item).text(interface.network);
> -                    toggleEdit(item, false);
> +                var postUpdate = function(mac){
> +                    $("#label-network-" + data.id, item).text(interface.network);
> +                    $("#label-mac-" + data.id, item).text(mac);
> +                    toggleEdit(item, false, data.id);
>                   };
>                   if(item.prop("id")==""){
>                       kimchi.createGuestInterface(kimchi.selectedGuest, interface, function(data){
>                           item.prop("id", data.mac);
> -                        postUpdate();
> +                        postUpdate(data.mac);
>                       });
>                   }else{
> -                    kimchi.updateGuestInterface(kimchi.selectedGuest, item.prop("id"), interface, function(){
> -                        postUpdate();
> -                    });
> +                    if (item.prop('id') == interface.mac) {
> +                        toggleEdit(item, false, data.id);
> +                    } else {
> +                        kimchi.updateGuestInterface(kimchi.selectedGuest, item.prop('id'),
> +                                interface, function(data){
> +                            item.prop("id", data.mac);
> +                            postUpdate(data.mac);
> +                        });
> +                    }
>                   }
>               });
>               $(".cancel", itemNode).button({
> @@ -236,7 +251,7 @@ kimchi.guest_edit_main = function() {
>               }).click(function(evt){
>                   evt.preventDefault();
>                   var item = $(this).parent().parent();
> -                $("label", item).text()==="" ? item.remove() : toggleEdit(item, false);
> +                $("label", item).text()==="" ? item.remove() : toggleEdit(item, false, data.id);
>               });
>           };
>           var networkOptions = "";
> @@ -249,6 +264,7 @@ kimchi.guest_edit_main = function() {
>                   for(var i=0;i<data.length;i++){
>                       data[i].viewMode = "";
>                       data[i].editMode = "hide";
> +                    data[i].id = i;
>                       addItem(data[i]);
>                   }
>               });
> diff --git a/ui/pages/guest-edit.html.tmpl b/ui/pages/guest-edit.html.tmpl
> index 7568fce..4787735 100644
> --- a/ui/pages/guest-edit.html.tmpl
> +++ b/ui/pages/guest-edit.html.tmpl
> @@ -227,14 +227,16 @@
>   <script id="interface-tmpl" type="text/html">
>       <div class="item" id="{mac}">
>           <span class="cell">
> -            <label class="{viewMode}">{network}</label>
> +            <label id="label-network-{id}" class="{viewMode}">{network}</label>
>               <select class="{editMode}"></select>
>           </span>
>           <span class="cell">
>               <span>{type}</span>
>           </span>
>           <span class="cell">
> -            <span>{mac}</span>
> +            <label id="label-mac-{id}" class="{viewMode}">{mac}</label>
> +            <input class="{editMode}" type="text"
> +               id="edit-mac-{id}" name="{mac}" value="{mac}" />
>           </span>
>           <span class="action-area {editMode}">
>               <button class="save"></button><button class="cancel"></button>




More information about the Kimchi-devel mailing list