implement frontend for interpreter per user mode and misc mode

This commit is contained in:
CloverHearts 2016-10-18 03:22:11 +09:00 committed by Jongyoul Lee
parent 1f64e52ed2
commit b18bff4a1f
2 changed files with 192 additions and 46 deletions

View file

@ -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;

View file

@ -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">
&nbsp;
</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">
&nbsp;
</div>
</div>
</div>