mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
implement frontend for interpreter per user mode and misc mode
This commit is contained in:
parent
1f64e52ed2
commit
b18bff4a1f
2 changed files with 192 additions and 46 deletions
|
|
@ -156,7 +156,7 @@
|
|||
interpreterSettingsTmp[index] = angular.copy($scope.interpreterSettings[index]);
|
||||
};
|
||||
|
||||
$scope.setSessionOption = function(settingId, sessionOption) {
|
||||
$scope.setPerNoteOption = function(settingId, sessionOption) {
|
||||
var option;
|
||||
if (settingId === undefined) {
|
||||
option = $scope.newInterpreterSetting.option;
|
||||
|
|
@ -167,18 +167,21 @@
|
|||
}
|
||||
|
||||
if (sessionOption === 'isolated') {
|
||||
option.perNote = sessionOption;
|
||||
option.session = false;
|
||||
option.process = true;
|
||||
} else if (sessionOption === 'scoped') {
|
||||
option.perNote = sessionOption;
|
||||
option.session = true;
|
||||
option.process = false;
|
||||
} else {
|
||||
option.perNote = 'shared';
|
||||
option.session = false;
|
||||
option.process = false;
|
||||
}
|
||||
};
|
||||
|
||||
$scope.getSessionOption = function(settingId) {
|
||||
$scope.setPerUserOption = function(settingId, sessionOption) {
|
||||
var option;
|
||||
if (settingId === undefined) {
|
||||
option = $scope.newInterpreterSetting.option;
|
||||
|
|
@ -187,9 +190,54 @@
|
|||
var setting = $scope.interpreterSettings[index];
|
||||
option = setting.option;
|
||||
}
|
||||
if (option.session) {
|
||||
|
||||
if (sessionOption === 'isolated') {
|
||||
option.perUser = sessionOption;
|
||||
option.session = false;
|
||||
option.process = true;
|
||||
} else if (sessionOption === 'scoped') {
|
||||
option.perUser = sessionOption;
|
||||
option.session = true;
|
||||
option.process = false;
|
||||
} else {
|
||||
option.perUser = 'shared';
|
||||
option.session = false;
|
||||
option.process = false;
|
||||
}
|
||||
};
|
||||
|
||||
$scope.getPerNoteOption = function(settingId) {
|
||||
var option;
|
||||
if (settingId === undefined) {
|
||||
option = $scope.newInterpreterSetting.option;
|
||||
} else {
|
||||
var index = _.findIndex($scope.interpreterSettings, {'id': settingId});
|
||||
var setting = $scope.interpreterSettings[index];
|
||||
option = setting.option;
|
||||
}
|
||||
|
||||
if (option.perNote == 'scoped') {
|
||||
return 'scoped';
|
||||
} else if (option.process) {
|
||||
} else if (option.perNote == 'isolated') {
|
||||
return 'isolated';
|
||||
} else {
|
||||
return 'shared';
|
||||
}
|
||||
};
|
||||
|
||||
$scope.getPerUserOption = function(settingId) {
|
||||
var option;
|
||||
if (settingId === undefined) {
|
||||
option = $scope.newInterpreterSetting.option;
|
||||
} else {
|
||||
var index = _.findIndex($scope.interpreterSettings, {'id': settingId});
|
||||
var setting = $scope.interpreterSettings[index];
|
||||
option = setting.option;
|
||||
}
|
||||
|
||||
if (option.perUser == 'scoped') {
|
||||
return 'scoped';
|
||||
} else if (option.perUser == 'isolated') {
|
||||
return 'isolated';
|
||||
} else {
|
||||
return 'shared';
|
||||
|
|
@ -197,6 +245,12 @@
|
|||
};
|
||||
|
||||
$scope.getInterpreterRunningOption = function(settingId) {
|
||||
var sharedModeName = 'shared';
|
||||
|
||||
var globallyModeName = 'Globally';
|
||||
var perNoteModeName = 'Per Note';
|
||||
var perUserModeName = 'Per User';
|
||||
|
||||
var option;
|
||||
if (settingId === undefined) {
|
||||
option = $scope.newInterpreterSetting.option;
|
||||
|
|
@ -206,37 +260,33 @@
|
|||
option = setting.option;
|
||||
}
|
||||
|
||||
var isPerNote = option.perNote;
|
||||
var isPerUser = option.perUser;
|
||||
var perNote = option.perNote;
|
||||
var perUser = option.perUser;
|
||||
|
||||
if (isPerNote === true && isPerUser === false) {
|
||||
if (option.session === false && option.process === false) {
|
||||
option.session = true;
|
||||
}
|
||||
|
||||
return {value: 'Per Note', isPerNote: isPerNote, isPerUser: isPerUser};
|
||||
} else if (isPerNote !== undefined && isPerUser === true) {
|
||||
if (option.session === false && option.process === false) {
|
||||
option.session = true;
|
||||
}
|
||||
console.log('clover ', $rootScope.ticket);
|
||||
if ($rootScope.ticket.ticket === 'anonymous' && $rootScope.ticket.roles === '[]') {
|
||||
option.perNote = true;
|
||||
option.perUser = false;
|
||||
return {value: 'Per Note', isPerNote: isPerNote, isPerUser: isPerUser};
|
||||
}
|
||||
return {value: 'Per User', isPerNote: isPerNote, isPerUser: isPerUser};
|
||||
|
||||
} else {
|
||||
// fixed shared on Globally
|
||||
option.session = false;
|
||||
option.process = false;
|
||||
|
||||
return {value: 'Globally', isPerNote: isPerNote, isPerUser: isPerUser};
|
||||
// Globally == shared_perNote + shared_perUser
|
||||
if (perNote === sharedModeName && perUser === sharedModeName) {
|
||||
return globallyModeName;
|
||||
}
|
||||
|
||||
if ($rootScope.ticket.ticket === 'anonymous' && $rootScope.ticket.roles === '[]') {
|
||||
if (perNote !== undefined && typeof perNote === 'string' && perNote !== '') {
|
||||
return perNoteModeName;
|
||||
}
|
||||
} else if ($rootScope.ticket.ticket !== 'anonymous') {
|
||||
if (perNote !== undefined && typeof perNote === 'string' && perNote !== '') {
|
||||
if (perUser !== undefined && typeof perUser === 'string' && perUser !== '') {
|
||||
return perUserModeName;
|
||||
}
|
||||
return perNoteModeName;
|
||||
}
|
||||
}
|
||||
|
||||
option.perNote = sharedModeName;
|
||||
option.perUser = sharedModeName;
|
||||
return globallyModeName;
|
||||
};
|
||||
|
||||
$scope.setInterpreterRunningOption = function (settingId, isPerNoteMode, isPerUserMode) {
|
||||
$scope.setInterpreterRunningOption = function(settingId, isPerNoteMode, isPerUserMode) {
|
||||
var option;
|
||||
if (settingId === undefined) {
|
||||
option = $scope.newInterpreterSetting.option;
|
||||
|
|
|
|||
|
|
@ -146,30 +146,30 @@ limitations under the License.
|
|||
<div class="col-md-12">
|
||||
<h5>Option</h5>
|
||||
<div class="row interpreter" style="margin-top: 5px;">
|
||||
<div class="col-md-12">
|
||||
<div class="col-md-6">
|
||||
The interpreter will be instantiated
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
ng-disabled="!valueform.$visible">
|
||||
{{getInterpreterRunningOption(setting.id).value}} <span class="caret"></span>
|
||||
{{getInterpreterRunningOption(setting.id)}} <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-click="setInterpreterRunningOption(setting.id, false, false)">
|
||||
ng-click="setInterpreterRunningOption(setting.id, 'shared', 'shared')">
|
||||
Globally
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-click="setInterpreterRunningOption(setting.id, true, false)">
|
||||
ng-click="setInterpreterRunningOption(setting.id, 'scoped', '')">
|
||||
Per Note
|
||||
</a>
|
||||
</li>
|
||||
<li ng-if="ticket.ticket !== 'anonymous' && ticket.roles.length !== 0">
|
||||
<li ng-if="ticket.ticket !== 'anonymous' && ticket.roles !== '[]'">
|
||||
<a style="cursor:pointer"
|
||||
ng-click="setInterpreterRunningOption(setting.id, false, true)">
|
||||
ng-click="setInterpreterRunningOption(setting.id, 'shared', 'scoped')">
|
||||
Per User
|
||||
</a>
|
||||
</li>
|
||||
|
|
@ -180,35 +180,131 @@ limitations under the License.
|
|||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
ng-disabled="!valueform.$visible
|
||||
|| getInterpreterRunningOption(setting.id).value === 'Globally'">
|
||||
{{getSessionOption(setting.id)}} <span class="caret"></span>
|
||||
|| getInterpreterRunningOption(setting.id) === 'Globally'">
|
||||
<span ng-if="getInterpreterRunningOption(setting.id) !== 'Per User'">
|
||||
{{getPerNoteOption(setting.id)}}
|
||||
</span>
|
||||
<span ng-if="getInterpreterRunningOption(setting.id) === 'Per User'">
|
||||
{{getPerUserOption(setting.id)}}
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li
|
||||
ng-if="getInterpreterRunningOption(setting.id).value === 'Globally'">
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Globally'">
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Single interpreter instance are shared across notes"
|
||||
ng-click="setSessionOption(setting.id, 'shared')">
|
||||
shared
|
||||
ng-click="setPerNoteOption(setting.id, 'shared')">
|
||||
shared per note
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Per Note'"
|
||||
tooltip="Separate Interpreter instance for each note"
|
||||
ng-click="setSessionOption(setting.id, 'scoped')">
|
||||
scoped
|
||||
ng-click="setPerNoteOption(setting.id, 'scoped')">
|
||||
scoped per note
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Per User'"
|
||||
tooltip="Separate Interpreter instance for each note"
|
||||
ng-click="setPerUserOption(setting.id, 'scoped')">
|
||||
scoped per user
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Per Note'"
|
||||
tooltip="Separate Interpreter process for each note"
|
||||
ng-click="setSessionOption(setting.id, 'isolated')">
|
||||
isolated
|
||||
ng-click="setPerNoteOption(setting.id, 'isolated')">
|
||||
isolated per note
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
ng-if="getInterpreterRunningOption(setting.id) === 'Per User'"
|
||||
tooltip="Separate Interpreter process for each note"
|
||||
ng-click="setPerUserOption(setting.id, 'isolated')">
|
||||
isolated per user
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
process.
|
||||
<span ng-if="getInterpreterRunningOption(setting.id) === 'Per User' && ticket.ticket !== 'anonymous' && ticket.roles !== '[]'">
|
||||
<span ng-if="getPerNoteOption(setting.id) === 'shared'">
|
||||
<button type="button" class="btn btn-default btn-xs"
|
||||
ng-click="setPerNoteOption(setting.id, 'scoped')"
|
||||
ng-disabled="!valueform.$visible"
|
||||
data-toggle="dropdown">
|
||||
<i class="fa fa-plus"></i>
|
||||
</button>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="row interpreter" style="margin-top: 6px;">
|
||||
<div class="col-md-6">
|
||||
<span ng-if="getInterpreterRunningOption(setting.id) === 'Per User' && ticket.ticket !== 'anonymous' && ticket.roles !== '[]'">
|
||||
<span ng-if="getPerNoteOption(setting.id) !== 'shared'">
|
||||
<span class="hidden-xs" style="padding-left: 190px;">And </span>
|
||||
<span class="visible-xs" style="padding-left: 0px;">And </span>
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
ng-disabled="true">
|
||||
<span>
|
||||
Per Note
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</span>
|
||||
in
|
||||
<span class="btn-group">
|
||||
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
ng-disabled="!valueform.$visible">
|
||||
<span>
|
||||
{{getPerNoteOption(setting.id)}}
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" role="menu">
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Separate Interpreter instance for each note"
|
||||
ng-click="setPerNoteOption(setting.id, 'scoped')">
|
||||
scoped per note
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a style="cursor:pointer"
|
||||
tooltip="Separate Interpreter process for each note"
|
||||
ng-click="setPerNoteOption(setting.id, 'isolated')">
|
||||
isolated per note
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
process.
|
||||
<button type="button" class="btn btn-default btn-xs"
|
||||
ng-disabled="!valueform.$visible"
|
||||
ng-click="setPerNoteOption(setting.id, 'shared')"
|
||||
data-toggle="dropdown">
|
||||
<i class="fa fa-minus"></i>
|
||||
</button>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in a new issue