resource and list views
authorCiro Scognamiglio <ciro.scognamiglio@cslash.net>
Wed, 26 Feb 2014 19:07:59 +0000 (20:07 +0100)
committerCiro Scognamiglio <ciro.scognamiglio@cslash.net>
Wed, 26 Feb 2014 19:07:59 +0000 (20:07 +0100)
myslice/urls.py
portal/sliceview.py
portal/static/css/onelab.css
portal/static/js/myslice-ui.js
portal/templates/onelab/onelab_slice-view.html
portal/templates/onelab/onelab_testbed-list.html
portal/templates/onelab/onelab_widget-slice-sections.html [new file with mode: 0644]
portal/testbedlist.py

index 68d3a94..e5e100c 100644 (file)
@@ -71,7 +71,8 @@ urls = [
     #
     #
     # Portal
-    (r'^testbeds/?$', portal.testbedlist.TestbedList.as_view()),
+    (r'^testbeds/(?P<slicename>[^/]+)/?$', portal.testbedlist.TestbedList.as_view()),
+    (r'^resources/(?P<slicename>[^/]+)/?$', portal.sliceview.SliceView.as_view()),
     (r'^slice/(?P<slicename>[^/]+)/?$', portal.sliceview.SliceView.as_view()),
     url(r'^portal/', include('portal.urls')),
 ]
index b19ead9..6b74fb1 100644 (file)
@@ -20,4 +20,4 @@ class SliceView (LoginRequiredView, ThemeView):
     template_name = "slice-view.html"
     
     def get(self, request, slicename):
-        return render_to_response(self.template, {"slice": slicename, "theme": self.theme, "username": request.user}, context_instance=RequestContext(request))
+        return render_to_response(self.template, {"slice": slicename, "theme": self.theme, "username": request.user, "section":"resources"}, context_instance=RequestContext(request))
index 260f749..160cac2 100644 (file)
@@ -48,7 +48,7 @@ span.label {
 }
 /* HEADER */
 div#header {
-    height:100px;
+    height:85px;
     background-color:white;
 }
 
@@ -239,8 +239,23 @@ div.well {
 .btn.btn-default:hover {
     font-weight: bold;
 }
-
-
+/**/
+/* TABLE */
+table.table {
+    margin:0;
+}
+table.table thead {
+    padding:0;
+}
+table.table tbody {
+    padding:0;
+}
+table.table tr {
+    padding:0;
+}
+table.table td {
+    padding:0;
+}
 /* INSTITUTION */
 div#institution {
     color:black;
@@ -304,6 +319,75 @@ div#slice-view a.list-group-item p.list-group-item-text {
     font-style:italic;
 }
 
+/* SLICE VIEW sections */
+.slice-sections, .slice-pending {
+    margin:0;
+    padding:0;
+}
+.slice-sections ul, .slice-pending ul {
+    margin:0;
+    padding:0;
+}
+.slice-pending ul {
+    width:400px;
+    margin:0 auto 15px auto;
+}
+.slice-sections li {
+    text-align:left;
+    margin:0;
+    padding:0;
+}
+.slice-pending li {
+    padding-right:15px;
+}
+.slice-sections li a, .slice-pending li a {
+    font-size:14px;
+    color:black;
+    padding:0;
+    margin-top:10px;
+}
+.slice-sections li.active a, .slice-pending li.active a  {
+    color:#201E62;
+    background-color:#EFEFEF;
+    text-decoration:underline;
+    padding:0;
+}
+.slice-sections ul.nav-pills li a:hover, .slice-pending ul.nav-pills li a:hover {
+    text-decoration:underline;
+    background-color:#EFEFEF;
+    color:black;
+}
+.slice-sections ul.nav-pills li.active, .slice-pending ul.nav-pills li.active {
+
+}
+.slice-sections li:first-child, .slice-sections li:first-child a {
+    color:#201E62;
+    font-weight:bold;
+}
+.slice-experiment {
+    text-align:right;
+    padding:0;
+}
+.slice-experiment button {
+    margin:3px 0 0 0;
+    background-color:#CC4125;
+    color:white;
+}
+
+.slice-pending {
+}
+.slice-pending button {
+    font-size:9pt;
+    margin:8px 0 0 0;
+    padding:3px 5px;
+}
+.slice-pending button.apply {
+}
+.slice-pending button.clear {
+}
+
+/* */
+
 /* TESTBED LIST */
 div#testbed-list {
     margin:25px auto;
index b60c7c1..b6b7ca5 100644 (file)
@@ -35,18 +35,19 @@ $(document).ready(function() {
        });
        
        
-       oTable.load("/list/resource", {}, function(data) {
+       oTable.load("/table/resource/", {'columns' : ['hostname','country','type'], 'filters' : { 'country' : 'France' } }, function(data) {
                $(this).dataTable( {
-                       "bScrollInfinite": true,
+                       "sScrollY": window.innerHeight - 275,
+                       "sDom": "frtiS",
                "bScrollCollapse": true,
-               "sScrollY": "500px",
                "bStateSave": true,
                "bPaginate": false,
                "bLengthChange": false,
-               "bFilter": true,
+               "bFilter": false,
                "bSort": true,
                "bInfo": false,
-               "bAutoWidth": false
+               "bAutoWidth": true,
+               "bAutoHeight": false
                } );
        });
 } );
index a50530d..0990a4d 100644 (file)
@@ -3,16 +3,8 @@
 {% block unfold_main %}
 <div id="slice-view">  
        <div class="col-md-2">
-               <div id="select-platform" class="list-group"></div>
-
-               <div class="list-group">
-                       
-                 <a href="#" class="list-group-item active">
-                       <span class="badge">14</span>
-                   Reserved
-                 </a>
-                 <a href="#" class="list-group-item">Available</a>
-               </div>
+               <div id="select-platform" class="list-group">
+               </div>
                        
                <ul class="list-group">
                  <li class="list-group-item">Filter: CPU</li>
 
        </div>
        <div class="col-md-10">
-               <ul class="nav nav-tabs">
-                 <li class="active"><a href="#">Resources</a></li>
-                 <li><a href="#"></a></li>
-                 <li><a href="#"></a></li>
-               </ul>
-               <table cellpadding="0" cellspacing="0" border="0" class="table table-bordered" id="objectList"></table>
+               <div class="row">
+                       {% include theme|add:"_widget-slice-sections.html" %}
+               </div>
+               <div class="row slice-pending">
+                       <ul class="nav nav-pills">
+                               <li><a href="">Unreserved<span class="badge">42</span></a></li>
+                               <li><a href="">Reserved</a></li>
+                               <li><a href="">Pending</a></li>
+                               <li>
+                                       <button type="button" class="btn btn-primary apply">Apply</button>
+                                       <button type="button" class="btn btn-default clear">Clear</button>
+                               </li>
+                       </ul>
+               </div>
+               <div class="row">
+                       <ul class="nav nav-tabs">
+                         <li class="active"><a href="#">Resources</a></li>
+                         <li><a href="#"></a></li>
+                         <li><a href="#"></a></li>
+                       </ul>
+               </div>
+               <table cellpadding="0" cellspacing="0" border="0" class="table" id="objectList"></table>
        </div>
 </div>
 {% endblock unfold_main %}
\ No newline at end of file
index 5c424e0..546fd88 100644 (file)
@@ -1,12 +1,20 @@
 {% extends "layout-unfold1.html" %}
 
 {% block unfold_main %}
-<div class="wrapper" id="testbed-list">
-<h1><img src="{{ STATIC_URL }}img/icon_testbed_small.png" alt="Open a Ticket" /> Testbeds</h1>
-
-<p>
-       
-</p>
-       <table cellpadding="0" cellspacing="0" border="0" class="table" id="testbedList"></table>
+<div id="testbed-list">
+       <div class="col-md-2"></div>
+       <div class="col-md-10">
+               <div class="row">
+                       {% include theme|add:"_widget-slice-sections.html" %}
+               </div>
+               <div class="row">
+                       <ul class="nav nav-tabs">
+                         <li class="active"><a href="#">Testbeds</a></li>
+                         <li><a href="#"></a></li>
+                         <li><a href="#"></a></li>
+                       </ul>
+               </div>
+               <table cellpadding="0" cellspacing="0" border="0" class="table" id="testbedList"></table>
+       </div>
 </div>
 {% endblock unfold_main %}
\ No newline at end of file
diff --git a/portal/templates/onelab/onelab_widget-slice-sections.html b/portal/templates/onelab/onelab_widget-slice-sections.html
new file mode 100644 (file)
index 0000000..ef008d6
--- /dev/null
@@ -0,0 +1,13 @@
+<div class="col-md-8 slice-sections">
+       <ul class="nav nav-pills nav-justified">
+               <li><a href="/resources/{{ slice }}/">{{ slice }}</a></li>
+               <li {% if section == 'testbeds' %}class="active"{% endif %}><a href="/testbeds/{{ slice }}/">Testbeds</a></li>
+               <li {% if section == 'resources' %}class="active"{% endif %}><a href="/resources/{{ slice }}/">Resources</a></li>
+               <li {% if section == 'users' %}class="active">{% endif %}><a href="/users/{{ slice }}/">Users</a></li>
+               <li><a href="">Statistics</a></li>
+               <li><a href="">Measurements</a></li>
+       </ul>
+</div>
+<div class="col-md-4 slice-experiment">
+       <a href="/portal/experiment"><button type="button" class="btn btn-default">Experiment</button></a>
+</div>
\ No newline at end of file
index 591a94b..a545ec4 100644 (file)
@@ -8,5 +8,5 @@ from theme import ThemeView
 class TestbedList (LoginRequiredView, ThemeView):
     template_name = "testbed-list.html"
     
-    def get(self, request):
-        return render_to_response(self.template, {"theme": self.theme, "username": request.user}, context_instance=RequestContext(request))
+    def get(self, request, slicename):
+        return render_to_response(self.template, {"theme": self.theme, "username": request.user, "slice" : slicename, "section":"testbeds"}, context_instance=RequestContext(request))