[Kimchi-devel] [PATCH] UI: List Kimchi Peers

Aline Manera alinefm at linux.vnet.ibm.com
Tue Aug 26 19:56:23 UTC 2014


The "Peers" menu blinks until get the response from server.
Couldn't we always display the "Peers" menu and add a loading icon 
(Searching...) until get the response? And if any peer was found show a 
message "No peers found". ?
That way we avoid the menu blinks.

On 08/26/2014 06:14 AM, huoyuxin at linux.vnet.ibm.com wrote:
> From: Yu Xin Huo <huoyuxin at linux.vnet.ibm.com>
>
> Signed-off-by: Yu Xin Huo <huoyuxin at linux.vnet.ibm.com>
> ---
>   ui/css/theme-default/topbar.css |   37 ++++++++++++++++++++++++++++++++++++-
>   ui/js/src/kimchi.api.js         |   14 ++++++++++++++
>   ui/js/src/kimchi.main.js        |   13 +++++++++++++
>   ui/pages/kimchi-ui.html.tmpl    |    7 +++++++
>   4 files changed, 70 insertions(+), 1 deletions(-)
>
> diff --git a/ui/css/theme-default/topbar.css b/ui/css/theme-default/topbar.css
> index bed4e19..8f2f79a 100644
> --- a/ui/css/theme-default/topbar.css
> +++ b/ui/css/theme-default/topbar.css
> @@ -114,7 +114,7 @@
>       cursor: pointer;
>       display: block;
>       position: relative;
> -    height: 48px;
> +    height: 52px;
>       margin: 0 12px;
>   }
>
> @@ -174,3 +174,38 @@ a#btn-logout:hover {
>           display: none;
>       }
>   }
> +
> +.peers {
> +    color: white;
> +    cursor: pointer;
> +    height: 52px;
> +    margin: 0 12px;
> +    display: none;
> +}
> +
> +.peers span {
> +    margin-top: 25px;
> +}
> +
> +.peers .arrow {
> +    border: 6px solid transparent;
> +    border-bottom: none;
> +    border-top-color: white;
> +    display: inline-block;
> +    width: 0;
> +}
> +
> +.peers .drowdown {
> +    top: 45px;
> +    right: 110px;
> +    color: black;
> +    padding: 10px 15px;
> +    white-space: nowrap;
> +    line-height: 12px;
> +    width: inherit;
> +}
> +
> +.peers .drowdown a {
> +    display: block;
> +    padding: 10px;
> +}
> diff --git a/ui/js/src/kimchi.api.js b/ui/js/src/kimchi.api.js
> index 4562992..8966cff 100644
> --- a/ui/js/src/kimchi.api.js
> +++ b/ui/js/src/kimchi.api.js
> @@ -1098,5 +1098,19 @@ var kimchi = {
>                   kimchi.message.error(data.responseJSON.reason);
>               }
>           });
> +    },
> +
> +    getPeers : function(suc, err) {
> +        kimchi.requestJSON({
> +            url : kimchi.url + 'peers',
> +            type : 'GET',
> +            contentType : 'application/json',
> +            dataType : 'json',
> +            resend : true,
> +            success : suc,
> +            error : err ? err : function(data) {
> +                kimchi.message.error(data.responseJSON.reason);
> +            }
> +        });
>       }
>   };
> diff --git a/ui/js/src/kimchi.main.js b/ui/js/src/kimchi.main.js
> index ba54b26..ea9951b 100644
> --- a/ui/js/src/kimchi.main.js
> +++ b/ui/js/src/kimchi.main.js
> @@ -20,10 +20,23 @@ kimchi.tabMode = {};
>   kimchi.capabilities = undefined;
>   kimchi.getCapabilities(function(result) {
>       kimchi.capabilities = result;
> +    kimchi.setupPeers();
>   }, function() {
>       kimchi.capabilities = {};
>   });
>
> +kimchi.setupPeers = function(){
> +    if(kimchi.capabilities.federation=="enable"){
> +        kimchi.getPeers(function(data){
> +            if(data.length>0)
> +                $('#peers').css("display", "block");
> +            for(var i=0; i<data.length; i++){
> +                $('.drowdown', '#peers').append("<a href='"+data[i]+"' target='_blank'>"+data[i]+"</a>");
> +            }
> +        });
> +    }
> +};
> +
>   kimchi.main = function() {
>       kimchi.popable();
>
> diff --git a/ui/pages/kimchi-ui.html.tmpl b/ui/pages/kimchi-ui.html.tmpl
> index 7bdf441..4e7b3af 100644
> --- a/ui/pages/kimchi-ui.html.tmpl
> +++ b/ui/pages/kimchi-ui.html.tmpl
> @@ -71,6 +71,13 @@
>       <h1 id="logo"><img alt="Project Kimchi" src="images/theme-default/logo-white.png"></h1>
>       <ul class="nav-top">
>           <li>
> +            <div id="peers" class="peers popable">
> +                <span>$_("Peers")</span>
> +                <span class="arrow"></span>
> +                <div class="drowdown popover right-side"></div>
> +            </div>
> +        </li>
> +        <li>
>               <div id="user" class="popable">
>                   <span id="user-icon"></span>
>                   <span id="user-name" class="empty-when-logged-off"></span>




More information about the Kimchi-devel mailing list