Skip to content

Commit 8586e1f

Browse files
cloverheartsjongyoul
authored andcommitted
change ui for interpreter running Per x mode
1 parent 0b5d671 commit 8586e1f

File tree

2 files changed

+121
-41
lines changed

2 files changed

+121
-41
lines changed

zeppelin-web/src/app/interpreter/interpreter.controller.js

Lines changed: 55 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
angular.module('zeppelinWebApp').controller('InterpreterCtrl', InterpreterCtrl);
1818

19-
InterpreterCtrl.$inject = ['$scope', '$http', 'baseUrlSrv', 'ngToast', '$timeout', '$route'];
19+
InterpreterCtrl.$inject = ['$rootScope', '$scope', '$http', 'baseUrlSrv', 'ngToast', '$timeout', '$route'];
2020

21-
function InterpreterCtrl($scope, $http, baseUrlSrv, ngToast, $timeout, $route) {
21+
function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeout, $route) {
2222
var interpreterSettingsTmp = [];
2323
$scope.interpreterSettings = [];
2424
$scope.availableInterpreters = {};
@@ -196,6 +196,59 @@
196196
}
197197
};
198198

199+
$scope.getInterpreterRunningOption = function(settingId) {
200+
var option;
201+
if (settingId === undefined) {
202+
option = $scope.newInterpreterSetting.option;
203+
} else {
204+
var index = _.findIndex($scope.interpreterSettings, {'id': settingId});
205+
var setting = $scope.interpreterSettings[index];
206+
option = setting.option;
207+
}
208+
209+
var isPerNote = option.perNote;
210+
var isPerUser = option.perUser;
211+
212+
if (isPerNote === true && isPerUser === false) {
213+
if (option.session === false && option.process === false) {
214+
option.session = true;
215+
}
216+
217+
return {value: 'Per Note', isPerNote: isPerNote, isPerUser: isPerUser};
218+
} else if (isPerNote !== undefined && isPerUser === true) {
219+
if (option.session === false && option.process === false) {
220+
option.session = true;
221+
}
222+
console.log('clover ', $rootScope.ticket);
223+
if ($rootScope.ticket.ticket === 'anonymous' && $rootScope.ticket.roles === '[]') {
224+
option.perNote = true;
225+
option.perUser = false;
226+
return {value: 'Per Note', isPerNote: isPerNote, isPerUser: isPerUser};
227+
}
228+
return {value: 'Per User', isPerNote: isPerNote, isPerUser: isPerUser};
229+
230+
} else {
231+
// fixed shared on Globally
232+
option.session = false;
233+
option.process = false;
234+
235+
return {value: 'Globally', isPerNote: isPerNote, isPerUser: isPerUser};
236+
}
237+
};
238+
239+
$scope.setInterpreterRunningOption = function (settingId, isPerNoteMode, isPerUserMode) {
240+
var option;
241+
if (settingId === undefined) {
242+
option = $scope.newInterpreterSetting.option;
243+
} else {
244+
var index = _.findIndex($scope.interpreterSettings, {'id': settingId});
245+
var setting = $scope.interpreterSettings[index];
246+
option = setting.option;
247+
}
248+
option.perNote = isPerNoteMode;
249+
option.perUser = isPerUserMode;
250+
};
251+
199252
$scope.updateInterpreterSetting = function(form, settingId) {
200253
var thisConfirm = BootstrapDialog.confirm({
201254
closable: false,

zeppelin-web/src/app/interpreter/interpreter.html

Lines changed: 66 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -145,45 +145,72 @@ <h3 class="interpreter-title">{{setting.name}}
145145
<div class="row interpreter">
146146
<div class="col-md-12">
147147
<h5>Option</h5>
148-
<span class="checkbox input-group">
149-
<label><input type="checkbox" style="width:0%;height:0%" id="perNote" ng-model="setting.option.perNote" ng-disabled="!valueform.$visible"/>
150-
perNote </label>
151-
</span>
152-
<span class="checkbox input-group">
153-
<label><input type="checkbox" style="width:0%;height:0%" id="perUser" ng-model="setting.option.perUser" ng-disabled="!valueform.$visible"/>
154-
perUser</label>
155-
</span>
156-
<span class="btn-group">
157-
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
158-
data-toggle="dropdown"
159-
ng-disabled="!valueform.$visible">
160-
{{getSessionOption(setting.id)}} <span class="caret"></span>
161-
</button>
162-
<ul class="dropdown-menu" role="menu">
163-
<li>
164-
<a style="cursor:pointer"
165-
tooltip="Single interpreter instance are shared across notes"
166-
ng-click="setSessionOption(setting.id, 'shared')">
167-
shared
168-
</a>
169-
</li>
170-
<li>
171-
<a style="cursor:pointer"
172-
tooltip="Separate Interpreter instance for each note"
173-
ng-click="setSessionOption(setting.id, 'scoped')">
174-
scoped
175-
</a>
176-
</li>
177-
<li>
178-
<a style="cursor:pointer"
179-
tooltip="Separate Interpreter process for each note"
180-
ng-click="setSessionOption(setting.id, 'isolated')">
181-
isolated
182-
</a>
183-
</li>
184-
</ul>
185-
</span>
186-
<span>Interpreter for note</span>
148+
<div class="row interpreter" style="margin-top: 5px;">
149+
<div class="col-md-12">
150+
The interpreter will be instantiated
151+
<span class="btn-group">
152+
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
153+
data-toggle="dropdown"
154+
ng-disabled="!valueform.$visible">
155+
{{getInterpreterRunningOption(setting.id).value}} <span class="caret"></span>
156+
</button>
157+
<ul class="dropdown-menu" role="menu">
158+
<li>
159+
<a style="cursor:pointer"
160+
ng-click="setInterpreterRunningOption(setting.id, false, false)">
161+
Globally
162+
</a>
163+
</li>
164+
<li>
165+
<a style="cursor:pointer"
166+
ng-click="setInterpreterRunningOption(setting.id, true, false)">
167+
Per Note
168+
</a>
169+
</li>
170+
<li ng-if="ticket.ticket !== 'anonymous' && ticket.roles.length !== 0">
171+
<a style="cursor:pointer"
172+
ng-click="setInterpreterRunningOption(setting.id, false, true)">
173+
Per User
174+
</a>
175+
</li>
176+
</ul>
177+
</span>
178+
in
179+
<span class="btn-group">
180+
<button type="button" class="btn btn-default btn-xs dropdown-toggle"
181+
data-toggle="dropdown"
182+
ng-disabled="!valueform.$visible
183+
|| getInterpreterRunningOption(setting.id).value === 'Globally'">
184+
{{getSessionOption(setting.id)}} <span class="caret"></span>
185+
</button>
186+
<ul class="dropdown-menu" role="menu">
187+
<li
188+
ng-if="getInterpreterRunningOption(setting.id).value === 'Globally'">
189+
<a style="cursor:pointer"
190+
tooltip="Single interpreter instance are shared across notes"
191+
ng-click="setSessionOption(setting.id, 'shared')">
192+
shared
193+
</a>
194+
</li>
195+
<li>
196+
<a style="cursor:pointer"
197+
tooltip="Separate Interpreter instance for each note"
198+
ng-click="setSessionOption(setting.id, 'scoped')">
199+
scoped
200+
</a>
201+
</li>
202+
<li>
203+
<a style="cursor:pointer"
204+
tooltip="Separate Interpreter process for each note"
205+
ng-click="setSessionOption(setting.id, 'isolated')">
206+
isolated
207+
</a>
208+
</li>
209+
</ul>
210+
</span>
211+
process.
212+
</div>
213+
</div>
187214
</div>
188215
</div>
189216
<div class="row interpreter" style="margin-top: 5px;">

0 commit comments

Comments
 (0)