You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by zh...@apache.org on 2016/07/12 12:25:39 UTC
[1/5] kylin git commit: KYLIN-1786 UI for extended columns as measure
Repository: kylin
Updated Branches:
refs/heads/master 95eb2ff7a -> 2b1f997e0
KYLIN-1786 UI for extended columns as measure
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/2b1f997e
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/2b1f997e
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/2b1f997e
Branch: refs/heads/master
Commit: 2b1f997e084b1f4153a3345971fe87a27380c3c0
Parents: e3b8be3
Author: Jason <ji...@163.com>
Authored: Tue Jul 12 20:25:05 2016 +0800
Committer: Jason <ji...@163.com>
Committed: Tue Jul 12 20:25:25 2016 +0800
----------------------------------------------------------------------
webapp/app/js/controllers/cubeEdit.js | 52 +++++++++
webapp/app/js/controllers/cubeMeasures.js | 60 +++++++----
webapp/app/partials/cubeDesigner/measures.html | 111 +++++++++++++-------
3 files changed, 165 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/2b1f997e/webapp/app/js/controllers/cubeEdit.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeEdit.js b/webapp/app/js/controllers/cubeEdit.js
index b6fc875..8475025 100755
--- a/webapp/app/js/controllers/cubeEdit.js
+++ b/webapp/app/js/controllers/cubeEdit.js
@@ -119,6 +119,58 @@ KylinApp.controller('CubeEditCtrl', function ($scope, $q, $routeParams, $locatio
};
+ $scope.getExtendedColumns = function (measure) {
+ //metric from model
+ var me_columns = [];
+ if($scope.metaModel.model.metrics){
+ angular.forEach($scope.metaModel.model.metrics,function(metric,index){
+ me_columns.push(metric);
+ })
+ }
+ angular.forEach($scope.metaModel.model.dimensions,function(dimension,index){
+ if(dimension.columns){
+ me_columns = me_columns.concat(dimension.columns);
+ }
+ })
+
+ return me_columns;
+
+ };
+
+ $scope.getExtendedFactColumns = function (measure) {
+ var me_columns = [];
+ angular.forEach($scope.metaModel.model.dimensions,function(dimension,index){
+ if($scope.metaModel.model.fact_table !== dimension.table){
+ return;
+ }
+
+ if(dimension.columns){
+ me_columns = me_columns.concat(dimension.columns);
+ }
+ })
+
+ return me_columns;
+
+ };
+
+
+ $scope.getFactColumns = function () {
+ var me_columns = [];
+ angular.forEach($scope.cubeMetaFrame.dimensions,function(dimension,index){
+ if($scope.metaModel.model.fact_table !== dimension.table){
+ return;
+ }
+ if(dimension.column && dimension.derived == null){
+ me_columns.push(dimension.column);
+ }
+
+ });
+
+ return me_columns;
+
+ };
+
+
$scope.getColumnType = function (_column, table) {
var columns = $scope.getColumnsByTable(table);
http://git-wip-us.apache.org/repos/asf/kylin/blob/2b1f997e/webapp/app/js/controllers/cubeMeasures.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeMeasures.js b/webapp/app/js/controllers/cubeMeasures.js
index fb9d292..bb22a42 100644
--- a/webapp/app/js/controllers/cubeMeasures.js
+++ b/webapp/app/js/controllers/cubeMeasures.js
@@ -24,27 +24,30 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
$scope.addNewMeasure = function (measure) {
$scope.nextParameters = [];
$scope.newMeasure = (!!measure)? measure:CubeDescModel.createMeasure();
- if(!!measure){
- $scope.convertNextParameters();
+ //if(!!measure){
+ // $scope.convertNextParameters();
+ //}
+ if(!!measure && measure.function.parameter.next_parameter){
+ $scope.nextPara.value = measure.function.parameter.next_parameter.value;
}
};
- $scope.convertNextParameters = function(){
- $scope.nextParameters = [];
- var paramater = jQuery.extend(true, {}, $scope.newMeasure.function.parameter);
- while(paramater.next_parameter){
- var paraMeter =
- {
- "type": paramater.next_parameter.type,
- "value":paramater.next_parameter.value,
- "next_parameter":null
- }
- $scope.nextParameters.push(paraMeter);
-
- paramater = paramater.next_parameter;
-
- }
-
- }
+ //$scope.convertNextParameters = function(){
+ // $scope.nextParameters = [];
+ // var paramater = jQuery.extend(true, {}, $scope.newMeasure.function.parameter);
+ // while(paramater.next_parameter){
+ // var paraMeter =
+ // {
+ // "type": paramater.next_parameter.type,
+ // "value":paramater.next_parameter.value,
+ // "next_parameter":null
+ // }
+ // $scope.nextParameters.push(paraMeter);
+ //
+ // paramater = paramater.next_parameter;
+ //
+ // }
+ //
+ //}
$scope.updateNextParameter = function(){
//jQuery.extend(true, {},$scope.newMeasure.function.parameter.next_parameter)
@@ -70,6 +73,14 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
}
$scope.updateNextParameter();
}
+
+
+ $scope.nextPara = {
+ "type":"column",
+ "value":"",
+ "next_parameter":null
+ }
+
$scope.openParameterModal = function (parameter) {
$modal.open({
templateUrl: 'nextParameter.html',
@@ -95,13 +106,19 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
$scope.clearNewMeasure = function () {
$scope.newMeasure = null;
+ $scope.nextPara.value = "";
};
$scope.saveNewMeasure = function () {
- if ($scope.newMeasure.function.expression === 'TOP_N' && $scope.nextParameters.length == 0) {
+
+ if ($scope.newMeasure.function.expression === 'TOP_N' && $scope.nextPara.value == "") {
SweetAlert.swal('', '[TOP_N] Group by Column is required', 'warning');
return false;
}
+ if($scope.nextPara.value!=="" && ($scope.newMeasure.function.expression == 'EXTENDED_COLUMN' || $scope.newMeasure.function.expression == 'TOP_N')){
+ $scope.newMeasure.function.parameter.next_parameter = $scope.nextPara;
+ }
+
if ($scope.cubeMetaFrame.measures.indexOf($scope.newMeasure) === -1) {
$scope.cubeMetaFrame.measures.push($scope.newMeasure);
}
@@ -112,7 +129,8 @@ KylinApp.controller('CubeMeasuresCtrl', function ($scope, $modal,MetaModel,cubes
//map right return type for param
$scope.measureReturnTypeUpdate = function(){
- if($scope.newMeasure.function.expression == 'TOP_N'){
+ if($scope.newMeasure.function.expression == 'TOP_N'||$scope.newMeasure.function.expression == 'EXTENDED_COLUMN'){
+ $scope.newMeasure.function.parameter.type= 'column';
return;
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/2b1f997e/webapp/app/partials/cubeDesigner/measures.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/measures.html b/webapp/app/partials/cubeDesigner/measures.html
index 8fcefe3..469f69e 100755
--- a/webapp/app/partials/cubeDesigner/measures.html
+++ b/webapp/app/partials/cubeDesigner/measures.html
@@ -112,7 +112,7 @@
</div>
</div>
<!--Param Type-->
- <div class="form-group">
+ <div class="form-group" ng-if="newMeasure.function.expression !== 'EXTENDED_COLUMN' && newMeasure.function.expression !== 'TOP_N'">
<div class="row">
<label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default"><b>Param Type</b></label>
<div class="col-xs-12 col-sm-6">
@@ -134,10 +134,11 @@
<div class="form-group middle-popover">
<div class="row">
<label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default">
- <b ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'">Host Column On Fact Table</b>
- <b ng-if="newMeasure.function.expression !== 'EXTENDED_COLUMN'">Param Value</b> <i class="fa fa-info-circle" kylinpopover placement="right" title="Param Value" template="paramvalueTip.html"></i>
+ <b ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'">Host column On Fact Table</b> <i ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'" title="Host Column" class="fa fa-info-circle" kylinpopover placement="right" template="hostTableTip.html"></i>
+ <b ng-if="newMeasure.function.expression == 'TOP_N'">ORDER|SUM by Column</b> <i ng-if="newMeasure.function.expression == 'TOP_N'" class="fa fa-info-circle" title="ORDER|SUM by Column" kylinpopover placement="right" template="topnTip.html"></i>
+ <b ng-if="newMeasure.function.expression !== 'EXTENDED_COLUMN' && newMeasure.function.expression !== 'TOP_N' ">Param Value</b> <i ng-if="newMeasure.function.expression !== 'EXTENDED_COLUMN' && newMeasure.function.expression !== 'TOP_N' " class="fa fa-info-circle" kylinpopover placement="right" title="Param Value" template="paramvalueTip.html"></i>
<!--tip for top_n-->
- <small ng-if="newMeasure.function.expression == 'TOP_N'" class="help-block" style="color:#3a87ad">(SUM|ORDER BY Column for TOP_N)</small>
+ <!--<small ng-if="newMeasure.function.expression == 'TOP_N'" class="help-block" style="color:#3a87ad">(SUM|ORDER BY Column for TOP_N)</small>-->
</label>
@@ -148,20 +149,28 @@
ng-init="newMeasure.function.parameter.value = 1"><b> 1</b></span>
<!--!COUNT_DISTINCT-->
<select class="form-control" chosen
- ng-if="newMeasure.function.parameter.type == 'column'"
+ ng-if="newMeasure.function.parameter.type == 'column' && newMeasure.function.expression !== 'EXTENDED_COLUMN'"
ng-model="newMeasure.function.parameter.value"
ng-change="measureReturnTypeUpdate();"
ng-options="column as column for column in getCommonMetricColumns(newMeasure)" >
<option value="">-- Select a Column --</option>
</select>
+ <select class="form-control" chosen
+ ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'"
+ ng-model="newMeasure.function.parameter.value"
+ ng-change="measureReturnTypeUpdate();"
+ ng-options="column as column for column in getFactColumns()" >
+ <option value="">-- Select a Column --</option>
+ </select>
</div>
</div>
</div>
<!--Return Type-->
- <div class="form-group">
+ <div class="form-group middle-popover">
<div class="row">
<label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default">
- <b>Return Type</b> <i ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'" class="fa fa-info-circle" kylinpopover placement="right" title="Return Type" template="returnTypeTip.html"></i>
+ <b ng-if="newMeasure.function.expression !== 'EXTENDED_COLUMN'">Return Type</b>
+ <b ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'">Maximum length of extended column</b> <i ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'" title="Maximum Length" class="fa fa-info-circle" kylinpopover placement="right" template="extendedTypeTip.html"></i>
</label>
<div class="col-xs-12 col-sm-6">
<select class="form-control"
@@ -181,7 +190,7 @@
<input extended-column-return
ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'"
- type="text" placeholder="Return type.." class="form-control"
+ type="text" placeholder="Kylin won\u2019t save more than this number of bytes" class="form-control"
tooltip-trigger="focus"
ng-init=""
ng-model="newMeasure.function.returntype" required />
@@ -193,6 +202,38 @@
</div>
</div>
</div>
+
+
+ <div class="form-group middle-popover" ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'">
+ <div class="row">
+ <label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default">
+ <b>Extended column on fact table</b> <i ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'" title="Extended Column" class="fa fa-info-circle" kylinpopover placement="right" template="extendedColumnTip.html"></i>
+ </label>
+ <div class="col-xs-12 col-sm-6">
+ <select class="form-control" chosen ng-if="nextPara.type !== 'constant'" required
+ ng-model="nextPara.value"
+ ng-options="column as column for column in getExtendedFactColumns()" >
+ <option value=""></option>
+ </select>
+ </div>
+ </div>
+ </div>
+
+ <div class="form-group" ng-if="newMeasure.function.expression == 'TOP_N'">
+ <div class="row">
+ <label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default">
+ <b>Group by Column</b>
+ </label>
+ <div class="col-xs-12 col-sm-6">
+ <select class="form-control" chosen ng-if="nextPara.type !== 'constant'" required
+ ng-model="nextPara.value"
+ ng-options="column as column for column in getExtendedColumns(newMeasure)" >
+ <option value=""></option>
+ </select>
+ </div>
+ </div>
+ </div>
+
<!--Name-->
<div class="form-group">
<div class="row">
@@ -219,29 +260,14 @@
</tr>
</table>
- <table class="table table-hover table-bordered list" ng-if="nextParameters.length" ng-show="newMeasure.function.expression == 'TOP_N'">
- <tr ng-repeat="n_parameter in nextParameters track by $index">
- <td><b>Group By Column</b></td>
- <td>{{n_parameter.value}}</td>
- <td>
- <button class="btn btn-xs btn-info" ng-click="editNextParameter(n_parameter)">
- <i class="fa fa-pencil"></i>
- </button>
- <button class="btn btn-xs btn-info" ng-click="removeParameter(nextParameters, $index)"><i class="fa fa-minus"></i>
- </button>
-
- </td>
-
- </tr>
- </table>
- <button class="btn btn-sm btn-info" ng-click="addNextParameter()" ng-show="newMeasure.function.expression == 'TOP_N' && nextParameters.length==0"
- ng-show="state.mode=='edit'"><i class="fa fa-plus"> Group by Column</i>
- </button>
- <button class="btn btn-sm btn-info" ng-click="addNextParameter()" ng-show="newMeasure.function.expression == 'EXTENDED_COLUMN' && nextParameters.length==0"
- ng-show="state.mode=='edit'"><i class="fa fa-plus"> Extended Column On Fact Table</i>
- </button>
+ <!--<button class="btn btn-sm btn-info" ng-click="addNextParameter()" ng-show="newMeasure.function.expression == 'TOP_N' && nextParameters.length==0"-->
+ <!--ng-show="state.mode=='edit'"><i class="fa fa-plus"> Group by Column</i>-->
+ <!--</button>-->
+ <!--<button class="btn btn-sm btn-info" ng-click="addNextParameter()" ng-show="newMeasure.function.expression == 'EXTENDED_COLUMN' && nextParameters.length==0"-->
+ <!--ng-show="state.mode=='edit'"><i class="fa fa-plus"> Extended Column On Fact Table</i>-->
+ <!--</button>-->
</div>
</div>
</div>
@@ -316,7 +342,7 @@
<div class="col-xs-12 col-sm-6">
<select class="form-control" chosen
ng-model="nextPara.value"
- ng-options="column as column for column in getCommonMetricColumns(newmea.measure)" >
+ ng-options="column as column for column in getExtendedColumns(newmea.measure)" >
<option value=""></option>
</select>
</div>
@@ -328,7 +354,7 @@
<div class="col-xs-12 col-sm-6">
<select class="form-control" chosen
ng-model="nextPara.value"
- ng-options="column as column for column in getCommonMetricColumns(newmea.measure)" >
+ ng-options="column as column for column in getExtendedColumns(newmea.measure)" >
<option value=""></option>
</select>
</div>
@@ -351,16 +377,27 @@
</script>
<script type="text/ng-template" id="paramvalueTip.html">
<ol>
- <li>Only accept single column in param
<li>Only accept single column in param value with "Column" type</li>
<li>Distinct Count is approximate, please indicate Error Rate, higher accuracy degree accompanied with larger storage size and longer build time</li>
- value with "Column" type</li>
- <li>Distinct Count is approximate, please indicate Error Rate, higher accuracy degree accompanied with larger storage size and longer build time</li>
</ol>
</script>
-<script type="text/ng-template" id="returnTypeTip.html">
- <ol>
+<script type="text/ng-template" id="extendedTypeTip.html">
+ <p>
+ Kylin won\u2019t save more than this number of bytes for each extended column. If exceeded it will be truncated.
+ </p>
+</script>
- </ol>
+<script type="text/ng-template" id="topnTip.html">
+ <p>Will use this column for SUM and Order by</p>
+</script>
+
+<script type="text/ng-template" id="hostTableTip.html">
+ <p>Host column is the dimension to derive from, e.g. page_id</p>
</script>
+<script type="text/ng-template" id="extendedColumnTip.html">
+ <p>
+ Extended column is derived from host, e.g. page_url. No filters on extended column!
+ </p>
+</script>
+
[2/5] kylin git commit: reformat code
Posted by zh...@apache.org.
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/index.html
----------------------------------------------------------------------
diff --git a/webapp/app/index.html b/webapp/app/index.html
index 36245f1..282567c 100644
--- a/webapp/app/index.html
+++ b/webapp/app/index.html
@@ -20,54 +20,54 @@
<!doctype html>
<html id="ng-app">
<head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <base href="/kylin/">
- <link rel="icon" href="image/favicon.ico" type="image/x-icon">
- <link rel="shortcut icon" href="image/favicon.ico" type="image/x-icon">
- <title>Kylin</title>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <base href="/kylin/">
+ <link rel="icon" href="image/favicon.ico" type="image/x-icon">
+ <link rel="shortcut icon" href="image/favicon.ico" type="image/x-icon">
+ <title>Kylin</title>
- <!-- ref:css css/styles.min.<%= buildNumber %>.css -->
- <link rel="stylesheet" type="text/css" href="components/bootstrap/dist/css/bootstrap.min.css">
- <link rel="stylesheet" type="text/css" href="components/components-font-awesome/css/font-awesome.css">
+ <!-- ref:css css/styles.min.<%= buildNumber %>.css -->
+ <link rel="stylesheet" type="text/css" href="components/bootstrap/dist/css/bootstrap.min.css">
+ <link rel="stylesheet" type="text/css" href="components/components-font-awesome/css/font-awesome.css">
- <link rel="stylesheet" type="text/css" href="components/angular-tree-control/css/tree-control.css">
- <link rel="stylesheet" type="text/css" href="components/angular-tree-control/css/tree-control-attribute.css">
- <link rel="stylesheet" type="text/css" href="components/messenger/build/css/messenger.css">
- <link rel="stylesheet" type="text/css" href="components/messenger/build/css/messenger-theme-ice.css">
- <link rel="stylesheet" type="text/css" href="components/ng-grid/ng-grid.css">
- <link rel="stylesheet" type="text/css" href="components/angular-ui-grid/ui-grid.min.css">
- <link rel="stylesheet" type="text/css" href="components/chosen/chosen.css">
- <link rel="stylesheet" type="text/css" href="components/angular-chosen-localytics/chosen-spinner.css">
- <link rel="stylesheet" type="text/css" href="components/animate.css/animate.css">
- <link rel="stylesheet" type="text/css" href="components/nvd3/nv.d3.min.css">
+ <link rel="stylesheet" type="text/css" href="components/angular-tree-control/css/tree-control.css">
+ <link rel="stylesheet" type="text/css" href="components/angular-tree-control/css/tree-control-attribute.css">
+ <link rel="stylesheet" type="text/css" href="components/messenger/build/css/messenger.css">
+ <link rel="stylesheet" type="text/css" href="components/messenger/build/css/messenger-theme-ice.css">
+ <link rel="stylesheet" type="text/css" href="components/ng-grid/ng-grid.css">
+ <link rel="stylesheet" type="text/css" href="components/angular-ui-grid/ui-grid.min.css">
+ <link rel="stylesheet" type="text/css" href="components/chosen/chosen.css">
+ <link rel="stylesheet" type="text/css" href="components/angular-chosen-localytics/chosen-spinner.css">
+ <link rel="stylesheet" type="text/css" href="components/animate.css/animate.css">
+ <link rel="stylesheet" type="text/css" href="components/nvd3/nv.d3.min.css">
- <link rel="stylesheet" type="text/css" href="css/AdminLTE.css">
- <link rel="stylesheet" type="text/css" href="components/bootstrap-sweetalert/lib/sweet-alert.css">
- <link rel="stylesheet" type="text/css" href="components/angular-bootstrap-nav-tree/dist/abn_tree.css">
- <link rel="stylesheet" type="text/css" href="components/angular-toggle-switch/angular-toggle-switch.css">
- <link rel="stylesheet" type="text/css" href="components/angular-ui-select/dist/select.css">
- <link rel="stylesheet" type="text/css" href="components/angular-bootstrap-datetimepicker/src/css/datetimepicker.css">
+ <link rel="stylesheet" type="text/css" href="css/AdminLTE.css">
+ <link rel="stylesheet" type="text/css" href="components/bootstrap-sweetalert/lib/sweet-alert.css">
+ <link rel="stylesheet" type="text/css" href="components/angular-bootstrap-nav-tree/dist/abn_tree.css">
+ <link rel="stylesheet" type="text/css" href="components/angular-toggle-switch/angular-toggle-switch.css">
+ <link rel="stylesheet" type="text/css" href="components/angular-ui-select/dist/select.css">
+ <link rel="stylesheet" type="text/css" href="components/angular-bootstrap-datetimepicker/src/css/datetimepicker.css">
- <link rel="stylesheet/less" href="less/build.less">
- <!-- endref -->
+ <link rel="stylesheet/less" href="less/build.less">
+ <!-- endref -->
- <!-- This has to be at the top to make it works in IE -->
- <!--[if lte IE 8]>
- <script>
- document.createElement('loading');
- document.createElement('pagination');
- </script>
- <![endif]-->
+ <!-- This has to be at the top to make it works in IE -->
+ <!--[if lte IE 8]>
+ <script>
+ document.createElement('loading');
+ document.createElement('pagination');
+ </script>
+ <![endif]-->
</head>
<body ng-controller="PageCtrl">
<div class="navbar navbar-default navbar-fixed-top" ng-include="'partials/header.html'"></div>
<div id="main" class="main-container">
- <div class="main-content">
- <div class="page-content" ng-view></div>
- </div>
+ <div class="main-content">
+ <div class="page-content" ng-view></div>
+ </div>
</div>
<footer class="navbar-fixed-bottom navbar-footer" ng-include="'partials/footer.html'"></footer>
@@ -205,39 +205,39 @@
<!--template-->
<!-- static template for cube save/update result notification -->
<script type="text/ng-template" id="cubeResultError.html">
- <div class="callout">
- <h4>Error Message</h4>
- <p>{{text}}</p>
- </div>
- <div class="callout callout-danger">
- <h4>Cube Schema</h4>
- <pre>{{schema}}</pre>
- </div>
+ <div class="callout">
+ <h4>Error Message</h4>
+ <p>{{text}}</p>
+ </div>
+ <div class="callout callout-danger">
+ <h4>Cube Schema</h4>
+ <pre>{{schema}}</pre>
+ </div>
</script>
<script type="text/ng-template" id="cubeResultSuccess.html">
- <div class="callout callout-info">
- <p>{{text}}</p>
- </div>
+ <div class="callout callout-info">
+ <p>{{text}}</p>
+ </div>
</script>
<!--template-->
<!-- static template for cube save/update result notification -->
<script type="text/ng-template" id=" modelResultError.html">
- <div class="callout callout-info">
- <h4>Error Message</h4>
- <p>{{text}}</p>
- </div>
- <div class="callout callout-danger">
- <h4>Model Schema</h4>
- <pre>{{schema}}</pre>
- </div>
+ <div class="callout callout-info">
+ <h4>Error Message</h4>
+ <p>{{text}}</p>
+ </div>
+ <div class="callout callout-danger">
+ <h4>Model Schema</h4>
+ <pre>{{schema}}</pre>
+ </div>
</script>
<script type="text/ng-template" id="modelResultSuccess.html">
- <div class="callout callout-info">
- <p>{{text}}</p>
- </div>
+ <div class="callout callout-info">
+ <p>{{text}}</p>
+ </div>
</script>
<!-- static template for cube save/update result notification -->
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/js/app.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/app.js b/webapp/app/js/app.js
index 3691b82..3708037 100644
--- a/webapp/app/js/app.js
+++ b/webapp/app/js/app.js
@@ -14,7 +14,7 @@
* 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.
-*/
+ */
//Kylin Application Module
-KylinApp = angular.module('kylin', ['ngRoute', 'ngResource', 'ngGrid', 'ui.grid', 'ui.grid.resizeColumns', 'ui.bootstrap', 'ui.ace', 'base64', 'angularLocalStorage', 'localytics.directives', 'treeControl', 'nvd3ChartDirectives','ngLoadingRequest','oitozero.ngSweetAlert','ngCookies','angular-underscore', 'ngAnimate', 'ui.sortable','angularBootstrapNavTree','toggle-switch','ngSanitize','ui.select','ui.bootstrap.datetimepicker']);
+KylinApp = angular.module('kylin', ['ngRoute', 'ngResource', 'ngGrid', 'ui.grid', 'ui.grid.resizeColumns', 'ui.bootstrap', 'ui.ace', 'base64', 'angularLocalStorage', 'localytics.directives', 'treeControl', 'nvd3ChartDirectives', 'ngLoadingRequest', 'oitozero.ngSweetAlert', 'ngCookies', 'angular-underscore', 'ngAnimate', 'ui.sortable', 'angularBootstrapNavTree', 'toggle-switch', 'ngSanitize', 'ui.select', 'ui.bootstrap.datetimepicker']);
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/js/config.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/config.js b/webapp/app/js/config.js
index 46fdecd..ce4531e 100644
--- a/webapp/app/js/config.js
+++ b/webapp/app/js/config.js
@@ -39,61 +39,61 @@ var Config = {
// Angular module to load routes.
KylinApp.config(function ($routeProvider, $httpProvider, $locationProvider, $logProvider) {
- // Set debug to true by default.
- if (angular.isUndefined(Config.debug) || Config.debug !== false) {
- Config.debug = true;
- }
-
- // Set development to true by default.
- if (angular.isUndefined(Config.development) || Config.development !== false) {
- Config.development = true;
- }
-
- // Disable logging if debug is off.
- if (Config.debug === false) {
- $logProvider.debugEnabled(false);
- }
+ // Set debug to true by default.
+ if (angular.isUndefined(Config.debug) || Config.debug !== false) {
+ Config.debug = true;
+ }
- // Loop over routes and add to router.
- angular.forEach(Config.routes, function (route) {
- $routeProvider.when(route.url, route.params).otherwise({redirectTo:'/'});
- });
+ // Set development to true by default.
+ if (angular.isUndefined(Config.development) || Config.development !== false) {
+ Config.development = true;
+ }
- // Set to use HTML5 mode, which removes the #! from modern browsers.
- $locationProvider.html5Mode(true);
-
- //configure $http to view a login whenever a 401 unauthorized response arrives
- $httpProvider.responseInterceptors.push(function ($rootScope, $q) {
- return function (promise) {
- return promise.then(
- //success -> don't intercept
- function (response) {
- return response;
- },
- //error -> if 401 save the request and broadcast an event
- function (response) {
- if (response.status === 401 && !(response.config.url.indexOf("user/authentication") !== -1 && response.config.method === 'POST')) {
- var deferred = $q.defer(),
- req = {
- config: response.config,
- deferred: deferred
- };
- $rootScope.requests401.push(req);
- $rootScope.$broadcast('event:loginRequired');
- return deferred.promise;
- }
+ // Disable logging if debug is off.
+ if (Config.debug === false) {
+ $logProvider.debugEnabled(false);
+ }
- if (response.status === 403) {
- $rootScope.$broadcast('event:forbidden', response.data.exception);
+ // Loop over routes and add to router.
+ angular.forEach(Config.routes, function (route) {
+ $routeProvider.when(route.url, route.params).otherwise({redirectTo: '/'});
+ });
+
+ // Set to use HTML5 mode, which removes the #! from modern browsers.
+ $locationProvider.html5Mode(true);
+
+ //configure $http to view a login whenever a 401 unauthorized response arrives
+ $httpProvider.responseInterceptors.push(function ($rootScope, $q) {
+ return function (promise) {
+ return promise.then(
+ //success -> don't intercept
+ function (response) {
+ return response;
+ },
+ //error -> if 401 save the request and broadcast an event
+ function (response) {
+ if (response.status === 401 && !(response.config.url.indexOf("user/authentication") !== -1 && response.config.method === 'POST')) {
+ var deferred = $q.defer(),
+ req = {
+ config: response.config,
+ deferred: deferred
+ };
+ $rootScope.requests401.push(req);
+ $rootScope.$broadcast('event:loginRequired');
+ return deferred.promise;
+ }
+
+ if (response.status === 403) {
+ $rootScope.$broadcast('event:forbidden', response.data.exception);
+ }
+
+ return $q.reject(response);
}
-
- return $q.reject(response);
- }
- );
- };
- });
- httpHeaders = $httpProvider.defaults.headers;
-})
+ );
+ };
+ });
+ httpHeaders = $httpProvider.defaults.headers;
+ })
.run(function ($location) {
if (angular.isUndefined(Config.uri)) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/js/listeners.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/listeners.js b/webapp/app/js/listeners.js
index ab32a0d..e5c40fb 100644
--- a/webapp/app/js/listeners.js
+++ b/webapp/app/js/listeners.js
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-KylinApp.run(function ($rootScope, $http, $location, UserService, AuthenticationService, MessageService, $cookieStore,ProjectService,ProjectModel,AccessService,SweetAlert,loadingRequest) {
+KylinApp.run(function ($rootScope, $http, $location, UserService, AuthenticationService, MessageService, $cookieStore, ProjectService, ProjectModel, AccessService, SweetAlert, loadingRequest) {
$rootScope.permissions = {
READ: {name: 'CUBE QUERY', value: 'READ', mask: 1},
@@ -28,17 +28,17 @@ KylinApp.run(function ($rootScope, $http, $location, UserService, Authentication
$rootScope.$on("$routeChangeStart", function () {
AuthenticationService.ping(function (data) {
UserService.setCurUser(data);
- if(!data.userDetails){
+ if (!data.userDetails) {
$location.path(UserService.getHomePage());
- }else{
+ } else {
//get project info when login
- if (!ProjectModel.projects.length&&!$rootScope.userAction.islogout) {
+ if (!ProjectModel.projects.length && !$rootScope.userAction.islogout) {
loadingRequest.show();
ProjectService.listReadable({}, function (projects) {
loadingRequest.hide();
- if(!projects.length){
+ if (!projects.length) {
return;
}
@@ -48,15 +48,15 @@ KylinApp.run(function ($rootScope, $http, $location, UserService, Authentication
});
ProjectModel.setProjects(_projects);
var projectInCookie = $cookieStore.get("project");
- if(projectInCookie&&ProjectModel.getIndex(projectInCookie)==-1){
+ if (projectInCookie && ProjectModel.getIndex(projectInCookie) == -1) {
projectInCookie = null;
}
var selectedProject = projectInCookie != null ? projectInCookie : null;
- if(projectInCookie!=null){
+ if (projectInCookie != null) {
selectedProject = projectInCookie;
- }else if(UserService.hasRole('ROLE_ADMIN')){
+ } else if (UserService.hasRole('ROLE_ADMIN')) {
selectedProject = null;
- }else{
+ } else {
selectedProject = ProjectModel.projects[0].name
}
@@ -70,7 +70,7 @@ KylinApp.run(function ($rootScope, $http, $location, UserService, Authentication
});
});
- },function(e){
+ }, function (e) {
loadingRequest.hide();
$location.path(UserService.getHomePage());
});
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/less/app.less
----------------------------------------------------------------------
diff --git a/webapp/app/less/app.less b/webapp/app/less/app.less
index cc52b41..5aa2a25 100644
--- a/webapp/app/less/app.less
+++ b/webapp/app/less/app.less
@@ -785,25 +785,25 @@ input:-moz-placeholder {
text-overflow: ellipsis;
}
-.dropdown-menu{
- z-index:9999;
+.dropdown-menu {
+ z-index: 9999;
}
-.panel-group .panel{
+.panel-group .panel {
overflow: auto !important;
}
-.middle-popover .popover{
+.middle-popover .popover {
width: 360px;
max-width: 360px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 1.428571429;
- color:#808080;
+ color: #808080;
background-color: #ffffff;
}
-.middle-popover .popover-content, .large-popover .popover-content{
+.middle-popover .popover-content, .large-popover .popover-content {
font-size: 13px;
font-weight: normal;
line-height: 18px;
@@ -812,19 +812,21 @@ input:-moz-placeholder {
word-break: normal;
}
-.middle-popover .popover-content ol, .large-popover .popover-content ol{
+.middle-popover .popover-content ol, .large-popover .popover-content ol {
-webkit-padding-start: 20px;
padding-start: 20px;
}
-.large-popover .popover{
+
+.large-popover .popover {
width: 600px;
max-width: 600px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
- color:#808080;
+ color: #808080;
line-height: 1.428571429;
background-color: #ffffff;
}
+
pre {
white-space: pre-wrap;
white-space: -moz-pre-wrap;
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/less/build.less
----------------------------------------------------------------------
diff --git a/webapp/app/less/build.less b/webapp/app/less/build.less
index be8f7df..4271bac 100644
--- a/webapp/app/less/build.less
+++ b/webapp/app/less/build.less
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
@import 'layout.less';
@import 'navbar.less';
@import 'home.less';
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/less/component.less
----------------------------------------------------------------------
diff --git a/webapp/app/less/component.less b/webapp/app/less/component.less
index 929006f..e23859d 100644
--- a/webapp/app/less/component.less
+++ b/webapp/app/less/component.less
@@ -16,278 +16,365 @@
*/
/** table related **/
-.dataTables_wrapper>.row:first-child {
+.dataTables_wrapper > .row:first-child {
padding-top: 12px;
padding-bottom: 12px;
background-color: #EFF3F8;
}
-.dataTables_wrapper>.row {
- margin: 0!important;
+.dataTables_wrapper > .row {
+ margin: 0 !important;
}
/** utilities **/
.dark {
color: #333333 !important;
}
+
.white {
color: #ffffff !important;
}
+
.red {
color: #dd5a43 !important;
}
+
.red2 {
color: #e08374 !important;
}
+
.light-red {
color: #ff7777 !important;
}
+
.blue {
color: #478fca !important;
}
+
.light-blue {
color: #93cbf9 !important;
}
+
.green {
color: #69aa46 !important;
}
+
.light-green {
color: #b0d877 !important;
}
+
.orange {
color: #ff892a !important;
}
+
.orange2 {
color: #feb902 !important;
}
+
.light-orange {
color: #fcac6f !important;
}
+
.purple {
color: #a069c3 !important;
}
+
.pink {
color: #c6699f !important;
}
+
.pink2 {
color: #d6487e !important;
}
+
.brown {
color: #a52a2a !important;
}
+
.grey {
color: #777777 !important;
}
+
.light-grey {
color: #bbbbbb !important;
}
+
.bigger-110 {
font-size: 110% !important;
}
+
.bigger-120 {
font-size: 120% !important;
}
+
.bigger-130 {
font-size: 130% !important;
}
+
.bigger-140 {
font-size: 140% !important;
}
+
.bigger-150 {
font-size: 150% !important;
}
+
.bigger-160 {
font-size: 160% !important;
}
+
.bigger-170 {
font-size: 170% !important;
}
+
.bigger-180 {
font-size: 180% !important;
}
+
.bigger-190 {
font-size: 190% !important;
}
+
.bigger-200 {
font-size: 200% !important;
}
+
.bigger-210 {
font-size: 210% !important;
}
+
.bigger-220 {
font-size: 220% !important;
}
+
.bigger-230 {
font-size: 230% !important;
}
+
.bigger-240 {
font-size: 240% !important;
}
+
.bigger-250 {
font-size: 250% !important;
}
+
.bigger-260 {
font-size: 260% !important;
}
+
.bigger-270 {
font-size: 270% !important;
}
+
.bigger-280 {
font-size: 280% !important;
}
+
.bigger-290 {
font-size: 290% !important;
}
+
.bigger-300 {
font-size: 300% !important;
}
+
.bigger-115 {
font-size: 115% !important;
}
+
.bigger-125 {
font-size: 125% !important;
}
+
.bigger-175 {
font-size: 175% !important;
}
+
.bigger-225 {
font-size: 225% !important;
}
+
.bigger-275 {
font-size: 275% !important;
}
+
.smaller-90 {
font-size: 90% !important;
}
+
.smaller-80 {
font-size: 80% !important;
}
+
.smaller-70 {
font-size: 70% !important;
}
+
.smaller-60 {
font-size: 60% !important;
}
+
.smaller-50 {
font-size: 50% !important;
}
+
.smaller-40 {
font-size: 40% !important;
}
+
.smaller-30 {
font-size: 30% !important;
}
+
.smaller-20 {
font-size: 20% !important;
}
+
.smaller-75 {
font-size: 75% !important;
}
+
.width-20 {
width: 20% !important;
}
+
.width-25 {
width: 25% !important;
}
+
.width-30 {
width: 30% !important;
}
+
.width-35 {
width: 35% !important;
}
+
.width-40 {
width: 40% !important;
}
+
.width-45 {
width: 45% !important;
}
+
.width-50 {
width: 50% !important;
}
+
.width-55 {
width: 55% !important;
}
+
.width-60 {
width: 60% !important;
}
+
.width-65 {
width: 65% !important;
}
+
.width-70 {
width: 70% !important;
}
+
.width-75 {
width: 75% !important;
}
+
.width-80 {
width: 80% !important;
}
+
.width-85 {
width: 85% !important;
}
+
.width-90 {
width: 90% !important;
}
+
.width-95 {
width: 95% !important;
}
+
.width-100 {
width: 100% !important;
}
+
.width-75 {
width: 75% !important;
}
+
.width-25 {
width: 25% !important;
}
+
.width-auto {
width: auto !important;
}
+
.height-auto {
height: auto !important;
}
+
.no-padding {
padding: 0 !important;
}
+
.no-padding-bottom {
padding-bottom: 0 !important;
}
+
.no-padding-top {
padding-top: 0 !important;
}
+
.no-padding-left {
padding-left: 0 !important;
}
+
.no-padding-right {
padding-right: 0 !important;
}
+
.no-margin {
margin: 0 !important;
}
+
.no-margin-bottom {
margin-bottom: 0 !important;
}
+
.no-margin-top {
margin-top: 0 !important;
}
+
.no-margin-left {
margin-left: 0 !important;
}
+
.no-margin-right {
margin-right: 0 !important;
}
+
.no-border {
border-width: 0;
}
+
.no-border-bottom {
border-bottom-width: 0;
}
+
.no-border-top {
border-top-width: 0;
}
+
.no-border-left {
border-left-width: 0;
}
+
.no-border-right {
border-right-width: 0;
}
@@ -304,25 +391,25 @@ span.input-icon {
.nav-search .nav-search-input {
border: 1px solid #6fb3e0;
width: 152px;
- height: 28px!important;
+ height: 28px !important;
padding-top: 2px;
padding-bottom: 2px;
- border-radius: 4px!important;
+ border-radius: 4px !important;
font-size: 13px;
line-height: 1.3;
- color: #666!important;
+ color: #666 !important;
z-index: 11;
-webkit-transition: width ease .15s;
-o-transition: width ease .15s;
transition: width ease .15s;
}
-.input-icon>input {
+.input-icon > input {
padding-left: 24px;
padding-right: 6px;
}
-.input-icon.input-icon-right>input {
+.input-icon.input-icon-right > input {
padding-left: 6px;
padding-right: 24px;
}
@@ -331,7 +418,7 @@ span.input-icon {
text-align: center;
}
-.input-icon>.ace-icon {
+.input-icon > .ace-icon {
padding: 0 3px;
z-index: 2;
position: absolute;
@@ -344,7 +431,7 @@ span.input-icon {
font-size: 16px;
}
-.input-icon.input-icon-right>.ace-icon {
+.input-icon.input-icon-right > .ace-icon {
left: auto;
right: 3px;
}
@@ -360,6 +447,7 @@ span.input-icon {
margin: 12px 0;
border-top-color: rgba(0, 0, 0, 0.11);
}
+
.hr-double {
height: 3px;
border-top: 1px solid #E3E3E3;
@@ -367,83 +455,103 @@ span.input-icon {
border-top-color: rgba(0, 0, 0, 0.11);
border-bottom-color: rgba(0, 0, 0, 0.11);
}
+
.hr.dotted,
.hr-dotted {
border-style: dotted;
}
+
.hr-32,
.hr32 {
margin: 32px 0;
}
+
.hr-30,
.hr30 {
margin: 30px 0;
}
+
.hr-28,
.hr28 {
margin: 28px 0;
}
+
.hr-26,
.hr26 {
margin: 26px 0;
}
+
.hr-24,
.hr24 {
margin: 24px 0;
}
+
.hr-22,
.hr22 {
margin: 22px 0;
}
+
.hr-20,
.hr20 {
margin: 20px 0;
}
+
.hr-18,
.hr18 {
margin: 18px 0;
}
+
.hr-16,
.hr16 {
margin: 16px 0;
}
+
.hr-14,
.hr14 {
margin: 14px 0;
}
+
.hr-12,
.hr12 {
margin: 12px 0;
}
+
.hr-10,
.hr10 {
margin: 10px 0;
}
+
.hr-8,
.hr8 {
margin: 8px 0;
}
+
.hr-6,
.hr6 {
margin: 6px 0;
}
+
.hr-4,
.hr4 {
margin: 4px 0;
}
+
.hr-2,
.hr2 {
margin: 2px 0;
}
+
.space {
max-height: 1px;
min-height: 1px;
overflow: hidden;
margin: 12px 0;
}
+
[class*="vspace-"] {
display: none;
}
+
.space-32 {
max-height: 1px;
min-height: 1px;
@@ -451,6 +559,7 @@ span.input-icon {
margin: 12px 0;
margin: 32px 0 31px;
}
+
[class*="vspace-32"] {
max-height: 1px;
min-height: 1px;
@@ -458,6 +567,7 @@ span.input-icon {
margin: 12px 0;
margin: 32px 0 31px 0;
}
+
.space-30 {
max-height: 1px;
min-height: 1px;
@@ -465,6 +575,7 @@ span.input-icon {
margin: 12px 0;
margin: 30px 0 29px;
}
+
[class*="vspace-30"] {
max-height: 1px;
min-height: 1px;
@@ -472,6 +583,7 @@ span.input-icon {
margin: 12px 0;
margin: 30px 0 29px 0;
}
+
.space-28 {
max-height: 1px;
min-height: 1px;
@@ -479,6 +591,7 @@ span.input-icon {
margin: 12px 0;
margin: 28px 0 27px;
}
+
[class*="vspace-28"] {
max-height: 1px;
min-height: 1px;
@@ -486,6 +599,7 @@ span.input-icon {
margin: 12px 0;
margin: 28px 0 27px 0;
}
+
.space-26 {
max-height: 1px;
min-height: 1px;
@@ -493,6 +607,7 @@ span.input-icon {
margin: 12px 0;
margin: 26px 0 25px;
}
+
[class*="vspace-26"] {
max-height: 1px;
min-height: 1px;
@@ -500,6 +615,7 @@ span.input-icon {
margin: 12px 0;
margin: 26px 0 25px 0;
}
+
.space-24 {
max-height: 1px;
min-height: 1px;
@@ -507,6 +623,7 @@ span.input-icon {
margin: 12px 0;
margin: 24px 0 23px;
}
+
[class*="vspace-24"] {
max-height: 1px;
min-height: 1px;
@@ -514,6 +631,7 @@ span.input-icon {
margin: 12px 0;
margin: 24px 0 23px 0;
}
+
.space-22 {
max-height: 1px;
min-height: 1px;
@@ -521,6 +639,7 @@ span.input-icon {
margin: 12px 0;
margin: 22px 0 21px;
}
+
[class*="vspace-22"] {
max-height: 1px;
min-height: 1px;
@@ -528,6 +647,7 @@ span.input-icon {
margin: 12px 0;
margin: 22px 0 21px 0;
}
+
.space-20 {
max-height: 1px;
min-height: 1px;
@@ -535,6 +655,7 @@ span.input-icon {
margin: 12px 0;
margin: 20px 0 19px;
}
+
[class*="vspace-20"] {
max-height: 1px;
min-height: 1px;
@@ -542,6 +663,7 @@ span.input-icon {
margin: 12px 0;
margin: 20px 0 19px 0;
}
+
.space-18 {
max-height: 1px;
min-height: 1px;
@@ -549,6 +671,7 @@ span.input-icon {
margin: 12px 0;
margin: 18px 0 17px;
}
+
[class*="vspace-18"] {
max-height: 1px;
min-height: 1px;
@@ -556,6 +679,7 @@ span.input-icon {
margin: 12px 0;
margin: 18px 0 17px 0;
}
+
.space-16 {
max-height: 1px;
min-height: 1px;
@@ -563,6 +687,7 @@ span.input-icon {
margin: 12px 0;
margin: 16px 0 15px;
}
+
[class*="vspace-16"] {
max-height: 1px;
min-height: 1px;
@@ -570,6 +695,7 @@ span.input-icon {
margin: 12px 0;
margin: 16px 0 15px 0;
}
+
.space-14 {
max-height: 1px;
min-height: 1px;
@@ -577,6 +703,7 @@ span.input-icon {
margin: 12px 0;
margin: 14px 0 13px;
}
+
[class*="vspace-14"] {
max-height: 1px;
min-height: 1px;
@@ -584,6 +711,7 @@ span.input-icon {
margin: 12px 0;
margin: 14px 0 13px 0;
}
+
.space-12 {
max-height: 1px;
min-height: 1px;
@@ -591,6 +719,7 @@ span.input-icon {
margin: 12px 0;
margin: 12px 0 11px;
}
+
[class*="vspace-12"] {
max-height: 1px;
min-height: 1px;
@@ -598,6 +727,7 @@ span.input-icon {
margin: 12px 0;
margin: 12px 0 11px 0;
}
+
.space-10 {
max-height: 1px;
min-height: 1px;
@@ -605,6 +735,7 @@ span.input-icon {
margin: 12px 0;
margin: 10px 0 9px;
}
+
[class*="vspace-10"] {
max-height: 1px;
min-height: 1px;
@@ -612,6 +743,7 @@ span.input-icon {
margin: 12px 0;
margin: 10px 0 9px 0;
}
+
.space-8 {
max-height: 1px;
min-height: 1px;
@@ -619,6 +751,7 @@ span.input-icon {
margin: 12px 0;
margin: 8px 0 7px;
}
+
[class*="vspace-8"] {
max-height: 1px;
min-height: 1px;
@@ -626,6 +759,7 @@ span.input-icon {
margin: 12px 0;
margin: 8px 0 7px 0;
}
+
.space-6 {
max-height: 1px;
min-height: 1px;
@@ -633,6 +767,7 @@ span.input-icon {
margin: 12px 0;
margin: 6px 0 5px;
}
+
[class*="vspace-6"] {
max-height: 1px;
min-height: 1px;
@@ -640,6 +775,7 @@ span.input-icon {
margin: 12px 0;
margin: 6px 0 5px 0;
}
+
.space-4 {
max-height: 1px;
min-height: 1px;
@@ -647,6 +783,7 @@ span.input-icon {
margin: 12px 0;
margin: 4px 0 3px;
}
+
[class*="vspace-4"] {
max-height: 1px;
min-height: 1px;
@@ -654,6 +791,7 @@ span.input-icon {
margin: 12px 0;
margin: 4px 0 3px 0;
}
+
.space-2 {
max-height: 1px;
min-height: 1px;
@@ -661,6 +799,7 @@ span.input-icon {
margin: 12px 0;
margin: 2px 0 1px;
}
+
[class*="vspace-2"] {
max-height: 1px;
min-height: 1px;
@@ -668,6 +807,7 @@ span.input-icon {
margin: 12px 0;
margin: 2px 0 1px 0;
}
+
.space-0,
[class*="vspace-0"] {
max-height: 1px;
@@ -676,21 +816,25 @@ span.input-icon {
margin: 12px 0;
margin: 0;
}
+
@media only screen and (max-width: 479px) {
[class*="vspace-"][class*="-xs"] {
display: block;
}
}
+
@media only screen and (max-width: 767px) {
[class*="vspace-"][class*="-sm"] {
display: block;
}
}
+
@media only screen and (max-width: 991px) {
[class*="vspace-"][class*="-md"] {
display: block;
}
}
+
@media only screen and (max-width: 1199px) {
[class*="vspace-"][class*="-lg"] {
display: block;
@@ -706,11 +850,13 @@ span.input-icon {
margin: 0;
position: relative;
}
+
.wizard-steps li {
display: table-cell;
text-align: center;
width: 1%;
}
+
.wizard-steps li .step {
border: 5px solid #ced1d6;
color: #546474;
@@ -725,6 +871,7 @@ span.input-icon {
line-height: 30px;
text-align: center;
}
+
.wizard-steps li:before {
display: block;
content: "";
@@ -737,20 +884,24 @@ span.input-icon {
top: 21px;
z-index: 1;
}
+
.wizard-steps li:last-child:before {
max-width: 50%;
width: 50%;
}
+
.wizard-steps li:first-child:before {
max-width: 51%;
left: 50%;
}
+
.wizard-steps li.active:before,
.wizard-steps li.complete:before,
.wizard-steps li.active .step,
.wizard-steps li.complete .step {
border-color: #5293c4;
}
+
.wizard-steps li.complete .step {
cursor: default;
color: #FFF;
@@ -758,6 +909,7 @@ span.input-icon {
-o-transition: transform ease 0.1s;
transition: transform ease 0.1s;
}
+
.wizard-steps li.complete .step:before {
display: block;
position: absolute;
@@ -775,6 +927,7 @@ span.input-icon {
font-size: 17px;
color: #87ba21;
}
+
.wizard-steps li.complete:hover .step {
-moz-transform: scale(1.1);
-webkit-transform: scale(1.1);
@@ -783,9 +936,11 @@ span.input-icon {
transform: scale(1.1);
border-color: #80afd4;
}
+
.wizard-steps li.complete:hover:before {
border-color: #80afd4;
}
+
.wizard-steps li .title {
display: block;
margin-top: 4px;
@@ -797,24 +952,30 @@ span.input-icon {
table-layout: fixed;
word-wrap: break-word;
}
+
.wizard-steps li.complete .title,
.wizard-steps li.active .title {
color: #2b3d53;
}
+
.step-content {
position: relative;
}
+
.step-content .step-pane {
display: none;
min-height: 200px;
padding: 4px 8px 12px;
}
+
.step-content .step-pane.active {
display: block;
}
+
.wizard-actions {
text-align: right;
}
+
@media only screen and (max-width: 767px) {
.wizard-steps li .step {
width: 30px;
@@ -822,37 +983,43 @@ span.input-icon {
line-height: 24px;
border-width: 3px;
}
+
.wizard-steps li:before,
.wizard-steps li:after {
border-width: 3px;
}
+
.wizard-steps li.complete .step:before {
line-height: 24px;
font-size: 13px;
}
+
.wizard-steps li:before {
top: 16px;
}
+
.step-content .step-pane {
padding: 4px 4px 6px;
min-height: 150px;
}
}
-.progress-bar-inverse{
+
+.progress-bar-inverse {
background-color: #000000;
}
-.progress-bar-pending{
+
+.progress-bar-pending {
background-color: #C6C41D;
}
.sort-item {
- padding: 2px;
- width: 50px;
- height: 20px;
- cursor: move;
+ padding: 2px;
+ width: 50px;
+ height: 20px;
+ cursor: move;
}
-.cube-dimension .dl-horizontal{
+.cube-dimension .dl-horizontal {
margin-top: 0px !important;
margin-bottom: 0px !important;
}
@@ -863,12 +1030,15 @@ span.input-icon {
border-radius: 3px;
border: 1px solid #CCCCCC;
}
+
.chosen-container-single .chosen-single span {
padding-top: 2px;
}
+
.chosen-container-single .chosen-single div b {
margin-top: 2px;
}
+
.chosen-container-active .chosen-single,
.chosen-container-active.chosen-with-drop .chosen-single {
border-color: #ccc;
@@ -879,14 +1049,13 @@ span.input-icon {
box-shadow: 0 0 8px rgba(82, 168, 236, .6)
}
-
//override callout info in AdinLTE.css
.callout {
- margin: 0 0 20px 0 !important;
- padding: 15px 30px 15px 15px !important;
- border-left: 5px solid #eee !important;
- color: black !important;
- }
+ margin: 0 0 20px 0 !important;
+ padding: 15px 30px 15px 15px !important;
+ border-left: 5px solid #eee !important;
+ color: black !important;
+}
.callout.callout-info {
background-color: #f0f7fd !important;
@@ -895,8 +1064,8 @@ span.input-icon {
}
.callout.callout-danger {
- background-color: #fcf2f2 !important;
- border-color: #dFb5b4 !important;
+ background-color: #fcf2f2 !important;
+ border-color: #dFb5b4 !important;
color: black !important;
}
@@ -906,18 +1075,18 @@ span.input-icon {
color: black !important;
}
-ul.messenger-theme-ice .messenger-message{
- color:#666667 !important;
+ul.messenger-theme-ice .messenger-message {
+ color: #666667 !important;
}
-.messenger-message.alert{
+
+.messenger-message.alert {
background-color: #f6f6f6 !important;
}
-.model-dimension-edit .chosen-container{
- width:100% !important;
+.model-dimension-edit .chosen-container {
+ width: 100% !important;
}
-
//overwrite style for abn-tree
.abn-tree-animate-enter,
li.abn-tree-row.ng-enter {
@@ -925,12 +1094,13 @@ li.abn-tree-row.ng-enter {
position: relative;
display: block;
opacity: 0;
- max-height:0px;
+ max-height: 0px;
}
+
.abn-tree-animate-enter.abn-tree-animate-enter-active,
-li.abn-tree-row.ng-enter-active{
+li.abn-tree-row.ng-enter-active {
opacity: 1;
- max-height:30px;
+ max-height: 30px;
}
.abn-tree-animate-leave,
@@ -938,65 +1108,69 @@ li.abn-tree-row.ng-leave {
transition: 200ms linear all;
position: relative;
display: block;
- height:30px;
+ height: 30px;
max-height: 30px;
opacity: 1;
}
+
.abn-tree-animate-leave.abn-tree-animate-leave-active,
li.abn-tree-row.ng-leave-active {
height: 0px;
- max-height:0px;
+ max-height: 0px;
opacity: 0;
}
-
/*
------------------------------------------
Angular 1.2.0 Animation
*/
-
-.abn-tree-animate.ng-enter{
+.abn-tree-animate.ng-enter {
}
-.abn-tree-animate.ng-enter{
+
+.abn-tree-animate.ng-enter {
}
-.abn-tree .indented {
+.abn-tree .indented {
font-size: 13px;
color: #3a87ad;
}
-ul.abn-tree li.abn-tree-row a{
- word-break: break-all;
+
+ul.abn-tree li.abn-tree-row a {
+ word-break: break-all;
}
-.model-design .btn-box-tool{
+
+.model-design .btn-box-tool {
font-size: 13px !important;
}
-.dropdown-menu a{
+
+.dropdown-menu a {
cursor: pointer;
}
-.box-2px{
- border-top:solid 2px #3c8dbc !important;
+.box-2px {
+ border-top: solid 2px #3c8dbc !important;
}
-.abn-tree i.indented{
- font-size:14px !important;
+.abn-tree i.indented {
+ font-size: 14px !important;
}
//form validate
-.has-feedback{
+.has-feedback {
}
-.highlight-bule{
- color:#428bca !important;
+
+.highlight-bule {
+ color: #428bca !important;
}
-.sweet-alert .lead.text-muted{
- word-break:break-all;
+.sweet-alert .lead.text-muted {
+ word-break: break-all;
}
-.modal-body.streaming-source .ace_editor{
+.modal-body.streaming-source .ace_editor {
height: 600px !important;
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/less/home.less
----------------------------------------------------------------------
diff --git a/webapp/app/less/home.less b/webapp/app/less/home.less
index ed7a0a4..e123976 100644
--- a/webapp/app/less/home.less
+++ b/webapp/app/less/home.less
@@ -18,7 +18,7 @@
/** Home page style **/
.bg-holder {
position: absolute;
- top:0;
+ top: 0;
left: 0;
width: 100%;
}
@@ -80,7 +80,7 @@
}
/** Login page **/
-.login-backgroud{
+.login-backgroud {
background-color: #FFF;
}
@@ -89,7 +89,7 @@
margin: 0 auto;
}
-.mylogin-body{
+.mylogin-body {
margin-top: 100px;
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/less/layout.less
----------------------------------------------------------------------
diff --git a/webapp/app/less/layout.less b/webapp/app/less/layout.less
index 2553ab2..d9501f2 100644
--- a/webapp/app/less/layout.less
+++ b/webapp/app/less/layout.less
@@ -15,15 +15,16 @@
* limitations under the License.
*/
-.navbar-fixed-top+.main-container {
+.navbar-fixed-top + .main-container {
padding-top: 45px;
}
-body{
+body {
overflow: auto !important;
min-width: 960px;
}
+
.main-container {
padding-bottom: 45px;
min-width: 960px;
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/less/navbar.less
----------------------------------------------------------------------
diff --git a/webapp/app/less/navbar.less b/webapp/app/less/navbar.less
index d56b98a..b3e4eeb 100644
--- a/webapp/app/less/navbar.less
+++ b/webapp/app/less/navbar.less
@@ -46,48 +46,49 @@
padding-right: 12px;
}
-@media only screen and (max-height: 320px){
+@media only screen and (max-height: 320px) {
.navbar-fixed-top .navbar-collapse {
max-height: 200px;
}
}
-@media only screen and (max-height: 360px){
+@media only screen and (max-height: 360px) {
.navbar-fixed-top .navbar-collapse {
max-height: 240px;
}
}
-@media only screen and (max-height: 400px){
+@media only screen and (max-height: 400px) {
.navbar-fixed-top .navbar-collapse {
max-height: 280px;
}
}
-@media only screen and (max-width: 991px){
+@media only screen and (max-width: 991px) {
.navbar .navbar-nav {
margin: 0 -6px;
}
}
-@media only screen and (max-width: 991px){
- .navbar .navbar-nav>li:first-child {
+@media only screen and (max-width: 991px) {
+ .navbar .navbar-nav > li:first-child {
border-top-width: 0;
}
}
-@media only screen and (max-width: 991px){
- .navbar .navbar-nav>li, .navbar .navbar-nav>li:first-child {
+
+@media only screen and (max-width: 991px) {
+ .navbar .navbar-nav > li, .navbar .navbar-nav > li:first-child {
border-width: 1px 0 0;
}
}
-@media only screen and (max-width: 991px){
- .navbar .navbar-nav .dropdown-menu>li>a {
- color: #FFF!important;
+@media only screen and (max-width: 991px) {
+ .navbar .navbar-nav .dropdown-menu > li > a {
+ color: #FFF !important;
}
}
-@media only screen and (max-width: 991px){
+@media only screen and (max-width: 991px) {
.navbar .navbar-nav .dropdown-menu {
float: none;
position: relative;
@@ -97,24 +98,24 @@
}
}
-@media only screen and (max-width: 767px){
+@media only screen and (max-width: 767px) {
.user-menu.dropdown-close.dropdown-menu-right {
- right: 0!important;
+ right: 0 !important;
}
}
-.navbar .navbar-nav>li:first-child {
+.navbar .navbar-nav > li:first-child {
border-width: 0 1px;
}
-.navbar .navbar-nav>li {
- border: 1px solid rgba(0,0,0,.2);
+.navbar .navbar-nav > li {
+ border: 1px solid rgba(0, 0, 0, .2);
border-width: 0 1px 0 0;
}
-.navbar .navbar-nav>li.open>a, .navbar .navbar-nav>li>a:focus, .navbar .navbar-nav>li>a:hover {
- background-color: rgba(0,0,0,.1)!important;
- color: #fff!important;
+.navbar .navbar-nav > li.open > a, .navbar .navbar-nav > li > a:focus, .navbar .navbar-nav > li > a:hover {
+ background-color: rgba(0, 0, 0, .1) !important;
+ color: #fff !important;
}
.navbar .navbar-brand:focus, .navbar .navbar-brand:hover {
@@ -130,38 +131,42 @@
height: auto;
}
-.navbar .navbar-nav>li>a {
+.navbar .navbar-nav > li > a {
padding-top: 12px;
padding-bottom: 11px;
height: 45px;
background-color: transparent;
font-size: 13px;
color: #fff;
- text-shadow: 0 1px 0 rgba(0,0,0,.25);
+ text-shadow: 0 1px 0 rgba(0, 0, 0, .25);
}
-.navbar-nav:not(.navbar-right)> li > a {
+.navbar-nav:not(.navbar-right) > li > a {
font-size: 16px !important;
}
-.navbar-nav> li.purple > a {
+
+.navbar-nav > li.purple > a {
background-color: #892e65;
}
-.navbar-nav> li.purple > a:link {
+
+.navbar-nav > li.purple > a:link {
+ background-color: #892e65 !important;
+}
+
+.navbar-nav > li.purple > a:visited {
background-color: #892e65 !important;
- }
-.navbar-nav> li.purple > a:visited {
- background-color: #892e65 !important;
}
-.navbar-nav>li.purple>a:hover {
- background-color: #762c59 !important;
+
+.navbar-nav > li.purple > a:hover {
+ background-color: #762c59 !important;
}
-.navbar-nav> li.green > a {
+.navbar-nav > li.green > a {
background-color: #2e8965;
}
-.navbar-nav>li.green>a:hover {
- background-color: #2c7659 !important;
+.navbar-nav > li.green > a:hover {
+ background-color: #2c7659 !important;
}
.user-info {
@@ -195,11 +200,11 @@
margin-left: 7px;
}
-.navbar .navbar-nav>li>.dropdown-menu>li>a {
+.navbar .navbar-nav > li > .dropdown-menu > li > a {
line-height: 2;
}
-.dropdown-menu>li>a {
+.dropdown-menu > li > a {
font-size: 13px;
padding-left: 11px;
padding-right: 11px;
@@ -207,7 +212,7 @@
margin-top: 1px;
}
-.user-menu>li>a {
+.user-menu > li > a {
padding: 4px 12px;
}
@@ -215,7 +220,8 @@
left: auto;
right: -5px;
}
-.navbar-nav>li>.dropdown-menu {
+
+.navbar-nav > li > .dropdown-menu {
z-index: 1033;
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/partials/footer.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/footer.html b/webapp/app/partials/footer.html
index d0a513a..ca42ed0 100644
--- a/webapp/app/partials/footer.html
+++ b/webapp/app/partials/footer.html
@@ -17,12 +17,13 @@
-->
<nav class="navbar-inner">
- <div class="container">
- <div class="copyright">
+ <div class="container">
+ <div class="copyright">
<span>
<a href="http://kylin.apache.org" style="color:#808080;"><i class="fa fa-home"></i> Apache Kylin</a> |
- <a href="http://kylin.apache.org/community/" style="color:#808080;"><i class="fa fa-users"></i> Apache Kylin Community</a>
+ <a href="http://kylin.apache.org/community/" style="color:#808080;"><i class="fa fa-users"></i> Apache
+ Kylin Community</a>
</span>
- </div>
</div>
+ </div>
</nav>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/partials/header.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/header.html b/webapp/app/partials/header.html
index b87fea1..6249f51 100644
--- a/webapp/app/partials/header.html
+++ b/webapp/app/partials/header.html
@@ -17,61 +17,68 @@
-->
<div class="navbar-container" id="navbar-container">
- <div class="navbar navbar-default" role="navigation">
- <div class="container-fluid">
- <div class="navbar-header">
- <a class="navbar-brand" href="query" style="padding: 2px 10px 0px 0px"><img src="image/logo.png" height="40px" width="40px"/><small> Kylin </small></a>
- </div>
+ <div class="navbar navbar-default" role="navigation">
+ <div class="container-fluid">
+ <div class="navbar-header">
+ <a class="navbar-brand" href="query" style="padding: 2px 10px 0px 0px"><img src="image/logo.png" height="40px"
+ width="40px"/>
+ <small> Kylin</small>
+ </a>
+ </div>
- <div class="navbar-collapse collapse" collapse="isCollapsed">
- <ul class="nav navbar-nav">
- <li class="project-cntnr" style="padding:7px 15px;background-color:#2e8965;" ng-if="userService.isAuthorized()">
- <select chosen ng-model="projectModel.selectedProject" ng-init="newAccess.permission=permissions.READ.value;"
- ng-options="project.name as project.name for project in projectModel.projects"
- style="width: 180px"
- data-placeholder="select a project"
- class="chosen-select">
- <option ng-if="userService.hasRole('ROLE_ADMIN')" ng-selected="projectModel.selectedProject==null" value=""> -- Choose Project -- </option>
- </select>
- </li>
- <li class="{{activeTab=='query'?'purple':'green'}}" ng-if="userService.isAuthorized()">
- <a href="query">Insight</a>
- </li>
- <li class="{{activeTab=='models'?'purple':'green'}}" ng-if="userService.isAuthorized()">
- <a href="models">Model</a>
- </li>
- <li class="{{activeTab=='jobs'?'purple':'green'}}" ng-if="userService.isAuthorized()">
- <a href="jobs">Monitor</a>
- </li>
- <li class="{{activeTab=='admin'?'purple':'green'}}" ng-if="userService.isAuthorized()">
- <a href="admin">System</a>
- </li>
- </ul>
- <ul class="nav navbar-nav navbar-right">
- <li class="dropdown light-blue" ng-if="config.documents.length > 0">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-book"></i> Help <i class="ace-icon fa fa-caret-down"></i></a>
- <ul class="user-menu dropdown-menu-right dropdown-menu dropdown-yellow dropdown-caret dropdown-close">
- <li ng-repeat="document in config.documents" ng-if="document.link">
- <a target="_blank" href="{{document.link}}" >{{document.displayName}}</a>
- </li>
- </ul>
- </li>
- <li class="purple" ng-if="!userService.isAuthorized()"><a href="login">Login</a></li>
- <li class="dropdown light-blue" ng-if="userService.isAuthorized()">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown">
- <span class="user-info"><small>Welcome,</small> {{userService.getCurUser().userDetails.username}}</span>
- <i class="ace-icon fa fa-caret-down"></i>
- </a>
- <ul class="user-menu dropdown-menu-right dropdown-menu dropdown-yellow dropdown-caret dropdown-close" role="menu">
- <li> <a ng-click="logout()"><i class="ace-icon fa fa-power-off"></i> Logout</a> </li>
- </ul>
- </li>
- </ul>
- </div>
- </div>
+ <div class="navbar-collapse collapse" collapse="isCollapsed">
+ <ul class="nav navbar-nav">
+ <li class="project-cntnr" style="padding:7px 15px;background-color:#2e8965;"
+ ng-if="userService.isAuthorized()">
+ <select chosen ng-model="projectModel.selectedProject"
+ ng-init="newAccess.permission=permissions.READ.value;"
+ ng-options="project.name as project.name for project in projectModel.projects"
+ style="width: 180px"
+ data-placeholder="select a project"
+ class="chosen-select">
+ <option ng-if="userService.hasRole('ROLE_ADMIN')" ng-selected="projectModel.selectedProject==null"
+ value=""> -- Choose Project --
+ </option>
+ </select>
+ </li>
+ <li class="{{activeTab=='query'?'purple':'green'}}" ng-if="userService.isAuthorized()">
+ <a href="query">Insight</a>
+ </li>
+ <li class="{{activeTab=='models'?'purple':'green'}}" ng-if="userService.isAuthorized()">
+ <a href="models">Model</a>
+ </li>
+ <li class="{{activeTab=='jobs'?'purple':'green'}}" ng-if="userService.isAuthorized()">
+ <a href="jobs">Monitor</a>
+ </li>
+ <li class="{{activeTab=='admin'?'purple':'green'}}" ng-if="userService.isAuthorized()">
+ <a href="admin">System</a>
+ </li>
+ </ul>
+ <ul class="nav navbar-nav navbar-right">
+ <li class="dropdown light-blue" ng-if="config.documents.length > 0">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-book"></i> Help <i
+ class="ace-icon fa fa-caret-down"></i></a>
+ <ul class="user-menu dropdown-menu-right dropdown-menu dropdown-yellow dropdown-caret dropdown-close">
+ <li ng-repeat="document in config.documents" ng-if="document.link">
+ <a target="_blank" href="{{document.link}}">{{document.displayName}}</a>
+ </li>
+ </ul>
+ </li>
+ <li class="purple" ng-if="!userService.isAuthorized()"><a href="login">Login</a></li>
+ <li class="dropdown light-blue" ng-if="userService.isAuthorized()">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <span class="user-info"><small>Welcome,</small> {{userService.getCurUser().userDetails.username}}</span>
+ <i class="ace-icon fa fa-caret-down"></i>
+ </a>
+ <ul class="user-menu dropdown-menu-right dropdown-menu dropdown-yellow dropdown-caret dropdown-close"
+ role="menu">
+ <li><a ng-click="logout()"><i class="ace-icon fa fa-power-off"></i> Logout</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
</div>
-
-
+ </div>
</div>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/partials/home.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/home.html b/webapp/app/partials/home.html
index f6c63d0..1e5cf02 100644
--- a/webapp/app/partials/home.html
+++ b/webapp/app/partials/home.html
@@ -18,48 +18,48 @@
<!--Big Background Image-->
<div class="bg-holder">
- <img src="image/Himg.png" />
+ <img src="image/Himg.png"/>
</div>
<!--Carousel Part-->
<div style="height: 442px;">
- <carousel interval="myInterval">
- <slide ng-repeat="slide in slides" active="slide.active">
- <img ng-src="{{slide.image}}" />
- <div class="carousel-caption">
- <h1>{{slide.caption}}</h1>
- <p>{{slide.text}}</p>
- </div>
- </slide>
- </carousel>
+ <carousel interval="myInterval">
+ <slide ng-repeat="slide in slides" active="slide.active">
+ <img ng-src="{{slide.image}}"/>
+ <div class="carousel-caption">
+ <h1>{{slide.caption}}</h1>
+ <p>{{slide.text}}</p>
+ </div>
+ </slide>
+ </carousel>
</div>
<!--Features Part-->
<div id="features" class="container marketing">
- <div class="row">
- <div class="col-xs-12 col-sm-4 feature">
- <a><i class="fa fa-cubes fa-5x"></i></a>
- <h2>Create Cube</h2>
- <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies
- vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo
- cursus magna.</p>
- <p><a class="btn btn-default" href="cubes" role="button">View details �</a></p>
- </div>
- <div class="col-xs-12 col-sm-4 feature">
- <a><i class="fa fa-tasks fa-5x"></i></a>
- <h2>Query Online</h2>
- <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras
- mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris
- condimentum nibh.</p>
- <p><a class="btn btn-default" href="query" role="button">View details �</a></p>
- </div>
- <div class="col-xs-12 col-sm-4 feature">
- <a><i class="fa fa-sort-amount-asc fa-5x"></i></a>
- <h2>Jobs</h2>
- <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula
- porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh,
- ut fermentum massa justo sit amet risus.</p>
- <p><a class="btn btn-default" href="jobs" role="button">View details �</a></p>
- </div>
+ <div class="row">
+ <div class="col-xs-12 col-sm-4 feature">
+ <a><i class="fa fa-cubes fa-5x"></i></a>
+ <h2>Create Cube</h2>
+ <p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies
+ vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo
+ cursus magna.</p>
+ <p><a class="btn btn-default" href="cubes" role="button">View details �</a></p>
</div>
+ <div class="col-xs-12 col-sm-4 feature">
+ <a><i class="fa fa-tasks fa-5x"></i></a>
+ <h2>Query Online</h2>
+ <p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras
+ mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris
+ condimentum nibh.</p>
+ <p><a class="btn btn-default" href="query" role="button">View details �</a></p>
+ </div>
+ <div class="col-xs-12 col-sm-4 feature">
+ <a><i class="fa fa-sort-amount-asc fa-5x"></i></a>
+ <h2>Jobs</h2>
+ <p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula
+ porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh,
+ ut fermentum massa justo sit amet risus.</p>
+ <p><a class="btn btn-default" href="jobs" role="button">View details �</a></p>
+ </div>
+ </div>
</div>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/partials/login.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/login.html b/webapp/app/partials/login.html
index 452257b..faffb87 100644
--- a/webapp/app/partials/login.html
+++ b/webapp/app/partials/login.html
@@ -17,45 +17,47 @@
-->
<div class="my-light-login login-layout login-backgroud">
- <div class="main-container ">
- <div class="main-content row">
- <div class="col-sm-10 col-sm-offset-1">
- <div class="login-container mylogin-body">
- <div class="login-box box box-solid">
- <div class="box-header">
- <div class="box-title">
- <h4 class="header blue lighter bigger"> <i class="ace-icon fa fa-coffee green"></i> Sign in </h4>
- </div>
- </div>
- <div class="box-body">
- <div class="alert alert-danger animated fadeIn" ng-if="error">{{error}}</div>
- <form name="login_form" ng-submit="login()">
- <div class="form-group">
+ <div class="main-container ">
+ <div class="main-content row">
+ <div class="col-sm-10 col-sm-offset-1">
+ <div class="login-container mylogin-body">
+ <div class="login-box box box-solid">
+ <div class="box-header">
+ <div class="box-title">
+ <h4 class="header blue lighter bigger"><i class="ace-icon fa fa-coffee green"></i> Sign in </h4>
+ </div>
+ </div>
+ <div class="box-body">
+ <div class="alert alert-danger animated fadeIn" ng-if="error">{{error}}</div>
+ <form name="login_form" ng-submit="login()">
+ <div class="form-group">
<span class="width-100 input-icon input-icon-right">
- <input id="username" class="form-control" ng-model="username" type="text" autofocus="autofocus" ng-required placeholder="Username" auto-fill-sync />
+ <input id="username" class="form-control" ng-model="username" type="text"
+ autofocus="autofocus" ng-required placeholder="Username" auto-fill-sync/>
<i class="ace-icon fa fa-user"></i>
</span>
- </div>
- <div class="form-group">
+ </div>
+ <div class="form-group">
<span class="width-100 input-icon input-icon-right">
- <input id="password" class="form-control" ng-model="password" type="password" ng-required placeholder="Password" auto-fill-sync />
+ <input id="password" class="form-control" ng-model="password" type="password"
+ ng-required placeholder="Password" auto-fill-sync/>
<i class="ace-icon fa fa-lock"></i>
</span>
- </div>
- <div class="space"></div>
- <div class="form-group">
- <a href="http://kylin.apache.org/community/" target="_blank" class="text-muted">Login Issue?</a>
- <button class="pull-right btn btn-sm btn-primary" type="submit" ng-disabled="login_form.$invalid">
- <i class="ace-icon fa fa-key"></i>
- <span class="bigger-110">{{loading? 'Logging In...': 'Log In'}}</span>
- </button>
- </div>
- <div class="space-4"></div>
- </form>
- </div>
- </div>
</div>
+ <div class="space"></div>
+ <div class="form-group">
+ <a href="http://kylin.apache.org/community/" target="_blank" class="text-muted">Login Issue?</a>
+ <button class="pull-right btn btn-sm btn-primary" type="submit" ng-disabled="login_form.$invalid">
+ <i class="ace-icon fa fa-key"></i>
+ <span class="bigger-110">{{loading? 'Logging In...': 'Log In'}}</span>
+ </button>
+ </div>
+ <div class="space-4"></div>
+ </form>
</div>
+ </div>
</div>
+ </div>
</div>
+ </div>
</div>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/routes.json
----------------------------------------------------------------------
diff --git a/webapp/app/routes.json b/webapp/app/routes.json
index f4a2e91..75be448 100644
--- a/webapp/app/routes.json
+++ b/webapp/app/routes.json
@@ -1,100 +1,100 @@
[
- {
- "url": "/jobs",
- "params": {
- "templateUrl": "partials/jobs/jobs.html",
- "tab": "jobs",
- "controller": "JobCtrl"
- }
- },
- {
- "url": "/projects",
- "params": {
- "templateUrl": "partials/projects/projects.html",
- "tab": "query",
- "controller": "ProjectCtrl"
- }
- },
- {
- "url": "/cubes/add/",
- "params": {
- "templateUrl": "partials/cubes/cube_edit.html",
- "tab": "models",
- "controller": "CubeEditCtrl"
- }
- },
- {
- "url": "/cubes/edit/:cubeName/json",
- "params": {
- "templateUrl": "partials/cubes/cube_json_edit.html",
- "tab": "models",
- "controller": "CubeEditCtrl"
- }
- },
- {
- "url": "/cubes/edit/:cubeName",
- "params": {
- "templateUrl": "partials/cubes/cube_edit.html",
- "tab": "models",
- "controller": "CubeEditCtrl"
- }
- },
- {
- "url": "/sourceMeta",
- "params": {
- "templateUrl": "partials/tables/source_metadata.html",
- "tab": "sourceMeta",
- "controller": "SourceMetaCtrl"
- }
- },
- {
- "url": "/query",
- "params": {
- "templateUrl": "partials/query/query.html",
- "tab": "query",
- "controller": "QueryCtrl",
- "reloadOnSearch": false
- }
- },
- {
- "url": "/admin",
- "params": {
- "templateUrl": "partials/admin/admin.html",
- "tab": "admin",
- "controller": "AdminCtrl",
- "reloadOnSearch": false
- }
- },
- {
- "url": "/login",
- "params": {
- "templateUrl": "partials/login.html",
- "controller": "LoginCtrl",
- "reloadOnSearch": false
- }
- },
- {
- "url": "/models",
- "params": {
- "templateUrl": "partials/models/models.html",
- "tab": "models",
- "controller": "ModelsCtrl"
- }
- },
- {
- "url": "/models/add",
- "params": {
- "templateUrl": "partials/models/model_edit.html",
- "tab": "models",
- "controller": "ModelEditCtrl"
- }
- },
- {
- "url": "/models/edit/:modelName",
- "params": {
- "templateUrl": "partials/models/model_edit.html",
- "tab": "models",
- "controller": "ModelEditCtrl"
- }
+ {
+ "url": "/jobs",
+ "params": {
+ "templateUrl": "partials/jobs/jobs.html",
+ "tab": "jobs",
+ "controller": "JobCtrl"
}
+ },
+ {
+ "url": "/projects",
+ "params": {
+ "templateUrl": "partials/projects/projects.html",
+ "tab": "query",
+ "controller": "ProjectCtrl"
+ }
+ },
+ {
+ "url": "/cubes/add/",
+ "params": {
+ "templateUrl": "partials/cubes/cube_edit.html",
+ "tab": "models",
+ "controller": "CubeEditCtrl"
+ }
+ },
+ {
+ "url": "/cubes/edit/:cubeName/json",
+ "params": {
+ "templateUrl": "partials/cubes/cube_json_edit.html",
+ "tab": "models",
+ "controller": "CubeEditCtrl"
+ }
+ },
+ {
+ "url": "/cubes/edit/:cubeName",
+ "params": {
+ "templateUrl": "partials/cubes/cube_edit.html",
+ "tab": "models",
+ "controller": "CubeEditCtrl"
+ }
+ },
+ {
+ "url": "/sourceMeta",
+ "params": {
+ "templateUrl": "partials/tables/source_metadata.html",
+ "tab": "sourceMeta",
+ "controller": "SourceMetaCtrl"
+ }
+ },
+ {
+ "url": "/query",
+ "params": {
+ "templateUrl": "partials/query/query.html",
+ "tab": "query",
+ "controller": "QueryCtrl",
+ "reloadOnSearch": false
+ }
+ },
+ {
+ "url": "/admin",
+ "params": {
+ "templateUrl": "partials/admin/admin.html",
+ "tab": "admin",
+ "controller": "AdminCtrl",
+ "reloadOnSearch": false
+ }
+ },
+ {
+ "url": "/login",
+ "params": {
+ "templateUrl": "partials/login.html",
+ "controller": "LoginCtrl",
+ "reloadOnSearch": false
+ }
+ },
+ {
+ "url": "/models",
+ "params": {
+ "templateUrl": "partials/models/models.html",
+ "tab": "models",
+ "controller": "ModelsCtrl"
+ }
+ },
+ {
+ "url": "/models/add",
+ "params": {
+ "templateUrl": "partials/models/model_edit.html",
+ "tab": "models",
+ "controller": "ModelEditCtrl"
+ }
+ },
+ {
+ "url": "/models/edit/:modelName",
+ "params": {
+ "templateUrl": "partials/models/model_edit.html",
+ "tab": "models",
+ "controller": "ModelEditCtrl"
+ }
+ }
]
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/bower.json
----------------------------------------------------------------------
diff --git a/webapp/bower.json b/webapp/bower.json
index 9fd080f..4d5a311 100755
--- a/webapp/bower.json
+++ b/webapp/bower.json
@@ -31,7 +31,7 @@
"angular-bootstrap-nav-tree": "*",
"components-font-awesome": "~4.3.0",
"bootstrap-sweetalert": "~0.4.3",
- "angular-toggle-switch":"1.3.0",
+ "angular-toggle-switch": "1.3.0",
"angular-ui-select": "0.13.2",
"angular-sanitize": "1.2.18",
"angular-tree-control": "0.2.8",
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/grunt.json
----------------------------------------------------------------------
diff --git a/webapp/grunt.json b/webapp/grunt.json
index 7a7e4c8..3c2cbf8 100755
--- a/webapp/grunt.json
+++ b/webapp/grunt.json
@@ -1,75 +1,81 @@
{
- "bump": {
- "options": {
- "files": ["package.json"],
- "commitFiles": ["package.json", "bower.json", "CHANGELOG.md"]
- }
+ "bump": {
+ "options": {
+ "files": [
+ "package.json"
+ ],
+ "commitFiles": [
+ "package.json",
+ "bower.json",
+ "CHANGELOG.md"
+ ]
+ }
+ },
+ "concat": {
+ "components": {
+ "src": [
+ "app/components/jquery/dist/jquery.min.js",
+ "app/components/bootstrap/dist/js/bootstrap.min.js",
+ "app/components/angular/angular.js",
+ "app/components/angular-animate/angular-animate.min.js",
+ "app/components/angular-route/angular-route.min.js",
+ "app/components/angular-resource/angular-resource.js",
+ "app/components/angular-bootstrap/ui-bootstrap-tpls.min.js",
+ "app/components/angular-cookies/angular-cookies.js",
+ "app/components/angularLocalStorage/src/angularLocalStorage.js",
+ "app/components/angular-base64/angular-base64.min.js",
+ "app/components/ng-grid/build/ng-grid.js",
+ "app/components/ace-builds/src-min-noconflict/ace.js",
+ "app/components/ace-builds/src-min-noconflict/ext-language_tools.js",
+ "app/components/ace-builds/src-min-noconflict/mode-json.js",
+ "app/components/ace-builds/src-min-noconflict/mode-sql.js",
+ "app/components/ace-builds/src-min-noconflict/theme-chrome.js",
+ "app/components/angular-ui-ace/ui-ace.min.js",
+ "app/components/messenger/build/js/messenger.min.js",
+ "app/components/messenger/build/js/messenger-theme-future.js",
+ "app/components/chosen/chosen.jquery.min.js",
+ "app/components/angular-chosen-localytics/chosen.js",
+ "app/components/moment/min/moment.min.js",
+ "app/components/d3/d3.min.js",
+ "app/components/nvd3/nv.d3.min.js",
+ "app/components/angularjs-nvd3-directives/dist/angularjs-nvd3-directives.js",
+ "app/components/bootstrap-sweetalert/lib/sweet-alert.js",
+ "app/components/angular-sweetalert/SweetAlert.js",
+ "app/components/underscore/underscore.js",
+ "app/components/angular-underscore/angular-underscore.js",
+ "app/components/jquery-ui/jquery-ui.min.js",
+ "app/components/angular-ui-sortable/sortable.js",
+ "app/components/angular-toggle-switch/angular-toggle-switch.js",
+ "app/components/angular-ui-select/dist/select.js",
+ "app/components/angular-sanitize/angular-sanitize.js",
+ "tmp/js/scripts.js"
+ ],
+ "dest": "tmp/js/scripts.min.js"
},
- "concat": {
- "components": {
- "src": [
- "app/components/jquery/dist/jquery.min.js",
- "app/components/bootstrap/dist/js/bootstrap.min.js",
- "app/components/angular/angular.js",
- "app/components/angular-animate/angular-animate.min.js",
- "app/components/angular-route/angular-route.min.js",
- "app/components/angular-resource/angular-resource.js",
- "app/components/angular-bootstrap/ui-bootstrap-tpls.min.js",
- "app/components/angular-cookies/angular-cookies.js",
- "app/components/angularLocalStorage/src/angularLocalStorage.js",
- "app/components/angular-base64/angular-base64.min.js",
- "app/components/ng-grid/build/ng-grid.js",
- "app/components/ace-builds/src-min-noconflict/ace.js",
- "app/components/ace-builds/src-min-noconflict/ext-language_tools.js",
- "app/components/ace-builds/src-min-noconflict/mode-json.js",
- "app/components/ace-builds/src-min-noconflict/mode-sql.js",
- "app/components/ace-builds/src-min-noconflict/theme-chrome.js",
- "app/components/angular-ui-ace/ui-ace.min.js",
- "app/components/messenger/build/js/messenger.min.js",
- "app/components/messenger/build/js/messenger-theme-future.js",
- "app/components/chosen/chosen.jquery.min.js",
- "app/components/angular-chosen-localytics/chosen.js",
- "app/components/moment/min/moment.min.js",
- "app/components/d3/d3.min.js",
- "app/components/nvd3/nv.d3.min.js",
- "app/components/angularjs-nvd3-directives/dist/angularjs-nvd3-directives.js",
- "app/components/bootstrap-sweetalert/lib/sweet-alert.js",
- "app/components/angular-sweetalert/SweetAlert.js",
- "app/components/underscore/underscore.js",
- "app/components/angular-underscore/angular-underscore.js",
- "app/components/jquery-ui/jquery-ui.min.js",
- "app/components/angular-ui-sortable/sortable.js",
- "app/components/angular-toggle-switch/angular-toggle-switch.js",
- "app/components/angular-ui-select/dist/select.js",
- "app/components/angular-sanitize/angular-sanitize.js",
- "tmp/js/scripts.js"
- ],
- "dest": "tmp/js/scripts.min.js"
- },
- "css": {
- "src": [
- "app/components/bootstrap/dist/css/bootstrap.min.css",
- "app/components/components-font-awesome/css/font-awesome.css",
- "app/components/ng-grid/ng-grid.css",
- "app/components/angular-tree-control/css/tree-control.css",
- "app/components/angular-tree-control/css/tree-control-attribute.css",
- "app/components/angular-ui-grid/ui-grid.min.css",
- "app/components/animate.css/animate.min.css",
- "app/components/messenger/build/css/messenger.css",
- "app/components/messenger/build/css/messenger-theme-ice.css",
- "app/components/chosen/chosen.css",
- "app/components/angular-chosen-localytics/chosen-spinner.css",
- "app/components/nvd3/nv.d3.min.css",
- "app/css/AdminLTE.css",
- "app/css/skins/_all-skins.min.css",
- "app/components/bootstrap-sweetalert/lib/sweet-alert.css",
- "app/components/angular-bootstrap-nav-tree/dist/abn_tree.css",
- "app/components/angular-toggle-switch/angular-toggle-switch.css",
- "app/components/angular-ui-select/dist/select.css",
- "app/components/angular-bootstrap-datetimepicker/src/css/datetimepicker.css",
- "tmp/css/styles.css"
- ],
- "dest": "tmp/css/styles.min.css"
- }
+ "css": {
+ "src": [
+ "app/components/bootstrap/dist/css/bootstrap.min.css",
+ "app/components/components-font-awesome/css/font-awesome.css",
+ "app/components/ng-grid/ng-grid.css",
+ "app/components/angular-tree-control/css/tree-control.css",
+ "app/components/angular-tree-control/css/tree-control-attribute.css",
+ "app/components/angular-ui-grid/ui-grid.min.css",
+ "app/components/animate.css/animate.min.css",
+ "app/components/messenger/build/css/messenger.css",
+ "app/components/messenger/build/css/messenger-theme-ice.css",
+ "app/components/chosen/chosen.css",
+ "app/components/angular-chosen-localytics/chosen-spinner.css",
+ "app/components/nvd3/nv.d3.min.css",
+ "app/css/AdminLTE.css",
+ "app/css/skins/_all-skins.min.css",
+ "app/components/bootstrap-sweetalert/lib/sweet-alert.css",
+ "app/components/angular-bootstrap-nav-tree/dist/abn_tree.css",
+ "app/components/angular-toggle-switch/angular-toggle-switch.css",
+ "app/components/angular-ui-select/dist/select.css",
+ "app/components/angular-bootstrap-datetimepicker/src/css/datetimepicker.css",
+ "tmp/css/styles.css"
+ ],
+ "dest": "tmp/css/styles.min.css"
}
+ }
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/package.json
----------------------------------------------------------------------
diff --git a/webapp/package.json b/webapp/package.json
index a588a75..b11a162 100644
--- a/webapp/package.json
+++ b/webapp/package.json
@@ -1,22 +1,22 @@
{
- "name": "base",
- "version": "0.0.1",
- "description": "Client Base Applicaion",
- "author": "DataHub",
- "repository": {
- "type:": "git",
- "url": "https://github.com/KylinOLAP/Kylin.git"
- },
- "devDependencies": {
- "grunt": "~0.4.x",
- "grunt-cli": "~0.1.13",
- "grunt-contrib": "~0.7.0",
- "grunt-html2js": "~0.1.3",
- "grunt-bump": "0.0.6",
- "grunt-htmlrefs": "~0.4.1",
- "grunt-regex-replace": "~0.2.5",
- "grunt-lesslint": "~0.8.0",
- "grunt-manifest": "~0.4.0",
- "grunt-conventional-changelog": "~0.1.2"
- }
+ "name": "base",
+ "version": "0.0.1",
+ "description": "Client Base Applicaion",
+ "author": "DataHub",
+ "repository": {
+ "type:": "git",
+ "url": "https://github.com/KylinOLAP/Kylin.git"
+ },
+ "devDependencies": {
+ "grunt": "~0.4.x",
+ "grunt-cli": "~0.1.13",
+ "grunt-contrib": "~0.7.0",
+ "grunt-html2js": "~0.1.3",
+ "grunt-bump": "0.0.6",
+ "grunt-htmlrefs": "~0.4.1",
+ "grunt-regex-replace": "~0.2.5",
+ "grunt-lesslint": "~0.8.0",
+ "grunt-manifest": "~0.4.0",
+ "grunt-conventional-changelog": "~0.1.2"
+ }
}
[5/5] kylin git commit: KYLIN-1786 UI for extended column
Posted by zh...@apache.org.
KYLIN-1786 UI for extended column
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/48180ec5
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/48180ec5
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/48180ec5
Branch: refs/heads/master
Commit: 48180ec5f1d1315e952fd719ba0b640b2eab312a
Parents: 95eb2ff
Author: Jason <ji...@163.com>
Authored: Mon Jul 11 23:53:53 2016 +0800
Committer: Jason <ji...@163.com>
Committed: Tue Jul 12 20:25:25 2016 +0800
----------------------------------------------------------------------
webapp/app/js/directives/directives.js | 43 ++++++++++++++++++
webapp/app/js/model/cubeConfig.js | 2 +-
webapp/app/partials/cubeDesigner/measures.html | 49 ++++++++++++++++++---
3 files changed, 86 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/48180ec5/webapp/app/js/directives/directives.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/directives/directives.js b/webapp/app/js/directives/directives.js
index ae90c82..4b83865 100644
--- a/webapp/app/js/directives/directives.js
+++ b/webapp/app/js/directives/directives.js
@@ -332,6 +332,29 @@ KylinApp.directive('kylinPagination', function ($parse, $q) {
};
}
};
+}).directive("extendedcolumntree", function($compile) {
+ return {
+ restrict: "E",
+ transclude: true,
+ scope: {
+ nextpara: '='
+ },
+ template:
+ '<li class="parent_li">Host Column:<b>{{nextpara.value}}</b></b></li>' +
+ '<li class="parent_li">Extended Column:<b>{{nextpara.next_parameter.value}}</b></li>',
+ compile: function(tElement, tAttr, transclude) {
+ var contents = tElement.contents().remove();
+ var compiledContents;
+ return function(scope, iElement, iAttr) {
+ if(!compiledContents) {
+ compiledContents = $compile(contents, transclude);
+ }
+ compiledContents(scope, function(clone, scope) {
+ iElement.append(clone);
+ });
+ };
+ }
+ };
}).directive('kylinpopover', function ($compile,$templateCache) {
return {
restrict: "A",
@@ -355,4 +378,24 @@ KylinApp.directive('kylinPagination', function ($parse, $q) {
$(element).popover(options);
}
};
+}).directive('extendedColumnReturn', function() {
+ return {
+ require: 'ngModel',
+ link: function(scope, element, attrs, ngModelController) {
+
+ var prefix = "extendedcolumn(";
+ var suffix = ")";
+ ngModelController.$parsers.push(function(data) {
+ //convert data from view format to model format
+ return prefix +data+suffix; //converted
+ });
+
+ ngModelController.$formatters.push(function(data) {
+ //convert data from model format to view format
+ var prefixIndex = data.indexOf("(")+1;
+ var suffixIndex = data.indexOf(")");
+ return data.substring(prefixIndex,suffixIndex); //converted
+ });
+ }
+ }
});
http://git-wip-us.apache.org/repos/asf/kylin/blob/48180ec5/webapp/app/js/model/cubeConfig.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/model/cubeConfig.js b/webapp/app/js/model/cubeConfig.js
index 82dfca4..88e2133 100644
--- a/webapp/app/js/model/cubeConfig.js
+++ b/webapp/app/js/model/cubeConfig.js
@@ -20,7 +20,7 @@ KylinApp.constant('cubeConfig', {
//~ Define metadata & class
measureParamType: ['column', 'constant'],
- measureExpressions: ['SUM', 'MIN', 'MAX', 'COUNT', 'COUNT_DISTINCT',"TOP_N", 'RAW'],
+ measureExpressions: ['SUM', 'MIN', 'MAX', 'COUNT', 'COUNT_DISTINCT',"TOP_N", 'RAW','EXTENDED_COLUMN'],
dimensionDataTypes: ["string", "tinyint", "int", "bigint", "date"],
cubePartitionTypes: ['APPEND'],
joinTypes: [
http://git-wip-us.apache.org/repos/asf/kylin/blob/48180ec5/webapp/app/partials/cubeDesigner/measures.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/measures.html b/webapp/app/partials/cubeDesigner/measures.html
index 5778003..8fcefe3 100755
--- a/webapp/app/partials/cubeDesigner/measures.html
+++ b/webapp/app/partials/cubeDesigner/measures.html
@@ -43,8 +43,9 @@
<td>
<div class="paraTree">
<ul>
- <parametertree ng-if="measure.function.parameter!=null && measure.function.expression!=='TOP_N'" nextpara="measure.function.parameter"></parametertree>
+ <parametertree ng-if="measure.function.parameter!=null && measure.function.expression!=='TOP_N' && measure.function.expression!=='EXTENDED_COLUMN'" nextpara="measure.function.parameter"></parametertree>
<topntree ng-if="measure.function.parameter!=null && measure.function.expression=='TOP_N'" nextpara="measure.function.parameter"></topntree>
+ <extendedcolumntree ng-if="measure.function.parameter!=null && measure.function.expression=='EXTENDED_COLUMN'" nextpara="measure.function.parameter"></extendedcolumntree>
</ul>
</div>
<!--<span ng-if="measure.function.parameter.next_parameter!=null">{{measure.function.parameter.next_parameter |json}}</span>-->
@@ -133,7 +134,8 @@
<div class="form-group middle-popover">
<div class="row">
<label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default">
- <b>Param Value</b> <i class="fa fa-info-circle" kylinpopover placement="right" title="Param Value" template="paramvalueTip.html"></i>
+ <b ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'">Host Column On Fact Table</b>
+ <b ng-if="newMeasure.function.expression !== 'EXTENDED_COLUMN'">Param Value</b> <i class="fa fa-info-circle" kylinpopover placement="right" title="Param Value" template="paramvalueTip.html"></i>
<!--tip for top_n-->
<small ng-if="newMeasure.function.expression == 'TOP_N'" class="help-block" style="color:#3a87ad">(SUM|ORDER BY Column for TOP_N)</small>
</label>
@@ -158,7 +160,9 @@
<!--Return Type-->
<div class="form-group">
<div class="row">
- <label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default"><b>Return Type</b></label>
+ <label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default">
+ <b>Return Type</b> <i ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'" class="fa fa-info-circle" kylinpopover placement="right" title="Return Type" template="returnTypeTip.html"></i>
+ </label>
<div class="col-xs-12 col-sm-6">
<select class="form-control"
ng-if="newMeasure.function.expression == 'COUNT_DISTINCT'"
@@ -174,8 +178,16 @@
ng-options="ddt.value as ddt.name for ddt in cubeConfig.topNTypes">
<option value=""></option>
</select>
+
+ <input extended-column-return
+ ng-if="newMeasure.function.expression == 'EXTENDED_COLUMN'"
+ type="text" placeholder="Return type.." class="form-control"
+ tooltip-trigger="focus"
+ ng-init=""
+ ng-model="newMeasure.function.returntype" required />
+
<span class="font-color-default"
- ng-if="newMeasure.function.expression != 'COUNT_DISTINCT' && newMeasure.function.expression != 'TOP_N'"
+ ng-if="newMeasure.function.expression != 'COUNT_DISTINCT' && newMeasure.function.expression != 'TOP_N' && newMeasure.function.expression != 'EXTENDED_COLUMN' "
><b> {{newMeasure.function.returntype | uppercase}}</b>
</span>
</div>
@@ -227,6 +239,9 @@
<button class="btn btn-sm btn-info" ng-click="addNextParameter()" ng-show="newMeasure.function.expression == 'TOP_N' && nextParameters.length==0"
ng-show="state.mode=='edit'"><i class="fa fa-plus"> Group by Column</i>
</button>
+ <button class="btn btn-sm btn-info" ng-click="addNextParameter()" ng-show="newMeasure.function.expression == 'EXTENDED_COLUMN' && nextParameters.length==0"
+ ng-show="state.mode=='edit'"><i class="fa fa-plus"> Extended Column On Fact Table</i>
+ </button>
</div>
</div>
</div>
@@ -248,7 +263,7 @@
<script type="text/ng-template" id="nextParameter.html">
<div class="modal-header">
- <h4 tooltip="submit" ng-if="newmea.measure&&newmea.measure.function.expression !== 'TOP_N'">Add Parameter</h4>
+ <h4 tooltip="submit" ng-if="newmea.measure&&newmea.measure.function.expression == 'EXTENDED_COLUMN'">Add Extended Column</h4>
<h4 tooltip="submit" ng-if="newmea.measure&&newmea.measure.function.expression == 'TOP_N'">Select Group By Column</h4>
</div>
<div class="modal-body" style="background-color: white">
@@ -258,7 +273,7 @@
<div class="col-md-8">
<div class="row">
<div class="form-group">
- <div class="row" ng-if="newmea.measure&&newmea.measure.function.expression !== 'TOP_N'">
+ <div class="row" ng-if="newmea.measure&&newmea.measure.function.expression !== 'TOP_N' && newmea.measure.function.expression !== 'EXTENDED_COLUMN'">
<label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default"><b>Param Type</b></label>
<div class="col-xs-12 col-sm-6">
<select class="form-control"
@@ -280,7 +295,7 @@
<div class="row">
<div class="form-group">
- <div ng-if="newmea.measure&&newmea.measure.function.expression !== 'TOP_N'" class="row">
+ <div ng-if="newmea.measure&&newmea.measure.function.expression !== 'TOP_N' && newmea.measure.function.expression !== 'EXTENDED_COLUMN" class="row">
<label class="col-xs-12 col-sm-3 control-label no-padding-right font-color-default"><b>Param Value</b></label>
<!--COUNT_DISTINCT-->
<div class="col-xs-12 col-sm-6">
@@ -307,6 +322,17 @@
</div>
</div>
+ <div ng-if="newmea.measure&&newmea.measure.function.expression == 'EXTENDED_COLUMN'" ng-init="nextPara.type='column'" class="row">
+ <label class="col-xs-12 col-sm-4 control-label no-padding-right font-color-default"><b>Extended Column On Fact Table</b></label>
+ <!--COUNT_DISTINCT-->
+ <div class="col-xs-12 col-sm-6">
+ <select class="form-control" chosen
+ ng-model="nextPara.value"
+ ng-options="column as column for column in getCommonMetricColumns(newmea.measure)" >
+ <option value=""></option>
+ </select>
+ </div>
+ </div>
</div>
</div>
@@ -325,7 +351,16 @@
</script>
<script type="text/ng-template" id="paramvalueTip.html">
<ol>
+ <li>Only accept single column in param
<li>Only accept single column in param value with "Column" type</li>
<li>Distinct Count is approximate, please indicate Error Rate, higher accuracy degree accompanied with larger storage size and longer build time</li>
+ value with "Column" type</li>
+ <li>Distinct Count is approximate, please indicate Error Rate, higher accuracy degree accompanied with larger storage size and longer build time</li>
+ </ol>
+</script>
+
+<script type="text/ng-template" id="returnTypeTip.html">
+ <ol>
+
</ol>
</script>
[3/5] kylin git commit: reformat code
Posted by zh...@apache.org.
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/app/css/AdminLTE.css
----------------------------------------------------------------------
diff --git a/webapp/app/css/AdminLTE.css b/webapp/app/css/AdminLTE.css
index 4254ab8..e772ae5 100644
--- a/webapp/app/css/AdminLTE.css
+++ b/webapp/app/css/AdminLTE.css
@@ -14,10 +14,12 @@ html,
body {
min-height: 100%;
}
+
.layout-boxed html,
.layout-boxed body {
height: 100%;
}
+
body {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
@@ -26,20 +28,24 @@ body {
overflow-x: hidden;
overflow-y: auto;
}
+
/* Layout */
.wrapper {
min-height: 100%;
position: static;
overflow: hidden;
}
+
.wrapper:before,
.wrapper:after {
content: " ";
display: table;
}
+
.wrapper:after {
clear: both;
}
+
.layout-boxed .wrapper {
max-width: 1250px;
margin: 0 auto;
@@ -47,9 +53,11 @@ body {
box-shadow: 0 0 8px rgba(0, 0, 0, 0.5);
position: relative;
}
+
.layout-boxed {
background: url('../img/boxed-bg.jpg') repeat fixed;
}
+
/*
* Content Wrapper - contins main content
* ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper ```
@@ -67,11 +75,13 @@ body {
margin-left: 230px;
z-index: 820;
}
+
.layout-top-nav .content-wrapper,
.layout-top-nav .right-side,
.layout-top-nav .main-footer {
margin-left: 0;
}
+
@media (max-width: 767px) {
.content-wrapper,
.right-side,
@@ -79,6 +89,7 @@ body {
margin-left: 0;
}
}
+
@media (min-width: 768px) {
.sidebar-collapse .content-wrapper,
.sidebar-collapse .right-side,
@@ -86,6 +97,7 @@ body {
margin-left: 0;
}
}
+
@media (max-width: 767px) {
.sidebar-open .content-wrapper,
.sidebar-open .right-side,
@@ -96,42 +108,50 @@ body {
transform: translate(230px, 0);
}
}
+
.content-wrapper,
.right-side {
min-height: 100%;
background-color: #ecf0f5;
z-index: 800;
}
+
.main-footer {
background: #fff;
padding: 15px;
color: #444;
border-top: 1px solid #eee;
}
+
/* Fixed layout */
.fixed .main-header,
.fixed .main-sidebar,
.fixed .left-side {
position: fixed;
}
+
.fixed .main-header {
top: 0;
right: 0;
left: 0;
}
+
.fixed .content-wrapper,
.fixed .right-side {
padding-top: 50px;
}
+
@media (max-width: 767px) {
.fixed .content-wrapper,
.fixed .right-side {
padding-top: 100px;
}
}
+
.fixed.layout-boxed .wrapper {
max-width: 100%;
}
+
/* Content */
.content {
min-height: 250px;
@@ -141,6 +161,7 @@ body {
padding-left: 15px;
padding-right: 15px;
}
+
/* H1 - H6 font */
h1,
h2,
@@ -156,10 +177,12 @@ h6,
.h6 {
font-family: sans-serif;
}
+
/* General Links */
a {
color: #3c8dbc;
}
+
a:hover,
a:active,
a:focus {
@@ -167,16 +190,19 @@ a:focus {
text-decoration: none;
color: #72afd2;
}
+
/* Page Header */
.page-header {
margin: 10px 0 20px 0;
font-size: 22px;
}
+
.page-header > small {
color: #666;
display: block;
margin-top: 5px;
}
+
/*
* Component: Main Header
* ----------------------
@@ -186,6 +212,7 @@ a:focus {
max-height: 100px;
z-index: 1030;
}
+
.main-header > .navbar {
margin-bottom: 0;
margin-left: 230px;
@@ -193,33 +220,41 @@ a:focus {
min-height: 50px;
border-radius: 0;
}
+
.layout-top-nav .main-header > .navbar {
- margin-left: 0!important;
+ margin-left: 0 !important;
}
+
.main-header #navbar-search-input {
background: rgba(255, 255, 255, 0.2);
border-color: transparent;
}
+
.main-header #navbar-search-input:focus,
.main-header #navbar-search-input:active {
border-color: rgba(0, 0, 0, 0.1) !important;
background: rgba(255, 255, 255, 0.9);
}
+
.main-header #navbar-search-input::-moz-placeholder {
color: #ccc;
opacity: 1;
}
+
.main-header #navbar-search-input:-ms-input-placeholder {
color: #ccc;
}
+
.main-header #navbar-search-input::-webkit-input-placeholder {
color: #ccc;
}
+
.main-header .navbar-custom-menu,
.main-header .navbar-right {
margin-right: 5px;
float: right;
}
+
@media (max-width: 991px) {
.main-header .navbar-custom-menu a,
.main-header .navbar-right a {
@@ -227,18 +262,22 @@ a:focus {
background: transparent;
}
}
+
@media (max-width: 767px) {
.main-header .navbar-right {
float: none;
}
+
.navbar-collapse .main-header .navbar-right {
margin: 7.5px -15px;
}
+
.main-header .navbar-right > li {
color: inherit;
border: 0;
}
}
+
.main-header .sidebar-toggle {
float: left;
background-color: transparent;
@@ -246,20 +285,25 @@ a:focus {
padding: 15px 15px;
font-family: fontAwesome;
}
+
.main-header .sidebar-toggle:before {
content: "\f0c9";
}
+
.main-header .sidebar-toggle:hover {
color: #fff;
}
+
.main-header .sidebar-toggle .icon-bar {
display: none;
}
+
.main-header .navbar .nav > li.user > a > .fa,
.main-header .navbar .nav > li.user > a > .glyphicon,
.main-header .navbar .nav > li.user > a > .ion {
margin-right: 5px;
}
+
.main-header .navbar .nav > li > a > .label {
position: absolute;
top: 9px;
@@ -269,6 +313,7 @@ a:focus {
padding: 2px 3px;
line-height: .9;
}
+
.main-header .logo {
display: block;
float: left;
@@ -281,23 +326,28 @@ a:focus {
padding: 0 15px;
font-weight: 300;
}
+
.main-header .navbar-brand {
color: #fff;
}
+
.content-header {
position: relative;
padding: 15px 15px 0 15px;
}
+
.content-header > h1 {
margin: 0;
font-size: 24px;
}
+
.content-header > h1 > small {
font-size: 15px;
display: inline-block;
padding-left: 4px;
font-weight: 300;
}
+
.content-header > .breadcrumb {
float: right;
background: transparent;
@@ -310,19 +360,23 @@ a:focus {
right: 10px;
border-radius: 2px;
}
+
.content-header > .breadcrumb > li > a {
color: #444;
text-decoration: none;
display: inline-block;
}
+
.content-header > .breadcrumb > li > a > .fa,
.content-header > .breadcrumb > li > a > .glyphicon,
.content-header > .breadcrumb > li > a > .ion {
margin-right: 5px;
}
+
.content-header > .breadcrumb > li + li:before {
content: '>\00a0';
}
+
@media (max-width: 991px) {
.content-header > .breadcrumb {
position: relative;
@@ -333,51 +387,62 @@ a:focus {
background: #d2d6de;
padding-left: 10px;
}
+
.content-header > .breadcrumb li:before {
color: #97a0b3;
}
}
+
.navbar-toggle {
color: #fff;
border: 0;
margin: 0;
padding: 15px 15px;
}
+
@media (max-width: 991px) {
.navbar-custom-menu .navbar-nav > li {
float: left;
}
+
.navbar-custom-menu .navbar-nav {
margin: 0;
float: left;
}
+
.navbar-custom-menu .navbar-nav > li > a {
padding-top: 15px;
padding-bottom: 15px;
line-height: 20px;
}
}
+
@media (max-width: 767px) {
.main-header {
position: relative;
}
+
.main-header .logo,
.main-header .navbar {
width: 100%;
float: none;
- position: relative!important;
+ position: relative !important;
}
+
.main-header .navbar {
margin: 0;
}
+
.main-header .navbar-custom-menu {
float: right;
}
+
.main-sidebar,
.left-side {
- padding-top: 100px!important;
+ padding-top: 100px !important;
}
}
+
/*
* Component: Sidebar
* ------------------
@@ -396,6 +461,7 @@ a:focus {
-o-transition: -o-transform 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15);
transition: transform 0.3s cubic-bezier(0.32, 1.25, 0.375, 1.15);
}
+
@media (max-width: 767px) {
.main-sidebar,
.left-side {
@@ -405,6 +471,7 @@ a:focus {
transform: translate(-230px, 0);
}
}
+
@media (min-width: 768px) {
.sidebar-collapse .main-sidebar,
.sidebar-collapse .left-side {
@@ -414,6 +481,7 @@ a:focus {
transform: translate(-230px, 0);
}
}
+
@media (max-width: 767px) {
.sidebar-open .main-sidebar,
.sidebar-open .left-side {
@@ -423,40 +491,50 @@ a:focus {
transform: translate(0, 0);
}
}
+
.sidebar {
padding-bottom: 10px;
}
+
.fixed .sidebar {
overflow: auto;
height: 100%;
}
+
.sidebar-form input:focus {
- border-color: transparent!important;
+ border-color: transparent !important;
}
+
.user-panel {
padding: 10px;
}
+
.user-panel:before,
.user-panel:after {
content: " ";
display: table;
}
+
.user-panel:after {
clear: both;
}
+
.user-panel > .image > img {
width: 45px;
height: 45px;
}
+
.user-panel > .info {
font-weight: 600;
padding: 5px 5px 5px 15px;
font-size: 14px;
line-height: 1;
}
+
.user-panel > .info > p {
margin-bottom: 9px;
}
+
.user-panel > .info > a {
text-decoration: none;
padding-right: 5px;
@@ -464,39 +542,47 @@ a:focus {
font-size: 11px;
font-weight: normal;
}
+
.user-panel > .info > a > .fa,
.user-panel > .info > a > .ion,
.user-panel > .info > a > .glyphicon {
margin-right: 3px;
}
+
.sidebar-menu {
list-style: none;
margin: 0;
padding: 0;
}
+
.sidebar-menu > li {
position: relative;
margin: 0;
padding: 0;
}
+
.sidebar-menu > li > a {
padding: 12px 5px 12px 15px;
display: block;
}
+
.sidebar-menu > li > a > .fa,
.sidebar-menu > li > a > .glyphicon,
.sidebar-menu > li > a > .ion {
width: 20px;
}
+
.sidebar-menu > li .label,
.sidebar-menu > li .badge {
margin-top: 3px;
margin-right: 5px;
}
+
.sidebar-menu li.header {
padding: 10px 25px 10px 15px;
font-size: 12px;
}
+
.sidebar-menu li > a > .fa-angle-left {
width: auto;
height: auto;
@@ -504,15 +590,18 @@ a:focus {
margin-right: 10px;
margin-top: 3px;
}
+
.sidebar-menu li.active > a > .fa-angle-left {
-webkit-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
transform: rotate(-90deg);
}
+
.sidebar-menu li.active > .treeview-menu {
display: block;
}
+
.sidebar-menu .treeview-menu {
display: none;
list-style: none;
@@ -520,26 +609,32 @@ a:focus {
margin: 0;
padding-left: 5px;
}
+
.sidebar-menu .treeview-menu .treeview-menu {
padding-left: 20px;
}
+
.sidebar-menu .treeview-menu > li {
margin: 0;
}
+
.sidebar-menu .treeview-menu > li > a {
padding: 5px 5px 5px 15px;
display: block;
font-size: 14px;
}
+
.sidebar-menu .treeview-menu > li > a > .fa,
.sidebar-menu .treeview-menu > li > a > .glyphicon,
.sidebar-menu .treeview-menu > li > a > .ion {
width: 20px;
}
+
.sidebar-menu .treeview-menu > li > a > .fa-angle-left,
.sidebar-menu .treeview-menu > li > a > .fa-angle-down {
width: auto;
}
+
/*
* Component: Dropdown menus
* -------------------------
@@ -549,21 +644,26 @@ a:focus {
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
border-color: #eee;
}
+
.dropdown-menu > li > a {
color: #777;
}
+
.dropdown-menu > li > a > .glyphicon,
.dropdown-menu > li > a > .fa,
.dropdown-menu > li > a > .ion {
margin-right: 10px;
}
+
.dropdown-menu > li > a:hover {
background-color: #e1e3e9;
color: #333;
}
+
.dropdown-menu > .divider {
background-color: #eee;
}
+
/*
Navbar custom dropdown menu
------------------------------------
@@ -573,19 +673,22 @@ a:focus {
.navbar-nav > .tasks-menu {
position: relative;
}
+
.navbar-nav > .notifications-menu > .dropdown-menu,
.navbar-nav > .messages-menu > .dropdown-menu,
.navbar-nav > .tasks-menu > .dropdown-menu {
width: 280px;
- padding: 0 0 0 0!important;
- margin: 0!important;
+ padding: 0 0 0 0 !important;
+ margin: 0 !important;
top: 100%;
}
+
.navbar-nav > .notifications-menu > .dropdown-menu > li,
.navbar-nav > .messages-menu > .dropdown-menu > li,
.navbar-nav > .tasks-menu > .dropdown-menu > li {
position: relative;
}
+
.navbar-nav > .notifications-menu > .dropdown-menu > li.header,
.navbar-nav > .messages-menu > .dropdown-menu > li.header,
.navbar-nav > .tasks-menu > .dropdown-menu > li.header {
@@ -599,6 +702,7 @@ a:focus {
color: #444444;
font-size: 14px;
}
+
.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,
.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,
.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a {
@@ -610,23 +714,26 @@ a:focus {
background-color: #fff;
padding: 7px 10px;
border-bottom: 1px solid #eeeeee;
- color: #444!important;
+ color: #444 !important;
text-align: center;
}
+
@media (max-width: 991px) {
.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,
.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,
.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a {
- background: #fff!important;
- color: #444!important;
+ background: #fff !important;
+ color: #444 !important;
}
}
+
.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover,
.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover,
.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover {
text-decoration: none;
font-weight: normal;
}
+
.navbar-nav > .notifications-menu > .dropdown-menu > li .menu,
.navbar-nav > .messages-menu > .dropdown-menu > li .menu,
.navbar-nav > .tasks-menu > .dropdown-menu > li .menu {
@@ -636,6 +743,7 @@ a:focus {
list-style: none;
overflow-x: hidden;
}
+
.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,
.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a {
@@ -644,12 +752,14 @@ a:focus {
/* Prevent text from breaking */
border-bottom: 1px solid #f4f4f4;
}
+
.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover,
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover,
.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover {
background: #f4f4f4;
text-decoration: none;
}
+
.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a {
color: #444444;
overflow: hidden;
@@ -657,20 +767,24 @@ a:focus {
white-space: nowrap;
padding: 10px;
}
+
.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon,
.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa,
.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion {
width: 20px;
}
+
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a {
margin: 0px;
padding: 10px 10px;
}
+
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img {
margin: auto 10px auto auto;
width: 40px;
height: 40px;
}
+
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 {
padding: 0;
margin: 0 0 0 45px;
@@ -678,6 +792,7 @@ a:focus {
font-size: 15px;
position: relative;
}
+
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small {
color: #999999;
font-size: 10px;
@@ -685,32 +800,39 @@ a:focus {
top: 0px;
right: 0px;
}
+
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p {
margin: 0 0 0 45px;
font-size: 12px;
color: #888888;
}
+
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after {
content: " ";
display: table;
}
+
.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after {
clear: both;
}
+
.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a {
padding: 10px;
}
+
.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 {
font-size: 14px;
padding: 0;
margin: 0 0 10px 0;
color: #666666;
}
+
.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress {
padding: 0;
margin: 0;
}
+
.navbar-nav > .user-menu > .dropdown-menu {
border-top-right-radius: 0;
border-top-left-radius: 0;
@@ -718,16 +840,19 @@ a:focus {
border-top-width: 0;
width: 280px;
}
+
.navbar-nav > .user-menu > .dropdown-menu,
.navbar-nav > .user-menu > .dropdown-menu > .user-body {
border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px;
}
+
.navbar-nav > .user-menu > .dropdown-menu > li.user-header {
height: 175px;
padding: 10px;
text-align: center;
}
+
.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img {
z-index: 5;
height: 90px;
@@ -736,6 +861,7 @@ a:focus {
border-color: transparent;
border-color: rgba(255, 255, 255, 0.2);
}
+
.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p {
z-index: 5;
color: #fff;
@@ -743,47 +869,58 @@ a:focus {
font-size: 17px;
margin-top: 10px;
}
+
.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small {
display: block;
font-size: 12px;
}
+
.navbar-nav > .user-menu > .dropdown-menu > .user-body {
padding: 15px;
border-bottom: 1px solid #f4f4f4;
border-top: 1px solid #dddddd;
}
+
.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,
.navbar-nav > .user-menu > .dropdown-menu > .user-body:after {
content: " ";
display: table;
}
+
.navbar-nav > .user-menu > .dropdown-menu > .user-body:after {
clear: both;
}
+
.navbar-nav > .user-menu > .dropdown-menu > .user-body a {
color: #444 !important;
}
+
@media (max-width: 991px) {
.navbar-nav > .user-menu > .dropdown-menu > .user-body a {
background: #fff !important;
color: #444 !important;
}
}
+
.navbar-nav > .user-menu > .dropdown-menu > .user-footer {
background-color: #f9f9f9;
padding: 10px;
}
+
.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,
.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after {
content: " ";
display: table;
}
+
.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after {
clear: both;
}
+
.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default {
color: #666666;
}
+
.navbar-nav > .user-menu .user-image {
float: left;
width: 25px;
@@ -792,6 +929,7 @@ a:focus {
margin-right: 10px;
margin-top: -2px;
}
+
@media (max-width: 767px) {
.navbar-nav > .user-menu .user-image {
float: none;
@@ -800,6 +938,7 @@ a:focus {
line-height: 10px;
}
}
+
/* Add fade animation to dropdown menus by appending
the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/
.open:not(.dropup) > .animated-dropdown-menu {
@@ -808,6 +947,7 @@ a:focus {
-o-animation: flipInX 0.7s both;
animation: flipInX 0.7s both;
}
+
@keyframes flipInX {
0% {
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
@@ -829,6 +969,7 @@ a:focus {
transform: perspective(400px);
}
}
+
@-webkit-keyframes flipInX {
0% {
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
@@ -850,22 +991,27 @@ a:focus {
transform: perspective(400px);
}
}
+
/* Fix dropdown menu in navbars */
.navbar-custom-menu > .navbar-nav > li {
position: relative;
}
+
.navbar-custom-menu > .navbar-nav > li > .dropdown-menu {
position: absolute;
right: 0;
left: auto;
}
+
@media (max-width: 991px) {
.navbar-custom-menu > .navbar-nav {
float: right;
}
+
.navbar-custom-menu > .navbar-nav > li {
position: static;
}
+
.navbar-custom-menu > .navbar-nav > li > .dropdown-menu {
position: absolute;
right: 5%;
@@ -874,6 +1020,7 @@ a:focus {
background: #fff;
}
}
+
/*
* Component: Form
* ---------------
@@ -883,60 +1030,75 @@ a:focus {
box-shadow: none;
border-color: #d2d6de;
}
+
.form-control:focus {
border-color: #3c8dbc !important;
box-shadow: none;
}
+
.form-control::-moz-placeholder {
color: #bbb;
opacity: 1;
}
+
.form-control:-ms-input-placeholder {
color: #bbb;
}
+
.form-control::-webkit-input-placeholder {
color: #bbb;
}
+
.form-control:not(select) {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
+
.form-group.has-success label {
color: #00a65a;
}
+
.form-group.has-success .form-control {
border-color: #00a65a !important;
box-shadow: none;
}
+
.form-group.has-warning label {
color: #f39c12;
}
+
.form-group.has-warning .form-control {
border-color: #f39c12 !important;
box-shadow: none;
}
+
.form-group.has-error label {
color: #dd4b39;
}
+
.form-group.has-error .form-control {
border-color: #dd4b39 !important;
box-shadow: none;
}
+
/* Input group */
.input-group .input-group-addon {
border-radius: 0px;
border-color: #d2d6de;
background-color: #fff;
}
+
/* button groups */
.btn-group-vertical .btn.btn-flat:first-of-type,
.btn-group-vertical .btn.btn-flat:last-of-type {
border-radius: 0;
}
+
.icheck > label {
padding-left: 0;
}
+
/*
* Component: Progress Bar
* -----------------------
@@ -946,43 +1108,51 @@ a:focus {
-webkit-box-shadow: none;
box-shadow: none;
}
+
.progress,
.progress > .progress-bar,
.progress .progress-bar,
.progress > .progress-bar .progress-bar {
border-radius: 1px;
}
+
/* size variation */
.progress.sm,
.progress-sm {
height: 10px;
}
+
.progress.sm,
.progress-sm,
.progress.sm .progress-bar,
.progress-sm .progress-bar {
border-radius: 1px;
}
+
.progress.xs,
.progress-xs {
height: 7px;
}
+
.progress.xs,
.progress-xs,
.progress.xs .progress-bar,
.progress-xs .progress-bar {
border-radius: 1px;
}
+
.progress.xxs,
.progress-xxs {
height: 3px;
}
+
.progress.xxs,
.progress-xxs,
.progress.xxs .progress-bar,
.progress-xxs .progress-bar {
border-radius: 1px;
}
+
/* Vertical bars */
.progress.vertical {
position: relative;
@@ -991,83 +1161,101 @@ a:focus {
display: inline-block;
margin-right: 10px;
}
+
.progress.vertical > .progress-bar {
- width: 100%!important;
+ width: 100% !important;
position: absolute;
bottom: 0;
}
+
.progress.vertical.sm,
.progress.vertical.progress-sm {
width: 20px;
}
+
.progress.vertical.xs,
.progress.vertical.progress-xs {
width: 10px;
}
+
.progress.vertical.xxs,
.progress.vertical.progress-xxs {
width: 3px;
}
+
.progress-group .progress-text {
font-weight: 600;
}
+
.progress-group .progress-number {
float: right;
}
+
/* Remove margins from progress bars when put in a table */
.table tr > td .progress {
margin: 0;
}
+
.progress-bar-light-blue,
.progress-bar-primary {
background-color: #3c8dbc;
}
+
.progress-striped .progress-bar-light-blue,
.progress-striped .progress-bar-primary {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
+
.progress-bar-green,
.progress-bar-success {
background-color: #00a65a;
}
+
.progress-striped .progress-bar-green,
.progress-striped .progress-bar-success {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
+
.progress-bar-aqua,
.progress-bar-info {
background-color: #00c0ef;
}
+
.progress-striped .progress-bar-aqua,
.progress-striped .progress-bar-info {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
+
.progress-bar-yellow,
.progress-bar-warning {
background-color: #f39c12;
}
+
.progress-striped .progress-bar-yellow,
.progress-striped .progress-bar-warning {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
+
.progress-bar-red,
.progress-bar-danger {
background-color: #dd4b39;
}
+
.progress-striped .progress-bar-red,
.progress-striped .progress-bar-danger {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
+
/*
* Component: Small Box
* --------------------
@@ -1079,9 +1267,11 @@ a:focus {
margin-bottom: 20px;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
}
+
.small-box > .inner {
padding: 10px;
}
+
.small-box > .small-box-footer {
position: relative;
text-align: center;
@@ -1093,10 +1283,12 @@ a:focus {
background: rgba(0, 0, 0, 0.1);
text-decoration: none;
}
+
.small-box > .small-box-footer:hover {
color: #fff;
background: rgba(0, 0, 0, 0.15);
}
+
.small-box h3 {
font-size: 38px;
font-weight: bold;
@@ -1104,19 +1296,23 @@ a:focus {
white-space: nowrap;
padding: 0;
}
+
.small-box p {
font-size: 15px;
}
+
.small-box p > small {
display: block;
color: #f9f9f9;
font-size: 13px;
margin-top: 5px;
}
+
.small-box h3,
.small-box p {
z-index: 5px;
}
+
.small-box .icon {
-webkit-transition: all 0.3s linear;
-o-transition: all 0.3s linear;
@@ -1128,24 +1324,30 @@ a:focus {
font-size: 90px;
color: rgba(0, 0, 0, 0.15);
}
+
.small-box:hover {
text-decoration: none;
color: #f9f9f9;
}
+
.small-box:hover .icon {
font-size: 95px;
}
+
@media (max-width: 767px) {
.small-box {
text-align: center;
}
+
.small-box .icon {
display: none;
}
+
.small-box p {
font-size: 12px;
}
}
+
/*
* Component: Box
* --------------
@@ -1159,137 +1361,174 @@ a:focus {
width: 100%;
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
}
+
.box.box-primary {
border-top-color: #3c8dbc;
}
+
.box.box-info {
border-top-color: #00c0ef;
}
+
.box.box-danger {
border-top-color: #dd4b39;
}
+
.box.box-warning {
border-top-color: #f39c12;
}
+
.box.box-success {
border-top-color: #00a65a;
}
+
.box.box-default {
border-top-color: #d2d6de;
}
+
.box.collapsed-box .box-body,
.box.collapsed-box .box-footer {
display: none;
}
+
.box .nav-stacked > li {
border-bottom: 1px solid #f4f4f4;
margin: 0;
}
+
.box .nav-stacked > li:last-of-type {
border-bottom: none;
}
+
.box.height-control .box-body {
max-height: 300px;
overflow: auto;
}
+
.box .border-right {
border-right: 1px solid #f4f4f4;
}
+
.box .border-left {
border-left: 1px solid #f4f4f4;
}
+
.box.box-solid {
border-top: 0px;
}
+
.box.box-solid > .box-header .btn.btn-default {
background: transparent;
}
+
.box.box-solid > .box-header .btn:hover,
.box.box-solid > .box-header a:hover {
background: rgba(0, 0, 0, 0.1) !important;
}
+
.box.box-solid.box-default {
border: 1px solid #d2d6de;
}
+
.box.box-solid.box-default > .box-header {
color: #444444;
background: #d2d6de;
background-color: #d2d6de;
}
+
.box.box-solid.box-default > .box-header a,
.box.box-solid.box-default > .box-header .btn {
color: #444444;
}
+
.box.box-solid.box-primary {
border: 1px solid #3c8dbc;
}
+
.box.box-solid.box-primary > .box-header {
color: #ffffff;
background: #3c8dbc;
background-color: #3c8dbc;
}
+
.box.box-solid.box-primary > .box-header a,
.box.box-solid.box-primary > .box-header .btn {
color: #ffffff;
}
+
.box.box-solid.box-info {
border: 1px solid #00c0ef;
}
+
.box.box-solid.box-info > .box-header {
color: #ffffff;
background: #00c0ef;
background-color: #00c0ef;
}
+
.box.box-solid.box-info > .box-header a,
.box.box-solid.box-info > .box-header .btn {
color: #ffffff;
}
+
.box.box-solid.box-danger {
border: 1px solid #dd4b39;
}
+
.box.box-solid.box-danger > .box-header {
color: #ffffff;
background: #dd4b39;
background-color: #dd4b39;
}
+
.box.box-solid.box-danger > .box-header a,
.box.box-solid.box-danger > .box-header .btn {
color: #ffffff;
}
+
.box.box-solid.box-warning {
border: 1px solid #f39c12;
}
+
.box.box-solid.box-warning > .box-header {
color: #ffffff;
background: #f39c12;
background-color: #f39c12;
}
+
.box.box-solid.box-warning > .box-header a,
.box.box-solid.box-warning > .box-header .btn {
color: #ffffff;
}
+
.box.box-solid.box-success {
border: 1px solid #00a65a;
}
+
.box.box-solid.box-success > .box-header {
color: #ffffff;
background: #00a65a;
background-color: #00a65a;
}
+
.box.box-solid.box-success > .box-header a,
.box.box-solid.box-success > .box-header .btn {
color: #ffffff;
}
+
.box.box-solid > .box-header > .box-tools .btn {
border: 0;
box-shadow: none;
}
+
.box.box-solid[class*='bg'] > .box-header {
color: #fff;
}
+
.box .box-group > .box {
margin-bottom: 5px;
}
+
.box .knob-label {
text-align: center;
color: #333;
@@ -1297,6 +1536,7 @@ a:focus {
font-size: 12px;
margin-bottom: 0.3em;
}
+
.box > .overlay,
.box > .loading-img {
position: absolute;
@@ -1305,11 +1545,13 @@ a:focus {
width: 100%;
height: 100%;
}
+
.box .overlay {
z-index: 1010;
background: rgba(255, 255, 255, 0.7);
border-radius: 3px;
}
+
.box .overlay > .fa {
position: absolute;
top: 50%;
@@ -1319,29 +1561,36 @@ a:focus {
color: #000;
font-size: 30px;
}
+
.box .overlay.dark {
background: rgba(0, 0, 0, 0.5);
}
+
.box-header {
color: #444;
display: block;
padding: 10px;
position: relative;
}
+
.box-header:before,
.box-header:after {
content: " ";
display: table;
}
+
.box-header:after {
clear: both;
}
+
.box-header.with-border {
border-bottom: 1px solid #f4f4f4;
}
+
.collapsed-box .box-header.with-border {
border-bottom: none;
}
+
.box-header > .fa,
.box-header > .glyphicon,
.box-header > .ion,
@@ -1351,37 +1600,45 @@ a:focus {
margin: 0;
line-height: 1;
}
+
.box-header > .fa,
.box-header > .glyphicon,
.box-header > .ion {
margin-right: 5px;
}
+
.box-header > .box-tools {
position: absolute;
right: 10px;
top: 5px;
}
+
.box-header > .box-tools [data-toggle="tooltip"] {
position: relative;
}
+
.box-header > .box-tools.pull-right .dropdown-menu {
right: 0;
left: auto;
}
+
.btn-box-tool {
padding: 5px;
font-size: 12px;
background: transparent;
- box-shadow: none!important;
+ box-shadow: none !important;
color: #97a0b3;
}
+
.open .btn-box-tool,
.btn-box-tool:hover {
color: #606c84;
}
+
.btn-box-tool:active {
- outline: none!important;
+ outline: none !important;
}
+
.box-body {
border-top-left-radius: 0;
border-top-right-radius: 0;
@@ -1389,43 +1646,53 @@ a:focus {
border-bottom-left-radius: 3px;
padding: 10px;
}
+
.no-header .box-body {
border-top-right-radius: 3px;
border-top-left-radius: 3px;
}
+
.box-body > .table {
margin-bottom: 0;
}
+
.box-body > .chart {
position: relative;
overflow: hidden;
width: 100%;
}
+
.box-body > .chart svg,
.box-body > .chart canvas {
- width: 100%!important;
+ width: 100% !important;
}
+
.box-body .fc {
margin-top: 5px;
}
+
.box-body .full-width-chart {
margin: -19px;
}
+
.box-body.no-padding .full-width-chart {
margin: -9px;
}
+
.box-body .box-pane {
border-top-left-radius: 0;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 3px;
}
+
.box-body .box-pane-right {
border-top-left-radius: 0;
border-top-right-radius: 0;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 0;
}
+
.box-footer {
border-top-left-radius: 0;
border-top-right-radius: 0;
@@ -1435,15 +1702,18 @@ a:focus {
padding: 10px;
background-color: #ffffff;
}
+
.chart-legend {
margin: 10px 0;
}
+
@media (max-width: 991px) {
.chart-legend > li {
float: left;
margin-right: 10px;
}
}
+
/* Widget: TODO LIST */
.todo-list {
margin: 0;
@@ -1451,6 +1721,7 @@ a:focus {
list-style: none;
overflow: auto;
}
+
.todo-list > li {
border-radius: 2px;
padding: 10px;
@@ -1459,100 +1730,126 @@ a:focus {
border-left: 2px solid #e6e7e8;
color: #444;
}
+
.todo-list > li:last-of-type {
margin-bottom: 0;
}
+
.todo-list > li.danger {
border-left-color: #dd4b39;
}
+
.todo-list > li.warning {
border-left-color: #f39c12;
}
+
.todo-list > li.info {
border-left-color: #00c0ef;
}
+
.todo-list > li.success {
border-left-color: #00a65a;
}
+
.todo-list > li.primary {
border-left-color: #3c8dbc;
}
+
.todo-list > li > input[type='checkbox'] {
margin: 0 10px 0 5px;
}
+
.todo-list > li .text {
display: inline-block;
margin-left: 5px;
font-weight: 600;
}
+
.todo-list > li .label {
margin-left: 10px;
font-size: 9px;
}
+
.todo-list > li .tools {
display: none;
float: right;
color: #dd4b39;
}
+
.todo-list > li .tools > .fa,
.todo-list > li .tools > .glyphicon,
.todo-list > li .tools > .ion {
margin-right: 5px;
cursor: pointer;
}
+
.todo-list > li:hover .tools {
display: inline-block;
}
+
.todo-list > li.done {
color: #999;
}
+
.todo-list > li.done .text {
text-decoration: line-through;
font-weight: 500;
}
+
.todo-list > li.done .label {
background: #d2d6de !important;
}
+
.todo-list .handle {
display: inline-block;
cursor: move;
margin: 0 5px;
}
+
/* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/
.chat {
padding: 5px 20px 5px 10px;
}
+
.chat .item {
margin-bottom: 10px;
}
+
.chat .item:before,
.chat .item:after {
content: " ";
display: table;
}
+
.chat .item:after {
clear: both;
}
+
.chat .item > img {
width: 40px;
height: 40px;
border: 2px solid transparent;
border-radius: 50% !important;
}
+
.chat .item > img.online {
border: 2px solid #00a65a;
}
+
.chat .item > img.offline {
border: 2px solid #dd4b39;
}
+
.chat .item > .message {
margin-left: 55px;
margin-top: -40px;
}
+
.chat .item > .message > .name {
display: block;
font-weight: 600;
}
+
.chat .item > .attachment {
border-radius: 3px;
background: #f4f4f4;
@@ -1560,11 +1857,13 @@ a:focus {
margin-right: 15px;
padding: 10px;
}
+
.chat .item > .attachment > h4 {
margin: 0 0 5px 0;
font-weight: 600;
font-size: 14px;
}
+
.chat .item > .attachment > p,
.chat .item > .attachment > .filename {
font-weight: 600;
@@ -1572,17 +1871,21 @@ a:focus {
font-style: italic;
margin: 0;
}
+
.chat .item > .attachment:before,
.chat .item > .attachment:after {
content: " ";
display: table;
}
+
.chat .item > .attachment:after {
clear: both;
}
+
.box-input {
max-width: 200px;
}
+
/*
* Component: Info Box
* -------------------
@@ -1596,21 +1899,26 @@ a:focus {
border-radius: 2px;
margin-bottom: 15px;
}
+
.info-box small {
font-size: 14px;
}
+
.info-box .progress {
background: rgba(0, 0, 0, 0.2);
margin: 5px -10px 5px -10px;
height: 2px;
}
+
.info-box .progress,
.info-box .progress .progress-bar {
border-radius: 0;
}
+
.info-box .progress .progress-bar {
background: #fff;
}
+
.info-box-icon {
border-top-left-radius: 2px;
border-top-right-radius: 0;
@@ -1625,15 +1933,18 @@ a:focus {
line-height: 90px;
background: rgba(0, 0, 0, 0.2);
}
+
.info-box-content {
padding: 5px 10px;
margin-left: 90px;
}
+
.info-box-number {
display: block;
font-weight: bold;
font-size: 18px;
}
+
.progress-description,
.info-box-text {
display: block;
@@ -1642,15 +1953,19 @@ a:focus {
overflow: hidden;
text-overflow: ellipsis;
}
+
.info-box-text {
text-transform: uppercase;
}
+
.info-box-more {
display: block;
}
+
.progress-description {
margin: 0;
}
+
/*
* Component: Timeline
* -------------------
@@ -1661,6 +1976,7 @@ a:focus {
padding: 0;
list-style: none;
}
+
.timeline:before {
content: '';
position: absolute;
@@ -1672,19 +1988,23 @@ a:focus {
margin: 0;
border-radius: 2px;
}
+
.timeline > li {
position: relative;
margin-right: 10px;
margin-bottom: 15px;
}
+
.timeline > li:before,
.timeline > li:after {
content: " ";
display: table;
}
+
.timeline > li:after {
clear: both;
}
+
.timeline > li > .timeline-item {
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
@@ -1697,12 +2017,14 @@ a:focus {
padding: 0;
position: relative;
}
+
.timeline > li > .timeline-item > .time {
color: #999;
float: right;
padding: 10px;
font-size: 12px;
}
+
.timeline > li > .timeline-item > .timeline-header {
margin: 0;
color: #555;
@@ -1711,13 +2033,16 @@ a:focus {
font-size: 16px;
line-height: 1.1;
}
+
.timeline > li > .timeline-item > .timeline-header > a {
font-weight: 600;
}
+
.timeline > li > .timeline-item > .timeline-body,
.timeline > li > .timeline-item > .timeline-footer {
padding: 10px;
}
+
.timeline > li.time-label > span {
font-weight: 600;
padding: 5px;
@@ -1725,6 +2050,7 @@ a:focus {
background-color: #fff;
border-radius: 4px;
}
+
.timeline > li > .fa,
.timeline > li > .glyphicon,
.timeline > li > .ion {
@@ -1740,6 +2066,7 @@ a:focus {
left: 18px;
top: 0;
}
+
/*
* Component: Button
* -----------------
@@ -1750,9 +2077,11 @@ a:focus {
box-shadow: none;
border: 1px solid transparent;
}
+
.btn.uppercase {
text-transform: uppercase;
}
+
.btn.btn-flat {
border-radius: 0;
-webkit-box-shadow: none;
@@ -1760,18 +2089,22 @@ a:focus {
box-shadow: none;
border-width: 1px;
}
+
.btn:active {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
+
.btn:focus {
outline: none;
}
+
.btn.btn-file {
position: relative;
overflow: hidden;
}
+
.btn.btn-file > input[type='file'] {
position: absolute;
top: 0;
@@ -1787,80 +2120,97 @@ a:focus {
cursor: inherit;
display: block;
}
+
.btn-default {
background-color: #f4f4f4;
color: #444;
border-color: #ddd;
}
+
.btn-default:hover,
.btn-default:active,
.btn-default.hover {
background-color: #e7e7e7 !important;
}
+
.btn-primary {
background-color: #3c8dbc;
border-color: #367fa9;
}
+
.btn-primary:hover,
.btn-primary:active,
.btn-primary.hover {
background-color: #367fa9;
}
+
.btn-success {
background-color: #00a65a;
border-color: #008d4c;
}
+
.btn-success:hover,
.btn-success:active,
.btn-success.hover {
background-color: #008d4c;
}
+
.btn-info {
background-color: #00c0ef;
border-color: #00acd6;
}
+
.btn-info:hover,
.btn-info:active,
.btn-info.hover {
background-color: #00acd6;
}
+
.btn-danger {
background-color: #dd4b39;
border-color: #d73925;
}
+
.btn-danger:hover,
.btn-danger:active,
.btn-danger.hover {
background-color: #d73925;
}
+
.btn-warning {
background-color: #f39c12;
border-color: #e08e0b;
}
+
.btn-warning:hover,
.btn-warning:active,
.btn-warning.hover {
background-color: #e08e0b;
}
+
.btn-outline {
border: 1px solid #fff;
background: transparent;
color: #fff;
}
+
.btn-outline:hover,
.btn-outline:focus,
.btn-outline:active {
color: rgba(255, 255, 255, 0.7);
border-color: rgba(255, 255, 255, 0.7);
}
+
.btn-link {
-webkit-box-shadow: none;
box-shadow: none;
}
+
.btn[class*='bg-']:hover {
-webkit-box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2);
box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2);
}
+
.btn-app {
border-radius: 3px;
position: relative;
@@ -1874,23 +2224,27 @@ a:focus {
background-color: #f4f4f4;
font-size: 12px;
}
+
.btn-app > .fa,
.btn-app > .glyphicon,
.btn-app > .ion {
font-size: 20px;
display: block;
}
+
.btn-app:hover {
background: #f4f4f4;
color: #444;
border-color: #aaa;
}
+
.btn-app:active,
.btn-app:focus {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
-moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
+
.btn-app > .badge {
position: absolute;
top: -3px;
@@ -1898,6 +2252,7 @@ a:focus {
font-size: 10px;
font-weight: 400;
}
+
/*
* Component: Callout
* ------------------
@@ -1908,36 +2263,46 @@ a:focus {
padding: 15px 30px 15px 15px;
border-left: 5px solid #eee;
}
+
.callout a {
color: #fff;
text-decoration: underline;
}
+
.callout a:hover {
color: #eee;
}
+
.callout h4 {
margin-top: 0;
font-weight: 600;
}
+
.callout p:last-child {
margin-bottom: 0;
}
+
.callout code,
.callout .highlight {
background-color: #fff;
}
+
.callout.callout-danger {
border-color: #c23321;
}
+
.callout.callout-warning {
border-color: #c87f0a;
}
+
.callout.callout-info {
border-color: #0097bc;
}
+
.callout.callout-success {
border-color: #00733e;
}
+
/*
* Component: alert
* ----------------
@@ -1945,38 +2310,48 @@ a:focus {
.alert {
border-radius: 3px;
}
+
.alert h4 {
font-weight: 600;
}
+
.alert .icon {
margin-right: 10px;
}
+
.alert .close {
color: #000;
opacity: 0.2;
filter: alpha(opacity=20);
}
+
.alert .close:hover {
opacity: 0.5;
filter: alpha(opacity=50);
}
+
.alert a {
color: #fff;
text-decoration: underline;
}
+
.alert-success {
border-color: #008d4c;
}
+
.alert-danger,
.alert-error {
border-color: #d73925;
}
+
.alert-warning {
border-color: #e08e0b;
}
+
.alert-info {
border-color: #00acd6;
}
+
/*
* Component: Nav
* --------------
@@ -1987,23 +2362,28 @@ a:focus {
border-top: 3px solid transparent;
color: #444;
}
+
.nav-pills > li > a > .fa,
.nav-pills > li > a > .glyphicon,
.nav-pills > li > a > .ion {
margin-right: 5px;
}
+
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover {
background-color: #f4f4f4;
border-top-color: #3c8dbc;
color: #444;
}
+
.nav-pills > li.active > a {
font-weight: 600;
}
+
.nav-pills > li > a:hover {
background-color: #f6f6f6;
}
+
/* NAV STACKED */
.nav-stacked > li > a {
border-radius: 0;
@@ -2011,6 +2391,7 @@ a:focus {
border-left: 3px solid transparent;
color: #444;
}
+
.nav-stacked > li.active > a,
.nav-stacked > li.active > a:hover {
background-color: #f4f4f4;
@@ -2018,6 +2399,7 @@ a:focus {
border-left-color: #3c8dbc;
color: #444;
}
+
.nav-stacked > li.header {
border-bottom: 1px solid #ddd;
color: #777;
@@ -2025,6 +2407,7 @@ a:focus {
padding: 5px 10px;
text-transform: uppercase;
}
+
/* NAV TABS */
.nav-tabs-custom {
margin-bottom: 20px;
@@ -2032,94 +2415,116 @@ a:focus {
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
border-radius: 3px;
}
+
.nav-tabs-custom > .nav-tabs {
margin: 0;
border-bottom-color: #f4f4f4;
border-top-right-radius: 3px;
border-top-left-radius: 3px;
}
+
.nav-tabs-custom > .nav-tabs > li {
border-top: 3px solid transparent;
margin-bottom: -2px;
margin-right: 5px;
}
+
.nav-tabs-custom > .nav-tabs > li > a {
border-radius: 0 !important;
}
+
.nav-tabs-custom > .nav-tabs > li > a,
.nav-tabs-custom > .nav-tabs > li > a:hover {
background: transparent;
margin: 0;
}
+
.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,
.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,
.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active {
border-color: transparent;
}
+
.nav-tabs-custom > .nav-tabs > li.active {
border-top-color: #3c8dbc;
}
+
.nav-tabs-custom > .nav-tabs > li.active > a,
.nav-tabs-custom > .nav-tabs > li.active:hover > a {
background-color: #fff;
}
+
.nav-tabs-custom > .nav-tabs > li.active > a {
border-top: 0;
border-left-color: #f4f4f4;
border-right-color: #f4f4f4;
}
+
.nav-tabs-custom > .nav-tabs > li:first-of-type {
margin-left: 0;
}
+
.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a {
border-left-width: 0;
}
+
.nav-tabs-custom > .nav-tabs.pull-right {
- float: none!important;
+ float: none !important;
}
+
.nav-tabs-custom > .nav-tabs.pull-right > li {
float: right;
}
+
.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type {
margin-right: 0;
}
+
.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a {
border-left-width: 1px;
border-right-width: 0;
}
+
.nav-tabs-custom > .nav-tabs > li.header {
line-height: 35px;
padding: 0 10px;
font-size: 20px;
color: #444;
}
+
.nav-tabs-custom > .nav-tabs > li.header > .fa,
.nav-tabs-custom > .nav-tabs > li.header > .glyphicon,
.nav-tabs-custom > .nav-tabs > li.header > .ion {
margin-right: 5px;
}
+
.nav-tabs-custom > .tab-content {
background: #fff;
padding: 10px;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
}
+
/* Nav tabs bottom */
.tabs-bottom.nav-3 li a {
width: 3333.33333333% !important;
}
+
.tabs-bottom li a {
border: 0;
}
+
/* PAGINATION */
.pagination > li > a {
background: #fafafa;
color: #666;
}
+
.pagination > li:first-of-type a,
.pagination > li:last-of-type a {
border-radius: 0;
}
+
/*
* Component: Products List
* ------------------------
@@ -2129,6 +2534,7 @@ a:focus {
margin: 0;
padding: 0;
}
+
.products-list > .item {
border-radius: 3px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
@@ -2136,27 +2542,34 @@ a:focus {
padding: 10px 0;
background: #fff;
}
+
.products-list > .item:before,
.products-list > .item:after {
content: " ";
display: table;
}
+
.products-list > .item:after {
clear: both;
}
+
.products-list .product-img {
float: left;
}
+
.products-list .product-img img {
width: 50px;
height: 50px;
}
+
.products-list .product-info {
margin-left: 60px;
}
+
.products-list .product-title {
font-weight: 600;
}
+
.products-list .product-description {
display: block;
color: #999;
@@ -2164,15 +2577,18 @@ a:focus {
white-space: nowrap;
text-overflow: ellipsis;
}
+
.product-list-in-box > .item {
-webkit-box-shadow: none;
box-shadow: none;
border-radius: 0;
border-bottom: 1px solid #f4f4f4;
}
+
.product-list-in-box > .item:last-of-type {
border-bottom-width: 0;
}
+
/*
* Component: Table
* ----------------
@@ -2185,15 +2601,19 @@ a:focus {
.table > tfoot > tr > td {
border-top: 1px solid #f4f4f4;
}
+
.table > thead > tr > th {
border-bottom: 2px solid #f4f4f4;
}
+
.table tr td .progress {
margin-top: 5px;
}
+
.table-bordered {
border: 1px solid #f4f4f4;
}
+
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
@@ -2202,27 +2622,33 @@ a:focus {
.table-bordered > tfoot > tr > td {
border: 1px solid #f4f4f4;
}
+
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
border-bottom-width: 2px;
}
+
.table.no-border,
.table.no-border td,
.table.no-border th {
border: 0;
}
+
/* .text-center in tables */
table.text-center,
table.text-center td,
table.text-center th {
text-align: center;
}
+
.table.align th {
text-align: left;
}
+
.table.align td {
text-align: right;
}
+
/*
* Component: Label
* ----------------
@@ -2231,6 +2657,7 @@ table.text-center th {
background-color: #d2d6de;
color: #444;
}
+
/*
* Component: Direct Chat
* ----------------------
@@ -2242,12 +2669,14 @@ table.text-center th {
overflow-x: hidden;
padding: 0;
}
+
.direct-chat.chat-pane-open .direct-chat-contacts {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
-o-transform: translate(0, 0);
transform: translate(0, 0);
}
+
.direct-chat-messages {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
@@ -2257,21 +2686,26 @@ table.text-center th {
height: 250px;
overflow: auto;
}
+
.direct-chat-msg,
.direct-chat-text {
display: block;
}
+
.direct-chat-msg {
margin-bottom: 10px;
}
+
.direct-chat-msg:before,
.direct-chat-msg:after {
content: " ";
display: table;
}
+
.direct-chat-msg:after {
clear: both;
}
+
.direct-chat-messages,
.direct-chat-contacts {
-webkit-transition: -webkit-transform 0.5s ease-in-out;
@@ -2279,6 +2713,7 @@ table.text-center th {
-o-transition: -o-transform 0.5s ease-in-out;
transition: transform 0.5s ease-in-out;
}
+
.direct-chat-text {
border-radius: 5px;
position: relative;
@@ -2288,6 +2723,7 @@ table.text-center th {
margin: 5px 0 0 50px;
color: #444444;
}
+
.direct-chat-text:after,
.direct-chat-text:before {
position: absolute;
@@ -2300,18 +2736,22 @@ table.text-center th {
width: 0;
pointer-events: none;
}
+
.direct-chat-text:after {
border-width: 5px;
margin-top: -5px;
}
+
.direct-chat-text:before {
border-width: 6px;
margin-top: -6px;
}
+
.right .direct-chat-text {
margin-right: 50px;
margin-left: 0;
}
+
.right .direct-chat-text:after,
.right .direct-chat-text:before {
right: auto;
@@ -2319,32 +2759,39 @@ table.text-center th {
border-right-color: transparent;
border-left-color: #d2d6de;
}
+
.direct-chat-img {
border-radius: 50%;
float: left;
width: 40px;
height: 40px;
}
+
.right .direct-chat-img {
float: right;
}
+
.direct-chat-info {
display: block;
margin-bottom: 2px;
font-size: 12px;
}
+
.direct-chat-name {
font-weight: 600;
}
+
.direct-chat-timestamp {
color: #999;
}
+
.direct-chat-contacts-open .direct-chat-contacts {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
-o-transform: translate(0, 0);
transform: translate(0, 0);
}
+
.direct-chat-contacts {
-webkit-transform: translate(100%, 0);
-ms-transform: translate(100%, 0);
@@ -2359,93 +2806,115 @@ table.text-center th {
color: #fff;
overflow: auto;
}
+
.contacts-list > li {
border-bottom: 1px solid rgba(0, 0, 0, 0.2);
padding: 10px;
margin: 0;
}
+
.contacts-list > li:before,
.contacts-list > li:after {
content: " ";
display: table;
}
+
.contacts-list > li:after {
clear: both;
}
+
.contacts-list > li:last-of-type {
border-bottom: none;
}
+
.contacts-list-img {
border-radius: 50%;
width: 40px;
float: left;
}
+
.contacts-list-info {
margin-left: 45px;
color: #fff;
}
+
.contacts-list-name,
.contacts-list-status {
display: block;
}
+
.contacts-list-name {
font-weight: 600;
}
+
.contacts-list-status {
font-size: 12px;
}
+
.contacts-list-date {
color: #aaa;
font-weight: normal;
}
+
.contacts-list-msg {
color: #999;
}
+
.direct-chat-danger .right > .direct-chat-text {
background: #dd4b39;
border-color: #dd4b39;
color: #ffffff;
}
+
.direct-chat-danger .right > .direct-chat-text:after,
.direct-chat-danger .right > .direct-chat-text:before {
border-left-color: #dd4b39;
}
+
.direct-chat-primary .right > .direct-chat-text {
background: #3c8dbc;
border-color: #3c8dbc;
color: #ffffff;
}
+
.direct-chat-primary .right > .direct-chat-text:after,
.direct-chat-primary .right > .direct-chat-text:before {
border-left-color: #3c8dbc;
}
+
.direct-chat-warning .right > .direct-chat-text {
background: #f39c12;
border-color: #f39c12;
color: #ffffff;
}
+
.direct-chat-warning .right > .direct-chat-text:after,
.direct-chat-warning .right > .direct-chat-text:before {
border-left-color: #f39c12;
}
+
.direct-chat-info .right > .direct-chat-text {
background: #00c0ef;
border-color: #00c0ef;
color: #ffffff;
}
+
.direct-chat-info .right > .direct-chat-text:after,
.direct-chat-info .right > .direct-chat-text:before {
border-left-color: #00c0ef;
}
+
.direct-chat-success .right > .direct-chat-text {
background: #00a65a;
border-color: #00a65a;
color: #ffffff;
}
+
.direct-chat-success .right > .direct-chat-text:after,
.direct-chat-success .right > .direct-chat-text:before {
border-left-color: #00a65a;
}
+
/*
* Component: Users List
* ---------------------
@@ -2456,15 +2925,18 @@ table.text-center th {
padding: 10px;
text-align: center;
}
+
.users-list > li > img {
border-radius: 50%;
max-width: 100%;
height: auto;
}
+
.users-list-name,
.users-list-date {
display: block;
}
+
.users-list-name {
font-weight: 600;
color: #444;
@@ -2472,20 +2944,24 @@ table.text-center th {
white-space: nowrap;
text-overflow: ellipsis;
}
+
.users-list-name:hover {
color: #999;
}
+
.users-list-date {
color: #999;
font-size: 12px;
}
+
/*
* Component: Carousel
* -------------------
*/
.carousel-control {
- background-image: none!important;
+ background-image: none !important;
}
+
.carousel-control > .fa {
font-size: 40px;
position: absolute;
@@ -2494,6 +2970,7 @@ table.text-center th {
display: inline-block;
margin-top: -20px;
}
+
/*
* Component: modal
* ----------------
@@ -2501,44 +2978,54 @@ table.text-center th {
.modal {
background: rgba(0, 0, 0, 0.3);
}
+
.modal-content {
border-radius: 0;
-webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125) !important;
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125) !important;
border: 0;
}
+
@media (min-width: 768px) {
.modal-content {
-webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125) !important;
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125) !important;
}
}
+
.modal-header {
border-bottom-color: #f4f4f4;
}
+
.modal-footer {
border-top-color: #f4f4f4;
}
+
.modal-primary .modal-header,
.modal-primary .modal-footer {
border-color: #307095;
}
+
.modal-warning .modal-header,
.modal-warning .modal-footer {
border-color: #c87f0a;
}
+
.modal-info .modal-header,
.modal-info .modal-footer {
border-color: #0097bc;
}
+
.modal-success .modal-header,
.modal-success .modal-footer {
border-color: #00733e;
}
+
.modal-danger .modal-header,
.modal-danger .modal-footer {
border-color: #c23321;
}
+
/*
* Page: Mailbox
* -------------
@@ -2546,31 +3033,39 @@ table.text-center th {
.mailbox-messages > .table {
margin: 0;
}
+
.mailbox-controls {
padding: 5px;
}
+
.mailbox-controls.with-border {
border-bottom: 1px solid #f4f4f4;
}
+
.mailbox-read-info {
border-bottom: 1px solid #f4f4f4;
padding: 10px;
}
+
.mailbox-read-info h3 {
font-size: 20px;
margin: 0;
}
+
.mailbox-read-info h5 {
margin: 0;
padding: 5px 0 0 0;
}
+
.mailbox-read-time {
color: #999;
font-size: 13px;
}
+
.mailbox-read-message {
padding: 10px;
}
+
.mailbox-attachments li {
float: left;
width: 200px;
@@ -2578,46 +3073,56 @@ table.text-center th {
margin-bottom: 10px;
margin-right: 10px;
}
+
.mailbox-attachment-name {
font-weight: bold;
color: #666;
}
+
.mailbox-attachment-icon,
.mailbox-attachment-info,
.mailbox-attachment-size {
display: block;
}
+
.mailbox-attachment-info {
padding: 10px;
background: #f4f4f4;
}
+
.mailbox-attachment-size {
color: #999;
font-size: 12px;
}
+
.mailbox-attachment-icon {
text-align: center;
font-size: 65px;
color: #666;
padding: 20px 10px;
}
+
.mailbox-attachment-icon.has-img {
padding: 0;
}
+
.mailbox-attachment-icon.has-img > img {
max-width: 100%;
height: auto;
}
+
.mailbox .table-mailbox {
border-left: 1px solid #f4f4f4;
border-right: 1px solid #f4f4f4;
border-bottom: 1px solid #f4f4f4;
}
+
.mailbox .table-mailbox tr.unread > td {
background-color: rgba(0, 0, 0, 0.05);
color: #000;
font-weight: 600;
}
+
.mailbox .table-mailbox tr > td > .fa.fa-star,
.mailbox .table-mailbox tr > td > .fa.fa-star-o,
.mailbox .table-mailbox tr > td > .glyphicon.glyphicon-star,
@@ -2625,35 +3130,44 @@ table.text-center th {
color: #f39c12;
cursor: pointer;
}
+
.mailbox .table-mailbox tr > td.small-col {
width: 30px;
}
+
.mailbox .table-mailbox tr > td.name {
width: 150px;
font-weight: 600;
}
+
.mailbox .table-mailbox tr > td.time {
text-align: right;
width: 100px;
}
+
.mailbox .table-mailbox tr > td {
white-space: nowrap;
}
+
.mailbox .table-mailbox tr > td > a {
color: #444;
}
+
@media (max-width: 991px) {
.mailbox .nav-stacked > li:not(.header) {
float: left;
width: 50%;
}
+
.mailbox .nav-stacked > li:not(.header).header {
- border: 0!important;
+ border: 0 !important;
}
+
.mailbox .search-form {
margin-top: 10px;
}
}
+
/*
* Page: Lock Screen
* -----------------
@@ -2662,25 +3176,30 @@ table.text-center th {
.lockscreen {
background: #d2d6de;
}
+
.lockscreen-logo {
font-size: 35px;
text-align: center;
margin-bottom: 25px;
font-weight: 300;
}
+
.lockscreen-logo a {
color: #444;
}
+
.lockscreen-wrapper {
max-width: 400px;
margin: 0 auto;
margin-top: 10%;
}
+
/* User name [optional] */
.lockscreen .lockscreen-name {
text-align: center;
font-weight: 600;
}
+
/* Will contain the image and the sign in form */
.lockscreen-item {
border-radius: 4px;
@@ -2690,6 +3209,7 @@ table.text-center th {
margin: 10px auto 30px auto;
width: 290px;
}
+
/* User image */
.lockscreen-image {
border-radius: 50%;
@@ -2700,26 +3220,32 @@ table.text-center th {
padding: 5px;
z-index: 10;
}
+
.lockscreen-image > img {
border-radius: 50%;
width: 70px;
height: 70px;
}
+
/* Contains the password input and the login button */
.lockscreen-credentials {
margin-left: 70px;
}
+
.lockscreen-credentials .form-control {
border: 0 !important;
}
+
.lockscreen-credentials .btn {
background-color: #fff;
border: 0;
padding: 0 10px;
}
+
.lockscreen-footer {
margin-top: 10px;
}
+
/*
* Page: Login & Register
* ----------------------
@@ -2731,19 +3257,23 @@ table.text-center th {
margin-bottom: 25px;
font-weight: 300;
}
+
.login-logo a,
.register-logo a {
color: #444;
}
+
.login-page,
.register-page {
background: #d2d6de;
}
+
.login-box,
.register-box {
width: 360px;
margin: 7% auto;
}
+
@media (max-width: 768px) {
.login-box,
.register-box {
@@ -2751,6 +3281,7 @@ table.text-center th {
margin-top: 20px;
}
}
+
.login-box-body,
.register-box-body {
background: #fff;
@@ -2759,19 +3290,23 @@ table.text-center th {
border-top: 0;
color: #666;
}
+
.login-box-body .form-control-feedback,
.register-box-body .form-control-feedback {
color: #777;
}
+
.login-box-msg,
.register-box-msg {
margin: 0;
text-align: center;
padding: 0 20px 20px 20px;
}
+
.social-auth-links {
margin: 10px 0;
}
+
/*
* Page: 400 and 500 error pages
* ------------------------------
@@ -2780,40 +3315,48 @@ table.text-center th {
width: 600px;
margin: 20px auto 0 auto;
}
+
@media (max-width: 991px) {
.error-page {
width: 100%;
}
}
+
.error-page > .headline {
float: left;
font-size: 100px;
font-weight: 300;
}
+
@media (max-width: 991px) {
.error-page > .headline {
float: none;
text-align: center;
}
}
+
.error-page > .error-content {
margin-left: 190px;
display: block;
}
+
@media (max-width: 991px) {
.error-page > .error-content {
margin-left: 0;
}
}
+
.error-page > .error-content > h3 {
font-weight: 300;
font-size: 25px;
}
+
@media (max-width: 991px) {
.error-page > .error-content > h3 {
text-align: center;
}
}
+
/*
* Page: Invoice
* -------------
@@ -2825,9 +3368,11 @@ table.text-center th {
padding: 20px;
margin: 10px 25px;
}
+
.invoice-title {
margin-top: 0;
}
+
/*
* Plugin: Social Buttons
* ----------------------
@@ -2840,6 +3385,7 @@ table.text-center th {
overflow: hidden;
text-overflow: ellipsis;
}
+
.btn-social :first-child {
position: absolute;
left: 0;
@@ -2847,34 +3393,41 @@ table.text-center th {
bottom: 0;
width: 32px !important;
line-height: 34px !important;
- font-size: 1.6em!important;
+ font-size: 1.6em !important;
text-align: center;
border-right: 1px solid rgba(0, 0, 0, 0.2);
}
+
.btn-social.btn-lg {
padding-left: 61px !important;
}
+
.btn-social.btn-lg :first-child {
line-height: 45px;
width: 45px;
font-size: 1.8em;
}
+
.btn-social.btn-sm {
padding-left: 38px !important;
}
+
.btn-social.btn-sm :first-child {
line-height: 28px;
width: 28px;
font-size: 1.4em;
}
+
.btn-social.btn-xs {
padding-left: 30px !important;
}
+
.btn-social.btn-xs :first-child {
line-height: 20px;
width: 20px;
font-size: 1.2em;
}
+
.btn-social-icon {
position: relative;
padding-left: 44px !important;
@@ -2886,6 +3439,7 @@ table.text-center th {
width: 34px;
padding: 0;
}
+
.btn-social-icon :first-child {
position: absolute;
left: 0;
@@ -2893,62 +3447,74 @@ table.text-center th {
bottom: 0;
width: 32px !important;
line-height: 34px !important;
- font-size: 1.6em!important;
+ font-size: 1.6em !important;
text-align: center;
border-right: 1px solid rgba(0, 0, 0, 0.2);
}
+
.btn-social-icon.btn-lg {
padding-left: 61px !important;
}
+
.btn-social-icon.btn-lg :first-child {
line-height: 45px;
width: 45px;
font-size: 1.8em;
}
+
.btn-social-icon.btn-sm {
padding-left: 38px !important;
}
+
.btn-social-icon.btn-sm :first-child {
line-height: 28px;
width: 28px;
font-size: 1.4em;
}
+
.btn-social-icon.btn-xs {
padding-left: 30px !important;
}
+
.btn-social-icon.btn-xs :first-child {
line-height: 20px;
width: 20px;
font-size: 1.2em;
}
+
.btn-social-icon :first-child {
border: none;
text-align: center;
- width: 100%!important;
+ width: 100% !important;
}
+
.btn-social-icon.btn-lg {
height: 45px;
width: 45px;
padding-left: 0;
padding-right: 0;
}
+
.btn-social-icon.btn-sm {
height: 30px;
width: 30px;
padding-left: 0;
padding-right: 0;
}
+
.btn-social-icon.btn-xs {
height: 22px;
width: 22px;
padding-left: 0;
padding-right: 0;
}
+
.btn-bitbucket {
color: #ffffff;
background-color: #205081;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-bitbucket:hover,
.btn-bitbucket:focus,
.btn-bitbucket.focus,
@@ -2959,11 +3525,13 @@ table.text-center th {
background-color: #163758;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-bitbucket:active,
.btn-bitbucket.active,
.open > .dropdown-toggle.btn-bitbucket {
background-image: none;
}
+
.btn-bitbucket.disabled,
.btn-bitbucket[disabled],
fieldset[disabled] .btn-bitbucket,
@@ -2985,15 +3553,18 @@ fieldset[disabled] .btn-bitbucket.active {
background-color: #205081;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-bitbucket .badge {
color: #205081;
background-color: #ffffff;
}
+
.btn-dropbox {
color: #ffffff;
background-color: #1087dd;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-dropbox:hover,
.btn-dropbox:focus,
.btn-dropbox.focus,
@@ -3004,11 +3575,13 @@ fieldset[disabled] .btn-bitbucket.active {
background-color: #0d6aad;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-dropbox:active,
.btn-dropbox.active,
.open > .dropdown-toggle.btn-dropbox {
background-image: none;
}
+
.btn-dropbox.disabled,
.btn-dropbox[disabled],
fieldset[disabled] .btn-dropbox,
@@ -3030,15 +3603,18 @@ fieldset[disabled] .btn-dropbox.active {
background-color: #1087dd;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-dropbox .badge {
color: #1087dd;
background-color: #ffffff;
}
+
.btn-facebook {
color: #ffffff;
background-color: #3b5998;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-facebook:hover,
.btn-facebook:focus,
.btn-facebook.focus,
@@ -3049,11 +3625,13 @@ fieldset[disabled] .btn-dropbox.active {
background-color: #2d4373;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-facebook:active,
.btn-facebook.active,
.open > .dropdown-toggle.btn-facebook {
background-image: none;
}
+
.btn-facebook.disabled,
.btn-facebook[disabled],
fieldset[disabled] .btn-facebook,
@@ -3075,15 +3653,18 @@ fieldset[disabled] .btn-facebook.active {
background-color: #3b5998;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-facebook .badge {
color: #3b5998;
background-color: #ffffff;
}
+
.btn-flickr {
color: #ffffff;
background-color: #ff0084;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-flickr:hover,
.btn-flickr:focus,
.btn-flickr.focus,
@@ -3094,11 +3675,13 @@ fieldset[disabled] .btn-facebook.active {
background-color: #cc006a;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-flickr:active,
.btn-flickr.active,
.open > .dropdown-toggle.btn-flickr {
background-image: none;
}
+
.btn-flickr.disabled,
.btn-flickr[disabled],
fieldset[disabled] .btn-flickr,
@@ -3120,15 +3703,18 @@ fieldset[disabled] .btn-flickr.active {
background-color: #ff0084;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-flickr .badge {
color: #ff0084;
background-color: #ffffff;
}
+
.btn-foursquare {
color: #ffffff;
background-color: #0072b1;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-foursquare:hover,
.btn-foursquare:focus,
.btn-foursquare.focus,
@@ -3139,11 +3725,13 @@ fieldset[disabled] .btn-flickr.active {
background-color: #00517e;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-foursquare:active,
.btn-foursquare.active,
.open > .dropdown-toggle.btn-foursquare {
background-image: none;
}
+
.btn-foursquare.disabled,
.btn-foursquare[disabled],
fieldset[disabled] .btn-foursquare,
@@ -3165,15 +3753,18 @@ fieldset[disabled] .btn-foursquare.active {
background-color: #0072b1;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-foursquare .badge {
color: #0072b1;
background-color: #ffffff;
}
+
.btn-github {
color: #ffffff;
background-color: #444444;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-github:hover,
.btn-github:focus,
.btn-github.focus,
@@ -3184,11 +3775,13 @@ fieldset[disabled] .btn-foursquare.active {
background-color: #2b2b2b;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-github:active,
.btn-github.active,
.open > .dropdown-toggle.btn-github {
background-image: none;
}
+
.btn-github.disabled,
.btn-github[disabled],
fieldset[disabled] .btn-github,
@@ -3210,15 +3803,18 @@ fieldset[disabled] .btn-github.active {
background-color: #444444;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-github .badge {
color: #444444;
background-color: #ffffff;
}
+
.btn-google-plus {
color: #ffffff;
background-color: #dd4b39;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-google-plus:hover,
.btn-google-plus:focus,
.btn-google-plus.focus,
@@ -3229,11 +3825,13 @@ fieldset[disabled] .btn-github.active {
background-color: #c23321;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-google-plus:active,
.btn-google-plus.active,
.open > .dropdown-toggle.btn-google-plus {
background-image: none;
}
+
.btn-google-plus.disabled,
.btn-google-plus[disabled],
fieldset[disabled] .btn-google-plus,
@@ -3255,15 +3853,18 @@ fieldset[disabled] .btn-google-plus.active {
background-color: #dd4b39;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-google-plus .badge {
color: #dd4b39;
background-color: #ffffff;
}
+
.btn-instagram {
color: #ffffff;
background-color: #3f729b;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-instagram:hover,
.btn-instagram:focus,
.btn-instagram.focus,
@@ -3274,11 +3875,13 @@ fieldset[disabled] .btn-google-plus.active {
background-color: #305777;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-instagram:active,
.btn-instagram.active,
.open > .dropdown-toggle.btn-instagram {
background-image: none;
}
+
.btn-instagram.disabled,
.btn-instagram[disabled],
fieldset[disabled] .btn-instagram,
@@ -3300,15 +3903,18 @@ fieldset[disabled] .btn-instagram.active {
background-color: #3f729b;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-instagram .badge {
color: #3f729b;
background-color: #ffffff;
}
+
.btn-linkedin {
color: #ffffff;
background-color: #007bb6;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-linkedin:hover,
.btn-linkedin:focus,
.btn-linkedin.focus,
@@ -3319,11 +3925,13 @@ fieldset[disabled] .btn-instagram.active {
background-color: #005983;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-linkedin:active,
.btn-linkedin.active,
.open > .dropdown-toggle.btn-linkedin {
background-image: none;
}
+
.btn-linkedin.disabled,
.btn-linkedin[disabled],
fieldset[disabled] .btn-linkedin,
@@ -3345,15 +3953,18 @@ fieldset[disabled] .btn-linkedin.active {
background-color: #007bb6;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-linkedin .badge {
color: #007bb6;
background-color: #ffffff;
}
+
.btn-tumblr {
color: #ffffff;
background-color: #2c4762;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-tumblr:hover,
.btn-tumblr:focus,
.btn-tumblr.focus,
@@ -3364,11 +3975,13 @@ fieldset[disabled] .btn-linkedin.active {
background-color: #1c2d3f;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-tumblr:active,
.btn-tumblr.active,
.open > .dropdown-toggle.btn-tumblr {
background-image: none;
}
+
.btn-tumblr.disabled,
.btn-tumblr[disabled],
fieldset[disabled] .btn-tumblr,
@@ -3390,15 +4003,18 @@ fieldset[disabled] .btn-tumblr.active {
background-color: #2c4762;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-tumblr .badge {
color: #2c4762;
background-color: #ffffff;
}
+
.btn-twitter {
color: #ffffff;
background-color: #55acee;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-twitter:hover,
.btn-twitter:focus,
.btn-twitter.focus,
@@ -3409,11 +4025,13 @@ fieldset[disabled] .btn-tumblr.active {
background-color: #2795e9;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-twitter:active,
.btn-twitter.active,
.open > .dropdown-toggle.btn-twitter {
background-image: none;
}
+
.btn-twitter.disabled,
.btn-twitter[disabled],
fieldset[disabled] .btn-twitter,
@@ -3435,15 +4053,18 @@ fieldset[disabled] .btn-twitter.active {
background-color: #55acee;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-twitter .badge {
color: #55acee;
background-color: #ffffff;
}
+
.btn-vk {
color: #ffffff;
background-color: #587ea3;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-vk:hover,
.btn-vk:focus,
.btn-vk.focus,
@@ -3454,11 +4075,13 @@ fieldset[disabled] .btn-twitter.active {
background-color: #466482;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-vk:active,
.btn-vk.active,
.open > .dropdown-toggle.btn-vk {
background-image: none;
}
+
.btn-vk.disabled,
.btn-vk[disabled],
fieldset[disabled] .btn-vk,
@@ -3480,10 +4103,12 @@ fieldset[disabled] .btn-vk.active {
background-color: #587ea3;
border-color: rgba(0, 0, 0, 0.2);
}
+
.btn-vk .badge {
color: #587ea3;
background-color: #ffffff;
}
+
/*
* Plugin: Full Calendar
* ---------------------
@@ -3495,76 +4120,92 @@ fieldset[disabled] .btn-vk.active {
border-color: #ddd;
border-bottom-color: #ddd;
}
+
.fc-button:hover,
.fc-button:active,
.fc-button.hover {
background-color: #e9e9e9;
}
+
.fc-header-title h2 {
font-size: 15px;
line-height: 1.6em;
color: #666;
margin-left: 10px;
}
+
.fc-header-right {
padding-right: 10px;
}
+
.fc-header-left {
padding-left: 10px;
}
+
.fc-widget-header {
background: #fafafa;
}
+
.fc-grid {
width: 100%;
border: 0;
}
+
.fc-widget-header:first-of-type,
.fc-widget-content:first-of-type {
border-left: 0;
border-right: 0;
}
+
.fc-widget-header:last-of-type,
.fc-widget-content:last-of-type {
border-right: 0;
}
+
.fc-toolbar {
padding: 10px;
margin: 0;
}
+
.fc-day-number {
font-size: 20px;
font-weight: 300;
padding-right: 10px;
}
+
.fc-color-picker {
list-style: none;
margin: 0;
padding: 0;
}
+
.fc-color-picker > li {
float: left;
font-size: 30px;
margin-right: 5px;
line-height: 30px;
}
+
.fc-color-picker > li .fa {
-webkit-transition: -webkit-transform linear 0.3s;
-moz-transition: -moz-transform linear 0.3s;
-o-transition: -o-transform linear 0.3s;
transition: transform linear 0.3s;
}
+
.fc-color-picker > li .fa:hover {
-webkit-transform: rotate(30deg);
-ms-transform: rotate(30deg);
-o-transform: rotate(30deg);
transform: rotate(30deg);
}
+
#add-new-event {
-webkit-transition: all linear 0.3s;
-o-transition: all linear 0.3s;
transition: all linear 0.3s;
}
+
.external-event {
padding: 5px 10px;
font-weight: bold;
@@ -3574,9 +4215,11 @@ fieldset[disabled] .btn-vk.active {
border-radius: 3px;
cursor: move;
}
+
.external-event:hover {
box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2);
}
+
/*
* General: Miscellaneous
* ----------------------
@@ -3585,35 +4228,43 @@ fieldset[disabled] .btn-vk.active {
.pad {
padding: 10px;
}
+
.margin {
margin: 10px;
}
+
.margin-bottom {
margin-bottom: 20px;
}
+
/* Display inline */
.inline {
display: inline;
width: auto;
}
+
/* Description Blocks */
.description-block {
display: block;
margin: 10px 0;
text-align: center;
}
+
.description-block.margin-bottom {
margin-bottom: 25px;
}
+
.description-block > .description-header {
margin: 0;
padding: 0;
font-weight: 600;
font-size: 16px;
}
+
.description-block > .description-text {
text-transform: uppercase;
}
+
/* Background colors */
.bg-red,
.bg-yellow,
@@ -3676,13 +4327,16 @@ fieldset[disabled] .btn-vk.active {
.modal-danger .modal-footer {
color: #fff !important;
}
+
.bg-gray {
color: #000;
background-color: #d2d6de !important;
}
+
.bg-black {
background-color: #111111 !important;
}
+
.bg-red,
.callout.callout-danger,
.alert-danger,
@@ -3691,6 +4345,7 @@ fieldset[disabled] .btn-vk.active {
.modal-danger .modal-body {
background-color: #dd4b39 !important;
}
+
.bg-yellow,
.callout.callout-warning,
.alert-warning,
@@ -3698,6 +4353,7 @@ fieldset[disabled] .btn-vk.active {
.modal-warning .modal-body {
background-color: #f39c12 !important;
}
+
.bg-aqua,
.callout.callout-info,
.alert-info,
@@ -3705,14 +4361,17 @@ fieldset[disabled] .btn-vk.active {
.modal-info .modal-body {
background-color: #00c0ef !important;
}
+
.bg-blue {
background-color: #0073b7 !important;
}
+
.bg-light-blue,
.label-primary,
.modal-primary .modal-body {
background-color: #3c8dbc !important;
}
+
.bg-green,
.callout.callout-success,
.alert-success,
@@ -3720,162 +4379,209 @@ fieldset[disabled] .btn-vk.active {
.modal-success .modal-body {
background-color: #00a65a !important;
}
+
.bg-navy {
background-color: #001f3f !important;
}
+
.bg-teal {
background-color: #39cccc !important;
}
+
.bg-olive {
background-color: #3d9970 !important;
}
+
.bg-lime {
background-color: #01ff70 !important;
}
+
.bg-orange {
background-color: #ff851b !important;
}
+
.bg-fuchsia {
background-color: #f012be !important;
}
+
.bg-purple {
background-color: #605ca8 !important;
}
+
.bg-maroon {
background-color: #d81b60 !important;
}
+
.bg-gray-active {
color: #000;
background-color: #b5bbc8 !important;
}
+
.bg-black-active {
background-color: #000000 !important;
}
+
.bg-red-active,
.modal-danger .modal-header,
.modal-danger .modal-footer {
background-color: #d33724 !important;
}
+
.bg-yellow-active,
.modal-warning .modal-header,
.modal-warning .modal-footer {
background-color: #db8b0b !important;
}
+
.bg-aqua-active,
.modal-info .modal-header,
.modal-info .modal-footer {
background-color: #00a7d0 !important;
}
+
.bg-blue-active {
background-color: #005384 !important;
}
+
.bg-light-blue-active,
.modal-primary .modal-header,
.modal-primary .modal-footer {
background-color: #357ca5 !important;
}
+
.bg-green-active,
.modal-success .modal-header,
.modal-success .modal-footer {
background-color: #008d4c !important;
}
+
.bg-navy-active {
background-color: #001a35 !important;
}
+
.bg-teal-active {
background-color: #30bbbb !important;
}
+
.bg-olive-active {
background-color: #368763 !important;
}
+
.bg-lime-active {
background-color: #00e765 !important;
}
+
.bg-orange-active {
background-color: #ff7701 !important;
}
+
.bg-fuchsia-active {
background-color: #db0ead !important;
}
+
.bg-purple-active {
background-color: #555299 !important;
}
+
.bg-maroon-active {
background-color: #ca195a !important;
}
+
[class^="bg-"].disabled {
opacity: 0.65;
filter: alpha(opacity=65);
}
+
/* Text colors */
.text-red {
color: #dd4b39 !important;
}
+
.text-yellow {
color: #f39c12 !important;
}
+
.text-aqua {
color: #00c0ef !important;
}
+
.text-blue {
color: #0073b7 !important;
}
+
.text-black {
color: #111111 !important;
}
+
.text-light-blue {
color: #3c8dbc !important;
}
+
.text-green {
color: #00a65a !important;
}
+
.text-gray {
color: #d2d6de !important;
}
+
.text-navy {
color: #001f3f !important;
}
+
.text-teal {
color: #39cccc !important;
}
+
.text-olive {
color: #3d9970 !important;
}
+
.text-lime {
color: #01ff70 !important;
}
+
.text-orange {
color: #ff851b !important;
}
+
.text-fuchsia {
color: #f012be !important;
}
+
.text-purple {
color: #605ca8 !important;
}
+
.text-maroon {
color: #d81b60 !important;
}
+
/*Hide elements by display none only*/
.hide {
display: none !important;
}
+
/* Remove borders */
.no-border {
border: 0px !important;
}
+
/* Remove padding */
.no-padding {
padding: 0px !important;
}
+
/* Remove margins */
.no-margin {
margin: 0px !important;
}
+
/* Remove box shadow */
.no-shadow {
- box-shadow: none!important;
+ box-shadow: none !important;
}
+
/* Unstyled List */
.list-unstyled,
.chart-legend,
@@ -3886,21 +4592,25 @@ fieldset[disabled] .btn-vk.active {
margin: 0;
padding: 0;
}
+
/* Remove border radius */
.flat {
border-radius: 0 !important;
}
+
.text-bold,
.text-bold.table td,
.text-bold.table th {
font-weight: 700;
}
+
/* _fix for sparkline tooltip */
.jqstooltip {
- padding: 5px!important;
- width: auto!important;
- height: auto!important;
+ padding: 5px !important;
+ width: auto !important;
+ height: auto !important;
}
+
/*
Gradient Background colors
*/
@@ -3913,6 +4623,7 @@ Gradient Background colors
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39cccc', GradientType=0) !important;
color: #fff;
}
+
.bg-light-blue-gradient {
background: #3c8dbc !important;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important;
@@ -3922,6 +4633,7 @@ Gradient Background colors
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important;
color: #fff;
}
+
.bg-blue-gradient {
background: #0073b7 !important;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important;
@@ -3931,6 +4643,7 @@ Gradient Background colors
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important;
color: #fff;
}
+
.bg-aqua-gradient {
background: #00c0ef !important;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important;
@@ -3940,6 +4653,7 @@ Gradient Background colors
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important;
color: #fff;
}
+
.bg-yellow-gradient {
background: #f39c12 !important;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important;
@@ -3949,6 +4663,7 @@ Gradient Background colors
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important;
color: #fff;
}
+
.bg-purple-gradient {
background: #605ca8 !important;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important;
@@ -3958,6 +4673,7 @@ Gradient Background colors
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important;
color: #fff;
}
+
.bg-green-gradient {
background: #00a65a !important;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important;
@@ -3967,6 +4683,7 @@ Gradient Background colors
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important;
color: #fff;
}
+
.bg-red-gradient {
background: #dd4b39 !important;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important;
@@ -3976,6 +4693,7 @@ Gradient Background colors
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important;
color: #fff;
}
+
.bg-black-gradient {
background: #111111 !important;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #111111), color-stop(1, #2b2b2b)) !important;
@@ -3985,6 +4703,7 @@ Gradient Background colors
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111111', GradientType=0) !important;
color: #fff;
}
+
.bg-maroon-gradient {
background: #d81b60 !important;
background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #d81b60), color-stop(1, #e73f7c)) !important;
@@ -3994,9 +4713,11 @@ Gradient Background colors
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#d81b60', GradientType=0) !important;
color: #fff;
}
+
.connectedSortable {
min-height: 100px;
}
+
.ui-helper-hidden-accessible {
border: 0;
clip: rect(0 0 0 0);
@@ -4007,19 +4728,23 @@ Gradient Background colors
position: absolute;
width: 1px;
}
+
.sort-highlight {
background: #f4f4f4;
border: 1px dashed #ddd;
margin-bottom: 10px;
}
+
.full-opacity-hover {
opacity: 0.65;
filter: alpha(opacity=65);
}
+
.full-opacity-hover:hover {
opacity: 1;
filter: alpha(opacity=100);
}
+
/*
* Misc: print
* -----------
@@ -4030,37 +4755,43 @@ Gradient Background colors
.left-side,
.main-header,
.content-header {
- display: none!important;
+ display: none !important;
}
+
.content-wrapper,
.right-side,
.main-footer {
- margin-left: 0!important;
- min-height: 0!important;
+ margin-left: 0 !important;
+ min-height: 0 !important;
-webkit-transform: translate(0, 0) !important;
-ms-transform: translate(0, 0) !important;
-o-transform: translate(0, 0) !important;
transform: translate(0, 0) !important;
}
+
.fixed .content-wrapper,
.fixed .right-side {
- padding-top: 0!important;
+ padding-top: 0 !important;
}
+
.invoice {
width: 100%;
border: 0;
margin: 0;
padding: 0;
}
+
.invoice-col {
float: left;
width: 33.3333333%;
}
+
.table-responsive {
overflow: auto;
}
+
.table-responsive > .table tr th,
.table-responsive > .table tr td {
- white-space: normal!important;
+ white-space: normal !important;
}
}
[4/5] kylin git commit: reformat code
Posted by zh...@apache.org.
reformat code
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/e3b8be38
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/e3b8be38
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/e3b8be38
Branch: refs/heads/master
Commit: e3b8be38c855ee1395fd4765462702215efe76bb
Parents: 48180ec
Author: Jason <ji...@163.com>
Authored: Tue Jul 12 16:28:29 2016 +0800
Committer: Jason <ji...@163.com>
Committed: Tue Jul 12 20:25:25 2016 +0800
----------------------------------------------------------------------
assembly/pom.xml | 5 +-
atopcalcite/pom.xml | 5 +-
build/conf/kylin_job_conf.xml | 54 +--
build/conf/kylin_job_conf_inmem.xml | 98 ++--
build/deploy/server.xml | 20 +-
checkstyle-suppressions.xml | 10 +-
checkstyle.xml | 6 +-
core-common/pom.xml | 9 +-
core-cube/pom.xml | 3 +-
core-dictionary/pom.xml | 5 +-
core-job/pom.xml | 5 +-
core-metadata/pom.xml | 7 +-
core-storage/pom.xml | 5 +-
engine-mr/pom.xml | 3 +-
engine-spark/pom.xml | 9 +-
engine-streaming/pom.xml | 4 +-
jdbc/pom.xml | 3 +-
pom.xml | 25 +-
query/pom.xml | 5 +-
server-base/pom.xml | 5 +-
server/pom.xml | 9 +-
source-hive/pom.xml | 5 +-
source-kafka/pom.xml | 3 +-
storage-hbase/pom.xml | 6 +-
webapp/.jshintrc | 1 -
webapp/Gruntfile.js | 524 ++++++++++----------
webapp/app/css/AdminLTE.css | 787 +++++++++++++++++++++++++++++--
webapp/app/index.html | 118 ++---
webapp/app/js/app.js | 4 +-
webapp/app/js/config.js | 102 ++--
webapp/app/js/listeners.js | 20 +-
webapp/app/less/app.less | 20 +-
webapp/app/less/build.less | 1 -
webapp/app/less/component.less | 284 ++++++++---
webapp/app/less/home.less | 6 +-
webapp/app/less/layout.less | 5 +-
webapp/app/less/navbar.less | 80 ++--
webapp/app/partials/footer.html | 9 +-
webapp/app/partials/header.html | 113 ++---
webapp/app/partials/home.html | 70 +--
webapp/app/partials/login.html | 64 +--
webapp/app/routes.json | 194 ++++----
webapp/bower.json | 2 +-
webapp/grunt.json | 148 +++---
webapp/package.json | 40 +-
45 files changed, 1923 insertions(+), 978 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/assembly/pom.xml
----------------------------------------------------------------------
diff --git a/assembly/pom.xml b/assembly/pom.xml
index fc1ef63..4442e14 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>kylin</artifactId>
<groupId>org.apache.kylin</groupId>
@@ -220,7 +221,7 @@
</activation>
<build>
<plugins>
-
+
</plugins>
</build>
</profile>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/atopcalcite/pom.xml
----------------------------------------------------------------------
diff --git a/atopcalcite/pom.xml b/atopcalcite/pom.xml
index be28f1c..b208ea1 100644
--- a/atopcalcite/pom.xml
+++ b/atopcalcite/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>atopcalcite</artifactId>
@@ -32,7 +33,7 @@
<properties>
</properties>
-
+
<dependencies>
<dependency>
<groupId>org.apache.calcite</groupId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/build/conf/kylin_job_conf.xml
----------------------------------------------------------------------
diff --git a/build/conf/kylin_job_conf.xml b/build/conf/kylin_job_conf.xml
index 19c8847..877e82f 100644
--- a/build/conf/kylin_job_conf.xml
+++ b/build/conf/kylin_job_conf.xml
@@ -25,37 +25,37 @@
</description>
</property>
- <property>
- <name>mapred.compress.map.output</name>
- <value>true</value>
- <description>Compress map outputs</description>
- </property>
+ <property>
+ <name>mapred.compress.map.output</name>
+ <value>true</value>
+ <description>Compress map outputs</description>
+ </property>
- <property>
- <name>mapred.map.output.compression.codec</name>
- <value>org.apache.hadoop.io.compress.SnappyCodec</value>
- <description>The compression codec to use for map outputs
- </description>
- </property>
+ <property>
+ <name>mapred.map.output.compression.codec</name>
+ <value>org.apache.hadoop.io.compress.SnappyCodec</value>
+ <description>The compression codec to use for map outputs
+ </description>
+ </property>
- <property>
- <name>mapred.output.compress</name>
- <value>true</value>
- <description>Compress the output of a MapReduce job</description>
- </property>
+ <property>
+ <name>mapred.output.compress</name>
+ <value>true</value>
+ <description>Compress the output of a MapReduce job</description>
+ </property>
- <property>
- <name>mapred.output.compression.codec</name>
- <value>org.apache.hadoop.io.compress.SnappyCodec</value>
- <description>The compression codec to use for job outputs
- </description>
- </property>
+ <property>
+ <name>mapred.output.compression.codec</name>
+ <value>org.apache.hadoop.io.compress.SnappyCodec</value>
+ <description>The compression codec to use for job outputs
+ </description>
+ </property>
- <property>
- <name>mapred.output.compression.type</name>
- <value>BLOCK</value>
- <description>The compression type to use for job outputs</description>
- </property>
+ <property>
+ <name>mapred.output.compression.type</name>
+ <value>BLOCK</value>
+ <description>The compression type to use for job outputs</description>
+ </property>
<property>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/build/conf/kylin_job_conf_inmem.xml
----------------------------------------------------------------------
diff --git a/build/conf/kylin_job_conf_inmem.xml b/build/conf/kylin_job_conf_inmem.xml
index 55bf9ed..1cd809d 100644
--- a/build/conf/kylin_job_conf_inmem.xml
+++ b/build/conf/kylin_job_conf_inmem.xml
@@ -25,37 +25,37 @@
</description>
</property>
- <property>
- <name>mapred.compress.map.output</name>
- <value>true</value>
- <description>Compress map outputs</description>
- </property>
-
- <property>
- <name>mapred.map.output.compression.codec</name>
- <value>org.apache.hadoop.io.compress.SnappyCodec</value>
- <description>The compression codec to use for map outputs
- </description>
- </property>
-
- <property>
- <name>mapred.output.compress</name>
- <value>true</value>
- <description>Compress the output of a MapReduce job</description>
- </property>
-
- <property>
- <name>mapred.output.compression.codec</name>
- <value>org.apache.hadoop.io.compress.SnappyCodec</value>
- <description>The compression codec to use for job outputs
- </description>
- </property>
-
- <property>
- <name>mapred.output.compression.type</name>
- <value>BLOCK</value>
- <description>The compression type to use for job outputs</description>
- </property>
+ <property>
+ <name>mapred.compress.map.output</name>
+ <value>true</value>
+ <description>Compress map outputs</description>
+ </property>
+
+ <property>
+ <name>mapred.map.output.compression.codec</name>
+ <value>org.apache.hadoop.io.compress.SnappyCodec</value>
+ <description>The compression codec to use for map outputs
+ </description>
+ </property>
+
+ <property>
+ <name>mapred.output.compress</name>
+ <value>true</value>
+ <description>Compress the output of a MapReduce job</description>
+ </property>
+
+ <property>
+ <name>mapred.output.compression.codec</name>
+ <value>org.apache.hadoop.io.compress.SnappyCodec</value>
+ <description>The compression codec to use for job outputs
+ </description>
+ </property>
+
+ <property>
+ <name>mapred.output.compression.type</name>
+ <value>BLOCK</value>
+ <description>The compression type to use for job outputs</description>
+ </property>
<property>
@@ -76,23 +76,23 @@
<description>Set task timeout to 1 hour</description>
</property>
- <!--Additional config for in-mem cubing, giving mapper more memory -->
- <property>
- <name>mapreduce.map.memory.mb</name>
- <value>3072</value>
- <description></description>
- </property>
-
- <property>
- <name>mapreduce.map.java.opts</name>
- <value>-Xmx2700m</value>
- <description></description>
- </property>
-
- <property>
- <name>mapreduce.task.io.sort.mb</name>
- <value>200</value>
- <description></description>
- </property>
+ <!--Additional config for in-mem cubing, giving mapper more memory -->
+ <property>
+ <name>mapreduce.map.memory.mb</name>
+ <value>3072</value>
+ <description></description>
+ </property>
+
+ <property>
+ <name>mapreduce.map.java.opts</name>
+ <value>-Xmx2700m</value>
+ <description></description>
+ </property>
+
+ <property>
+ <name>mapreduce.task.io.sort.mb</name>
+ <value>200</value>
+ <description></description>
+ </property>
</configuration>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/build/deploy/server.xml
----------------------------------------------------------------------
diff --git a/build/deploy/server.xml b/build/deploy/server.xml
index 2a78368..72a87d0 100644
--- a/build/deploy/server.xml
+++ b/build/deploy/server.xml
@@ -24,13 +24,13 @@
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!--APR library loader. Documentation at /docs/apr.html -->
- <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+ <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>
<!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
- <Listener className="org.apache.catalina.core.JasperListener" />
+ <Listener className="org.apache.catalina.core.JasperListener"/>
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
- <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
- <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
- <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<!-- Global JNDI resources
Documentation at /docs/jndi-resources-howto.html
@@ -43,7 +43,7 @@
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
- pathname="conf/tomcat-users.xml" />
+ pathname="conf/tomcat-users.xml"/>
</GlobalNamingResources>
<!-- A "Service" is a collection of one or more "Connectors" that share
@@ -74,7 +74,7 @@
compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml,text/javascript,application/javascript,application/json,text/css,text/plain"
- />
+ />
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
@@ -96,7 +96,7 @@
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
- <Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
+ <Connector port="9009" protocol="AJP/1.3" redirectPort="9443"/>
<!-- An Engine represents the entry point (within Catalina) that processes
@@ -128,7 +128,7 @@
resourceName="UserDatabase"/>
</Realm>
- <Host name="localhost" appBase="webapps"
+ <Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- SingleSignOn valve, share authentication between web applications
@@ -142,7 +142,7 @@
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
- pattern="%h %l %u %t "%r" %s %b" />
+ pattern="%h %l %u %t "%r" %s %b"/>
</Host>
</Engine>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/checkstyle-suppressions.xml
----------------------------------------------------------------------
diff --git a/checkstyle-suppressions.xml b/checkstyle-suppressions.xml
index fbb8667..06de625 100644
--- a/checkstyle-suppressions.xml
+++ b/checkstyle-suppressions.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
- "-//Puppy Crawl//DTD Suppressions 1.0//EN"
- "http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">
+ "-//Puppy Crawl//DTD Suppressions 1.0//EN"
+ "http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">
<!--
/**
* Licensed to the Apache Software Foundation (ASF) under one
@@ -22,7 +22,7 @@
*/
-->
<suppressions>
- <suppress checks="." files=".*[/\\]generated[/\\].*\.java"/>
- <suppress checks="." files=".*[/\\]org[/\\]apache[/\\]calcite[/\\].*\.java"/>
- <suppress checks="MagicNumberCheck" files=".*Test\.java"/>
+ <suppress checks="." files=".*[/\\]generated[/\\].*\.java"/>
+ <suppress checks="." files=".*[/\\]org[/\\]apache[/\\]calcite[/\\].*\.java"/>
+ <suppress checks="MagicNumberCheck" files=".*Test\.java"/>
</suppressions>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/checkstyle.xml
----------------------------------------------------------------------
diff --git a/checkstyle.xml b/checkstyle.xml
index 682186f..3c5b83f 100644
--- a/checkstyle.xml
+++ b/checkstyle.xml
@@ -21,12 +21,12 @@
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="FileTabCharacter"/>
- <module name="SuppressWarningsFilter" />
+ <module name="SuppressWarningsFilter"/>
<module name="TreeWalker">
<module name="AvoidStarImport"/>
<module name="RedundantImport"/>
<module name="UnusedImports">
- <property name="processJavadoc" value="true"/>
+ <property name="processJavadoc" value="true"/>
</module>
<module name="LineLength">
<property name="max" value="1000"/>
@@ -57,6 +57,6 @@
<module name="WhitespaceAfter">
<property name="tokens" value="COMMA"/>
</module>
- <module name="SuppressWarningsHolder" />
+ <module name="SuppressWarningsHolder"/>
</module>
</module>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/core-common/pom.xml
----------------------------------------------------------------------
diff --git a/core-common/pom.xml b/core-common/pom.xml
index ca4c7a9..8f3fcbc 100644
--- a/core-common/pom.xml
+++ b/core-common/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-core-common</artifactId>
@@ -65,8 +66,8 @@
<artifactId>commons-email</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
@@ -100,7 +101,7 @@
</dependency>
<!-- Env & Test -->
-
+
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/core-cube/pom.xml
----------------------------------------------------------------------
diff --git a/core-cube/pom.xml b/core-cube/pom.xml
index 0fc2875..cd65237 100644
--- a/core-cube/pom.xml
+++ b/core-cube/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-core-cube</artifactId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/core-dictionary/pom.xml
----------------------------------------------------------------------
diff --git a/core-dictionary/pom.xml b/core-dictionary/pom.xml
index b0f400e..69209d0 100644
--- a/core-dictionary/pom.xml
+++ b/core-dictionary/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-core-dictionary</artifactId>
@@ -60,7 +61,7 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
-
+
</dependencies>
</project>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/core-job/pom.xml
----------------------------------------------------------------------
diff --git a/core-job/pom.xml b/core-job/pom.xml
index 8a1211f..a3c1d82 100644
--- a/core-job/pom.xml
+++ b/core-job/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-core-job</artifactId>
@@ -35,7 +36,7 @@
</properties>
<dependencies>
-
+
<dependency>
<groupId>org.apache.kylin</groupId>
<artifactId>kylin-core-cube</artifactId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/core-metadata/pom.xml
----------------------------------------------------------------------
diff --git a/core-metadata/pom.xml b/core-metadata/pom.xml
index 0a7cb40..6f0d91e 100644
--- a/core-metadata/pom.xml
+++ b/core-metadata/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-core-metadata</artifactId>
@@ -28,14 +29,14 @@
<groupId>org.apache.kylin</groupId>
<artifactId>kylin</artifactId>
<version>1.5.3-SNAPSHOT</version>
-
+
</parent>
<properties>
</properties>
<dependencies>
-
+
<dependency>
<groupId>org.apache.kylin</groupId>
<artifactId>kylin-core-common</artifactId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/core-storage/pom.xml
----------------------------------------------------------------------
diff --git a/core-storage/pom.xml b/core-storage/pom.xml
index 27ee61c..d8c1a29 100644
--- a/core-storage/pom.xml
+++ b/core-storage/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-core-storage</artifactId>
@@ -35,7 +36,7 @@
</properties>
<dependencies>
-
+
<dependency>
<groupId>org.apache.kylin</groupId>
<artifactId>kylin-core-cube</artifactId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/engine-mr/pom.xml
----------------------------------------------------------------------
diff --git a/engine-mr/pom.xml b/engine-mr/pom.xml
index 12a6b73..2f6ca79 100644
--- a/engine-mr/pom.xml
+++ b/engine-mr/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-engine-mr</artifactId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/engine-spark/pom.xml
----------------------------------------------------------------------
diff --git a/engine-spark/pom.xml b/engine-spark/pom.xml
index 207fc4d..004549d 100644
--- a/engine-spark/pom.xml
+++ b/engine-spark/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.kylin</groupId>
@@ -41,7 +42,7 @@
<artifactId>kylin-storage-hbase</artifactId>
<version>${project.parent.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.kylin</groupId>
<artifactId>kylin-core-job</artifactId>
@@ -98,7 +99,7 @@
<scope>test</scope>
<version>${project.parent.version}</version>
</dependency>
-
+
<dependency>
<groupId>org.apache.kylin</groupId>
<artifactId>kylin-core-common</artifactId>
@@ -120,7 +121,6 @@
</dependency>
-
</dependencies>
<build>
@@ -158,5 +158,4 @@
</build>
-
</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/engine-streaming/pom.xml
----------------------------------------------------------------------
diff --git a/engine-streaming/pom.xml b/engine-streaming/pom.xml
index 7110377..85f2750 100644
--- a/engine-streaming/pom.xml
+++ b/engine-streaming/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-engine-streaming</artifactId>
@@ -116,5 +117,4 @@
</dependencies>
-
</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/jdbc/pom.xml
----------------------------------------------------------------------
diff --git a/jdbc/pom.xml b/jdbc/pom.xml
index a663fb3..890a4c0 100644
--- a/jdbc/pom.xml
+++ b/jdbc/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-jdbc</artifactId>
<packaging>jar</packaging>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 4b9c7c0..806c16b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,14 +17,15 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>16</version>
- <relativePath />
+ <relativePath/>
<!-- no parent resolution -->
</parent>
@@ -168,8 +169,8 @@
<connection>scm:git:https://git-wip-us.apache.org/repos/asf/kylin.git</connection>
<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/kylin.git</developerConnection>
<url>https://git-wip-us.apache.org/repos/asf/kylin.git</url>
- <tag>HEAD</tag>
- </scm>
+ <tag>HEAD</tag>
+ </scm>
<dependencyManagement>
<dependencies>
@@ -486,12 +487,12 @@
</repositories>
<build>
-
+
<pluginManagement>
-
+
<plugins>
-
-
+
+
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
@@ -803,12 +804,12 @@
<exclude>lib/**</exclude>
<exclude>dist/**</exclude>
<exclude>website/**</exclude>
-
+
<!-- text files without comments -->
<exclude>**/*.csv</exclude>
<exclude>**/*.json</exclude>
<exclude>**/*.md</exclude>
-
+
<!-- binary files -->
<exclude>**/*.dict</exclude>
<exclude>**/*.dic</exclude>
@@ -818,13 +819,13 @@
<exclude>**/*.doc</exclude>
<exclude>**/*.txt</exclude>
<exclude>**/.checkstyle</exclude>
-
+
<!-- Kylin's website content -->
<exclude>**/.sass-cache/**</exclude>
<!-- tomcat package -->
<exclude>tomcat/**</exclude>
-
+
<!-- front end libary and generated files -->
<exclude>webapp/node_modules/**</exclude>
<exclude>webapp/dist/**</exclude>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/query/pom.xml
----------------------------------------------------------------------
diff --git a/query/pom.xml b/query/pom.xml
index a0b8d94..0dff0c3 100644
--- a/query/pom.xml
+++ b/query/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- The basics. -->
<artifactId>kylin-query</artifactId>
@@ -245,5 +246,5 @@
</build>
</profile>
</profiles>
-
+
</project>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/server-base/pom.xml
----------------------------------------------------------------------
diff --git a/server-base/pom.xml b/server-base/pom.xml
index e6a4cc5..c0d48c9 100644
--- a/server-base/pom.xml
+++ b/server-base/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-server-base</artifactId>
@@ -141,7 +142,7 @@
<artifactId>spring-test</artifactId>
<version>${spring.framework.version}</version>
</dependency>
-
+
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.security</groupId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/server/pom.xml
----------------------------------------------------------------------
diff --git a/server/pom.xml b/server/pom.xml
index e662909..602dcad 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-server</artifactId>
@@ -105,7 +106,7 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
-
+
<!-- Test & Env -->
<dependency>
<groupId>org.apache.kylin</groupId>
@@ -128,7 +129,7 @@
<scope>test</scope>
<version>${project.parent.version}</version>
</dependency>
-
+
<!-- depends on kylin-jdbc just for running jdbc test cases in server module -->
<dependency>
<groupId>org.apache.kylin</groupId>
@@ -266,7 +267,7 @@
</exclusion>
</exclusions>
</dependency>
-
+
<!-- Tomcat Env -->
<dependency>
<groupId>org.apache.tomcat</groupId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/source-hive/pom.xml
----------------------------------------------------------------------
diff --git a/source-hive/pom.xml b/source-hive/pom.xml
index a7c68eb..631e43e 100644
--- a/source-hive/pom.xml
+++ b/source-hive/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-source-hive</artifactId>
@@ -35,7 +36,7 @@
</properties>
<dependencies>
-
+
<dependency>
<groupId>org.apache.kylin</groupId>
<artifactId>kylin-engine-mr</artifactId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/source-kafka/pom.xml
----------------------------------------------------------------------
diff --git a/source-kafka/pom.xml b/source-kafka/pom.xml
index cf92762..228b956 100644
--- a/source-kafka/pom.xml
+++ b/source-kafka/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-source-kafka</artifactId>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/storage-hbase/pom.xml
----------------------------------------------------------------------
diff --git a/storage-hbase/pom.xml b/storage-hbase/pom.xml
index 0cb42db..4c1cfdc 100644
--- a/storage-hbase/pom.xml
+++ b/storage-hbase/pom.xml
@@ -17,7 +17,8 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>kylin-storage-hbase</artifactId>
@@ -122,7 +123,8 @@
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>coprocessor</shadedClassifierName>
<transformers>
- <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
+ <transformer
+ implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<artifactSet>
<includes>
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/.jshintrc
----------------------------------------------------------------------
diff --git a/webapp/.jshintrc b/webapp/.jshintrc
index 0839b6b..2963d51 100644
--- a/webapp/.jshintrc
+++ b/webapp/.jshintrc
@@ -14,7 +14,6 @@
"strict": false,
"trailing": true,
"undef": true,
-
"globals": {
"angular": true,
"Config": true
http://git-wip-us.apache.org/repos/asf/kylin/blob/e3b8be38/webapp/Gruntfile.js
----------------------------------------------------------------------
diff --git a/webapp/Gruntfile.js b/webapp/Gruntfile.js
index fc45b91..d871f4f 100644
--- a/webapp/Gruntfile.js
+++ b/webapp/Gruntfile.js
@@ -14,284 +14,284 @@
* 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.
-*/
+ */
'use strict';
module.exports = function (grunt) {
- // Project configuration.
- grunt.config.init({
- buildEnv: grunt.option('buildEnv') || 'prod',
- buildNumber: grunt.option('buildNumber') || '0',
- pkg: grunt.file.readJSON('package.json'),
- config: grunt.file.readJSON('grunt.json'),
- bump: {
- options: {
- files: '<%= config.bump.options.files %>',
- commit: true,
- commitFiles: '<%= config.bump.options.commitFiles %>',
- commitMessage: 'Release v%VERSION%',
- createTag: false,
- tagName: 'v%VERSION%',
- tagMessage: 'Version %VERSION%',
- push: false
+ // Project configuration.
+ grunt.config.init({
+ buildEnv: grunt.option('buildEnv') || 'prod',
+ buildNumber: grunt.option('buildNumber') || '0',
+ pkg: grunt.file.readJSON('package.json'),
+ config: grunt.file.readJSON('grunt.json'),
+ bump: {
+ options: {
+ files: '<%= config.bump.options.files %>',
+ commit: true,
+ commitFiles: '<%= config.bump.options.commitFiles %>',
+ commitMessage: 'Release v%VERSION%',
+ createTag: false,
+ tagName: 'v%VERSION%',
+ tagMessage: 'Version %VERSION%',
+ push: false
+ }
+ },
+ changelog: {
+ options: {
+ dest: 'CHANGELOG.md',
+ prepend: true
+ }
+ },
+ clean: {
+ build: ['dist/', 'tmp/'],
+ tmp: ['tmp/']
+ },
+ concat: {
+ app: {
+ src: [
+ 'tmp/js/templates.js',
+ 'app/js/**/*.js'
+ ],
+ dest: 'tmp/js/scripts.js'
+ },
+ components: '<%= config.concat.components %>',
+ css: '<%= config.concat.css %>'
+ },
+ copy: {
+ tmp: {
+ files: [
+ {
+ expand: true,
+ cwd: 'app/',
+ src: ['**'],
+ dest: 'tmp/'
+ }
+ ]
+ },
+ build: {
+ files: [
+ {
+ expand: true,
+ cwd: 'tmp/',
+ src: ['index.html', 'js/scripts.min.js', 'image/**', 'css/styles.min.css', 'routes.json'],
+ dest: 'dist/',
+ rename: function (desc, src) {
+ return desc + src.replace('min.', 'min.<%= buildNumber %>.')
}
- },
- changelog: {
- options: {
- dest: 'CHANGELOG.md',
- prepend: true
- }
- },
- clean: {
- build: ['dist/', 'tmp/'],
- tmp: ['tmp/']
- },
- concat: {
- app: {
- src: [
- 'tmp/js/templates.js',
- 'app/js/**/*.js'
- ],
- dest: 'tmp/js/scripts.js'
- },
- components: '<%= config.concat.components %>',
- css: '<%= config.concat.css %>'
- },
- copy: {
- tmp: {
- files: [
- {
- expand: true,
- cwd: 'app/',
- src: ['**'],
- dest: 'tmp/'
- }
- ]
- },
- build: {
- files: [
- {
- expand: true,
- cwd: 'tmp/',
- src: ['index.html', 'js/scripts.min.js', 'image/**', 'css/styles.min.css', 'routes.json'],
- dest: 'dist/',
- rename: function (desc, src) {
- return desc + src.replace('min.', 'min.<%= buildNumber %>.')
- }
- },
- {
- expand: true,
- cwd: 'tmp/',
- src: ['htaccess.dist'],
- dest: 'dist/',
- rename: function (dest, src) {
- console.log(src);
- if (src == 'htaccess.dist') {
- return dest + '.htaccess';
- }
- }
- },
- {
- expand: true,
- cwd: 'app/components/font-awesome/',
- src: ['fonts/*'],
- dest: 'dist/'
- },
- {
- expand: true,
- cwd: 'app/components/bootstrap/dist/',
- src: ['fonts/*'],
- dest: 'dist/'
- },
- {
- expand: true,
- cwd: 'app/components/ace/',
- src: ['fonts/*'],
- dest: 'dist/'
- },
- {
- expand: true,
- cwd: 'app/components/angular-tree-control/images/',
- src: ['*'],
- dest: 'dist/images'
- },
- {
- expand: true,
- cwd: 'app/components/chosen/',
- src: ['*.png'],
- dest: 'dist/css'
- },
- {
- expand: true,
- cwd: 'app/components/angular-ui-grid/',
- src: ['ui-grid.eot', 'ui-grid.svg', 'ui-grid.ttf', 'ui-grid.woff'],
- dest: 'dist/css'
- },
- {
- expand: true,
- cwd: 'app/components/ace-builds/',
- src: ['src-min-noconflict/worker-json.js'],
- flatten: true,
- dest: 'dist/'
- }
- ]
- }
- },
- html2js: {
- partials: {
- src: ['app/partials/**/*.html'],
- dest: 'tmp/js/templates.js',
- module: 'templates',
- options: {
- base: 'app/'
- }
- }
- },
- htmlrefs: {
- dist: {
- src: 'tmp/index.html',
- dest: 'tmp/'
- },
- options: {
- buildNumber: '<%= buildNumber %>'
- }
- },
- jshint: {
- files: ['app/js/**/*.js', '!app/components/**'],
- options: {
- jshintrc: '.jshintrc'
- }
- },
- less: {
- prod: {
- options: {
- compress: true,
- yuicompress: true
- },
- files: {
- 'tmp/css/styles.css': 'tmp/less/build.less'
- }
- }
- },
- lesslint: {
- src: ['app/less/**.less']
- },
- manifest: {
- build: {
- options: {
- basePath: 'dist/',
- timestamp: true
- },
- src: ['**/**.**'],
- dest: 'dist/manifest.appcache'
+ },
+ {
+ expand: true,
+ cwd: 'tmp/',
+ src: ['htaccess.dist'],
+ dest: 'dist/',
+ rename: function (dest, src) {
+ console.log(src);
+ if (src == 'htaccess.dist') {
+ return dest + '.htaccess';
+ }
}
+ },
+ {
+ expand: true,
+ cwd: 'app/components/font-awesome/',
+ src: ['fonts/*'],
+ dest: 'dist/'
+ },
+ {
+ expand: true,
+ cwd: 'app/components/bootstrap/dist/',
+ src: ['fonts/*'],
+ dest: 'dist/'
+ },
+ {
+ expand: true,
+ cwd: 'app/components/ace/',
+ src: ['fonts/*'],
+ dest: 'dist/'
+ },
+ {
+ expand: true,
+ cwd: 'app/components/angular-tree-control/images/',
+ src: ['*'],
+ dest: 'dist/images'
+ },
+ {
+ expand: true,
+ cwd: 'app/components/chosen/',
+ src: ['*.png'],
+ dest: 'dist/css'
+ },
+ {
+ expand: true,
+ cwd: 'app/components/angular-ui-grid/',
+ src: ['ui-grid.eot', 'ui-grid.svg', 'ui-grid.ttf', 'ui-grid.woff'],
+ dest: 'dist/css'
+ },
+ {
+ expand: true,
+ cwd: 'app/components/ace-builds/',
+ src: ['src-min-noconflict/worker-json.js'],
+ flatten: true,
+ dest: 'dist/'
+ }
+ ]
+ }
+ },
+ html2js: {
+ partials: {
+ src: ['app/partials/**/*.html'],
+ dest: 'tmp/js/templates.js',
+ module: 'templates',
+ options: {
+ base: 'app/'
+ }
+ }
+ },
+ htmlrefs: {
+ dist: {
+ src: 'tmp/index.html',
+ dest: 'tmp/'
+ },
+ options: {
+ buildNumber: '<%= buildNumber %>'
+ }
+ },
+ jshint: {
+ files: ['app/js/**/*.js', '!app/components/**'],
+ options: {
+ jshintrc: '.jshintrc'
+ }
+ },
+ less: {
+ prod: {
+ options: {
+ compress: true,
+ yuicompress: true
},
- 'regex-replace': {
- strict: {
- src: ['tmp/js/scripts.js'],
- actions: [
- {
- name: 'use strict',
- search: '\\\'use strict\\\';',
- replace: '',
- flags: 'gmi'
- }
- ]
- },
- manifest: {
- src: ['tmp/index.html'],
- actions: [
- {
- name: 'manifest',
- search: '<html>',
- replace: '<html manifest="manifest.appcache">'
- }
- ]
- },
- templates: {
- src: ['tmp/js/scripts.js'],
- actions: [
- {
- name: 'templates',
- search: /kylin\', \[/,
- replace: 'kylin\', [\'templates\',',
- flags: 'gmi'
- }
- ]
- }
+ files: {
+ 'tmp/css/styles.css': 'tmp/less/build.less'
+ }
+ }
+ },
+ lesslint: {
+ src: ['app/less/**.less']
+ },
+ manifest: {
+ build: {
+ options: {
+ basePath: 'dist/',
+ timestamp: true
},
- uglify: {
- app: {
- options: {
- mangle: false
- },
- files: {
- 'tmp/js/scripts.js': 'tmp/js/scripts.js'
- }
- }
+ src: ['**/**.**'],
+ dest: 'dist/manifest.appcache'
+ }
+ },
+ 'regex-replace': {
+ strict: {
+ src: ['tmp/js/scripts.js'],
+ actions: [
+ {
+ name: 'use strict',
+ search: '\\\'use strict\\\';',
+ replace: '',
+ flags: 'gmi'
+ }
+ ]
+ },
+ manifest: {
+ src: ['tmp/index.html'],
+ actions: [
+ {
+ name: 'manifest',
+ search: '<html>',
+ replace: '<html manifest="manifest.appcache">'
+ }
+ ]
+ },
+ templates: {
+ src: ['tmp/js/scripts.js'],
+ actions: [
+ {
+ name: 'templates',
+ search: /kylin\', \[/,
+ replace: 'kylin\', [\'templates\',',
+ flags: 'gmi'
+ }
+ ]
+ }
+ },
+ uglify: {
+ app: {
+ options: {
+ mangle: false
},
- karma: {
- unit: {
- configFile: 'karma.unit.conf.js'
- },
- e2e: {
- configFile: 'karma.e2e.conf.js'
- }
+ files: {
+ 'tmp/js/scripts.js': 'tmp/js/scripts.js'
}
- });
+ }
+ },
+ karma: {
+ unit: {
+ configFile: 'karma.unit.conf.js'
+ },
+ e2e: {
+ configFile: 'karma.e2e.conf.js'
+ }
+ }
+ });
- // Additional task plugins
- grunt.loadNpmTasks('grunt-contrib');
- grunt.loadNpmTasks('grunt-conventional-changelog');
- grunt.loadNpmTasks('grunt-bump');
- grunt.loadNpmTasks('grunt-html2js');
- grunt.loadNpmTasks('grunt-htmlrefs');
- grunt.loadNpmTasks('grunt-lesslint');
- grunt.loadNpmTasks('grunt-manifest');
- grunt.loadNpmTasks('grunt-regex-replace');
- grunt.loadNpmTasks('grunt-karma');
+ // Additional task plugins
+ grunt.loadNpmTasks('grunt-contrib');
+ grunt.loadNpmTasks('grunt-conventional-changelog');
+ grunt.loadNpmTasks('grunt-bump');
+ grunt.loadNpmTasks('grunt-html2js');
+ grunt.loadNpmTasks('grunt-htmlrefs');
+ grunt.loadNpmTasks('grunt-lesslint');
+ grunt.loadNpmTasks('grunt-manifest');
+ grunt.loadNpmTasks('grunt-regex-replace');
+ grunt.loadNpmTasks('grunt-karma');
- grunt.registerTask('test', ['jshint', 'lesslint']);
+ grunt.registerTask('test', ['jshint', 'lesslint']);
- grunt.registerTask('prod', [
+ grunt.registerTask('prod', [
// 'test',
- 'clean:build',
- 'copy:tmp',
- 'html2js',
- 'concat:app',
- 'regex-replace:strict',
- 'regex-replace:templates',
- 'uglify',
- 'regex-replace:manifest',
- 'concat:components',
- 'less',
- 'concat:css',
- 'htmlrefs',
- 'copy:build',
- 'clean:tmp',
- 'manifest',
- 'changelog'
- ]);
+ 'clean:build',
+ 'copy:tmp',
+ 'html2js',
+ 'concat:app',
+ 'regex-replace:strict',
+ 'regex-replace:templates',
+ 'uglify',
+ 'regex-replace:manifest',
+ 'concat:components',
+ 'less',
+ 'concat:css',
+ 'htmlrefs',
+ 'copy:build',
+ 'clean:tmp',
+ 'manifest',
+ 'changelog'
+ ]);
- grunt.registerTask('dev', [
+ grunt.registerTask('dev', [
// 'test',
- 'clean:build',
- 'copy:tmp',
- 'html2js',
- 'concat:app',
- 'regex-replace:strict',
- 'regex-replace:templates',
+ 'clean:build',
+ 'copy:tmp',
+ 'html2js',
+ 'concat:app',
+ 'regex-replace:strict',
+ 'regex-replace:templates',
// 'uglify',
- 'regex-replace:manifest',
- 'concat:components',
- 'less',
- 'concat:css',
- 'htmlrefs',
- 'copy:build',
- 'clean:tmp',
- 'manifest',
- 'changelog'
- ]);
+ 'regex-replace:manifest',
+ 'concat:components',
+ 'less',
+ 'concat:css',
+ 'htmlrefs',
+ 'copy:build',
+ 'clean:tmp',
+ 'manifest',
+ 'changelog'
+ ]);
};