You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ni...@apache.org on 2019/08/29 14:08:11 UTC

[kylin] branch master updated: Add time filter for current day jobs

This is an automated email from the ASF dual-hosted git repository.

nic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git


The following commit(s) were added to refs/heads/master by this push:
     new ebff43a  Add time filter for current day jobs
ebff43a is described below

commit ebff43a81eeac79429138d2be1ab7a9a0d5f41f3
Author: liupan010 <li...@ke.com>
AuthorDate: Fri Aug 9 18:36:55 2019 +0800

    Add time filter for current day jobs
---
 .../main/java/org/apache/kylin/common/KylinConfigBase.java    |  2 +-
 core-common/src/main/resources/kylin-defaults.properties      |  3 +++
 .../java/org/apache/kylin/job/constant/JobTimeFilterEnum.java |  2 +-
 examples/test_case_data/sandbox/kylin.properties              |  3 +++
 .../main/java/org/apache/kylin/rest/service/JobService.java   |  6 ++++++
 webapp/app/js/controllers/dashboard.js                        |  9 ++++-----
 webapp/app/js/controllers/page.js                             |  3 ++-
 webapp/app/js/model/jobConfig.js                              | 11 ++++++-----
 webapp/app/js/model/jobListModel.js                           |  7 ++++---
 webapp/app/js/services/kylinProperties.js                     | 10 ++++++++++
 10 files changed, 40 insertions(+), 16 deletions(-)

diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index be37c55..ac3ce04 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -1906,7 +1906,7 @@ public abstract class KylinConfigBase implements Serializable {
                 + "kylin.security.profile,"
                 + "kylin.htrace.show-gui-trace-toggle,kylin.web.export-allow-admin,kylin.web.export-allow-other,"
                 + "kylin.cube.cubeplanner.enabled,kylin.web.dashboard-enabled,kylin.tool.auto-migrate-cube.enabled,"
-                + "kylin.job.scheduler.default");
+                + "kylin.job.scheduler.default,kylin.web.default-time-filter");
     }
 
     // ============================================================================
diff --git a/core-common/src/main/resources/kylin-defaults.properties b/core-common/src/main/resources/kylin-defaults.properties
index 8beea6c..10ca8e6 100644
--- a/core-common/src/main/resources/kylin-defaults.properties
+++ b/core-common/src/main/resources/kylin-defaults.properties
@@ -77,6 +77,9 @@ kylin.web.link-diagnostic=
 kylin.web.contact-mail=
 kylin.server.external-acl-provider=
 
+# Default time filter for job list, 0->current day, 1->last one day, 2->last one week, 3->last one year, 4->all
+kylin.web.default-time-filter=1
+
 ### SOURCE ###
 
 # Hive client, valid value [cli, beeline]
diff --git a/core-job/src/main/java/org/apache/kylin/job/constant/JobTimeFilterEnum.java b/core-job/src/main/java/org/apache/kylin/job/constant/JobTimeFilterEnum.java
index c4787f7..da2ce92 100644
--- a/core-job/src/main/java/org/apache/kylin/job/constant/JobTimeFilterEnum.java
+++ b/core-job/src/main/java/org/apache/kylin/job/constant/JobTimeFilterEnum.java
@@ -19,7 +19,7 @@
 package org.apache.kylin.job.constant;
 
 public enum JobTimeFilterEnum {
-    LAST_ONE_DAY(0), LAST_ONE_WEEK(1), LAST_ONE_MONTH(2), LAST_ONE_YEAR(3), ALL(4);
+    CURRENT_DAY(0), LAST_ONE_DAY(1), LAST_ONE_WEEK(2), LAST_ONE_MONTH(3), LAST_ONE_YEAR(4), ALL(5);
 
     private final int code;
 
diff --git a/examples/test_case_data/sandbox/kylin.properties b/examples/test_case_data/sandbox/kylin.properties
index d8a787e..b7f358f 100644
--- a/examples/test_case_data/sandbox/kylin.properties
+++ b/examples/test_case_data/sandbox/kylin.properties
@@ -171,6 +171,9 @@ kylin.web.export-allow-other=true
 # Hide measures in measure list of cube designer, separate by comma
 kylin.web.hide-measures=RAW
 
+# Default time filter for job list, 0->current day, 1->last one day, 2->last one week, 3->last one year, 4->all
+kylin.web.default-time-filter=0
+
 ### OTHER ###
 
 # kylin query metrics percentiles intervals default=60, 300, 3600
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
index 46f0143..82738ab 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/JobService.java
@@ -194,6 +194,12 @@ public class JobService extends BasicService implements InitializingBean {
         case LAST_ONE_YEAR:
             calendar.add(Calendar.YEAR, -1);
             return calendar.getTimeInMillis();
+        case CURRENT_DAY:
+            calendar.add(Calendar.DAY_OF_MONTH, 0);
+            calendar.set(Calendar.HOUR_OF_DAY, 0);
+            calendar.set(Calendar.MINUTE, 0);
+            calendar.set(Calendar.SECOND, 0);
+            return calendar.getTimeInMillis();
         case ALL:
             return 0;
         default:
diff --git a/webapp/app/js/controllers/dashboard.js b/webapp/app/js/controllers/dashboard.js
index 3114919..f27ceb0 100644
--- a/webapp/app/js/controllers/dashboard.js
+++ b/webapp/app/js/controllers/dashboard.js
@@ -22,7 +22,6 @@ KylinApp.controller('DashboardCtrl', function ($scope, $location, storage, kylin
 
   $scope.init = function(){
     $scope.timezone = 'GMT';
-
     // Init date range
     storage.bind($scope, 'dateRange', {defaultValue: {
       startDate: moment().subtract(7, 'days').clone().tz($scope.timezone).startOf('day').format('x'),
@@ -183,12 +182,12 @@ KylinApp.controller('DashboardCtrl', function ($scope, $location, storage, kylin
               value.color = '#ddd';
             }
           });
-        } 
+        }
       }, function(e) {
           SweetAlert.swal('Oops...', 'Failed to load bar chart.', 'error');
           console.error('bar chart error:', e.data);
       });
-    }    
+    }
   };
 
   // Clean and remove chart
@@ -210,7 +209,7 @@ KylinApp.controller('DashboardCtrl', function ($scope, $location, storage, kylin
 
   // Click query count square
   $scope.queryCountChart = function() {
-    $scope.currentSquare = 'queryCount'; 
+    $scope.currentSquare = 'queryCount';
     $scope.barchartCategory = dashboardConfig.categories[0];
     $scope.barchartMetric = dashboardConfig.metrics[0];
     $scope.linechartCategory = dashboardConfig.categories[0];
@@ -293,4 +292,4 @@ KylinApp.controller('DashboardCtrl', function ($scope, $location, storage, kylin
     $scope.selectedCube = undefined;
   };
 
-});
\ No newline at end of file
+});
diff --git a/webapp/app/js/controllers/page.js b/webapp/app/js/controllers/page.js
index 5416013..4324dd7 100644
--- a/webapp/app/js/controllers/page.js
+++ b/webapp/app/js/controllers/page.js
@@ -25,7 +25,8 @@ KylinApp.controller('PageCtrl', function ($scope, $q, AccessService, $modal, $lo
     $log.debug(data);
     kylinConfig.initWebConfigInfo();
     $rootScope.isShowCubeplanner = kylinConfig.getProperty('kylin.cube.cubeplanner.enabled') === 'true';
-    $rootScope.isShowDashboard = kylinConfig.getProperty('kylin.web.dashboard-enabled') === 'true'
+    $rootScope.isShowDashboard = kylinConfig.getProperty('kylin.web.dashboard-enabled') === 'true';
+    JobList.jobFilter.timeFilterId = kylinConfig.getJobTimeFilterId();
   });
   $rootScope.userAction = {
     'islogout': false
diff --git a/webapp/app/js/model/jobConfig.js b/webapp/app/js/model/jobConfig.js
index cb07e1f..d840fb1 100644
--- a/webapp/app/js/model/jobConfig.js
+++ b/webapp/app/js/model/jobConfig.js
@@ -27,11 +27,12 @@ KylinApp.constant('jobConfig', {
     {name: 'DISCARDED', value: 16}
   ],
   timeFilter: [
-    {name: 'LAST ONE DAY', value: 0},
-    {name: 'LAST ONE WEEK', value: 1},
-    {name: 'LAST ONE MONTH', value: 2},
-    {name: 'LAST ONE YEAR', value: 3},
-    {name: 'ALL', value: 4},
+    {name: 'CURRENT DAY', value: 0},
+    {name: 'LAST ONE DAY', value: 1},
+    {name: 'LAST ONE WEEK', value: 2},
+    {name: 'LAST ONE MONTH', value: 3},
+    {name: 'LAST ONE YEAR', value: 4},
+    {name: 'ALL', value: 5},
   ],
   theaditems: [
     {attr: 'name', name: 'Job Name'},
diff --git a/webapp/app/js/model/jobListModel.js b/webapp/app/js/model/jobListModel.js
index 197532c..f32fecf 100755
--- a/webapp/app/js/model/jobListModel.js
+++ b/webapp/app/js/model/jobListModel.js
@@ -20,12 +20,12 @@
  *jobListModel will manage data in list job page
  */
 
-KylinApp.service('JobList',function(JobService,$q){
+KylinApp.service('JobList',function(JobService, $q, kylinConfig){
     var _this = this;
     this.jobs={};
     this.jobFilter = {
         cubeName : null,
-        timeFilterId : 1,
+        timeFilterId : kylinConfig.getJobTimeFilterId(),
         searchModeId: 2,
         statusIds: []
     };
@@ -33,7 +33,7 @@ KylinApp.service('JobList',function(JobService,$q){
     this.clearJobFilter = function(){
         this.jobFilter = {
           cubeName : null,
-          timeFilterId : 1,
+          timeFilterId : kylinConfig.getJobTimeFilterId(),
           searchModeId: 2,
           statusIds: []
         };
@@ -41,6 +41,7 @@ KylinApp.service('JobList',function(JobService,$q){
 
     this.list = function(jobRequest){
         var defer = $q.defer();
+        console.log();
         JobService.list(jobRequest, function (jobs) {
             angular.forEach(jobs, function (job) {
                 var id = job.uuid;
diff --git a/webapp/app/js/services/kylinProperties.js b/webapp/app/js/services/kylinProperties.js
index fed071b..dc5b885 100644
--- a/webapp/app/js/services/kylinProperties.js
+++ b/webapp/app/js/services/kylinProperties.js
@@ -20,6 +20,7 @@ KylinApp.service('kylinConfig', function (AdminService, $log) {
   var _config;
   var timezone;
   var deployEnv;
+  var jobTimeFilterId;
 
   this.init = function () {
     return AdminService.publicConfig({}, function (config) {
@@ -169,6 +170,15 @@ KylinApp.service('kylinConfig', function (AdminService, $log) {
     }
     return this.sourceType;
   }
+
+  this.getJobTimeFilterId = function() {
+    var jobTimeFilterId = parseInt(this.getProperty("kylin.web.default-time-filter"));
+    if(isNaN(jobTimeFilterId)) {
+      jobTimeFilterId = 2;
+    }
+    return jobTimeFilterId;
+  }
+
   this.getSecurityType = function () {
     this.securityType = this.getProperty("kylin.security.profile").trim();
     return this.securityType;