From: Ciro Scognamiglio <ciro.scognamiglio@cslash.net> Date: Wed, 15 Apr 2015 17:25:25 +0000 (+0200) Subject: dashboard redesign X-Git-Tag: myslice-1.3~37^2~15 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=bb7c2839a257b071008c32fe4a39eb5e48864368;p=unfold.git dashboard redesign --- diff --git a/portal/static/css/fed4fire.css b/portal/static/css/fed4fire.css index 70de2a8f..6340326e 100644 --- a/portal/static/css/fed4fire.css +++ b/portal/static/css/fed4fire.css @@ -27,7 +27,8 @@ h2 { color:#333333; } h3 { - font-size:13pt; + font-size:12pt; + letter-spacing:0.6pt; color:#201E62; } input[type=checkbox] { @@ -651,17 +652,28 @@ div.secondary .account span { div.secondary .account a { color:black; } -div.dashboard div { - margin:25px 0; -} + div.dashboard { - text-align:center; +} +div.dashboard a { + color:black; +} +div.dashboard a:hover { } div.dashboard ul { text-align:left; margin-left:24px; list-style:none; } +div.dashboard h3 { + border-bottom:0.5px solid #E0E0E0; + margin-right:15px; +} +div.dashboard h3 img { + margin:15px 15px 15px 0; +} + + div.dataTables_filter label{ float:left; width:400px; diff --git a/portal/static/js/common.functions.js b/portal/static/js/common.functions.js index 481e9478..a74132e2 100644 --- a/portal/static/js/common.functions.js +++ b/portal/static/js/common.functions.js @@ -19,13 +19,13 @@ function getKeySplitId(id,separator){ if ( typeof String.prototype.startsWith != 'function' ) { String.prototype.startsWith = function( str ) { return this.substring( 0, str.length ) === str; - } + }; }; if ( typeof String.prototype.endsWith != 'function' ) { String.prototype.endsWith = function( str ) { return this.substring( this.length - str.length, this.length ) === str; - } + }; }; // http://stackoverflow.com/questions/646628/javascript-startswith @@ -58,15 +58,19 @@ jQuery.fn.spin = function(opts) { // FROM Triptych : http://stackoverflow.com/users/43089/triptych // http://stackoverflow.com/questions/979256/how-to-sort-an-array-of-javascript-objects // data.sort(sort_by('city', false, function(a){return a.toUpperCase()})); -var sort_by = function(field, reverse, primer){ +var sort_by = function(field, reverse, primer) { - var key = function (x) {return primer ? primer(x[field]) : x[field]}; + var key = function(x) { return primer ? primer(x[field]) : x[field]; }; //var key = primer ? function (x) { return primer(x[field]); } : function (x) { return x[field]; } - return function (a,b) { + return function(a,b) { var A = key(a), B = key(b); return (A < B ? -1 : (A > B ? 1 : 0)) * [1,-1][+!!reverse]; //return ((A < B) ? -1 : // (A > B) ? +1 : 0)) * [-1,1][+!!reverse]; - } + }; +}; + +function escapeRegExp(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); } diff --git a/portal/templates/base.html b/portal/templates/base.html index aed282c1..fd1869ee 100644 --- a/portal/templates/base.html +++ b/portal/templates/base.html @@ -21,7 +21,7 @@ <script src="{{ STATIC_URL }}js/jquery.dataTables.min.js"></script> <script src="{{ STATIC_URL }}js/jquery.qtip.min.js"></script> <script src="{{ STATIC_URL }}js/bootstrap.datatables.js"></script> -<!-- <script src="{{ STATIC_URL }}js/stash.min.js"></script> --> +<script src="{{ STATIC_URL }}js/common.functions.js"></script> <script src="{{ STATIC_URL }}js/myslice.js"></script> <script src="{{ STATIC_URL }}js/myslice-ui.js"></script> @@ -82,6 +82,7 @@ $(document).ready(function() { p = myslice.projects(); if(p != null){ drawProjects(p); + drawProjectsTree(p,slices); } {% endif %} }); @@ -106,6 +107,26 @@ $(document).ready(function() { $("div#home-project-list").html($( "<ul/>", { html: items.join( "" ) })); $("ul#dropdown-project-list").append(items.join( "" )); } + function drawProjectsTree(projects,slices) { + var items = []; + var items_sl = []; + $.each( projects, function(i, p) { + $.each( slices, function(y, s) { + console.log(escapeRegExp(p)); + if (s.match('^' + escapeRegExp(p))) { + items_sl.push( "<li><a href=\"/resources/" + s + "\">" + s.replace(p + '.','') + "</a></li>" ); + } + }); + el = "<li><a href=\"/portal/project/" + p + "\">" + p + "</a>"; + if (items_sl.length > 0) { + el += "<ul>" + items_sl.join( "" ) + "</ul>"; + } + el += "</li>"; + items.push(el); + items_sl = []; + }); + $("div#home-project-tree").html($( "<ul/>", { html: items.join( "" ) })); + } {% endif %} {% endif %} jQuery('[title!=""]').qtip(); diff --git a/portal/templates/fed4fire/fed4fire_home-view.html b/portal/templates/fed4fire/fed4fire_home-view.html index 53f353c2..1e69db3c 100644 --- a/portal/templates/fed4fire/fed4fire_home-view.html +++ b/portal/templates/fed4fire/fed4fire_home-view.html @@ -6,112 +6,99 @@ {% widget '_widget-news.html' %} </div> --> {% if username %} + {% block head %} -<script type="text/javascript" src="https://java.com/js/dtjava.js"/> -<script type="text/javascript"> -</script> +<script type="text/javascript" src="https://java.com/js/dtjava.js"></script> {% endblock head %} {% widget "_widget-no_credentials.html" %} <div class="container dashboard"> <div class="row"> + <div class="col-md-12"> {%if 'no_creds' in user_cred %} <p class="command"><a href="#" style="color:red" data-toggle="modal" data-target="#myModal">NO CREDENTIALS</a> are delegated to the portal!</p> {%endif%} {%if 'creds_expired' in user_cred %} <p class="command"><a href="#" style="color:red" data-toggle="modal" data-target="#myModal">EXPIRED CREDENTIALS</a> Please delegate again your credentials to the portal!</p> {%endif%} - <div class="col-md-3"> - <h3> - EXPERIMENT - </h3> - <div> - <a href="/portal/slice_request"><img src="{{ STATIC_URL }}img/icon_slices.png" alt="" /></a> - </div> - <div> - <button id="slicerequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-plus"></span> Create slice</button> - </div> - <div> - <p><strong>Your slices </strong> - <span title="A slice is a set of testbed resources on which you can conduct an experiment. - Either ask your colleagues to give you access to an existing slice or request a new slice by clicking 'Request Slice'. - However, on the Fed4FIRE portal, you will only see slices that you have created through Fed4FIRE. If you have created slices elsewhere, - those slices will not appear here." - class="glyphicon glyphicon-info-sign"> - </span> - - </p> - </div> - <div> - <div id="home-slice-list"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading Slices" /></div> - </div> - <h3 title="Some tools do their own slice creation and management.">Experiment now</h3> - <a class="btn btn-primary" id="webstart-button" style="width: 150px;" + </div> + </div> + <div class="row"> + <div class="col-sm-4"> + <h3> + <a href="/portal/slice_request"><img src="{{ STATIC_URL }}img/icon_slices_small.png" alt="" /></a>EXPERIMENT + </h3> + + <div> + Your projects and slices + <span title="A <b>slice</b> is a set of testbed resources on which you can conduct an experiment. + Either ask your colleagues to give you access to an existing slice or request a new slice by clicking 'Request Slice'. + However, on the Fed4FIRE portal, you will only see slices that you have created through Fed4FIRE. If you have created slices elsewhere, + those slices will not appear here. <br /><br /> A <b>project</b> is a sub-authority under the responsability of your institution gathering users, + who will be able to create slices for their experiments." class="glyphicon glyphicon-info-sign"> </span> + </div> + + <div> + <div id="home-project-tree"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading projects" /></div> + </div> + <div> + <span class="glyphicon glyphicon-plus"></span> <a href="/portal/slice_request/">Create slice</a> + <span class="glyphicon glyphicon-cog"></span> <a href="/portal/project_request/">Create/Join project</a> + </div> + + <div> + <h3 title="Some tools do their own slice creation and management.">Experiment now</h3> + <a class="btn btn-primary" id="webstart-button" style="width: 150px;" href='http://jfed.iminds.be/releases/5.4-dev/r2314/webstart/experimenter/jfed-experimenter.jnlp' - title="Click here to start your experiment with jFed"> + title="Click here to start your experiment with jFed"> <span class="glyphicon glyphicon-cloud"></span> jFed</a> - </div> - <div class="col-md-3"> - <h3>MANAGEMENT</h3> - <div> - <a href="/portal/institution"><img src="{{ STATIC_URL }}img/icon_authority_color.png" alt="" /></a> - </div> - <div> - <button id="projectrequestbtn" type="button" class="btn btn-default" style="width:165px;"><span class="glyphicon glyphicon-plus"></span> Create/Join project</button> - </div> - <div> - <button id="validaterequestbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-ok"></span> Validate Requests</button> - </div> - <div> - <p><strong>Your projects </strong> - <span title="A project is a sub-authority under the responsability of your institution gathering users, who will be able to create slices for their experiments." - class="glyphicon glyphicon-info-sign"> - </span> - </p> - </div> - <div> - <div id="home-project-list"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading projects" /></div> - </div> - - </div> - <div class="col-md-3"> - <h3> - SUPPORT - </h3> - <div> - <a href="/portal/support"><img src="{{ STATIC_URL }}img/icon_support.png" alt="" /></a> - </div> - <div> - <button id="ticketbtn" type="button" class="btn btn-default"><span class="glyphicon glyphicon-envelope"></span> Contact</button> - </div> - <p></p> - <div> - <button id="statbtn" type="button" style="width: 170px;" class="btn btn-default"><span class="glyphicon glyphicon-stats" style="margin-right: 10px;"></span>Testbeds' status</button> - </div> - <div> - <button id="repbtn" type="button" style="width: 170px;" class="btn btn-default"><span class="glyphicon glyphicon-stats"></span>Testbeds' reputation</button> - </div> - </div> - - <div class="col-md-3"> - <h3> - ACCOUNT - </h3> - <div> - <a href="/portal/account/"><img src="{{ STATIC_URL }}img/icon_user_color.png" alt="" /></a> - </div> - <div> - <button id="logoutbtn" type="button" class="btn btn-default" data-username="{{ username }}"><span class="glyphicon glyphicon-off"></span> Logout</button> - </div> - <div> - {% if person.last_name %} - {{person.first_name}} {{person.last_name}}<br /> - {% endif %} - <span class="label">Username:</span> <a href='/portal/account/' title="Click here to see and edit your account details.">{{person.email}}</a> - </div> - </div> - </div> - + </div> + </div> + <div class="col-sm-4"> + <div class="row"> + <h3> + <a href="/portal/account/"><img src="{{ STATIC_URL }}img/icon_user_small.png" alt="" /></a>ACCOUNT + </h3> + + <div> + <button id="logoutbtn" type="button" class="btn btn-default" data-username="{{ username }}"><span class="glyphicon glyphicon-off"></span> Logout</button> + </div> + <div> + {% if person.last_name %} + {{person.first_name}} {{person.last_name}}<br /> + {% endif %} + <span class="label">Username:</span> <a href='/portal/account/' title="Click here to see and edit your account details.">{{person.email}}</a> + </div> + </div> + <div class="row"> + <h3> + <a href="/portal/institution"><img src="{{ STATIC_URL }}img/icon_authority_color_small.png" alt="" /></a>MANAGEMENT + </h3> + + <div> + <span class="glyphicon glyphicon-ok"></span> <a href="/portal/institution#requests">Validate Requests</a> + </div> + </div> + </div> + <div class="col-sm-4"> + <div class="row"> + <h3> + <a href="/portal/support"><img src="{{ STATIC_URL }}img/icon_support_small.png" alt="" /></a>SUPPORT + </h3> + <p> + <span class="glyphicon glyphicon-envelope"></span> <a href="/portal/contact/">Contact</a> + </p> + <p> + <span class="glyphicon glyphicon-stats"></span> <a target="_blank" href="https://flsmonitor.fed4fire.eu">Testbeds' status</a> + </br /> + <span class="glyphicon glyphicon-stats"></span> <a href="/portal/reputation">Testbeds' reputation</a> + </p> + + </div> + + + </div> + </div> </div> {% else %} <div class="container-fluid home"> @@ -163,29 +150,7 @@ $('div.home-panel').hide(); $('div#'+$(this).data('panel')).show(); }); - $('button#validaterequestbtn').click(function() { - window.location="/portal/institution#requests"; - }); - $('button#ticketbtn').click(function() { - window.location="/portal/contact/"; - }); - $('button#statbtn').click(function() { - window.location="https://flsmonitor.fed4fire.eu"; - }); - $('button#repbtn').click(function() { - window.location="/portal/reputation"; - }); - $('button#signupbtn').click(function() { - window.location="/portal/register/"; - }); - $('button#slicerequestbtn').click(function() { - window.location="/portal/slice_request/"; - }); - $('button#projectrequestbtn').click(function() { - window.location="/portal/project_request/"; - }); - - myslice.loadSlices(); + }); </script> @@ -206,7 +171,5 @@ for jfed tool } </script> --> -{# widget "_widget-monitor.html" #} -{# widget "_widget-stats-top-slices.html" #} {% endblock %}