iguazio.dashboard-controls 0.39.14-3.5.3 → 0.39.15-3.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -3303,6 +3303,17 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
3303
3303
|
}) + ': a–z, A–Z, 0–9, –, _, .',
|
|
3304
3304
|
pattern: /^[a-zA-Z0-9\-_.]+$/
|
|
3305
3305
|
}]
|
|
3306
|
+
},
|
|
3307
|
+
supportLogs: {
|
|
3308
|
+
contextId: [generateRule.validCharacters('0-9'), {
|
|
3309
|
+
name: 'minValue',
|
|
3310
|
+
label: $i18next.t('common:MIN', {
|
|
3311
|
+
lng: lng
|
|
3312
|
+
}) + ' 1',
|
|
3313
|
+
pattern: function pattern(value) {
|
|
3314
|
+
return value >= 1;
|
|
3315
|
+
}
|
|
3316
|
+
}]
|
|
3306
3317
|
}
|
|
3307
3318
|
},
|
|
3308
3319
|
container: {
|
|
@@ -5812,6 +5823,96 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
5812
5823
|
})();
|
|
5813
5824
|
"use strict";
|
|
5814
5825
|
|
|
5826
|
+
(function () {
|
|
5827
|
+
'use strict';
|
|
5828
|
+
|
|
5829
|
+
IgzImportProjectDialogController.$inject = ["$scope", "$i18next", "i18next", "lodash"];
|
|
5830
|
+
angular.module('iguazio.dashboard-controls').component('igzImportProjectDialog', {
|
|
5831
|
+
bindings: {
|
|
5832
|
+
closeDialog: '&',
|
|
5833
|
+
dialogTitle: '<',
|
|
5834
|
+
displayAllOptions: '<'
|
|
5835
|
+
},
|
|
5836
|
+
templateUrl: 'igz_controls/components/import-project-dialog/import-project-dialog.tpl.html',
|
|
5837
|
+
controller: IgzImportProjectDialogController
|
|
5838
|
+
});
|
|
5839
|
+
function IgzImportProjectDialogController($scope, $i18next, i18next, lodash) {
|
|
5840
|
+
var ctrl = this;
|
|
5841
|
+
var lng = i18next.language;
|
|
5842
|
+
var checkedItem = 'singleFunction';
|
|
5843
|
+
ctrl.option = [];
|
|
5844
|
+
ctrl.optionList = [{
|
|
5845
|
+
label: $i18next.t('common:APPLY_TO_ALL_FUNCTIONS_IN_THIS_PROJECT', {
|
|
5846
|
+
lng: lng
|
|
5847
|
+
}),
|
|
5848
|
+
id: 'singleProject',
|
|
5849
|
+
value: 'singleProject',
|
|
5850
|
+
disabled: false,
|
|
5851
|
+
visibility: true
|
|
5852
|
+
}, {
|
|
5853
|
+
label: $i18next.t('common:APPLY_TO_ALL_FUNCTIONS_IN_ALL_PROJECT', {
|
|
5854
|
+
lng: lng
|
|
5855
|
+
}),
|
|
5856
|
+
id: 'allProjects',
|
|
5857
|
+
value: 'allProjects',
|
|
5858
|
+
disabled: false,
|
|
5859
|
+
visibility: true
|
|
5860
|
+
}];
|
|
5861
|
+
ctrl.$onInit = onInit;
|
|
5862
|
+
ctrl.onClose = onClose;
|
|
5863
|
+
ctrl.onCheckboxChange = onCheckboxChange;
|
|
5864
|
+
|
|
5865
|
+
//
|
|
5866
|
+
// Hook methods
|
|
5867
|
+
//
|
|
5868
|
+
|
|
5869
|
+
/**
|
|
5870
|
+
* Initialization method
|
|
5871
|
+
*/
|
|
5872
|
+
function onInit() {
|
|
5873
|
+
lodash.set(ctrl.optionList, '[1].visibility', ctrl.displayAllOptions);
|
|
5874
|
+
}
|
|
5875
|
+
|
|
5876
|
+
//
|
|
5877
|
+
// Public methods
|
|
5878
|
+
//
|
|
5879
|
+
|
|
5880
|
+
/**
|
|
5881
|
+
* Handles checking/un-checking checkbox
|
|
5882
|
+
*/
|
|
5883
|
+
function onCheckboxChange() {
|
|
5884
|
+
if (!lodash.isNil(ctrl.option)) {
|
|
5885
|
+
if (lodash.includes(ctrl.option, 'allProjects')) {
|
|
5886
|
+
lodash.set(ctrl.optionList, '[0].disabled', true);
|
|
5887
|
+
if (ctrl.option.length === 1) {
|
|
5888
|
+
ctrl.option.unshift('singleProject');
|
|
5889
|
+
}
|
|
5890
|
+
} else {
|
|
5891
|
+
lodash.set(ctrl.optionList, '[0].disabled', false);
|
|
5892
|
+
}
|
|
5893
|
+
ctrl.optionList = angular.copy(ctrl.optionList);
|
|
5894
|
+
ctrl.option = angular.copy(ctrl.option);
|
|
5895
|
+
checkedItem = lodash.get(ctrl.option, [ctrl.option.length - 1]);
|
|
5896
|
+
} else {
|
|
5897
|
+
checkedItem = 'singleFunction';
|
|
5898
|
+
}
|
|
5899
|
+
}
|
|
5900
|
+
|
|
5901
|
+
/**
|
|
5902
|
+
* Closes dialog
|
|
5903
|
+
* @param {string} action
|
|
5904
|
+
*/
|
|
5905
|
+
function onClose(action) {
|
|
5906
|
+
ctrl.closeDialog({
|
|
5907
|
+
action: action,
|
|
5908
|
+
option: checkedItem
|
|
5909
|
+
});
|
|
5910
|
+
ctrl.option = [];
|
|
5911
|
+
}
|
|
5912
|
+
}
|
|
5913
|
+
})();
|
|
5914
|
+
"use strict";
|
|
5915
|
+
|
|
5815
5916
|
(function () {
|
|
5816
5917
|
'use strict';
|
|
5817
5918
|
|
|
@@ -5949,96 +6050,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
5949
6050
|
})();
|
|
5950
6051
|
"use strict";
|
|
5951
6052
|
|
|
5952
|
-
(function () {
|
|
5953
|
-
'use strict';
|
|
5954
|
-
|
|
5955
|
-
IgzImportProjectDialogController.$inject = ["$scope", "$i18next", "i18next", "lodash"];
|
|
5956
|
-
angular.module('iguazio.dashboard-controls').component('igzImportProjectDialog', {
|
|
5957
|
-
bindings: {
|
|
5958
|
-
closeDialog: '&',
|
|
5959
|
-
dialogTitle: '<',
|
|
5960
|
-
displayAllOptions: '<'
|
|
5961
|
-
},
|
|
5962
|
-
templateUrl: 'igz_controls/components/import-project-dialog/import-project-dialog.tpl.html',
|
|
5963
|
-
controller: IgzImportProjectDialogController
|
|
5964
|
-
});
|
|
5965
|
-
function IgzImportProjectDialogController($scope, $i18next, i18next, lodash) {
|
|
5966
|
-
var ctrl = this;
|
|
5967
|
-
var lng = i18next.language;
|
|
5968
|
-
var checkedItem = 'singleFunction';
|
|
5969
|
-
ctrl.option = [];
|
|
5970
|
-
ctrl.optionList = [{
|
|
5971
|
-
label: $i18next.t('common:APPLY_TO_ALL_FUNCTIONS_IN_THIS_PROJECT', {
|
|
5972
|
-
lng: lng
|
|
5973
|
-
}),
|
|
5974
|
-
id: 'singleProject',
|
|
5975
|
-
value: 'singleProject',
|
|
5976
|
-
disabled: false,
|
|
5977
|
-
visibility: true
|
|
5978
|
-
}, {
|
|
5979
|
-
label: $i18next.t('common:APPLY_TO_ALL_FUNCTIONS_IN_ALL_PROJECT', {
|
|
5980
|
-
lng: lng
|
|
5981
|
-
}),
|
|
5982
|
-
id: 'allProjects',
|
|
5983
|
-
value: 'allProjects',
|
|
5984
|
-
disabled: false,
|
|
5985
|
-
visibility: true
|
|
5986
|
-
}];
|
|
5987
|
-
ctrl.$onInit = onInit;
|
|
5988
|
-
ctrl.onClose = onClose;
|
|
5989
|
-
ctrl.onCheckboxChange = onCheckboxChange;
|
|
5990
|
-
|
|
5991
|
-
//
|
|
5992
|
-
// Hook methods
|
|
5993
|
-
//
|
|
5994
|
-
|
|
5995
|
-
/**
|
|
5996
|
-
* Initialization method
|
|
5997
|
-
*/
|
|
5998
|
-
function onInit() {
|
|
5999
|
-
lodash.set(ctrl.optionList, '[1].visibility', ctrl.displayAllOptions);
|
|
6000
|
-
}
|
|
6001
|
-
|
|
6002
|
-
//
|
|
6003
|
-
// Public methods
|
|
6004
|
-
//
|
|
6005
|
-
|
|
6006
|
-
/**
|
|
6007
|
-
* Handles checking/un-checking checkbox
|
|
6008
|
-
*/
|
|
6009
|
-
function onCheckboxChange() {
|
|
6010
|
-
if (!lodash.isNil(ctrl.option)) {
|
|
6011
|
-
if (lodash.includes(ctrl.option, 'allProjects')) {
|
|
6012
|
-
lodash.set(ctrl.optionList, '[0].disabled', true);
|
|
6013
|
-
if (ctrl.option.length === 1) {
|
|
6014
|
-
ctrl.option.unshift('singleProject');
|
|
6015
|
-
}
|
|
6016
|
-
} else {
|
|
6017
|
-
lodash.set(ctrl.optionList, '[0].disabled', false);
|
|
6018
|
-
}
|
|
6019
|
-
ctrl.optionList = angular.copy(ctrl.optionList);
|
|
6020
|
-
ctrl.option = angular.copy(ctrl.option);
|
|
6021
|
-
checkedItem = lodash.get(ctrl.option, [ctrl.option.length - 1]);
|
|
6022
|
-
} else {
|
|
6023
|
-
checkedItem = 'singleFunction';
|
|
6024
|
-
}
|
|
6025
|
-
}
|
|
6026
|
-
|
|
6027
|
-
/**
|
|
6028
|
-
* Closes dialog
|
|
6029
|
-
* @param {string} action
|
|
6030
|
-
*/
|
|
6031
|
-
function onClose(action) {
|
|
6032
|
-
ctrl.closeDialog({
|
|
6033
|
-
action: action,
|
|
6034
|
-
option: checkedItem
|
|
6035
|
-
});
|
|
6036
|
-
ctrl.option = [];
|
|
6037
|
-
}
|
|
6038
|
-
}
|
|
6039
|
-
})();
|
|
6040
|
-
"use strict";
|
|
6041
|
-
|
|
6042
6053
|
(function () {
|
|
6043
6054
|
'use strict';
|
|
6044
6055
|
|
|
@@ -8939,65 +8950,147 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
8939
8950
|
(function () {
|
|
8940
8951
|
'use strict';
|
|
8941
8952
|
|
|
8942
|
-
|
|
8943
|
-
|
|
8944
|
-
* @description
|
|
8945
|
-
* Text edit component. This component is a text editor based on `Monaco code editor`
|
|
8946
|
-
* https://github.com/Microsoft/monaco-editor
|
|
8947
|
-
*
|
|
8948
|
-
* @param {string} content - main text content which can be edited.
|
|
8949
|
-
* @param {Object} closeDialog - callback on closing editor dialog.
|
|
8950
|
-
* @param {Object} closeButtonText - name of the bottom close/cancel button.
|
|
8951
|
-
* @param {string} label - name of the text file.
|
|
8952
|
-
* @param {string} language - language of the current content (`plain text`, `javascript` etc.).
|
|
8953
|
-
* Note: uses for updating node after submitting
|
|
8954
|
-
* @param {string} submitButtonText - name of the bottom submit/apply button.
|
|
8955
|
-
* @param {Object} submitData - callback on submitting data.
|
|
8956
|
-
*/
|
|
8957
|
-
IgzTextPreviewController.$inject = ["$i18next", "$rootScope", "$scope", "$timeout", "i18next", "ngDialog", "lodash", "DialogsService"];
|
|
8958
|
-
angular.module('iguazio.dashboard-controls').component('igzTextEdit', {
|
|
8953
|
+
IgzToastStatusPanelController.$inject = ["$element", "$rootScope", "$timeout", "lodash"];
|
|
8954
|
+
angular.module('iguazio.dashboard-controls').component('igzToastStatusPanel', {
|
|
8959
8955
|
bindings: {
|
|
8960
|
-
|
|
8961
|
-
|
|
8962
|
-
|
|
8963
|
-
|
|
8964
|
-
label: '@',
|
|
8965
|
-
language: '@',
|
|
8966
|
-
submitButtonText: '@',
|
|
8967
|
-
submitData: '&'
|
|
8956
|
+
onClose: '&?',
|
|
8957
|
+
panelMessages: '<',
|
|
8958
|
+
panelState: '<',
|
|
8959
|
+
permanent: '<?'
|
|
8968
8960
|
},
|
|
8969
|
-
templateUrl: 'igz_controls/components/
|
|
8970
|
-
controller:
|
|
8961
|
+
templateUrl: 'igz_controls/components/toast-status-panel/toast-status-panel.tpl.html',
|
|
8962
|
+
controller: IgzToastStatusPanelController
|
|
8971
8963
|
});
|
|
8972
|
-
function
|
|
8964
|
+
function IgzToastStatusPanelController($element, $rootScope, $timeout, lodash) {
|
|
8973
8965
|
var ctrl = this;
|
|
8974
|
-
var
|
|
8975
|
-
|
|
8976
|
-
|
|
8977
|
-
|
|
8978
|
-
|
|
8979
|
-
ctrl.
|
|
8980
|
-
ctrl.$
|
|
8981
|
-
ctrl.
|
|
8982
|
-
ctrl.
|
|
8983
|
-
ctrl.
|
|
8966
|
+
var statusIcons = {
|
|
8967
|
+
'succeeded': 'igz-icon-tick-round',
|
|
8968
|
+
'in-progress': 'igz-icon-properties',
|
|
8969
|
+
'failed': 'igz-icon-block'
|
|
8970
|
+
};
|
|
8971
|
+
ctrl.isToastPanelShown = false;
|
|
8972
|
+
ctrl.$onChanges = onChanges;
|
|
8973
|
+
ctrl.closeToastPanel = closeToastPanel;
|
|
8974
|
+
ctrl.getState = getState;
|
|
8975
|
+
ctrl.getStateMessage = getStateMessage;
|
|
8984
8976
|
|
|
8985
8977
|
//
|
|
8986
|
-
// Hook
|
|
8978
|
+
// Hook methods
|
|
8987
8979
|
//
|
|
8988
8980
|
|
|
8989
8981
|
/**
|
|
8990
|
-
*
|
|
8982
|
+
* On changes method
|
|
8983
|
+
* @param {Object} changes
|
|
8991
8984
|
*/
|
|
8992
|
-
function
|
|
8993
|
-
|
|
8994
|
-
|
|
8995
|
-
|
|
8996
|
-
|
|
8997
|
-
|
|
8998
|
-
|
|
8999
|
-
|
|
9000
|
-
|
|
8985
|
+
function onChanges(changes) {
|
|
8986
|
+
if (lodash.has(changes, 'panelState')) {
|
|
8987
|
+
ctrl.isToastPanelShown = !lodash.isNil(changes.panelState.currentValue);
|
|
8988
|
+
$element.find('.panel-status-icon').removeClass(lodash.get(statusIcons, changes.panelState.previousValue)).addClass(lodash.get(statusIcons, changes.panelState.currentValue));
|
|
8989
|
+
$element.find('.toast-status-panel').removeClass(changes.panelState.previousValue).addClass(changes.panelState.currentValue);
|
|
8990
|
+
$element.find('.panel-status').removeClass(changes.panelState.previousValue).addClass(changes.panelState.currentValue);
|
|
8991
|
+
}
|
|
8992
|
+
}
|
|
8993
|
+
|
|
8994
|
+
//
|
|
8995
|
+
// Public methods
|
|
8996
|
+
//
|
|
8997
|
+
|
|
8998
|
+
/**
|
|
8999
|
+
* Shows/hides toast panel
|
|
9000
|
+
*/
|
|
9001
|
+
function closeToastPanel() {
|
|
9002
|
+
ctrl.isToastPanelShown = false;
|
|
9003
|
+
ctrl.panelState = null;
|
|
9004
|
+
if (lodash.isFunction(ctrl.onClose)) {
|
|
9005
|
+
ctrl.onClose();
|
|
9006
|
+
}
|
|
9007
|
+
$timeout(function () {
|
|
9008
|
+
$rootScope.$broadcast('igzWatchWindowResize::resize');
|
|
9009
|
+
});
|
|
9010
|
+
}
|
|
9011
|
+
|
|
9012
|
+
/**
|
|
9013
|
+
* Gets current state
|
|
9014
|
+
* @returns {?string} (e.g. "in-progress", "succeeded", "failed")
|
|
9015
|
+
*/
|
|
9016
|
+
function getState() {
|
|
9017
|
+
return ctrl.panelState;
|
|
9018
|
+
}
|
|
9019
|
+
|
|
9020
|
+
/**
|
|
9021
|
+
* Gets status message of given state
|
|
9022
|
+
* @param {string} state (e.g. "in-progress", "succeeded", "failed")
|
|
9023
|
+
* @returns {string}
|
|
9024
|
+
*/
|
|
9025
|
+
function getStateMessage(state) {
|
|
9026
|
+
return lodash.get(ctrl, ['panelMessages', state]);
|
|
9027
|
+
}
|
|
9028
|
+
}
|
|
9029
|
+
})();
|
|
9030
|
+
"use strict";
|
|
9031
|
+
|
|
9032
|
+
(function () {
|
|
9033
|
+
'use strict';
|
|
9034
|
+
|
|
9035
|
+
/**
|
|
9036
|
+
* @name igzTextEdit
|
|
9037
|
+
* @description
|
|
9038
|
+
* Text edit component. This component is a text editor based on `Monaco code editor`
|
|
9039
|
+
* https://github.com/Microsoft/monaco-editor
|
|
9040
|
+
*
|
|
9041
|
+
* @param {string} content - main text content which can be edited.
|
|
9042
|
+
* @param {Object} closeDialog - callback on closing editor dialog.
|
|
9043
|
+
* @param {Object} closeButtonText - name of the bottom close/cancel button.
|
|
9044
|
+
* @param {string} label - name of the text file.
|
|
9045
|
+
* @param {string} language - language of the current content (`plain text`, `javascript` etc.).
|
|
9046
|
+
* Note: uses for updating node after submitting
|
|
9047
|
+
* @param {string} submitButtonText - name of the bottom submit/apply button.
|
|
9048
|
+
* @param {Object} submitData - callback on submitting data.
|
|
9049
|
+
*/
|
|
9050
|
+
IgzTextPreviewController.$inject = ["$i18next", "$rootScope", "$scope", "$timeout", "i18next", "ngDialog", "lodash", "DialogsService"];
|
|
9051
|
+
angular.module('iguazio.dashboard-controls').component('igzTextEdit', {
|
|
9052
|
+
bindings: {
|
|
9053
|
+
content: '@',
|
|
9054
|
+
closeDialog: '&',
|
|
9055
|
+
closeButtonText: '@',
|
|
9056
|
+
ngDialogId: '@',
|
|
9057
|
+
label: '@',
|
|
9058
|
+
language: '@',
|
|
9059
|
+
submitButtonText: '@',
|
|
9060
|
+
submitData: '&'
|
|
9061
|
+
},
|
|
9062
|
+
templateUrl: 'igz_controls/components/text-edit/text-edit.tpl.html',
|
|
9063
|
+
controller: IgzTextPreviewController
|
|
9064
|
+
});
|
|
9065
|
+
function IgzTextPreviewController($i18next, $rootScope, $scope, $timeout, i18next, ngDialog, lodash, DialogsService) {
|
|
9066
|
+
var ctrl = this;
|
|
9067
|
+
var lng = i18next.language;
|
|
9068
|
+
var contentCopy = '';
|
|
9069
|
+
ctrl.enableWordWrap = false;
|
|
9070
|
+
ctrl.fileChanged = false;
|
|
9071
|
+
ctrl.isLoadingState = false;
|
|
9072
|
+
ctrl.serverError = '';
|
|
9073
|
+
ctrl.$onInit = onInit;
|
|
9074
|
+
ctrl.onChangeText = onChangeText;
|
|
9075
|
+
ctrl.onClose = onClose;
|
|
9076
|
+
ctrl.onSubmit = onSubmit;
|
|
9077
|
+
|
|
9078
|
+
//
|
|
9079
|
+
// Hook method
|
|
9080
|
+
//
|
|
9081
|
+
|
|
9082
|
+
/**
|
|
9083
|
+
* Init method
|
|
9084
|
+
*/
|
|
9085
|
+
function onInit() {
|
|
9086
|
+
contentCopy = angular.copy(ctrl.content);
|
|
9087
|
+
$scope.$on('close-dialog-service_close-dialog', ctrl.onClose);
|
|
9088
|
+
}
|
|
9089
|
+
|
|
9090
|
+
//
|
|
9091
|
+
// Public methods
|
|
9092
|
+
//
|
|
9093
|
+
|
|
9001
9094
|
/**
|
|
9002
9095
|
* Sets file changed flag to true
|
|
9003
9096
|
* @param {string} sourceCode - changed file content
|
|
@@ -9077,88 +9170,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
9077
9170
|
})();
|
|
9078
9171
|
"use strict";
|
|
9079
9172
|
|
|
9080
|
-
(function () {
|
|
9081
|
-
'use strict';
|
|
9082
|
-
|
|
9083
|
-
IgzToastStatusPanelController.$inject = ["$element", "$rootScope", "$timeout", "lodash"];
|
|
9084
|
-
angular.module('iguazio.dashboard-controls').component('igzToastStatusPanel', {
|
|
9085
|
-
bindings: {
|
|
9086
|
-
onClose: '&?',
|
|
9087
|
-
panelMessages: '<',
|
|
9088
|
-
panelState: '<',
|
|
9089
|
-
permanent: '<?'
|
|
9090
|
-
},
|
|
9091
|
-
templateUrl: 'igz_controls/components/toast-status-panel/toast-status-panel.tpl.html',
|
|
9092
|
-
controller: IgzToastStatusPanelController
|
|
9093
|
-
});
|
|
9094
|
-
function IgzToastStatusPanelController($element, $rootScope, $timeout, lodash) {
|
|
9095
|
-
var ctrl = this;
|
|
9096
|
-
var statusIcons = {
|
|
9097
|
-
'succeeded': 'igz-icon-tick-round',
|
|
9098
|
-
'in-progress': 'igz-icon-properties',
|
|
9099
|
-
'failed': 'igz-icon-block'
|
|
9100
|
-
};
|
|
9101
|
-
ctrl.isToastPanelShown = false;
|
|
9102
|
-
ctrl.$onChanges = onChanges;
|
|
9103
|
-
ctrl.closeToastPanel = closeToastPanel;
|
|
9104
|
-
ctrl.getState = getState;
|
|
9105
|
-
ctrl.getStateMessage = getStateMessage;
|
|
9106
|
-
|
|
9107
|
-
//
|
|
9108
|
-
// Hook methods
|
|
9109
|
-
//
|
|
9110
|
-
|
|
9111
|
-
/**
|
|
9112
|
-
* On changes method
|
|
9113
|
-
* @param {Object} changes
|
|
9114
|
-
*/
|
|
9115
|
-
function onChanges(changes) {
|
|
9116
|
-
if (lodash.has(changes, 'panelState')) {
|
|
9117
|
-
ctrl.isToastPanelShown = !lodash.isNil(changes.panelState.currentValue);
|
|
9118
|
-
$element.find('.panel-status-icon').removeClass(lodash.get(statusIcons, changes.panelState.previousValue)).addClass(lodash.get(statusIcons, changes.panelState.currentValue));
|
|
9119
|
-
$element.find('.toast-status-panel').removeClass(changes.panelState.previousValue).addClass(changes.panelState.currentValue);
|
|
9120
|
-
$element.find('.panel-status').removeClass(changes.panelState.previousValue).addClass(changes.panelState.currentValue);
|
|
9121
|
-
}
|
|
9122
|
-
}
|
|
9123
|
-
|
|
9124
|
-
//
|
|
9125
|
-
// Public methods
|
|
9126
|
-
//
|
|
9127
|
-
|
|
9128
|
-
/**
|
|
9129
|
-
* Shows/hides toast panel
|
|
9130
|
-
*/
|
|
9131
|
-
function closeToastPanel() {
|
|
9132
|
-
ctrl.isToastPanelShown = false;
|
|
9133
|
-
ctrl.panelState = null;
|
|
9134
|
-
if (lodash.isFunction(ctrl.onClose)) {
|
|
9135
|
-
ctrl.onClose();
|
|
9136
|
-
}
|
|
9137
|
-
$timeout(function () {
|
|
9138
|
-
$rootScope.$broadcast('igzWatchWindowResize::resize');
|
|
9139
|
-
});
|
|
9140
|
-
}
|
|
9141
|
-
|
|
9142
|
-
/**
|
|
9143
|
-
* Gets current state
|
|
9144
|
-
* @returns {?string} (e.g. "in-progress", "succeeded", "failed")
|
|
9145
|
-
*/
|
|
9146
|
-
function getState() {
|
|
9147
|
-
return ctrl.panelState;
|
|
9148
|
-
}
|
|
9149
|
-
|
|
9150
|
-
/**
|
|
9151
|
-
* Gets status message of given state
|
|
9152
|
-
* @param {string} state (e.g. "in-progress", "succeeded", "failed")
|
|
9153
|
-
* @returns {string}
|
|
9154
|
-
*/
|
|
9155
|
-
function getStateMessage(state) {
|
|
9156
|
-
return lodash.get(ctrl, ['panelMessages', state]);
|
|
9157
|
-
}
|
|
9158
|
-
}
|
|
9159
|
-
})();
|
|
9160
|
-
"use strict";
|
|
9161
|
-
|
|
9162
9173
|
(function () {
|
|
9163
9174
|
'use strict';
|
|
9164
9175
|
|
|
@@ -9746,21 +9757,28 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
9746
9757
|
(function () {
|
|
9747
9758
|
'use strict';
|
|
9748
9759
|
|
|
9749
|
-
|
|
9750
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
9760
|
+
IgzInfoPageContentController.$inject = ["$scope", "$timeout", "$window", "$element"];
|
|
9761
|
+
angular.module('iguazio.dashboard-controls').component('igzInfoPageContent', {
|
|
9751
9762
|
bindings: {
|
|
9763
|
+
scrolled: '<',
|
|
9752
9764
|
watchId: '@?'
|
|
9753
9765
|
},
|
|
9754
|
-
templateUrl: 'igz_controls/components/info-page/info-page-
|
|
9766
|
+
templateUrl: 'igz_controls/components/info-page/info-page-content/info-page-content.tpl.html',
|
|
9755
9767
|
transclude: true,
|
|
9756
|
-
controller:
|
|
9768
|
+
controller: IgzInfoPageContentController
|
|
9757
9769
|
});
|
|
9758
|
-
function
|
|
9770
|
+
function IgzInfoPageContentController($scope, $timeout, $window, $element) {
|
|
9759
9771
|
var ctrl = this;
|
|
9760
|
-
ctrl.isUpperPaneShowed = false;
|
|
9761
9772
|
ctrl.isFiltersShowed = false;
|
|
9762
9773
|
ctrl.isInfoPaneShowed = false;
|
|
9774
|
+
|
|
9775
|
+
// Config for horizontal scrollbar on containers view
|
|
9776
|
+
ctrl.scrollConfigHorizontal = {
|
|
9777
|
+
axis: 'x',
|
|
9778
|
+
scrollInertia: 0
|
|
9779
|
+
};
|
|
9763
9780
|
ctrl.$onInit = onInit;
|
|
9781
|
+
ctrl.$postLink = postLink;
|
|
9764
9782
|
|
|
9765
9783
|
//
|
|
9766
9784
|
// Hook methods
|
|
@@ -9774,12 +9792,42 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
9774
9792
|
$scope.$on('info-page-upper-pane_toggle-start' + watchId, onUpperPaneToggleStart);
|
|
9775
9793
|
$scope.$on('info-page-filters_toggle-start' + watchId, onFiltersPaneToggleStart);
|
|
9776
9794
|
$scope.$on('info-page-pane_toggle-start' + watchId, onInfoPaneToggleStart);
|
|
9795
|
+
$scope.$on('info-page-pane_toggled', dispatchResize);
|
|
9796
|
+
}
|
|
9797
|
+
|
|
9798
|
+
/**
|
|
9799
|
+
* Post linking method
|
|
9800
|
+
*/
|
|
9801
|
+
function postLink() {
|
|
9802
|
+
$timeout(function () {
|
|
9803
|
+
manageHorizontalScroll();
|
|
9804
|
+
$scope.$on('info-page-filters_toggled', manageHorizontalScroll);
|
|
9805
|
+
$scope.$on('info-page-pane_toggled', manageHorizontalScroll);
|
|
9806
|
+
$scope.$on('igzWatchWindowResize::resize', manageHorizontalScroll);
|
|
9807
|
+
});
|
|
9777
9808
|
}
|
|
9778
9809
|
|
|
9779
9810
|
//
|
|
9780
9811
|
// Private methods
|
|
9781
9812
|
//
|
|
9782
9813
|
|
|
9814
|
+
/**
|
|
9815
|
+
* Manages x-scrollbar behavior
|
|
9816
|
+
* Needed to get rid of accidental wrong content width calculations made by 'ng-scrollbars' library
|
|
9817
|
+
* We just control x-scrollbar with lib's native enable/disable methods
|
|
9818
|
+
*/
|
|
9819
|
+
function manageHorizontalScroll() {
|
|
9820
|
+
var $scrollXContainer = $element.find('.igz-scrollable-container.horizontal').first();
|
|
9821
|
+
var contentWrapperWidth = $element.find('.igz-info-page-content-wrapper').first().width();
|
|
9822
|
+
var contentMinWidth = parseInt($element.find('.igz-info-page-content').css('min-width'));
|
|
9823
|
+
if ($scrollXContainer.length && contentWrapperWidth < (contentMinWidth || 946)) {
|
|
9824
|
+
$scrollXContainer.mCustomScrollbar('update');
|
|
9825
|
+
} else if ($scrollXContainer.length) {
|
|
9826
|
+
$scrollXContainer.mCustomScrollbar('disable', true);
|
|
9827
|
+
$element.find('.mCSB_container').first().width('100%');
|
|
9828
|
+
}
|
|
9829
|
+
}
|
|
9830
|
+
|
|
9783
9831
|
/**
|
|
9784
9832
|
* Upper pane toggle start $broadcast listener
|
|
9785
9833
|
* @param {Object} e - broadcast event
|
|
@@ -9806,6 +9854,15 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
9806
9854
|
function onInfoPaneToggleStart(e, isShown) {
|
|
9807
9855
|
ctrl.isInfoPaneShowed = isShown;
|
|
9808
9856
|
}
|
|
9857
|
+
|
|
9858
|
+
/**
|
|
9859
|
+
* Updates Ui-Layout library's containers size
|
|
9860
|
+
*/
|
|
9861
|
+
function dispatchResize() {
|
|
9862
|
+
$timeout(function () {
|
|
9863
|
+
$window.dispatchEvent(new Event('resize'));
|
|
9864
|
+
}, 0);
|
|
9865
|
+
}
|
|
9809
9866
|
}
|
|
9810
9867
|
})();
|
|
9811
9868
|
"use strict";
|
|
@@ -9813,121 +9870,8 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
9813
9870
|
(function () {
|
|
9814
9871
|
'use strict';
|
|
9815
9872
|
|
|
9816
|
-
|
|
9817
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
9818
|
-
bindings: {
|
|
9819
|
-
scrolled: '<',
|
|
9820
|
-
watchId: '@?'
|
|
9821
|
-
},
|
|
9822
|
-
templateUrl: 'igz_controls/components/info-page/info-page-content/info-page-content.tpl.html',
|
|
9823
|
-
transclude: true,
|
|
9824
|
-
controller: IgzInfoPageContentController
|
|
9825
|
-
});
|
|
9826
|
-
function IgzInfoPageContentController($scope, $timeout, $window, $element) {
|
|
9827
|
-
var ctrl = this;
|
|
9828
|
-
ctrl.isFiltersShowed = false;
|
|
9829
|
-
ctrl.isInfoPaneShowed = false;
|
|
9830
|
-
|
|
9831
|
-
// Config for horizontal scrollbar on containers view
|
|
9832
|
-
ctrl.scrollConfigHorizontal = {
|
|
9833
|
-
axis: 'x',
|
|
9834
|
-
scrollInertia: 0
|
|
9835
|
-
};
|
|
9836
|
-
ctrl.$onInit = onInit;
|
|
9837
|
-
ctrl.$postLink = postLink;
|
|
9838
|
-
|
|
9839
|
-
//
|
|
9840
|
-
// Hook methods
|
|
9841
|
-
//
|
|
9842
|
-
|
|
9843
|
-
/**
|
|
9844
|
-
* Init method
|
|
9845
|
-
*/
|
|
9846
|
-
function onInit() {
|
|
9847
|
-
var watchId = angular.isDefined(ctrl.watchId) ? '-' + ctrl.watchId : '';
|
|
9848
|
-
$scope.$on('info-page-upper-pane_toggle-start' + watchId, onUpperPaneToggleStart);
|
|
9849
|
-
$scope.$on('info-page-filters_toggle-start' + watchId, onFiltersPaneToggleStart);
|
|
9850
|
-
$scope.$on('info-page-pane_toggle-start' + watchId, onInfoPaneToggleStart);
|
|
9851
|
-
$scope.$on('info-page-pane_toggled', dispatchResize);
|
|
9852
|
-
}
|
|
9853
|
-
|
|
9854
|
-
/**
|
|
9855
|
-
* Post linking method
|
|
9856
|
-
*/
|
|
9857
|
-
function postLink() {
|
|
9858
|
-
$timeout(function () {
|
|
9859
|
-
manageHorizontalScroll();
|
|
9860
|
-
$scope.$on('info-page-filters_toggled', manageHorizontalScroll);
|
|
9861
|
-
$scope.$on('info-page-pane_toggled', manageHorizontalScroll);
|
|
9862
|
-
$scope.$on('igzWatchWindowResize::resize', manageHorizontalScroll);
|
|
9863
|
-
});
|
|
9864
|
-
}
|
|
9865
|
-
|
|
9866
|
-
//
|
|
9867
|
-
// Private methods
|
|
9868
|
-
//
|
|
9869
|
-
|
|
9870
|
-
/**
|
|
9871
|
-
* Manages x-scrollbar behavior
|
|
9872
|
-
* Needed to get rid of accidental wrong content width calculations made by 'ng-scrollbars' library
|
|
9873
|
-
* We just control x-scrollbar with lib's native enable/disable methods
|
|
9874
|
-
*/
|
|
9875
|
-
function manageHorizontalScroll() {
|
|
9876
|
-
var $scrollXContainer = $element.find('.igz-scrollable-container.horizontal').first();
|
|
9877
|
-
var contentWrapperWidth = $element.find('.igz-info-page-content-wrapper').first().width();
|
|
9878
|
-
var contentMinWidth = parseInt($element.find('.igz-info-page-content').css('min-width'));
|
|
9879
|
-
if ($scrollXContainer.length && contentWrapperWidth < (contentMinWidth || 946)) {
|
|
9880
|
-
$scrollXContainer.mCustomScrollbar('update');
|
|
9881
|
-
} else if ($scrollXContainer.length) {
|
|
9882
|
-
$scrollXContainer.mCustomScrollbar('disable', true);
|
|
9883
|
-
$element.find('.mCSB_container').first().width('100%');
|
|
9884
|
-
}
|
|
9885
|
-
}
|
|
9886
|
-
|
|
9887
|
-
/**
|
|
9888
|
-
* Upper pane toggle start $broadcast listener
|
|
9889
|
-
* @param {Object} e - broadcast event
|
|
9890
|
-
* @param {boolean} isShown - represents upper pane state
|
|
9891
|
-
*/
|
|
9892
|
-
function onUpperPaneToggleStart(e, isShown) {
|
|
9893
|
-
ctrl.isUpperPaneShowed = isShown;
|
|
9894
|
-
}
|
|
9895
|
-
|
|
9896
|
-
/**
|
|
9897
|
-
* Filters pane toggle start $broadcast listener
|
|
9898
|
-
* @param {Object} e - broadcast event
|
|
9899
|
-
* @param {boolean} isShown - represents filters pane state
|
|
9900
|
-
*/
|
|
9901
|
-
function onFiltersPaneToggleStart(e, isShown) {
|
|
9902
|
-
ctrl.isFiltersShowed = isShown;
|
|
9903
|
-
}
|
|
9904
|
-
|
|
9905
|
-
/**
|
|
9906
|
-
* Info pane toggle start $broadcast listener
|
|
9907
|
-
* @param {Object} e - broadcast event
|
|
9908
|
-
* @param {boolean} isShown - represents info pane state
|
|
9909
|
-
*/
|
|
9910
|
-
function onInfoPaneToggleStart(e, isShown) {
|
|
9911
|
-
ctrl.isInfoPaneShowed = isShown;
|
|
9912
|
-
}
|
|
9913
|
-
|
|
9914
|
-
/**
|
|
9915
|
-
* Updates Ui-Layout library's containers size
|
|
9916
|
-
*/
|
|
9917
|
-
function dispatchResize() {
|
|
9918
|
-
$timeout(function () {
|
|
9919
|
-
$window.dispatchEvent(new Event('resize'));
|
|
9920
|
-
}, 0);
|
|
9921
|
-
}
|
|
9922
|
-
}
|
|
9923
|
-
})();
|
|
9924
|
-
"use strict";
|
|
9925
|
-
|
|
9926
|
-
(function () {
|
|
9927
|
-
'use strict';
|
|
9928
|
-
|
|
9929
|
-
IgzInfoPageFiltersController.$inject = ["$rootScope", "$scope", "$animate", "$element", "EventHelperService"];
|
|
9930
|
-
angular.module('iguazio.dashboard-controls').component('igzInfoPageFilters', {
|
|
9873
|
+
IgzInfoPageFiltersController.$inject = ["$rootScope", "$scope", "$animate", "$element", "EventHelperService"];
|
|
9874
|
+
angular.module('iguazio.dashboard-controls').component('igzInfoPageFilters', {
|
|
9931
9875
|
bindings: {
|
|
9932
9876
|
isDisabled: '<?',
|
|
9933
9877
|
isFiltersShowed: '<',
|
|
@@ -10105,6 +10049,73 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
10105
10049
|
})();
|
|
10106
10050
|
"use strict";
|
|
10107
10051
|
|
|
10052
|
+
(function () {
|
|
10053
|
+
'use strict';
|
|
10054
|
+
|
|
10055
|
+
IgzInfoPageActionsBarController.$inject = ["$scope"];
|
|
10056
|
+
angular.module('iguazio.dashboard-controls').component('igzInfoPageActionsBar', {
|
|
10057
|
+
bindings: {
|
|
10058
|
+
watchId: '@?'
|
|
10059
|
+
},
|
|
10060
|
+
templateUrl: 'igz_controls/components/info-page/info-page-actions-bar/info-page-actions-bar.tpl.html',
|
|
10061
|
+
transclude: true,
|
|
10062
|
+
controller: IgzInfoPageActionsBarController
|
|
10063
|
+
});
|
|
10064
|
+
function IgzInfoPageActionsBarController($scope) {
|
|
10065
|
+
var ctrl = this;
|
|
10066
|
+
ctrl.isUpperPaneShowed = false;
|
|
10067
|
+
ctrl.isFiltersShowed = false;
|
|
10068
|
+
ctrl.isInfoPaneShowed = false;
|
|
10069
|
+
ctrl.$onInit = onInit;
|
|
10070
|
+
|
|
10071
|
+
//
|
|
10072
|
+
// Hook methods
|
|
10073
|
+
//
|
|
10074
|
+
|
|
10075
|
+
/**
|
|
10076
|
+
* Init method
|
|
10077
|
+
*/
|
|
10078
|
+
function onInit() {
|
|
10079
|
+
var watchId = angular.isDefined(ctrl.watchId) ? '-' + ctrl.watchId : '';
|
|
10080
|
+
$scope.$on('info-page-upper-pane_toggle-start' + watchId, onUpperPaneToggleStart);
|
|
10081
|
+
$scope.$on('info-page-filters_toggle-start' + watchId, onFiltersPaneToggleStart);
|
|
10082
|
+
$scope.$on('info-page-pane_toggle-start' + watchId, onInfoPaneToggleStart);
|
|
10083
|
+
}
|
|
10084
|
+
|
|
10085
|
+
//
|
|
10086
|
+
// Private methods
|
|
10087
|
+
//
|
|
10088
|
+
|
|
10089
|
+
/**
|
|
10090
|
+
* Upper pane toggle start $broadcast listener
|
|
10091
|
+
* @param {Object} e - broadcast event
|
|
10092
|
+
* @param {boolean} isShown - represents upper pane state
|
|
10093
|
+
*/
|
|
10094
|
+
function onUpperPaneToggleStart(e, isShown) {
|
|
10095
|
+
ctrl.isUpperPaneShowed = isShown;
|
|
10096
|
+
}
|
|
10097
|
+
|
|
10098
|
+
/**
|
|
10099
|
+
* Filters pane toggle start $broadcast listener
|
|
10100
|
+
* @param {Object} e - broadcast event
|
|
10101
|
+
* @param {boolean} isShown - represents filters pane state
|
|
10102
|
+
*/
|
|
10103
|
+
function onFiltersPaneToggleStart(e, isShown) {
|
|
10104
|
+
ctrl.isFiltersShowed = isShown;
|
|
10105
|
+
}
|
|
10106
|
+
|
|
10107
|
+
/**
|
|
10108
|
+
* Info pane toggle start $broadcast listener
|
|
10109
|
+
* @param {Object} e - broadcast event
|
|
10110
|
+
* @param {boolean} isShown - represents info pane state
|
|
10111
|
+
*/
|
|
10112
|
+
function onInfoPaneToggleStart(e, isShown) {
|
|
10113
|
+
ctrl.isInfoPaneShowed = isShown;
|
|
10114
|
+
}
|
|
10115
|
+
}
|
|
10116
|
+
})();
|
|
10117
|
+
"use strict";
|
|
10118
|
+
|
|
10108
10119
|
(function () {
|
|
10109
10120
|
'use strict';
|
|
10110
10121
|
|
|
@@ -10319,158 +10330,71 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
10319
10330
|
(function () {
|
|
10320
10331
|
'use strict';
|
|
10321
10332
|
|
|
10322
|
-
|
|
10323
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
10333
|
+
NclVersionConfigurationAnnotationsController.$inject = ["$element", "$i18next", "$rootScope", "$timeout", "i18next", "lodash", "FormValidationService", "PreventDropdownCutOffService", "ValidationService"];
|
|
10334
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationAnnotations', {
|
|
10324
10335
|
bindings: {
|
|
10325
|
-
|
|
10336
|
+
version: '<',
|
|
10337
|
+
onChangeCallback: '<',
|
|
10338
|
+
isFunctionDeploying: '&'
|
|
10326
10339
|
},
|
|
10327
|
-
templateUrl: 'nuclio/functions/version/version-
|
|
10328
|
-
controller:
|
|
10340
|
+
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-annotations/version-configuration-annotations.tpl.html',
|
|
10341
|
+
controller: NclVersionConfigurationAnnotationsController
|
|
10329
10342
|
});
|
|
10330
|
-
function
|
|
10343
|
+
function NclVersionConfigurationAnnotationsController($element, $i18next, $rootScope, $timeout, i18next, lodash, FormValidationService, PreventDropdownCutOffService, ValidationService) {
|
|
10331
10344
|
var ctrl = this;
|
|
10332
|
-
var
|
|
10333
|
-
ctrl
|
|
10334
|
-
ctrl.
|
|
10335
|
-
|
|
10336
|
-
|
|
10337
|
-
|
|
10338
|
-
ctrl.
|
|
10345
|
+
var lng = i18next.language;
|
|
10346
|
+
ctrl.annotationsForm = null;
|
|
10347
|
+
ctrl.igzScrollConfig = {
|
|
10348
|
+
maxElementsCount: 10,
|
|
10349
|
+
childrenSelector: '.table-body'
|
|
10350
|
+
};
|
|
10351
|
+
ctrl.scrollConfig = {
|
|
10352
|
+
axis: 'y',
|
|
10353
|
+
advanced: {
|
|
10354
|
+
updateOnContentResize: true
|
|
10355
|
+
}
|
|
10356
|
+
};
|
|
10357
|
+
ctrl.tooltip = '<a class="link" target="_blank" ' + 'href="https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/">' + $i18next.t('functions:TOOLTIP.ANNOTATIONS.HEAD', {
|
|
10358
|
+
lng: lng
|
|
10359
|
+
}) + '</a> ' + $i18next.t('functions:TOOLTIP.ANNOTATIONS.REST', {
|
|
10360
|
+
lng: lng
|
|
10361
|
+
});
|
|
10362
|
+
ctrl.keyTooltip = $i18next.t('functions:TOOLTIP.PREFIXED_NAME', {
|
|
10363
|
+
lng: lng,
|
|
10364
|
+
name: $i18next.t('functions:TOOLTIP.ANNOTATION', {
|
|
10365
|
+
lng: lng
|
|
10366
|
+
})
|
|
10367
|
+
});
|
|
10368
|
+
ctrl.validationRules = {
|
|
10369
|
+
key: ValidationService.getValidationRules('function.annotation.key', [{
|
|
10370
|
+
name: 'uniqueness',
|
|
10371
|
+
label: $i18next.t('functions:UNIQUENESS', {
|
|
10372
|
+
lng: lng
|
|
10373
|
+
}),
|
|
10374
|
+
pattern: validateUniqueness
|
|
10375
|
+
}])
|
|
10376
|
+
};
|
|
10377
|
+
ctrl.$postLink = postLink;
|
|
10378
|
+
ctrl.$onChanges = onChanges;
|
|
10379
|
+
ctrl.addNewAnnotation = addNewAnnotation;
|
|
10380
|
+
ctrl.handleAction = handleAction;
|
|
10381
|
+
ctrl.onChangeData = onChangeData;
|
|
10339
10382
|
|
|
10340
10383
|
//
|
|
10341
|
-
// Hook
|
|
10384
|
+
// Hook methods
|
|
10342
10385
|
//
|
|
10343
10386
|
|
|
10344
10387
|
/**
|
|
10345
|
-
*
|
|
10388
|
+
* Post linking method
|
|
10346
10389
|
*/
|
|
10347
|
-
function
|
|
10348
|
-
|
|
10349
|
-
|
|
10350
|
-
});
|
|
10390
|
+
function postLink() {
|
|
10391
|
+
// Bind DOM-related preventDropdownCutOff method to component's controller
|
|
10392
|
+
PreventDropdownCutOffService.preventDropdownCutOff($element, '.three-dot-menu');
|
|
10351
10393
|
}
|
|
10352
10394
|
|
|
10353
|
-
//
|
|
10354
|
-
// Public methods
|
|
10355
|
-
//
|
|
10356
|
-
|
|
10357
10395
|
/**
|
|
10358
|
-
*
|
|
10359
|
-
* @param {Object}
|
|
10360
|
-
* @param {boolean} collapse
|
|
10361
|
-
*/
|
|
10362
|
-
function collapseRow(log, collapse) {
|
|
10363
|
-
lodash.set(log, 'ui.collapsed', collapse);
|
|
10364
|
-
}
|
|
10365
|
-
|
|
10366
|
-
/**
|
|
10367
|
-
* Collapse/expand all rows depending on `expand` value
|
|
10368
|
-
* @param {boolean} expand
|
|
10369
|
-
*/
|
|
10370
|
-
function expandAllRows(expand) {
|
|
10371
|
-
lodash.forEach(ctrl.logs, function (log) {
|
|
10372
|
-
lodash.set(log, 'ui.collapsed', !expand);
|
|
10373
|
-
});
|
|
10374
|
-
}
|
|
10375
|
-
|
|
10376
|
-
/**
|
|
10377
|
-
* Gets css class depending on log.level
|
|
10378
|
-
* @param {Object} log
|
|
10379
|
-
* @returns {string}
|
|
10380
|
-
*/
|
|
10381
|
-
function getLevelIconClass(log) {
|
|
10382
|
-
return log.level === 'debug' ? 'ncl-icon-debug' : log.level === 'info' ? 'igz-icon-info-round' : log.level === 'warn' ? 'igz-icon-warning' : log.level === 'error' ? 'igz-icon-cancel-path' : '';
|
|
10383
|
-
}
|
|
10384
|
-
|
|
10385
|
-
/**
|
|
10386
|
-
* Gets additional parameters
|
|
10387
|
-
* @param {Object} log
|
|
10388
|
-
* @returns {Object}
|
|
10389
|
-
*/
|
|
10390
|
-
function getParameters(log) {
|
|
10391
|
-
return lodash.omit(log, REQUIRED_PARAMETERS);
|
|
10392
|
-
}
|
|
10393
|
-
|
|
10394
|
-
/**
|
|
10395
|
-
* Checks if log has additional parameters
|
|
10396
|
-
* @param {Object} log
|
|
10397
|
-
* @returns {boolean}
|
|
10398
|
-
*/
|
|
10399
|
-
function hasAdditionalParameters(log) {
|
|
10400
|
-
return !lodash.isEmpty(getParameters(log));
|
|
10401
|
-
}
|
|
10402
|
-
}
|
|
10403
|
-
})();
|
|
10404
|
-
"use strict";
|
|
10405
|
-
|
|
10406
|
-
(function () {
|
|
10407
|
-
'use strict';
|
|
10408
|
-
|
|
10409
|
-
NclVersionConfigurationAnnotationsController.$inject = ["$element", "$i18next", "$rootScope", "$timeout", "i18next", "lodash", "FormValidationService", "PreventDropdownCutOffService", "ValidationService"];
|
|
10410
|
-
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationAnnotations', {
|
|
10411
|
-
bindings: {
|
|
10412
|
-
version: '<',
|
|
10413
|
-
onChangeCallback: '<',
|
|
10414
|
-
isFunctionDeploying: '&'
|
|
10415
|
-
},
|
|
10416
|
-
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-annotations/version-configuration-annotations.tpl.html',
|
|
10417
|
-
controller: NclVersionConfigurationAnnotationsController
|
|
10418
|
-
});
|
|
10419
|
-
function NclVersionConfigurationAnnotationsController($element, $i18next, $rootScope, $timeout, i18next, lodash, FormValidationService, PreventDropdownCutOffService, ValidationService) {
|
|
10420
|
-
var ctrl = this;
|
|
10421
|
-
var lng = i18next.language;
|
|
10422
|
-
ctrl.annotationsForm = null;
|
|
10423
|
-
ctrl.igzScrollConfig = {
|
|
10424
|
-
maxElementsCount: 10,
|
|
10425
|
-
childrenSelector: '.table-body'
|
|
10426
|
-
};
|
|
10427
|
-
ctrl.scrollConfig = {
|
|
10428
|
-
axis: 'y',
|
|
10429
|
-
advanced: {
|
|
10430
|
-
updateOnContentResize: true
|
|
10431
|
-
}
|
|
10432
|
-
};
|
|
10433
|
-
ctrl.tooltip = '<a class="link" target="_blank" ' + 'href="https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/">' + $i18next.t('functions:TOOLTIP.ANNOTATIONS.HEAD', {
|
|
10434
|
-
lng: lng
|
|
10435
|
-
}) + '</a> ' + $i18next.t('functions:TOOLTIP.ANNOTATIONS.REST', {
|
|
10436
|
-
lng: lng
|
|
10437
|
-
});
|
|
10438
|
-
ctrl.keyTooltip = $i18next.t('functions:TOOLTIP.PREFIXED_NAME', {
|
|
10439
|
-
lng: lng,
|
|
10440
|
-
name: $i18next.t('functions:TOOLTIP.ANNOTATION', {
|
|
10441
|
-
lng: lng
|
|
10442
|
-
})
|
|
10443
|
-
});
|
|
10444
|
-
ctrl.validationRules = {
|
|
10445
|
-
key: ValidationService.getValidationRules('function.annotation.key', [{
|
|
10446
|
-
name: 'uniqueness',
|
|
10447
|
-
label: $i18next.t('functions:UNIQUENESS', {
|
|
10448
|
-
lng: lng
|
|
10449
|
-
}),
|
|
10450
|
-
pattern: validateUniqueness
|
|
10451
|
-
}])
|
|
10452
|
-
};
|
|
10453
|
-
ctrl.$postLink = postLink;
|
|
10454
|
-
ctrl.$onChanges = onChanges;
|
|
10455
|
-
ctrl.addNewAnnotation = addNewAnnotation;
|
|
10456
|
-
ctrl.handleAction = handleAction;
|
|
10457
|
-
ctrl.onChangeData = onChangeData;
|
|
10458
|
-
|
|
10459
|
-
//
|
|
10460
|
-
// Hook methods
|
|
10461
|
-
//
|
|
10462
|
-
|
|
10463
|
-
/**
|
|
10464
|
-
* Post linking method
|
|
10465
|
-
*/
|
|
10466
|
-
function postLink() {
|
|
10467
|
-
// Bind DOM-related preventDropdownCutOff method to component's controller
|
|
10468
|
-
PreventDropdownCutOffService.preventDropdownCutOff($element, '.three-dot-menu');
|
|
10469
|
-
}
|
|
10470
|
-
|
|
10471
|
-
/**
|
|
10472
|
-
* On changes hook method.
|
|
10473
|
-
* @param {Object} changes
|
|
10396
|
+
* On changes hook method.
|
|
10397
|
+
* @param {Object} changes
|
|
10474
10398
|
*/
|
|
10475
10399
|
function onChanges(changes) {
|
|
10476
10400
|
if (lodash.has(changes, 'version')) {
|
|
@@ -10591,78 +10515,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
10591
10515
|
})();
|
|
10592
10516
|
"use strict";
|
|
10593
10517
|
|
|
10594
|
-
(function () {
|
|
10595
|
-
'use strict';
|
|
10596
|
-
|
|
10597
|
-
NclTestEventsNavigationTabsController.$inject = ["$i18next", "i18next"];
|
|
10598
|
-
angular.module('iguazio.dashboard-controls').component('nclTestEventsNavigationTabs', {
|
|
10599
|
-
bindings: {
|
|
10600
|
-
activeTab: '<',
|
|
10601
|
-
tabItems: '<',
|
|
10602
|
-
selectedLogLevel: '<?',
|
|
10603
|
-
onChangeActiveTab: '&',
|
|
10604
|
-
onChangeLogLevel: '&?'
|
|
10605
|
-
},
|
|
10606
|
-
templateUrl: 'nuclio/functions/version/version-code/function-event-pane/test-events-navigation-tabs/test-events-navigation-tabs.tpl.html',
|
|
10607
|
-
controller: NclTestEventsNavigationTabsController
|
|
10608
|
-
});
|
|
10609
|
-
function NclTestEventsNavigationTabsController($i18next, i18next) {
|
|
10610
|
-
var ctrl = this;
|
|
10611
|
-
var lng = i18next.language;
|
|
10612
|
-
ctrl.logLevelValues = [{
|
|
10613
|
-
id: 'error',
|
|
10614
|
-
name: $i18next.t('common:ERROR', {
|
|
10615
|
-
lng: lng
|
|
10616
|
-
}),
|
|
10617
|
-
visible: true
|
|
10618
|
-
}, {
|
|
10619
|
-
id: 'warn',
|
|
10620
|
-
name: $i18next.t('common:WARNING', {
|
|
10621
|
-
lng: lng
|
|
10622
|
-
}),
|
|
10623
|
-
visible: true
|
|
10624
|
-
}, {
|
|
10625
|
-
id: 'info',
|
|
10626
|
-
name: $i18next.t('common:INFO', {
|
|
10627
|
-
lng: lng
|
|
10628
|
-
}),
|
|
10629
|
-
visible: true
|
|
10630
|
-
}, {
|
|
10631
|
-
id: 'debug',
|
|
10632
|
-
name: $i18next.t('common:DEBUG', {
|
|
10633
|
-
lng: lng
|
|
10634
|
-
}),
|
|
10635
|
-
visible: true
|
|
10636
|
-
}];
|
|
10637
|
-
ctrl.changeActiveTab = changeActiveTab;
|
|
10638
|
-
ctrl.isActiveTab = isActiveTab;
|
|
10639
|
-
|
|
10640
|
-
//
|
|
10641
|
-
// Public methods
|
|
10642
|
-
//
|
|
10643
|
-
|
|
10644
|
-
/**
|
|
10645
|
-
* Changes active nav tab
|
|
10646
|
-
* @param {Object} item - current status
|
|
10647
|
-
*/
|
|
10648
|
-
function changeActiveTab(item) {
|
|
10649
|
-
ctrl.activeTab = item;
|
|
10650
|
-
ctrl.onChangeActiveTab({
|
|
10651
|
-
activeTab: item
|
|
10652
|
-
});
|
|
10653
|
-
}
|
|
10654
|
-
|
|
10655
|
-
/**
|
|
10656
|
-
* Checks if it is an active tab
|
|
10657
|
-
* @param {Object} item - current tab
|
|
10658
|
-
*/
|
|
10659
|
-
function isActiveTab(item) {
|
|
10660
|
-
return ctrl.activeTab.id === item.id;
|
|
10661
|
-
}
|
|
10662
|
-
}
|
|
10663
|
-
})();
|
|
10664
|
-
"use strict";
|
|
10665
|
-
|
|
10666
10518
|
(function () {
|
|
10667
10519
|
'use strict';
|
|
10668
10520
|
|
|
@@ -11081,88 +10933,263 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
11081
10933
|
(function () {
|
|
11082
10934
|
'use strict';
|
|
11083
10935
|
|
|
11084
|
-
|
|
11085
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
11086
|
-
bindings: {
|
|
11087
|
-
version: '<',
|
|
11088
|
-
onChangeCallback: '<'
|
|
11089
|
-
},
|
|
11090
|
-
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-logging/version-configuration-logging.tpl.html',
|
|
11091
|
-
controller: NclVersionConfigurationLoggingController
|
|
11092
|
-
});
|
|
11093
|
-
function NclVersionConfigurationLoggingController(lodash) {
|
|
11094
|
-
var ctrl = this;
|
|
11095
|
-
ctrl.inputValueCallback = inputValueCallback;
|
|
11096
|
-
|
|
11097
|
-
//
|
|
11098
|
-
// Public methods
|
|
11099
|
-
//
|
|
11100
|
-
|
|
11101
|
-
/**
|
|
11102
|
-
* Update data callback
|
|
11103
|
-
* @param {string} newData
|
|
11104
|
-
* @param {string} field
|
|
11105
|
-
*/
|
|
11106
|
-
function inputValueCallback(newData, field) {
|
|
11107
|
-
lodash.set(ctrl.version, field, newData);
|
|
11108
|
-
ctrl.onChangeCallback();
|
|
11109
|
-
}
|
|
11110
|
-
}
|
|
11111
|
-
})();
|
|
11112
|
-
"use strict";
|
|
11113
|
-
|
|
11114
|
-
(function () {
|
|
11115
|
-
'use strict';
|
|
11116
|
-
|
|
11117
|
-
NclVersionConfigurationLabelsController.$inject = ["$element", "$i18next", "$rootScope", "$timeout", "i18next", "lodash", "FormValidationService", "FunctionsService", "PreventDropdownCutOffService", "ValidationService", "VersionHelperService"];
|
|
11118
|
-
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationLabels', {
|
|
10936
|
+
NclVersionConfigurationEnvironmentVariablesController.$inject = ["$element", "$i18next", "$rootScope", "$timeout", "i18next", "lodash", "FormValidationService", "PreventDropdownCutOffService", "ValidationService"];
|
|
10937
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationEnvironmentVariables', {
|
|
11119
10938
|
bindings: {
|
|
11120
10939
|
version: '<',
|
|
11121
10940
|
onChangeCallback: '<',
|
|
11122
10941
|
isFunctionDeploying: '&'
|
|
11123
10942
|
},
|
|
11124
|
-
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
11125
|
-
controller:
|
|
10943
|
+
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-environment-variables/version-configuration-environment-variables.tpl.html',
|
|
10944
|
+
controller: NclVersionConfigurationEnvironmentVariablesController
|
|
11126
10945
|
});
|
|
11127
|
-
function
|
|
10946
|
+
function NclVersionConfigurationEnvironmentVariablesController($element, $i18next, $rootScope, $timeout, i18next, lodash, FormValidationService, PreventDropdownCutOffService, ValidationService) {
|
|
11128
10947
|
var ctrl = this;
|
|
11129
10948
|
var lng = i18next.language;
|
|
10949
|
+
ctrl.environmentVariablesForm = null;
|
|
11130
10950
|
ctrl.igzScrollConfig = {
|
|
11131
10951
|
maxElementsCount: 10,
|
|
11132
10952
|
childrenSelector: '.table-body'
|
|
11133
10953
|
};
|
|
11134
|
-
ctrl.isKubePlatform = false;
|
|
11135
|
-
ctrl.labelsForm = null;
|
|
11136
|
-
ctrl.scrollConfig = {
|
|
11137
|
-
axis: 'y',
|
|
11138
|
-
advanced: {
|
|
11139
|
-
updateOnContentResize: true
|
|
11140
|
-
}
|
|
11141
|
-
};
|
|
11142
|
-
ctrl.tooltip = '<a class="link" target="_blank" ' + 'href="https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/">' + $i18next.t('functions:TOOLTIP.LABELS.HEAD', {
|
|
11143
|
-
lng: lng
|
|
11144
|
-
}) + '</a> ' + $i18next.t('functions:TOOLTIP.LABELS.REST', {
|
|
11145
|
-
lng: lng
|
|
11146
|
-
});
|
|
11147
|
-
ctrl.keyTooltip = $i18next.t('functions:TOOLTIP.PREFIXED_NAME', {
|
|
11148
|
-
lng: lng,
|
|
11149
|
-
name: $i18next.t('common:LABEL', {
|
|
11150
|
-
lng: lng
|
|
11151
|
-
})
|
|
11152
|
-
});
|
|
11153
10954
|
ctrl.validationRules = {
|
|
11154
|
-
key: ValidationService.getValidationRules('
|
|
10955
|
+
key: ValidationService.getValidationRules('k8s.envVarName', [{
|
|
11155
10956
|
name: 'uniqueness',
|
|
11156
10957
|
label: $i18next.t('functions:UNIQUENESS', {
|
|
11157
10958
|
lng: lng
|
|
11158
10959
|
}),
|
|
11159
|
-
pattern: validateUniqueness
|
|
10960
|
+
pattern: validateUniqueness.bind(null, 'name')
|
|
11160
10961
|
}]),
|
|
11161
|
-
|
|
11162
|
-
|
|
11163
|
-
|
|
11164
|
-
|
|
11165
|
-
|
|
10962
|
+
secretKey: ValidationService.getValidationRules('k8s.configMapKey'),
|
|
10963
|
+
secret: ValidationService.getValidationRules('k8s.secretName'),
|
|
10964
|
+
configmapKey: ValidationService.getValidationRules('k8s.configMapKey', [{
|
|
10965
|
+
name: 'uniqueness',
|
|
10966
|
+
label: $i18next.t('functions:UNIQUENESS', {
|
|
10967
|
+
lng: lng
|
|
10968
|
+
}),
|
|
10969
|
+
pattern: validateUniqueness.bind(null, 'valueFrom.configMapKeyRef.key')
|
|
10970
|
+
}])
|
|
10971
|
+
};
|
|
10972
|
+
ctrl.variables = [];
|
|
10973
|
+
ctrl.scrollConfig = {
|
|
10974
|
+
axis: 'y',
|
|
10975
|
+
advanced: {
|
|
10976
|
+
updateOnContentResize: true
|
|
10977
|
+
}
|
|
10978
|
+
};
|
|
10979
|
+
ctrl.$postLink = postLink;
|
|
10980
|
+
ctrl.$onChanges = onChanges;
|
|
10981
|
+
ctrl.addNewVariable = addNewVariable;
|
|
10982
|
+
ctrl.handleAction = handleAction;
|
|
10983
|
+
ctrl.onChangeData = onChangeData;
|
|
10984
|
+
ctrl.onChangeType = onChangeType;
|
|
10985
|
+
|
|
10986
|
+
//
|
|
10987
|
+
// Hook methods
|
|
10988
|
+
//
|
|
10989
|
+
|
|
10990
|
+
/**
|
|
10991
|
+
* Post linking method
|
|
10992
|
+
*/
|
|
10993
|
+
function postLink() {
|
|
10994
|
+
// Bind DOM-related preventDropdownCutOff method to component's controller
|
|
10995
|
+
PreventDropdownCutOffService.preventDropdownCutOff($element, '.three-dot-menu');
|
|
10996
|
+
}
|
|
10997
|
+
|
|
10998
|
+
/**
|
|
10999
|
+
* On changes hook method.
|
|
11000
|
+
* @param {Object} changes
|
|
11001
|
+
*/
|
|
11002
|
+
function onChanges(changes) {
|
|
11003
|
+
if (angular.isDefined(changes.version)) {
|
|
11004
|
+
ctrl.variables = lodash.chain(ctrl.version).get('spec.env', []).map(function (variable) {
|
|
11005
|
+
variable.ui = {
|
|
11006
|
+
editModeActive: false,
|
|
11007
|
+
isFormValid: false,
|
|
11008
|
+
name: 'variable'
|
|
11009
|
+
};
|
|
11010
|
+
return variable;
|
|
11011
|
+
}).value();
|
|
11012
|
+
ctrl.isOnlyValueTypeInputs = !lodash.some(ctrl.variables, 'valueFrom');
|
|
11013
|
+
$timeout(function () {
|
|
11014
|
+
if (ctrl.environmentVariablesForm.$invalid) {
|
|
11015
|
+
ctrl.environmentVariablesForm.$setSubmitted();
|
|
11016
|
+
$rootScope.$broadcast('change-state-deploy-button', {
|
|
11017
|
+
component: 'variable',
|
|
11018
|
+
isDisabled: true
|
|
11019
|
+
});
|
|
11020
|
+
}
|
|
11021
|
+
});
|
|
11022
|
+
}
|
|
11023
|
+
}
|
|
11024
|
+
|
|
11025
|
+
//
|
|
11026
|
+
// Public methods
|
|
11027
|
+
//
|
|
11028
|
+
|
|
11029
|
+
/**
|
|
11030
|
+
* Adds new variable
|
|
11031
|
+
*/
|
|
11032
|
+
function addNewVariable(event) {
|
|
11033
|
+
if (ctrl.isFunctionDeploying()) {
|
|
11034
|
+
return;
|
|
11035
|
+
}
|
|
11036
|
+
$timeout(function () {
|
|
11037
|
+
if (ctrl.variables.length < 1 || lodash.chain(ctrl.variables).last().get('ui.isFormValid', true).value()) {
|
|
11038
|
+
ctrl.variables.push({
|
|
11039
|
+
name: '',
|
|
11040
|
+
value: '',
|
|
11041
|
+
ui: {
|
|
11042
|
+
editModeActive: true,
|
|
11043
|
+
isFormValid: false,
|
|
11044
|
+
name: 'variable'
|
|
11045
|
+
}
|
|
11046
|
+
});
|
|
11047
|
+
ctrl.environmentVariablesForm.$setPristine();
|
|
11048
|
+
$rootScope.$broadcast('change-state-deploy-button', {
|
|
11049
|
+
component: 'variable',
|
|
11050
|
+
isDisabled: true
|
|
11051
|
+
});
|
|
11052
|
+
event.stopPropagation();
|
|
11053
|
+
}
|
|
11054
|
+
}, 50);
|
|
11055
|
+
}
|
|
11056
|
+
|
|
11057
|
+
/**
|
|
11058
|
+
* Handler on specific action type
|
|
11059
|
+
* @param {string} actionType
|
|
11060
|
+
* @param {number} index - index of variable in array
|
|
11061
|
+
*/
|
|
11062
|
+
function handleAction(actionType, index) {
|
|
11063
|
+
if (actionType === 'delete') {
|
|
11064
|
+
ctrl.variables.splice(index, 1);
|
|
11065
|
+
$timeout(function () {
|
|
11066
|
+
updateVariables();
|
|
11067
|
+
});
|
|
11068
|
+
}
|
|
11069
|
+
}
|
|
11070
|
+
|
|
11071
|
+
/**
|
|
11072
|
+
* Changes data of specific variable
|
|
11073
|
+
* @param {Object} variable
|
|
11074
|
+
* @param {number} index
|
|
11075
|
+
*/
|
|
11076
|
+
function onChangeData(variable, index) {
|
|
11077
|
+
ctrl.variables[index] = lodash.cloneDeep(variable);
|
|
11078
|
+
updateVariables();
|
|
11079
|
+
}
|
|
11080
|
+
|
|
11081
|
+
/**
|
|
11082
|
+
* Handles a change of variables type
|
|
11083
|
+
* @param {Object} newType
|
|
11084
|
+
* @param {number} index
|
|
11085
|
+
*/
|
|
11086
|
+
function onChangeType(newType, index) {
|
|
11087
|
+
var variablesCopy = angular.copy(ctrl.variables);
|
|
11088
|
+
variablesCopy[index] = newType.id === 'value' ? {} : {
|
|
11089
|
+
valueFrom: {}
|
|
11090
|
+
};
|
|
11091
|
+
ctrl.isOnlyValueTypeInputs = !lodash.some(variablesCopy, 'valueFrom');
|
|
11092
|
+
if (newType.id === 'secret') {
|
|
11093
|
+
var form = lodash.get(ctrl.environmentVariablesForm, '$$controls[' + index + '][value-key]');
|
|
11094
|
+
if (angular.isDefined(form)) {
|
|
11095
|
+
lodash.forEach(ctrl.validationRules.configmapKey, function (rule) {
|
|
11096
|
+
form.$setValidity(rule.name, true);
|
|
11097
|
+
});
|
|
11098
|
+
}
|
|
11099
|
+
}
|
|
11100
|
+
}
|
|
11101
|
+
|
|
11102
|
+
//
|
|
11103
|
+
// Private methods
|
|
11104
|
+
//
|
|
11105
|
+
|
|
11106
|
+
/**
|
|
11107
|
+
* Updates function's variables
|
|
11108
|
+
*/
|
|
11109
|
+
function updateVariables() {
|
|
11110
|
+
var isFormValid = true;
|
|
11111
|
+
var variables = lodash.map(ctrl.variables, function (variable) {
|
|
11112
|
+
if (!variable.ui.isFormValid) {
|
|
11113
|
+
isFormValid = false;
|
|
11114
|
+
}
|
|
11115
|
+
return lodash.omit(variable, 'ui');
|
|
11116
|
+
});
|
|
11117
|
+
|
|
11118
|
+
// since uniqueness validation rule of some fields is dependent on the entire environment variable list,
|
|
11119
|
+
// then whenever the list is modified - the rest of the environment variables need to be re-validated
|
|
11120
|
+
FormValidationService.validateAllFields(ctrl.environmentVariablesForm);
|
|
11121
|
+
$rootScope.$broadcast('change-state-deploy-button', {
|
|
11122
|
+
component: 'variable',
|
|
11123
|
+
isDisabled: !isFormValid
|
|
11124
|
+
});
|
|
11125
|
+
lodash.set(ctrl.version, 'spec.env', variables);
|
|
11126
|
+
ctrl.onChangeCallback();
|
|
11127
|
+
}
|
|
11128
|
+
|
|
11129
|
+
/**
|
|
11130
|
+
* Determines `uniqueness` validation for `Key` and `ConfigMap key` fields
|
|
11131
|
+
* @param {string} path
|
|
11132
|
+
* @param {string} value
|
|
11133
|
+
*/
|
|
11134
|
+
function validateUniqueness(path, value) {
|
|
11135
|
+
return lodash.filter(ctrl.variables, [path, value]).length === 1;
|
|
11136
|
+
}
|
|
11137
|
+
}
|
|
11138
|
+
})();
|
|
11139
|
+
"use strict";
|
|
11140
|
+
|
|
11141
|
+
(function () {
|
|
11142
|
+
'use strict';
|
|
11143
|
+
|
|
11144
|
+
NclVersionConfigurationLabelsController.$inject = ["$element", "$i18next", "$rootScope", "$timeout", "i18next", "lodash", "FormValidationService", "FunctionsService", "PreventDropdownCutOffService", "ValidationService", "VersionHelperService"];
|
|
11145
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationLabels', {
|
|
11146
|
+
bindings: {
|
|
11147
|
+
version: '<',
|
|
11148
|
+
onChangeCallback: '<',
|
|
11149
|
+
isFunctionDeploying: '&'
|
|
11150
|
+
},
|
|
11151
|
+
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-labels/version-configuration-labels.tpl.html',
|
|
11152
|
+
controller: NclVersionConfigurationLabelsController
|
|
11153
|
+
});
|
|
11154
|
+
function NclVersionConfigurationLabelsController($element, $i18next, $rootScope, $timeout, i18next, lodash, FormValidationService, FunctionsService, PreventDropdownCutOffService, ValidationService, VersionHelperService) {
|
|
11155
|
+
var ctrl = this;
|
|
11156
|
+
var lng = i18next.language;
|
|
11157
|
+
ctrl.igzScrollConfig = {
|
|
11158
|
+
maxElementsCount: 10,
|
|
11159
|
+
childrenSelector: '.table-body'
|
|
11160
|
+
};
|
|
11161
|
+
ctrl.isKubePlatform = false;
|
|
11162
|
+
ctrl.labelsForm = null;
|
|
11163
|
+
ctrl.scrollConfig = {
|
|
11164
|
+
axis: 'y',
|
|
11165
|
+
advanced: {
|
|
11166
|
+
updateOnContentResize: true
|
|
11167
|
+
}
|
|
11168
|
+
};
|
|
11169
|
+
ctrl.tooltip = '<a class="link" target="_blank" ' + 'href="https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/">' + $i18next.t('functions:TOOLTIP.LABELS.HEAD', {
|
|
11170
|
+
lng: lng
|
|
11171
|
+
}) + '</a> ' + $i18next.t('functions:TOOLTIP.LABELS.REST', {
|
|
11172
|
+
lng: lng
|
|
11173
|
+
});
|
|
11174
|
+
ctrl.keyTooltip = $i18next.t('functions:TOOLTIP.PREFIXED_NAME', {
|
|
11175
|
+
lng: lng,
|
|
11176
|
+
name: $i18next.t('common:LABEL', {
|
|
11177
|
+
lng: lng
|
|
11178
|
+
})
|
|
11179
|
+
});
|
|
11180
|
+
ctrl.validationRules = {
|
|
11181
|
+
key: ValidationService.getValidationRules('function.label.key', [{
|
|
11182
|
+
name: 'uniqueness',
|
|
11183
|
+
label: $i18next.t('functions:UNIQUENESS', {
|
|
11184
|
+
lng: lng
|
|
11185
|
+
}),
|
|
11186
|
+
pattern: validateUniqueness
|
|
11187
|
+
}]),
|
|
11188
|
+
value: ValidationService.getValidationRules('k8s.qualifiedName')
|
|
11189
|
+
};
|
|
11190
|
+
ctrl.$postLink = postLink;
|
|
11191
|
+
ctrl.$onChanges = onChanges;
|
|
11192
|
+
ctrl.addNewLabel = addNewLabel;
|
|
11166
11193
|
ctrl.handleAction = handleAction;
|
|
11167
11194
|
ctrl.isLabelsDisabled = isLabelsDisabled;
|
|
11168
11195
|
ctrl.onChangeData = onChangeData;
|
|
@@ -11319,33 +11346,66 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
11319
11346
|
})();
|
|
11320
11347
|
"use strict";
|
|
11321
11348
|
|
|
11322
|
-
/* eslint max-statements: ["error", 80] */
|
|
11323
11349
|
(function () {
|
|
11324
11350
|
'use strict';
|
|
11325
11351
|
|
|
11326
|
-
|
|
11327
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
11352
|
+
NclVersionConfigurationLoggingController.$inject = ["lodash"];
|
|
11353
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationLogging', {
|
|
11328
11354
|
bindings: {
|
|
11329
11355
|
version: '<',
|
|
11330
|
-
onChangeCallback: '<'
|
|
11331
|
-
isFunctionDeploying: '&'
|
|
11356
|
+
onChangeCallback: '<'
|
|
11332
11357
|
},
|
|
11333
|
-
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
11334
|
-
controller:
|
|
11358
|
+
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-logging/version-configuration-logging.tpl.html',
|
|
11359
|
+
controller: NclVersionConfigurationLoggingController
|
|
11335
11360
|
});
|
|
11336
|
-
function
|
|
11361
|
+
function NclVersionConfigurationLoggingController(lodash) {
|
|
11337
11362
|
var ctrl = this;
|
|
11338
|
-
|
|
11339
|
-
|
|
11340
|
-
|
|
11341
|
-
|
|
11342
|
-
|
|
11343
|
-
|
|
11344
|
-
|
|
11345
|
-
|
|
11346
|
-
|
|
11347
|
-
|
|
11348
|
-
|
|
11363
|
+
ctrl.inputValueCallback = inputValueCallback;
|
|
11364
|
+
|
|
11365
|
+
//
|
|
11366
|
+
// Public methods
|
|
11367
|
+
//
|
|
11368
|
+
|
|
11369
|
+
/**
|
|
11370
|
+
* Update data callback
|
|
11371
|
+
* @param {string} newData
|
|
11372
|
+
* @param {string} field
|
|
11373
|
+
*/
|
|
11374
|
+
function inputValueCallback(newData, field) {
|
|
11375
|
+
lodash.set(ctrl.version, field, newData);
|
|
11376
|
+
ctrl.onChangeCallback();
|
|
11377
|
+
}
|
|
11378
|
+
}
|
|
11379
|
+
})();
|
|
11380
|
+
"use strict";
|
|
11381
|
+
|
|
11382
|
+
/* eslint max-statements: ["error", 80] */
|
|
11383
|
+
(function () {
|
|
11384
|
+
'use strict';
|
|
11385
|
+
|
|
11386
|
+
NclVersionConfigurationResourcesController.$inject = ["$i18next", "$rootScope", "$scope", "$stateParams", "$timeout", "i18next", "lodash", "ConfigService", "DialogsService", "FormValidationService", "ValidationService"];
|
|
11387
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationResources', {
|
|
11388
|
+
bindings: {
|
|
11389
|
+
version: '<',
|
|
11390
|
+
onChangeCallback: '<',
|
|
11391
|
+
isFunctionDeploying: '&'
|
|
11392
|
+
},
|
|
11393
|
+
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-resources/version-configuration-resources.tpl.html',
|
|
11394
|
+
controller: NclVersionConfigurationResourcesController
|
|
11395
|
+
});
|
|
11396
|
+
function NclVersionConfigurationResourcesController($i18next, $rootScope, $scope, $stateParams, $timeout, i18next, lodash, ConfigService, DialogsService, FormValidationService, ValidationService) {
|
|
11397
|
+
var ctrl = this;
|
|
11398
|
+
var lng = i18next.language;
|
|
11399
|
+
var defaultUnit = {
|
|
11400
|
+
id: 'gb',
|
|
11401
|
+
name: 'GB',
|
|
11402
|
+
unit: 'G',
|
|
11403
|
+
root: 1000,
|
|
11404
|
+
power: 3
|
|
11405
|
+
};
|
|
11406
|
+
var preemptionMode = '';
|
|
11407
|
+
var scaleResourcesCopy = [];
|
|
11408
|
+
var scaleToZero = {};
|
|
11349
11409
|
ctrl.cpuDropdownOptions = [{
|
|
11350
11410
|
id: 'millicores',
|
|
11351
11411
|
name: 'millicpu',
|
|
@@ -12180,214 +12240,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
12180
12240
|
})();
|
|
12181
12241
|
"use strict";
|
|
12182
12242
|
|
|
12183
|
-
(function () {
|
|
12184
|
-
'use strict';
|
|
12185
|
-
|
|
12186
|
-
NclVersionConfigurationEnvironmentVariablesController.$inject = ["$element", "$i18next", "$rootScope", "$timeout", "i18next", "lodash", "FormValidationService", "PreventDropdownCutOffService", "ValidationService"];
|
|
12187
|
-
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationEnvironmentVariables', {
|
|
12188
|
-
bindings: {
|
|
12189
|
-
version: '<',
|
|
12190
|
-
onChangeCallback: '<',
|
|
12191
|
-
isFunctionDeploying: '&'
|
|
12192
|
-
},
|
|
12193
|
-
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-environment-variables/version-configuration-environment-variables.tpl.html',
|
|
12194
|
-
controller: NclVersionConfigurationEnvironmentVariablesController
|
|
12195
|
-
});
|
|
12196
|
-
function NclVersionConfigurationEnvironmentVariablesController($element, $i18next, $rootScope, $timeout, i18next, lodash, FormValidationService, PreventDropdownCutOffService, ValidationService) {
|
|
12197
|
-
var ctrl = this;
|
|
12198
|
-
var lng = i18next.language;
|
|
12199
|
-
ctrl.environmentVariablesForm = null;
|
|
12200
|
-
ctrl.igzScrollConfig = {
|
|
12201
|
-
maxElementsCount: 10,
|
|
12202
|
-
childrenSelector: '.table-body'
|
|
12203
|
-
};
|
|
12204
|
-
ctrl.validationRules = {
|
|
12205
|
-
key: ValidationService.getValidationRules('k8s.envVarName', [{
|
|
12206
|
-
name: 'uniqueness',
|
|
12207
|
-
label: $i18next.t('functions:UNIQUENESS', {
|
|
12208
|
-
lng: lng
|
|
12209
|
-
}),
|
|
12210
|
-
pattern: validateUniqueness.bind(null, 'name')
|
|
12211
|
-
}]),
|
|
12212
|
-
secretKey: ValidationService.getValidationRules('k8s.configMapKey'),
|
|
12213
|
-
secret: ValidationService.getValidationRules('k8s.secretName'),
|
|
12214
|
-
configmapKey: ValidationService.getValidationRules('k8s.configMapKey', [{
|
|
12215
|
-
name: 'uniqueness',
|
|
12216
|
-
label: $i18next.t('functions:UNIQUENESS', {
|
|
12217
|
-
lng: lng
|
|
12218
|
-
}),
|
|
12219
|
-
pattern: validateUniqueness.bind(null, 'valueFrom.configMapKeyRef.key')
|
|
12220
|
-
}])
|
|
12221
|
-
};
|
|
12222
|
-
ctrl.variables = [];
|
|
12223
|
-
ctrl.scrollConfig = {
|
|
12224
|
-
axis: 'y',
|
|
12225
|
-
advanced: {
|
|
12226
|
-
updateOnContentResize: true
|
|
12227
|
-
}
|
|
12228
|
-
};
|
|
12229
|
-
ctrl.$postLink = postLink;
|
|
12230
|
-
ctrl.$onChanges = onChanges;
|
|
12231
|
-
ctrl.addNewVariable = addNewVariable;
|
|
12232
|
-
ctrl.handleAction = handleAction;
|
|
12233
|
-
ctrl.onChangeData = onChangeData;
|
|
12234
|
-
ctrl.onChangeType = onChangeType;
|
|
12235
|
-
|
|
12236
|
-
//
|
|
12237
|
-
// Hook methods
|
|
12238
|
-
//
|
|
12239
|
-
|
|
12240
|
-
/**
|
|
12241
|
-
* Post linking method
|
|
12242
|
-
*/
|
|
12243
|
-
function postLink() {
|
|
12244
|
-
// Bind DOM-related preventDropdownCutOff method to component's controller
|
|
12245
|
-
PreventDropdownCutOffService.preventDropdownCutOff($element, '.three-dot-menu');
|
|
12246
|
-
}
|
|
12247
|
-
|
|
12248
|
-
/**
|
|
12249
|
-
* On changes hook method.
|
|
12250
|
-
* @param {Object} changes
|
|
12251
|
-
*/
|
|
12252
|
-
function onChanges(changes) {
|
|
12253
|
-
if (angular.isDefined(changes.version)) {
|
|
12254
|
-
ctrl.variables = lodash.chain(ctrl.version).get('spec.env', []).map(function (variable) {
|
|
12255
|
-
variable.ui = {
|
|
12256
|
-
editModeActive: false,
|
|
12257
|
-
isFormValid: false,
|
|
12258
|
-
name: 'variable'
|
|
12259
|
-
};
|
|
12260
|
-
return variable;
|
|
12261
|
-
}).value();
|
|
12262
|
-
ctrl.isOnlyValueTypeInputs = !lodash.some(ctrl.variables, 'valueFrom');
|
|
12263
|
-
$timeout(function () {
|
|
12264
|
-
if (ctrl.environmentVariablesForm.$invalid) {
|
|
12265
|
-
ctrl.environmentVariablesForm.$setSubmitted();
|
|
12266
|
-
$rootScope.$broadcast('change-state-deploy-button', {
|
|
12267
|
-
component: 'variable',
|
|
12268
|
-
isDisabled: true
|
|
12269
|
-
});
|
|
12270
|
-
}
|
|
12271
|
-
});
|
|
12272
|
-
}
|
|
12273
|
-
}
|
|
12274
|
-
|
|
12275
|
-
//
|
|
12276
|
-
// Public methods
|
|
12277
|
-
//
|
|
12278
|
-
|
|
12279
|
-
/**
|
|
12280
|
-
* Adds new variable
|
|
12281
|
-
*/
|
|
12282
|
-
function addNewVariable(event) {
|
|
12283
|
-
if (ctrl.isFunctionDeploying()) {
|
|
12284
|
-
return;
|
|
12285
|
-
}
|
|
12286
|
-
$timeout(function () {
|
|
12287
|
-
if (ctrl.variables.length < 1 || lodash.chain(ctrl.variables).last().get('ui.isFormValid', true).value()) {
|
|
12288
|
-
ctrl.variables.push({
|
|
12289
|
-
name: '',
|
|
12290
|
-
value: '',
|
|
12291
|
-
ui: {
|
|
12292
|
-
editModeActive: true,
|
|
12293
|
-
isFormValid: false,
|
|
12294
|
-
name: 'variable'
|
|
12295
|
-
}
|
|
12296
|
-
});
|
|
12297
|
-
ctrl.environmentVariablesForm.$setPristine();
|
|
12298
|
-
$rootScope.$broadcast('change-state-deploy-button', {
|
|
12299
|
-
component: 'variable',
|
|
12300
|
-
isDisabled: true
|
|
12301
|
-
});
|
|
12302
|
-
event.stopPropagation();
|
|
12303
|
-
}
|
|
12304
|
-
}, 50);
|
|
12305
|
-
}
|
|
12306
|
-
|
|
12307
|
-
/**
|
|
12308
|
-
* Handler on specific action type
|
|
12309
|
-
* @param {string} actionType
|
|
12310
|
-
* @param {number} index - index of variable in array
|
|
12311
|
-
*/
|
|
12312
|
-
function handleAction(actionType, index) {
|
|
12313
|
-
if (actionType === 'delete') {
|
|
12314
|
-
ctrl.variables.splice(index, 1);
|
|
12315
|
-
$timeout(function () {
|
|
12316
|
-
updateVariables();
|
|
12317
|
-
});
|
|
12318
|
-
}
|
|
12319
|
-
}
|
|
12320
|
-
|
|
12321
|
-
/**
|
|
12322
|
-
* Changes data of specific variable
|
|
12323
|
-
* @param {Object} variable
|
|
12324
|
-
* @param {number} index
|
|
12325
|
-
*/
|
|
12326
|
-
function onChangeData(variable, index) {
|
|
12327
|
-
ctrl.variables[index] = lodash.cloneDeep(variable);
|
|
12328
|
-
updateVariables();
|
|
12329
|
-
}
|
|
12330
|
-
|
|
12331
|
-
/**
|
|
12332
|
-
* Handles a change of variables type
|
|
12333
|
-
* @param {Object} newType
|
|
12334
|
-
* @param {number} index
|
|
12335
|
-
*/
|
|
12336
|
-
function onChangeType(newType, index) {
|
|
12337
|
-
var variablesCopy = angular.copy(ctrl.variables);
|
|
12338
|
-
variablesCopy[index] = newType.id === 'value' ? {} : {
|
|
12339
|
-
valueFrom: {}
|
|
12340
|
-
};
|
|
12341
|
-
ctrl.isOnlyValueTypeInputs = !lodash.some(variablesCopy, 'valueFrom');
|
|
12342
|
-
if (newType.id === 'secret') {
|
|
12343
|
-
var form = lodash.get(ctrl.environmentVariablesForm, '$$controls[' + index + '][value-key]');
|
|
12344
|
-
if (angular.isDefined(form)) {
|
|
12345
|
-
lodash.forEach(ctrl.validationRules.configmapKey, function (rule) {
|
|
12346
|
-
form.$setValidity(rule.name, true);
|
|
12347
|
-
});
|
|
12348
|
-
}
|
|
12349
|
-
}
|
|
12350
|
-
}
|
|
12351
|
-
|
|
12352
|
-
//
|
|
12353
|
-
// Private methods
|
|
12354
|
-
//
|
|
12355
|
-
|
|
12356
|
-
/**
|
|
12357
|
-
* Updates function's variables
|
|
12358
|
-
*/
|
|
12359
|
-
function updateVariables() {
|
|
12360
|
-
var isFormValid = true;
|
|
12361
|
-
var variables = lodash.map(ctrl.variables, function (variable) {
|
|
12362
|
-
if (!variable.ui.isFormValid) {
|
|
12363
|
-
isFormValid = false;
|
|
12364
|
-
}
|
|
12365
|
-
return lodash.omit(variable, 'ui');
|
|
12366
|
-
});
|
|
12367
|
-
|
|
12368
|
-
// since uniqueness validation rule of some fields is dependent on the entire environment variable list,
|
|
12369
|
-
// then whenever the list is modified - the rest of the environment variables need to be re-validated
|
|
12370
|
-
FormValidationService.validateAllFields(ctrl.environmentVariablesForm);
|
|
12371
|
-
$rootScope.$broadcast('change-state-deploy-button', {
|
|
12372
|
-
component: 'variable',
|
|
12373
|
-
isDisabled: !isFormValid
|
|
12374
|
-
});
|
|
12375
|
-
lodash.set(ctrl.version, 'spec.env', variables);
|
|
12376
|
-
ctrl.onChangeCallback();
|
|
12377
|
-
}
|
|
12378
|
-
|
|
12379
|
-
/**
|
|
12380
|
-
* Determines `uniqueness` validation for `Key` and `ConfigMap key` fields
|
|
12381
|
-
* @param {string} path
|
|
12382
|
-
* @param {string} value
|
|
12383
|
-
*/
|
|
12384
|
-
function validateUniqueness(path, value) {
|
|
12385
|
-
return lodash.filter(ctrl.variables, [path, value]).length === 1;
|
|
12386
|
-
}
|
|
12387
|
-
}
|
|
12388
|
-
})();
|
|
12389
|
-
"use strict";
|
|
12390
|
-
|
|
12391
12243
|
(function () {
|
|
12392
12244
|
'use strict';
|
|
12393
12245
|
|
|
@@ -12822,8 +12674,167 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
12822
12674
|
(function () {
|
|
12823
12675
|
'use strict';
|
|
12824
12676
|
|
|
12825
|
-
|
|
12826
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
12677
|
+
NclTestEventsLogsController.$inject = ["lodash"];
|
|
12678
|
+
angular.module('iguazio.dashboard-controls').component('nclTestEventsLogs', {
|
|
12679
|
+
bindings: {
|
|
12680
|
+
logs: '<'
|
|
12681
|
+
},
|
|
12682
|
+
templateUrl: 'nuclio/functions/version/version-code/function-event-pane/test-events-logs/test-events-logs.tpl.html',
|
|
12683
|
+
controller: NclTestEventsLogsController
|
|
12684
|
+
});
|
|
12685
|
+
function NclTestEventsLogsController(lodash) {
|
|
12686
|
+
var ctrl = this;
|
|
12687
|
+
var REQUIRED_PARAMETERS = ['level', 'name', 'time', 'err', 'message', 'ui'];
|
|
12688
|
+
ctrl.$onInit = onInit;
|
|
12689
|
+
ctrl.collapseRow = collapseRow;
|
|
12690
|
+
ctrl.expandAllRows = expandAllRows;
|
|
12691
|
+
ctrl.getLevelIconClass = getLevelIconClass;
|
|
12692
|
+
ctrl.getParameters = getParameters;
|
|
12693
|
+
ctrl.hasAdditionalParameters = hasAdditionalParameters;
|
|
12694
|
+
|
|
12695
|
+
//
|
|
12696
|
+
// Hook method
|
|
12697
|
+
//
|
|
12698
|
+
|
|
12699
|
+
/**
|
|
12700
|
+
* Initialization method
|
|
12701
|
+
*/
|
|
12702
|
+
function onInit() {
|
|
12703
|
+
lodash.forEach(ctrl.logs, function (log) {
|
|
12704
|
+
lodash.set(log, 'ui.collapsed', true);
|
|
12705
|
+
});
|
|
12706
|
+
}
|
|
12707
|
+
|
|
12708
|
+
//
|
|
12709
|
+
// Public methods
|
|
12710
|
+
//
|
|
12711
|
+
|
|
12712
|
+
/**
|
|
12713
|
+
* Collapse/expand row depending on `collapse` value
|
|
12714
|
+
* @param {Object} log
|
|
12715
|
+
* @param {boolean} collapse
|
|
12716
|
+
*/
|
|
12717
|
+
function collapseRow(log, collapse) {
|
|
12718
|
+
lodash.set(log, 'ui.collapsed', collapse);
|
|
12719
|
+
}
|
|
12720
|
+
|
|
12721
|
+
/**
|
|
12722
|
+
* Collapse/expand all rows depending on `expand` value
|
|
12723
|
+
* @param {boolean} expand
|
|
12724
|
+
*/
|
|
12725
|
+
function expandAllRows(expand) {
|
|
12726
|
+
lodash.forEach(ctrl.logs, function (log) {
|
|
12727
|
+
lodash.set(log, 'ui.collapsed', !expand);
|
|
12728
|
+
});
|
|
12729
|
+
}
|
|
12730
|
+
|
|
12731
|
+
/**
|
|
12732
|
+
* Gets css class depending on log.level
|
|
12733
|
+
* @param {Object} log
|
|
12734
|
+
* @returns {string}
|
|
12735
|
+
*/
|
|
12736
|
+
function getLevelIconClass(log) {
|
|
12737
|
+
return log.level === 'debug' ? 'ncl-icon-debug' : log.level === 'info' ? 'igz-icon-info-round' : log.level === 'warn' ? 'igz-icon-warning' : log.level === 'error' ? 'igz-icon-cancel-path' : '';
|
|
12738
|
+
}
|
|
12739
|
+
|
|
12740
|
+
/**
|
|
12741
|
+
* Gets additional parameters
|
|
12742
|
+
* @param {Object} log
|
|
12743
|
+
* @returns {Object}
|
|
12744
|
+
*/
|
|
12745
|
+
function getParameters(log) {
|
|
12746
|
+
return lodash.omit(log, REQUIRED_PARAMETERS);
|
|
12747
|
+
}
|
|
12748
|
+
|
|
12749
|
+
/**
|
|
12750
|
+
* Checks if log has additional parameters
|
|
12751
|
+
* @param {Object} log
|
|
12752
|
+
* @returns {boolean}
|
|
12753
|
+
*/
|
|
12754
|
+
function hasAdditionalParameters(log) {
|
|
12755
|
+
return !lodash.isEmpty(getParameters(log));
|
|
12756
|
+
}
|
|
12757
|
+
}
|
|
12758
|
+
})();
|
|
12759
|
+
"use strict";
|
|
12760
|
+
|
|
12761
|
+
(function () {
|
|
12762
|
+
'use strict';
|
|
12763
|
+
|
|
12764
|
+
NclTestEventsNavigationTabsController.$inject = ["$i18next", "i18next"];
|
|
12765
|
+
angular.module('iguazio.dashboard-controls').component('nclTestEventsNavigationTabs', {
|
|
12766
|
+
bindings: {
|
|
12767
|
+
activeTab: '<',
|
|
12768
|
+
tabItems: '<',
|
|
12769
|
+
selectedLogLevel: '<?',
|
|
12770
|
+
onChangeActiveTab: '&',
|
|
12771
|
+
onChangeLogLevel: '&?'
|
|
12772
|
+
},
|
|
12773
|
+
templateUrl: 'nuclio/functions/version/version-code/function-event-pane/test-events-navigation-tabs/test-events-navigation-tabs.tpl.html',
|
|
12774
|
+
controller: NclTestEventsNavigationTabsController
|
|
12775
|
+
});
|
|
12776
|
+
function NclTestEventsNavigationTabsController($i18next, i18next) {
|
|
12777
|
+
var ctrl = this;
|
|
12778
|
+
var lng = i18next.language;
|
|
12779
|
+
ctrl.logLevelValues = [{
|
|
12780
|
+
id: 'error',
|
|
12781
|
+
name: $i18next.t('common:ERROR', {
|
|
12782
|
+
lng: lng
|
|
12783
|
+
}),
|
|
12784
|
+
visible: true
|
|
12785
|
+
}, {
|
|
12786
|
+
id: 'warn',
|
|
12787
|
+
name: $i18next.t('common:WARNING', {
|
|
12788
|
+
lng: lng
|
|
12789
|
+
}),
|
|
12790
|
+
visible: true
|
|
12791
|
+
}, {
|
|
12792
|
+
id: 'info',
|
|
12793
|
+
name: $i18next.t('common:INFO', {
|
|
12794
|
+
lng: lng
|
|
12795
|
+
}),
|
|
12796
|
+
visible: true
|
|
12797
|
+
}, {
|
|
12798
|
+
id: 'debug',
|
|
12799
|
+
name: $i18next.t('common:DEBUG', {
|
|
12800
|
+
lng: lng
|
|
12801
|
+
}),
|
|
12802
|
+
visible: true
|
|
12803
|
+
}];
|
|
12804
|
+
ctrl.changeActiveTab = changeActiveTab;
|
|
12805
|
+
ctrl.isActiveTab = isActiveTab;
|
|
12806
|
+
|
|
12807
|
+
//
|
|
12808
|
+
// Public methods
|
|
12809
|
+
//
|
|
12810
|
+
|
|
12811
|
+
/**
|
|
12812
|
+
* Changes active nav tab
|
|
12813
|
+
* @param {Object} item - current status
|
|
12814
|
+
*/
|
|
12815
|
+
function changeActiveTab(item) {
|
|
12816
|
+
ctrl.activeTab = item;
|
|
12817
|
+
ctrl.onChangeActiveTab({
|
|
12818
|
+
activeTab: item
|
|
12819
|
+
});
|
|
12820
|
+
}
|
|
12821
|
+
|
|
12822
|
+
/**
|
|
12823
|
+
* Checks if it is an active tab
|
|
12824
|
+
* @param {Object} item - current tab
|
|
12825
|
+
*/
|
|
12826
|
+
function isActiveTab(item) {
|
|
12827
|
+
return ctrl.activeTab.id === item.id;
|
|
12828
|
+
}
|
|
12829
|
+
}
|
|
12830
|
+
})();
|
|
12831
|
+
"use strict";
|
|
12832
|
+
|
|
12833
|
+
(function () {
|
|
12834
|
+
'use strict';
|
|
12835
|
+
|
|
12836
|
+
NclVersionConfigurationBuildDialogController.$inject = ["EventHelperService"];
|
|
12837
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationBuildDialog', {
|
|
12827
12838
|
bindings: {
|
|
12828
12839
|
closeDialog: '&'
|
|
12829
12840
|
},
|
|
@@ -18232,38 +18243,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
18232
18243
|
})();
|
|
18233
18244
|
"use strict";
|
|
18234
18245
|
|
|
18235
|
-
(function () {
|
|
18236
|
-
'use strict';
|
|
18237
|
-
|
|
18238
|
-
NclFunctionConfigDialogController.$inject = ["ExportService", "MaskService"];
|
|
18239
|
-
angular.module('iguazio.dashboard-controls').component('nclFunctionConfigDialog', {
|
|
18240
|
-
bindings: {
|
|
18241
|
-
closeDialog: '&',
|
|
18242
|
-
function: '<'
|
|
18243
|
-
},
|
|
18244
|
-
templateUrl: 'nuclio/common/components/function-config-dialog/function-config-dialog.tpl.html',
|
|
18245
|
-
controller: NclFunctionConfigDialogController
|
|
18246
|
-
});
|
|
18247
|
-
function NclFunctionConfigDialogController(ExportService, MaskService) {
|
|
18248
|
-
var ctrl = this;
|
|
18249
|
-
ctrl.$onInit = onInit;
|
|
18250
|
-
|
|
18251
|
-
//
|
|
18252
|
-
// Hook methods
|
|
18253
|
-
//
|
|
18254
|
-
|
|
18255
|
-
/**
|
|
18256
|
-
* Initialization method
|
|
18257
|
-
*/
|
|
18258
|
-
function onInit() {
|
|
18259
|
-
var functionWithMask = MaskService.getObjectWithMask(ctrl.function);
|
|
18260
|
-
ctrl.title = ctrl.function.metadata.name + ' - configuration';
|
|
18261
|
-
ctrl.sourceCode = ExportService.getFunctionConfig(functionWithMask);
|
|
18262
|
-
}
|
|
18263
|
-
}
|
|
18264
|
-
})();
|
|
18265
|
-
"use strict";
|
|
18266
|
-
|
|
18267
18246
|
(function () {
|
|
18268
18247
|
'use strict';
|
|
18269
18248
|
|
|
@@ -19354,6 +19333,38 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
19354
19333
|
})();
|
|
19355
19334
|
"use strict";
|
|
19356
19335
|
|
|
19336
|
+
(function () {
|
|
19337
|
+
'use strict';
|
|
19338
|
+
|
|
19339
|
+
NclFunctionConfigDialogController.$inject = ["ExportService", "MaskService"];
|
|
19340
|
+
angular.module('iguazio.dashboard-controls').component('nclFunctionConfigDialog', {
|
|
19341
|
+
bindings: {
|
|
19342
|
+
closeDialog: '&',
|
|
19343
|
+
function: '<'
|
|
19344
|
+
},
|
|
19345
|
+
templateUrl: 'nuclio/common/components/function-config-dialog/function-config-dialog.tpl.html',
|
|
19346
|
+
controller: NclFunctionConfigDialogController
|
|
19347
|
+
});
|
|
19348
|
+
function NclFunctionConfigDialogController(ExportService, MaskService) {
|
|
19349
|
+
var ctrl = this;
|
|
19350
|
+
ctrl.$onInit = onInit;
|
|
19351
|
+
|
|
19352
|
+
//
|
|
19353
|
+
// Hook methods
|
|
19354
|
+
//
|
|
19355
|
+
|
|
19356
|
+
/**
|
|
19357
|
+
* Initialization method
|
|
19358
|
+
*/
|
|
19359
|
+
function onInit() {
|
|
19360
|
+
var functionWithMask = MaskService.getObjectWithMask(ctrl.function);
|
|
19361
|
+
ctrl.title = ctrl.function.metadata.name + ' - configuration';
|
|
19362
|
+
ctrl.sourceCode = ExportService.getFunctionConfig(functionWithMask);
|
|
19363
|
+
}
|
|
19364
|
+
}
|
|
19365
|
+
})();
|
|
19366
|
+
"use strict";
|
|
19367
|
+
|
|
19357
19368
|
(function () {
|
|
19358
19369
|
'use strict';
|
|
19359
19370
|
|
|
@@ -20809,39 +20820,86 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
20809
20820
|
(function () {
|
|
20810
20821
|
'use strict';
|
|
20811
20822
|
|
|
20812
|
-
|
|
20813
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
20823
|
+
NclVersionConfigurationController.$inject = ["lodash", "ConfigService", "VersionHelperService"];
|
|
20824
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfiguration', {
|
|
20814
20825
|
bindings: {
|
|
20815
20826
|
version: '<',
|
|
20816
20827
|
isFunctionDeploying: '&'
|
|
20817
20828
|
},
|
|
20818
|
-
templateUrl: 'nuclio/functions/version/version-
|
|
20819
|
-
controller:
|
|
20829
|
+
templateUrl: 'nuclio/functions/version/version-configuration/version-configuration.tpl.html',
|
|
20830
|
+
controller: NclVersionConfigurationController
|
|
20820
20831
|
});
|
|
20821
|
-
function
|
|
20832
|
+
function NclVersionConfigurationController(lodash, ConfigService, VersionHelperService) {
|
|
20822
20833
|
var ctrl = this;
|
|
20823
|
-
var scrollContainer = null;
|
|
20824
|
-
var previousEntryType = null;
|
|
20825
|
-
var lng = i18next.language;
|
|
20826
|
-
ctrl.githubToken = '';
|
|
20827
|
-
ctrl.layout = {
|
|
20828
|
-
collapsed: false
|
|
20829
|
-
};
|
|
20830
20834
|
ctrl.scrollConfig = {
|
|
20831
|
-
axis: '
|
|
20835
|
+
axis: 'y',
|
|
20832
20836
|
advanced: {
|
|
20833
|
-
autoScrollOnFocus: false
|
|
20837
|
+
autoScrollOnFocus: false,
|
|
20838
|
+
updateOnContentResize: true
|
|
20834
20839
|
}
|
|
20835
20840
|
};
|
|
20836
|
-
ctrl.
|
|
20837
|
-
|
|
20838
|
-
|
|
20839
|
-
|
|
20840
|
-
|
|
20841
|
-
|
|
20842
|
-
|
|
20843
|
-
|
|
20844
|
-
|
|
20841
|
+
ctrl.isDemoMode = ConfigService.isDemoMode;
|
|
20842
|
+
ctrl.isRuntimeBlockVisible = isRuntimeBlockVisible;
|
|
20843
|
+
ctrl.onConfigurationChangeCallback = onConfigurationChangeCallback;
|
|
20844
|
+
|
|
20845
|
+
//
|
|
20846
|
+
// Public methods
|
|
20847
|
+
//
|
|
20848
|
+
|
|
20849
|
+
/**
|
|
20850
|
+
* Checks if `Runtime Attributes` block is visible
|
|
20851
|
+
* @returns {boolean}
|
|
20852
|
+
*/
|
|
20853
|
+
function isRuntimeBlockVisible() {
|
|
20854
|
+
return lodash.includes(['shell', 'java'], lodash.get(ctrl.version, 'spec.runtime'));
|
|
20855
|
+
}
|
|
20856
|
+
|
|
20857
|
+
/**
|
|
20858
|
+
* Checks if version's configuration was changed
|
|
20859
|
+
*/
|
|
20860
|
+
function onConfigurationChangeCallback() {
|
|
20861
|
+
VersionHelperService.updateIsVersionChanged(ctrl.version);
|
|
20862
|
+
}
|
|
20863
|
+
}
|
|
20864
|
+
})();
|
|
20865
|
+
"use strict";
|
|
20866
|
+
|
|
20867
|
+
(function () {
|
|
20868
|
+
'use strict';
|
|
20869
|
+
|
|
20870
|
+
NclVersionCodeController.$inject = ["$element", "$rootScope", "$scope", "$timeout", "$window", "$i18next", "i18next", "lodash", "Base64", "ConfigService", "DialogsService", "VersionHelperService"];
|
|
20871
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionCode', {
|
|
20872
|
+
bindings: {
|
|
20873
|
+
version: '<',
|
|
20874
|
+
isFunctionDeploying: '&'
|
|
20875
|
+
},
|
|
20876
|
+
templateUrl: 'nuclio/functions/version/version-code/version-code.tpl.html',
|
|
20877
|
+
controller: NclVersionCodeController
|
|
20878
|
+
});
|
|
20879
|
+
function NclVersionCodeController($element, $rootScope, $scope, $timeout, $window, $i18next, i18next, lodash, Base64, ConfigService, DialogsService, VersionHelperService) {
|
|
20880
|
+
var ctrl = this;
|
|
20881
|
+
var scrollContainer = null;
|
|
20882
|
+
var previousEntryType = null;
|
|
20883
|
+
var lng = i18next.language;
|
|
20884
|
+
ctrl.githubToken = '';
|
|
20885
|
+
ctrl.layout = {
|
|
20886
|
+
collapsed: false
|
|
20887
|
+
};
|
|
20888
|
+
ctrl.scrollConfig = {
|
|
20889
|
+
axis: 'xy',
|
|
20890
|
+
advanced: {
|
|
20891
|
+
autoScrollOnFocus: false
|
|
20892
|
+
}
|
|
20893
|
+
};
|
|
20894
|
+
ctrl.scrollConfigHorizontal = {
|
|
20895
|
+
axis: 'x',
|
|
20896
|
+
advanced: {
|
|
20897
|
+
autoScrollOnFocus: false
|
|
20898
|
+
},
|
|
20899
|
+
callbacks: {
|
|
20900
|
+
onCreate: function onCreate() {
|
|
20901
|
+
scrollContainer = this.querySelector('.mCSB_container');
|
|
20902
|
+
scrollContainer.style.height = '100%';
|
|
20845
20903
|
}
|
|
20846
20904
|
}
|
|
20847
20905
|
};
|
|
@@ -21380,122 +21438,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
21380
21438
|
})();
|
|
21381
21439
|
"use strict";
|
|
21382
21440
|
|
|
21383
|
-
(function () {
|
|
21384
|
-
'use strict';
|
|
21385
|
-
|
|
21386
|
-
NclVersionConfigurationController.$inject = ["lodash", "ConfigService", "VersionHelperService"];
|
|
21387
|
-
angular.module('iguazio.dashboard-controls').component('nclVersionConfiguration', {
|
|
21388
|
-
bindings: {
|
|
21389
|
-
version: '<',
|
|
21390
|
-
isFunctionDeploying: '&'
|
|
21391
|
-
},
|
|
21392
|
-
templateUrl: 'nuclio/functions/version/version-configuration/version-configuration.tpl.html',
|
|
21393
|
-
controller: NclVersionConfigurationController
|
|
21394
|
-
});
|
|
21395
|
-
function NclVersionConfigurationController(lodash, ConfigService, VersionHelperService) {
|
|
21396
|
-
var ctrl = this;
|
|
21397
|
-
ctrl.scrollConfig = {
|
|
21398
|
-
axis: 'y',
|
|
21399
|
-
advanced: {
|
|
21400
|
-
autoScrollOnFocus: false,
|
|
21401
|
-
updateOnContentResize: true
|
|
21402
|
-
}
|
|
21403
|
-
};
|
|
21404
|
-
ctrl.isDemoMode = ConfigService.isDemoMode;
|
|
21405
|
-
ctrl.isRuntimeBlockVisible = isRuntimeBlockVisible;
|
|
21406
|
-
ctrl.onConfigurationChangeCallback = onConfigurationChangeCallback;
|
|
21407
|
-
|
|
21408
|
-
//
|
|
21409
|
-
// Public methods
|
|
21410
|
-
//
|
|
21411
|
-
|
|
21412
|
-
/**
|
|
21413
|
-
* Checks if `Runtime Attributes` block is visible
|
|
21414
|
-
* @returns {boolean}
|
|
21415
|
-
*/
|
|
21416
|
-
function isRuntimeBlockVisible() {
|
|
21417
|
-
return lodash.includes(['shell', 'java'], lodash.get(ctrl.version, 'spec.runtime'));
|
|
21418
|
-
}
|
|
21419
|
-
|
|
21420
|
-
/**
|
|
21421
|
-
* Checks if version's configuration was changed
|
|
21422
|
-
*/
|
|
21423
|
-
function onConfigurationChangeCallback() {
|
|
21424
|
-
VersionHelperService.updateIsVersionChanged(ctrl.version);
|
|
21425
|
-
}
|
|
21426
|
-
}
|
|
21427
|
-
})();
|
|
21428
|
-
"use strict";
|
|
21429
|
-
|
|
21430
|
-
(function () {
|
|
21431
|
-
'use strict';
|
|
21432
|
-
|
|
21433
|
-
NclVersionMonitoringController.$inject = ["$rootScope", "$timeout", "lodash", "FunctionsService"];
|
|
21434
|
-
angular.module('iguazio.dashboard-controls').component('nclVersionMonitoring', {
|
|
21435
|
-
bindings: {
|
|
21436
|
-
version: '<'
|
|
21437
|
-
},
|
|
21438
|
-
templateUrl: 'nuclio/functions/version/version-monitoring/version-monitoring.tpl.html',
|
|
21439
|
-
controller: NclVersionMonitoringController
|
|
21440
|
-
});
|
|
21441
|
-
function NclVersionMonitoringController($rootScope, $timeout, lodash, FunctionsService) {
|
|
21442
|
-
var ctrl = this;
|
|
21443
|
-
ctrl.scrollConfig = {
|
|
21444
|
-
advanced: {
|
|
21445
|
-
updateOnContentResize: true
|
|
21446
|
-
}
|
|
21447
|
-
};
|
|
21448
|
-
ctrl.loggerScrollConfig = {
|
|
21449
|
-
advanced: {
|
|
21450
|
-
updateOnContentResize: true
|
|
21451
|
-
},
|
|
21452
|
-
theme: 'light-thin'
|
|
21453
|
-
};
|
|
21454
|
-
ctrl.rowIsCollapsed = {
|
|
21455
|
-
buildLog: false,
|
|
21456
|
-
errorLog: false
|
|
21457
|
-
};
|
|
21458
|
-
ctrl.$onInit = onInit;
|
|
21459
|
-
ctrl.checkIsErrorState = checkIsErrorState;
|
|
21460
|
-
ctrl.onRowCollapse = onRowCollapse;
|
|
21461
|
-
|
|
21462
|
-
//
|
|
21463
|
-
// Hook methods
|
|
21464
|
-
//
|
|
21465
|
-
|
|
21466
|
-
/**
|
|
21467
|
-
* Initialization method
|
|
21468
|
-
*/
|
|
21469
|
-
function onInit() {
|
|
21470
|
-
ctrl.isFunctionDeploying = lodash.partial(FunctionsService.isFunctionDeploying, ctrl.version);
|
|
21471
|
-
}
|
|
21472
|
-
|
|
21473
|
-
//
|
|
21474
|
-
// Public methods
|
|
21475
|
-
//
|
|
21476
|
-
|
|
21477
|
-
/**
|
|
21478
|
-
* Checks if current version status is `error`
|
|
21479
|
-
* @returns {boolean}
|
|
21480
|
-
*/
|
|
21481
|
-
function checkIsErrorState() {
|
|
21482
|
-
return lodash.includes(['error', 'unhealthy'], lodash.get(ctrl.version.status, 'state'));
|
|
21483
|
-
}
|
|
21484
|
-
|
|
21485
|
-
/**
|
|
21486
|
-
* Called when row is collapsed/expanded
|
|
21487
|
-
* @param {string} row - name of expanded/collapsed row
|
|
21488
|
-
*/
|
|
21489
|
-
function onRowCollapse(row) {
|
|
21490
|
-
ctrl.rowIsCollapsed[row] = !ctrl.rowIsCollapsed[row];
|
|
21491
|
-
$timeout(function () {
|
|
21492
|
-
$rootScope.$broadcast('igzWatchWindowResize::resize');
|
|
21493
|
-
}, 350);
|
|
21494
|
-
}
|
|
21495
|
-
}
|
|
21496
|
-
})();
|
|
21497
|
-
"use strict";
|
|
21498
|
-
|
|
21499
21441
|
(function () {
|
|
21500
21442
|
'use strict';
|
|
21501
21443
|
|
|
@@ -21912,6 +21854,75 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
21912
21854
|
})();
|
|
21913
21855
|
"use strict";
|
|
21914
21856
|
|
|
21857
|
+
(function () {
|
|
21858
|
+
'use strict';
|
|
21859
|
+
|
|
21860
|
+
NclVersionMonitoringController.$inject = ["$rootScope", "$timeout", "lodash", "FunctionsService"];
|
|
21861
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionMonitoring', {
|
|
21862
|
+
bindings: {
|
|
21863
|
+
version: '<'
|
|
21864
|
+
},
|
|
21865
|
+
templateUrl: 'nuclio/functions/version/version-monitoring/version-monitoring.tpl.html',
|
|
21866
|
+
controller: NclVersionMonitoringController
|
|
21867
|
+
});
|
|
21868
|
+
function NclVersionMonitoringController($rootScope, $timeout, lodash, FunctionsService) {
|
|
21869
|
+
var ctrl = this;
|
|
21870
|
+
ctrl.scrollConfig = {
|
|
21871
|
+
advanced: {
|
|
21872
|
+
updateOnContentResize: true
|
|
21873
|
+
}
|
|
21874
|
+
};
|
|
21875
|
+
ctrl.loggerScrollConfig = {
|
|
21876
|
+
advanced: {
|
|
21877
|
+
updateOnContentResize: true
|
|
21878
|
+
},
|
|
21879
|
+
theme: 'light-thin'
|
|
21880
|
+
};
|
|
21881
|
+
ctrl.rowIsCollapsed = {
|
|
21882
|
+
buildLog: false,
|
|
21883
|
+
errorLog: false
|
|
21884
|
+
};
|
|
21885
|
+
ctrl.$onInit = onInit;
|
|
21886
|
+
ctrl.checkIsErrorState = checkIsErrorState;
|
|
21887
|
+
ctrl.onRowCollapse = onRowCollapse;
|
|
21888
|
+
|
|
21889
|
+
//
|
|
21890
|
+
// Hook methods
|
|
21891
|
+
//
|
|
21892
|
+
|
|
21893
|
+
/**
|
|
21894
|
+
* Initialization method
|
|
21895
|
+
*/
|
|
21896
|
+
function onInit() {
|
|
21897
|
+
ctrl.isFunctionDeploying = lodash.partial(FunctionsService.isFunctionDeploying, ctrl.version);
|
|
21898
|
+
}
|
|
21899
|
+
|
|
21900
|
+
//
|
|
21901
|
+
// Public methods
|
|
21902
|
+
//
|
|
21903
|
+
|
|
21904
|
+
/**
|
|
21905
|
+
* Checks if current version status is `error`
|
|
21906
|
+
* @returns {boolean}
|
|
21907
|
+
*/
|
|
21908
|
+
function checkIsErrorState() {
|
|
21909
|
+
return lodash.includes(['error', 'unhealthy'], lodash.get(ctrl.version.status, 'state'));
|
|
21910
|
+
}
|
|
21911
|
+
|
|
21912
|
+
/**
|
|
21913
|
+
* Called when row is collapsed/expanded
|
|
21914
|
+
* @param {string} row - name of expanded/collapsed row
|
|
21915
|
+
*/
|
|
21916
|
+
function onRowCollapse(row) {
|
|
21917
|
+
ctrl.rowIsCollapsed[row] = !ctrl.rowIsCollapsed[row];
|
|
21918
|
+
$timeout(function () {
|
|
21919
|
+
$rootScope.$broadcast('igzWatchWindowResize::resize');
|
|
21920
|
+
}, 350);
|
|
21921
|
+
}
|
|
21922
|
+
}
|
|
21923
|
+
})();
|
|
21924
|
+
"use strict";
|
|
21925
|
+
|
|
21915
21926
|
(function () {
|
|
21916
21927
|
'use strict';
|
|
21917
21928
|
|
|
@@ -22380,20 +22391,222 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
22380
22391
|
})();
|
|
22381
22392
|
"use strict";
|
|
22382
22393
|
|
|
22383
|
-
/* eslint max-statements: ["error", 100] */
|
|
22384
22394
|
(function () {
|
|
22385
22395
|
'use strict';
|
|
22386
22396
|
|
|
22387
|
-
|
|
22388
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
22397
|
+
FunctionImportController.$inject = ["$document", "$rootScope", "$scope", "$state", "$timeout", "$i18next", "i18next", "YAML", "lodash", "DialogsService", "EventHelperService", "FunctionsService", "MaskService", "YamlService"];
|
|
22398
|
+
angular.module('iguazio.dashboard-controls').component('nclFunctionImport', {
|
|
22389
22399
|
bindings: {
|
|
22390
22400
|
project: '<',
|
|
22391
22401
|
projects: '<',
|
|
22392
|
-
toggleSplashScreen: '&',
|
|
22393
22402
|
getFunction: '&',
|
|
22394
|
-
|
|
22403
|
+
toggleSplashScreen: '&',
|
|
22395
22404
|
createNewProject: '<',
|
|
22396
|
-
|
|
22405
|
+
selectedProject: '<'
|
|
22406
|
+
},
|
|
22407
|
+
templateUrl: 'nuclio/common/screens/create-function/function-import/function-import.tpl.html',
|
|
22408
|
+
controller: FunctionImportController
|
|
22409
|
+
});
|
|
22410
|
+
function FunctionImportController($document, $rootScope, $scope, $state, $timeout, $i18next, i18next, YAML, lodash, DialogsService, EventHelperService, FunctionsService, MaskService, YamlService) {
|
|
22411
|
+
var ctrl = this;
|
|
22412
|
+
var importedFunction = null;
|
|
22413
|
+
var file = null;
|
|
22414
|
+
var lng = i18next.language;
|
|
22415
|
+
ctrl.functionImportForm = {};
|
|
22416
|
+
ctrl.sourceCode = null;
|
|
22417
|
+
ctrl.$onInit = onInit;
|
|
22418
|
+
ctrl.$onChanges = onChanges;
|
|
22419
|
+
ctrl.$onDestroy = onDestroy;
|
|
22420
|
+
ctrl.createFunction = createFunction;
|
|
22421
|
+
ctrl.importFunction = importFunction;
|
|
22422
|
+
ctrl.isCreateFunctionAllowed = isCreateFunctionAllowed;
|
|
22423
|
+
ctrl.isProjectsDropDownVisible = isProjectsDropDownVisible;
|
|
22424
|
+
ctrl.onProjectChange = onProjectChange;
|
|
22425
|
+
|
|
22426
|
+
//
|
|
22427
|
+
// Hook methods
|
|
22428
|
+
//
|
|
22429
|
+
|
|
22430
|
+
/**
|
|
22431
|
+
* Initialization function
|
|
22432
|
+
* Adds event listener on file input and when some file is loaded call importFunction()
|
|
22433
|
+
*/
|
|
22434
|
+
function onInit() {
|
|
22435
|
+
$document.on('keypress', createFunction);
|
|
22436
|
+
$document.find('.function-import-input').on('change', importFunction);
|
|
22437
|
+
}
|
|
22438
|
+
|
|
22439
|
+
/**
|
|
22440
|
+
* Bindings changes hook
|
|
22441
|
+
* @param {Object} changes - changed bindings
|
|
22442
|
+
*/
|
|
22443
|
+
function onChanges(changes) {
|
|
22444
|
+
if (angular.isDefined(changes.projects)) {
|
|
22445
|
+
prepareProjects();
|
|
22446
|
+
}
|
|
22447
|
+
}
|
|
22448
|
+
|
|
22449
|
+
/**
|
|
22450
|
+
* Destructor method
|
|
22451
|
+
*/
|
|
22452
|
+
function onDestroy() {
|
|
22453
|
+
$document.off('keypress', createFunction);
|
|
22454
|
+
}
|
|
22455
|
+
|
|
22456
|
+
//
|
|
22457
|
+
// Public methods
|
|
22458
|
+
//
|
|
22459
|
+
|
|
22460
|
+
/**
|
|
22461
|
+
* Callback handler for 'create function' button
|
|
22462
|
+
* Creates function with imported data.
|
|
22463
|
+
*/
|
|
22464
|
+
function createFunction(event) {
|
|
22465
|
+
$timeout(function () {
|
|
22466
|
+
if ((angular.isUndefined(event) || event.keyCode === EventHelperService.ENTER) && ctrl.isCreateFunctionAllowed()) {
|
|
22467
|
+
// create function only when imported file is .yml
|
|
22468
|
+
if (isYamlFile(file.name)) {
|
|
22469
|
+
ctrl.toggleSplashScreen({
|
|
22470
|
+
value: true
|
|
22471
|
+
});
|
|
22472
|
+
ctrl.getFunction({
|
|
22473
|
+
metadata: {
|
|
22474
|
+
name: importedFunction.metadata.name
|
|
22475
|
+
}
|
|
22476
|
+
}).then(function (existingFunction) {
|
|
22477
|
+
ctrl.toggleSplashScreen({
|
|
22478
|
+
value: false
|
|
22479
|
+
});
|
|
22480
|
+
FunctionsService.openFunctionConflictDialog(ctrl.project, importedFunction, existingFunction);
|
|
22481
|
+
}).catch(function (error) {
|
|
22482
|
+
if (error.status === 404) {
|
|
22483
|
+
ctrl.toggleSplashScreen({
|
|
22484
|
+
value: true
|
|
22485
|
+
});
|
|
22486
|
+
lodash.defaults(importedFunction, {
|
|
22487
|
+
metadata: {}
|
|
22488
|
+
});
|
|
22489
|
+
if (lodash.isEmpty(ctrl.project) && ctrl.selectedProject.id !== 'new_project') {
|
|
22490
|
+
ctrl.project = lodash.find(ctrl.projects, ['metadata.name', ctrl.selectedProject.id]);
|
|
22491
|
+
}
|
|
22492
|
+
$state.go('app.project.function.edit.code', {
|
|
22493
|
+
isNewFunction: true,
|
|
22494
|
+
id: ctrl.project.metadata.name,
|
|
22495
|
+
projectId: ctrl.project.metadata.name,
|
|
22496
|
+
projectNamespace: ctrl.project.metadata.namespace,
|
|
22497
|
+
functionId: importedFunction.metadata.name,
|
|
22498
|
+
functionData: importedFunction
|
|
22499
|
+
});
|
|
22500
|
+
}
|
|
22501
|
+
});
|
|
22502
|
+
}
|
|
22503
|
+
}
|
|
22504
|
+
}, 100);
|
|
22505
|
+
}
|
|
22506
|
+
|
|
22507
|
+
/**
|
|
22508
|
+
* Checks permissibility creation of new function.
|
|
22509
|
+
* Checks if source code of function exists into ctrl.sourceCode, and if function import form is valid
|
|
22510
|
+
* @returns {boolean}
|
|
22511
|
+
*/
|
|
22512
|
+
function isCreateFunctionAllowed() {
|
|
22513
|
+
return !lodash.isNil(ctrl.sourceCode) && lodash.isEmpty(ctrl.functionImportForm.$error);
|
|
22514
|
+
}
|
|
22515
|
+
|
|
22516
|
+
/**
|
|
22517
|
+
* Import of selected YAML file from file system and parse it to JS object
|
|
22518
|
+
* @param event
|
|
22519
|
+
*/
|
|
22520
|
+
function importFunction(event) {
|
|
22521
|
+
file = event.target.files[0];
|
|
22522
|
+
var reader = new FileReader();
|
|
22523
|
+
reader.onload = function () {
|
|
22524
|
+
try {
|
|
22525
|
+
importedFunction = YAML.parse(reader.result);
|
|
22526
|
+
if (lodash.has(importedFunction, 'metadata.name')) {
|
|
22527
|
+
ctrl.sourceCode = YamlService.prepareYamlObject(MaskService.getObjectWithMask(importedFunction));
|
|
22528
|
+
$scope.$apply();
|
|
22529
|
+
$rootScope.$broadcast('function-import-source-code', ctrl.sourceCode);
|
|
22530
|
+
} else {
|
|
22531
|
+
throw new Error('invalid yaml');
|
|
22532
|
+
}
|
|
22533
|
+
} catch (error) {
|
|
22534
|
+
DialogsService.alert($i18next.t('common:ERROR_MSG.IMPORT_YAML_FILE', {
|
|
22535
|
+
lng: lng
|
|
22536
|
+
}));
|
|
22537
|
+
}
|
|
22538
|
+
};
|
|
22539
|
+
reader.readAsText(file);
|
|
22540
|
+
}
|
|
22541
|
+
|
|
22542
|
+
/**
|
|
22543
|
+
* Projects drop-down callback.
|
|
22544
|
+
* Sets selected project to function.
|
|
22545
|
+
* @param {Object} item - new selected project
|
|
22546
|
+
*/
|
|
22547
|
+
function onProjectChange(item) {
|
|
22548
|
+
ctrl.project = lodash.find(ctrl.projects, ['metadata.name', item.id]);
|
|
22549
|
+
}
|
|
22550
|
+
|
|
22551
|
+
/**
|
|
22552
|
+
* Hides or shows projects drop-down.
|
|
22553
|
+
* Show drop-down if 'Create Function' screen was reached from 'Projects' screen. Otherwise - hide drop-down
|
|
22554
|
+
* @returns {boolean}
|
|
22555
|
+
*/
|
|
22556
|
+
function isProjectsDropDownVisible() {
|
|
22557
|
+
return $state.current.name === 'app.create-function';
|
|
22558
|
+
}
|
|
22559
|
+
|
|
22560
|
+
//
|
|
22561
|
+
// Private methods
|
|
22562
|
+
//
|
|
22563
|
+
|
|
22564
|
+
/**
|
|
22565
|
+
* Checks if file imported from file system is YAML extension.
|
|
22566
|
+
* Example: 'filename.yml'
|
|
22567
|
+
* @returns {boolean}
|
|
22568
|
+
*/
|
|
22569
|
+
function isYamlFile(filename) {
|
|
22570
|
+
return lodash.includes(filename, '.yml') || lodash.includes(filename, '.yaml');
|
|
22571
|
+
}
|
|
22572
|
+
|
|
22573
|
+
/**
|
|
22574
|
+
* Converts projects for project drop-down.
|
|
22575
|
+
*/
|
|
22576
|
+
function prepareProjects() {
|
|
22577
|
+
var newProject = {
|
|
22578
|
+
id: 'new_project',
|
|
22579
|
+
name: $i18next.t('functions:NEW_PROJECT', {
|
|
22580
|
+
lng: lng
|
|
22581
|
+
})
|
|
22582
|
+
};
|
|
22583
|
+
ctrl.selectedProject = lodash.isNil(ctrl.selectedProject) ? newProject : ctrl.selectedProject;
|
|
22584
|
+
ctrl.projectsList = lodash.chain(ctrl.projects).map(function (project) {
|
|
22585
|
+
return {
|
|
22586
|
+
id: project.metadata.name,
|
|
22587
|
+
name: project.metadata.name
|
|
22588
|
+
};
|
|
22589
|
+
}).sortBy(['name']).value();
|
|
22590
|
+
ctrl.selectedProject = lodash.isEmpty(ctrl.projectsList) ? newProject : ctrl.selectedProject.id !== 'new_project' ? ctrl.selectedProject : /* else */lodash.first(ctrl.projectsList);
|
|
22591
|
+
}
|
|
22592
|
+
}
|
|
22593
|
+
})();
|
|
22594
|
+
"use strict";
|
|
22595
|
+
|
|
22596
|
+
/* eslint max-statements: ["error", 100] */
|
|
22597
|
+
(function () {
|
|
22598
|
+
'use strict';
|
|
22599
|
+
|
|
22600
|
+
FunctionFromTemplateController.$inject = ["$element", "$window", "$scope", "$state", "$timeout", "$i18next", "i18next", "lodash", "ngDialog", "DialogsService", "FunctionsService", "ValidationService"];
|
|
22601
|
+
angular.module('iguazio.dashboard-controls').component('nclFunctionFromTemplate', {
|
|
22602
|
+
bindings: {
|
|
22603
|
+
project: '<',
|
|
22604
|
+
projects: '<',
|
|
22605
|
+
toggleSplashScreen: '&',
|
|
22606
|
+
getFunction: '&',
|
|
22607
|
+
getFunctionTemplates: '&',
|
|
22608
|
+
createNewProject: '<',
|
|
22609
|
+
renderTemplate: '&',
|
|
22397
22610
|
selectedProject: '<'
|
|
22398
22611
|
},
|
|
22399
22612
|
templateUrl: 'nuclio/common/screens/create-function/function-from-template/function-from-template.tpl.html',
|
|
@@ -22706,322 +22919,92 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
22706
22919
|
}
|
|
22707
22920
|
|
|
22708
22921
|
/**
|
|
22709
|
-
* Init data for pagination
|
|
22710
|
-
*/
|
|
22711
|
-
function initPagination() {
|
|
22712
|
-
ctrl.page = {
|
|
22713
|
-
number: 0,
|
|
22714
|
-
size: 8
|
|
22715
|
-
};
|
|
22716
|
-
paginateTemplates();
|
|
22717
|
-
}
|
|
22718
|
-
|
|
22719
|
-
/**
|
|
22720
|
-
* Gets runtime filters
|
|
22721
|
-
* @returns {Array.<{id: string, name: string, visible: boolean}>}
|
|
22722
|
-
*/
|
|
22723
|
-
function getRuntimeFilters() {
|
|
22724
|
-
return [{
|
|
22725
|
-
id: 'all',
|
|
22726
|
-
name: $i18next.t('common:ALL', {
|
|
22727
|
-
lng: lng
|
|
22728
|
-
}),
|
|
22729
|
-
visible: true
|
|
22730
|
-
}, {
|
|
22731
|
-
id: 'golang',
|
|
22732
|
-
name: 'Go',
|
|
22733
|
-
visible: true
|
|
22734
|
-
}, {
|
|
22735
|
-
id: 'python:3.6',
|
|
22736
|
-
name: 'Python 3.6 ' + $i18next.t('functions:DEPRECATED_SOON_LABEL', {
|
|
22737
|
-
lng: lng
|
|
22738
|
-
}),
|
|
22739
|
-
nameTemplate: 'Python 3.6 ' + '<b>' + $i18next.t('functions:DEPRECATED_SOON_LABEL', {
|
|
22740
|
-
lng: lng
|
|
22741
|
-
}) + '</b>',
|
|
22742
|
-
visible: true
|
|
22743
|
-
}, {
|
|
22744
|
-
id: 'python:3.7',
|
|
22745
|
-
name: 'Python 3.7',
|
|
22746
|
-
visible: true
|
|
22747
|
-
}, {
|
|
22748
|
-
id: 'python:3.8',
|
|
22749
|
-
name: 'Python 3.8',
|
|
22750
|
-
visible: true
|
|
22751
|
-
}, {
|
|
22752
|
-
id: 'python:3.9',
|
|
22753
|
-
name: 'Python 3.9',
|
|
22754
|
-
visible: true
|
|
22755
|
-
}, {
|
|
22756
|
-
id: 'dotnetcore',
|
|
22757
|
-
name: '.NET Core ' + $i18next.t('functions:TECH_PREVIEW_LABEL', {
|
|
22758
|
-
lng: lng
|
|
22759
|
-
}),
|
|
22760
|
-
visible: true
|
|
22761
|
-
}, {
|
|
22762
|
-
id: 'java',
|
|
22763
|
-
name: 'Java ' + $i18next.t('functions:TECH_PREVIEW_LABEL', {
|
|
22764
|
-
lng: lng
|
|
22765
|
-
}),
|
|
22766
|
-
visible: true
|
|
22767
|
-
}, {
|
|
22768
|
-
id: 'nodejs',
|
|
22769
|
-
name: 'NodeJS ' + $i18next.t('functions:TECH_PREVIEW_LABEL', {
|
|
22770
|
-
lng: lng
|
|
22771
|
-
}),
|
|
22772
|
-
visible: true
|
|
22773
|
-
}, {
|
|
22774
|
-
id: 'shell',
|
|
22775
|
-
name: 'Shell ' + $i18next.t('functions:TECH_PREVIEW_LABEL', {
|
|
22776
|
-
lng: lng
|
|
22777
|
-
}),
|
|
22778
|
-
visible: true
|
|
22779
|
-
}];
|
|
22780
|
-
}
|
|
22781
|
-
|
|
22782
|
-
/**
|
|
22783
|
-
* Paginates function's templates
|
|
22784
|
-
*/
|
|
22785
|
-
function paginateTemplates() {
|
|
22786
|
-
// amount of visible items on one page
|
|
22787
|
-
var pageSize = $window.innerWidth > 1453 && $window.innerWidth < 1822 ? 9 : 8;
|
|
22788
|
-
ctrl.templatesWorkingCopy = lodash.chain(templatesOriginalObject).filter(filterByRuntime).filter(filterByTitleAndDescription).thru(function (filteredTemplates) {
|
|
22789
|
-
ctrl.page.total = Math.ceil(lodash.size(filteredTemplates) / pageSize);
|
|
22790
|
-
return lodash.slice(filteredTemplates, ctrl.page.number * pageSize, ctrl.page.number * pageSize + pageSize);
|
|
22791
|
-
}).keyBy(function (template) {
|
|
22792
|
-
return template.rendered.metadata.name.split(':')[0] + ' (' + template.rendered.spec.runtime + ')';
|
|
22793
|
-
}).value();
|
|
22794
|
-
$timeout(setLastLineClass);
|
|
22795
|
-
}
|
|
22796
|
-
|
|
22797
|
-
/**
|
|
22798
|
-
* Converts projects for project drop-down.
|
|
22799
|
-
*/
|
|
22800
|
-
function prepareProjects() {
|
|
22801
|
-
var newProject = {
|
|
22802
|
-
id: 'new_project',
|
|
22803
|
-
name: $i18next.t('functions:NEW_PROJECT', {
|
|
22804
|
-
lng: lng
|
|
22805
|
-
})
|
|
22806
|
-
};
|
|
22807
|
-
ctrl.selectedProject = lodash.isNil(ctrl.selectedProject) ? newProject : ctrl.selectedProject;
|
|
22808
|
-
ctrl.projectsList = lodash.chain(ctrl.projects).map(function (project) {
|
|
22809
|
-
return {
|
|
22810
|
-
id: project.metadata.name,
|
|
22811
|
-
name: project.metadata.name
|
|
22812
|
-
};
|
|
22813
|
-
}).sortBy(['name']).value();
|
|
22814
|
-
ctrl.selectedProject = lodash.isEmpty(ctrl.projectsList) ? newProject : ctrl.selectedProject.id !== 'new_project' ? ctrl.selectedProject : lodash.first(ctrl.projectsList);
|
|
22815
|
-
}
|
|
22816
|
-
|
|
22817
|
-
/**
|
|
22818
|
-
* Sets class `last-line` to elements from the last row of the templates list.
|
|
22819
|
-
*/
|
|
22820
|
-
function setLastLineClass() {
|
|
22821
|
-
var TEMPLATE_WIDTH = 368;
|
|
22822
|
-
var templates = $element.find('.function-template-wrapper');
|
|
22823
|
-
var templatesWrapper = $element.find('.templates-wrapper');
|
|
22824
|
-
var elementsPerLine = Math.floor(parseInt(templatesWrapper.css('width')) / TEMPLATE_WIDTH);
|
|
22825
|
-
var countLastLineElements = lodash.size(templates) % elementsPerLine || elementsPerLine;
|
|
22826
|
-
var lastLineElements = lodash.takeRight(templates, countLastLineElements);
|
|
22827
|
-
templates.removeClass('last-line');
|
|
22828
|
-
angular.element(lastLineElements).addClass('last-line');
|
|
22829
|
-
}
|
|
22830
|
-
|
|
22831
|
-
/**
|
|
22832
|
-
* Sets the flag to show `Read more...` in the end of template's description
|
|
22833
|
-
* when it is bigger than template's block can contain.
|
|
22834
|
-
* @param {Array} templates
|
|
22835
|
-
*/
|
|
22836
|
-
function setReadMoreButtonsState(templates) {
|
|
22837
|
-
var templatesElements = $element.find('.template-description');
|
|
22838
|
-
lodash.forEach(templates, function (template) {
|
|
22839
|
-
var description = lodash.get(template, 'rendered.spec.description');
|
|
22840
|
-
var templateElement = lodash.find(templatesElements, ['innerHTML', description]);
|
|
22841
|
-
lodash.set(template, 'ui.readMore', templateElement.scrollHeight > angular.element(templateElement).height());
|
|
22842
|
-
});
|
|
22843
|
-
}
|
|
22844
|
-
}
|
|
22845
|
-
})();
|
|
22846
|
-
"use strict";
|
|
22847
|
-
|
|
22848
|
-
(function () {
|
|
22849
|
-
'use strict';
|
|
22850
|
-
|
|
22851
|
-
FunctionImportController.$inject = ["$document", "$rootScope", "$scope", "$state", "$timeout", "$i18next", "i18next", "YAML", "lodash", "DialogsService", "EventHelperService", "FunctionsService", "MaskService", "YamlService"];
|
|
22852
|
-
angular.module('iguazio.dashboard-controls').component('nclFunctionImport', {
|
|
22853
|
-
bindings: {
|
|
22854
|
-
project: '<',
|
|
22855
|
-
projects: '<',
|
|
22856
|
-
getFunction: '&',
|
|
22857
|
-
toggleSplashScreen: '&',
|
|
22858
|
-
createNewProject: '<',
|
|
22859
|
-
selectedProject: '<'
|
|
22860
|
-
},
|
|
22861
|
-
templateUrl: 'nuclio/common/screens/create-function/function-import/function-import.tpl.html',
|
|
22862
|
-
controller: FunctionImportController
|
|
22863
|
-
});
|
|
22864
|
-
function FunctionImportController($document, $rootScope, $scope, $state, $timeout, $i18next, i18next, YAML, lodash, DialogsService, EventHelperService, FunctionsService, MaskService, YamlService) {
|
|
22865
|
-
var ctrl = this;
|
|
22866
|
-
var importedFunction = null;
|
|
22867
|
-
var file = null;
|
|
22868
|
-
var lng = i18next.language;
|
|
22869
|
-
ctrl.functionImportForm = {};
|
|
22870
|
-
ctrl.sourceCode = null;
|
|
22871
|
-
ctrl.$onInit = onInit;
|
|
22872
|
-
ctrl.$onChanges = onChanges;
|
|
22873
|
-
ctrl.$onDestroy = onDestroy;
|
|
22874
|
-
ctrl.createFunction = createFunction;
|
|
22875
|
-
ctrl.importFunction = importFunction;
|
|
22876
|
-
ctrl.isCreateFunctionAllowed = isCreateFunctionAllowed;
|
|
22877
|
-
ctrl.isProjectsDropDownVisible = isProjectsDropDownVisible;
|
|
22878
|
-
ctrl.onProjectChange = onProjectChange;
|
|
22879
|
-
|
|
22880
|
-
//
|
|
22881
|
-
// Hook methods
|
|
22882
|
-
//
|
|
22883
|
-
|
|
22884
|
-
/**
|
|
22885
|
-
* Initialization function
|
|
22886
|
-
* Adds event listener on file input and when some file is loaded call importFunction()
|
|
22887
|
-
*/
|
|
22888
|
-
function onInit() {
|
|
22889
|
-
$document.on('keypress', createFunction);
|
|
22890
|
-
$document.find('.function-import-input').on('change', importFunction);
|
|
22891
|
-
}
|
|
22892
|
-
|
|
22893
|
-
/**
|
|
22894
|
-
* Bindings changes hook
|
|
22895
|
-
* @param {Object} changes - changed bindings
|
|
22896
|
-
*/
|
|
22897
|
-
function onChanges(changes) {
|
|
22898
|
-
if (angular.isDefined(changes.projects)) {
|
|
22899
|
-
prepareProjects();
|
|
22900
|
-
}
|
|
22901
|
-
}
|
|
22902
|
-
|
|
22903
|
-
/**
|
|
22904
|
-
* Destructor method
|
|
22905
|
-
*/
|
|
22906
|
-
function onDestroy() {
|
|
22907
|
-
$document.off('keypress', createFunction);
|
|
22908
|
-
}
|
|
22909
|
-
|
|
22910
|
-
//
|
|
22911
|
-
// Public methods
|
|
22912
|
-
//
|
|
22913
|
-
|
|
22914
|
-
/**
|
|
22915
|
-
* Callback handler for 'create function' button
|
|
22916
|
-
* Creates function with imported data.
|
|
22917
|
-
*/
|
|
22918
|
-
function createFunction(event) {
|
|
22919
|
-
$timeout(function () {
|
|
22920
|
-
if ((angular.isUndefined(event) || event.keyCode === EventHelperService.ENTER) && ctrl.isCreateFunctionAllowed()) {
|
|
22921
|
-
// create function only when imported file is .yml
|
|
22922
|
-
if (isYamlFile(file.name)) {
|
|
22923
|
-
ctrl.toggleSplashScreen({
|
|
22924
|
-
value: true
|
|
22925
|
-
});
|
|
22926
|
-
ctrl.getFunction({
|
|
22927
|
-
metadata: {
|
|
22928
|
-
name: importedFunction.metadata.name
|
|
22929
|
-
}
|
|
22930
|
-
}).then(function (existingFunction) {
|
|
22931
|
-
ctrl.toggleSplashScreen({
|
|
22932
|
-
value: false
|
|
22933
|
-
});
|
|
22934
|
-
FunctionsService.openFunctionConflictDialog(ctrl.project, importedFunction, existingFunction);
|
|
22935
|
-
}).catch(function (error) {
|
|
22936
|
-
if (error.status === 404) {
|
|
22937
|
-
ctrl.toggleSplashScreen({
|
|
22938
|
-
value: true
|
|
22939
|
-
});
|
|
22940
|
-
lodash.defaults(importedFunction, {
|
|
22941
|
-
metadata: {}
|
|
22942
|
-
});
|
|
22943
|
-
if (lodash.isEmpty(ctrl.project) && ctrl.selectedProject.id !== 'new_project') {
|
|
22944
|
-
ctrl.project = lodash.find(ctrl.projects, ['metadata.name', ctrl.selectedProject.id]);
|
|
22945
|
-
}
|
|
22946
|
-
$state.go('app.project.function.edit.code', {
|
|
22947
|
-
isNewFunction: true,
|
|
22948
|
-
id: ctrl.project.metadata.name,
|
|
22949
|
-
projectId: ctrl.project.metadata.name,
|
|
22950
|
-
projectNamespace: ctrl.project.metadata.namespace,
|
|
22951
|
-
functionId: importedFunction.metadata.name,
|
|
22952
|
-
functionData: importedFunction
|
|
22953
|
-
});
|
|
22954
|
-
}
|
|
22955
|
-
});
|
|
22956
|
-
}
|
|
22957
|
-
}
|
|
22958
|
-
}, 100);
|
|
22959
|
-
}
|
|
22960
|
-
|
|
22961
|
-
/**
|
|
22962
|
-
* Checks permissibility creation of new function.
|
|
22963
|
-
* Checks if source code of function exists into ctrl.sourceCode, and if function import form is valid
|
|
22964
|
-
* @returns {boolean}
|
|
22965
|
-
*/
|
|
22966
|
-
function isCreateFunctionAllowed() {
|
|
22967
|
-
return !lodash.isNil(ctrl.sourceCode) && lodash.isEmpty(ctrl.functionImportForm.$error);
|
|
22968
|
-
}
|
|
22969
|
-
|
|
22970
|
-
/**
|
|
22971
|
-
* Import of selected YAML file from file system and parse it to JS object
|
|
22972
|
-
* @param event
|
|
22973
|
-
*/
|
|
22974
|
-
function importFunction(event) {
|
|
22975
|
-
file = event.target.files[0];
|
|
22976
|
-
var reader = new FileReader();
|
|
22977
|
-
reader.onload = function () {
|
|
22978
|
-
try {
|
|
22979
|
-
importedFunction = YAML.parse(reader.result);
|
|
22980
|
-
if (lodash.has(importedFunction, 'metadata.name')) {
|
|
22981
|
-
ctrl.sourceCode = YamlService.prepareYamlObject(MaskService.getObjectWithMask(importedFunction));
|
|
22982
|
-
$scope.$apply();
|
|
22983
|
-
$rootScope.$broadcast('function-import-source-code', ctrl.sourceCode);
|
|
22984
|
-
} else {
|
|
22985
|
-
throw new Error('invalid yaml');
|
|
22986
|
-
}
|
|
22987
|
-
} catch (error) {
|
|
22988
|
-
DialogsService.alert($i18next.t('common:ERROR_MSG.IMPORT_YAML_FILE', {
|
|
22989
|
-
lng: lng
|
|
22990
|
-
}));
|
|
22991
|
-
}
|
|
22992
|
-
};
|
|
22993
|
-
reader.readAsText(file);
|
|
22994
|
-
}
|
|
22995
|
-
|
|
22996
|
-
/**
|
|
22997
|
-
* Projects drop-down callback.
|
|
22998
|
-
* Sets selected project to function.
|
|
22999
|
-
* @param {Object} item - new selected project
|
|
22922
|
+
* Init data for pagination
|
|
23000
22923
|
*/
|
|
23001
|
-
function
|
|
23002
|
-
ctrl.
|
|
22924
|
+
function initPagination() {
|
|
22925
|
+
ctrl.page = {
|
|
22926
|
+
number: 0,
|
|
22927
|
+
size: 8
|
|
22928
|
+
};
|
|
22929
|
+
paginateTemplates();
|
|
23003
22930
|
}
|
|
23004
22931
|
|
|
23005
22932
|
/**
|
|
23006
|
-
*
|
|
23007
|
-
*
|
|
23008
|
-
* @returns {boolean}
|
|
22933
|
+
* Gets runtime filters
|
|
22934
|
+
* @returns {Array.<{id: string, name: string, visible: boolean}>}
|
|
23009
22935
|
*/
|
|
23010
|
-
function
|
|
23011
|
-
return
|
|
22936
|
+
function getRuntimeFilters() {
|
|
22937
|
+
return [{
|
|
22938
|
+
id: 'all',
|
|
22939
|
+
name: $i18next.t('common:ALL', {
|
|
22940
|
+
lng: lng
|
|
22941
|
+
}),
|
|
22942
|
+
visible: true
|
|
22943
|
+
}, {
|
|
22944
|
+
id: 'golang',
|
|
22945
|
+
name: 'Go',
|
|
22946
|
+
visible: true
|
|
22947
|
+
}, {
|
|
22948
|
+
id: 'python:3.6',
|
|
22949
|
+
name: 'Python 3.6 ' + $i18next.t('functions:DEPRECATED_SOON_LABEL', {
|
|
22950
|
+
lng: lng
|
|
22951
|
+
}),
|
|
22952
|
+
nameTemplate: 'Python 3.6 ' + '<b>' + $i18next.t('functions:DEPRECATED_SOON_LABEL', {
|
|
22953
|
+
lng: lng
|
|
22954
|
+
}) + '</b>',
|
|
22955
|
+
visible: true
|
|
22956
|
+
}, {
|
|
22957
|
+
id: 'python:3.7',
|
|
22958
|
+
name: 'Python 3.7',
|
|
22959
|
+
visible: true
|
|
22960
|
+
}, {
|
|
22961
|
+
id: 'python:3.8',
|
|
22962
|
+
name: 'Python 3.8',
|
|
22963
|
+
visible: true
|
|
22964
|
+
}, {
|
|
22965
|
+
id: 'python:3.9',
|
|
22966
|
+
name: 'Python 3.9',
|
|
22967
|
+
visible: true
|
|
22968
|
+
}, {
|
|
22969
|
+
id: 'dotnetcore',
|
|
22970
|
+
name: '.NET Core ' + $i18next.t('functions:TECH_PREVIEW_LABEL', {
|
|
22971
|
+
lng: lng
|
|
22972
|
+
}),
|
|
22973
|
+
visible: true
|
|
22974
|
+
}, {
|
|
22975
|
+
id: 'java',
|
|
22976
|
+
name: 'Java ' + $i18next.t('functions:TECH_PREVIEW_LABEL', {
|
|
22977
|
+
lng: lng
|
|
22978
|
+
}),
|
|
22979
|
+
visible: true
|
|
22980
|
+
}, {
|
|
22981
|
+
id: 'nodejs',
|
|
22982
|
+
name: 'NodeJS ' + $i18next.t('functions:TECH_PREVIEW_LABEL', {
|
|
22983
|
+
lng: lng
|
|
22984
|
+
}),
|
|
22985
|
+
visible: true
|
|
22986
|
+
}, {
|
|
22987
|
+
id: 'shell',
|
|
22988
|
+
name: 'Shell ' + $i18next.t('functions:TECH_PREVIEW_LABEL', {
|
|
22989
|
+
lng: lng
|
|
22990
|
+
}),
|
|
22991
|
+
visible: true
|
|
22992
|
+
}];
|
|
23012
22993
|
}
|
|
23013
22994
|
|
|
23014
|
-
//
|
|
23015
|
-
// Private methods
|
|
23016
|
-
//
|
|
23017
|
-
|
|
23018
22995
|
/**
|
|
23019
|
-
*
|
|
23020
|
-
* Example: 'filename.yml'
|
|
23021
|
-
* @returns {boolean}
|
|
22996
|
+
* Paginates function's templates
|
|
23022
22997
|
*/
|
|
23023
|
-
function
|
|
23024
|
-
|
|
22998
|
+
function paginateTemplates() {
|
|
22999
|
+
// amount of visible items on one page
|
|
23000
|
+
var pageSize = $window.innerWidth > 1453 && $window.innerWidth < 1822 ? 9 : 8;
|
|
23001
|
+
ctrl.templatesWorkingCopy = lodash.chain(templatesOriginalObject).filter(filterByRuntime).filter(filterByTitleAndDescription).thru(function (filteredTemplates) {
|
|
23002
|
+
ctrl.page.total = Math.ceil(lodash.size(filteredTemplates) / pageSize);
|
|
23003
|
+
return lodash.slice(filteredTemplates, ctrl.page.number * pageSize, ctrl.page.number * pageSize + pageSize);
|
|
23004
|
+
}).keyBy(function (template) {
|
|
23005
|
+
return template.rendered.metadata.name.split(':')[0] + ' (' + template.rendered.spec.runtime + ')';
|
|
23006
|
+
}).value();
|
|
23007
|
+
$timeout(setLastLineClass);
|
|
23025
23008
|
}
|
|
23026
23009
|
|
|
23027
23010
|
/**
|
|
@@ -23041,7 +23024,35 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
23041
23024
|
name: project.metadata.name
|
|
23042
23025
|
};
|
|
23043
23026
|
}).sortBy(['name']).value();
|
|
23044
|
-
ctrl.selectedProject = lodash.isEmpty(ctrl.projectsList) ? newProject : ctrl.selectedProject.id !== 'new_project' ? ctrl.selectedProject :
|
|
23027
|
+
ctrl.selectedProject = lodash.isEmpty(ctrl.projectsList) ? newProject : ctrl.selectedProject.id !== 'new_project' ? ctrl.selectedProject : lodash.first(ctrl.projectsList);
|
|
23028
|
+
}
|
|
23029
|
+
|
|
23030
|
+
/**
|
|
23031
|
+
* Sets class `last-line` to elements from the last row of the templates list.
|
|
23032
|
+
*/
|
|
23033
|
+
function setLastLineClass() {
|
|
23034
|
+
var TEMPLATE_WIDTH = 368;
|
|
23035
|
+
var templates = $element.find('.function-template-wrapper');
|
|
23036
|
+
var templatesWrapper = $element.find('.templates-wrapper');
|
|
23037
|
+
var elementsPerLine = Math.floor(parseInt(templatesWrapper.css('width')) / TEMPLATE_WIDTH);
|
|
23038
|
+
var countLastLineElements = lodash.size(templates) % elementsPerLine || elementsPerLine;
|
|
23039
|
+
var lastLineElements = lodash.takeRight(templates, countLastLineElements);
|
|
23040
|
+
templates.removeClass('last-line');
|
|
23041
|
+
angular.element(lastLineElements).addClass('last-line');
|
|
23042
|
+
}
|
|
23043
|
+
|
|
23044
|
+
/**
|
|
23045
|
+
* Sets the flag to show `Read more...` in the end of template's description
|
|
23046
|
+
* when it is bigger than template's block can contain.
|
|
23047
|
+
* @param {Array} templates
|
|
23048
|
+
*/
|
|
23049
|
+
function setReadMoreButtonsState(templates) {
|
|
23050
|
+
var templatesElements = $element.find('.template-description');
|
|
23051
|
+
lodash.forEach(templates, function (template) {
|
|
23052
|
+
var description = lodash.get(template, 'rendered.spec.description');
|
|
23053
|
+
var templateElement = lodash.find(templatesElements, ['innerHTML', description]);
|
|
23054
|
+
lodash.set(template, 'ui.readMore', templateElement.scrollHeight > angular.element(templateElement).height());
|
|
23055
|
+
});
|
|
23045
23056
|
}
|
|
23046
23057
|
}
|
|
23047
23058
|
})();
|
|
@@ -24148,14 +24159,8 @@ try {
|
|
|
24148
24159
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24149
24160
|
}
|
|
24150
24161
|
module.run(['$templateCache', function($templateCache) {
|
|
24151
|
-
$templateCache.put('igz_controls/components/
|
|
24152
|
-
'<div class="
|
|
24153
|
-
' \'click-trigger\': $ctrl.isClickMode(),\n' +
|
|
24154
|
-
' \'disabled\': $ctrl.isDisabled,\n' +
|
|
24155
|
-
' \'igz-icon-alert-message\': $ctrl.selectedIconType === $ctrl.iconTypes.WARN,\n' +
|
|
24156
|
-
' \'igz-icon-help-round\': $ctrl.selectedIconType === $ctrl.iconTypes.INFO,\n' +
|
|
24157
|
-
' \'open\': $ctrl.isDescriptionVisible\n' +
|
|
24158
|
-
' }" data-ng-click="$ctrl.handleQuestionMarkClick($event)" class="question-mark"> </div> <div class="row-description-wrapper"> <div class="row-description" data-ng-if="$ctrl.isHtmlEnabled" data-ng-class="$ctrl.defaultTooltipPlacement" data-ng-bind-html="$ctrl.compiledDescription"> </div> <div class="row-description" data-ng-if="!$ctrl.isHtmlEnabled" data-ng-class="$ctrl.defaultTooltipPlacement"> {{$ctrl.description}} </div> </div> </div> <div data-ng-if="$ctrl.isDefaultTooltipEnabled"> <div data-ng-if="!$ctrl.isHtmlEnabled" class="question-mark igz-icon-help-round" data-ng-class="{\'disabled\': $ctrl.isDisabled}" data-tooltip-class="more-info-tooltip" data-uib-tooltip="{{$ctrl.description}}" data-tooltip-is-open="{{$ctrl.isOpen}}" data-tooltip-placement="{{$ctrl.defaultTooltipPlacement}}" data-tooltip-popup-delay="{{$ctrl.defaultTooltipPopupDelay}}" data-tooltip-trigger="$ctrl.trigger" data-tooltip-append-to-body="true"> </div> <div data-ng-if="$ctrl.isHtmlEnabled" class="question-mark igz-icon-help-round" data-ng-class="{\'disabled\': $ctrl.isDisabled}" data-tooltip-class="more-info-tooltip" data-uib-tooltip-html="$ctrl.description" data-tooltip-is-open="{{$ctrl.isOpen}}" data-tooltip-placement="{{$ctrl.defaultTooltipPlacement}}" data-tooltip-popup-delay="{{$ctrl.defaultTooltipPopupDelay}}" data-tooltip-trigger="$ctrl.trigger" data-tooltip-append-to-body="true"> </div> </div> </div> ');
|
|
24162
|
+
$templateCache.put('igz_controls/components/import-project-dialog/import-project-dialog.tpl.html',
|
|
24163
|
+
'<div class="import-project-dialog">{{$ctrl.dialogTitle}}</div> <igz-multiple-checkboxes data-ng-model="$ctrl.option" data-options="$ctrl.optionList" data-ng-change="$ctrl.onCheckboxChange($event)" data-ng-required="true" data-base-id="import-project-option_"> </igz-multiple-checkboxes> <div class="buttons"> <button class="igz-button-just-text" data-ng-click="$ctrl.onClose(\'skip\')"> {{ \'functions:SKIP\' | i18next }} </button> <button class="igz-button-primary" data-ng-click="$ctrl.onClose(\'replace\')"> {{ \'functions:REPLACE\' | i18next }} </button> </div>');
|
|
24159
24164
|
}]);
|
|
24160
24165
|
})();
|
|
24161
24166
|
|
|
@@ -24166,8 +24171,14 @@ try {
|
|
|
24166
24171
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24167
24172
|
}
|
|
24168
24173
|
module.run(['$templateCache', function($templateCache) {
|
|
24169
|
-
$templateCache.put('igz_controls/components/
|
|
24170
|
-
'<div class="
|
|
24174
|
+
$templateCache.put('igz_controls/components/more-info/more-info.tpl.html',
|
|
24175
|
+
'<div class="more-info-wrapper"> <div data-ng-if="!$ctrl.isDefaultTooltipEnabled"> <div data-ng-class="{\n' +
|
|
24176
|
+
' \'click-trigger\': $ctrl.isClickMode(),\n' +
|
|
24177
|
+
' \'disabled\': $ctrl.isDisabled,\n' +
|
|
24178
|
+
' \'igz-icon-alert-message\': $ctrl.selectedIconType === $ctrl.iconTypes.WARN,\n' +
|
|
24179
|
+
' \'igz-icon-help-round\': $ctrl.selectedIconType === $ctrl.iconTypes.INFO,\n' +
|
|
24180
|
+
' \'open\': $ctrl.isDescriptionVisible\n' +
|
|
24181
|
+
' }" data-ng-click="$ctrl.handleQuestionMarkClick($event)" class="question-mark"> </div> <div class="row-description-wrapper"> <div class="row-description" data-ng-if="$ctrl.isHtmlEnabled" data-ng-class="$ctrl.defaultTooltipPlacement" data-ng-bind-html="$ctrl.compiledDescription"> </div> <div class="row-description" data-ng-if="!$ctrl.isHtmlEnabled" data-ng-class="$ctrl.defaultTooltipPlacement"> {{$ctrl.description}} </div> </div> </div> <div data-ng-if="$ctrl.isDefaultTooltipEnabled"> <div data-ng-if="!$ctrl.isHtmlEnabled" class="question-mark igz-icon-help-round" data-ng-class="{\'disabled\': $ctrl.isDisabled}" data-tooltip-class="more-info-tooltip" data-uib-tooltip="{{$ctrl.description}}" data-tooltip-is-open="{{$ctrl.isOpen}}" data-tooltip-placement="{{$ctrl.defaultTooltipPlacement}}" data-tooltip-popup-delay="{{$ctrl.defaultTooltipPopupDelay}}" data-tooltip-trigger="$ctrl.trigger" data-tooltip-append-to-body="true"> </div> <div data-ng-if="$ctrl.isHtmlEnabled" class="question-mark igz-icon-help-round" data-ng-class="{\'disabled\': $ctrl.isDisabled}" data-tooltip-class="more-info-tooltip" data-uib-tooltip-html="$ctrl.description" data-tooltip-is-open="{{$ctrl.isOpen}}" data-tooltip-placement="{{$ctrl.defaultTooltipPlacement}}" data-tooltip-popup-delay="{{$ctrl.defaultTooltipPopupDelay}}" data-tooltip-trigger="$ctrl.trigger" data-tooltip-append-to-body="true"> </div> </div> </div> ');
|
|
24171
24182
|
}]);
|
|
24172
24183
|
})();
|
|
24173
24184
|
|
|
@@ -24301,8 +24312,8 @@ try {
|
|
|
24301
24312
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24302
24313
|
}
|
|
24303
24314
|
module.run(['$templateCache', function($templateCache) {
|
|
24304
|
-
$templateCache.put('igz_controls/components/
|
|
24305
|
-
'<div class="
|
|
24315
|
+
$templateCache.put('igz_controls/components/toast-status-panel/toast-status-panel.tpl.html',
|
|
24316
|
+
'<div class="toast-status-panel" data-ng-show="$ctrl.isToastPanelShown"> <div class="btn-close igz-icon-close" data-ng-if="!$ctrl.permanent && $ctrl.panelState !== \'in-progress\'" data-ng-click="$ctrl.closeToastPanel()"> </div> <div class="panel-status"> <span class="panel-status-icon"></span> <span class="panel-status-msg">{{$ctrl.getStateMessage($ctrl.panelState)}}</span> </div> </div> ');
|
|
24306
24317
|
}]);
|
|
24307
24318
|
})();
|
|
24308
24319
|
|
|
@@ -24313,8 +24324,8 @@ try {
|
|
|
24313
24324
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24314
24325
|
}
|
|
24315
24326
|
module.run(['$templateCache', function($templateCache) {
|
|
24316
|
-
$templateCache.put('igz_controls/components/
|
|
24317
|
-
'<div class="
|
|
24327
|
+
$templateCache.put('igz_controls/components/text-edit/text-edit.tpl.html',
|
|
24328
|
+
'<div class="text-preview-directive-wrapper"> <div class="title text-ellipsis" tooltip="{{::$ctrl.label}}" data-tooltip-append-to-body="true" data-tooltip-popup-delay="400" data-tooltip-placement="bottom-left"> {{::$ctrl.label}} </div> <div class="text-preview-wrapper"> <div class="word-wrap-checkbox-wrapper"> <div class="word-wrap-checkbox col-50 col-checkbox"> <input id="wrap-checkbox" type="checkbox" data-ng-model="$ctrl.enableWordWrap"> <label for="wrap-checkbox">{{ \'common:WRAP\' | i18next }}</label> </div> </div> <ncl-monaco class="monaco-code-editor" data-function-source-code="$ctrl.content" data-selected-theme="\'vs-light\'" data-language="$ctrl.language" data-on-change-source-code-callback="$ctrl.onChangeText(sourceCode)" data-word-wrap="$ctrl.enableWordWrap"> </ncl-monaco> </div> <div class="close-button igz-icon-close" data-ng-click="$ctrl.onClose()"></div> <div class="buttons"> <button class="igz-button-just-text" tabindex="0" data-ng-hide="$ctrl.isLoadingState" data-ng-click="$ctrl.onClose()" data-ng-keydown="$ctrl.onClose($event)" data-test-id="general.text-edit_close.button"> {{::$ctrl.closeButtonText}} </button> <button class="igz-button-primary" tabindex="0" data-ng-hide="$ctrl.isLoadingState" data-ng-class="{\'disabled\': !$ctrl.fileChanged}" data-ng-click="$ctrl.onSubmit()" data-test-id="general.text-edit_save.button"> {{::$ctrl.submitButtonText}} </button> <button class="igz-button-primary" data-ng-show="$ctrl.isLoadingState"> {{ \'common:LOADING_CAPITALIZE_ELLIPSIS\' | i18next }} </button> <button class="error-text text-centered error-relative" data-ng-hide="$ctrl.serverError === \'\'"> {{ \'common:ERROR_COLON\' | i18next }} {{$ctrl.serverError}} </button> </div> </div> ');
|
|
24318
24329
|
}]);
|
|
24319
24330
|
})();
|
|
24320
24331
|
|
|
@@ -24489,8 +24500,8 @@ try {
|
|
|
24489
24500
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24490
24501
|
}
|
|
24491
24502
|
module.run(['$templateCache', function($templateCache) {
|
|
24492
|
-
$templateCache.put('igz_controls/components/info-page/info-page-
|
|
24493
|
-
'<div class="igz-info-page-
|
|
24503
|
+
$templateCache.put('igz_controls/components/info-page/info-page-content/info-page-content.tpl.html',
|
|
24504
|
+
'<div class="igz-info-page-content-wrapper" data-ng-class="{\'info-pane-opened\' : $ctrl.isInfoPaneShowed, \'filters-opened\' : $ctrl.isFiltersShowed, \'upper-pane-opened\' : $ctrl.isUpperPaneShowed}"> <div data-ng-if="$ctrl.scrolled !== false" class="igz-scrollable-container horizontal" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfigHorizontal"> <div class="igz-info-page-content"> <div data-ng-transclude></div> </div> </div> <div data-ng-if="$ctrl.scrolled === false"> <div class="igz-info-page-content"> <div data-ng-transclude></div> </div> </div> </div>');
|
|
24494
24505
|
}]);
|
|
24495
24506
|
})();
|
|
24496
24507
|
|
|
@@ -24501,8 +24512,8 @@ try {
|
|
|
24501
24512
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24502
24513
|
}
|
|
24503
24514
|
module.run(['$templateCache', function($templateCache) {
|
|
24504
|
-
$templateCache.put('igz_controls/components/info-page/info-page-
|
|
24505
|
-
'<div class="
|
|
24515
|
+
$templateCache.put('igz_controls/components/info-page/info-page-filters/info-page-filters.tpl.html',
|
|
24516
|
+
'<div class="info-page-filters-wrapper"> <div class="info-page-filters" data-ng-show="$ctrl.isFiltersShowed" data-ng-keyup="$ctrl.onApplyFilters($event)"> <div class="info-page-filters-title">{{ \'common:FILTER\' | i18next }}</div> <div class="close-button igz-icon-close" data-ng-click="$ctrl.changeStateCallback({newVal: false})" data-ng-show="$ctrl.changeStateCallback"> </div> <div class="info-page-filters-body" data-ng-class="{\'buttons-shown\' : $ctrl.isShowFooterButtons()}" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollbarConfig"> <div data-ng-transclude></div> </div> <div class="info-page-filters-footer" data-ng-if="$ctrl.isShowFooterButtons()"> <button class="igz-button-just-text" tabindex="0" data-ng-click="$ctrl.onResetFilters()" data-ng-keydown="$ctrl.onResetFilters($event)" data-ng-disabled="$ctrl.isDisabled" data-ng-if="$ctrl.resetFilters">{{ \'common:RESET\' | i18next }} </button> <button class="igz-button-primary" tabindex="0" data-ng-click="$ctrl.onApplyFilters()" data-ng-keydown="$ctrl.onApplyFilters($event)" data-ng-disabled="$ctrl.isDisabled" data-ng-if="$ctrl.applyFilters">{{ \'common:APPLY\' | i18next }} </button> </div> </div> </div> ');
|
|
24506
24517
|
}]);
|
|
24507
24518
|
})();
|
|
24508
24519
|
|
|
@@ -24513,8 +24524,8 @@ try {
|
|
|
24513
24524
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24514
24525
|
}
|
|
24515
24526
|
module.run(['$templateCache', function($templateCache) {
|
|
24516
|
-
$templateCache.put('igz_controls/components/info-page/info-page-
|
|
24517
|
-
'<div class="
|
|
24527
|
+
$templateCache.put('igz_controls/components/info-page/info-page-actions-bar/info-page-actions-bar.tpl.html',
|
|
24528
|
+
'<div class="igz-info-page-actions-bar" data-ng-class="{\'filters-opened\' : $ctrl.isFiltersShowed, \'info-pane-opened\' : $ctrl.isInfoPaneShowed, \'upper-pane-opened\' : $ctrl.isUpperPaneShowed}"> <div data-ng-transclude></div> </div>');
|
|
24518
24529
|
}]);
|
|
24519
24530
|
})();
|
|
24520
24531
|
|
|
@@ -24562,8 +24573,8 @@ try {
|
|
|
24562
24573
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24563
24574
|
}
|
|
24564
24575
|
module.run(['$templateCache', function($templateCache) {
|
|
24565
|
-
$templateCache.put('nuclio/common/components/
|
|
24566
|
-
'<div class="
|
|
24576
|
+
$templateCache.put('nuclio/common/components/deploy-log/deploy-log.tpl.html',
|
|
24577
|
+
'<div class="ncl-deploy-log-wrapper"> <div class="log-panel igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="log-entry" data-ng-if="$ctrl.lodash.isArray($ctrl.logEntries)" data-ng-repeat="log in $ctrl.logEntries track by $index"> <span class="log-entry-time" data-ng-if="log.time">[{{log.time | date:\'HH:mm:ss.sss\'}}]</span> <span class="log-entry-level-{{log.level}}" data-ng-if="log.level"> ({{$ctrl.getLogLevel(log.level)}})</span> <span class="log-entry-message"> {{log.message}}</span> <span class="log-entry-error" data-ng-if="log.err"> {{log.err}}</span> <span class="log-entry-params"> {{$ctrl.getLogParams(log)}}</span> </div> <div class="log-entry" data-ng-if="!$ctrl.lodash.isArray($ctrl.logEntries)"> {{$ctrl.logEntries}} </div> </div> </div> ');
|
|
24567
24578
|
}]);
|
|
24568
24579
|
})();
|
|
24569
24580
|
|
|
@@ -24574,8 +24585,9 @@ try {
|
|
|
24574
24585
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24575
24586
|
}
|
|
24576
24587
|
module.run(['$templateCache', function($templateCache) {
|
|
24577
|
-
$templateCache.put('nuclio/common/components/
|
|
24578
|
-
'<div class="ncl-
|
|
24588
|
+
$templateCache.put('nuclio/common/components/edit-item/edit-item.tpl.html',
|
|
24589
|
+
'<div class="ncl-edit-item" data-ng-keydown="$ctrl.onSubmitForm($event)"> <form name="$ctrl.editItemForm" novalidate autocomplete="off"> <div class="igz-row title-field-row"> <div class="igz-col-20 name-field"> <igz-validating-input-field data-field-type="input" data-input-name="itemName" data-input-value="$ctrl.getItemName()" data-is-focused="true" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-validation-rules="$ctrl.validationRules.itemName" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_NAME\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="name" autocomplete="off"> </igz-validating-input-field> <div class="error" data-ng-show="$ctrl.isShowFieldInvalidState($ctrl.editItemForm, \'itemName\') &&\n' +
|
|
24590
|
+
' $ctrl.isShowFieldError($ctrl.editItemForm, \'itemName\', \'required\')"> {{ \'common:NAME_IS_REQUIRED\' | i18next }} </div> </div> <div class="igz-col-12-5 class-field"> <igz-default-dropdown data-select-property-only="id" data-input-name="itemClass" data-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder="{{ $ctrl.classPlaceholder }}" data-prevent-drop-up="true" data-values-array="$ctrl.classList" data-selected-item="$ctrl.selectedClass.id" data-form-object="$ctrl.editItemForm" data-item-select-callback="$ctrl.onSelectClass(item)" data-enable-overlap="true"> </igz-default-dropdown> </div> <div class="igz-col-65 tooltip-wrapper" data-ng-if="$ctrl.isSelectedClassMoreInfoVisible()"> <igz-more-info data-description="{{$ctrl.getSelectedClassMoreInfo()}}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> </div> </div> <div class="igz-row" data-ng-if="$ctrl.isNil($ctrl.selectedClass.id)"> <div class="igz-col-100 no-class-selected">{{ $ctrl.classPlaceholder }}</div> </div> <div class="igz-row" data-ng-if="!$ctrl.isNil($ctrl.selectedClass.id)"> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volumeMount.mountPath)"> <div class="field-label"> <span class="asterisk">{{ \'functions:MOUNT_PATH\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:MOUNT_PATH_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="input" data-input-name="itemPath" data-input-value="$ctrl.item.volumeMount.mountPath" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-validation-rules="$ctrl.validationRules.itemPath" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_MOUNT_PATH\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volumeMount.mountPath" data-auto-complete="off"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume.options.accessKey)"> <div class="field-label"> <span class="asterisk">{{ \'functions:ACCESS_KEY\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:ACCESS_KEY_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="password" data-input-name="secretRef" data-input-value="$ctrl.item.volume.flexVolume.options.accessKey" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_ACCESS_KEY\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.flexVolume.options.accessKey" data-auto-complete="current-password"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume.options.container)"> <div class="field-label"> <span>{{ \'functions:CONTAINER_NAME\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:CONTAINER_NAME_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="input" data-input-name="containerName" data-input-value="$ctrl.item.volume.flexVolume.options.container" data-is-focused="false" data-read-only="$ctrl.readOnly" data-form-object="$ctrl.editItemForm" data-validation-rules="$ctrl.validationRules.containerName" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_CONTAINER_NAME\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.flexVolume.options.container" data-auto-complete="off"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume.options.subPath)"> <div class="field-label"> <span>{{ \'common:PATH\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:PATH_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="input" data-input-name="containerSubPath" data-input-value="$ctrl.item.volume.flexVolume.options.subPath" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="false" data-read-only="$ctrl.readOnly" data-validation-max-length="{{$ctrl.maxLengths.containerSubPath}}" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_PATH_IN_CONTAINER\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.flexVolume.options.subPath" data-auto-complete="off"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.hostPath.path)"> <div class="field-label"> <span class="asterisk">{{ \'common:HOST_PATH\' | i18next }}</span> </div> <igz-validating-input-field data-field-type="input" data-input-name="hostPath" data-input-value="$ctrl.item.volume.hostPath.path" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder-text="{{ \'common:PLACEHOLDER.ENTER_HOST_PATH\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.hostPath.path"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volumeMount.readOnly)"> <input type="checkbox" id="{{$ctrl.getItemName()}}" data-ng-model="$ctrl.item.volumeMount.readOnly"> <label for="{{$ctrl.getItemName()}}">{{ \'common:READ_ONLY\' | i18next }}</label> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.secret.secretName)"> <div class="field-label"> <span class="asterisk">{{ \'functions:SECRET_NAME\' | i18next }}</span> </div> <igz-validating-input-field data-field-type="input" data-input-name="secretName" data-input-value="$ctrl.item.volume.secret.secretName" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_SECRET_NAME\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.secret.secretName"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.configMap.name)"> <div class="field-label"> <span class="asterisk">{{ \'functions:CONFIG_MAP_NAME\' | i18next }}</span> </div> <igz-validating-input-field data-field-type="input" data-input-name="configMap" data-input-value="$ctrl.item.volume.configMap.name" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_CONFIG_MAP_NAME\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.configMap.name"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.persistentVolumeClaim.claimName)"> <div class="field-label text-ellipsis"> <span class="asterisk">{{ \'functions:PERSISTENT_VOLUME_CLAIM_NAME\' | i18next }}</span> </div> <igz-validating-input-field data-field-type="input" data-input-name="persistentVolumeClaim" data-input-value="$ctrl.item.volume.persistentVolumeClaim.claimName" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_PERSISTENT_VOLUME_CLAIM_NAME\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.persistentVolumeClaim.claimName"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field brokers-wrapper" data-ng-if="$ctrl.isKafkaTrigger()"> <div class="field-label asterisk">{{ \'functions:BROKERS\' | i18next }}</div> <div> <div class="table-body" data-ng-repeat="broker in $ctrl.brokers"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-row-data="broker" data-use-type="false" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-no-delete="$ctrl.brokers.length <= 1" data-item-index="$index" data-only-value-input="true" data-action-handler-callback="$ctrl.handleBrokerAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-broker-button" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewBroker($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:ADD_BROKER\' | i18next }} </div> </div> <div class="igz-col-45 attribute-field topics-wrapper" data-ng-if="$ctrl.isKafkaTrigger()"> <div class="field-label asterisk">{{ \'functions:TOPICS\' | i18next }}</div> <div> <div class="table-body" data-ng-repeat="topic in $ctrl.topics"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-row-data="topic" data-use-type="false" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-no-delete="$ctrl.topics.length <= 1" data-item-index="$index" data-only-value-input="true" data-action-handler-callback="$ctrl.handleTopicAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-topic-button" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewTopic($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:ADD_TOPIC\' | i18next }} </div> </div> <div class="igz-col-{{field.fieldType === \'schedule\' ? \'91\' : \'45\'}} attribute-field" data-ng-repeat="field in $ctrl.selectedClass.fields | filter:$ctrl.isFieldVisible() track by field.name"> <ncl-edit-item-field data-edit-item-form="$ctrl.editItemForm" data-field="field" data-item="$ctrl.item" data-read-only="$ctrl.readOnly" data-validation-rules="$ctrl.validationRules" data-input-value-callback="$ctrl.inputValueCallback(newData, field)" data-number-input-callback="$ctrl.numberInputCallback(newData, field)" data-on-select-dropdown-value="$ctrl.onSelectDropdownValue(item, field)"> </ncl-edit-item-field> </div> <div class="igz-col-91 attribute-field ingresses-wrapper" data-ng-if="$ctrl.isHttpTrigger()"> <div class="field-label">{{ \'functions:INGRESSES_HOSTS\' | i18next }}</div> <div data-ng-if="$ctrl.ingresses.length > 0" class="table-headers ingresses-table-headers"> <div class="host-header asterisk">{{ \'functions:HOST\' | i18next }}</div> <div class="paths-header asterisk">{{ \'common:PATH\' | i18next }}</div> <div class="secret-header">{{ \'functions:SECRET\' | i18next }}</div> </div> <div class="igz-scrollable-container scrollable-ingresses" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="ingress in $ctrl.ingresses"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-row-data="ingress" data-use-type="false" data-use-additional-value="true" data-additional-value-optional="true" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-item-index="$index" data-validation-rules="$ctrl.validationRules.host" data-action-handler-callback="$ctrl.handleIngressAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-ingress-button" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewIngress($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_HOST\' | i18next }} </div> </div> <div class="igz-col-91 attribute-field annotations-wrapper" data-ng-if="$ctrl.isHttpTrigger()"> <div class="field-label">{{ \'functions:ANNOTATIONS\' | i18next }}</div> <div data-ng-if="$ctrl.annotations.length > 0" class="table-headers"> <div class="key-header">{{ \'common:KEY\' | i18next }}</div> <div class="value-header">{{ \'common:VALUE\' | i18next }}</div> </div> <div class="igz-scrollable-container scrollable-annotations" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="annotation in $ctrl.annotations"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-row-data="annotation" data-use-type="false" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-item-index="$index" data-action-handler-callback="$ctrl.handleAnnotationAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-annotation-button" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewAnnotation($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_ANNOTATION\' | i18next }} </div> </div> <div class="igz-col-91 attribute-field event-headers-wrapper" data-ng-if="$ctrl.isCronTrigger()"> <div class="field-label">{{ \'functions:EVENT_HEADERS\' | i18next }}</div> <div data-ng-if="$ctrl.eventHeaders.length > 0" class="table-headers"> <div class="key-header">{{ \'common:KEY\' | i18next }}</div> <div class="value-header">{{ \'common:VALUE\' | i18next }}</div> </div> <div class="igz-scrollable-container scrollable-event-headers" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="header in $ctrl.eventHeaders"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-row-data="header" data-use-type="false" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-item-index="$index" data-action-handler-callback="$ctrl.handleEventHeaderAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-event-header" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewEventHeader($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_EVENT_HEADER\' | i18next }} </div> </div> <div class="igz-col-91 attribute-field subscriptions-wrapper" data-ng-if="$ctrl.isMqttTrigger()"> <div class="field-label">{{ \'functions:SUBSCRIPTIONS\' | i18next }}</div> <div data-ng-if="$ctrl.subscriptions.length > 0" class="table-headers"> <div class="key-header">{{ \'functions:TOPIC\' | i18next }}</div> <div class="value-header">{{ \'functions:QOS\' | i18next }}</div> </div> <div> <div class="table-body" data-ng-repeat="subscription in $ctrl.subscriptions"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-key-optional="false" data-row-data="subscription" data-use-type="false" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-item-index="$index" data-validation-rules="$ctrl.validationRules.subscriptionQoS" data-value-placeholder="0, 1 or 2" data-action-handler-callback="$ctrl.handleSubscriptionAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-subscription-button" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewSubscription($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_SUBSCRIPTION\' | i18next }} </div> </div> <div class="advanced-section igz-col-100" data-ng-if="$ctrl.isAdvancedVisible"> <div class="collapsed-block-title" data-ng-click="$ctrl.isAdvancedCollapsed = !$ctrl.isAdvancedCollapsed" data-ng-class="{\'collapsed\': $ctrl.isAdvancedCollapsed}"> <span class="igz-icon-down icon-collapsed" data-ng-if="!$ctrl.isAdvancedCollapsed"></span> <span class="igz-icon-right icon-collapsed" data-ng-if="$ctrl.isAdvancedCollapsed"></span> {{ \'common:ADVANCED\' | i18next }} </div> <div class="collapsed-block-content-wrapper" data-uib-collapse="$ctrl.isAdvancedCollapsed"> <div class="igz-col-{{field.fieldType === \'schedule\' ? \'91\' : \'45\'}} attribute-field" data-ng-repeat="field in $ctrl.selectedClass.fields | filter:$ctrl.isFieldVisible(true) track by field.name"> <ncl-edit-item-field data-edit-item-form="$ctrl.editItemForm" data-field="field" data-item="$ctrl.item" data-read-only="$ctrl.readOnly" data-validation-rules="$ctrl.validationRules" data-input-value-callback="$ctrl.inputValueCallback(newData, field)" data-number-input-callback="$ctrl.numberInputCallback(newData, field)" data-on-select-dropdown-value="$ctrl.onSelectDropdownValue(item, field)"> </ncl-edit-item-field> </div> </div> </div> </div> </form> </div> ');
|
|
24579
24591
|
}]);
|
|
24580
24592
|
})();
|
|
24581
24593
|
|
|
@@ -24586,9 +24598,8 @@ try {
|
|
|
24586
24598
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24587
24599
|
}
|
|
24588
24600
|
module.run(['$templateCache', function($templateCache) {
|
|
24589
|
-
$templateCache.put('nuclio/common/components/
|
|
24590
|
-
'<div class="
|
|
24591
|
-
' $ctrl.isShowFieldError($ctrl.editItemForm, \'itemName\', \'required\')"> {{ \'common:NAME_IS_REQUIRED\' | i18next }} </div> </div> <div class="igz-col-12-5 class-field"> <igz-default-dropdown data-select-property-only="id" data-input-name="itemClass" data-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder="{{ $ctrl.classPlaceholder }}" data-prevent-drop-up="true" data-values-array="$ctrl.classList" data-selected-item="$ctrl.selectedClass.id" data-form-object="$ctrl.editItemForm" data-item-select-callback="$ctrl.onSelectClass(item)" data-enable-overlap="true"> </igz-default-dropdown> </div> <div class="igz-col-65 tooltip-wrapper" data-ng-if="$ctrl.isSelectedClassMoreInfoVisible()"> <igz-more-info data-description="{{$ctrl.getSelectedClassMoreInfo()}}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> </div> </div> <div class="igz-row" data-ng-if="$ctrl.isNil($ctrl.selectedClass.id)"> <div class="igz-col-100 no-class-selected">{{ $ctrl.classPlaceholder }}</div> </div> <div class="igz-row" data-ng-if="!$ctrl.isNil($ctrl.selectedClass.id)"> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volumeMount.mountPath)"> <div class="field-label"> <span class="asterisk">{{ \'functions:MOUNT_PATH\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:MOUNT_PATH_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="input" data-input-name="itemPath" data-input-value="$ctrl.item.volumeMount.mountPath" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-validation-rules="$ctrl.validationRules.itemPath" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_MOUNT_PATH\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volumeMount.mountPath" data-auto-complete="off"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume.options.accessKey)"> <div class="field-label"> <span class="asterisk">{{ \'functions:ACCESS_KEY\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:ACCESS_KEY_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="password" data-input-name="secretRef" data-input-value="$ctrl.item.volume.flexVolume.options.accessKey" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_ACCESS_KEY\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.flexVolume.options.accessKey" data-auto-complete="current-password"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume.options.container)"> <div class="field-label"> <span>{{ \'functions:CONTAINER_NAME\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:CONTAINER_NAME_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="input" data-input-name="containerName" data-input-value="$ctrl.item.volume.flexVolume.options.container" data-is-focused="false" data-read-only="$ctrl.readOnly" data-form-object="$ctrl.editItemForm" data-validation-rules="$ctrl.validationRules.containerName" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_CONTAINER_NAME\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.flexVolume.options.container" data-auto-complete="off"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume.options.subPath)"> <div class="field-label"> <span>{{ \'common:PATH\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:PATH_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="input" data-input-name="containerSubPath" data-input-value="$ctrl.item.volume.flexVolume.options.subPath" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="false" data-read-only="$ctrl.readOnly" data-validation-max-length="{{$ctrl.maxLengths.containerSubPath}}" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_PATH_IN_CONTAINER\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.flexVolume.options.subPath" data-auto-complete="off"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.hostPath.path)"> <div class="field-label"> <span class="asterisk">{{ \'common:HOST_PATH\' | i18next }}</span> </div> <igz-validating-input-field data-field-type="input" data-input-name="hostPath" data-input-value="$ctrl.item.volume.hostPath.path" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder-text="{{ \'common:PLACEHOLDER.ENTER_HOST_PATH\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.hostPath.path"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volumeMount.readOnly)"> <input type="checkbox" id="{{$ctrl.getItemName()}}" data-ng-model="$ctrl.item.volumeMount.readOnly"> <label for="{{$ctrl.getItemName()}}">{{ \'common:READ_ONLY\' | i18next }}</label> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.secret.secretName)"> <div class="field-label"> <span class="asterisk">{{ \'functions:SECRET_NAME\' | i18next }}</span> </div> <igz-validating-input-field data-field-type="input" data-input-name="secretName" data-input-value="$ctrl.item.volume.secret.secretName" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_SECRET_NAME\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.secret.secretName"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.configMap.name)"> <div class="field-label"> <span class="asterisk">{{ \'functions:CONFIG_MAP_NAME\' | i18next }}</span> </div> <igz-validating-input-field data-field-type="input" data-input-name="configMap" data-input-value="$ctrl.item.volume.configMap.name" data-is-focused="false" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_CONFIG_MAP_NAME\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.configMap.name"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field" data-ng-if="!$ctrl.isNil($ctrl.item.volume.persistentVolumeClaim.claimName)"> <div class="field-label text-ellipsis"> <span class="asterisk">{{ \'functions:PERSISTENT_VOLUME_CLAIM_NAME\' | i18next }}</span> </div> <igz-validating-input-field data-field-type="input" data-input-name="persistentVolumeClaim" data-input-value="$ctrl.item.volume.persistentVolumeClaim.claimName" data-form-object="$ctrl.editItemForm" data-validation-is-required="true" data-read-only="$ctrl.readOnly" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_PERSISTENT_VOLUME_CLAIM_NAME\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="volume.persistentVolumeClaim.claimName"> </igz-validating-input-field> </div> <div class="igz-col-45 attribute-field brokers-wrapper" data-ng-if="$ctrl.isKafkaTrigger()"> <div class="field-label asterisk">{{ \'functions:BROKERS\' | i18next }}</div> <div> <div class="table-body" data-ng-repeat="broker in $ctrl.brokers"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-row-data="broker" data-use-type="false" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-no-delete="$ctrl.brokers.length <= 1" data-item-index="$index" data-only-value-input="true" data-action-handler-callback="$ctrl.handleBrokerAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-broker-button" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewBroker($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:ADD_BROKER\' | i18next }} </div> </div> <div class="igz-col-45 attribute-field topics-wrapper" data-ng-if="$ctrl.isKafkaTrigger()"> <div class="field-label asterisk">{{ \'functions:TOPICS\' | i18next }}</div> <div> <div class="table-body" data-ng-repeat="topic in $ctrl.topics"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-row-data="topic" data-use-type="false" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-no-delete="$ctrl.topics.length <= 1" data-item-index="$index" data-only-value-input="true" data-action-handler-callback="$ctrl.handleTopicAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-topic-button" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewTopic($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:ADD_TOPIC\' | i18next }} </div> </div> <div class="igz-col-{{field.fieldType === \'schedule\' ? \'91\' : \'45\'}} attribute-field" data-ng-repeat="field in $ctrl.selectedClass.fields | filter:$ctrl.isFieldVisible() track by field.name"> <ncl-edit-item-field data-edit-item-form="$ctrl.editItemForm" data-field="field" data-item="$ctrl.item" data-read-only="$ctrl.readOnly" data-validation-rules="$ctrl.validationRules" data-input-value-callback="$ctrl.inputValueCallback(newData, field)" data-number-input-callback="$ctrl.numberInputCallback(newData, field)" data-on-select-dropdown-value="$ctrl.onSelectDropdownValue(item, field)"> </ncl-edit-item-field> </div> <div class="igz-col-91 attribute-field ingresses-wrapper" data-ng-if="$ctrl.isHttpTrigger()"> <div class="field-label">{{ \'functions:INGRESSES_HOSTS\' | i18next }}</div> <div data-ng-if="$ctrl.ingresses.length > 0" class="table-headers ingresses-table-headers"> <div class="host-header asterisk">{{ \'functions:HOST\' | i18next }}</div> <div class="paths-header asterisk">{{ \'common:PATH\' | i18next }}</div> <div class="secret-header">{{ \'functions:SECRET\' | i18next }}</div> </div> <div class="igz-scrollable-container scrollable-ingresses" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="ingress in $ctrl.ingresses"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-row-data="ingress" data-use-type="false" data-use-additional-value="true" data-additional-value-optional="true" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-item-index="$index" data-validation-rules="$ctrl.validationRules.host" data-action-handler-callback="$ctrl.handleIngressAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-ingress-button" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewIngress($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_HOST\' | i18next }} </div> </div> <div class="igz-col-91 attribute-field annotations-wrapper" data-ng-if="$ctrl.isHttpTrigger()"> <div class="field-label">{{ \'functions:ANNOTATIONS\' | i18next }}</div> <div data-ng-if="$ctrl.annotations.length > 0" class="table-headers"> <div class="key-header">{{ \'common:KEY\' | i18next }}</div> <div class="value-header">{{ \'common:VALUE\' | i18next }}</div> </div> <div class="igz-scrollable-container scrollable-annotations" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="annotation in $ctrl.annotations"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-row-data="annotation" data-use-type="false" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-item-index="$index" data-action-handler-callback="$ctrl.handleAnnotationAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-annotation-button" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewAnnotation($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_ANNOTATION\' | i18next }} </div> </div> <div class="igz-col-91 attribute-field event-headers-wrapper" data-ng-if="$ctrl.isCronTrigger()"> <div class="field-label">{{ \'functions:EVENT_HEADERS\' | i18next }}</div> <div data-ng-if="$ctrl.eventHeaders.length > 0" class="table-headers"> <div class="key-header">{{ \'common:KEY\' | i18next }}</div> <div class="value-header">{{ \'common:VALUE\' | i18next }}</div> </div> <div class="igz-scrollable-container scrollable-event-headers" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="header in $ctrl.eventHeaders"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-row-data="header" data-use-type="false" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-item-index="$index" data-action-handler-callback="$ctrl.handleEventHeaderAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-event-header" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewEventHeader($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_EVENT_HEADER\' | i18next }} </div> </div> <div class="igz-col-91 attribute-field subscriptions-wrapper" data-ng-if="$ctrl.isMqttTrigger()"> <div class="field-label">{{ \'functions:SUBSCRIPTIONS\' | i18next }}</div> <div data-ng-if="$ctrl.subscriptions.length > 0" class="table-headers"> <div class="key-header">{{ \'functions:TOPIC\' | i18next }}</div> <div class="value-header">{{ \'functions:QOS\' | i18next }}</div> </div> <div> <div class="table-body" data-ng-repeat="subscription in $ctrl.subscriptions"> <ncl-key-value-input class="new-label-input" data-change-state-broadcast="change-state-deploy-button" data-key-optional="false" data-row-data="subscription" data-use-type="false" data-submit-on-fly="true" data-is-disabled="$ctrl.readOnly" data-item-index="$index" data-validation-rules="$ctrl.validationRules.subscriptionQoS" data-value-placeholder="0, 1 or 2" data-action-handler-callback="$ctrl.handleSubscriptionAction(actionType, index)" data-change-data-callback="$ctrl.onChangeKeyValueData(newData, index)"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-subscription-button" data-ng-class="{\'disabled\': $ctrl.readOnly}" data-ng-click="$ctrl.addNewSubscription($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_SUBSCRIPTION\' | i18next }} </div> </div> <div class="advanced-section igz-col-100" data-ng-if="$ctrl.isAdvancedVisible"> <div class="collapsed-block-title" data-ng-click="$ctrl.isAdvancedCollapsed = !$ctrl.isAdvancedCollapsed" data-ng-class="{\'collapsed\': $ctrl.isAdvancedCollapsed}"> <span class="igz-icon-down icon-collapsed" data-ng-if="!$ctrl.isAdvancedCollapsed"></span> <span class="igz-icon-right icon-collapsed" data-ng-if="$ctrl.isAdvancedCollapsed"></span> {{ \'common:ADVANCED\' | i18next }} </div> <div class="collapsed-block-content-wrapper" data-uib-collapse="$ctrl.isAdvancedCollapsed"> <div class="igz-col-{{field.fieldType === \'schedule\' ? \'91\' : \'45\'}} attribute-field" data-ng-repeat="field in $ctrl.selectedClass.fields | filter:$ctrl.isFieldVisible(true) track by field.name"> <ncl-edit-item-field data-edit-item-form="$ctrl.editItemForm" data-field="field" data-item="$ctrl.item" data-read-only="$ctrl.readOnly" data-validation-rules="$ctrl.validationRules" data-input-value-callback="$ctrl.inputValueCallback(newData, field)" data-number-input-callback="$ctrl.numberInputCallback(newData, field)" data-on-select-dropdown-value="$ctrl.onSelectDropdownValue(item, field)"> </ncl-edit-item-field> </div> </div> </div> </div> </form> </div> ');
|
|
24601
|
+
$templateCache.put('nuclio/common/components/function-config-dialog/function-config-dialog.tpl.html',
|
|
24602
|
+
'<div class="view-yaml-dialog-container"> <div class="view-yaml-dialog-header"> <div class="title">{{ $ctrl.title }}</div> <igz-copy-to-clipboard data-value="$ctrl.sourceCode"></igz-copy-to-clipboard> <div class="close-button igz-icon-close" data-ng-click="$ctrl.closeDialog()"></div> </div> <div class="main-content"> <ncl-monaco class="monaco-code-editor" data-function-source-code="$ctrl.sourceCode" data-mini-monaco="false" data-selected-theme="\'vs-light\'" data-language="\'yaml\'" data-read-only="true"> </ncl-monaco> </div> <div class="buttons"> <button class="igz-button-primary" tabindex="0" data-ng-click="$ctrl.closeDialog()"> {{ \'common:CLOSE\' | i18next }} </button> </div> </div> ');
|
|
24592
24603
|
}]);
|
|
24593
24604
|
})();
|
|
24594
24605
|
|
|
@@ -24683,6 +24694,18 @@ module.run(['$templateCache', function($templateCache) {
|
|
|
24683
24694
|
}]);
|
|
24684
24695
|
})();
|
|
24685
24696
|
|
|
24697
|
+
(function(module) {
|
|
24698
|
+
try {
|
|
24699
|
+
module = angular.module('iguazio.dashboard-controls.templates');
|
|
24700
|
+
} catch (e) {
|
|
24701
|
+
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24702
|
+
}
|
|
24703
|
+
module.run(['$templateCache', function($templateCache) {
|
|
24704
|
+
$templateCache.put('nuclio/functions/version/version-configuration/version-configuration.tpl.html',
|
|
24705
|
+
'<div class="ncl-version-configuration ncl-version" data-igz-extend-background> <div class="igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="ncl-version-configuration-wrapper"> <div class="row"> <ncl-version-configuration-basic-settings class="configuration-block" data-version="$ctrl.version" data-is-function-deploying="$ctrl.isFunctionDeploying()" data-on-change-callback="$ctrl.onConfigurationChangeCallback"> </ncl-version-configuration-basic-settings> <ncl-version-configuration-resources class="configuration-block" data-version="$ctrl.version" data-is-function-deploying="$ctrl.isFunctionDeploying()" data-on-change-callback="$ctrl.onConfigurationChangeCallback"> </ncl-version-configuration-resources> </div> <div class="row"> <ncl-version-configuration-environment-variables class="configuration-block" data-version="$ctrl.version" data-is-function-deploying="$ctrl.isFunctionDeploying()" data-on-change-callback="$ctrl.onConfigurationChangeCallback"> </ncl-version-configuration-environment-variables> </div> <div class="row"> <ncl-version-configuration-labels class="configuration-block" data-version="$ctrl.version" data-is-function-deploying="$ctrl.isFunctionDeploying()" data-on-change-callback="$ctrl.onConfigurationChangeCallback"> </ncl-version-configuration-labels> <ncl-version-configuration-annotations class="configuration-block" data-version="$ctrl.version" data-is-function-deploying="$ctrl.isFunctionDeploying()" data-on-change-callback="$ctrl.onConfigurationChangeCallback"> </ncl-version-configuration-annotations> </div> <div class="row"> <ncl-version-configuration-volumes class="configuration-block" data-version="$ctrl.version" data-is-function-deploying="$ctrl.isFunctionDeploying()" data-on-change-callback="$ctrl.onConfigurationChangeCallback()"> </ncl-version-configuration-volumes> <ncl-version-configuration-build class="configuration-block" data-version="$ctrl.version" data-is-function-deploying="$ctrl.isFunctionDeploying()" data-on-change-callback="$ctrl.onConfigurationChangeCallback"> </ncl-version-configuration-build> </div> <div class="row"> <ncl-version-configuration-logging data-ng-if="false" class="configuration-block" data-version="$ctrl.version" data-on-change-callback="$ctrl.onConfigurationChangeCallback"> </ncl-version-configuration-logging> <ncl-version-configuration-runtime-attributes data-ng-if="$ctrl.isRuntimeBlockVisible()" class="configuration-block runtime-attributes" data-version="$ctrl.version" data-is-function-deploying="$ctrl.isFunctionDeploying()" data-on-change-callback="$ctrl.onConfigurationChangeCallback"> </ncl-version-configuration-runtime-attributes> <div data-ng-if="$ctrl.isRuntimeBlockVisible()" class="configuration-block invisible"></div> </div> </div> </div> </div> ');
|
|
24706
|
+
}]);
|
|
24707
|
+
})();
|
|
24708
|
+
|
|
24686
24709
|
(function(module) {
|
|
24687
24710
|
try {
|
|
24688
24711
|
module = angular.module('iguazio.dashboard-controls.templates');
|
|
@@ -24714,8 +24737,8 @@ try {
|
|
|
24714
24737
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24715
24738
|
}
|
|
24716
24739
|
module.run(['$templateCache', function($templateCache) {
|
|
24717
|
-
$templateCache.put('nuclio/functions/version/version-
|
|
24718
|
-
'<div class="ncl-version-
|
|
24740
|
+
$templateCache.put('nuclio/functions/version/version-triggers/version-triggers.tpl.html',
|
|
24741
|
+
'<div class="ncl-version-trigger ncl-version"> <div class="common-table"> <div class="content-message-pane" data-ng-if="$ctrl.isHttpTriggerMsgShown()" data-ng-i18next="[html]functions:HTTP_TRIGGER_MSG"> </div> <div class="common-table-header header-row"> <div class="common-table-cell header-name"> {{ \'common:NAME\' | i18next }} </div> <div class="common-table-cell header-class"> {{ \'common:CLASS\' | i18next }} </div> <div class="igz-col-70 common-table-cell"> {{ \'common:INFO\' | i18next }} </div> </div> <div class="content-message-pane" data-ng-if="$ctrl.triggers.length === 0"> {{ \'functions:TRIGGERS_NOT_FOUND\' | i18next }} </div> <div class="common-table-body" data-igz-extend-background> <div class="igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <ncl-collapsing-row data-ng-repeat="trigger in $ctrl.triggers track by trigger.name" data-item="trigger" data-type="trigger" data-read-only="$ctrl.isFunctionDeploying()" data-delete-test-id="functions.triggers_delete.button" data-action-handler-callback="$ctrl.handleAction(actionType, selectedItem)"> <ncl-edit-item class="common-table-cells-container edit-trigger-row" data-item="trigger" data-class-list="$ctrl.classList" data-type="trigger" data-read-only="$ctrl.isFunctionDeploying()" data-validation-rules="$ctrl.validationRules" data-default-fields="$ctrl.defaultFields" data-on-select-class-callback="$ctrl.checkClassUniqueness()" data-on-submit-callback="$ctrl.editTriggerCallback(item)"> </ncl-edit-item> </ncl-collapsing-row> <div class="common-table-row create-trigger-button igz-create-button" data-ng-class="{\'disabled\': $ctrl.isFunctionDeploying()}" data-ng-if="$ctrl.isCreateNewTriggerEnabled()" data-ng-click="$ctrl.createTrigger($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_TRIGGER\' | i18next }} </div> </div> </div> </div> </div> ');
|
|
24719
24742
|
}]);
|
|
24720
24743
|
})();
|
|
24721
24744
|
|
|
@@ -24731,18 +24754,6 @@ module.run(['$templateCache', function($templateCache) {
|
|
|
24731
24754
|
}]);
|
|
24732
24755
|
})();
|
|
24733
24756
|
|
|
24734
|
-
(function(module) {
|
|
24735
|
-
try {
|
|
24736
|
-
module = angular.module('iguazio.dashboard-controls.templates');
|
|
24737
|
-
} catch (e) {
|
|
24738
|
-
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24739
|
-
}
|
|
24740
|
-
module.run(['$templateCache', function($templateCache) {
|
|
24741
|
-
$templateCache.put('nuclio/functions/version/version-triggers/version-triggers.tpl.html',
|
|
24742
|
-
'<div class="ncl-version-trigger ncl-version"> <div class="common-table"> <div class="content-message-pane" data-ng-if="$ctrl.isHttpTriggerMsgShown()" data-ng-i18next="[html]functions:HTTP_TRIGGER_MSG"> </div> <div class="common-table-header header-row"> <div class="common-table-cell header-name"> {{ \'common:NAME\' | i18next }} </div> <div class="common-table-cell header-class"> {{ \'common:CLASS\' | i18next }} </div> <div class="igz-col-70 common-table-cell"> {{ \'common:INFO\' | i18next }} </div> </div> <div class="content-message-pane" data-ng-if="$ctrl.triggers.length === 0"> {{ \'functions:TRIGGERS_NOT_FOUND\' | i18next }} </div> <div class="common-table-body" data-igz-extend-background> <div class="igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <ncl-collapsing-row data-ng-repeat="trigger in $ctrl.triggers track by trigger.name" data-item="trigger" data-type="trigger" data-read-only="$ctrl.isFunctionDeploying()" data-delete-test-id="functions.triggers_delete.button" data-action-handler-callback="$ctrl.handleAction(actionType, selectedItem)"> <ncl-edit-item class="common-table-cells-container edit-trigger-row" data-item="trigger" data-class-list="$ctrl.classList" data-type="trigger" data-read-only="$ctrl.isFunctionDeploying()" data-validation-rules="$ctrl.validationRules" data-default-fields="$ctrl.defaultFields" data-on-select-class-callback="$ctrl.checkClassUniqueness()" data-on-submit-callback="$ctrl.editTriggerCallback(item)"> </ncl-edit-item> </ncl-collapsing-row> <div class="common-table-row create-trigger-button igz-create-button" data-ng-class="{\'disabled\': $ctrl.isFunctionDeploying()}" data-ng-if="$ctrl.isCreateNewTriggerEnabled()" data-ng-click="$ctrl.createTrigger($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_TRIGGER\' | i18next }} </div> </div> </div> </div> </div> ');
|
|
24743
|
-
}]);
|
|
24744
|
-
})();
|
|
24745
|
-
|
|
24746
24757
|
(function(module) {
|
|
24747
24758
|
try {
|
|
24748
24759
|
module = angular.module('iguazio.dashboard-controls.templates');
|
|
@@ -24786,8 +24797,8 @@ try {
|
|
|
24786
24797
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24787
24798
|
}
|
|
24788
24799
|
module.run(['$templateCache', function($templateCache) {
|
|
24789
|
-
$templateCache.put('nuclio/common/screens/create-function/function-
|
|
24790
|
-
'<div class="function-
|
|
24800
|
+
$templateCache.put('nuclio/common/screens/create-function/function-import/function-import.tpl.html',
|
|
24801
|
+
'<div class="function-import-wrapper-content"> <form name="$ctrl.functionImportForm" class="function-import-form" novalidate> <div class="projects-drop-down" data-ng-if="$ctrl.isProjectsDropDownVisible()"> <span class="input-label"> {{ \'functions:PROJECT\' | i18next }}* </span> <igz-default-dropdown data-is-required="true" data-values-array="$ctrl.projectsList" data-selected-item="$ctrl.selectedProject" data-item-select-callback="$ctrl.onProjectChange(item, isItemChanged)" data-form-object="$ctrl.functionImportForm" data-input-name="project"> <div class="transcluded-item" data-ng-click="$ctrl.createNewProject()"> {{ \'functions:NEW_PROJECT\' | i18next }} </div> </igz-default-dropdown> </div> <div class="function-import-actions-bar"> <div class="function-import-file-picker"> <label class="file-picker-wrapper ncl-primary-button igz-button-secondary" for="function-import"> <span class="igz-icon-upload"></span> {{ \'functions:IMPORT\' | i18next }} </label> <input class="function-import-input" type="file" id="function-import" accept=".yml, .yaml"> </div> <button class="ncl-primary-button igz-button-primary" data-ng-click="$ctrl.createFunction()" data-ng-disabled="!$ctrl.isCreateFunctionAllowed()" data-ng-class="{\'disabled\': !$ctrl.isCreateFunctionAllowed()}"> {{ \'common:CREATE\' | i18next }} </button> </div> </form> <div class="function-import-monaco"> <ncl-monaco class="monaco-code-editor" data-function-source-code="$ctrl.sourceCode" data-mini-monaco="false" data-selected-theme="\'vs-light\'" data-language="\'yaml\'" data-read-only="true"> </ncl-monaco> </div> </div> ');
|
|
24791
24802
|
}]);
|
|
24792
24803
|
})();
|
|
24793
24804
|
|
|
@@ -24798,8 +24809,8 @@ try {
|
|
|
24798
24809
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24799
24810
|
}
|
|
24800
24811
|
module.run(['$templateCache', function($templateCache) {
|
|
24801
|
-
$templateCache.put('nuclio/common/screens/create-function/function-
|
|
24802
|
-
'<div class="function-
|
|
24812
|
+
$templateCache.put('nuclio/common/screens/create-function/function-from-template/function-from-template.tpl.html',
|
|
24813
|
+
'<div class="function-from-template-content"> <div class="templates-wrapper"> <span class="title"> {{ \'functions:CHOOSE_TEMPLATE\' | i18next }} </span> <div class="templates-controls"> <div class="templates-search-input"> <div class="igz-icon-search search-icon"></div> <input class="input-field field" tabindex="0" data-ng-model="$ctrl.searchQuery" data-ng-change="$ctrl.onChangeSearchQuery()" placeholder="{{ \'functions:PLACEHOLDER.SEARCH_TEMPLATE\' | i18next }}" data-igz-input-blur-on-enter> </div> <div class="templates-runtime-drop-down"> <span class="input-label"> {{ \'functions:RUNTIME\' | i18next }} </span> <igz-default-dropdown data-values-array="$ctrl.runtimeFilters" data-selected-item="$ctrl.selectedRuntimeFilter" data-item-select-callback="$ctrl.onRuntimeFilterChange(item, isItemChanged)"> </igz-default-dropdown> </div> <div class="templates-pagination"> <igz-pagination data-page-data="$ctrl.page" data-is-per-page-visible="true" data-pagination-callback="$ctrl.paginationCallback(page)"> </igz-pagination> </div> </div> <div class="function-templates"> <form name="$ctrl.functionFromTemplateForm" class="function-templates-form" novalidate> <div class="function-template-wrapper" data-ng-repeat="(key, value) in $ctrl.templatesWorkingCopy track by $index" data-ng-class="{\'selected\': $ctrl.isTemplateSelected(key)}" data-ng-click="$ctrl.selectTemplate(key)"> <div class="function-template"> <div data-ng-show="!$ctrl.isTemplateSelected(key)" class="function-template-content"> <div class="template-title">{{key}}</div> <div class="template-description">{{value.rendered.spec.description}}</div> <div data-ng-if="value.ui.readMore" class="template-read-more"> {{ \'common:READ_MORE\' | i18next }}... </div> </div> <div data-ng-show="$ctrl.isTemplateSelected(key)" class="function-template-content"> <ng-form name="templateForm{{$index}}"> <div data-ng-if="$ctrl.isProjectsDropDownVisible()" class="projects-drop-down"> <span class="input-label asterisk"> {{ \'common:PROJECT\' | i18next }} </span> <igz-default-dropdown data-is-required="true" data-values-array="$ctrl.projectsList" data-selected-item="$ctrl.selectedProject" data-item-select-callback="$ctrl.onProjectChange(item, isItemChanged)" data-form-object="$ctrl.functionFromTemplateForm[\'templateForm\' + $index]" data-input-name="project"> <div class="transcluded-item" data-ng-click="$ctrl.createNewProject()"> {{ \'functions:NEW_PROJECT\' | i18next }} </div> </igz-default-dropdown> </div> <div class="function-name"> <span class="input-label asterisk"> {{ \'common:NAME\' | i18next }} </span> <igz-validating-input-field data-field-type="input" data-input-name="function-name-{{$index}}" data-input-value="$ctrl.functionName" data-form-object="$ctrl.functionFromTemplateForm[\'templateForm\' + $index]" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-validation-is-required="true" data-validation-rules="$ctrl.validationRules.functionName" data-validation-max-length="{{$ctrl.maxLengths.functionName}}" data-input-model-options="$ctrl.inputModelOptions" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_FUNCTION_NAME\' | i18next }}..."> </igz-validating-input-field> </div> <div class="buttons-wrapper"> <button class="ncl-secondary-button igz-button-just-text" data-ng-click="$ctrl.unselectTemplate($event)"> {{ \'common:CANCEL\' | i18next }} </button> <button class="ncl-primary-button igz-button-primary" data-ng-click="$ctrl.createFunction()" data-ng-class="{\'disabled\': !$ctrl.isCreateFunctionAllowed()}"> {{ \'common:CREATE\' | i18next }} </button> </div> </ng-form> </div> </div> </div> </form> </div> </div> </div> ');
|
|
24803
24814
|
}]);
|
|
24804
24815
|
})();
|
|
24805
24816
|
|
|
@@ -24837,8 +24848,8 @@ try {
|
|
|
24837
24848
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24838
24849
|
}
|
|
24839
24850
|
module.run(['$templateCache', function($templateCache) {
|
|
24840
|
-
$templateCache.put('nuclio/functions/version/version-
|
|
24841
|
-
'<div class="ncl-
|
|
24851
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-annotations/version-configuration-annotations.tpl.html',
|
|
24852
|
+
'<div class="ncl-version-configuration-annotations"> <div class="title"> <span>{{ \'functions:ANNOTATIONS\' | i18next }}</span> <igz-more-info data-description="{{$ctrl.tooltip}}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> </div> <form name="$ctrl.annotationsForm" class="annotations-wrapper" novalidate> <div data-ng-if="$ctrl.annotations.length > 0" class="table-headers"> <div class="key-header"> {{ \'common:KEY\' | i18next }} <igz-more-info data-description="{{$ctrl.keyTooltip}}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> </div> <div class="value-header"> {{ \'common:VALUE\' | i18next }} </div> </div> <div class="igz-scrollable-container scrollable-annotations" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="annotation in $ctrl.annotations"> <ncl-key-value-input class="new-label-input" data-row-data="annotation" data-use-type="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-item-index="$index" data-validation-rules="$ctrl.validationRules" data-action-handler-callback="$ctrl.handleAction(actionType, index)" data-change-data-callback="$ctrl.onChangeData(newData, index)" data-submit-on-fly="true"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-annotation-button" data-ng-class="{\'disabled\': $ctrl.isFunctionDeploying()}" data-ng-click="$ctrl.addNewAnnotation($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_ANNOTATION\' | i18next }} </div> </form> </div> ');
|
|
24842
24853
|
}]);
|
|
24843
24854
|
})();
|
|
24844
24855
|
|
|
@@ -24849,8 +24860,8 @@ try {
|
|
|
24849
24860
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24850
24861
|
}
|
|
24851
24862
|
module.run(['$templateCache', function($templateCache) {
|
|
24852
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
24853
|
-
'<div class="ncl-version-configuration-
|
|
24863
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-basic-settings/version-configuration-basic-settings.tpl.html',
|
|
24864
|
+
'<div class="ncl-version-configuration-basic-settings"> <div class="title">{{ \'common:BASIC_SETTINGS\' | i18next }}</div> <form name="$ctrl.basicSettingsForm" class="basic-settings-wrapper" novalidate> <div class="row enable-checkbox"> <input type="checkbox" class="small" id="enable" data-ng-disabled="$ctrl.isFunctionDeploying()" data-ng-model="$ctrl.enableFunction" data-ng-change="$ctrl.updateEnableStatus()"> <label for="enable" class="checkbox-inline">{{ \'common:ENABLED\' | i18next }}</label> </div> <div class="row" data-ng-if="$ctrl.isDemoMode()"> <div class="timeout-block"> <div class="label"> <div class="timeout-checkbox"> <input type="checkbox" class="small" id="timeout" data-ng-disabled="$ctrl.isFunctionDeploying()" data-ng-model="$ctrl.enableTimeout"> <label for="timeout" class="checkbox-inline">{{ \'functions:TIMEOUT\' | i18next }}</label> </div> </div> <div class="timeout-values"> <div class="inputs"> <igz-validating-input-field data-field-type="input" data-input-name="min" data-input-value="$ctrl.timeout.min" data-is-focused="false" data-is-disabled="!$ctrl.enableTimeout" data-read-only="$ctrl.isFunctionDeploying()" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="timeout.min" data-form-object="$ctrl.basicSettingsForm" data-validation-is-required="true" data-validation-rules="$ctrl.validationRules.integer" data-placeholder-text="{{ \'common:MIN\' | i18next }}..."> </igz-validating-input-field> <div class="values-label">{{ \'common:MIN\' | i18next }}</div> <igz-validating-input-field data-field-type="input" data-input-name="sec" data-input-value="$ctrl.timeout.sec" data-is-focused="false" data-is-disabled="!$ctrl.enableTimeout" data-read-only="$ctrl.isFunctionDeploying()" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="timeout.sec" data-form-object="$ctrl.basicSettingsForm" data-validation-is-required="true" data-validation-rules="$ctrl.validationRules.integer" data-placeholder-text="{{ \'functions:SEC\' | i18next }}..."> </igz-validating-input-field> <div class="values-label">{{ \'functions:SEC\' | i18next }}</div> </div> </div> </div> </div> <div class="row"> <div class="description-block"> <div class="label">{{ \'common:DESCRIPTION\' | i18next }}</div> <igz-validating-input-field data-field-type="input" data-input-name="description" data-input-value="$ctrl.version.spec.description" data-is-focused="false" data-read-only="$ctrl.isFunctionDeploying()" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="spec.description" data-form-object="$ctrl.basicSettingsForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_DESCRIPTION\' | i18next }}"> </igz-validating-input-field> </div> </div> <div class="row"> <div class="account-block"> <div class="label">{{ \'functions:SERVICE_ACCOUNT\' | i18next }}</div> <igz-validating-input-field data-field-type="input" data-input-name="serviceAccount" data-read-only="$ctrl.isFunctionDeploying()" data-input-value="$ctrl.version.spec.serviceAccount" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="spec.serviceAccount" data-form-object="$ctrl.basicSettingsForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.MY_SERVICE_ACCOUNT\' | i18next }}"> </igz-validating-input-field> </div> </div> <div class="row"> <div class="run-as-user-block"> <div class="label" data-ng-class="{asterisk: $ctrl.version.spec.securityContext.runAsGroup}"> {{ \'common:RUN_AS_USER\' | i18next }} </div> <igz-number-input data-allow-empty-field="true" data-validation-is-required="$ctrl.lodash.isNumber($ctrl.version.spec.securityContext.runAsGroup)" data-value-step="1" data-min-value="0" data-max-value="2147483647" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.basicSettingsForm" data-input-name="run_as_user" data-update-number-input-callback="$ctrl.inputValueCallback(newData, field)" data-update-number-input-field="spec.securityContext.runAsUser" data-current-value="$ctrl.version.spec.securityContext.runAsUser"> </igz-number-input> </div> <div class="run-as-group-block"> <div class="label">{{ \'common:RUN_AS_GROUP\' | i18next }}</div> <igz-number-input data-allow-empty-field="true" data-value-step="1" data-min-value="0" data-max-value="2147483647" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.basicSettingsForm" data-input-name="run_as_group" data-update-number-input-callback="$ctrl.inputValueCallback(newData, field)" data-update-number-input-field="spec.securityContext.runAsGroup" data-current-value="$ctrl.version.spec.securityContext.runAsGroup"> </igz-number-input> </div> <div class="fs-group-block" data-ng-if="!$ctrl.platformIsKube"> <div class="label">{{ \'common:FS_GROUP\' | i18next }}</div> <igz-number-input data-allow-empty-field="true" data-value-step="1" data-min-value="0" data-max-value="2147483647" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.basicSettingsForm" data-input-name="fs_group" data-update-number-input-callback="$ctrl.inputValueCallback(newData, field)" data-update-number-input-field="spec.securityContext.fsGroup" data-current-value="$ctrl.version.spec.securityContext.fsGroup"> </igz-number-input> </div> </div> <div class="row"> <div class="logger-block"> <div class="logger-dropdown"> <span class="label">{{ \'functions:LOGGER_LEVEL\' | i18next }}</span> <igz-default-dropdown data-selected-item="$ctrl.version.spec.loggerSinks[0].level" data-select-property-only="id" data-values-array="$ctrl.logLevelValues" data-item-select-callback="$ctrl.setPriority(item)" data-read-only="$ctrl.isFunctionDeploying()" data-enable-overlap="true" data-prevent-drop-up="true"> </igz-default-dropdown> </div> <div class="logger-input" data-ng-if="$ctrl.isDemoMode()"> <span class="label">{{ \'functions:LOGGER_DESTINATION\' | i18next }}</span> <igz-validating-input-field data-field-type="input" data-input-name="arguments" data-read-only="$ctrl.isFunctionDeploying()" data-input-value="$ctrl.version.spec.loggerSinks[0].sink" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="spec.loggerSinks[0].sink" data-form-object="$ctrl.basicSettingsForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_DESTINATION\' | i18next }}"> </igz-validating-input-field> </div> </div> </div> </form> </div> ');
|
|
24854
24865
|
}]);
|
|
24855
24866
|
})();
|
|
24856
24867
|
|
|
@@ -24861,8 +24872,8 @@ try {
|
|
|
24861
24872
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24862
24873
|
}
|
|
24863
24874
|
module.run(['$templateCache', function($templateCache) {
|
|
24864
|
-
$templateCache.put('nuclio/functions/version/version-
|
|
24865
|
-
'<div class="ncl-
|
|
24875
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-build/version-configuration-build.tpl.html',
|
|
24876
|
+
'<div class="ncl-version-configuration-build" data-ng-class="{ disabled: $ctrl.disabled }"> <div class="configuration-build-title-wrapper"> <div class="title pull-left">{{ \'functions:BUILD\' | i18next }}</div> <igz-action-menu data-ng-if="$ctrl.isDemoMode() && !$ctrl.disabled && !$ctrl.isFunctionDeploying()" data-actions="$ctrl.actions" data-icon-class="ncl-icon-paperclip" data-on-fire-action="$ctrl.onFireAction"> </igz-action-menu> <small class="pull-right" data-ng-if="$ctrl.disabled">{{ \'functions:DISABLED_FOR_IMAGE_CODE_ENTRY_TYPE\' | i18next }}</small> </div> <form name="$ctrl.buildForm" class="build-wrapper" novalidate> <div class="igz-row"> <div class="igz-col-100 build-field build-image-field"> <div class="field-label"> <span>{{ \'functions:IMAGE_NAME\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:IMAGE_NAME_DESCRIPTION\' | i18next:{defaultImageName: $ctrl.version.ui.defaultImageName} }}" data-is-html-enabled="true" data-trigger="click"> </igz-more-info> </div> <div class="align-items-baseline"> <span class="flex-none">{{ $ctrl.version.ui.imageNamePrefix }}</span> <igz-validating-input-field data-field-type="input" data-input-name="imageName" data-input-value="$ctrl.imageName" data-is-focused="false" data-read-only="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.buildForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_IMAGE_NAME\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-validation-max-length="{{$ctrl.maxLengths.imageName}}" data-validation-pattern="$ctrl.imageNameValidationPattern" data-is-disabled="$ctrl.disabled" class="flex-auto"> </igz-validating-input-field> </div> </div> <div class="igz-col-50 build-field build-base-image-field"> <div class="field-label label-with-tooltip align-items-center"> <span>{{ \'functions:BASE_IMAGE\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:BASE_IMAGE_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="input" data-input-name="baseImage" data-input-value="$ctrl.version.spec.build.baseImage" data-is-focused="false" data-read-only="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.buildForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_BASE_IMAGE\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="spec.build.baseImage" data-is-disabled="$ctrl.disabled"> </igz-validating-input-field> </div> <div class="igz-col-50 build-field build-onbuild-image-field"> <div class="field-label label-with-tooltip align-items-center"> <span>{{ \'functions:ONBUILD_IMAGE\' | i18next }}</span> <igz-more-info data-description="{{$ctrl.onBuildImageDescription}}" data-default-tooltip-placement="left" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="input" data-input-name="onbuildImage" data-input-value="$ctrl.version.spec.build.onbuildImage" data-is-focused="false" data-read-only="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.buildForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_ONBUILD_IMAGE\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="spec.build.onbuildImage" data-is-disabled="$ctrl.disabled"> </igz-validating-input-field> </div> <div class="igz-col-100 build-field"> <div class="field-label"> <span>{{ \'functions:BUILD_COMMANDS\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:BUILD_COMMANDS_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <igz-validating-input-field data-field-type="textarea" data-input-name="commands" data-input-value="$ctrl.build.commands" data-is-focused="false" data-read-only="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.buildForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_COMMAND_ON_EACH_LINE\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="commands" data-is-disabled="$ctrl.disabled" class="build-textarea-input build-commands-input"> </igz-validating-input-field> </div> <div class="igz-col-100 build-field"> <div class="field-label label-with-tooltip align-items-center"> <span>{{ \'functions:READINESS_TIMEOUT_SECONDS\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:READINESS_TIMEOUT_SECONDS_DESCRIPTION\' | i18next:{default: $ctrl.defaultFunctionConfig.spec.readinessTimeoutSeconds} }}" data-trigger="click"> </igz-more-info> </div> <igz-number-input data-form-object="$ctrl.buildForm" data-input-name="readinessTimeoutSeconds" data-current-value="$ctrl.version.spec.readinessTimeoutSeconds" data-update-number-input-callback="$ctrl.inputValueCallback(newData, field)" data-update-number-input-field="spec.readinessTimeoutSeconds" data-allow-empty-field="true" data-value-step="1" data-validation-is-required="false" data-min-value="1" data-is-disabled="$ctrl.disabled || $ctrl.isFunctionDeploying()"> </igz-number-input> </div> <div class="igz-col-100 build-field" data-ng-if="$ctrl.version.spec.runtime === \'java\'"> <div class="field-label">{{ \'functions:REPOSITORIES\' | i18next }}</div> <igz-validating-input-field data-field-type="textarea" data-input-name="repositories" data-input-value="$ctrl.build.runtimeAttributes.repositories" data-is-focused="false" data-read-only="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.buildForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_REPOSITORY_ON_EACH_LINE\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="runtimeAttributes.repositories" class="build-textarea-input" data-is-disabled="$ctrl.disabled"> </igz-validating-input-field> </div> <div class="igz-col-100 build-field" data-ng-if="$ctrl.version.spec.runtime === \'java\'"> <div class="field-label">{{ \'functions:DEPENDENCIES\' | i18next }}</div> <igz-validating-input-field data-field-type="textarea" data-input-name="dependencies" data-input-value="$ctrl.build.dependencies" data-is-focused="false" data-read-only="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.buildForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_DEPENDENCY_ON_EACH_LINE\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="dependencies" class="build-textarea-input" data-is-disabled="$ctrl.disabled"> </igz-validating-input-field> </div> <div class="igz-col-100 build-field build-checkboxes"> <div class="checkbox-block"> <input type="checkbox" class="small" id="noCache" data-ng-model="$ctrl.version.spec.build.noCache" data-ng-disabled="$ctrl.disabled || $ctrl.isFunctionDeploying()"> <label for="noCache" class="checkbox-inline">{{ \'functions:DISABLE_CACHE\' | i18next }}</label> <igz-more-info data-description="{{ \'functions:TOOLTIP.DISABLE_CACHE\' | i18next }}" data-trigger="click" data-default-tooltip-placement="top"> </igz-more-info> </div> <div class="checkbox-block" data-ng-if="$ctrl.platformKindIsKube"> <input type="checkbox" class="small" id="wait-readiness-timeout-before-failure" data-ng-model="$ctrl.version.spec.waitReadinessTimeoutBeforeFailure" data-ng-disabled="$ctrl.disabled || $ctrl.isFunctionDeploying()"> <label for="wait-readiness-timeout-before-failure" class="checkbox-inline">{{ \'functions:ALWAYS_WAIT_FOR_READINESS_TIMEOUT_EXPIRATION\' | i18next }}</label> <igz-more-info data-description="{{ \'functions:TOOLTIP.ALWAYS_WAIT_FOR_READINESS_TIMEOUT_EXPIRATION\' | i18next }}" data-trigger="click" data-default-tooltip-placement="top-left"> </igz-more-info> </div> </div> <div class="igz-col-100 build-field files-field"> <div class="uploading-files"> <div class="uploading-proccess-wrapper" data-ng-class="{\'one-file-uploaded\': $ctrl.file.uploaded || $ctrl.script.uploaded}" data-ng-if="$ctrl.getFileConfig().uploading && $ctrl.getFileConfig().name"> <div class="file-block uploading text-ellipsis" data-ng-class="{\'uploading-file\': $ctrl.file.uploading}"> <span class="{{$ctrl.getFileConfig().icon}}"></span> <button class="build-close-button"> <span class="ncl-icon-close"></span> </button> <span class="file-name"> {{$ctrl.getFileConfig().name}} </span> <div class="progress"> <div class="progress-bar" role="uib-progressbar" aria-valuemin="0" aria-valuemax="100" data-ng-style="{\'width\': $ctrl.getFileConfig().progress}"> </div> </div> </div> </div> <div class="uploaded-wrapper" data-ng-if="$ctrl.file.uploaded|| $ctrl.script.uploaded"> <div class="file-block uploaded text-ellipsis" data-ng-if="$ctrl.script.uploaded" data-ng-class="{\'one-file-uploaded\': $ctrl.file.uploaded}"> <span class="ncl-icon-script"></span> <span class="file-name"> {{$ctrl.script.name}} <span class="uploaded-file-directory">(/usr/bin/mybinary)</span> </span> <button class="build-close-button" data-ng-click="$ctrl.deleteFile(\'script\')"> <span class="ncl-icon-close"></span> </button> </div> <div class="file-block uploaded text-ellipsis uploaded-file" data-ng-if="$ctrl.file.uploaded"> <span class="ncl-icon-file"></span> <span class="file-name"> {{$ctrl.file.name}} <span class="uploaded-file-directory">(/usr/bin/mybinary)</span> </span> <button class="build-close-button" data-ng-click="$ctrl.deleteFile(\'file\')"> <span class="ncl-icon-close"></span> </button> </div> </div> </div> </div> </div> </form> </div> ');
|
|
24866
24877
|
}]);
|
|
24867
24878
|
})();
|
|
24868
24879
|
|
|
@@ -24873,8 +24884,8 @@ try {
|
|
|
24873
24884
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24874
24885
|
}
|
|
24875
24886
|
module.run(['$templateCache', function($templateCache) {
|
|
24876
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
24877
|
-
'<div class="ncl-version-configuration-
|
|
24887
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-environment-variables/version-configuration-environment-variables.tpl.html',
|
|
24888
|
+
'<div class="ncl-version-configuration-environment-variables"> <div class="title">{{ \'common:ENVIRONMENT_VARIABLES\' | i18next }}</div> <form name="$ctrl.environmentVariablesForm" class="resources-wrapper" novalidate> <div class="igz-scrollable-container scrollable-environment-variables" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="variable in $ctrl.variables"> <ncl-key-value-input class="new-label-input" data-row-data="variable" data-item-index="$index" data-use-type="true" data-use-labels="true" data-is-disabled="$ctrl.isFunctionDeploying()" data-validation-rules="$ctrl.validationRules" data-all-value-types="$ctrl.isOnlyValueTypeInputs" data-action-handler-callback="$ctrl.handleAction(actionType, index)" data-change-data-callback="$ctrl.onChangeData(newData, index)" data-change-type-callback="$ctrl.onChangeType(newType, index)" data-dropdown-overlap="true" data-submit-on-fly="true"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-variable-button" data-ng-class="{ \'disabled\': $ctrl.isFunctionDeploying() }" data-ng-click="$ctrl.addNewVariable($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_ENVIRONMENT_VARIABLE\' | i18next }} </div> </form> </div> ');
|
|
24878
24889
|
}]);
|
|
24879
24890
|
})();
|
|
24880
24891
|
|
|
@@ -24885,8 +24896,8 @@ try {
|
|
|
24885
24896
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24886
24897
|
}
|
|
24887
24898
|
module.run(['$templateCache', function($templateCache) {
|
|
24888
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
24889
|
-
'<div class="ncl-version-configuration-
|
|
24899
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-labels/version-configuration-labels.tpl.html',
|
|
24900
|
+
'<div class="ncl-version-configuration-labels"> <div class="title"> <span>{{ \'common:LABELS\' | i18next }}</span> <igz-more-info data-description="{{$ctrl.tooltip}}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> </div> <form name="$ctrl.labelsForm" class="labels-wrapper" novalidate> <div data-ng-if="$ctrl.labels.length > 0" class="table-headers"> <div class="key-header"> {{ \'common:KEY\' | i18next }} <igz-more-info data-description="{{$ctrl.keyTooltip}}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> </div> <div class="value-header"> {{ \'common:VALUE\' | i18next }} </div> </div> <div class="igz-scrollable-container scrollable-labels" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="label in $ctrl.labels"> <ncl-key-value-input class="new-label-input" data-row-data="label" data-item-index="$index" data-use-type="false" data-validation-rules="$ctrl.validationRules" data-is-disabled="$ctrl.isLabelsDisabled() || $ctrl.isFunctionDeploying()" data-action-handler-callback="$ctrl.handleAction(actionType, index)" data-change-data-callback="$ctrl.onChangeData(newData, index)" data-submit-on-fly="true" data-key-tooltip="$ctrl.isLabelsDisabled() ? $ctrl.addNewLabelTooltip : \'\'" data-value-tooltip="$ctrl.isLabelsDisabled() ? $ctrl.addNewLabelTooltip : \'\'"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-label-button" data-ng-class="{\'disabled\': $ctrl.isLabelsDisabled() || $ctrl.isFunctionDeploying()}" data-ng-click="$ctrl.addNewLabel($event)" data-uib-tooltip="{{$ctrl.isLabelsDisabled() ? $ctrl.addNewLabelTooltip : \'\'}}" data-tooltip-append-to-body="true" data-tooltip-placement="right" data-tooltip-popup-delay="100"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_LABEL\' | i18next }} </div> </form> </div> ');
|
|
24890
24901
|
}]);
|
|
24891
24902
|
})();
|
|
24892
24903
|
|
|
@@ -24909,8 +24920,8 @@ try {
|
|
|
24909
24920
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24910
24921
|
}
|
|
24911
24922
|
module.run(['$templateCache', function($templateCache) {
|
|
24912
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
24913
|
-
'<div class="ncl-version-configuration-labels"> <div class="title"> <span>{{ \'common:LABELS\' | i18next }}</span> <igz-more-info data-description="{{$ctrl.tooltip}}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> </div> <form name="$ctrl.labelsForm" class="labels-wrapper" novalidate> <div data-ng-if="$ctrl.labels.length > 0" class="table-headers"> <div class="key-header"> {{ \'common:KEY\' | i18next }} <igz-more-info data-description="{{$ctrl.keyTooltip}}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> </div> <div class="value-header"> {{ \'common:VALUE\' | i18next }} </div> </div> <div class="igz-scrollable-container scrollable-labels" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="label in $ctrl.labels"> <ncl-key-value-input class="new-label-input" data-row-data="label" data-item-index="$index" data-use-type="false" data-validation-rules="$ctrl.validationRules" data-is-disabled="$ctrl.isLabelsDisabled() || $ctrl.isFunctionDeploying()" data-action-handler-callback="$ctrl.handleAction(actionType, index)" data-change-data-callback="$ctrl.onChangeData(newData, index)" data-submit-on-fly="true" data-key-tooltip="$ctrl.isLabelsDisabled() ? $ctrl.addNewLabelTooltip : \'\'" data-value-tooltip="$ctrl.isLabelsDisabled() ? $ctrl.addNewLabelTooltip : \'\'"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-label-button" data-ng-class="{\'disabled\': $ctrl.isLabelsDisabled() || $ctrl.isFunctionDeploying()}" data-ng-click="$ctrl.addNewLabel($event)" data-uib-tooltip="{{$ctrl.isLabelsDisabled() ? $ctrl.addNewLabelTooltip : \'\'}}" data-tooltip-append-to-body="true" data-tooltip-placement="right" data-tooltip-popup-delay="100"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_LABEL\' | i18next }} </div> </form> </div> ');
|
|
24923
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-resources/version-configuration-resources.tpl.html',
|
|
24924
|
+
'<div class="ncl-version-configuration-resources"> <form name="$ctrl.resourcesForm" class="resources-wrapper" novalidate> <div class="title">{{ \'common:RESOURCES\' | i18next }}</div> <div class="row"> <div class="igz-row form-row" data-ng-if="$ctrl.selectedPodTolerationOption"> <div class="igz-col-40 row-title">{{ \'functions:RUN_ON_SPOT_NODES\' | i18next }} <igz-more-info data-description="{{$ctrl.selectedPodTolerationOption.tooltip}}"></igz-more-info> </div> <div class="igz-col-20 input-wrapper"></div> <div class="igz-col-40 input-wrapper"> <div class="row-input preemtion-mode-input"> <igz-default-dropdown data-values-array="$ctrl.podTolerationsOptions" data-selected-item="$ctrl.selectedPodTolerationOption" data-is-disabled="$ctrl.isFunctionDeploying()" data-item-select-callback="$ctrl.podTolerationDropdownCallback(item, isItemChanged, field)" data-item-select-field="spec.preemptionMode"> </igz-default-dropdown> </div> </div> </div> <div class="igz-row form-row"> <div class="igz-col-40 row-title">{{ \'functions:PODS_PRIORITY\' | i18next }}</div> <div class="igz-col-20 input-wrapper"></div> <div class="igz-col-40 input-wrapper"> <div class="row-input priority-class-input"> <igz-default-dropdown data-values-array="$ctrl.podsPriorityOptions" data-selected-item="$ctrl.selectedPodsPriority" data-is-disabled="$ctrl.isFunctionDeploying()" data-item-select-callback="$ctrl.podsPriorityDropdownCallback(item, isItemChanged, field)" data-item-select-field="spec.priorityClassName"> </igz-default-dropdown> </div> </div> </div> <div class="igz-row form-row range-inputs-row"> <div class="igz-col-20 row-title">{{ \'common:MEMORY\' | i18next }} <igz-more-info data-trigger="click" data-is-html-enabled="true" data-is-open="$ctrl.memoryWarningOpen" data-icon-type="{{$ctrl.memoryWarningOpen ? \'warn\' : \'info\'}}" data-description="{{ \'common:RESOURCES_WARNING_LIMIT_FILLED_REQUEST_EMPTY\' | i18next:{ when: \'the function is deployed\' } }}"> </igz-more-info> </div> <div class="igz-col-40 input-wrapper"> <div class="input-title">{{ \'common:REQUEST\' | i18next }}</div> <div class="row-input memory-input memory-number-input"> <igz-number-input data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.resourcesForm" data-input-name="requestMemory" data-update-number-input-callback="$ctrl.memoryInputCallback(newData, field)" data-update-number-input-field="resources.requests.memory" data-min-value="1" data-current-value="$ctrl.resources.requests.memory" data-value-step="1"> </igz-number-input> </div> <div class="row-input memory-input memory-size-dropdown"> <igz-default-dropdown data-read-only="$ctrl.isFunctionDeploying()" data-values-array="$ctrl.dropdownOptions" data-selected-item="$ctrl.selectedRequestUnit" data-item-select-callback="$ctrl.memoryDropdownCallback(item, isItemChanges, field)" data-item-select-field="spec.resources.requests.memory"> </igz-default-dropdown> </div> </div> <div class="igz-col-40 input-wrapper"> <div class="input-title">{{ \'common:LIMIT\' | i18next }}</div> <div class="row-input memory-input memory-number-input"> <igz-number-input data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.resourcesForm" data-input-name="limitsMemory" data-min-value="1" data-update-number-input-callback="$ctrl.memoryInputCallback(newData, field)" data-update-number-input-field="resources.limits.memory" data-current-value="$ctrl.resources.limits.memory" data-value-step="1"> </igz-number-input> </div> <div class="row-input memory-input memory-size-dropdown"> <igz-default-dropdown data-read-only="$ctrl.isFunctionDeploying()" data-values-array="$ctrl.dropdownOptions" data-selected-item="$ctrl.selectedLimitUnit" data-item-select-callback="$ctrl.memoryDropdownCallback(item, isItemChanges, field)" data-item-select-field="spec.resources.limits.memory"> </igz-default-dropdown> </div> </div> </div> <div class="igz-row form-row range-inputs-row"> <div class="igz-col-20 row-title">{{ \'common:CPU\' | i18next }}</div> <div class="igz-col-40 input-wrapper"> <div class="input-title">{{ \'common:REQUEST\' | i18next }}</div> <div class="row-input cpu-number-input"> <igz-number-input data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.resourcesForm" data-input-name="requestCpu" data-placeholder="{{ $ctrl.selectedCpuRequestItem.placeholder }}" data-update-number-input-callback="$ctrl.cpuInputCallback(newData, field)" data-update-number-input-field="resources.requests.cpu" data-min-value="$ctrl.selectedCpuRequestItem.minValue" data-precision="{{ $ctrl.selectedCpuRequestItem.precision }}" data-value-step="{{ $ctrl.selectedCpuRequestItem.step }}" data-current-value="$ctrl.resources.requests.cpu"> </igz-number-input> </div> <div class="row-input cpu-dropdown"> <igz-default-dropdown data-read-only="$ctrl.isFunctionDeploying()" data-values-array="$ctrl.cpuDropdownOptions" data-selected-item="$ctrl.selectedCpuRequestItem" data-item-select-callback="$ctrl.cpuDropdownCallback(item, isItemChanged, field)" data-item-select-field="selectedCpuRequestItem"> </igz-default-dropdown> </div> </div> <div class="igz-col-40 input-wrapper"> <div class="input-title">{{ \'common:LIMIT\' | i18next }}</div> <div class="row-input cpu-number-input"> <igz-number-input data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.resourcesForm" data-input-name="limitsCpu" data-placeholder="{{ $ctrl.selectedCpuLimitItem.placeholder }}" data-update-number-input-callback="$ctrl.cpuInputCallback(newData, field)" data-update-number-input-field="resources.limits.cpu" data-min-value="$ctrl.selectedCpuLimitItem.minValue" data-precision="{{ $ctrl.selectedCpuLimitItem.precision }}" data-value-step="{{ $ctrl.selectedCpuLimitItem.step }}" data-current-value="$ctrl.resources.limits.cpu"> </igz-number-input> </div> <div class="row-input cpu-dropdown"> <igz-default-dropdown data-read-only="$ctrl.isFunctionDeploying()" data-values-array="$ctrl.cpuDropdownOptions" data-selected-item="$ctrl.selectedCpuLimitItem" data-item-select-callback="$ctrl.cpuDropdownCallback(item, isItemChanged, field)" data-item-select-field="selectedCpuLimitItem"> </igz-default-dropdown> </div> </div> </div> <div class="igz-row form-row range-inputs-row"> <div class="igz-col-20 row-title">{{ \'common:GPU\' | i18next }}</div> <div class="igz-col-40 input-wrapper"></div> <div class="igz-col-40 input-wrapper" data-uib-tooltip="{{ \'functions:TOOLTIP.GPU_LIMIT\' | i18next }}" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="500"> <div class="input-title">{{ \'common:LIMIT\' | i18next }}</div> <div class="row-input gpu-number-input"> <igz-number-input data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.resourcesForm" data-input-name="limitsGpu" data-update-number-input-callback="$ctrl.gpuInputCallback(newData, field)" data-update-number-input-field="limits" data-min-value="1" data-max-value="4" data-value-step="1" data-current-value="$ctrl.resources.limits.gpu"> </igz-number-input> </div> </div> </div> <div class="igz-row form-row range-inputs-row"> <div class="igz-col-20 row-title"> {{ \'common:REPLICAS\' | i18next }} </div> <div class="igz-col-40 input-wrapper"> <div class="input-title"> {{ \'common:MIN\' | i18next }} <igz-more-info data-description="{{ \'functions:MIN_REPLICAS\' | i18next:{default: $ctrl.defaultFunctionConfig.spec.minReplicas} }}" data-default-tooltip-placement="top" data-trigger="click"> </igz-more-info> </div> <div class="row-input replicas-number-input"> <igz-number-input data-form-object="$ctrl.resourcesForm" data-input-name="minReplicas" data-current-value="$ctrl.minReplicas" data-update-number-input-callback="$ctrl.replicasInputCallback(newData, field)" data-update-number-input-field="minReplicas" data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-placeholder="" data-precision="0" data-value-step="1" data-min-value="0" data-max-value="$ctrl.maxReplicas || Infinity"> </igz-number-input> </div> </div> <div class="igz-col-40 input-wrapper"> <div class="input-title" data-ng-class="{ asterisk: $ctrl.minReplicas === 0 }"> {{ \'functions:MAX\' | i18next }} <igz-more-info data-description="{{ \'functions:MAX_REPLICAS\' | i18next:{default: $ctrl.defaultFunctionConfig.spec.maxReplicas} }}" data-default-tooltip-placement="top" data-trigger="click"> </igz-more-info> </div> <div class="row-input replicas-number-input"> <igz-number-input data-form-object="$ctrl.resourcesForm" data-input-name="maxReplicas" data-current-value="$ctrl.maxReplicas" data-update-number-input-callback="$ctrl.replicasInputCallback(newData, field)" data-update-number-input-field="maxReplicas" data-allow-empty-field="true" data-is-disabled="$ctrl.isFunctionDeploying()" data-placeholder="{{ $ctrl.minReplicas === 0 ? (\'functions:PLACEHOLDER.MAX_REQUIRED\' | i18next) : \'\' }}" data-precision="0" data-value-step="1" data-validation-is-required="$ctrl.minReplicas === 0" data-min-value="$ctrl.minReplicas || 1"> </igz-number-input> </div> </div> </div> <div class="igz-row form-row align-items-center slider-block" data-ng-if="$ctrl.isInactivityWindowShown()"> <div class="igz-col-25 row-title no-margin"> <span>{{ \'common:INACTIVITY_WINDOW\' | i18next }}</span> <igz-more-info data-description="{{ \'common:INACTIVITY_WINDOW_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <div class="igz-col-75 row-input slider" data-uib-tooltip="{{ \'functions:TOOLTIP.INACTIVITY_WINDOW\' | i18next }}" data-tooltip-enable="$ctrl.windowSizeSlider.options.disabled" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="500"> <rzslider class="rzslider" data-rz-slider-model="$ctrl.windowSizeSlider.value" data-rz-slider-options="$ctrl.windowSizeSlider.options"> </rzslider> </div> </div> <div class="igz-row form-row range-inputs-row slider-block"> <div class="igz-col-25 row-title no-margin target-cpu-title"> <span>{{ \'common:TARGET_CPU\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:TARGET_CPU_DESCRIPTION\' | i18next:{default: $ctrl.defaultFunctionConfig.spec.targetCPU} }}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> </div> <div class="igz-col-75 row-input slider"> <igz-slider-input-block data-slider-config="$ctrl.targetCpuSliderConfig" data-measure-units="null" data-value-unit="$ctrl.targetCpuValueUnit" data-slider-block-updating-broadcast="" data-on-change-callback="$ctrl.sliderInputCallback" data-update-slider-input="spec.targetCPU" data-allow-full-range="true" data-uib-tooltip="{{ \'functions:TOOLTIP.TARGET_CPU\' | i18next }}" data-tooltip-enable="$ctrl.targetCpuSliderConfig.options.disabled" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="500"> </igz-slider-input-block> </div> </div> </div> </form> <form name="$ctrl.nodeSelectorsForm" novalidate> <div class="igz-row-flex"> <div class="title">{{ \'functions:NODE_SELECTORS\' | i18next }}</div> <a class="link" data-ng-class="{ \'disabled\': $ctrl.isFunctionDeploying() }" data-ng-click="$ctrl.handleRevertToDefaultsClick()" data-ng-hide="$ctrl.revertToDefaultsBtnIsHidden"> {{ \'functions:REVERT_TO_DEFAULTS\' | i18next }} </a> </div> <div class="row"> <div class="igz-row form-row"> <div class="table-body" data-ng-repeat="nodeSelector in $ctrl.nodeSelectors"> <ncl-key-value-input class="node-selectors" data-row-data="nodeSelector" data-item-index="$index" data-use-type="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-validation-rules="$ctrl.nodeSelectorsValidationRules" data-action-handler-callback="$ctrl.handleNodeSelectorsAction(actionType, index)" data-change-data-callback="$ctrl.onChangeNodeSelectorsData(newData, index)" data-submit-on-fly="true"> </ncl-key-value-input> </div> <div class="igz-create-button" data-ng-class="{ \'disabled\': $ctrl.isFunctionDeploying() }" data-ng-click="$ctrl.addNewNodeSelector($event)"> <span class="igz-icon-add-round"></span> {{ \'common:CREATE_NEW_ENTRY\' | i18next }} </div> </div> </div> </form> </div> ');
|
|
24914
24925
|
}]);
|
|
24915
24926
|
})();
|
|
24916
24927
|
|
|
@@ -24921,8 +24932,8 @@ try {
|
|
|
24921
24932
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24922
24933
|
}
|
|
24923
24934
|
module.run(['$templateCache', function($templateCache) {
|
|
24924
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
24925
|
-
'<div class="ncl-version-configuration-resources"> <form name="$ctrl.resourcesForm" class="resources-wrapper" novalidate> <div class="title">{{ \'common:RESOURCES\' | i18next }}</div> <div class="row"> <div class="igz-row form-row" data-ng-if="$ctrl.selectedPodTolerationOption"> <div class="igz-col-40 row-title">{{ \'functions:RUN_ON_SPOT_NODES\' | i18next }} <igz-more-info data-description="{{$ctrl.selectedPodTolerationOption.tooltip}}"></igz-more-info> </div> <div class="igz-col-20 input-wrapper"></div> <div class="igz-col-40 input-wrapper"> <div class="row-input preemtion-mode-input"> <igz-default-dropdown data-values-array="$ctrl.podTolerationsOptions" data-selected-item="$ctrl.selectedPodTolerationOption" data-is-disabled="$ctrl.isFunctionDeploying()" data-item-select-callback="$ctrl.podTolerationDropdownCallback(item, isItemChanged, field)" data-item-select-field="spec.preemptionMode"> </igz-default-dropdown> </div> </div> </div> <div class="igz-row form-row"> <div class="igz-col-40 row-title">{{ \'functions:PODS_PRIORITY\' | i18next }}</div> <div class="igz-col-20 input-wrapper"></div> <div class="igz-col-40 input-wrapper"> <div class="row-input priority-class-input"> <igz-default-dropdown data-values-array="$ctrl.podsPriorityOptions" data-selected-item="$ctrl.selectedPodsPriority" data-is-disabled="$ctrl.isFunctionDeploying()" data-item-select-callback="$ctrl.podsPriorityDropdownCallback(item, isItemChanged, field)" data-item-select-field="spec.priorityClassName"> </igz-default-dropdown> </div> </div> </div> <div class="igz-row form-row range-inputs-row"> <div class="igz-col-20 row-title">{{ \'common:MEMORY\' | i18next }} <igz-more-info data-trigger="click" data-is-html-enabled="true" data-is-open="$ctrl.memoryWarningOpen" data-icon-type="{{$ctrl.memoryWarningOpen ? \'warn\' : \'info\'}}" data-description="{{ \'common:RESOURCES_WARNING_LIMIT_FILLED_REQUEST_EMPTY\' | i18next:{ when: \'the function is deployed\' } }}"> </igz-more-info> </div> <div class="igz-col-40 input-wrapper"> <div class="input-title">{{ \'common:REQUEST\' | i18next }}</div> <div class="row-input memory-input memory-number-input"> <igz-number-input data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.resourcesForm" data-input-name="requestMemory" data-update-number-input-callback="$ctrl.memoryInputCallback(newData, field)" data-update-number-input-field="resources.requests.memory" data-min-value="1" data-current-value="$ctrl.resources.requests.memory" data-value-step="1"> </igz-number-input> </div> <div class="row-input memory-input memory-size-dropdown"> <igz-default-dropdown data-read-only="$ctrl.isFunctionDeploying()" data-values-array="$ctrl.dropdownOptions" data-selected-item="$ctrl.selectedRequestUnit" data-item-select-callback="$ctrl.memoryDropdownCallback(item, isItemChanges, field)" data-item-select-field="spec.resources.requests.memory"> </igz-default-dropdown> </div> </div> <div class="igz-col-40 input-wrapper"> <div class="input-title">{{ \'common:LIMIT\' | i18next }}</div> <div class="row-input memory-input memory-number-input"> <igz-number-input data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.resourcesForm" data-input-name="limitsMemory" data-min-value="1" data-update-number-input-callback="$ctrl.memoryInputCallback(newData, field)" data-update-number-input-field="resources.limits.memory" data-current-value="$ctrl.resources.limits.memory" data-value-step="1"> </igz-number-input> </div> <div class="row-input memory-input memory-size-dropdown"> <igz-default-dropdown data-read-only="$ctrl.isFunctionDeploying()" data-values-array="$ctrl.dropdownOptions" data-selected-item="$ctrl.selectedLimitUnit" data-item-select-callback="$ctrl.memoryDropdownCallback(item, isItemChanges, field)" data-item-select-field="spec.resources.limits.memory"> </igz-default-dropdown> </div> </div> </div> <div class="igz-row form-row range-inputs-row"> <div class="igz-col-20 row-title">{{ \'common:CPU\' | i18next }}</div> <div class="igz-col-40 input-wrapper"> <div class="input-title">{{ \'common:REQUEST\' | i18next }}</div> <div class="row-input cpu-number-input"> <igz-number-input data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.resourcesForm" data-input-name="requestCpu" data-placeholder="{{ $ctrl.selectedCpuRequestItem.placeholder }}" data-update-number-input-callback="$ctrl.cpuInputCallback(newData, field)" data-update-number-input-field="resources.requests.cpu" data-min-value="$ctrl.selectedCpuRequestItem.minValue" data-precision="{{ $ctrl.selectedCpuRequestItem.precision }}" data-value-step="{{ $ctrl.selectedCpuRequestItem.step }}" data-current-value="$ctrl.resources.requests.cpu"> </igz-number-input> </div> <div class="row-input cpu-dropdown"> <igz-default-dropdown data-read-only="$ctrl.isFunctionDeploying()" data-values-array="$ctrl.cpuDropdownOptions" data-selected-item="$ctrl.selectedCpuRequestItem" data-item-select-callback="$ctrl.cpuDropdownCallback(item, isItemChanged, field)" data-item-select-field="selectedCpuRequestItem"> </igz-default-dropdown> </div> </div> <div class="igz-col-40 input-wrapper"> <div class="input-title">{{ \'common:LIMIT\' | i18next }}</div> <div class="row-input cpu-number-input"> <igz-number-input data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.resourcesForm" data-input-name="limitsCpu" data-placeholder="{{ $ctrl.selectedCpuLimitItem.placeholder }}" data-update-number-input-callback="$ctrl.cpuInputCallback(newData, field)" data-update-number-input-field="resources.limits.cpu" data-min-value="$ctrl.selectedCpuLimitItem.minValue" data-precision="{{ $ctrl.selectedCpuLimitItem.precision }}" data-value-step="{{ $ctrl.selectedCpuLimitItem.step }}" data-current-value="$ctrl.resources.limits.cpu"> </igz-number-input> </div> <div class="row-input cpu-dropdown"> <igz-default-dropdown data-read-only="$ctrl.isFunctionDeploying()" data-values-array="$ctrl.cpuDropdownOptions" data-selected-item="$ctrl.selectedCpuLimitItem" data-item-select-callback="$ctrl.cpuDropdownCallback(item, isItemChanged, field)" data-item-select-field="selectedCpuLimitItem"> </igz-default-dropdown> </div> </div> </div> <div class="igz-row form-row range-inputs-row"> <div class="igz-col-20 row-title">{{ \'common:GPU\' | i18next }}</div> <div class="igz-col-40 input-wrapper"></div> <div class="igz-col-40 input-wrapper" data-uib-tooltip="{{ \'functions:TOOLTIP.GPU_LIMIT\' | i18next }}" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="500"> <div class="input-title">{{ \'common:LIMIT\' | i18next }}</div> <div class="row-input gpu-number-input"> <igz-number-input data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.resourcesForm" data-input-name="limitsGpu" data-update-number-input-callback="$ctrl.gpuInputCallback(newData, field)" data-update-number-input-field="limits" data-min-value="1" data-max-value="4" data-value-step="1" data-current-value="$ctrl.resources.limits.gpu"> </igz-number-input> </div> </div> </div> <div class="igz-row form-row range-inputs-row"> <div class="igz-col-20 row-title"> {{ \'common:REPLICAS\' | i18next }} </div> <div class="igz-col-40 input-wrapper"> <div class="input-title"> {{ \'common:MIN\' | i18next }} <igz-more-info data-description="{{ \'functions:MIN_REPLICAS\' | i18next:{default: $ctrl.defaultFunctionConfig.spec.minReplicas} }}" data-default-tooltip-placement="top" data-trigger="click"> </igz-more-info> </div> <div class="row-input replicas-number-input"> <igz-number-input data-form-object="$ctrl.resourcesForm" data-input-name="minReplicas" data-current-value="$ctrl.minReplicas" data-update-number-input-callback="$ctrl.replicasInputCallback(newData, field)" data-update-number-input-field="minReplicas" data-allow-empty-field="true" data-validation-is-required="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-placeholder="" data-precision="0" data-value-step="1" data-min-value="0" data-max-value="$ctrl.maxReplicas || Infinity"> </igz-number-input> </div> </div> <div class="igz-col-40 input-wrapper"> <div class="input-title" data-ng-class="{ asterisk: $ctrl.minReplicas === 0 }"> {{ \'functions:MAX\' | i18next }} <igz-more-info data-description="{{ \'functions:MAX_REPLICAS\' | i18next:{default: $ctrl.defaultFunctionConfig.spec.maxReplicas} }}" data-default-tooltip-placement="top" data-trigger="click"> </igz-more-info> </div> <div class="row-input replicas-number-input"> <igz-number-input data-form-object="$ctrl.resourcesForm" data-input-name="maxReplicas" data-current-value="$ctrl.maxReplicas" data-update-number-input-callback="$ctrl.replicasInputCallback(newData, field)" data-update-number-input-field="maxReplicas" data-allow-empty-field="true" data-is-disabled="$ctrl.isFunctionDeploying()" data-placeholder="{{ $ctrl.minReplicas === 0 ? (\'functions:PLACEHOLDER.MAX_REQUIRED\' | i18next) : \'\' }}" data-precision="0" data-value-step="1" data-validation-is-required="$ctrl.minReplicas === 0" data-min-value="$ctrl.minReplicas || 1"> </igz-number-input> </div> </div> </div> <div class="igz-row form-row align-items-center slider-block" data-ng-if="$ctrl.isInactivityWindowShown()"> <div class="igz-col-25 row-title no-margin"> <span>{{ \'common:INACTIVITY_WINDOW\' | i18next }}</span> <igz-more-info data-description="{{ \'common:INACTIVITY_WINDOW_DESCRIPTION\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <div class="igz-col-75 row-input slider" data-uib-tooltip="{{ \'functions:TOOLTIP.INACTIVITY_WINDOW\' | i18next }}" data-tooltip-enable="$ctrl.windowSizeSlider.options.disabled" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="500"> <rzslider class="rzslider" data-rz-slider-model="$ctrl.windowSizeSlider.value" data-rz-slider-options="$ctrl.windowSizeSlider.options"> </rzslider> </div> </div> <div class="igz-row form-row range-inputs-row slider-block"> <div class="igz-col-25 row-title no-margin target-cpu-title"> <span>{{ \'common:TARGET_CPU\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:TARGET_CPU_DESCRIPTION\' | i18next:{default: $ctrl.defaultFunctionConfig.spec.targetCPU} }}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> </div> <div class="igz-col-75 row-input slider"> <igz-slider-input-block data-slider-config="$ctrl.targetCpuSliderConfig" data-measure-units="null" data-value-unit="$ctrl.targetCpuValueUnit" data-slider-block-updating-broadcast="" data-on-change-callback="$ctrl.sliderInputCallback" data-update-slider-input="spec.targetCPU" data-allow-full-range="true" data-uib-tooltip="{{ \'functions:TOOLTIP.TARGET_CPU\' | i18next }}" data-tooltip-enable="$ctrl.targetCpuSliderConfig.options.disabled" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="500"> </igz-slider-input-block> </div> </div> </div> </form> <form name="$ctrl.nodeSelectorsForm" novalidate> <div class="igz-row-flex"> <div class="title">{{ \'functions:NODE_SELECTORS\' | i18next }}</div> <a class="link" data-ng-class="{ \'disabled\': $ctrl.isFunctionDeploying() }" data-ng-click="$ctrl.handleRevertToDefaultsClick()" data-ng-hide="$ctrl.revertToDefaultsBtnIsHidden"> {{ \'functions:REVERT_TO_DEFAULTS\' | i18next }} </a> </div> <div class="row"> <div class="igz-row form-row"> <div class="table-body" data-ng-repeat="nodeSelector in $ctrl.nodeSelectors"> <ncl-key-value-input class="node-selectors" data-row-data="nodeSelector" data-item-index="$index" data-use-type="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-validation-rules="$ctrl.nodeSelectorsValidationRules" data-action-handler-callback="$ctrl.handleNodeSelectorsAction(actionType, index)" data-change-data-callback="$ctrl.onChangeNodeSelectorsData(newData, index)" data-submit-on-fly="true"> </ncl-key-value-input> </div> <div class="igz-create-button" data-ng-class="{ \'disabled\': $ctrl.isFunctionDeploying() }" data-ng-click="$ctrl.addNewNodeSelector($event)"> <span class="igz-icon-add-round"></span> {{ \'common:CREATE_NEW_ENTRY\' | i18next }} </div> </div> </div> </form> </div> ');
|
|
24935
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-runtime-attributes/version-configuration-runtime-attributes.tpl.html',
|
|
24936
|
+
'<div class="ncl-version-configuration-runtime-attributes"> <div class="title">{{ \'functions:RUNTIME_ATTRIBUTES\' | i18next }}</div> <form name="$ctrl.runtimeAttributesForm" class="runtime-attributes-wrapper" novalidate> <div class="row" data-ng-class="{\'info-row\': $ctrl.version.spec.runtime !== \'shell\'}" data-ng-if="$ctrl.version.spec.runtime !== \'java\'"> <div class="runtime-title"> <span class="label">{{ \'functions:RUNTIME\' | i18next }}</span> <div class="runtime"> {{$ctrl.version.spec.runtime}} </div> </div> <div class="arguments-input" data-ng-if="$ctrl.version.spec.runtime === \'shell\'"> <span class="label">{{ \'common:ARGUMENTS\' | i18next }}</span> <igz-validating-input-field data-field-type="input" data-input-name="arguments" data-input-value="$ctrl.runtimeAttributes.arguments" data-read-only="$ctrl.isFunctionDeploying()" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="arguments" data-form-object="$ctrl.runtimeAttributesForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_ARGUMENTS\' | i18next }}"> </igz-validating-input-field> </div> </div> <div class="row igz-col-100 info-row" data-ng-if="$ctrl.version.spec.runtime === \'java\'"> <div class="row igz-col-100 info-row"> <span class="field-label">{{ \'functions:JVM_OPTIONS\' | i18next }}</span> <igz-validating-input-field data-field-type="textarea" data-input-name="jvmOptions" data-input-value="$ctrl.runtimeAttributes.jvmOptions" data-is-focused="false" data-read-only="$ctrl.isFunctionDeploying()" data-form-object="$ctrl.runtimeAttributesForm" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_OPTION_ON_EACH_LINE\' | i18next }}" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="jvmOptions" class="build-command-field java-attribute"> </igz-validating-input-field> </div> </div> <div class="row info-row" data-ng-if="$ctrl.version.spec.runtime === \'shell\'"> <span class="label">{{ \'functions:RESPONSE_HEADERS\' | i18next }}</span> <div data-ng-if="$ctrl.attributes.length > 0" class="table-headers"> <div class="key-header">{{ \'common:KEY\' | i18next }}</div> <div class="value-header">{{ \'common:VALUE\' | i18next }}</div> </div> <div class="igz-scrollable-container" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="table-body" data-ng-repeat="attribute in $ctrl.attributes"> <ncl-key-value-input class="new-label-input" data-row-data="attribute" data-use-type="false" data-is-disabled="$ctrl.isFunctionDeploying()" data-item-index="$index" data-action-handler-callback="$ctrl.handleAction(actionType, index)" data-change-data-callback="$ctrl.onChangeData(newData, index)" data-submit-on-fly="true"> </ncl-key-value-input> </div> </div> <div class="igz-create-button create-label-button" data-ng-class="{\'disabled\': $ctrl.isFunctionDeploying()}" data-ng-click="$ctrl.addNewAttribute($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_RUNTIME_ATTRIBUTE\' | i18next }} </div> </div> </form> </div> ');
|
|
24926
24937
|
}]);
|
|
24927
24938
|
})();
|
|
24928
24939
|
|
|
@@ -24933,8 +24944,8 @@ try {
|
|
|
24933
24944
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24934
24945
|
}
|
|
24935
24946
|
module.run(['$templateCache', function($templateCache) {
|
|
24936
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
24937
|
-
'<div class="ncl-version-configuration-
|
|
24947
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-volumes/version-configuration-volumes.tpl.html',
|
|
24948
|
+
'<div class="ncl-version-configuration-volumes"> <div class="title"> <span>{{ \'functions:VOLUMES\' | i18next }}</span> <igz-more-info data-description="{{ \'functions:TOOLTIP.VOLUMES\' | i18next }}" data-trigger="click"> </igz-more-info> </div> <form name="$ctrl.volumesForm" class="volumes-wrapper" novalidate> <div class="ncl-version-volume"> <div class="common-table"> <div data-ng-if="$ctrl.volumes.length > 0" class="common-table-header item-header"> <div class="common-table-cell item-name"> {{ \'common:NAME\' | i18next }} </div> <div class="common-table-cell item-class"> {{ \'common:TYPE\' | i18next }} </div> <div class="common-table-cell item-info"> {{ \'functions:MOUNT_PATH_PARAMS\' | i18next }} </div> </div> <div class="common-table-body"> <div class="igz-scrollable-container scrollable-volumes" data-ng-scrollbars data-igz-ng-scrollbars-config="{{$ctrl.igzScrollConfig}}" data-ng-scrollbars-config="$ctrl.scrollConfig"> <ncl-collapsing-row data-ng-repeat="volume in $ctrl.volumes" data-item="volume" data-item-index="$index" data-type="volume" data-read-only="$ctrl.isFunctionDeploying()" data-action-handler-callback="$ctrl.handleAction(actionType, selectedItem, index)"> <ncl-edit-item class="common-table-cells-container edit-volume-row" data-item="volume" data-class-list="$ctrl.classList" data-class-placeholder="{{ \'functions:PLACEHOLDER.SELECT_TYPE\' | i18next }}" data-type="volume" data-read-only="$ctrl.isFunctionDeploying()" data-validation-rules="$ctrl.validationRules" data-max-lengths="$ctrl.maxLengths" data-on-submit-callback="$ctrl.editVolumeCallback(item)"> </ncl-edit-item> </ncl-collapsing-row> </div> </div> </div> </div> <div class="igz-create-button create-volume-button" data-ng-class="{\'disabled\': $ctrl.isFunctionDeploying()}" data-ng-click="$ctrl.createVolume($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:CREATE_NEW_VOLUME\' | i18next }} </div> </form> </div> ');
|
|
24938
24949
|
}]);
|
|
24939
24950
|
})();
|
|
24940
24951
|
|
|
@@ -24945,8 +24956,8 @@ try {
|
|
|
24945
24956
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24946
24957
|
}
|
|
24947
24958
|
module.run(['$templateCache', function($templateCache) {
|
|
24948
|
-
$templateCache.put('nuclio/functions/version/version-
|
|
24949
|
-
'<div class="ncl-
|
|
24959
|
+
$templateCache.put('nuclio/functions/version/version-code/function-event-pane/test-events-logs/test-events-logs.tpl.html',
|
|
24960
|
+
'<div class="ncl-test-events-logs"> <div class="functional-buttons" data-ng-if="$ctrl.logs.length > 0"> <div class="ncl-icon-expand-all" data-ng-click="$ctrl.expandAllRows(true)" data-uib-tooltip="{{ \'functions:EXPAND_ALL\' | i18next }}" data-tooltip-popup-delay="300" data-tooltip-placement="left" data-tooltip-append-to-body="true"> </div> <div class="ncl-icon-collapse-all" data-ng-click="$ctrl.expandAllRows(false)" data-uib-tooltip="{{ \'functions:COLLAPSE_ALL\' | i18next }}" data-tooltip-popup-delay="300" data-tooltip-placement="left" data-tooltip-append-to-body="true"> </div> </div> <div data-ng-repeat="log in $ctrl.logs track by $index"> <div class="collapsed-row text-ellipsis" data-ng-if="log.ui.collapsed"> <span class="igz-icon-right" data-ng-click="$ctrl.collapseRow(log, false)"></span> <div class="level-icon {{$ctrl.getLevelIconClass(log)}}"></div> <span class="date">{{log.time | date: "EEE, MMM d, yyyy, HH:mm:ss\'GMT\'" : "+0000"}}</span> <div class="message text-ellipsis">{{log.message}}</div> <div class="ncl-icon-parameters" data-ng-if="$ctrl.hasAdditionalParameters(log)"></div> </div> <div class="expanded-row" data-ng-if="!log.ui.collapsed"> <div class="header"> <span class="igz-icon-down" data-ng-click="$ctrl.collapseRow(log, true)"></span> <div class="level-icon {{$ctrl.getLevelIconClass(log)}}"></div> <span class="date">{{log.time | date: "EEE, MMM d, yyyy, HH:mm:ss\'GMT\'" : "+0000"}}</span> <div class="ncl-icon-parameters" data-ng-if="$ctrl.hasAdditionalParameters(log)"></div> </div> <div class="expanded-body"> <div class="message">{{log.message}}</div> <div class="error" data-ng-if="log.err">{{log.err}}</div> <div class="parameters" data-ng-if="$ctrl.hasAdditionalParameters(log)"> <span class="parameters-header"> {{ \'common:PARAMETERS\' | i18next }} </span> <div data-ng-repeat="(key, value) in $ctrl.getParameters(log)"> <div class="text-ellipsis labels">{{key}}:</div> <div class="text-ellipsis values">{{value}}</div> </div> </div> </div> </div> </div> <div class="no-logs" data-ng-if="$ctrl.logs.length === 0"> {{ \'functions:NO_LOGS_HAVE_BEEN_FOUND\' | i18next }} </div> </div> ');
|
|
24950
24961
|
}]);
|
|
24951
24962
|
})();
|
|
24952
24963
|
|
|
@@ -24957,8 +24968,8 @@ try {
|
|
|
24957
24968
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24958
24969
|
}
|
|
24959
24970
|
module.run(['$templateCache', function($templateCache) {
|
|
24960
|
-
$templateCache.put('nuclio/functions/version/version-
|
|
24961
|
-
'<div class="ncl-
|
|
24971
|
+
$templateCache.put('nuclio/functions/version/version-code/function-event-pane/test-events-navigation-tabs/test-events-navigation-tabs.tpl.html',
|
|
24972
|
+
'<div class="ncl-test-events-navigation-tabs"> <div class="test-events-navigation-tab" data-ng-repeat="item in $ctrl.tabItems" data-ng-click="$ctrl.changeActiveTab(item)" data-ng-class="{\'active\': $ctrl.isActiveTab(item)}"> {{item.tabName | uppercase}} <span class="badge" data-ng-if="item.badge">{{item.badge}}</span> </div> <igz-default-dropdown data-ng-if="$ctrl.selectedLogLevel" data-values-array="$ctrl.logLevelValues" data-select-property-only="id" data-selected-item="$ctrl.selectedLogLevel" data-item-select-callback="$ctrl.onChangeLogLevel({selectedLogLevel: item})" data-enable-overlap="true"> </igz-default-dropdown> </div> ');
|
|
24962
24973
|
}]);
|
|
24963
24974
|
})();
|
|
24964
24975
|
|