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/10/20 03:20:35 UTC
kylin git commit: KYLIN-2082 support update streaming config
Repository: kylin
Updated Branches:
refs/heads/master 554771272 -> 1ceaf9eeb
KYLIN-2082 support update streaming config
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/1ceaf9ee
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/1ceaf9ee
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/1ceaf9ee
Branch: refs/heads/master
Commit: 1ceaf9eebe2be35071e526e90d14ac59196268d1
Parents: 5547712
Author: Jason <ji...@163.com>
Authored: Thu Oct 20 11:17:48 2016 +0800
Committer: Jason <ji...@163.com>
Committed: Thu Oct 20 11:20:15 2016 +0800
----------------------------------------------------------------------
webapp/app/js/controllers/sourceMeta.js | 102 +++++++++++++++++++
webapp/app/js/controllers/streamingConfig.js | 49 ++++++---
webapp/app/less/component.less | 16 +++
.../partials/cubeDesigner/streamingConfig.html | 9 +-
webapp/app/partials/tables/table_detail.html | 6 ++
webapp/app/partials/tables/table_load.html | 30 ++++++
6 files changed, 194 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/1ceaf9ee/webapp/app/js/controllers/sourceMeta.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/sourceMeta.js b/webapp/app/js/controllers/sourceMeta.js
index e3ab0ac..3bbdfc0 100755
--- a/webapp/app/js/controllers/sourceMeta.js
+++ b/webapp/app/js/controllers/sourceMeta.js
@@ -424,6 +424,35 @@ KylinApp
}
};
+ $scope.editStreamingConfig = function(tableName){
+ var modalInstance = $modal.open({
+ templateUrl: 'editStreamingSource.html',
+ controller: EditStreamingSourceCtrl,
+ backdrop : 'static',
+ resolve: {
+ tableNames: function () {
+ return $scope.tableNames;
+ },
+ projectName: function () {
+ return $scope.projectModel.selectedProject;
+ },
+ tableName: function(){
+ return tableName;
+ },
+ scope: function () {
+ return $scope;
+ }
+ }
+ });
+
+ modalInstance.result.then(function () {
+ $scope.$broadcast('StreamingConfigEdited');
+ }, function () {
+ $scope.$broadcast('StreamingConfigEdited');
+ });
+
+
+ }
//streaming model
$scope.openStreamingSourceModal = function () {
@@ -449,6 +478,78 @@ KylinApp
});
};
+ var EditStreamingSourceCtrl = function ($scope, $interpolate, $templateCache, tableName, $modalInstance, tableNames, MessageService, projectName, scope, tableConfig,cubeConfig,StreamingModel,StreamingService) {
+
+ $scope.state = {
+ tableName : tableName,
+ mode: "edit",
+ target:"kfkConfig"
+ }
+
+ $scope.cancel = function () {
+ $modalInstance.dismiss('cancel');
+ };
+
+ $scope.projectName = projectName;
+ $scope.streamingMeta = StreamingModel.createStreamingConfig();
+ $scope.kafkaMeta = StreamingModel.createKafkaConfig();
+ $scope.updateStreamingMeta = function(val){
+ $scope.streamingMeta = val;
+ }
+ $scope.updateKafkaMeta = function(val){
+ $scope.kafkaMeta = val;
+ }
+
+ $scope.streamingResultTmpl = function (notification) {
+ // Get the static notification template.
+ var tmpl = notification.type == 'success' ? 'streamingResultSuccess.html' : 'streamingResultError.html';
+ return $interpolate($templateCache.get(tmpl))(notification);
+ };
+
+ $scope.updateStreamingSchema = function(){
+ StreamingService.update({}, {
+ project: $scope.projectName,
+ tableData:angular.toJson(""),
+ streamingConfig: angular.toJson($scope.streamingMeta),
+ kafkaConfig: angular.toJson($scope.kafkaMeta)
+ }, function (request) {
+ if (request.successful) {
+ SweetAlert.swal('', 'Updated the streaming successfully.', 'success');
+ $scope.cancel();
+ } else {
+ var message = request.message;
+ var msg = !!(message) ? message : 'Failed to take action.';
+ MessageService.sendMsg($scope.streamingResultTmpl({
+ 'text': msg,
+ 'streamingSchema': angular.toJson($scope.streamingMeta,true),
+ 'kfkSchema': angular.toJson($scope.kafkaMeta,true)
+ }), 'error', {}, true, 'top_center');
+ }
+ loadingRequest.hide();
+ }, function (e) {
+ if (e.data && e.data.exception) {
+ var message = e.data.exception;
+ var msg = !!(message) ? message : 'Failed to take action.';
+ MessageService.sendMsg($scope.streamingResultTmpl({
+ 'text': msg,
+ 'streamingSchema': angular.toJson($scope.streamingMeta,true),
+ 'kfkSchema': angular.toJson($scope.kafkaMeta,true)
+ }), 'error', {}, true, 'top_center');
+ } else {
+ MessageService.sendMsg($scope.streamingResultTmpl({
+ 'text': msg,
+ 'streamingSchema': angular.toJson($scope.streamingMeta,true),
+ 'kfkSchema': angular.toJson($scope.kafkaMeta,true)
+ }), 'error', {}, true, 'top_center');
+ }
+ //end loading
+ loadingRequest.hide();
+
+ })
+ }
+
+ }
+
var StreamingSourceCtrl = function ($scope, $location,$interpolate,$templateCache, $modalInstance, tableNames, MessageService, projectName, scope, tableConfig,cubeConfig,StreamingModel,StreamingService) {
$scope.cubeState={
@@ -462,6 +563,7 @@ KylinApp
$scope.kafkaMeta = StreamingModel.createKafkaConfig();
+
$scope.steps = {
curStep:1
};
http://git-wip-us.apache.org/repos/asf/kylin/blob/1ceaf9ee/webapp/app/js/controllers/streamingConfig.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/streamingConfig.js b/webapp/app/js/controllers/streamingConfig.js
index 33dae64..1caa32e 100644
--- a/webapp/app/js/controllers/streamingConfig.js
+++ b/webapp/app/js/controllers/streamingConfig.js
@@ -27,6 +27,19 @@ KylinApp.controller('streamingConfigCtrl', function ($scope,StreamingService, $q
$scope.kafkaMeta = StreamingModel.createKafkaConfig();
}
+ if($scope.state.mode=='edit'&& $scope.state.target=='kfkConfig' && $scope.state.tableName){
+ StreamingService.getConfig({table:$scope.state.tableName}, function (configs) {
+ if(!!configs[0]&&configs[0].name.toUpperCase() == $scope.state.tableName.toUpperCase()){
+ $scope.updateStreamingMeta(configs[0]);
+ StreamingService.getKfkConfig({kafkaConfigName:$scope.streamingMeta.name}, function (streamings) {
+ if(!!streamings[0]&&streamings[0].name.toUpperCase() == $scope.state.tableName.toUpperCase()){
+ $scope.updateKafkaMeta(streamings[0]);
+ }
+ })
+ }
+ })
+ }
+
$scope.addCluster = function () {
$scope.kafkaMeta.clusters.push(StreamingModel.createKafkaCluster());
@@ -94,22 +107,30 @@ KylinApp.controller('streamingConfigCtrl', function ($scope,StreamingService, $q
}
//view model
if($scope.state.mode == 'view' && $scope.tableModel.selectedSrcTable.source_type==1){
- var table = $scope.tableModel.selectedSrcTable;
- var streamingName = table.database+"."+table.name;
- $scope.streamingMeta = {};
- $scope.kafkaMeta = {};
- StreamingService.getConfig({table:streamingName}, function (configs) {
- if(!!configs[0]&&configs[0].name.toUpperCase() == streamingName.toUpperCase()){
- $scope.streamingMeta = configs[0];
- StreamingService.getKfkConfig({kafkaConfigName:$scope.streamingMeta.name}, function (streamings) {
- if(!!streamings[0]&&streamings[0].name.toUpperCase() == streamingName.toUpperCase()){
- $scope.kafkaMeta = streamings[0];
- }
- })
- }
- })
+ $scope.reloadMeta();
}
});
+ $scope.$on('StreamingConfigEdited', function (event) {
+ $scope.reloadMeta();
+ });
+
+ $scope.reloadMeta = function(){
+ var table = $scope.tableModel.selectedSrcTable;
+ var streamingName = table.database+"."+table.name;
+ $scope.streamingMeta = {};
+ $scope.kafkaMeta = {};
+ StreamingService.getConfig({table:streamingName}, function (configs) {
+ if(!!configs[0]&&configs[0].name.toUpperCase() == streamingName.toUpperCase()){
+ $scope.streamingMeta = configs[0];
+ StreamingService.getKfkConfig({kafkaConfigName:$scope.streamingMeta.name}, function (streamings) {
+ if(!!streamings[0]&&streamings[0].name.toUpperCase() == streamingName.toUpperCase()){
+ $scope.kafkaMeta = streamings[0];
+ }
+ })
+ }
+ })
+ }
+
});
http://git-wip-us.apache.org/repos/asf/kylin/blob/1ceaf9ee/webapp/app/less/component.less
----------------------------------------------------------------------
diff --git a/webapp/app/less/component.less b/webapp/app/less/component.less
index ed1c9b7..1102b49 100644
--- a/webapp/app/less/component.less
+++ b/webapp/app/less/component.less
@@ -1176,3 +1176,19 @@ ul.abn-tree li.abn-tree-row a {
.modal-body.streaming-source .ace_editor {
height: 600px !important;
}
+
+.pdb-12{
+ padding-bottom: 10px;
+}
+
+.pdt-12{
+ padding-top: 10px;
+}
+
+.ofh{
+ overflow: hidden;
+}
+
+.floatR{
+ float: right;
+}
http://git-wip-us.apache.org/repos/asf/kylin/blob/1ceaf9ee/webapp/app/partials/cubeDesigner/streamingConfig.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubeDesigner/streamingConfig.html b/webapp/app/partials/cubeDesigner/streamingConfig.html
index 83acdd9..0148ac3 100644
--- a/webapp/app/partials/cubeDesigner/streamingConfig.html
+++ b/webapp/app/partials/cubeDesigner/streamingConfig.html
@@ -17,6 +17,7 @@
-->
<div ng-controller="streamingConfigCtrl">
+
<form name="form.cube_streaming_form" novalidate>
<div>
@@ -145,7 +146,7 @@
ng-class="{'has-error':form.cube_streaming_form.timeout.$invalid && (form.cube_streaming_form.timeout.$dirty||form.cube_streaming_form.$submitted)}">
<input ng-if="state.mode=='edit'" name="timeout" required ng-model="kafkaMeta.timeout" type="text"
placeholder="Input kafkaConfig timeout"
- ng-maxlength=100 ng-pattern="/^\+?[1-9][0-9]*$/"
+ ng-pattern="/^\+?[1-9][0-9]*$/"
class="form-control"/>
<small class="help-block"
ng-show="!form.cube_streaming_form.timeout.$error.required && form.cube_streaming_form.timeout.$invalid && (form.cube_streaming_form.timeout.$dirty||form.cube_streaming_form.$submitted)">
@@ -171,7 +172,7 @@
ng-class="{'has-error':form.cube_streaming_form.bufferSize.$invalid && (form.cube_streaming_form.bufferSize.$dirty||form.cube_streaming_form.$submitted)}">
<input ng-if="state.mode=='edit'" name="bufferSize" required ng-model="kafkaMeta.bufferSize" type="text"
placeholder="Input kafkaConfig bufferSize"
- ng-maxlength=100 ng-pattern="/^\+?[1-9][0-9]*$/"
+ ng-pattern="/^\+?[1-9][0-9]*$/"
class="form-control"/>
<small class="help-block"
ng-show="!form.cube_streaming_form.bufferSize.$error.required && form.cube_streaming_form.bufferSize.$invalid && (form.cube_streaming_form.bufferSize.$dirty||form.cube_streaming_form.$submitted)">
@@ -197,7 +198,7 @@
ng-class="{'has-error':form.cube_streaming_form.margin.$invalid && (form.cube_streaming_form.margin.$dirty||form.cube_streaming_form.$submitted)}">
<input ng-if="state.mode=='edit'" name="margin" required ng-model="kafkaMeta.margin" type="text"
placeholder="Input kafkaConfig margin"
- ng-maxlength=100 ng-pattern="/^\+?[1-9][0-9]*$/"
+ ng-pattern="/^\+?[1-9][0-9]*$/"
class="form-control"/>
<small class="help-block"
ng-show="!form.cube_streaming_form.margin.$error.required && form.cube_streaming_form.margin.$invalid && (form.cube_streaming_form.margin.$dirty||form.cube_streaming_form.$submitted)">
@@ -248,7 +249,7 @@
</div>
</div>
</div>
- <div class="form-group middle-popover" ng-if="state.mode=='edit'" ng-class="{'required':state.mode=='edit'}">
+ <div class="form-group middle-popover" ng-if="state.mode=='edit'&&state.target!=='kfkConfig'" ng-class="{'required':state.mode=='edit'}">
<div class="row">
<label class="col-xs-12 col-sm-3 control-label no-padding-right">
<b>Parser Timestamp Field</b>
http://git-wip-us.apache.org/repos/asf/kylin/blob/1ceaf9ee/webapp/app/partials/tables/table_detail.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/tables/table_detail.html b/webapp/app/partials/tables/table_detail.html
index 5bae00f..361ccbf 100644
--- a/webapp/app/partials/tables/table_detail.html
+++ b/webapp/app/partials/tables/table_detail.html
@@ -153,6 +153,12 @@
<!--streaming-->
<div id="streaming" ng-show="tableModel.selectedSrcTable.source_type==1" class="tab-pane">
+ <div class="col-xs-12 pdb-12 pdt-12">
+ <div class="ofh">
+ <a class="btn btn-info floatR" ng-click="editStreamingConfig(tableModel.selectedSrcTable.database+'.'+tableModel.selectedSrcTable.name)"><i class="fa fa-edit"></i>Edit</a>
+ </div>
+ </div>
+
<div ng-include="'partials/cubeDesigner/streamingConfig.html'" ng-init="state.mode='view'"></div>
</div>
http://git-wip-us.apache.org/repos/asf/kylin/blob/1ceaf9ee/webapp/app/partials/tables/table_load.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/tables/table_load.html b/webapp/app/partials/tables/table_load.html
index 834abda..5c72c15 100644
--- a/webapp/app/partials/tables/table_load.html
+++ b/webapp/app/partials/tables/table_load.html
@@ -71,3 +71,33 @@
</div>
</div>
</script>
+
+<script type="text/ng-template" id="editStreamingSource.html">
+
+ <div class="modal-header">
+ <div class="box-header">
+ <h3 class="box-title">Streaming Table And Cluster Info</h3>
+
+ <div class="box-tools pull-right">
+ <button type="button" class="btn btn-box-tool" ng-click="cancel()" data-widget="remove"><i class="fa fa-times"></i></button>
+ </div>
+ </div>
+ </div>
+
+ <div class="modal-body streaming-source" style="height: 660px;overflow-y:auto;">
+ <div ng-include="'partials/cubeDesigner/streamingConfig.html'"></div>
+ </div>
+ <div class="modal-footer">
+ <div class="row">
+ <div class="col-xs-8">
+ <div>
+ </div>
+ </div>
+ <div class="col-xs-4">
+ <button class="btn btn-primary" ng-click="updateStreamingSchema()">
+ Submit
+ </button>
+ </div>
+ </div>
+ </div>
+</script>