New navbar logo design along with css changes
[flowspy] / templates / user_routes.html
index 3ae9347..e172500 100644 (file)
@@ -4,19 +4,21 @@
 {% if user.is_authenticated %}
 <script type="text/javascript" src="{% url load-js 'poller' %}"></script>
 {% endif %}
-<script type="text/javascript" src="/static/js/jquery.dataTables.js"></script>
-<link rel="stylesheet" type="text/css" href="/static/css/engage.itoggle.css"/>
-<script type="text/javascript" src="/static/js/engage.itoggle-min.js"></script>
+<script type="text/javascript" src="/fodstatic/js/jquery.dataTables.js"></script>
+<script type="text/javascript" src="/fodstatic/js/datatables_bootstrap.js"></script>
+
 <script type="text/javascript">
+
 $(document).ready(function(){
+       $('[rel=tooltip]').tooltip();
     $("#hid_mid").val('');
     $('#dialog').dialog({
-        height: 220,
-        width: 300,
+        height: 250,
+        width: 340,
         modal: true,
         autoOpen: false,
         buttons: {
-            'Delete': function(){
+            '{% trans "Suspend" %}': function(){
                 route = $('#route_to_delete').text();
                 route_url_id = '#del_route_' + route;
                 url = $(route_url_id).attr('href');
@@ -29,11 +31,9 @@ $(document).ready(function(){
                     }
                 });
             },
-            Cancel: function(){
+            '{% trans "Cancel" %}': function(){
                 $('#dialog').dialog('close');
             },
-        
-        
         },
         close: function(){
             update_val = $("#hid_mid").val();
@@ -48,6 +48,7 @@ $(document).ready(function(){
         width: 800,
         modal: true,
         autoOpen: false,
+               overlay: { opacity: 0.5, background: 'black'},
         close: function(){
             update_val = $("#hid_mid").val();
             if (update_val == 'UPDATED') {
@@ -56,9 +57,36 @@ $(document).ready(function(){
             }
         }
     });
-    
+    $('#console').parent().css('opacity', 0.9);
+       $('#console').parent().css('filter', 'alpha(opacity=90)');
+       $(".button_place #routebutton").button({
+        icons: {
+            primary: "ui-icon-circle-plus"
+        },
+    });
+    $(".edit_button").button({
+        icons: {
+            primary: "ui-icon-wrench"
+        },
+    }).css('margin-bottom','2px');
+    $(" .del_button").button({
+        icons: {
+            primary: "ui-icon-circle-close"
+        },
+    }).click(function(){
+        $('#dialog').dialog('open');
+        return false;
+    });
+    $("#consolebutton").button().click(function(){
+        $("#consolebutton").stop().stop();
+        $('#console').dialog('open');
+        return false;
+    });
+
+
     var oTable = $('#routes_table').dataTable({
-        "bJQueryUI": true,
+       "sPaginationType": "bootstrap",
+       "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
         "aoColumns": [{
             "bVisible": false,
             "bSearchable": false,
@@ -90,94 +118,73 @@ $(document).ready(function(){
             "bSortable": false
         }],
         "aaSorting": [[0, 'desc']],
-        "oLanguage": {
-            "sLengthMenu": '{% trans "Display" %} <select><option value="25">25</option><option value="50">50</option><option value="-1">{% trans "All" %}</option></select> rules'
-        },
         "iDisplayLength": 25,
+        "oSearch": {"bSmart": false, "bRegex":true},
+        "oLanguage": {
+               "sLengthMenu": '{% trans "Display" %} <select><option value="25">25</option><option value="50">50</option><option value="-1">{% trans "All" %}</option></select> {% trans "rules" %}',
+            "sProcessing":   "Processing...",
+            "sZeroRecords": '{% trans "No records to display" %}',
+            "sInfo":         "Showing _START_ to _END_ of _TOTAL_ entries",
+            "sInfoEmpty":    "{% trans "Showing 0 to 0 of 0 entries" %}",
+            "sInfoFiltered": "(filtered from _MAX_ total entries)",
+            "sInfoPostFix":  "",
+            "sSearch":       '{% trans "Search:" %}',
+            "sUrl":          "",
+            "oPaginate": {
+                "sFirst":    '{% trans "First" %}',
+                "sPrevious": '{% trans "Previous" %}',
+                "sNext":     '{% trans "Next" %}',
+                "sLast":     '{% trans "Last" %}'
+            }
+        }
     });
-    
+
     oTable.fnDraw();
     
-    $('input[name="status_filter"]').click(function(){
-    
-        //slice off the last '|' or it doesn't work
-        //also be sure to use the third parameter
-    });
-    
-    $(".button_place #routebutton").button({
-        icons: {
-            primary: "ui-icon-circle-plus"
-        },
-    });
-    $(".edit_button").button({
-        icons: {
-            primary: "ui-icon-wrench"
-        },
-    }).css('width','100px');;
-    $(" .del_button").button({
-        icons: {
-            primary: "ui-icon-circle-close"
-        },
-    }).click(function(){
-        $('#dialog').dialog('open');
-        return false;
-    }).css('width','100px');
-    $("#consolebutton").button({
-        icons: {
-            primary: "ui-icon-image"
-        },
-    }).click(function(){
-        $("#consolebutton").stop().stop();
-        $("#consolebutton").css('color', '#555555');
-        $('#console').dialog('open');
-        return false;
-    });
-    
-    $(".expiresclass").tooltip();
-       $(".commentclass").tooltip();
     var reg_exp = '';
     var checkboxs = document.getElementsByName('status_filter');
     for (var i = 0, inp; inp = checkboxs[i]; i++) {
         checkCookie = readCookie("cookie_" + inp.value);
         if (checkCookie) {
             if (checkCookie == 'true') {
-                $(inp).attr('checked', true);
+                $(inp).addClass('active');
             }
             else {
-                $(inp).attr('checked', false);
+                $(inp).removeClass('active');
             }
         }
         
-        if (inp.type.toLowerCase() == 'checkbox' && inp.checked == true) {
+        if (inp.type.toLowerCase() == 'button' && $(inp).hasClass('active')) {
             reg_exp = reg_exp + inp.value + '|';
         }
         
     }
        if (reg_exp == '') {
-            reg_exp = 'X|'
+            reg_exp = '|'
         }
     oTable.fnFilter(reg_exp.slice(0, -1), 4, true);
     
-    $('input[name="status_filter"]').iToggle({
-        type: 'checkbox',
-        onSlide: function(){
-            var reg_exp = '';
-            var checkboxs = document.getElementsByName('status_filter');
-            
-            for (var i = 0, inp; inp = checkboxs[i]; i++) {
-                if (inp.type.toLowerCase() == 'checkbox' && inp.checked) {
-                    reg_exp = reg_exp + inp.value + '|';
-                }
-                createCookie("cookie_" + inp.value, inp.checked, 30);
-            }
-            //passing an empty string will result in no filter
-            //thus, it must be set to something that will not exist in the column
-            if (reg_exp == '') {
-                reg_exp = 'X|'
+    
+    $('button[name="status_filter"]').click(function(){
+       var reg_exp = '';
+        var checkboxs = document.getElementsByName('status_filter');
+        $(this).button('toggle');
+        for (var i = 0, inp; inp = checkboxs[i]; i++) {
+            if (inp.type.toLowerCase() == 'button' && $(inp).hasClass('active')) {
+                reg_exp = reg_exp + inp.value + '|';
             }
-            oTable.fnFilter(reg_exp.slice(0, -1), 4, true);
-        },
+            createCookie("cookie_" + inp.value, $(inp).hasClass('active'), 30);
+        }
+        //passing an empty string will result in no filter
+        //thus, it must be set to something that will not exist in the column
+        if (reg_exp == '') {
+            reg_exp = '|'
+        }
+        oTable.fnFilter(reg_exp.slice(0, -1), 4, regex=true);
+        return false;
     });
+
+    
 });
                
 function delete_route(route){
@@ -198,64 +205,43 @@ function delete_route(route){
        .message {
                font-family: monospace !important;
        }
-       .tooltip {
-       display:none;
-       background:transparent url(/static/black_arrow.png);
-       font-size:12px;
-       height:70px;
-       width:160px;
-       padding:25px;
-       color:#fff;     
-}
+       
        
 </style>
 {% endblock %}
 {% block title %}{% trans "My rules" %}{% endblock %}
 {% block content %}
+{% csrf_token %}
+<div class="row-fluid">
+<div class="span2">
 <div style="float:left">
-       <h3 style="margin-top: 0px;">{% trans "My rules" %}</h3>
+       <h4>{% trans "My rules" %}</h4>
 </div>
+</div>
+
+<div class="span10">
 <div class='button_place' style="float:right">
-       <button id="consolebutton">Console</button> <a href="{% url add-route %}" id="routebutton">Add Rule</a>
+       <button id="consolebutton" class="btn btn-small btn-inverse">
+               <i class="icon-tasks icon-white" style="align:left;"></i>{% trans "Console" %}</button>
+               <a href="{% url add-route %}" id="routebutton" class="btn btn-small btn-inverse"><i class="icon-plus-sign icon-white"></i>{% trans "Add Rule" %}</a>
+</div>
 </div>
-<br><br>
+</div>
+<hr>
+<div class="row-fluid" style="padding-top:30px;">
 
-<div id='itoggle'>
-<table cellpadding="0" cellspacing="0" border="0" class="display" style='width:200px;'>
-                               <tbody>
-                                       <tr>
-                                       <th>ACTIVE</th><th>SUSPENDED</th><th>EXPIRED</th><th>ADMINDISABLED</th><th>ERROR</th><th>PENDING</th>
-                                       </tr>
-                                       <tr class="on_off">
-                                       <td>
-                                           <input type="checkbox" class="onoff" name="status_filter" value="ACTIVE" checked id="show_active"/>
-                                       </td>
-                                   
-                                       <td>
-                                           <input type="checkbox" class="onoff" name="status_filter" value="SUSPENDED" checked id="show_inactive"/>
-                                       </td>
-                                  
-                                       <td>
-                                           <input type="checkbox" class="onoff" name="status_filter" value="EXPIRED" id="show_expired"/>
-                                       </td>
-                                   
-                                       <td>
-                                           <input type="checkbox" class="onoff" name="status_filter" value="ADMINDISABLED" id="show_admininactive"/>
-                                       </td>
-                                   
-                                       <td>
-                                           <input type="checkbox" class="onoff" name="status_filter" value="ERROR" id="show_error"/>
-                                       </td>
-                                  
-                                       <td>
-                                           <input type="checkbox" class="onoff" name="status_filter" value="PENDING" checked id="show_pending"/>
-                                       </td>
-                                   </tr>
-                               </tbody>
-                       </table>
+<div id='itoggle' class="span12" style="text-align:center;">
+   <div class="btn-group" data-toggle="buttons-checkbox">
+    <button type="button" class="btn btn-small" name="status_filter" value="ACTIVE" id="show_active">Active</button>
+    <button type="button" class="btn btn-small" name="status_filter" value="SUSPENDED" id="show_inactive">Suspended</button>
+    <button type="button" class="btn btn-small" name="status_filter" value="ERROR" id="show_error">Error</button>
+    <button type="button" class="btn btn-small" name="status_filter" value="PENDING" id="show_pending">Pending</button>
+    </div>
                        </div>
-       <table class="display" width="100%" id="nodes_table">
-<table class="display" width="100%" id="routes_table">
+
+</div>
+
+<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" width="100%" id="routes_table">
 <thead>
 <tr>
        <th>Id</th>
@@ -276,37 +262,58 @@ function delete_route(route){
 
 <tr class="GradeC" >
        <td>{{ route.pk }}</td>
-       <td><span {% if route.comments %}
-       class="commentclass" 
-               style="border-bottom:1px dotted red;" 
-        title="{{route.comments}}"
-               {% endif %}>{{ route.name }}</span></td>
+       <td><span {% if route.comments %} class="commentclass" style="border-bottom:1px dotted red;" title="{{route.comments}}" {% endif %}>{{ route.name }}</span></td>
        <td>{{ route.get_match|safe|escape }}</td>
        <td style="text-align: center;">{{route.get_then|safe|escape}}</td>
-       <td style="text-align: center; ">{% ifequal route.status 'INACTIVE' %}SUSPENDED{% else %}{% ifequal route.status 'ADMININACTIVE' %}ADMINDISABLED{% else %}{{route.status}}{% endifequal %}{% endifequal %}</td>
+       <td style="text-align: center; ">{% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%}
+               <a href="#" rel="tooltip" 
+                       {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%}  
+                       data-placement="top" 
+                       title = "{% ifequal route.status 'INACTIVE' %}
+                                               {% trans 'Suspended by user' %}
+                                        {% else %}
+                                               {% ifequal route.status 'ADMININACTIVE' %}
+                                                       {% trans 'Suspended by administrator' %}
+                                               {% else %}
+                                                       {% ifequal route.status 'EXPIRED' %}
+                                                               {% trans 'Suspended due to expiration' %}
+                                                       {% else %}
+                                                               {% ifequal route.status 'OUTOFSYNC' %}
+                                                                       {% trans 'Syncronization error. Configuration in device deffers from rule' %}
+                                                               {% endifequal %}
+                                                       {% endifequal %}
+                                               {% endifequal %}
+                                        {% endifequal %}"
+                       {% endif %}>{% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' %}SUSPENDED{% else %}{% if route.status == 'OUTOFSYNC' %}ERROR{% else %}{{route.status}}{% endif %}{% endif %}</a>
+               {% else %}{{route.status}}{% endif %}</td>
        {% comment %}<td style="text-align: center;">{{ route.response }}</td>{% endcomment %}
        <td style="text-align: center;">{{ route.applier }}</td>
-       <td style="text-align: center;"><span {% if route.days_to_expire %}
+       <td style="text-align: center;">
+               <span {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' or route.status == 'OUTOFSYNC'%}{% else %}{% if route.days_to_expire %}
                class="expiresclass" 
                style="border-bottom:2px dashed red;" 
         title="Expires {% ifequal route.days_to_expire '0' %}today{% else%}in {{route.days_to_expire}} day{{ route.days_to_expire|pluralize }}{% endifequal %}"
-               {% endif %}>{{ route.expires }}</span></td>
-       <td style="text-align: center;">{{ route.response }}</td>
+               {% endif %}{% endif %}>{{ route.expires }}</span></td>
+       <td style="text-align: center;">{% if route.status == 'EXPIRED' %}{% trans "Rule expired" %}{% else %}{% if route.status == 'ADMININACTIVE' %}{% trans "Suspended by administrator" %}{% else %}{% if route.status == 'INACTIVE' %}{% trans "Suspended by user" %}{% else %}{{ route.response }}{% if route.status == 'PENDING' %}<img src="/fodstatic/dots.gif">{% endif %}{% endif %}{% endif %}{% endif %}</td>
        <td style="text-align: center; width:180px;">
                {% ifequal route.status 'ACTIVE' %}
-               <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">Edit</a> 
-               <button class="del_button" id="{{route.name}}" onclick="javascript:delete_route(this.id)">Suspend</button>
-               <a href="{% url delete-route route.name %}" style="display:none" id="del_route_{{route.name}}"></a>
+               <a href="{% url edit-route route.name %}" class="edit_button btn btn-small" id="edit_button_{{route.pk}}">{% trans "Edit" %}</a> 
+               <button class="del_button btn btn-small" id="{{route.name}}" onclick="javascript:delete_route(this.id)">{% trans "Suspend" %}</button>
+               <a href="{% url delete-route route.name %}" style="display:none" id="del_route_{{route.name}}" class="btn btn btn-danger btn-small"></a>
                {% else %}
-               {% ifequal route.status 'INACTIVE' %}
-               <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">Reactivate</a>
+               {% if route.status == 'EXPIRED' or route.status == 'ADMININACTIVE' or route.status == 'INACTIVE' %}
+               <a href="{% url edit-route route.name %}" class="edit_button btn btn-small" id="edit_button_{{route.pk}}">{% trans "Reactivate" %}</a>
                {% else %}
                {% ifequal route.status 'OUTOFSYNC' %}
-               <a href="{% url edit-route route.name %}" class="edit_button" id="edit_button_{{route.pk}}">ReSync</a>
+               <a href="{% url edit-route route.name %}" class="edit_button btn btn-small" id="edit_button_{{route.pk}}">{% trans "ReSync" %}</a>
+               {% else %}
+               {% ifequal route.status 'ERROR' %}
+               <a href="{% url edit-route route.name %}" class="edit_button btn btn-small" id="edit_button_{{route.pk}}">{% trans "Fix it!" %}</a>
                {% else %}
                -
                {% endifequal %}
                {% endifequal %}
+               {% endif %}
                {% endifequal %}
                </td>
 </tr>
@@ -314,13 +321,12 @@ function delete_route(route){
 {% endfor %}
 </tbody>
 </table>
-
-<div id="dialog" title="Delete Route">
-               <p>You are about to delete rule <strong><span id="route_to_delete"></span></strong></p>
-               <p>Deleting the rule will automatically remove the configuration from the network and mark this route as inactive.</p>
-               <p>Are you sure you want to proceed?</p>
+<div id="dialog" title="{% trans "Suspend Rule" %}">
+               <p>{% blocktrans %}You are about to suspend rule{% endblocktrans %} <strong><span id="route_to_delete"></span></strong></p>
+               <p>{% blocktrans %}Suspending the rule will automatically remove the configuration from the network and mark this rule as inactive.{% endblocktrans %}</p>
+               <p>{% blocktrans %}Are you sure you want to proceed?{% endblocktrans %}</p>
 </div>
-<div id="console" title="Console">
+<div id="console" title="{% trans "Console" %}">
                                        {% include "poll.html" %}
 </div>
 {% endblock %}