소스 검색

HUE-2535 [oozie] Running jobs filter does not show jobs in dashboard

Fixed the filters for workflows, dashboards and bundles
Enrico Berti 11 년 전
부모
커밋
309402595d

+ 1 - 1
apps/oozie/src/oozie/templates/dashboard/list_oozie_bundle.mako

@@ -293,7 +293,7 @@ ${ layout.menubar(section='bundles', dashboard=True) }
   </div>
   </div>
 </div>
 </div>
 
 
-<script src="/oozie/static/js/bundles.utils.js" type="text/javascript" charset="utf-8"></script>
+<script src="/oozie/static/js/dashboard-utils.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/codemirror-3.11.js"></script>
 <script src="/static/ext/js/codemirror-3.11.js"></script>
 <link rel="stylesheet" href="/static/ext/css/codemirror.css">
 <link rel="stylesheet" href="/static/ext/css/codemirror.css">

+ 8 - 31
apps/oozie/src/oozie/templates/dashboard/list_oozie_bundles.mako

@@ -132,7 +132,7 @@ ${layout.menubar(section='bundles', dashboard=True)}
   </div>
   </div>
 </div>
 </div>
 
 
-<script src="/oozie/static/js/bundles.utils.js" type="text/javascript" charset="utf-8"></script>
+<script src="/oozie/static/js/dashboard-utils.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/datatables-paging-0.1.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/datatables-paging-0.1.js" type="text/javascript" charset="utf-8"></script>
 
 
 <script type="text/javascript" charset="utf-8">
 <script type="text/javascript" charset="utf-8">
@@ -282,30 +282,7 @@ ${layout.menubar(section='bundles', dashboard=True)}
 
 
     $.fn.dataTableExt.sErrMode = "throw";
     $.fn.dataTableExt.sErrMode = "throw";
 
 
-    $.fn.dataTableExt.afnFiltering.push(
-      function (oSettings, aData, iDataIndex) {
-        var urlHashes = ""
-
-        var statusBtn = $("a.btn-status.active");
-        var statusFilter = true;
-        if (statusBtn.length > 0) {
-          var statuses = []
-          $.each(statusBtn, function () {
-            statuses.push($(this).attr("data-value"));
-          });
-          statusFilter = aData[1].match(RegExp(statuses.join('|'), "i")) != null;
-        }
-
-        var dateBtn = $("a.btn-date.active");
-        var dateFilter = true;
-        if (dateBtn.length > 0) {
-          var minAge = new Date() - parseInt(dateBtn.attr("data-value")) * 1000 * 60 * 60 * 24;
-          dateFilter = Date.parse(aData[0]) >= minAge;
-        }
-
-        return statusFilter && dateFilter;
-      }
-    );
+    $.fn.dataTableExt.afnFiltering.push(PersistedButtonsFilters); // from dashboard-utils.js
 
 
     $(document).on("click", ".confirmationModal", function () {
     $(document).on("click", ".confirmationModal", function () {
       var _this = $(this);
       var _this = $(this);
@@ -369,8 +346,8 @@ ${layout.menubar(section='bundles', dashboard=True)}
                 try {
                 try {
                   runningTable.fnAddData([
                   runningTable.fnAddData([
                     bundle.canEdit ? '<div class="hueCheckbox fa" data-row-selector-exclude="true"></div>' : '',
                     bundle.canEdit ? '<div class="hueCheckbox fa" data-row-selector-exclude="true"></div>' : '',
-                    '<span data-sort-value="'+ bundle.kickoffTimeInMillis +'">' + emptyStringIfNull(bundle.kickoffTime) + '</span>',
-                    '<span class="' + bundle.statusClass + '">' + bundle.status + '</span>',
+                    '<span data-sort-value="'+ bundle.kickoffTimeInMillis +'" data-type="date">' + emptyStringIfNull(bundle.kickoffTime) + '</span>',
+                    '<span class="' + bundle.statusClass + '" data-type="status">' + bundle.status + '</span>',
                     bundle.appName,
                     bundle.appName,
                     '<div class="progress"><div class="bar bar-warning" style="width:1%"></div></div>',
                     '<div class="progress"><div class="bar bar-warning" style="width:1%"></div></div>',
                     bundle.user,
                     bundle.user,
@@ -385,7 +362,7 @@ ${layout.menubar(section='bundles', dashboard=True)}
 
 
             }
             }
             else {
             else {
-              runningTable.fnUpdate('<span class="' + bundle.statusClass + '">' + bundle.status + '</span>', foundRow, 2, false);
+              runningTable.fnUpdate('<span class="' + bundle.statusClass + '" data-type="status">' + bundle.status + '</span>', foundRow, 2, false);
             }
             }
           });
           });
         }
         }
@@ -409,8 +386,8 @@ ${layout.menubar(section='bundles', dashboard=True)}
           var bundle = new Bundle(item);
           var bundle = new Bundle(item);
           try {
           try {
             completedTable.fnAddData([
             completedTable.fnAddData([
-              '<span data-sort-value="'+ bundle.kickoffTimeInMillis +'">' + emptyStringIfNull(bundle.kickoffTime) + '</span>',
-              '<span class="' + bundle.statusClass + '">' + bundle.status + '</span>',
+              '<span data-sort-value="'+ bundle.kickoffTimeInMillis +'" data-type="date">' + emptyStringIfNull(bundle.kickoffTime) + '</span>',
+              '<span class="' + bundle.statusClass + '" data-type="status">' + bundle.status + '</span>',
               bundle.appName,
               bundle.appName,
               bundle.user,
               bundle.user,
               '<span data-sort-value="'+ bundle.createdInMillis +'">' + emptyStringIfNull(bundle.created) + '</span>',
               '<span data-sort-value="'+ bundle.createdInMillis +'">' + emptyStringIfNull(bundle.created) + '</span>',
@@ -437,7 +414,7 @@ ${layout.menubar(section='bundles', dashboard=True)}
               }
               }
             });
             });
             if (foundRow != null) {
             if (foundRow != null) {
-              runningTable.fnUpdate('<span class="' + bundle.statusClass + '">' + bundle.status + '</span>', foundRow, 2, false);
+              runningTable.fnUpdate('<span class="' + bundle.statusClass + '" data-type="status">' + bundle.status + '</span>', foundRow, 2, false);
               if (bundle.progress == 0){
               if (bundle.progress == 0){
                 runningTable.fnUpdate('<div class="progress"><div class="bar bar-warning" style="width: 1%"></div></div>', foundRow, 4, false);
                 runningTable.fnUpdate('<div class="progress"><div class="bar bar-warning" style="width: 1%"></div></div>', foundRow, 4, false);
               }
               }

+ 1 - 1
apps/oozie/src/oozie/templates/dashboard/list_oozie_coordinator.mako

@@ -363,7 +363,7 @@ ${ layout.menubar(section='coordinators', dashboard=True) }
 
 
 <div id="rerun-coord-modal" class="modal hide"></div>
 <div id="rerun-coord-modal" class="modal hide"></div>
 
 
-<script src="/oozie/static/js/bundles.utils.js" type="text/javascript" charset="utf-8"></script>
+<script src="/oozie/static/js/dashboard-utils.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/codemirror-3.11.js"></script>
 <script src="/static/ext/js/codemirror-3.11.js"></script>
 <link rel="stylesheet" href="/static/ext/css/codemirror.css">
 <link rel="stylesheet" href="/static/ext/css/codemirror.css">

+ 8 - 30
apps/oozie/src/oozie/templates/dashboard/list_oozie_coordinators.mako

@@ -154,7 +154,7 @@ ${layout.menubar(section='coordinators', dashboard=True)}
   </div>
   </div>
 </div>
 </div>
 
 
-<script src="/oozie/static/js/bundles.utils.js" type="text/javascript" charset="utf-8"></script>
+<script src="/oozie/static/js/dashboard-utils.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/datatables-paging-0.1.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/datatables-paging-0.1.js" type="text/javascript" charset="utf-8"></script>
 
 
 
 
@@ -318,30 +318,7 @@ ${layout.menubar(section='coordinators', dashboard=True)}
 
 
     $.fn.dataTableExt.sErrMode = "throw";
     $.fn.dataTableExt.sErrMode = "throw";
 
 
-    $.fn.dataTableExt.afnFiltering.push(
-      function (oSettings, aData, iDataIndex) {
-        var urlHashes = ""
-
-        var statusBtn = $("a.btn-status.active");
-        var statusFilter = true;
-        if (statusBtn.length > 0) {
-          var statuses = []
-          $.each(statusBtn, function () {
-            statuses.push($(this).attr("data-value"));
-          });
-          statusFilter = aData[1].match(RegExp(statuses.join('|'), "i")) != null;
-        }
-
-        var dateBtn = $("a.btn-date.active");
-        var dateFilter = true;
-        if (dateBtn.length > 0) {
-          var minAge = new Date() - parseInt(dateBtn.attr("data-value")) * 1000 * 60 * 60 * 24;
-          dateFilter = Date.parse(aData[0]) >= minAge;
-        }
-
-        return statusFilter && dateFilter;
-      }
-    );
+    $.fn.dataTableExt.afnFiltering.push(PersistedButtonsFilters); // from dashboard-utils.js
 
 
     $(document).on("click", ".confirmationModal", function () {
     $(document).on("click", ".confirmationModal", function () {
       var _this = $(this);
       var _this = $(this);
@@ -416,8 +393,8 @@ ${layout.menubar(section='coordinators', dashboard=True)}
                 try {
                 try {
                   runningTable.fnAddData([
                   runningTable.fnAddData([
                     coord.canEdit ? '<div class="hueCheckbox fa" data-row-selector-exclude="true"></div>' : '',
                     coord.canEdit ? '<div class="hueCheckbox fa" data-row-selector-exclude="true"></div>' : '',
-                    '<span data-sort-value="'+ coord.nextMaterializedTimeInMillis +'">' + emptyStringIfNull(coord.nextMaterializedTime) + '</span>',
-                    '<span class="' + coord.statusClass + '">' + coord.status + '</span>',
+                    '<span data-sort-value="'+ coord.nextMaterializedTimeInMillis +'" data-type="date">' + emptyStringIfNull(coord.nextMaterializedTime) + '</span>',
+                    '<span class="' + coord.statusClass + '" data-type="status">' + coord.status + '</span>',
                     coord.appName,
                     coord.appName,
                     '<div class="progress"><div class="bar bar-warning" style="width: 1%"></div></div>',
                     '<div class="progress"><div class="bar bar-warning" style="width: 1%"></div></div>',
                     coord.user,
                     coord.user,
@@ -437,7 +414,7 @@ ${layout.menubar(section='coordinators', dashboard=True)}
               }
               }
             }
             }
             else {
             else {
-              runningTable.fnUpdate('<span class="' + coord.statusClass + '">' + coord.status + '</span>', foundRow, 2, false);
+              runningTable.fnUpdate('<span class="' + coord.statusClass + '" data-type="status">' + coord.status + '</span>', foundRow, 2, false);
             }
             }
           });
           });
         }
         }
@@ -460,8 +437,8 @@ ${layout.menubar(section='coordinators', dashboard=True)}
           var coord = new Coordinator(item);
           var coord = new Coordinator(item);
           try {
           try {
             completedTable.fnAddData([
             completedTable.fnAddData([
-              '<span data-sort-value="'+ coord.endTimeInMillis +'">' + emptyStringIfNull(coord.endTime) + '</span>',
-              '<span class="' + coord.statusClass + '">' + coord.status + '</span>',
+              '<span data-sort-value="'+ coord.endTimeInMillis +'" data-type="date">' + emptyStringIfNull(coord.endTime) + '</span>',
+              '<span class="' + coord.statusClass + '" data-type="status">' + coord.status + '</span>',
               coord.appName,
               coord.appName,
               '<span data-sort-value="'+ coord.durationInMillis +'">' + emptyStringIfNull(coord.duration) + '</span>',
               '<span data-sort-value="'+ coord.durationInMillis +'">' + emptyStringIfNull(coord.duration) + '</span>',
               coord.user,
               coord.user,
@@ -501,6 +478,7 @@ ${layout.menubar(section='coordinators', dashboard=True)}
               % endif
               % endif
             });
             });
             if (foundRow != null) {
             if (foundRow != null) {
+              runningTable.fnUpdate('<span class="' + coord.statusClass + '" data-type="status">' + coord.status + '</span>', foundRow, 2, false);
               if (coord.progress == 0){
               if (coord.progress == 0){
                 runningTable.fnUpdate('<div class="progress"><div class="bar bar-warning" style="width: 1%"></div></div>', foundRow, 4, false);
                 runningTable.fnUpdate('<div class="progress"><div class="bar bar-warning" style="width: 1%"></div></div>', foundRow, 4, false);
               }
               }

+ 1 - 1
apps/oozie/src/oozie/templates/dashboard/list_oozie_sla.mako

@@ -151,7 +151,7 @@ ${ layout.menubar(section='sla', dashboard=True) }
   </div>
   </div>
 </div>
 </div>
 
 
-<script src="/oozie/static/js/bundles.utils.js" type="text/javascript" charset="utf-8"></script>
+<script src="/oozie/static/js/dashboard-utils.js" type="text/javascript" charset="utf-8"></script>
 <script src="/oozie/static/js/sla.utils.js" type="text/javascript" charset="utf-8"></script>
 <script src="/oozie/static/js/sla.utils.js" type="text/javascript" charset="utf-8"></script>
 
 
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>

+ 1 - 1
apps/oozie/src/oozie/templates/dashboard/list_oozie_workflow.mako

@@ -344,7 +344,7 @@ ${ layout.menubar(section='workflows', dashboard=True) }
   </div>
   </div>
 </div>
 </div>
 
 
-<script src="/oozie/static/js/bundles.utils.js" type="text/javascript" charset="utf-8"></script>
+<script src="/oozie/static/js/dashboard-utils.js" type="text/javascript" charset="utf-8"></script>
 <link rel="stylesheet" href="/oozie/static/css/workflow.css">
 <link rel="stylesheet" href="/oozie/static/css/workflow.css">
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/datatables-paging-0.1.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/datatables-paging-0.1.js" type="text/javascript" charset="utf-8"></script>

+ 8 - 31
apps/oozie/src/oozie/templates/dashboard/list_oozie_workflows.mako

@@ -136,7 +136,7 @@ ${ layout.menubar(section='workflows', dashboard=True) }
 </div>
 </div>
 
 
 
 
-<script src="/oozie/static/js/bundles.utils.js" type="text/javascript" charset="utf-8"></script>
+<script src="/oozie/static/js/dashboard-utils.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/datatables-paging-0.1.js" type="text/javascript" charset="utf-8"></script>
 <script src="/static/ext/js/datatables-paging-0.1.js" type="text/javascript" charset="utf-8"></script>
 
 
 <script type="text/javascript" charset="utf-8">
 <script type="text/javascript" charset="utf-8">
@@ -284,30 +284,7 @@ ${ layout.menubar(section='workflows', dashboard=True) }
 
 
     $.fn.dataTableExt.sErrMode = "throw";
     $.fn.dataTableExt.sErrMode = "throw";
 
 
-    $.fn.dataTableExt.afnFiltering.push(
-      function (oSettings, aData, iDataIndex) {
-        var urlHashes = ""
-
-        var statusBtn = $("a.btn-status.active");
-        var statusFilter = true;
-        if (statusBtn.length > 0) {
-          var statuses = []
-          $.each(statusBtn, function () {
-            statuses.push($(this).attr("data-value"));
-          });
-          statusFilter = aData[1].match(RegExp(statuses.join('|'), "i")) != null;
-        }
-
-        var dateBtn = $("a.btn-date.active");
-        var dateFilter = true;
-        if (dateBtn.length > 0) {
-          var minAge = new Date() - parseInt(dateBtn.attr("data-value")) * 1000 * 60 * 60 * 24;
-          dateFilter = Date.parse(aData[0]) >= minAge;
-        }
-
-        return statusFilter && dateFilter;
-      }
-    );
+    $.fn.dataTableExt.afnFiltering.push(PersistedButtonsFilters); // from dashboard-utils.js
 
 
     $(document).on("click", ".confirmationModal", function () {
     $(document).on("click", ".confirmationModal", function () {
       var _this = $(this);
       var _this = $(this);
@@ -369,8 +346,8 @@ ${ layout.menubar(section='workflows', dashboard=True) }
                 try {
                 try {
                   runningTable.fnAddData([
                   runningTable.fnAddData([
                     wf.canEdit ? '<div class="hueCheckbox fa" data-row-selector-exclude="true"></div>':'',
                     wf.canEdit ? '<div class="hueCheckbox fa" data-row-selector-exclude="true"></div>':'',
-                    '<span data-sort-value="'+ wf.lastModTimeInMillis +'">' + emptyStringIfNull(wf.lastModTime) + '</span>',
-                    '<span class="' + wf.statusClass + '">' + wf.status + '</span>',
+                    '<span data-sort-value="'+ wf.lastModTimeInMillis +'" data-type="date">' + emptyStringIfNull(wf.lastModTime) + '</span>',
+                    '<span class="' + wf.statusClass + '" data-type="status">' + wf.status + '</span>',
                     wf.appName,
                     wf.appName,
                     '<div class="progress"><div class="bar bar-warning" style="width: 1%"></div></div>',
                     '<div class="progress"><div class="bar bar-warning" style="width: 1%"></div></div>',
                     wf.user,
                     wf.user,
@@ -384,7 +361,7 @@ ${ layout.menubar(section='workflows', dashboard=True) }
               }
               }
             }
             }
             else {
             else {
-              runningTable.fnUpdate('<span class="' + wf.statusClass + '">' + wf.status + '</span>', foundRow, 2, false);
+              runningTable.fnUpdate('<span class="' + wf.statusClass + '" data-type="status">' + wf.status + '</span>', foundRow, 2, false);
             }
             }
           });
           });
         }
         }
@@ -408,8 +385,8 @@ ${ layout.menubar(section='workflows', dashboard=True) }
           var wf = new Workflow(item);
           var wf = new Workflow(item);
           try {
           try {
             completedTable.fnAddData([
             completedTable.fnAddData([
-              '<span data-sort-value="'+ wf.endTimeInMillis +'">' + emptyStringIfNull(wf.endTime) + '</span>',
-              '<span class="' + wf.statusClass + '">' + wf.status + '</span>', decodeURIComponent(wf.appName),
+              '<span data-sort-value="'+ wf.endTimeInMillis +'" data-type="date">' + emptyStringIfNull(wf.endTime) + '</span>',
+              '<span class="' + wf.statusClass + '" data-type="status">' + wf.status + '</span>', decodeURIComponent(wf.appName),
               '<span data-sort-value="'+ wf.durationInMillis +'">' + emptyStringIfNull(wf.duration) + '</span>',
               '<span data-sort-value="'+ wf.durationInMillis +'">' + emptyStringIfNull(wf.duration) + '</span>',
               wf.user,
               wf.user,
               '<span data-sort-value="'+ wf.lastModTimeInMillis +'">' + emptyStringIfNull(wf.lastModTime) + '</span>',
               '<span data-sort-value="'+ wf.lastModTimeInMillis +'">' + emptyStringIfNull(wf.lastModTime) + '</span>',
@@ -436,7 +413,7 @@ ${ layout.menubar(section='workflows', dashboard=True) }
               }
               }
             });
             });
             if (foundRow != null) {
             if (foundRow != null) {
-              runningTable.fnUpdate('<span class="' + wf.statusClass + '">' + wf.status + '</span>', foundRow, 2, false);
+              runningTable.fnUpdate('<span class="' + wf.statusClass + '" data-type="status">' + wf.status + '</span>', foundRow, 2, false);
               if (wf.progress == 0){
               if (wf.progress == 0){
                 runningTable.fnUpdate('<div class="progress"><div class="bar bar-warning" style="width: 1%"></div></div>', foundRow, 4, false);
                 runningTable.fnUpdate('<div class="progress"><div class="bar bar-warning" style="width: 1%"></div></div>', foundRow, 4, false);
               }
               }

+ 0 - 45
apps/oozie/static/js/bundles.utils.js

@@ -1,45 +0,0 @@
-// Licensed to Cloudera, Inc. under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  Cloudera, Inc. licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-function getStatusClass(status, prefix){
-  if (prefix == null){
-    prefix = "label-";
-  }
-  var klass = "";
-  if (['SUCCEEDED', 'OK', 'DONE'].indexOf(status) > -1){
-    klass = prefix + "success";
-  }
-  else if (['RUNNING', 'READY', 'PREP', 'WAITING', 'SUSPENDED', 'PREPSUSPENDED', 'PREPPAUSED', 'PAUSED',
-            'SUBMITTED',
-            'SUSPENDEDWITHERROR',
-            'PAUSEDWITHERROR'].indexOf(status) > -1){
-    klass = prefix + "warning";
-  }
-  else {
-    klass = prefix + "important";
-    if (prefix == "bar-"){
-      klass = prefix + "danger";
-    }
-  }
-  return klass;
-}
-
-function emptyStringIfNull(obj){
-  if (obj != null && obj != undefined){
-    return obj;
-  }
-  return "";
-}

+ 80 - 0
apps/oozie/static/js/dashboard-utils.js

@@ -0,0 +1,80 @@
+// Licensed to Cloudera, Inc. under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  Cloudera, Inc. licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+function getStatusClass(status, prefix) {
+  if (prefix == null) {
+    prefix = "label-";
+  }
+  var klass = "";
+  if (['SUCCEEDED', 'OK', 'DONE'].indexOf(status) > -1) {
+    klass = prefix + "success";
+  }
+  else if (['RUNNING', 'READY', 'PREP', 'WAITING', 'SUSPENDED', 'PREPSUSPENDED', 'PREPPAUSED', 'PAUSED',
+    'SUBMITTED',
+    'SUSPENDEDWITHERROR',
+    'PAUSEDWITHERROR'].indexOf(status) > -1) {
+    klass = prefix + "warning";
+  }
+  else {
+    klass = prefix + "important";
+    if (prefix == "bar-") {
+      klass = prefix + "danger";
+    }
+  }
+  return klass;
+}
+
+function emptyStringIfNull(obj) {
+  if (obj != null && obj != undefined) {
+    return obj;
+  }
+  return "";
+}
+
+var PersistedButtonsFilters = function (oSettings, aData, iDataIndex) {
+  var urlHashes = "";
+
+  var statusBtn = $("a.btn-status.active");
+  var statusFilter = true;
+  if (statusBtn.length > 0) {
+    var statuses = [];
+    $.each(statusBtn, function () {
+      statuses.push($(this).attr("data-value"));
+    });
+    var _statusColumn = aData[2];
+    if (typeof $(_statusColumn).attr("data-type") == "undefined") {
+      _statusColumn = aData[1];
+    }
+    statusFilter = _statusColumn.match(RegExp(statuses.join('|'), "i")) != null;
+  }
+
+  var dateBtn = $("a.btn-date.active");
+  var dateFilter = true;
+  if (dateBtn.length > 0) {
+    var minAge = new Date() - parseInt(dateBtn.attr("data-value")) * 1000 * 60 * 60 * 24;
+    var _dateColumn = aData[1];
+    if (typeof $(_dateColumn).attr("data-type") == "undefined" || $(_dateColumn).attr("data-type") == "status") {
+      _dateColumn = aData[0];
+    }
+    if (typeof _dateColumn == "string") {
+      _dateColumn = $(_dateColumn).attr("data-sort-value");
+    }
+    dateFilter = _dateColumn * 1000 >= minAge;
+  }
+
+  return statusFilter && dateFilter;
+}