changeset 5940:69418cbd8285

admin: use jQuery DataTables for my & watched repos
author Mads Kiilerich <madski@unity3d.com>
date Mon, 23 May 2016 18:02:33 +0200
parents b8830c373681
children ff33bb5cf1e9
files kallithea/templates/admin/my_account/my_account_repos.html kallithea/templates/admin/my_account/my_account_watched.html
diffstat 2 files changed, 31 insertions(+), 204 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/templates/admin/my_account/my_account_repos.html	Thu May 21 16:48:13 2015 +0200
+++ b/kallithea/templates/admin/my_account/my_account_repos.html	Mon May 23 18:02:33 2016 +0200
@@ -1,107 +1,21 @@
 <div style="font-size: 20px; color: #666666; padding: 0px 0px 10px 0px">${_('Repositories You Own')}</div>
-<input class="q_filter_box" id="q_filter" size="15" type="text" name="filter"
-       placeholder="${_('quick filter...')}" value=""/>
 
-<div class="table-grid table yui-skin-sam" id="repos_list_wrap"></div>
-<div id="user-paginator" style="padding: 0px 0px 0px 20px"></div>
+<div class="table">
+    <table id="datatable_list_wrap"></table>
+</div>
 
 <script>
-function table_renderer(data){
-    var myDataSource = new YAHOO.util.DataSource(data);
-    myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
-
-    myDataSource.responseSchema = {
-        resultsList: "records",
-        fields: [
-            {key:"menu"},
-            {key:"raw_name"},
-            {key:"name"},
-            {key:"last_changeset"},
-            {key:"last_rev_raw"},
-            {key:"action"}
-            ]
-        };
-    myDataSource.doBeforeCallback = function(req,raw,res,cb) {
-        // This is the filter function
-        var data     = res.results || [],
-            filtered = [],
-            i,l;
-
-        if (req) {
-            req = req.toLowerCase();
-            for (i = 0; i<data.length; i++) {
-                var pos = data[i].raw_name.toLowerCase().indexOf(req);
-                if (pos != -1) {
-                    filtered.push(data[i]);
-                }
-            }
-            res.results = filtered;
-        }
-        return res;
-    }
-
-      // main table sorting
-      var myColumnDefs = [
-          {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
-          {key:"name",label:"${_('Name')}",sortable:true,
-              sortOptions: { sortFunction: nameSort }},
-          {key:"last_changeset",label:"${_('Tip')}",sortable:true,
-              sortOptions: { sortFunction: revisionSort }},
-          {key:"action",label:"${_('Action')}",sortable:false}
-      ];
-
-      var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,{
-        sortedBy:{key:"name",dir:"asc"},
-        paginator: YUI_paginator(50, ['user-paginator']),
-
-        MSG_SORTASC:"${_('Click to sort ascending')}",
-        MSG_SORTDESC:"${_('Click to sort descending')}",
-        MSG_EMPTY:"${_('No records found.')}",
-        MSG_ERROR:"${_('Data error.')}",
-        MSG_LOADING:"${_('Loading...')}"
-      }
-      );
-      myDataTable.subscribe('postRenderEvent',function(oArgs) {
-          tooltip_activate();
-          quick_repo_menu();
-      });
-
-      var filterTimeout = null;
-
-      updateFilter = function() {
-          // Reset timeout
-          filterTimeout = null;
-
-          // Reset sort
-          var state = myDataTable.getState();
-          state.sortedBy = {key:'name', dir:YAHOO.widget.DataTable.CLASS_ASC};
-
-          // Get filtered data
-          myDataSource.sendRequest(YUD.get('q_filter').value,{
-              success : myDataTable.onDataReturnInitializeTable,
-              failure : myDataTable.onDataReturnInitializeTable,
-              scope   : myDataTable,
-              argument: state
-          });
-
-      };
-      $('#q_filter').click(function(){
-          if(!$('#q_filter').hasClass('loaded')){
-              //TODO: load here full list later to do search within groups
-              $('#q_filter').addClass('loaded');
-          }
-      });
-
-      $('#q_filter').keyup(function(){
-          clearTimeout(filterTimeout);
-          filterTimeout = setTimeout(updateFilter,600);
-      });
-
-      if($('#q_filter').val()) {
-          updateFilter();
-      }
-
-    }
-
-table_renderer(${c.data |n});
+  var data = ${c.data|n};
+  var myDataTable = $("#datatable_list_wrap").DataTable({
+        data: data.records,
+        columns: [
+            {data: "menu", sortable: false, className: "quick_repo_menu hidden", searchable: false},
+            {data: "raw_name", "visible": false, searchable: false},
+            {data: "name", "orderData": 1, title: "${_('Name')}"},
+            {data: "last_rev_raw", "visible": false, searchable: false},
+            {data: "last_changeset", "orderData": 3, title: "${_('Tip')}", searchable: false},
+            {data: "action", title: "${_('Action')}", sortable: false, searchable: false}
+        ],
+        order: [[2, "asc"]]
+    });
 </script>
--- a/kallithea/templates/admin/my_account/my_account_watched.html	Thu May 21 16:48:13 2015 +0200
+++ b/kallithea/templates/admin/my_account/my_account_watched.html	Mon May 23 18:02:33 2016 +0200
@@ -1,107 +1,20 @@
 <div style="font-size: 20px; color: #666666; padding: 0px 0px 10px 0px">${_('Repositories You are Watching')}</div>
-<input class="q_filter_box" id="q_filter" size="15" type="text" name="filter"
-       placeholder="${_('quick filter...')}" value=""/>
 
-<div class="table-grid table yui-skin-sam" id="repos_list_wrap"></div>
-<div id="user-paginator" style="padding: 0px 0px 0px 20px"></div>
+<div class="table">
+    <table id="datatable_list_wrap"></table>
+</div>
 
 <script>
-function table_renderer(data){
-    var myDataSource = new YAHOO.util.DataSource(data);
-    myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
-
-    myDataSource.responseSchema = {
-        resultsList: "records",
-        fields: [
-            {key:"menu"},
-            {key:"raw_name"},
-            {key:"name"},
-            {key:"last_changeset"},
-            {key:"last_rev_raw"},
-            {key:"action"}
-            ]
-        };
-    myDataSource.doBeforeCallback = function(req,raw,res,cb) {
-        // This is the filter function
-        var data     = res.results || [],
-            filtered = [],
-            i,l;
-
-        if (req) {
-            req = req.toLowerCase();
-            for (i = 0; i<data.length; i++) {
-                var pos = data[i].raw_name.toLowerCase().indexOf(req);
-                if (pos != -1) {
-                    filtered.push(data[i]);
-                }
-            }
-            res.results = filtered;
-        }
-        return res;
-    }
-
-      // main table sorting
-      var myColumnDefs = [
-          {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
-          {key:"name",label:"${_('Name')}",sortable:true,
-              sortOptions: { sortFunction: nameSort }},
-          {key:"last_changeset",label:"${_('Tip')}",sortable:true,
-              sortOptions: { sortFunction: revisionSort }},
-          {key:"action",label:"${_('Action')}",sortable:false}
-      ];
-
-      var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,{
-        sortedBy:{key:"name",dir:"asc"},
-        paginator: YUI_paginator(50, ['user-paginator']),
-
-        MSG_SORTASC:"${_('Click to sort ascending')}",
-        MSG_SORTDESC:"${_('Click to sort descending')}",
-        MSG_EMPTY:"${_('No records found.')}",
-        MSG_ERROR:"${_('Data error.')}",
-        MSG_LOADING:"${_('Loading...')}"
-      }
-      );
-      myDataTable.subscribe('postRenderEvent',function(oArgs) {
-          tooltip_activate();
-          quick_repo_menu();
-      });
-
-      var filterTimeout = null;
-
-      updateFilter = function() {
-          // Reset timeout
-          filterTimeout = null;
-
-          // Reset sort
-          var state = myDataTable.getState();
-          state.sortedBy = {key:'name', dir:YAHOO.widget.DataTable.CLASS_ASC};
-
-          // Get filtered data
-          myDataSource.sendRequest(YUD.get('q_filter').value,{
-              success : myDataTable.onDataReturnInitializeTable,
-              failure : myDataTable.onDataReturnInitializeTable,
-              scope   : myDataTable,
-              argument: state
-          });
-
-      };
-      $('#q_filter').click(function(){
-          if(!$('#q_filter').hasClass('loaded')){
-              //TODO: load here full list later to do search within groups
-              $('#q_filter').addClass('loaded');
-          }
-      });
-
-      $('#q_filter').keyup(function(){
-          clearTimeout(filterTimeout);
-          filterTimeout = setTimeout(updateFilter,600);
-      });
-
-      if($('#q_filter').val()) {
-          updateFilter();
-      }
-
-    }
-
-table_renderer(${c.data |n});
+  var data = ${c.data|n};
+  var myDataTable = $("#datatable_list_wrap").DataTable({
+        data: data.records,
+        columns: [
+            {data: "menu", sortable: false, className: "quick_repo_menu hidden", searchable: false},
+            {data: "raw_name", "visible": false, searchable: false},
+            {data: "name", "orderData": 1, title: "${_('Name')}"},
+            {data: "last_rev_raw", "visible": false, searchable: false},
+            {data: "last_changeset", "orderData": 3, title: "${_('Tip')}", searchable: false},
+        ],
+        order: [[2, "asc"]]
+    });
 </script>