http://git-wip-us.apache.org/repos/asf/zeppelin/blob/19b0f30f/zeppelin-web/src/app/interpreter/interpreter.controller.js ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/interpreter/interpreter.controller.js b/zeppelin-web/src/app/interpreter/interpreter.controller.js index 648a478..330c2ad 100644 --- a/zeppelin-web/src/app/interpreter/interpreter.controller.js +++ b/zeppelin-web/src/app/interpreter/interpreter.controller.js @@ -12,52 +12,52 @@ * limitations under the License. */ -import { ParagraphStatus, } from '../notebook/paragraph/paragraph.status'; +import { ParagraphStatus, } from '../notebook/paragraph/paragraph.status' -angular.module('zeppelinWebApp').controller('InterpreterCtrl', InterpreterCtrl); +angular.module('zeppelinWebApp').controller('InterpreterCtrl', InterpreterCtrl) -function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeout, $route) { - 'ngInject'; +function InterpreterCtrl ($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeout, $route) { + 'ngInject' - var interpreterSettingsTmp = []; - $scope.interpreterSettings = []; - $scope.availableInterpreters = {}; - $scope.showAddNewSetting = false; - $scope.showRepositoryInfo = false; - $scope.searchInterpreter = ''; - $scope._ = _; - ngToast.dismiss(); + let interpreterSettingsTmp = [] + $scope.interpreterSettings = [] + $scope.availableInterpreters = {} + $scope.showAddNewSetting = false + $scope.showRepositoryInfo = false + $scope.searchInterpreter = '' + $scope._ = _ + ngToast.dismiss() - $scope.openPermissions = function() { - $scope.showInterpreterAuth = true; - }; + $scope.openPermissions = function () { + $scope.showInterpreterAuth = true + } - $scope.closePermissions = function() { - $scope.showInterpreterAuth = false; - }; + $scope.closePermissions = function () { + $scope.showInterpreterAuth = false + } - var getSelectJson = function() { - var selectJson = { + let getSelectJson = function () { + let selectJson = { tags: false, multiple: true, tokenSeparators: [',', ' '], minimumInputLength: 2, ajax: { - url: function(params) { + url: function (params) { if (!params.term) { - return false; + return false } - return baseUrlSrv.getRestApiBase() + '/security/userlist/' + params.term; + return baseUrlSrv.getRestApiBase() + '/security/userlist/' + params.term }, delay: 250, - processResults: function(data, params) { - var users = []; + processResults: function (data, params) { + let users = [] if (data.body.users.length !== 0) { - for (var i = 0; i < data.body.users.length; i++) { + for (let i = 0; i < data.body.users.length; i++) { users.push({ 'id': data.body.users[i], 'text': data.body.users[i] - }); + }) } } return { @@ -65,388 +65,389 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou pagination: { more: false } - }; + } }, cache: false } - }; - return selectJson; - }; + } + return selectJson + } - $scope.togglePermissions = function(intpName) { - angular.element('#' + intpName + 'Users').select2(getSelectJson()); + $scope.togglePermissions = function (intpName) { + angular.element('#' + intpName + 'Users').select2(getSelectJson()) if ($scope.showInterpreterAuth) { - $scope.closePermissions(); + $scope.closePermissions() } else { - $scope.openPermissions(); + $scope.openPermissions() } - }; + } - $scope.$on('ngRenderFinished', function(event, data) { - for (var setting = 0; setting < $scope.interpreterSettings.length; setting++) { - angular.element('#' + $scope.interpreterSettings[setting].name + 'Users').select2(getSelectJson()); + $scope.$on('ngRenderFinished', function (event, data) { + for (let setting = 0; setting < $scope.interpreterSettings.length; setting++) { + angular.element('#' + $scope.interpreterSettings[setting].name + 'Users').select2(getSelectJson()) } - }); + }) - var getInterpreterSettings = function() { + let getInterpreterSettings = function () { $http.get(baseUrlSrv.getRestApiBase() + '/interpreter/setting') - .success(function(data, status, headers, config) { - $scope.interpreterSettings = data.body; - checkDownloadingDependencies(); - }).error(function(data, status, headers, config) { - if (status === 401) { - ngToast.danger({ - content: 'You don\'t have permission on this page', - verticalPosition: 'bottom', - timeout: '3000' - }); - setTimeout(function() { - window.location.replace('/'); - }, 3000); - } - console.log('Error %o %o', status, data.message); - }); - }; - - var checkDownloadingDependencies = function() { - var isDownloading = false; - for (var index = 0; index < $scope.interpreterSettings.length; index++) { - var setting = $scope.interpreterSettings[index]; + .success(function (data, status, headers, config) { + $scope.interpreterSettings = data.body + checkDownloadingDependencies() + }).error(function (data, status, headers, config) { + if (status === 401) { + ngToast.danger({ + content: 'You don\'t have permission on this page', + verticalPosition: 'bottom', + timeout: '3000' + }) + setTimeout(function () { + window.location.replace('/') + }, 3000) + } + console.log('Error %o %o', status, data.message) + }) + } + + const checkDownloadingDependencies = function () { + let isDownloading = false + for (let index = 0; index < $scope.interpreterSettings.length; index++) { + let setting = $scope.interpreterSettings[index] if (setting.status === 'DOWNLOADING_DEPENDENCIES') { - isDownloading = true; + isDownloading = true } if (setting.status === ParagraphStatus.ERROR || setting.errorReason) { ngToast.danger({content: 'Error setting properties for interpreter \'' + setting.group + '.' + setting.name + '\': ' + setting.errorReason, - verticalPosition: 'top', dismissOnTimeout: false}); + verticalPosition: 'top', + dismissOnTimeout: false + }) } } if (isDownloading) { - $timeout(function() { + $timeout(function () { if ($route.current.$$route.originalPath === '/interpreter') { - getInterpreterSettings(); + getInterpreterSettings() } - }, 2000); + }, 2000) } - }; - - var getAvailableInterpreters = function() { - $http.get(baseUrlSrv.getRestApiBase() + '/interpreter').success(function(data, status, headers, config) { - $scope.availableInterpreters = data.body; - }).error(function(data, status, headers, config) { - console.log('Error %o %o', status, data.message); - }); - }; - - var emptyNewProperty = function(object) { - angular.extend(object, {propertyValue: '', propertyKey: ''}); - }; - - var emptyNewDependency = function(object) { - angular.extend(object, {depArtifact: '', depExclude: ''}); - }; - - var removeTMPSettings = function(index) { - interpreterSettingsTmp.splice(index, 1); - }; - - $scope.copyOriginInterpreterSettingProperties = function(settingId) { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - interpreterSettingsTmp[index] = angular.copy($scope.interpreterSettings[index]); - }; - - $scope.setPerNoteOption = function(settingId, sessionOption) { - var option; + } + + let getAvailableInterpreters = function () { + $http.get(baseUrlSrv.getRestApiBase() + '/interpreter').success(function (data, status, headers, config) { + $scope.availableInterpreters = data.body + }).error(function (data, status, headers, config) { + console.log('Error %o %o', status, data.message) + }) + } + + let emptyNewProperty = function (object) { + angular.extend(object, {propertyValue: '', propertyKey: ''}) + } + + let emptyNewDependency = function (object) { + angular.extend(object, {depArtifact: '', depExclude: ''}) + } + + let removeTMPSettings = function (index) { + interpreterSettingsTmp.splice(index, 1) + } + + $scope.copyOriginInterpreterSettingProperties = function (settingId) { + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + interpreterSettingsTmp[index] = angular.copy($scope.interpreterSettings[index]) + } + + $scope.setPerNoteOption = function (settingId, sessionOption) { + let option if (settingId === undefined) { - option = $scope.newInterpreterSetting.option; + option = $scope.newInterpreterSetting.option } else { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - var setting = $scope.interpreterSettings[index]; - option = setting.option; + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + let setting = $scope.interpreterSettings[index] + option = setting.option } if (sessionOption === 'isolated') { - option.perNote = sessionOption; - option.session = false; - option.process = true; + option.perNote = sessionOption + option.session = false + option.process = true } else if (sessionOption === 'scoped') { - option.perNote = sessionOption; - option.session = true; - option.process = false; + option.perNote = sessionOption + option.session = true + option.process = false } else { - option.perNote = 'shared'; - option.session = false; - option.process = false; + option.perNote = 'shared' + option.session = false + option.process = false } - }; + } - $scope.setPerUserOption = function(settingId, sessionOption) { - var option; + $scope.setPerUserOption = function (settingId, sessionOption) { + let option if (settingId === undefined) { - option = $scope.newInterpreterSetting.option; + option = $scope.newInterpreterSetting.option } else { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - var setting = $scope.interpreterSettings[index]; - option = setting.option; + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + let setting = $scope.interpreterSettings[index] + option = setting.option } if (sessionOption === 'isolated') { - option.perUser = sessionOption; - option.session = false; - option.process = true; + option.perUser = sessionOption + option.session = false + option.process = true } else if (sessionOption === 'scoped') { - option.perUser = sessionOption; - option.session = true; - option.process = false; + option.perUser = sessionOption + option.session = true + option.process = false } else { - option.perUser = 'shared'; - option.session = false; - option.process = false; + option.perUser = 'shared' + option.session = false + option.process = false } - }; + } - $scope.getPerNoteOption = function(settingId) { - var option; + $scope.getPerNoteOption = function (settingId) { + let option if (settingId === undefined) { - option = $scope.newInterpreterSetting.option; + option = $scope.newInterpreterSetting.option } else { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - var setting = $scope.interpreterSettings[index]; - option = setting.option; + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + let setting = $scope.interpreterSettings[index] + option = setting.option } if (option.perNote === 'scoped') { - return 'scoped'; + return 'scoped' } else if (option.perNote === 'isolated') { - return 'isolated'; + return 'isolated' } else { - return 'shared'; + return 'shared' } - }; + } - $scope.getPerUserOption = function(settingId) { - var option; + $scope.getPerUserOption = function (settingId) { + let option if (settingId === undefined) { - option = $scope.newInterpreterSetting.option; + option = $scope.newInterpreterSetting.option } else { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - var setting = $scope.interpreterSettings[index]; - option = setting.option; + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + let setting = $scope.interpreterSettings[index] + option = setting.option } if (option.perUser === 'scoped') { - return 'scoped'; + return 'scoped' } else if (option.perUser === 'isolated') { - return 'isolated'; + return 'isolated' } else { - return 'shared'; + return 'shared' } - }; + } - $scope.getInterpreterRunningOption = function(settingId) { - var sharedModeName = 'shared'; + $scope.getInterpreterRunningOption = function (settingId) { + let sharedModeName = 'shared' - var globallyModeName = 'Globally'; - var perNoteModeName = 'Per Note'; - var perUserModeName = 'Per User'; + let globallyModeName = 'Globally' + let perNoteModeName = 'Per Note' + let perUserModeName = 'Per User' - var option; + let option if (settingId === undefined) { - option = $scope.newInterpreterSetting.option; + option = $scope.newInterpreterSetting.option } else { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - var setting = $scope.interpreterSettings[index]; - option = setting.option; + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + let setting = $scope.interpreterSettings[index] + option = setting.option } - var perNote = option.perNote; - var perUser = option.perUser; + let perNote = option.perNote + let perUser = option.perUser // Globally == shared_perNote + shared_perUser if (perNote === sharedModeName && perUser === sharedModeName) { - return globallyModeName; + return globallyModeName } if ($rootScope.ticket.ticket === 'anonymous' && $rootScope.ticket.roles === '[]') { if (perNote !== undefined && typeof perNote === 'string' && perNote !== '') { - return perNoteModeName; + 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 perUserModeName } - return perNoteModeName; + return perNoteModeName } } - option.perNote = sharedModeName; - option.perUser = sharedModeName; - return globallyModeName; - }; + option.perNote = sharedModeName + option.perUser = sharedModeName + return globallyModeName + } - $scope.setInterpreterRunningOption = function(settingId, isPerNoteMode, isPerUserMode) { - var option; + $scope.setInterpreterRunningOption = function (settingId, isPerNoteMode, isPerUserMode) { + let option if (settingId === undefined) { - option = $scope.newInterpreterSetting.option; + option = $scope.newInterpreterSetting.option } else { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - var setting = $scope.interpreterSettings[index]; - option = setting.option; + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + let setting = $scope.interpreterSettings[index] + option = setting.option } - option.perNote = isPerNoteMode; - option.perUser = isPerUserMode; - }; + option.perNote = isPerNoteMode + option.perUser = isPerUserMode + } - $scope.updateInterpreterSetting = function(form, settingId) { - var thisConfirm = BootstrapDialog.confirm({ + $scope.updateInterpreterSetting = function (form, settingId) { + const thisConfirm = BootstrapDialog.confirm({ closable: false, closeByBackdrop: false, closeByKeyboard: false, title: '', message: 'Do you want to update this interpreter and restart with new settings?', - callback: function(result) { + callback: function (result) { if (result) { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - var setting = $scope.interpreterSettings[index]; + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + let setting = $scope.interpreterSettings[index] if (setting.propertyKey !== '' || setting.propertyKey) { - $scope.addNewInterpreterProperty(settingId); + $scope.addNewInterpreterProperty(settingId) } if (setting.depArtifact !== '' || setting.depArtifact) { - $scope.addNewInterpreterDependency(settingId); + $scope.addNewInterpreterDependency(settingId) } // add missing field of option if (!setting.option) { - setting.option = {}; + setting.option = {} } if (setting.option.isExistingProcess === undefined) { - setting.option.isExistingProcess = false; + setting.option.isExistingProcess = false } if (setting.option.setPermission === undefined) { - setting.option.setPermission = false; + setting.option.setPermission = false } if (setting.option.isUserImpersonate === undefined) { - setting.option.isUserImpersonate = false; + setting.option.isUserImpersonate = false } if (!($scope.getInterpreterRunningOption(settingId) === 'Per User' && $scope.getPerUserOption(settingId) === 'isolated')) { - setting.option.isUserImpersonate = false; + setting.option.isUserImpersonate = false } if (setting.option.remote === undefined) { // remote always true for now - setting.option.remote = true; + setting.option.remote = true } - setting.option.users = angular.element('#' + setting.name + 'Users').val(); + setting.option.users = angular.element('#' + setting.name + 'Users').val() - var request = { + let request = { option: angular.copy(setting.option), properties: angular.copy(setting.properties), dependencies: angular.copy(setting.dependencies) - }; + } - thisConfirm.$modalFooter.find('button').addClass('disabled'); + thisConfirm.$modalFooter.find('button').addClass('disabled') thisConfirm.$modalFooter.find('button:contains("OK")') - .html('<i class="fa fa-circle-o-notch fa-spin"></i> Saving Setting'); + .html('<i class="fa fa-circle-o-notch fa-spin"></i> Saving Setting') $http.put(baseUrlSrv.getRestApiBase() + '/interpreter/setting/' + settingId, request) - .success(function(data, status, headers, config) { - $scope.interpreterSettings[index] = data.body; - removeTMPSettings(index); - checkDownloadingDependencies(); - thisConfirm.close(); + .success(function (data, status, headers, config) { + $scope.interpreterSettings[index] = data.body + removeTMPSettings(index) + checkDownloadingDependencies() + thisConfirm.close() + }) + .error(function (data, status, headers, config) { + console.log('Error %o %o', status, data.message) + ngToast.danger({content: data.message, verticalPosition: 'bottom'}) + form.$show() + thisConfirm.close() }) - .error(function(data, status, headers, config) { - console.log('Error %o %o', status, data.message); - ngToast.danger({content: data.message, verticalPosition: 'bottom'}); - form.$show(); - thisConfirm.close(); - }); - return false; + return false } else { - form.$show(); + form.$show() } } - }); - }; + }) + } - $scope.resetInterpreterSetting = function(settingId) { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); + $scope.resetInterpreterSetting = function (settingId) { + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) // Set the old settings back - $scope.interpreterSettings[index] = angular.copy(interpreterSettingsTmp[index]); - removeTMPSettings(index); - }; + $scope.interpreterSettings[index] = angular.copy(interpreterSettingsTmp[index]) + removeTMPSettings(index) + } - $scope.removeInterpreterSetting = function(settingId) { + $scope.removeInterpreterSetting = function (settingId) { BootstrapDialog.confirm({ closable: true, title: '', message: 'Do you want to delete this interpreter setting?', - callback: function(result) { + callback: function (result) { if (result) { $http.delete(baseUrlSrv.getRestApiBase() + '/interpreter/setting/' + settingId) - .success(function(data, status, headers, config) { - - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - $scope.interpreterSettings.splice(index, 1); - }).error(function(data, status, headers, config) { - console.log('Error %o %o', status, data.message); - }); + .success(function (data, status, headers, config) { + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + $scope.interpreterSettings.splice(index, 1) + }).error(function (data, status, headers, config) { + console.log('Error %o %o', status, data.message) + }) } } - }); - }; - - $scope.newInterpreterGroupChange = function() { - var el = _.pluck(_.filter($scope.availableInterpreters, {'name': $scope.newInterpreterSetting.group}), - 'properties'); - var properties = {}; - for (var i = 0; i < el.length; i++) { - var intpInfo = el[i]; - for (var key in intpInfo) { + }) + } + + $scope.newInterpreterGroupChange = function () { + let el = _.pluck(_.filter($scope.availableInterpreters, {'name': $scope.newInterpreterSetting.group}), + 'properties') + let properties = {} + for (let i = 0; i < el.length; i++) { + let intpInfo = el[i] + for (let key in intpInfo) { properties[key] = { value: intpInfo[key].defaultValue, description: intpInfo[key].description - }; + } } } - $scope.newInterpreterSetting.properties = properties; - }; + $scope.newInterpreterSetting.properties = properties + } - $scope.restartInterpreterSetting = function(settingId) { + $scope.restartInterpreterSetting = function (settingId) { BootstrapDialog.confirm({ closable: true, title: '', message: 'Do you want to restart this interpreter?', - callback: function(result) { + callback: function (result) { if (result) { $http.put(baseUrlSrv.getRestApiBase() + '/interpreter/setting/restart/' + settingId) - .success(function(data, status, headers, config) { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - $scope.interpreterSettings[index] = data.body; - ngToast.info('Interpreter stopped. Will be lazily started on next run.'); - }).error(function(data, status, headers, config) { - var errorMsg = (data !== null) ? data.message : 'Could not connect to server.'; - console.log('Error %o %o', status, errorMsg); - ngToast.danger(errorMsg); - }); + .success(function (data, status, headers, config) { + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + $scope.interpreterSettings[index] = data.body + ngToast.info('Interpreter stopped. Will be lazily started on next run.') + }).error(function (data, status, headers, config) { + let errorMsg = (data !== null) ? data.message : 'Could not connect to server.' + console.log('Error %o %o', status, errorMsg) + ngToast.danger(errorMsg) + }) } } - }); - }; + }) + } - $scope.addNewInterpreterSetting = function() { - //user input validation on interpreter creation + $scope.addNewInterpreterSetting = function () { + // user input validation on interpreter creation if (!$scope.newInterpreterSetting.name || !$scope.newInterpreterSetting.name.trim() || !$scope.newInterpreterSetting.group) { BootstrapDialog.alert({ closable: true, title: 'Add interpreter', message: 'Please fill in interpreter name and choose a group' - }); - return; + }) + return } if ($scope.newInterpreterSetting.name.indexOf('.') >= 0) { @@ -454,8 +455,8 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou closable: true, title: 'Add interpreter', message: '\'.\' is invalid for interpreter name' - }); - return; + }) + return } if (_.findIndex($scope.interpreterSettings, {'name': $scope.newInterpreterSetting.name}) >= 0) { @@ -463,49 +464,49 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou closable: true, title: 'Add interpreter', message: 'Name ' + $scope.newInterpreterSetting.name + ' already exists' - }); - return; + }) + return } - var newSetting = $scope.newInterpreterSetting; + let newSetting = $scope.newInterpreterSetting if (newSetting.propertyKey !== '' || newSetting.propertyKey) { - $scope.addNewInterpreterProperty(); + $scope.addNewInterpreterProperty() } if (newSetting.depArtifact !== '' || newSetting.depArtifact) { - $scope.addNewInterpreterDependency(); + $scope.addNewInterpreterDependency() } if (newSetting.option.setPermission === undefined) { - newSetting.option.setPermission = false; + newSetting.option.setPermission = false } - newSetting.option.users = angular.element('#newInterpreterUsers').val(); + newSetting.option.users = angular.element('#newInterpreterUsers').val() - var request = angular.copy($scope.newInterpreterSetting); + let request = angular.copy($scope.newInterpreterSetting) // Change properties to proper request format - var newProperties = {}; - for (var p in newSetting.properties) { - newProperties[p] = newSetting.properties[p].value; + let newProperties = {} + for (let p in newSetting.properties) { + newProperties[p] = newSetting.properties[p].value } - request.properties = newProperties; + request.properties = newProperties $http.post(baseUrlSrv.getRestApiBase() + '/interpreter/setting', request) - .success(function(data, status, headers, config) { - $scope.resetNewInterpreterSetting(); - getInterpreterSettings(); - $scope.showAddNewSetting = false; - checkDownloadingDependencies(); - }).error(function(data, status, headers, config) { - console.log('Error %o %o', status, data.message); - ngToast.danger({content: data.message, verticalPosition: 'bottom'}); - }); - }; - - $scope.cancelInterpreterSetting = function() { - $scope.showAddNewSetting = false; - $scope.resetNewInterpreterSetting(); - }; - - $scope.resetNewInterpreterSetting = function() { + .success(function (data, status, headers, config) { + $scope.resetNewInterpreterSetting() + getInterpreterSettings() + $scope.showAddNewSetting = false + checkDownloadingDependencies() + }).error(function (data, status, headers, config) { + console.log('Error %o %o', status, data.message) + ngToast.danger({content: data.message, verticalPosition: 'bottom'}) + }) + } + + $scope.cancelInterpreterSetting = function () { + $scope.showAddNewSetting = false + $scope.resetNewInterpreterSetting() + } + + $scope.resetNewInterpreterSetting = function () { $scope.newInterpreterSetting = { name: undefined, group: undefined, @@ -519,110 +520,110 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou process: false } - }; - emptyNewProperty($scope.newInterpreterSetting); - }; + } + emptyNewProperty($scope.newInterpreterSetting) + } - $scope.removeInterpreterProperty = function(key, settingId) { + $scope.removeInterpreterProperty = function (key, settingId) { if (settingId === undefined) { - delete $scope.newInterpreterSetting.properties[key]; + delete $scope.newInterpreterSetting.properties[key] } else { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - delete $scope.interpreterSettings[index].properties[key]; + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + delete $scope.interpreterSettings[index].properties[key] } - }; + } - $scope.removeInterpreterDependency = function(artifact, settingId) { + $scope.removeInterpreterDependency = function (artifact, settingId) { if (settingId === undefined) { $scope.newInterpreterSetting.dependencies = _.reject($scope.newInterpreterSetting.dependencies, - function(el) { - return el.groupArtifactVersion === artifact; - }); + function (el) { + return el.groupArtifactVersion === artifact + }) } else { - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) $scope.interpreterSettings[index].dependencies = _.reject($scope.interpreterSettings[index].dependencies, - function(el) { - return el.groupArtifactVersion === artifact; - }); + function (el) { + return el.groupArtifactVersion === artifact + }) } - }; + } - $scope.addNewInterpreterProperty = function(settingId) { + $scope.addNewInterpreterProperty = function (settingId) { if (settingId === undefined) { // Add new property from create form if (!$scope.newInterpreterSetting.propertyKey || $scope.newInterpreterSetting.propertyKey === '') { - return; + return } $scope.newInterpreterSetting.properties[$scope.newInterpreterSetting.propertyKey] = { value: $scope.newInterpreterSetting.propertyValue - }; - emptyNewProperty($scope.newInterpreterSetting); + } + emptyNewProperty($scope.newInterpreterSetting) } else { // Add new property from edit form - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - var setting = $scope.interpreterSettings[index]; + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + let setting = $scope.interpreterSettings[index] if (!setting.propertyKey || setting.propertyKey === '') { - return; + return } - setting.properties[setting.propertyKey] = setting.propertyValue; - emptyNewProperty(setting); + setting.properties[setting.propertyKey] = setting.propertyValue + emptyNewProperty(setting) } - }; + } - $scope.addNewInterpreterDependency = function(settingId) { + $scope.addNewInterpreterDependency = function (settingId) { if (settingId === undefined) { // Add new dependency from create form if (!$scope.newInterpreterSetting.depArtifact || $scope.newInterpreterSetting.depArtifact === '') { - return; + return } // overwrite if artifact already exists - var newSetting = $scope.newInterpreterSetting; - for (var d in newSetting.dependencies) { + let newSetting = $scope.newInterpreterSetting + for (let d in newSetting.dependencies) { if (newSetting.dependencies[d].groupArtifactVersion === newSetting.depArtifact) { newSetting.dependencies[d] = { 'groupArtifactVersion': newSetting.depArtifact, 'exclusions': newSetting.depExclude - }; - newSetting.dependencies.splice(d, 1); + } + newSetting.dependencies.splice(d, 1) } } newSetting.dependencies.push({ 'groupArtifactVersion': newSetting.depArtifact, 'exclusions': (newSetting.depExclude === '') ? [] : newSetting.depExclude - }); - emptyNewDependency(newSetting); + }) + emptyNewDependency(newSetting) } else { // Add new dependency from edit form - var index = _.findIndex($scope.interpreterSettings, {'id': settingId}); - var setting = $scope.interpreterSettings[index]; + let index = _.findIndex($scope.interpreterSettings, {'id': settingId}) + let setting = $scope.interpreterSettings[index] if (!setting.depArtifact || setting.depArtifact === '') { - return; + return } // overwrite if artifact already exists - for (var dep in setting.dependencies) { + for (let dep in setting.dependencies) { if (setting.dependencies[dep].groupArtifactVersion === setting.depArtifact) { setting.dependencies[dep] = { 'groupArtifactVersion': setting.depArtifact, 'exclusions': setting.depExclude - }; - setting.dependencies.splice(dep, 1); + } + setting.dependencies.splice(dep, 1) } } setting.dependencies.push({ 'groupArtifactVersion': setting.depArtifact, 'exclusions': (setting.depExclude === '') ? [] : setting.depExclude - }); - emptyNewDependency(setting); + }) + emptyNewDependency(setting) } - }; + } - $scope.resetNewRepositorySetting = function() { + $scope.resetNewRepositorySetting = function () { $scope.newRepoSetting = { id: '', url: '', @@ -634,90 +635,89 @@ function InterpreterCtrl($rootScope, $scope, $http, baseUrlSrv, ngToast, $timeou proxyPort: null, proxyLogin: '', proxyPassword: '' - }; - }; + } + } - var getRepositories = function() { + let getRepositories = function () { $http.get(baseUrlSrv.getRestApiBase() + '/interpreter/repository') - .success(function(data, status, headers, config) { - $scope.repositories = data.body; - }).error(function(data, status, headers, config) { - console.log('Error %o %o', status, data.message); - }); - }; + .success(function (data, status, headers, config) { + $scope.repositories = data.body + }).error(function (data, status, headers, config) { + console.log('Error %o %o', status, data.message) + }) + } - $scope.addNewRepository = function() { - var request = angular.copy($scope.newRepoSetting); + $scope.addNewRepository = function () { + let request = angular.copy($scope.newRepoSetting) $http.post(baseUrlSrv.getRestApiBase() + '/interpreter/repository', request) - .success(function(data, status, headers, config) { - getRepositories(); - $scope.resetNewRepositorySetting(); - angular.element('#repoModal').modal('hide'); - }).error(function(data, status, headers, config) { - console.log('Error %o %o', headers, config); - }); - }; - - $scope.removeRepository = function(repoId) { + .success(function (data, status, headers, config) { + getRepositories() + $scope.resetNewRepositorySetting() + angular.element('#repoModal').modal('hide') + }).error(function (data, status, headers, config) { + console.log('Error %o %o', headers, config) + }) + } + + $scope.removeRepository = function (repoId) { BootstrapDialog.confirm({ closable: true, title: '', message: 'Do you want to delete this repository?', - callback: function(result) { + callback: function (result) { if (result) { $http.delete(baseUrlSrv.getRestApiBase() + '/interpreter/repository/' + repoId) - .success(function(data, status, headers, config) { - var index = _.findIndex($scope.repositories, {'id': repoId}); - $scope.repositories.splice(index, 1); - }).error(function(data, status, headers, config) { - console.log('Error %o %o', status, data.message); - }); + .success(function (data, status, headers, config) { + let index = _.findIndex($scope.repositories, {'id': repoId}) + $scope.repositories.splice(index, 1) + }).error(function (data, status, headers, config) { + console.log('Error %o %o', status, data.message) + }) } } - }); - }; + }) + } - $scope.isDefaultRepository = function(repoId) { + $scope.isDefaultRepository = function (repoId) { if (repoId === 'central' || repoId === 'local') { - return true; + return true } else { - return false; + return false } - }; + } - $scope.showErrorMessage = function(setting) { + $scope.showErrorMessage = function (setting) { BootstrapDialog.show({ title: 'Error downloading dependencies', message: setting.errorReason - }); - }; + }) + } - var init = function() { - $scope.resetNewInterpreterSetting(); - $scope.resetNewRepositorySetting(); + let init = function () { + $scope.resetNewInterpreterSetting() + $scope.resetNewRepositorySetting() - getInterpreterSettings(); - getAvailableInterpreters(); - getRepositories(); - }; + getInterpreterSettings() + getAvailableInterpreters() + getRepositories() + } - $scope.showSparkUI = function(settingId) { + $scope.showSparkUI = function (settingId) { $http.get(baseUrlSrv.getRestApiBase() + '/interpreter/getmetainfos/' + settingId + '?propName=url') - .success(function(data, status, headers, config) { - var url = data.body.url; + .success(function (data, status, headers, config) { + let url = data.body.url if (!url) { BootstrapDialog.alert({ message: 'No spark application running' - }); - return; + }) + return } - window.open(url, '_blank'); - }).error(function(data, status, headers, config) { - console.log('Error %o %o', status, data.message); - }); - }; + window.open(url, '_blank') + }).error(function (data, status, headers, config) { + console.log('Error %o %o', status, data.message) + }) + } - init(); + init() } -
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/19b0f30f/zeppelin-web/src/app/interpreter/interpreter.filter.js ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/interpreter/interpreter.filter.js b/zeppelin-web/src/app/interpreter/interpreter.filter.js index c5f1572..3f42572 100644 --- a/zeppelin-web/src/app/interpreter/interpreter.filter.js +++ b/zeppelin-web/src/app/interpreter/interpreter.filter.js @@ -12,11 +12,11 @@ * limitations under the License. */ -angular.module('zeppelinWebApp').filter('sortByKey', sortByKey); +angular.module('zeppelinWebApp').filter('sortByKey', sortByKey) -function sortByKey() { - return function(properties) { - var sortedKeys = properties ? Object.keys(properties) : []; - return sortedKeys.sort(); - }; +function sortByKey () { + return function (properties) { + let sortedKeys = properties ? Object.keys(properties) : [] + return sortedKeys.sort() + } } http://git-wip-us.apache.org/repos/asf/zeppelin/blob/19b0f30f/zeppelin-web/src/app/jobmanager/jobmanager.controller.js ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/jobmanager/jobmanager.controller.js b/zeppelin-web/src/app/jobmanager/jobmanager.controller.js index 5503be4..ec6f1ab 100644 --- a/zeppelin-web/src/app/jobmanager/jobmanager.controller.js +++ b/zeppelin-web/src/app/jobmanager/jobmanager.controller.js @@ -13,172 +13,169 @@ */ angular.module('zeppelinWebApp') - .controller('JobmanagerCtrl', JobmanagerCtrl); + .controller('JobmanagerCtrl', JobmanagerCtrl) -function JobmanagerCtrl($scope, websocketMsgSrv, $interval, ngToast, $q, $timeout, jobManagerFilter) { - 'ngInject'; +function JobmanagerCtrl ($scope, websocketMsgSrv, $interval, ngToast, $q, $timeout, jobManagerFilter) { + 'ngInject' - ngToast.dismiss(); - var asyncNotebookJobFilter = function(jobInfomations, filterConfig) { - return $q(function(resolve, reject) { - $scope.JobInfomationsByFilter = $scope.jobTypeFilter(jobInfomations, filterConfig); - resolve($scope.JobInfomationsByFilter); - }); - }; + ngToast.dismiss() + let asyncNotebookJobFilter = function (jobInfomations, filterConfig) { + return $q(function (resolve, reject) { + $scope.JobInfomationsByFilter = $scope.jobTypeFilter(jobInfomations, filterConfig) + resolve($scope.JobInfomationsByFilter) + }) + } - $scope.doFiltering = function(jobInfomations, filterConfig) { + $scope.doFiltering = function (jobInfomations, filterConfig) { asyncNotebookJobFilter(jobInfomations, filterConfig).then( - function() { + function () { // success - $scope.isLoadingFilter = false; + $scope.isLoadingFilter = false }, - function() { + function () { // failed - }); - }; + }) + } - $scope.filterValueToName = function(filterValue, maxStringLength) { + $scope.filterValueToName = function (filterValue, maxStringLength) { if ($scope.activeInterpreters === undefined) { - return; + return } - var index = _.findIndex($scope.activeInterpreters, {value: filterValue}); + let index = _.findIndex($scope.activeInterpreters, {value: filterValue}) if ($scope.activeInterpreters[index].name !== undefined) { if (maxStringLength !== undefined && maxStringLength > $scope.activeInterpreters[index].name) { - return $scope.activeInterpreters[index].name.substr(0, maxStringLength - 3) + '...'; + return $scope.activeInterpreters[index].name.substr(0, maxStringLength - 3) + '...' } - return $scope.activeInterpreters[index].name; + return $scope.activeInterpreters[index].name } else { - return 'Interpreter is not set'; + return 'Interpreter is not set' } - }; - - $scope.setFilterValue = function(filterValue) { - $scope.filterConfig.filterValueInterpreter = filterValue; - $scope.doFiltering($scope.jobInfomations, $scope.filterConfig); - }; - - $scope.onChangeRunJobToAlwaysTopToggle = function() { - $scope.filterConfig.isRunningAlwaysTop = !$scope.filterConfig.isRunningAlwaysTop; - $scope.doFiltering($scope.jobInfomations, $scope.filterConfig); - }; - - $scope.onChangeSortAsc = function() { - $scope.filterConfig.isSortByAsc = !$scope.filterConfig.isSortByAsc; - $scope.doFiltering($scope.jobInfomations, $scope.filterConfig); - }; - - $scope.doFilterInputTyping = function(keyEvent, jobInfomations, filterConfig) { - var RETURN_KEY_CODE = 13; - $timeout.cancel($scope.dofilterTimeoutObject); - $scope.isActiveSearchTimer = true; - $scope.dofilterTimeoutObject = $timeout(function() { - $scope.doFiltering(jobInfomations, filterConfig); - $scope.isActiveSearchTimer = false; - }, 10000); + } + + $scope.setFilterValue = function (filterValue) { + $scope.filterConfig.filterValueInterpreter = filterValue + $scope.doFiltering($scope.jobInfomations, $scope.filterConfig) + } + + $scope.onChangeRunJobToAlwaysTopToggle = function () { + $scope.filterConfig.isRunningAlwaysTop = !$scope.filterConfig.isRunningAlwaysTop + $scope.doFiltering($scope.jobInfomations, $scope.filterConfig) + } + + $scope.onChangeSortAsc = function () { + $scope.filterConfig.isSortByAsc = !$scope.filterConfig.isSortByAsc + $scope.doFiltering($scope.jobInfomations, $scope.filterConfig) + } + + $scope.doFilterInputTyping = function (keyEvent, jobInfomations, filterConfig) { + let RETURN_KEY_CODE = 13 + $timeout.cancel($scope.dofilterTimeoutObject) + $scope.isActiveSearchTimer = true + $scope.dofilterTimeoutObject = $timeout(function () { + $scope.doFiltering(jobInfomations, filterConfig) + $scope.isActiveSearchTimer = false + }, 10000) if (keyEvent.which === RETURN_KEY_CODE) { - $timeout.cancel($scope.dofilterTimeoutObject); - $scope.doFiltering(jobInfomations, filterConfig); - $scope.isActiveSearchTimer = false; + $timeout.cancel($scope.dofilterTimeoutObject) + $scope.doFiltering(jobInfomations, filterConfig) + $scope.isActiveSearchTimer = false } - }; - - $scope.doForceFilterInputTyping = function(keyEvent, jobInfomations, filterConfig) { - $timeout.cancel($scope.dofilterTimeoutObject); - $scope.doFiltering(jobInfomations, filterConfig); - $scope.isActiveSearchTimer = false; - }; - - $scope.init = function() { - $scope.isLoadingFilter = true; - $scope.jobInfomations = []; - $scope.JobInfomationsByFilter = $scope.jobInfomations; + } + + $scope.doForceFilterInputTyping = function (keyEvent, jobInfomations, filterConfig) { + $timeout.cancel($scope.dofilterTimeoutObject) + $scope.doFiltering(jobInfomations, filterConfig) + $scope.isActiveSearchTimer = false + } + + $scope.init = function () { + $scope.isLoadingFilter = true + $scope.jobInfomations = [] + $scope.JobInfomationsByFilter = $scope.jobInfomations $scope.filterConfig = { isRunningAlwaysTop: true, filterValueNotebookName: '', filterValueInterpreter: '*', isSortByAsc: true - }; - $scope.sortTooltipMsg = 'Switch to sort by desc'; - $scope.jobTypeFilter = jobManagerFilter; + } + $scope.sortTooltipMsg = 'Switch to sort by desc' + $scope.jobTypeFilter = jobManagerFilter - websocketMsgSrv.getNoteJobsList(); + websocketMsgSrv.getNoteJobsList() $scope.$watch('filterConfig.isSortByAsc', function (value) { if (value) { - $scope.sortTooltipMsg = 'Switch to sort by desc'; + $scope.sortTooltipMsg = 'Switch to sort by desc' } else { - $scope.sortTooltipMsg = 'Switch to sort by asc'; + $scope.sortTooltipMsg = 'Switch to sort by asc' } - }); + }) - $scope.$on('$destroy', function() { - websocketMsgSrv.unsubscribeJobManager(); - }); - }; + $scope.$on('$destroy', function () { + websocketMsgSrv.unsubscribeJobManager() + }) + } /* ** $scope.$on functions below */ - $scope.$on('setNoteJobs', function(event, responseData) { - $scope.lastJobServerUnixTime = responseData.lastResponseUnixTime; - $scope.jobInfomations = responseData.jobs; - $scope.jobInfomationsIndexs = $scope.jobInfomations ? _.indexBy($scope.jobInfomations, 'noteId') : {}; - $scope.jobTypeFilter($scope.jobInfomations, $scope.filterConfig); + $scope.$on('setNoteJobs', function (event, responseData) { + $scope.lastJobServerUnixTime = responseData.lastResponseUnixTime + $scope.jobInfomations = responseData.jobs + $scope.jobInfomationsIndexs = $scope.jobInfomations ? _.indexBy($scope.jobInfomations, 'noteId') : {} + $scope.jobTypeFilter($scope.jobInfomations, $scope.filterConfig) $scope.activeInterpreters = [ { name: 'ALL', value: '*' } - ]; - var interpreterLists = _.uniq(_.pluck($scope.jobInfomations, 'interpreter'), false); - for (var index = 0, length = interpreterLists.length; index < length; index++) { + ] + let interpreterLists = _.uniq(_.pluck($scope.jobInfomations, 'interpreter'), false) + for (let index = 0, length = interpreterLists.length; index < length; index++) { $scope.activeInterpreters.push({ name: interpreterLists[index], value: interpreterLists[index] - }); + }) } - $scope.doFiltering($scope.jobInfomations, $scope.filterConfig); - }); - - $scope.$on('setUpdateNoteJobs', function(event, responseData) { - var jobInfomations = $scope.jobInfomations; - var indexStore = $scope.jobInfomationsIndexs; - $scope.lastJobServerUnixTime = responseData.lastResponseUnixTime; - var notes = responseData.jobs; - notes.map(function(changedItem) { + $scope.doFiltering($scope.jobInfomations, $scope.filterConfig) + }) + + $scope.$on('setUpdateNoteJobs', function (event, responseData) { + let jobInfomations = $scope.jobInfomations + let indexStore = $scope.jobInfomationsIndexs + $scope.lastJobServerUnixTime = responseData.lastResponseUnixTime + let notes = responseData.jobs + notes.map(function (changedItem) { if (indexStore[changedItem.noteId] === undefined) { - var newItem = angular.copy(changedItem); - jobInfomations.push(newItem); - indexStore[changedItem.noteId] = newItem; + let newItem = angular.copy(changedItem) + jobInfomations.push(newItem) + indexStore[changedItem.noteId] = newItem } else { - var changeOriginTarget = indexStore[changedItem.noteId]; + let changeOriginTarget = indexStore[changedItem.noteId] if (changedItem.isRemoved !== undefined && changedItem.isRemoved === true) { - // remove Item. - var removeIndex = _.findIndex(indexStore, changedItem.noteId); + let removeIndex = _.findIndex(indexStore, changedItem.noteId) if (removeIndex > -1) { - indexStore.splice(removeIndex, 1); + indexStore.splice(removeIndex, 1) } - removeIndex = _.findIndex(jobInfomations, {'noteId': changedItem.noteId}); + removeIndex = _.findIndex(jobInfomations, {'noteId': changedItem.noteId}) if (removeIndex) { - jobInfomations.splice(removeIndex, 1); + jobInfomations.splice(removeIndex, 1) } - } else { // change value for item. - changeOriginTarget.isRunningJob = changedItem.isRunningJob; - changeOriginTarget.noteName = changedItem.noteName; - changeOriginTarget.noteType = changedItem.noteType; - changeOriginTarget.interpreter = changedItem.interpreter; - changeOriginTarget.unixTimeLastRun = changedItem.unixTimeLastRun; - changeOriginTarget.paragraphs = changedItem.paragraphs; + changeOriginTarget.isRunningJob = changedItem.isRunningJob + changeOriginTarget.noteName = changedItem.noteName + changeOriginTarget.noteType = changedItem.noteType + changeOriginTarget.interpreter = changedItem.interpreter + changeOriginTarget.unixTimeLastRun = changedItem.unixTimeLastRun + changeOriginTarget.paragraphs = changedItem.paragraphs } } - }); - $scope.doFiltering(jobInfomations, $scope.filterConfig); - }); + }) + $scope.doFiltering(jobInfomations, $scope.filterConfig) + }) } - http://git-wip-us.apache.org/repos/asf/zeppelin/blob/19b0f30f/zeppelin-web/src/app/jobmanager/jobmanager.filter.js ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/jobmanager/jobmanager.filter.js b/zeppelin-web/src/app/jobmanager/jobmanager.filter.js index 05a1b6e..9211498 100644 --- a/zeppelin-web/src/app/jobmanager/jobmanager.filter.js +++ b/zeppelin-web/src/app/jobmanager/jobmanager.filter.js @@ -12,37 +12,36 @@ * limitations under the License. */ -angular.module('zeppelinWebApp').filter('jobManager', jobManagerFilter); +angular.module('zeppelinWebApp').filter('jobManager', jobManagerFilter) -function jobManagerFilter() { - function filterContext(jobItems, filterConfig) { - var filterValueInterpreter = filterConfig.filterValueInterpreter; - var filterValueNotebookName = filterConfig.filterValueNotebookName; - var isSortByAsc = filterConfig.isSortByAsc; - var filterItems = jobItems; +function jobManagerFilter () { + function filterContext (jobItems, filterConfig) { + let filterValueInterpreter = filterConfig.filterValueInterpreter + let filterValueNotebookName = filterConfig.filterValueNotebookName + let isSortByAsc = filterConfig.isSortByAsc + let filterItems = jobItems if (filterValueInterpreter === undefined) { - filterItems = _.filter(filterItems, function(jobItem) { - return jobItem.interpreter === undefined ? true : false; - }); + filterItems = _.filter(filterItems, function (jobItem) { + return jobItem.interpreter === undefined ? true : false + }) } else if (filterValueInterpreter !== '*') { - filterItems = _.where(filterItems, {interpreter: filterValueInterpreter}); + filterItems = _.where(filterItems, {interpreter: filterValueInterpreter}) } if (filterValueNotebookName !== '') { - filterItems = _.filter(filterItems, function(jobItem) { - var lowerFilterValue = filterValueNotebookName.toLocaleLowerCase(); - var lowerNotebookName = jobItem.noteName.toLocaleLowerCase(); - return lowerNotebookName.match(new RegExp('.*' + lowerFilterValue + '.*')); - }); + filterItems = _.filter(filterItems, function (jobItem) { + let lowerFilterValue = filterValueNotebookName.toLocaleLowerCase() + let lowerNotebookName = jobItem.noteName.toLocaleLowerCase() + return lowerNotebookName.match(new RegExp('.*' + lowerFilterValue + '.*')) + }) } - filterItems = _.sortBy(filterItems, function(sortItem) { - return sortItem.noteName.toLowerCase(); - }); + filterItems = _.sortBy(filterItems, function (sortItem) { + return sortItem.noteName.toLowerCase() + }) - return isSortByAsc ? filterItems : filterItems.reverse(); + return isSortByAsc ? filterItems : filterItems.reverse() } - return filterContext; + return filterContext } - http://git-wip-us.apache.org/repos/asf/zeppelin/blob/19b0f30f/zeppelin-web/src/app/jobmanager/jobs/job.controller.js ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/jobmanager/jobs/job.controller.js b/zeppelin-web/src/app/jobmanager/jobs/job.controller.js index 50f8d7a..e1ce02d 100644 --- a/zeppelin-web/src/app/jobmanager/jobs/job.controller.js +++ b/zeppelin-web/src/app/jobmanager/jobs/job.controller.js @@ -12,38 +12,38 @@ * limitations under the License. */ -import { ParagraphStatus, } from '../../notebook/paragraph/paragraph.status'; +import { ParagraphStatus, } from '../../notebook/paragraph/paragraph.status' -angular.module('zeppelinWebApp').controller('JobCtrl', JobCtrl); +angular.module('zeppelinWebApp').controller('JobCtrl', JobCtrl) -function JobCtrl($scope, $http, baseUrlSrv) { - 'ngInject'; +function JobCtrl ($scope, $http, baseUrlSrv) { + 'ngInject' - $scope.init = function(jobInformation) { - $scope.progressValue = 0; - }; + $scope.init = function (jobInformation) { + $scope.progressValue = 0 + } - $scope.getProgress = function() { - var statusList = _.pluck($scope.notebookJob.paragraphs, 'status'); - var runningJob = _.countBy(statusList, function(status) { + $scope.getProgress = function () { + let statusList = _.pluck($scope.notebookJob.paragraphs, 'status') + let runningJob = _.countBy(statusList, function (status) { if (status === ParagraphStatus.RUNNING || status === ParagraphStatus.FINISHED) { - return 'matchCount'; + return 'matchCount' } else { - return 'none'; + return 'none' } - }); - var totalCount = statusList.length; - var runningJobCount = runningJob.matchCount; - var result = Math.ceil(runningJobCount / totalCount * 100); - return isNaN(result) ? 0 : result; - }; + }) + let totalCount = statusList.length + let runningJobCount = runningJob.matchCount + let result = Math.ceil(runningJobCount / totalCount * 100) + return isNaN(result) ? 0 : result + } - $scope.runNotebookJob = function(notebookId) { + $scope.runNotebookJob = function (notebookId) { BootstrapDialog.confirm({ closable: true, title: '', message: 'Run all paragraphs?', - callback: function(result) { + callback: function (result) { if (result) { $http({ method: 'POST', @@ -51,30 +51,31 @@ function JobCtrl($scope, $http, baseUrlSrv) { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } - }).then(function successCallback(response) { + }).then(function successCallback (response) { // success - }, function errorCallback(errorResponse) { - var errorText = 'SERVER ERROR'; + }, function errorCallback (errorResponse) { + let errorText = 'SERVER ERROR' + // eslint-disable-next-line no-extra-boolean-cast if (!!errorResponse.data.message) { - errorText = errorResponse.data.message; + errorText = errorResponse.data.message } BootstrapDialog.alert({ closable: true, title: 'Execution Failure', message: errorText - }); - }); + }) + }) } } - }); - }; + }) + } - $scope.stopNotebookJob = function(notebookId) { + $scope.stopNotebookJob = function (notebookId) { BootstrapDialog.confirm({ closable: true, title: '', message: 'Stop all paragraphs?', - callback: function(result) { + callback: function (result) { if (result) { $http({ method: 'DELETE', @@ -82,28 +83,26 @@ function JobCtrl($scope, $http, baseUrlSrv) { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } - }).then(function successCallback(response) { + }).then(function successCallback (response) { // success - }, function errorCallback(errorResponse) { - var errorText = 'SERVER ERROR'; + }, function errorCallback (errorResponse) { + let errorText = 'SERVER ERROR' + // eslint-disable-next-line no-extra-boolean-cast if (!!errorResponse.data.message) { - - errorText = errorResponse.data.message; + errorText = errorResponse.data.message } BootstrapDialog.alert({ closable: true, title: 'Stop Failure', message: errorText - }); - }); + }) + }) } } - }); - }; - - $scope.lastExecuteTime = function(unixtime) { - return moment.unix(unixtime / 1000).fromNow(); - }; + }) + } + $scope.lastExecuteTime = function (unixtime) { + return moment.unix(unixtime / 1000).fromNow() + } } -