iguazio.dashboard-controls 0.38.9 → 0.38.10-patch3
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.
- package/dist/i18n/en/common.json +1 -0
- package/dist/i18n/en/functions.json +1 -1
- package/dist/js/iguazio.dashboard-controls.js +1400 -1388
- package/dist/less/iguazio.dashboard-controls.less +814 -810
- package/package.json +87 -87
- package/src/i18n/en/common.json +1 -0
- package/src/i18n/en/functions.json +1 -1
- package/src/igz_controls/components/default-dropdown/default-dropdown.component.js +32 -23
- package/src/igz_controls/components/default-dropdown/default-dropdown.tpl.html +1 -2
- package/src/igz_controls/less/table.less +4 -0
- package/src/nuclio/common/screens/create-function/function-from-template/function-from-template.component.js +2 -1
- package/src/nuclio/common/screens/create-function/function-from-template/function-from-template.less +1 -1
- package/src/nuclio/functions/functions.component.js +4 -3
- package/src/nuclio/functions/version/version-configuration/tabs/version-configuration-labels/version-configuration-labels.tpl.html +1 -1
- package/src/nuclio/functions/version/version.component.js +2 -1
|
@@ -3647,65 +3647,104 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
3647
3647
|
(function () {
|
|
3648
3648
|
'use strict';
|
|
3649
3649
|
|
|
3650
|
-
|
|
3651
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
3650
|
+
IgzActionMenuController.$inject = ['$element', '$document', '$i18next', '$rootScope', '$scope', '$timeout', '$window', 'i18next', 'lodash', 'ConfigService', 'PreventDropdownCutOffService'];
|
|
3651
|
+
angular.module('iguazio.dashboard-controls').component('igzActionMenu', {
|
|
3652
3652
|
bindings: {
|
|
3653
|
-
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
|
|
3653
|
+
actions: '<',
|
|
3654
|
+
shortcuts: '<',
|
|
3655
|
+
onFireAction: '<?',
|
|
3656
|
+
onClickShortcut: '<?',
|
|
3657
|
+
isMenuShown: '<?',
|
|
3658
|
+
iconClass: '@?',
|
|
3659
|
+
tooltipEnabled: '<?',
|
|
3660
|
+
tooltipText: '@?'
|
|
3657
3661
|
},
|
|
3658
|
-
templateUrl: 'igz_controls/components/action-
|
|
3659
|
-
controller:
|
|
3662
|
+
templateUrl: 'igz_controls/components/action-menu/action-menu.tpl.html',
|
|
3663
|
+
controller: IgzActionMenuController
|
|
3660
3664
|
});
|
|
3661
3665
|
|
|
3662
|
-
function
|
|
3666
|
+
function IgzActionMenuController($element, $document, $i18next, $rootScope, $scope, $timeout, $window, i18next, lodash, ConfigService, PreventDropdownCutOffService) {
|
|
3663
3667
|
var ctrl = this;
|
|
3668
|
+
var lng = i18next.language;
|
|
3664
3669
|
|
|
3665
|
-
ctrl.
|
|
3670
|
+
ctrl.isMenuShown = false;
|
|
3671
|
+
ctrl.preventDropdownCutOff = null;
|
|
3666
3672
|
|
|
3667
3673
|
ctrl.$onInit = onInit;
|
|
3668
|
-
ctrl.$
|
|
3674
|
+
ctrl.$postLink = postLink;
|
|
3669
3675
|
ctrl.$onDestroy = onDestroy;
|
|
3676
|
+
ctrl.$onChanges = onChanges;
|
|
3670
3677
|
|
|
3671
|
-
ctrl.
|
|
3678
|
+
ctrl.isDemoMode = ConfigService.isDemoMode;
|
|
3679
|
+
ctrl.showDetails = showDetails;
|
|
3680
|
+
ctrl.toggleMenu = toggleMenu;
|
|
3681
|
+
ctrl.isVisible = isVisible;
|
|
3672
3682
|
|
|
3673
3683
|
//
|
|
3674
3684
|
// Hook methods
|
|
3675
3685
|
//
|
|
3676
3686
|
|
|
3677
3687
|
/**
|
|
3678
|
-
*
|
|
3688
|
+
* Initialize method
|
|
3679
3689
|
*/
|
|
3680
3690
|
function onInit() {
|
|
3681
|
-
ctrl.
|
|
3682
|
-
ctrl.itemsCount = angular.isUndefined(ctrl.itemsCount) ? 0 : ctrl.itemsCount;
|
|
3691
|
+
ctrl.iconClass = lodash.defaultTo(ctrl.iconClass, 'igz-icon-context-menu');
|
|
3683
3692
|
|
|
3684
|
-
$scope.$on('action-
|
|
3685
|
-
$scope.$on('action-checkbox-all_change-checked-items-count', changeItemsCheckedCount);
|
|
3686
|
-
$scope.$on('action-checkbox-all_set-checked-items-count', setCheckedItemsCount);
|
|
3693
|
+
$scope.$on('close-all-action-menus', closeActionMenu);
|
|
3687
3694
|
}
|
|
3688
3695
|
|
|
3689
3696
|
/**
|
|
3690
|
-
*
|
|
3697
|
+
* On changes hook method
|
|
3691
3698
|
* @param {Object} changes
|
|
3692
3699
|
*/
|
|
3693
3700
|
function onChanges(changes) {
|
|
3694
|
-
|
|
3695
|
-
|
|
3696
|
-
|
|
3701
|
+
var actions = lodash.get(changes, 'actions.currentValue');
|
|
3702
|
+
var shortcuts = lodash.get(changes, 'shortcuts.currentValue');
|
|
3703
|
+
|
|
3704
|
+
if (angular.isDefined(actions)) {
|
|
3705
|
+
ctrl.actions = lodash.chain(actions).filter(function (action) {
|
|
3706
|
+
return !lodash.has(action, 'visible') || action.visible;
|
|
3707
|
+
}).map(function (action) {
|
|
3708
|
+
if (!angular.isFunction(action.handler)) {
|
|
3709
|
+
action.handler = defaultAction;
|
|
3710
|
+
|
|
3711
|
+
if (action.id === 'delete' && angular.isUndefined(action.confirm)) {
|
|
3712
|
+
action.confirm = {
|
|
3713
|
+
message: $i18next.t('common:DELETE_SELECTED_ITEM_CONFIRM', { lng: lng }),
|
|
3714
|
+
yesLabel: $i18next.t('common:YES_DELETE', { lng: lng }),
|
|
3715
|
+
noLabel: $i18next.t('common:CANCEL', { lng: lng }),
|
|
3716
|
+
type: 'critical_alert'
|
|
3717
|
+
};
|
|
3718
|
+
}
|
|
3719
|
+
}
|
|
3720
|
+
|
|
3721
|
+
return action;
|
|
3722
|
+
}).value();
|
|
3723
|
+
}
|
|
3724
|
+
|
|
3725
|
+
if (angular.isDefined(shortcuts)) {
|
|
3726
|
+
ctrl.shortcuts = lodash.filter(shortcuts, function (shortcut) {
|
|
3727
|
+
return !lodash.has(shortcut, 'visible') || shortcut.visible;
|
|
3728
|
+
});
|
|
3697
3729
|
}
|
|
3698
3730
|
}
|
|
3699
3731
|
|
|
3700
3732
|
/**
|
|
3701
|
-
* Destructor
|
|
3733
|
+
* Destructor
|
|
3702
3734
|
*/
|
|
3703
3735
|
function onDestroy() {
|
|
3704
|
-
|
|
3736
|
+
detachDocumentEvent();
|
|
3737
|
+
}
|
|
3705
3738
|
|
|
3706
|
-
|
|
3707
|
-
|
|
3708
|
-
|
|
3739
|
+
/**
|
|
3740
|
+
* Post linking method
|
|
3741
|
+
*/
|
|
3742
|
+
function postLink() {
|
|
3743
|
+
|
|
3744
|
+
// Bind DOM-related preventDropdownCutOff method to component's controller
|
|
3745
|
+
PreventDropdownCutOffService.preventDropdownCutOff($element, '.menu-dropdown');
|
|
3746
|
+
|
|
3747
|
+
attachDocumentEvent();
|
|
3709
3748
|
}
|
|
3710
3749
|
|
|
3711
3750
|
//
|
|
@@ -3713,127 +3752,115 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
3713
3752
|
//
|
|
3714
3753
|
|
|
3715
3754
|
/**
|
|
3716
|
-
*
|
|
3755
|
+
* Handles mouse click on a shortcut
|
|
3756
|
+
* @param {MouseEvent} event
|
|
3757
|
+
* @param {string} state - absolute state name or relative state path
|
|
3717
3758
|
*/
|
|
3718
|
-
function
|
|
3719
|
-
ctrl.
|
|
3720
|
-
|
|
3721
|
-
|
|
3722
|
-
$rootScope.$broadcast('action-checkbox-all_check-all', {
|
|
3723
|
-
checked: ctrl.allItemsChecked,
|
|
3724
|
-
checkedCount: ctrl.checkedItemsCount,
|
|
3725
|
-
itemsType: !lodash.isEmpty(ctrl.itemsType) ? ctrl.itemsType : null
|
|
3726
|
-
});
|
|
3727
|
-
|
|
3728
|
-
if (angular.isFunction(ctrl.onCheckChange)) {
|
|
3729
|
-
ctrl.onCheckChange({ checkedCount: ctrl.checkedItemsCount });
|
|
3759
|
+
function showDetails(event, state) {
|
|
3760
|
+
if (angular.isFunction(ctrl.onClickShortcut)) {
|
|
3761
|
+
ctrl.onClickShortcut(event, state);
|
|
3730
3762
|
}
|
|
3731
3763
|
}
|
|
3732
3764
|
|
|
3733
|
-
//
|
|
3734
|
-
// Private methods
|
|
3735
|
-
//
|
|
3736
|
-
|
|
3737
3765
|
/**
|
|
3738
|
-
*
|
|
3766
|
+
* Handles mouse click on the button of menu
|
|
3739
3767
|
* @param {Object} event
|
|
3740
|
-
*
|
|
3768
|
+
* Show/hides the action dropdown
|
|
3741
3769
|
*/
|
|
3742
|
-
function
|
|
3743
|
-
if (
|
|
3744
|
-
|
|
3770
|
+
function toggleMenu(event) {
|
|
3771
|
+
if (!ctrl.isMenuShown) {
|
|
3772
|
+
$rootScope.$broadcast('close-all-action-menus');
|
|
3773
|
+
ctrl.isMenuShown = true;
|
|
3774
|
+
attachDocumentEvent();
|
|
3775
|
+
showMenu();
|
|
3745
3776
|
} else {
|
|
3746
|
-
|
|
3777
|
+
detachDocumentEvent();
|
|
3778
|
+
ctrl.isMenuShown = false;
|
|
3747
3779
|
}
|
|
3748
3780
|
|
|
3749
|
-
|
|
3750
|
-
|
|
3751
|
-
$rootScope.$broadcast('action-checkbox-all_checked-items-count-change', {
|
|
3752
|
-
checkedCount: ctrl.checkedItemsCount
|
|
3753
|
-
});
|
|
3781
|
+
event.stopPropagation();
|
|
3754
3782
|
}
|
|
3755
3783
|
|
|
3756
3784
|
/**
|
|
3757
|
-
*
|
|
3758
|
-
* @param {Object} event
|
|
3759
|
-
* @param {number} newCheckedItemsCount
|
|
3785
|
+
* Checks if action menu is visible (not empty)
|
|
3760
3786
|
*/
|
|
3761
|
-
function
|
|
3762
|
-
ctrl.
|
|
3763
|
-
|
|
3764
|
-
testAllItemsChecked();
|
|
3765
|
-
|
|
3766
|
-
$rootScope.$broadcast('action-checkbox-all_checked-items-count-change', {
|
|
3767
|
-
checkedCount: ctrl.checkedItemsCount
|
|
3768
|
-
});
|
|
3787
|
+
function isVisible() {
|
|
3788
|
+
return !lodash.isEmpty(ctrl.actions) || !lodash.isEmpty(ctrl.shortcuts);
|
|
3769
3789
|
}
|
|
3770
3790
|
|
|
3791
|
+
//
|
|
3792
|
+
// Private methods
|
|
3793
|
+
//
|
|
3794
|
+
|
|
3771
3795
|
/**
|
|
3772
|
-
*
|
|
3773
|
-
*
|
|
3774
|
-
* @param {Object} data
|
|
3796
|
+
* Shows the dropdown. If there is not enough space from below,
|
|
3797
|
+
* adds 'upward-menu' class to open the dropdown from above
|
|
3775
3798
|
*/
|
|
3776
|
-
function
|
|
3777
|
-
|
|
3778
|
-
|
|
3779
|
-
|
|
3780
|
-
|
|
3781
|
-
|
|
3799
|
+
function showMenu() {
|
|
3800
|
+
$timeout(function () {
|
|
3801
|
+
var windowHeight = $window.innerHeight;
|
|
3802
|
+
var menu = $document.find('.menu-dropdown')[0];
|
|
3803
|
+
var menuTotalHeight = menu.clientHeight;
|
|
3804
|
+
var menuPosition = menu.getBoundingClientRect();
|
|
3805
|
+
var menuHighestPoint = menuPosition.top;
|
|
3806
|
+
var menuLowestPoint = menuPosition.bottom;
|
|
3807
|
+
var menuWrapper = menu.closest('.igz-scrollable-container');
|
|
3782
3808
|
|
|
3783
|
-
|
|
3784
|
-
|
|
3785
|
-
|
|
3809
|
+
if (menuWrapper) {
|
|
3810
|
+
windowHeight = menuWrapper.getBoundingClientRect().bottom;
|
|
3811
|
+
menuHighestPoint -= menuWrapper.getBoundingClientRect().top;
|
|
3812
|
+
}
|
|
3786
3813
|
|
|
3787
|
-
|
|
3814
|
+
if (windowHeight - menuLowestPoint < 0 && menuHighestPoint > menuTotalHeight) {
|
|
3815
|
+
menu.classList.add('upward-menu');
|
|
3816
|
+
}
|
|
3788
3817
|
|
|
3789
|
-
|
|
3790
|
-
|
|
3791
|
-
ctrl.onCheckChange({ checkedCount: ctrl.checkedItemsCount });
|
|
3792
|
-
}
|
|
3818
|
+
angular.element('.menu-dropdown').css('visibility', 'visible');
|
|
3819
|
+
});
|
|
3793
3820
|
}
|
|
3794
3821
|
|
|
3795
3822
|
/**
|
|
3796
|
-
*
|
|
3823
|
+
* Attaches on click event handler to the document
|
|
3797
3824
|
*/
|
|
3798
|
-
function
|
|
3799
|
-
|
|
3825
|
+
function attachDocumentEvent() {
|
|
3826
|
+
$document.on('click', onDocumentClick);
|
|
3800
3827
|
}
|
|
3801
|
-
}
|
|
3802
|
-
})();
|
|
3803
|
-
'use strict';
|
|
3804
|
-
|
|
3805
|
-
(function () {
|
|
3806
|
-
'use strict';
|
|
3807
|
-
|
|
3808
|
-
ActionCheckboxAllService.$inject = ['$rootScope'];
|
|
3809
|
-
angular.module('iguazio.dashboard-controls').factory('ActionCheckboxAllService', ActionCheckboxAllService);
|
|
3810
3828
|
|
|
3811
|
-
|
|
3812
|
-
|
|
3813
|
-
|
|
3814
|
-
|
|
3815
|
-
|
|
3829
|
+
/**
|
|
3830
|
+
* Closes action menu
|
|
3831
|
+
*/
|
|
3832
|
+
function closeActionMenu() {
|
|
3833
|
+
ctrl.isMenuShown = false;
|
|
3834
|
+
detachDocumentEvent();
|
|
3835
|
+
}
|
|
3816
3836
|
|
|
3817
|
-
|
|
3818
|
-
|
|
3819
|
-
|
|
3837
|
+
/**
|
|
3838
|
+
* Default action handler
|
|
3839
|
+
* @param {Object} action
|
|
3840
|
+
*/
|
|
3841
|
+
function defaultAction(action) {
|
|
3842
|
+
if (angular.isFunction(ctrl.onFireAction)) {
|
|
3843
|
+
ctrl.onFireAction(action.id);
|
|
3844
|
+
}
|
|
3845
|
+
}
|
|
3820
3846
|
|
|
3821
3847
|
/**
|
|
3822
|
-
*
|
|
3823
|
-
* @param {number} changedCheckedItemsCount - number of changed checked items
|
|
3848
|
+
* Removes on click event handler attached to the document
|
|
3824
3849
|
*/
|
|
3825
|
-
function
|
|
3826
|
-
$
|
|
3827
|
-
changedCheckedItemsCount: changedCheckedItemsCount
|
|
3828
|
-
});
|
|
3850
|
+
function detachDocumentEvent() {
|
|
3851
|
+
$document.off('click', onDocumentClick);
|
|
3829
3852
|
}
|
|
3830
3853
|
|
|
3831
3854
|
/**
|
|
3832
|
-
*
|
|
3833
|
-
* @param {
|
|
3855
|
+
* Closes action menu
|
|
3856
|
+
* @param {MouseEvent} event
|
|
3834
3857
|
*/
|
|
3835
|
-
function
|
|
3836
|
-
$
|
|
3858
|
+
function onDocumentClick(event) {
|
|
3859
|
+
$scope.$apply(function () {
|
|
3860
|
+
if (event.target !== $element[0] && $element.find(event.target).length === 0) {
|
|
3861
|
+
closeActionMenu();
|
|
3862
|
+
}
|
|
3863
|
+
});
|
|
3837
3864
|
}
|
|
3838
3865
|
}
|
|
3839
3866
|
})();
|
|
@@ -4056,104 +4083,65 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
4056
4083
|
(function () {
|
|
4057
4084
|
'use strict';
|
|
4058
4085
|
|
|
4059
|
-
|
|
4060
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
4061
|
-
bindings: {
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
isMenuShown: '<?',
|
|
4067
|
-
iconClass: '@?',
|
|
4068
|
-
tooltipEnabled: '<?',
|
|
4069
|
-
tooltipText: '@?'
|
|
4086
|
+
IgzActionCheckboxAllController.$inject = ['$scope', '$rootScope', 'lodash'];
|
|
4087
|
+
angular.module('iguazio.dashboard-controls').component('igzActionCheckboxAll', {
|
|
4088
|
+
bindings: {
|
|
4089
|
+
itemsCountOriginal: '<itemsCount',
|
|
4090
|
+
itemsType: '@?',
|
|
4091
|
+
checkedItemsCount: '<?',
|
|
4092
|
+
onCheckChange: '&?'
|
|
4070
4093
|
},
|
|
4071
|
-
templateUrl: 'igz_controls/components/action-
|
|
4072
|
-
controller:
|
|
4094
|
+
templateUrl: 'igz_controls/components/action-checkbox-all/action-checkbox-all.tpl.html',
|
|
4095
|
+
controller: IgzActionCheckboxAllController
|
|
4073
4096
|
});
|
|
4074
4097
|
|
|
4075
|
-
function
|
|
4098
|
+
function IgzActionCheckboxAllController($scope, $rootScope, lodash) {
|
|
4076
4099
|
var ctrl = this;
|
|
4077
|
-
var lng = i18next.language;
|
|
4078
4100
|
|
|
4079
|
-
ctrl.
|
|
4080
|
-
ctrl.preventDropdownCutOff = null;
|
|
4101
|
+
ctrl.allItemsChecked = false;
|
|
4081
4102
|
|
|
4082
4103
|
ctrl.$onInit = onInit;
|
|
4083
|
-
ctrl.$postLink = postLink;
|
|
4084
|
-
ctrl.$onDestroy = onDestroy;
|
|
4085
4104
|
ctrl.$onChanges = onChanges;
|
|
4105
|
+
ctrl.$onDestroy = onDestroy;
|
|
4086
4106
|
|
|
4087
|
-
ctrl.
|
|
4088
|
-
ctrl.showDetails = showDetails;
|
|
4089
|
-
ctrl.toggleMenu = toggleMenu;
|
|
4090
|
-
ctrl.isVisible = isVisible;
|
|
4107
|
+
ctrl.onCheckAll = onCheckAll;
|
|
4091
4108
|
|
|
4092
4109
|
//
|
|
4093
4110
|
// Hook methods
|
|
4094
4111
|
//
|
|
4095
4112
|
|
|
4096
4113
|
/**
|
|
4097
|
-
*
|
|
4114
|
+
* Initialization method
|
|
4098
4115
|
*/
|
|
4099
4116
|
function onInit() {
|
|
4100
|
-
ctrl.
|
|
4117
|
+
ctrl.checkedItemsCount = angular.isUndefined(ctrl.checkedItemsCount) ? 0 : ctrl.checkedItemsCount;
|
|
4118
|
+
ctrl.itemsCount = angular.isUndefined(ctrl.itemsCount) ? 0 : ctrl.itemsCount;
|
|
4101
4119
|
|
|
4102
|
-
$scope.$on('
|
|
4120
|
+
$scope.$on('action-checkbox_item-checked', toggleCheckedItem);
|
|
4121
|
+
$scope.$on('action-checkbox-all_change-checked-items-count', changeItemsCheckedCount);
|
|
4122
|
+
$scope.$on('action-checkbox-all_set-checked-items-count', setCheckedItemsCount);
|
|
4103
4123
|
}
|
|
4104
4124
|
|
|
4105
4125
|
/**
|
|
4106
|
-
*
|
|
4126
|
+
* Changes method
|
|
4107
4127
|
* @param {Object} changes
|
|
4108
4128
|
*/
|
|
4109
4129
|
function onChanges(changes) {
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
|
|
4113
|
-
if (angular.isDefined(actions)) {
|
|
4114
|
-
ctrl.actions = lodash.chain(actions).filter(function (action) {
|
|
4115
|
-
return !lodash.has(action, 'visible') || action.visible;
|
|
4116
|
-
}).map(function (action) {
|
|
4117
|
-
if (!angular.isFunction(action.handler)) {
|
|
4118
|
-
action.handler = defaultAction;
|
|
4119
|
-
|
|
4120
|
-
if (action.id === 'delete' && angular.isUndefined(action.confirm)) {
|
|
4121
|
-
action.confirm = {
|
|
4122
|
-
message: $i18next.t('common:DELETE_SELECTED_ITEM_CONFIRM', { lng: lng }),
|
|
4123
|
-
yesLabel: $i18next.t('common:YES_DELETE', { lng: lng }),
|
|
4124
|
-
noLabel: $i18next.t('common:CANCEL', { lng: lng }),
|
|
4125
|
-
type: 'critical_alert'
|
|
4126
|
-
};
|
|
4127
|
-
}
|
|
4128
|
-
}
|
|
4129
|
-
|
|
4130
|
-
return action;
|
|
4131
|
-
}).value();
|
|
4132
|
-
}
|
|
4133
|
-
|
|
4134
|
-
if (angular.isDefined(shortcuts)) {
|
|
4135
|
-
ctrl.shortcuts = lodash.filter(shortcuts, function (shortcut) {
|
|
4136
|
-
return !lodash.has(shortcut, 'visible') || shortcut.visible;
|
|
4137
|
-
});
|
|
4130
|
+
if (angular.isDefined(changes.itemsCountOriginal)) {
|
|
4131
|
+
ctrl.itemsCount = ctrl.itemsCountOriginal;
|
|
4132
|
+
testAllItemsChecked();
|
|
4138
4133
|
}
|
|
4139
4134
|
}
|
|
4140
4135
|
|
|
4141
4136
|
/**
|
|
4142
|
-
* Destructor
|
|
4137
|
+
* Destructor method
|
|
4143
4138
|
*/
|
|
4144
4139
|
function onDestroy() {
|
|
4145
|
-
|
|
4146
|
-
}
|
|
4147
|
-
|
|
4148
|
-
/**
|
|
4149
|
-
* Post linking method
|
|
4150
|
-
*/
|
|
4151
|
-
function postLink() {
|
|
4152
|
-
|
|
4153
|
-
// Bind DOM-related preventDropdownCutOff method to component's controller
|
|
4154
|
-
PreventDropdownCutOffService.preventDropdownCutOff($element, '.menu-dropdown');
|
|
4140
|
+
ctrl.checkedItemsCount = 0;
|
|
4155
4141
|
|
|
4156
|
-
|
|
4142
|
+
$rootScope.$broadcast('action-checkbox-all_checked-items-count-change', {
|
|
4143
|
+
checkedCount: ctrl.checkedItemsCount
|
|
4144
|
+
});
|
|
4157
4145
|
}
|
|
4158
4146
|
|
|
4159
4147
|
//
|
|
@@ -4161,115 +4149,127 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
4161
4149
|
//
|
|
4162
4150
|
|
|
4163
4151
|
/**
|
|
4164
|
-
*
|
|
4165
|
-
* @param {MouseEvent} event
|
|
4166
|
-
* @param {string} state - absolute state name or relative state path
|
|
4152
|
+
* Calls when Check all button is clicked.
|
|
4167
4153
|
*/
|
|
4168
|
-
function
|
|
4169
|
-
|
|
4170
|
-
|
|
4154
|
+
function onCheckAll() {
|
|
4155
|
+
ctrl.allItemsChecked = !ctrl.allItemsChecked;
|
|
4156
|
+
ctrl.checkedItemsCount = ctrl.allItemsChecked ? ctrl.itemsCount : 0;
|
|
4157
|
+
|
|
4158
|
+
$rootScope.$broadcast('action-checkbox-all_check-all', {
|
|
4159
|
+
checked: ctrl.allItemsChecked,
|
|
4160
|
+
checkedCount: ctrl.checkedItemsCount,
|
|
4161
|
+
itemsType: !lodash.isEmpty(ctrl.itemsType) ? ctrl.itemsType : null
|
|
4162
|
+
});
|
|
4163
|
+
|
|
4164
|
+
if (angular.isFunction(ctrl.onCheckChange)) {
|
|
4165
|
+
ctrl.onCheckChange({ checkedCount: ctrl.checkedItemsCount });
|
|
4171
4166
|
}
|
|
4172
4167
|
}
|
|
4173
4168
|
|
|
4169
|
+
//
|
|
4170
|
+
// Private methods
|
|
4171
|
+
//
|
|
4172
|
+
|
|
4174
4173
|
/**
|
|
4175
|
-
*
|
|
4174
|
+
* Calls on checked items count change
|
|
4176
4175
|
* @param {Object} event
|
|
4177
|
-
*
|
|
4176
|
+
* @param {Object} data
|
|
4178
4177
|
*/
|
|
4179
|
-
function
|
|
4180
|
-
if (
|
|
4181
|
-
|
|
4182
|
-
ctrl.isMenuShown = true;
|
|
4183
|
-
attachDocumentEvent();
|
|
4184
|
-
showMenu();
|
|
4178
|
+
function changeItemsCheckedCount(event, data) {
|
|
4179
|
+
if (data.changedCheckedItemsCount === 0) {
|
|
4180
|
+
ctrl.checkedItemsCount = 0;
|
|
4185
4181
|
} else {
|
|
4186
|
-
|
|
4187
|
-
ctrl.isMenuShown = false;
|
|
4182
|
+
ctrl.checkedItemsCount += data.changedCheckedItemsCount;
|
|
4188
4183
|
}
|
|
4189
4184
|
|
|
4190
|
-
|
|
4191
|
-
}
|
|
4185
|
+
testAllItemsChecked();
|
|
4192
4186
|
|
|
4193
|
-
|
|
4194
|
-
|
|
4195
|
-
|
|
4196
|
-
function isVisible() {
|
|
4197
|
-
return !lodash.isEmpty(ctrl.actions) || !lodash.isEmpty(ctrl.shortcuts);
|
|
4187
|
+
$rootScope.$broadcast('action-checkbox-all_checked-items-count-change', {
|
|
4188
|
+
checkedCount: ctrl.checkedItemsCount
|
|
4189
|
+
});
|
|
4198
4190
|
}
|
|
4199
4191
|
|
|
4200
|
-
//
|
|
4201
|
-
// Private methods
|
|
4202
|
-
//
|
|
4203
|
-
|
|
4204
4192
|
/**
|
|
4205
|
-
*
|
|
4206
|
-
*
|
|
4193
|
+
* Sets checked items count
|
|
4194
|
+
* @param {Object} event
|
|
4195
|
+
* @param {number} newCheckedItemsCount
|
|
4207
4196
|
*/
|
|
4208
|
-
function
|
|
4209
|
-
|
|
4210
|
-
var windowHeight = $window.innerHeight;
|
|
4211
|
-
var menu = $document.find('.menu-dropdown')[0];
|
|
4212
|
-
var menuTotalHeight = menu.clientHeight;
|
|
4213
|
-
var menuPosition = menu.getBoundingClientRect();
|
|
4214
|
-
var menuHighestPoint = menuPosition.top;
|
|
4215
|
-
var menuLowestPoint = menuPosition.bottom;
|
|
4216
|
-
var menuWrapper = menu.closest('.igz-scrollable-container');
|
|
4217
|
-
|
|
4218
|
-
if (menuWrapper) {
|
|
4219
|
-
windowHeight = menuWrapper.getBoundingClientRect().bottom;
|
|
4220
|
-
menuHighestPoint -= menuWrapper.getBoundingClientRect().top;
|
|
4221
|
-
}
|
|
4197
|
+
function setCheckedItemsCount(event, newCheckedItemsCount) {
|
|
4198
|
+
ctrl.checkedItemsCount = newCheckedItemsCount;
|
|
4222
4199
|
|
|
4223
|
-
|
|
4224
|
-
menu.classList.add('upward-menu');
|
|
4225
|
-
}
|
|
4200
|
+
testAllItemsChecked();
|
|
4226
4201
|
|
|
4227
|
-
|
|
4202
|
+
$rootScope.$broadcast('action-checkbox-all_checked-items-count-change', {
|
|
4203
|
+
checkedCount: ctrl.checkedItemsCount
|
|
4228
4204
|
});
|
|
4229
4205
|
}
|
|
4230
4206
|
|
|
4231
4207
|
/**
|
|
4232
|
-
*
|
|
4208
|
+
* Calls on checkbox check/uncheck
|
|
4209
|
+
* @param {Object} event
|
|
4210
|
+
* @param {Object} data
|
|
4233
4211
|
*/
|
|
4234
|
-
function
|
|
4235
|
-
|
|
4236
|
-
|
|
4212
|
+
function toggleCheckedItem(event, data) {
|
|
4213
|
+
if (data.checked) {
|
|
4214
|
+
ctrl.checkedItemsCount++;
|
|
4215
|
+
} else {
|
|
4216
|
+
ctrl.checkedItemsCount--;
|
|
4217
|
+
}
|
|
4237
4218
|
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
|
|
4241
|
-
|
|
4242
|
-
|
|
4243
|
-
|
|
4219
|
+
$rootScope.$broadcast('action-checkbox-all_checked-items-count-change', {
|
|
4220
|
+
checkedCount: ctrl.checkedItemsCount
|
|
4221
|
+
});
|
|
4222
|
+
|
|
4223
|
+
testAllItemsChecked();
|
|
4224
|
+
|
|
4225
|
+
// callback function is called to inform about checked items count
|
|
4226
|
+
if (angular.isFunction(ctrl.onCheckChange)) {
|
|
4227
|
+
ctrl.onCheckChange({ checkedCount: ctrl.checkedItemsCount });
|
|
4228
|
+
}
|
|
4244
4229
|
}
|
|
4245
4230
|
|
|
4246
4231
|
/**
|
|
4247
|
-
*
|
|
4248
|
-
* @param {Object} action
|
|
4232
|
+
* Updates items count and toggle allItemsChecked flag
|
|
4249
4233
|
*/
|
|
4250
|
-
function
|
|
4251
|
-
|
|
4252
|
-
ctrl.onFireAction(action.id);
|
|
4253
|
-
}
|
|
4234
|
+
function testAllItemsChecked() {
|
|
4235
|
+
ctrl.allItemsChecked = ctrl.itemsCount > 0 && ctrl.checkedItemsCount === ctrl.itemsCount;
|
|
4254
4236
|
}
|
|
4237
|
+
}
|
|
4238
|
+
})();
|
|
4239
|
+
'use strict';
|
|
4240
|
+
|
|
4241
|
+
(function () {
|
|
4242
|
+
'use strict';
|
|
4243
|
+
|
|
4244
|
+
ActionCheckboxAllService.$inject = ['$rootScope'];
|
|
4245
|
+
angular.module('iguazio.dashboard-controls').factory('ActionCheckboxAllService', ActionCheckboxAllService);
|
|
4246
|
+
|
|
4247
|
+
function ActionCheckboxAllService($rootScope) {
|
|
4248
|
+
return {
|
|
4249
|
+
changeCheckedItemsCount: changeCheckedItemsCount,
|
|
4250
|
+
setCheckedItemsCount: setCheckedItemsCount
|
|
4251
|
+
};
|
|
4252
|
+
|
|
4253
|
+
//
|
|
4254
|
+
// Public methods
|
|
4255
|
+
//
|
|
4255
4256
|
|
|
4256
4257
|
/**
|
|
4257
|
-
*
|
|
4258
|
+
* Sends broadcast with count of changed checked items
|
|
4259
|
+
* @param {number} changedCheckedItemsCount - number of changed checked items
|
|
4258
4260
|
*/
|
|
4259
|
-
function
|
|
4260
|
-
$
|
|
4261
|
+
function changeCheckedItemsCount(changedCheckedItemsCount) {
|
|
4262
|
+
$rootScope.$broadcast('action-checkbox-all_change-checked-items-count', {
|
|
4263
|
+
changedCheckedItemsCount: changedCheckedItemsCount
|
|
4264
|
+
});
|
|
4261
4265
|
}
|
|
4262
4266
|
|
|
4263
4267
|
/**
|
|
4264
|
-
*
|
|
4265
|
-
* @param {
|
|
4268
|
+
* Sends broadcast with count of checked items
|
|
4269
|
+
* @param {number} checkedItemsCount
|
|
4266
4270
|
*/
|
|
4267
|
-
function
|
|
4268
|
-
$
|
|
4269
|
-
if (event.target !== $element[0] && $element.find(event.target).length === 0) {
|
|
4270
|
-
closeActionMenu();
|
|
4271
|
-
}
|
|
4272
|
-
});
|
|
4271
|
+
function setCheckedItemsCount(checkedItemsCount) {
|
|
4272
|
+
$rootScope.$broadcast('action-checkbox-all_set-checked-items-count', checkedItemsCount);
|
|
4273
4273
|
}
|
|
4274
4274
|
}
|
|
4275
4275
|
})();
|
|
@@ -4898,13 +4898,76 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
4898
4898
|
})();
|
|
4899
4899
|
'use strict';
|
|
4900
4900
|
|
|
4901
|
-
/* eslint max-statements: ["error", 100] */
|
|
4902
|
-
/* eslint complexity: ["error", 12] */
|
|
4903
4901
|
(function () {
|
|
4904
4902
|
'use strict';
|
|
4905
4903
|
|
|
4906
|
-
|
|
4907
|
-
|
|
4904
|
+
IgzCopyToClipboard.$inject = ['$i18next', 'i18next', 'lodash', 'DialogsService'];
|
|
4905
|
+
angular.module('iguazio.dashboard-controls').component('igzCopyToClipboard', {
|
|
4906
|
+
bindings: {
|
|
4907
|
+
tooltipPlacement: '@?',
|
|
4908
|
+
tooltipText: '@?',
|
|
4909
|
+
value: '<'
|
|
4910
|
+
},
|
|
4911
|
+
templateUrl: 'igz_controls/components/copy-to-clipboard/copy-to-clipboard.tpl.html',
|
|
4912
|
+
controller: IgzCopyToClipboard
|
|
4913
|
+
});
|
|
4914
|
+
|
|
4915
|
+
function IgzCopyToClipboard($i18next, i18next, lodash, DialogsService) {
|
|
4916
|
+
var ctrl = this;
|
|
4917
|
+
var lng = i18next.language;
|
|
4918
|
+
|
|
4919
|
+
ctrl.$onInit = onInit;
|
|
4920
|
+
|
|
4921
|
+
ctrl.copyToClipboard = copyToClipboard;
|
|
4922
|
+
|
|
4923
|
+
//
|
|
4924
|
+
// Hook methods
|
|
4925
|
+
//
|
|
4926
|
+
|
|
4927
|
+
/**
|
|
4928
|
+
* Initialization method
|
|
4929
|
+
*/
|
|
4930
|
+
function onInit() {
|
|
4931
|
+
lodash.defaults(ctrl, {
|
|
4932
|
+
tooltipPlacement: 'top'
|
|
4933
|
+
});
|
|
4934
|
+
}
|
|
4935
|
+
|
|
4936
|
+
//
|
|
4937
|
+
// Public method
|
|
4938
|
+
//
|
|
4939
|
+
|
|
4940
|
+
/**
|
|
4941
|
+
* Copies a string to the clipboard.
|
|
4942
|
+
*/
|
|
4943
|
+
function copyToClipboard() {
|
|
4944
|
+
if (document.queryCommandSupported && document.queryCommandSupported('copy')) {
|
|
4945
|
+
var textarea = document.createElement('textarea');
|
|
4946
|
+
textarea.textContent = ctrl.value;
|
|
4947
|
+
textarea.style.position = 'fixed';
|
|
4948
|
+
document.body.appendChild(textarea);
|
|
4949
|
+
textarea.select();
|
|
4950
|
+
|
|
4951
|
+
try {
|
|
4952
|
+
return document.execCommand('copy'); // Security exception may be thrown by some browsers.
|
|
4953
|
+
} catch (ex) {
|
|
4954
|
+
DialogsService.alert($i18next.t('common:COPY_TO_CLIPBOARD_FAILED', { lng: lng }), ex);
|
|
4955
|
+
} finally {
|
|
4956
|
+
document.body.removeChild(textarea);
|
|
4957
|
+
}
|
|
4958
|
+
}
|
|
4959
|
+
}
|
|
4960
|
+
}
|
|
4961
|
+
})();
|
|
4962
|
+
'use strict';
|
|
4963
|
+
|
|
4964
|
+
/* eslint max-statements: ["error", 100] */
|
|
4965
|
+
/* eslint complexity: ["error", 12] */
|
|
4966
|
+
(function () {
|
|
4967
|
+
'use strict';
|
|
4968
|
+
|
|
4969
|
+
/**
|
|
4970
|
+
* @name igzDefaultDropdown
|
|
4908
4971
|
* @description
|
|
4909
4972
|
* Default drop down component. This component is a toggleable menu that allows the user to choose one value from a
|
|
4910
4973
|
* predefined list. It can also become a combo-box where the user can enter text. It can also auto-complete the
|
|
@@ -5014,8 +5077,8 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
5014
5077
|
|
|
5015
5078
|
ctrl.checkIsRequired = checkIsRequired;
|
|
5016
5079
|
ctrl.getDescription = getDescription;
|
|
5017
|
-
ctrl.getName = getName;
|
|
5018
5080
|
ctrl.getIcon = getIcon;
|
|
5081
|
+
ctrl.getNameTemplate = getNameTemplate;
|
|
5019
5082
|
ctrl.getTooltip = getTooltip;
|
|
5020
5083
|
ctrl.getValuesArray = getValuesArray;
|
|
5021
5084
|
ctrl.isItemSelected = isItemSelected;
|
|
@@ -5178,13 +5241,12 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
5178
5241
|
}
|
|
5179
5242
|
|
|
5180
5243
|
/**
|
|
5181
|
-
* Returns the name of the provided item. Searches for a direct `
|
|
5182
|
-
* `nameKey`
|
|
5244
|
+
* Returns the name of the provided item. Searches for a direct `nameTemplate` property
|
|
5183
5245
|
* @param {Object} item - the item whose name should be returned
|
|
5184
5246
|
* @returns {string}
|
|
5185
5247
|
*/
|
|
5186
|
-
function
|
|
5187
|
-
return lodash.get(item, '
|
|
5248
|
+
function getNameTemplate(item) {
|
|
5249
|
+
return lodash.get(item, 'nameTemplate', getName(item));
|
|
5188
5250
|
}
|
|
5189
5251
|
|
|
5190
5252
|
/**
|
|
@@ -5376,7 +5438,7 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
5376
5438
|
} else {
|
|
5377
5439
|
ctrl.selectedItem = item;
|
|
5378
5440
|
}
|
|
5379
|
-
ctrl.typedValue =
|
|
5441
|
+
ctrl.typedValue = getName(item);
|
|
5380
5442
|
}
|
|
5381
5443
|
|
|
5382
5444
|
if (angular.isFunction(ctrl.itemSelectCallback)) {
|
|
@@ -5498,12 +5560,22 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
5498
5560
|
// Private methods
|
|
5499
5561
|
//
|
|
5500
5562
|
|
|
5563
|
+
/**
|
|
5564
|
+
* Returns the name of the provided item. Searches for a direct `name` property, or searches `name` property by
|
|
5565
|
+
* `nameKey`
|
|
5566
|
+
* @param {Object} item - the item whose name should be returned
|
|
5567
|
+
* @returns {string}
|
|
5568
|
+
*/
|
|
5569
|
+
function getName(item) {
|
|
5570
|
+
return lodash.get(item, 'name', lodash.get(item, ctrl.nameKey, ''));
|
|
5571
|
+
}
|
|
5572
|
+
|
|
5501
5573
|
/**
|
|
5502
5574
|
* Sets default input value
|
|
5503
5575
|
*/
|
|
5504
5576
|
function setDefaultInputValue() {
|
|
5505
5577
|
if (!lodash.isNil(ctrl.selectedItem)) {
|
|
5506
|
-
ctrl.typedValue =
|
|
5578
|
+
ctrl.typedValue = getName(angular.isDefined(ctrl.selectPropertyOnly) ? lodash.find(ctrl.valuesArray, [ctrl.selectPropertyOnly, ctrl.selectedItem]) : ctrl.selectedItem);
|
|
5507
5579
|
|
|
5508
5580
|
if (ctrl.typedValue === '' && ctrl.enableTyping) {
|
|
5509
5581
|
ctrl.typedValue = ctrl.selectedItem;
|
|
@@ -5542,23 +5614,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
5542
5614
|
});
|
|
5543
5615
|
}
|
|
5544
5616
|
|
|
5545
|
-
/**
|
|
5546
|
-
* Handle click on the document and not on the dropdown field and close the dropdown
|
|
5547
|
-
* @param {Object} e - event
|
|
5548
|
-
*/
|
|
5549
|
-
function unselectDropdown(e) {
|
|
5550
|
-
if ($element.find(e.target).length === 0) {
|
|
5551
|
-
$scope.$evalAsync(function () {
|
|
5552
|
-
ctrl.isDropdownContainerShown = false;
|
|
5553
|
-
ctrl.isDropUp = false;
|
|
5554
|
-
|
|
5555
|
-
if (angular.isFunction(ctrl.onCloseDropdown)) {
|
|
5556
|
-
ctrl.onCloseDropdown();
|
|
5557
|
-
}
|
|
5558
|
-
});
|
|
5559
|
-
}
|
|
5560
|
-
}
|
|
5561
|
-
|
|
5562
5617
|
/**
|
|
5563
5618
|
* Takes the largest element and sets him width as min-width to all elements (needed to style drop-down list)
|
|
5564
5619
|
*/
|
|
@@ -5572,67 +5627,21 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
5572
5627
|
angular.element(label).css('min-width', minWidth);
|
|
5573
5628
|
});
|
|
5574
5629
|
}
|
|
5575
|
-
}
|
|
5576
|
-
})();
|
|
5577
|
-
'use strict';
|
|
5578
|
-
|
|
5579
|
-
(function () {
|
|
5580
|
-
'use strict';
|
|
5581
|
-
|
|
5582
|
-
IgzCopyToClipboard.$inject = ['$i18next', 'i18next', 'lodash', 'DialogsService'];
|
|
5583
|
-
angular.module('iguazio.dashboard-controls').component('igzCopyToClipboard', {
|
|
5584
|
-
bindings: {
|
|
5585
|
-
tooltipPlacement: '@?',
|
|
5586
|
-
tooltipText: '@?',
|
|
5587
|
-
value: '<'
|
|
5588
|
-
},
|
|
5589
|
-
templateUrl: 'igz_controls/components/copy-to-clipboard/copy-to-clipboard.tpl.html',
|
|
5590
|
-
controller: IgzCopyToClipboard
|
|
5591
|
-
});
|
|
5592
|
-
|
|
5593
|
-
function IgzCopyToClipboard($i18next, i18next, lodash, DialogsService) {
|
|
5594
|
-
var ctrl = this;
|
|
5595
|
-
var lng = i18next.language;
|
|
5596
|
-
|
|
5597
|
-
ctrl.$onInit = onInit;
|
|
5598
|
-
|
|
5599
|
-
ctrl.copyToClipboard = copyToClipboard;
|
|
5600
|
-
|
|
5601
|
-
//
|
|
5602
|
-
// Hook methods
|
|
5603
|
-
//
|
|
5604
|
-
|
|
5605
|
-
/**
|
|
5606
|
-
* Initialization method
|
|
5607
|
-
*/
|
|
5608
|
-
function onInit() {
|
|
5609
|
-
lodash.defaults(ctrl, {
|
|
5610
|
-
tooltipPlacement: 'top'
|
|
5611
|
-
});
|
|
5612
|
-
}
|
|
5613
|
-
|
|
5614
|
-
//
|
|
5615
|
-
// Public method
|
|
5616
|
-
//
|
|
5617
5630
|
|
|
5618
5631
|
/**
|
|
5619
|
-
*
|
|
5632
|
+
* Handle click on the document and not on the dropdown field and close the dropdown
|
|
5633
|
+
* @param {Object} e - event
|
|
5620
5634
|
*/
|
|
5621
|
-
function
|
|
5622
|
-
if (
|
|
5623
|
-
|
|
5624
|
-
|
|
5625
|
-
|
|
5626
|
-
document.body.appendChild(textarea);
|
|
5627
|
-
textarea.select();
|
|
5635
|
+
function unselectDropdown(e) {
|
|
5636
|
+
if ($element.find(e.target).length === 0) {
|
|
5637
|
+
$scope.$evalAsync(function () {
|
|
5638
|
+
ctrl.isDropdownContainerShown = false;
|
|
5639
|
+
ctrl.isDropUp = false;
|
|
5628
5640
|
|
|
5629
|
-
|
|
5630
|
-
|
|
5631
|
-
|
|
5632
|
-
|
|
5633
|
-
} finally {
|
|
5634
|
-
document.body.removeChild(textarea);
|
|
5635
|
-
}
|
|
5641
|
+
if (angular.isFunction(ctrl.onCloseDropdown)) {
|
|
5642
|
+
ctrl.onCloseDropdown();
|
|
5643
|
+
}
|
|
5644
|
+
});
|
|
5636
5645
|
}
|
|
5637
5646
|
}
|
|
5638
5647
|
}
|
|
@@ -9931,41 +9940,31 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
9931
9940
|
(function () {
|
|
9932
9941
|
'use strict';
|
|
9933
9942
|
|
|
9934
|
-
|
|
9935
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
9943
|
+
IgzInfoPageContentController.$inject = ['$scope', '$timeout', '$window', '$element'];
|
|
9944
|
+
angular.module('iguazio.dashboard-controls').component('igzInfoPageContent', {
|
|
9936
9945
|
bindings: {
|
|
9937
|
-
|
|
9938
|
-
isFiltersShowed: '<',
|
|
9939
|
-
changeStateCallback: '&',
|
|
9940
|
-
toggleMethod: '&',
|
|
9941
|
-
resetFilters: '&?',
|
|
9942
|
-
applyFilters: '&?',
|
|
9943
|
-
getBadgeValue: '&?',
|
|
9946
|
+
scrolled: '<',
|
|
9944
9947
|
watchId: '@?'
|
|
9945
9948
|
},
|
|
9946
|
-
templateUrl: 'igz_controls/components/info-page/info-page-
|
|
9949
|
+
templateUrl: 'igz_controls/components/info-page/info-page-content/info-page-content.tpl.html',
|
|
9947
9950
|
transclude: true,
|
|
9948
|
-
controller:
|
|
9951
|
+
controller: IgzInfoPageContentController
|
|
9949
9952
|
});
|
|
9950
9953
|
|
|
9951
|
-
function
|
|
9954
|
+
function IgzInfoPageContentController($scope, $timeout, $window, $element) {
|
|
9952
9955
|
var ctrl = this;
|
|
9953
9956
|
|
|
9954
|
-
|
|
9957
|
+
ctrl.isFiltersShowed = false;
|
|
9958
|
+
ctrl.isInfoPaneShowed = false;
|
|
9955
9959
|
|
|
9956
|
-
|
|
9957
|
-
ctrl.
|
|
9958
|
-
|
|
9959
|
-
|
|
9960
|
-
}
|
|
9960
|
+
// Config for horizontal scrollbar on containers view
|
|
9961
|
+
ctrl.scrollConfigHorizontal = {
|
|
9962
|
+
axis: 'x',
|
|
9963
|
+
scrollInertia: 0
|
|
9961
9964
|
};
|
|
9962
9965
|
|
|
9963
9966
|
ctrl.$onInit = onInit;
|
|
9964
|
-
ctrl.$
|
|
9965
|
-
|
|
9966
|
-
ctrl.onApplyFilters = onApplyFilters;
|
|
9967
|
-
ctrl.onResetFilters = onResetFilters;
|
|
9968
|
-
ctrl.isShowFooterButtons = isShowFooterButtons;
|
|
9967
|
+
ctrl.$postLink = postLink;
|
|
9969
9968
|
|
|
9970
9969
|
//
|
|
9971
9970
|
// Hook methods
|
|
@@ -9977,46 +9976,177 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
9977
9976
|
function onInit() {
|
|
9978
9977
|
var watchId = angular.isDefined(ctrl.watchId) ? '-' + ctrl.watchId : '';
|
|
9979
9978
|
|
|
9980
|
-
ctrl.getBadgeValue = ctrl.getBadgeValue || getBadgeValue;
|
|
9981
|
-
|
|
9982
|
-
$scope.$on('info-page-filters_change-badge', onChangeBadge);
|
|
9983
9979
|
$scope.$on('info-page-upper-pane_toggle-start' + watchId, onUpperPaneToggleStart);
|
|
9984
|
-
$scope.$on('info-page-
|
|
9980
|
+
$scope.$on('info-page-filters_toggle-start' + watchId, onFiltersPaneToggleStart);
|
|
9981
|
+
$scope.$on('info-page-pane_toggle-start' + watchId, onInfoPaneToggleStart);
|
|
9982
|
+
$scope.$on('info-page-pane_toggled', dispatchResize);
|
|
9985
9983
|
}
|
|
9986
9984
|
|
|
9987
9985
|
/**
|
|
9988
|
-
*
|
|
9986
|
+
* Post linking method
|
|
9989
9987
|
*/
|
|
9990
|
-
function
|
|
9991
|
-
|
|
9992
|
-
|
|
9993
|
-
|
|
9988
|
+
function postLink() {
|
|
9989
|
+
$timeout(function () {
|
|
9990
|
+
manageHorizontalScroll();
|
|
9991
|
+
|
|
9992
|
+
$scope.$on('info-page-filters_toggled', manageHorizontalScroll);
|
|
9993
|
+
|
|
9994
|
+
$scope.$on('info-page-pane_toggled', manageHorizontalScroll);
|
|
9995
|
+
|
|
9996
|
+
$scope.$on('igzWatchWindowResize::resize', manageHorizontalScroll);
|
|
9997
|
+
});
|
|
9994
9998
|
}
|
|
9995
9999
|
|
|
9996
10000
|
//
|
|
9997
|
-
//
|
|
10001
|
+
// Private methods
|
|
9998
10002
|
//
|
|
9999
10003
|
|
|
10000
10004
|
/**
|
|
10001
|
-
*
|
|
10002
|
-
*
|
|
10005
|
+
* Manages x-scrollbar behavior
|
|
10006
|
+
* Needed to get rid of accidental wrong content width calculations made by 'ng-scrollbars' library
|
|
10007
|
+
* We just control x-scrollbar with lib's native enable/disable methods
|
|
10003
10008
|
*/
|
|
10004
|
-
function
|
|
10005
|
-
|
|
10006
|
-
|
|
10007
|
-
|
|
10008
|
-
|
|
10009
|
-
|
|
10009
|
+
function manageHorizontalScroll() {
|
|
10010
|
+
var $scrollXContainer = $element.find('.igz-scrollable-container.horizontal').first();
|
|
10011
|
+
var contentWrapperWidth = $element.find('.igz-info-page-content-wrapper').first().width();
|
|
10012
|
+
var contentMinWidth = parseInt($element.find('.igz-info-page-content').css('min-width'));
|
|
10013
|
+
|
|
10014
|
+
if ($scrollXContainer.length && contentWrapperWidth < (contentMinWidth || 946)) {
|
|
10015
|
+
$scrollXContainer.mCustomScrollbar('update');
|
|
10016
|
+
} else if ($scrollXContainer.length) {
|
|
10017
|
+
$scrollXContainer.mCustomScrollbar('disable', true);
|
|
10018
|
+
$element.find('.mCSB_container').first().width('100%');
|
|
10010
10019
|
}
|
|
10011
10020
|
}
|
|
10012
10021
|
|
|
10013
10022
|
/**
|
|
10014
|
-
*
|
|
10015
|
-
* @param {Object} event
|
|
10023
|
+
* Upper pane toggle start $broadcast listener
|
|
10024
|
+
* @param {Object} e - broadcast event
|
|
10025
|
+
* @param {boolean} isShown - represents upper pane state
|
|
10016
10026
|
*/
|
|
10017
|
-
function
|
|
10018
|
-
|
|
10019
|
-
|
|
10027
|
+
function onUpperPaneToggleStart(e, isShown) {
|
|
10028
|
+
ctrl.isUpperPaneShowed = isShown;
|
|
10029
|
+
}
|
|
10030
|
+
|
|
10031
|
+
/**
|
|
10032
|
+
* Filters pane toggle start $broadcast listener
|
|
10033
|
+
* @param {Object} e - broadcast event
|
|
10034
|
+
* @param {boolean} isShown - represents filters pane state
|
|
10035
|
+
*/
|
|
10036
|
+
function onFiltersPaneToggleStart(e, isShown) {
|
|
10037
|
+
ctrl.isFiltersShowed = isShown;
|
|
10038
|
+
}
|
|
10039
|
+
|
|
10040
|
+
/**
|
|
10041
|
+
* Info pane toggle start $broadcast listener
|
|
10042
|
+
* @param {Object} e - broadcast event
|
|
10043
|
+
* @param {boolean} isShown - represents info pane state
|
|
10044
|
+
*/
|
|
10045
|
+
function onInfoPaneToggleStart(e, isShown) {
|
|
10046
|
+
ctrl.isInfoPaneShowed = isShown;
|
|
10047
|
+
}
|
|
10048
|
+
|
|
10049
|
+
/**
|
|
10050
|
+
* Updates Ui-Layout library's containers size
|
|
10051
|
+
*/
|
|
10052
|
+
function dispatchResize() {
|
|
10053
|
+
$timeout(function () {
|
|
10054
|
+
$window.dispatchEvent(new Event('resize'));
|
|
10055
|
+
}, 0);
|
|
10056
|
+
}
|
|
10057
|
+
}
|
|
10058
|
+
})();
|
|
10059
|
+
'use strict';
|
|
10060
|
+
|
|
10061
|
+
(function () {
|
|
10062
|
+
'use strict';
|
|
10063
|
+
|
|
10064
|
+
IgzInfoPageFiltersController.$inject = ['$rootScope', '$scope', '$animate', '$element', 'EventHelperService'];
|
|
10065
|
+
angular.module('iguazio.dashboard-controls').component('igzInfoPageFilters', {
|
|
10066
|
+
bindings: {
|
|
10067
|
+
isDisabled: '<?',
|
|
10068
|
+
isFiltersShowed: '<',
|
|
10069
|
+
changeStateCallback: '&',
|
|
10070
|
+
toggleMethod: '&',
|
|
10071
|
+
resetFilters: '&?',
|
|
10072
|
+
applyFilters: '&?',
|
|
10073
|
+
getBadgeValue: '&?',
|
|
10074
|
+
watchId: '@?'
|
|
10075
|
+
},
|
|
10076
|
+
templateUrl: 'igz_controls/components/info-page/info-page-filters/info-page-filters.tpl.html',
|
|
10077
|
+
transclude: true,
|
|
10078
|
+
controller: IgzInfoPageFiltersController
|
|
10079
|
+
});
|
|
10080
|
+
|
|
10081
|
+
function IgzInfoPageFiltersController($rootScope, $scope, $animate, $element, EventHelperService) {
|
|
10082
|
+
var ctrl = this;
|
|
10083
|
+
|
|
10084
|
+
var appliedFiltersCount = 0;
|
|
10085
|
+
|
|
10086
|
+
ctrl.isUpperPaneShowed = false;
|
|
10087
|
+
ctrl.scrollbarConfig = {
|
|
10088
|
+
callbacks: {
|
|
10089
|
+
whileScrolling: whileScrolling
|
|
10090
|
+
}
|
|
10091
|
+
};
|
|
10092
|
+
|
|
10093
|
+
ctrl.$onInit = onInit;
|
|
10094
|
+
ctrl.$onChanges = onChanges;
|
|
10095
|
+
|
|
10096
|
+
ctrl.onApplyFilters = onApplyFilters;
|
|
10097
|
+
ctrl.onResetFilters = onResetFilters;
|
|
10098
|
+
ctrl.isShowFooterButtons = isShowFooterButtons;
|
|
10099
|
+
|
|
10100
|
+
//
|
|
10101
|
+
// Hook methods
|
|
10102
|
+
//
|
|
10103
|
+
|
|
10104
|
+
/**
|
|
10105
|
+
* Init method
|
|
10106
|
+
*/
|
|
10107
|
+
function onInit() {
|
|
10108
|
+
var watchId = angular.isDefined(ctrl.watchId) ? '-' + ctrl.watchId : '';
|
|
10109
|
+
|
|
10110
|
+
ctrl.getBadgeValue = ctrl.getBadgeValue || getBadgeValue;
|
|
10111
|
+
|
|
10112
|
+
$scope.$on('info-page-filters_change-badge', onChangeBadge);
|
|
10113
|
+
$scope.$on('info-page-upper-pane_toggle-start' + watchId, onUpperPaneToggleStart);
|
|
10114
|
+
$scope.$on('info-page-pane_toggle-start' + watchId, hideIfInfoPaneOpened);
|
|
10115
|
+
}
|
|
10116
|
+
|
|
10117
|
+
/**
|
|
10118
|
+
* Bindings changes watcher method
|
|
10119
|
+
*/
|
|
10120
|
+
function onChanges(changes) {
|
|
10121
|
+
if (angular.isDefined(changes.isFiltersShowed)) {
|
|
10122
|
+
reportStateBetweenPanes(changes.isFiltersShowed.currentValue);
|
|
10123
|
+
}
|
|
10124
|
+
}
|
|
10125
|
+
|
|
10126
|
+
//
|
|
10127
|
+
// Public methods
|
|
10128
|
+
//
|
|
10129
|
+
|
|
10130
|
+
/**
|
|
10131
|
+
* Handles mouse click on 'Apply' button
|
|
10132
|
+
* @param {Object} event
|
|
10133
|
+
*/
|
|
10134
|
+
function onApplyFilters(event) {
|
|
10135
|
+
if (angular.isUndefined(event) || event.keyCode === EventHelperService.ENTER) {
|
|
10136
|
+
$rootScope.$broadcast('info-page-filters_on-apply');
|
|
10137
|
+
if (angular.isFunction(ctrl.applyFilters)) {
|
|
10138
|
+
ctrl.applyFilters();
|
|
10139
|
+
}
|
|
10140
|
+
}
|
|
10141
|
+
}
|
|
10142
|
+
|
|
10143
|
+
/**
|
|
10144
|
+
* Handles mouse click on 'Reset' button
|
|
10145
|
+
* @param {Object} event
|
|
10146
|
+
*/
|
|
10147
|
+
function onResetFilters(event) {
|
|
10148
|
+
if (angular.isUndefined(event) || event.keyCode === EventHelperService.ENTER) {
|
|
10149
|
+
$rootScope.$broadcast('info-page-filters_on-reset');
|
|
10020
10150
|
if (angular.isFunction(ctrl.resetFilters)) {
|
|
10021
10151
|
ctrl.resetFilters();
|
|
10022
10152
|
}
|
|
@@ -10117,127 +10247,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
10117
10247
|
})();
|
|
10118
10248
|
'use strict';
|
|
10119
10249
|
|
|
10120
|
-
(function () {
|
|
10121
|
-
'use strict';
|
|
10122
|
-
|
|
10123
|
-
IgzInfoPageContentController.$inject = ['$scope', '$timeout', '$window', '$element'];
|
|
10124
|
-
angular.module('iguazio.dashboard-controls').component('igzInfoPageContent', {
|
|
10125
|
-
bindings: {
|
|
10126
|
-
scrolled: '<',
|
|
10127
|
-
watchId: '@?'
|
|
10128
|
-
},
|
|
10129
|
-
templateUrl: 'igz_controls/components/info-page/info-page-content/info-page-content.tpl.html',
|
|
10130
|
-
transclude: true,
|
|
10131
|
-
controller: IgzInfoPageContentController
|
|
10132
|
-
});
|
|
10133
|
-
|
|
10134
|
-
function IgzInfoPageContentController($scope, $timeout, $window, $element) {
|
|
10135
|
-
var ctrl = this;
|
|
10136
|
-
|
|
10137
|
-
ctrl.isFiltersShowed = false;
|
|
10138
|
-
ctrl.isInfoPaneShowed = false;
|
|
10139
|
-
|
|
10140
|
-
// Config for horizontal scrollbar on containers view
|
|
10141
|
-
ctrl.scrollConfigHorizontal = {
|
|
10142
|
-
axis: 'x',
|
|
10143
|
-
scrollInertia: 0
|
|
10144
|
-
};
|
|
10145
|
-
|
|
10146
|
-
ctrl.$onInit = onInit;
|
|
10147
|
-
ctrl.$postLink = postLink;
|
|
10148
|
-
|
|
10149
|
-
//
|
|
10150
|
-
// Hook methods
|
|
10151
|
-
//
|
|
10152
|
-
|
|
10153
|
-
/**
|
|
10154
|
-
* Init method
|
|
10155
|
-
*/
|
|
10156
|
-
function onInit() {
|
|
10157
|
-
var watchId = angular.isDefined(ctrl.watchId) ? '-' + ctrl.watchId : '';
|
|
10158
|
-
|
|
10159
|
-
$scope.$on('info-page-upper-pane_toggle-start' + watchId, onUpperPaneToggleStart);
|
|
10160
|
-
$scope.$on('info-page-filters_toggle-start' + watchId, onFiltersPaneToggleStart);
|
|
10161
|
-
$scope.$on('info-page-pane_toggle-start' + watchId, onInfoPaneToggleStart);
|
|
10162
|
-
$scope.$on('info-page-pane_toggled', dispatchResize);
|
|
10163
|
-
}
|
|
10164
|
-
|
|
10165
|
-
/**
|
|
10166
|
-
* Post linking method
|
|
10167
|
-
*/
|
|
10168
|
-
function postLink() {
|
|
10169
|
-
$timeout(function () {
|
|
10170
|
-
manageHorizontalScroll();
|
|
10171
|
-
|
|
10172
|
-
$scope.$on('info-page-filters_toggled', manageHorizontalScroll);
|
|
10173
|
-
|
|
10174
|
-
$scope.$on('info-page-pane_toggled', manageHorizontalScroll);
|
|
10175
|
-
|
|
10176
|
-
$scope.$on('igzWatchWindowResize::resize', manageHorizontalScroll);
|
|
10177
|
-
});
|
|
10178
|
-
}
|
|
10179
|
-
|
|
10180
|
-
//
|
|
10181
|
-
// Private methods
|
|
10182
|
-
//
|
|
10183
|
-
|
|
10184
|
-
/**
|
|
10185
|
-
* Manages x-scrollbar behavior
|
|
10186
|
-
* Needed to get rid of accidental wrong content width calculations made by 'ng-scrollbars' library
|
|
10187
|
-
* We just control x-scrollbar with lib's native enable/disable methods
|
|
10188
|
-
*/
|
|
10189
|
-
function manageHorizontalScroll() {
|
|
10190
|
-
var $scrollXContainer = $element.find('.igz-scrollable-container.horizontal').first();
|
|
10191
|
-
var contentWrapperWidth = $element.find('.igz-info-page-content-wrapper').first().width();
|
|
10192
|
-
var contentMinWidth = parseInt($element.find('.igz-info-page-content').css('min-width'));
|
|
10193
|
-
|
|
10194
|
-
if ($scrollXContainer.length && contentWrapperWidth < (contentMinWidth || 946)) {
|
|
10195
|
-
$scrollXContainer.mCustomScrollbar('update');
|
|
10196
|
-
} else if ($scrollXContainer.length) {
|
|
10197
|
-
$scrollXContainer.mCustomScrollbar('disable', true);
|
|
10198
|
-
$element.find('.mCSB_container').first().width('100%');
|
|
10199
|
-
}
|
|
10200
|
-
}
|
|
10201
|
-
|
|
10202
|
-
/**
|
|
10203
|
-
* Upper pane toggle start $broadcast listener
|
|
10204
|
-
* @param {Object} e - broadcast event
|
|
10205
|
-
* @param {boolean} isShown - represents upper pane state
|
|
10206
|
-
*/
|
|
10207
|
-
function onUpperPaneToggleStart(e, isShown) {
|
|
10208
|
-
ctrl.isUpperPaneShowed = isShown;
|
|
10209
|
-
}
|
|
10210
|
-
|
|
10211
|
-
/**
|
|
10212
|
-
* Filters pane toggle start $broadcast listener
|
|
10213
|
-
* @param {Object} e - broadcast event
|
|
10214
|
-
* @param {boolean} isShown - represents filters pane state
|
|
10215
|
-
*/
|
|
10216
|
-
function onFiltersPaneToggleStart(e, isShown) {
|
|
10217
|
-
ctrl.isFiltersShowed = isShown;
|
|
10218
|
-
}
|
|
10219
|
-
|
|
10220
|
-
/**
|
|
10221
|
-
* Info pane toggle start $broadcast listener
|
|
10222
|
-
* @param {Object} e - broadcast event
|
|
10223
|
-
* @param {boolean} isShown - represents info pane state
|
|
10224
|
-
*/
|
|
10225
|
-
function onInfoPaneToggleStart(e, isShown) {
|
|
10226
|
-
ctrl.isInfoPaneShowed = isShown;
|
|
10227
|
-
}
|
|
10228
|
-
|
|
10229
|
-
/**
|
|
10230
|
-
* Updates Ui-Layout library's containers size
|
|
10231
|
-
*/
|
|
10232
|
-
function dispatchResize() {
|
|
10233
|
-
$timeout(function () {
|
|
10234
|
-
$window.dispatchEvent(new Event('resize'));
|
|
10235
|
-
}, 0);
|
|
10236
|
-
}
|
|
10237
|
-
}
|
|
10238
|
-
})();
|
|
10239
|
-
'use strict';
|
|
10240
|
-
|
|
10241
10250
|
(function () {
|
|
10242
10251
|
'use strict';
|
|
10243
10252
|
|
|
@@ -10464,171 +10473,15 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
10464
10473
|
(function () {
|
|
10465
10474
|
'use strict';
|
|
10466
10475
|
|
|
10467
|
-
|
|
10468
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
10476
|
+
NclVersionConfigurationAnnotationsController.$inject = ['$element', '$i18next', '$rootScope', '$timeout', 'i18next', 'lodash', 'FormValidationService', 'PreventDropdownCutOffService', 'ValidationService'];
|
|
10477
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationAnnotations', {
|
|
10469
10478
|
bindings: {
|
|
10470
|
-
|
|
10479
|
+
version: '<',
|
|
10480
|
+
onChangeCallback: '<',
|
|
10481
|
+
isFunctionDeploying: '&'
|
|
10471
10482
|
},
|
|
10472
|
-
templateUrl: 'nuclio/functions/version/version-
|
|
10473
|
-
controller:
|
|
10474
|
-
});
|
|
10475
|
-
|
|
10476
|
-
function NclTestEventsLogsController(lodash) {
|
|
10477
|
-
var ctrl = this;
|
|
10478
|
-
var REQUIRED_PARAMETERS = ['level', 'name', 'time', 'err', 'message', 'ui'];
|
|
10479
|
-
|
|
10480
|
-
ctrl.$onInit = onInit;
|
|
10481
|
-
|
|
10482
|
-
ctrl.collapseRow = collapseRow;
|
|
10483
|
-
ctrl.expandAllRows = expandAllRows;
|
|
10484
|
-
ctrl.getLevelIconClass = getLevelIconClass;
|
|
10485
|
-
ctrl.getParameters = getParameters;
|
|
10486
|
-
ctrl.hasAdditionalParameters = hasAdditionalParameters;
|
|
10487
|
-
|
|
10488
|
-
//
|
|
10489
|
-
// Hook method
|
|
10490
|
-
//
|
|
10491
|
-
|
|
10492
|
-
/**
|
|
10493
|
-
* Initialization method
|
|
10494
|
-
*/
|
|
10495
|
-
function onInit() {
|
|
10496
|
-
lodash.forEach(ctrl.logs, function (log) {
|
|
10497
|
-
lodash.set(log, 'ui.collapsed', true);
|
|
10498
|
-
});
|
|
10499
|
-
}
|
|
10500
|
-
|
|
10501
|
-
//
|
|
10502
|
-
// Public methods
|
|
10503
|
-
//
|
|
10504
|
-
|
|
10505
|
-
/**
|
|
10506
|
-
* Collapse/expand row depending on `collapse` value
|
|
10507
|
-
* @param {Object} log
|
|
10508
|
-
* @param {boolean} collapse
|
|
10509
|
-
*/
|
|
10510
|
-
function collapseRow(log, collapse) {
|
|
10511
|
-
lodash.set(log, 'ui.collapsed', collapse);
|
|
10512
|
-
}
|
|
10513
|
-
|
|
10514
|
-
/**
|
|
10515
|
-
* Collapse/expand all rows depending on `expand` value
|
|
10516
|
-
* @param {boolean} expand
|
|
10517
|
-
*/
|
|
10518
|
-
function expandAllRows(expand) {
|
|
10519
|
-
lodash.forEach(ctrl.logs, function (log) {
|
|
10520
|
-
lodash.set(log, 'ui.collapsed', !expand);
|
|
10521
|
-
});
|
|
10522
|
-
}
|
|
10523
|
-
|
|
10524
|
-
/**
|
|
10525
|
-
* Gets css class depending on log.level
|
|
10526
|
-
* @param {Object} log
|
|
10527
|
-
* @returns {string}
|
|
10528
|
-
*/
|
|
10529
|
-
function getLevelIconClass(log) {
|
|
10530
|
-
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' : '';
|
|
10531
|
-
}
|
|
10532
|
-
|
|
10533
|
-
/**
|
|
10534
|
-
* Gets additional parameters
|
|
10535
|
-
* @param {Object} log
|
|
10536
|
-
* @returns {Object}
|
|
10537
|
-
*/
|
|
10538
|
-
function getParameters(log) {
|
|
10539
|
-
return lodash.omit(log, REQUIRED_PARAMETERS);
|
|
10540
|
-
}
|
|
10541
|
-
|
|
10542
|
-
/**
|
|
10543
|
-
* Checks if log has additional parameters
|
|
10544
|
-
* @param {Object} log
|
|
10545
|
-
* @returns {boolean}
|
|
10546
|
-
*/
|
|
10547
|
-
function hasAdditionalParameters(log) {
|
|
10548
|
-
return !lodash.isEmpty(getParameters(log));
|
|
10549
|
-
}
|
|
10550
|
-
}
|
|
10551
|
-
})();
|
|
10552
|
-
'use strict';
|
|
10553
|
-
|
|
10554
|
-
(function () {
|
|
10555
|
-
'use strict';
|
|
10556
|
-
|
|
10557
|
-
NclTestEventsNavigationTabsController.$inject = ['$i18next', 'i18next'];
|
|
10558
|
-
angular.module('iguazio.dashboard-controls').component('nclTestEventsNavigationTabs', {
|
|
10559
|
-
bindings: {
|
|
10560
|
-
activeTab: '<',
|
|
10561
|
-
tabItems: '<',
|
|
10562
|
-
selectedLogLevel: '<?',
|
|
10563
|
-
onChangeActiveTab: '&',
|
|
10564
|
-
onChangeLogLevel: '&?'
|
|
10565
|
-
},
|
|
10566
|
-
templateUrl: 'nuclio/functions/version/version-code/function-event-pane/test-events-navigation-tabs/test-events-navigation-tabs.tpl.html',
|
|
10567
|
-
controller: NclTestEventsNavigationTabsController
|
|
10568
|
-
});
|
|
10569
|
-
|
|
10570
|
-
function NclTestEventsNavigationTabsController($i18next, i18next) {
|
|
10571
|
-
var ctrl = this;
|
|
10572
|
-
var lng = i18next.language;
|
|
10573
|
-
|
|
10574
|
-
ctrl.logLevelValues = [{
|
|
10575
|
-
id: 'error',
|
|
10576
|
-
name: $i18next.t('common:ERROR', { lng: lng }),
|
|
10577
|
-
visible: true
|
|
10578
|
-
}, {
|
|
10579
|
-
id: 'warn',
|
|
10580
|
-
name: $i18next.t('common:WARNING', { lng: lng }),
|
|
10581
|
-
visible: true
|
|
10582
|
-
}, {
|
|
10583
|
-
id: 'info',
|
|
10584
|
-
name: $i18next.t('common:INFO', { lng: lng }),
|
|
10585
|
-
visible: true
|
|
10586
|
-
}, {
|
|
10587
|
-
id: 'debug',
|
|
10588
|
-
name: $i18next.t('common:DEBUG', { lng: lng }),
|
|
10589
|
-
visible: true
|
|
10590
|
-
}];
|
|
10591
|
-
|
|
10592
|
-
ctrl.changeActiveTab = changeActiveTab;
|
|
10593
|
-
ctrl.isActiveTab = isActiveTab;
|
|
10594
|
-
|
|
10595
|
-
//
|
|
10596
|
-
// Public methods
|
|
10597
|
-
//
|
|
10598
|
-
|
|
10599
|
-
/**
|
|
10600
|
-
* Changes active nav tab
|
|
10601
|
-
* @param {Object} item - current status
|
|
10602
|
-
*/
|
|
10603
|
-
function changeActiveTab(item) {
|
|
10604
|
-
ctrl.activeTab = item;
|
|
10605
|
-
|
|
10606
|
-
ctrl.onChangeActiveTab({ activeTab: item });
|
|
10607
|
-
}
|
|
10608
|
-
|
|
10609
|
-
/**
|
|
10610
|
-
* Checks if it is an active tab
|
|
10611
|
-
* @param {Object} item - current tab
|
|
10612
|
-
*/
|
|
10613
|
-
function isActiveTab(item) {
|
|
10614
|
-
return ctrl.activeTab.id === item.id;
|
|
10615
|
-
}
|
|
10616
|
-
}
|
|
10617
|
-
})();
|
|
10618
|
-
'use strict';
|
|
10619
|
-
|
|
10620
|
-
(function () {
|
|
10621
|
-
'use strict';
|
|
10622
|
-
|
|
10623
|
-
NclVersionConfigurationAnnotationsController.$inject = ['$element', '$i18next', '$rootScope', '$timeout', 'i18next', 'lodash', 'FormValidationService', 'PreventDropdownCutOffService', 'ValidationService'];
|
|
10624
|
-
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationAnnotations', {
|
|
10625
|
-
bindings: {
|
|
10626
|
-
version: '<',
|
|
10627
|
-
onChangeCallback: '<',
|
|
10628
|
-
isFunctionDeploying: '&'
|
|
10629
|
-
},
|
|
10630
|
-
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-annotations/version-configuration-annotations.tpl.html',
|
|
10631
|
-
controller: NclVersionConfigurationAnnotationsController
|
|
10483
|
+
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-annotations/version-configuration-annotations.tpl.html',
|
|
10484
|
+
controller: NclVersionConfigurationAnnotationsController
|
|
10632
10485
|
});
|
|
10633
10486
|
|
|
10634
10487
|
function NclVersionConfigurationAnnotationsController($element, $i18next, $rootScope, $timeout, i18next, lodash, FormValidationService, PreventDropdownCutOffService, ValidationService) {
|
|
@@ -11239,55 +11092,91 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
11239
11092
|
(function () {
|
|
11240
11093
|
'use strict';
|
|
11241
11094
|
|
|
11242
|
-
|
|
11243
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
11095
|
+
NclVersionConfigurationLoggingController.$inject = ['lodash'];
|
|
11096
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationLogging', {
|
|
11097
|
+
bindings: {
|
|
11098
|
+
version: '<',
|
|
11099
|
+
onChangeCallback: '<'
|
|
11100
|
+
},
|
|
11101
|
+
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-logging/version-configuration-logging.tpl.html',
|
|
11102
|
+
controller: NclVersionConfigurationLoggingController
|
|
11103
|
+
});
|
|
11104
|
+
|
|
11105
|
+
function NclVersionConfigurationLoggingController(lodash) {
|
|
11106
|
+
var ctrl = this;
|
|
11107
|
+
|
|
11108
|
+
ctrl.inputValueCallback = inputValueCallback;
|
|
11109
|
+
|
|
11110
|
+
//
|
|
11111
|
+
// Public methods
|
|
11112
|
+
//
|
|
11113
|
+
|
|
11114
|
+
/**
|
|
11115
|
+
* Update data callback
|
|
11116
|
+
* @param {string} newData
|
|
11117
|
+
* @param {string} field
|
|
11118
|
+
*/
|
|
11119
|
+
function inputValueCallback(newData, field) {
|
|
11120
|
+
lodash.set(ctrl.version, field, newData);
|
|
11121
|
+
|
|
11122
|
+
ctrl.onChangeCallback();
|
|
11123
|
+
}
|
|
11124
|
+
}
|
|
11125
|
+
})();
|
|
11126
|
+
'use strict';
|
|
11127
|
+
|
|
11128
|
+
(function () {
|
|
11129
|
+
'use strict';
|
|
11130
|
+
|
|
11131
|
+
NclVersionConfigurationLabelsController.$inject = ['$element', '$i18next', '$rootScope', '$timeout', 'i18next', 'lodash', 'FormValidationService', 'FunctionsService', 'PreventDropdownCutOffService', 'ValidationService', 'VersionHelperService'];
|
|
11132
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationLabels', {
|
|
11244
11133
|
bindings: {
|
|
11245
11134
|
version: '<',
|
|
11246
11135
|
onChangeCallback: '<',
|
|
11247
11136
|
isFunctionDeploying: '&'
|
|
11248
11137
|
},
|
|
11249
|
-
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
11250
|
-
controller:
|
|
11138
|
+
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-labels/version-configuration-labels.tpl.html',
|
|
11139
|
+
controller: NclVersionConfigurationLabelsController
|
|
11251
11140
|
});
|
|
11252
11141
|
|
|
11253
|
-
function
|
|
11142
|
+
function NclVersionConfigurationLabelsController($element, $i18next, $rootScope, $timeout, i18next, lodash, FormValidationService, FunctionsService, PreventDropdownCutOffService, ValidationService, VersionHelperService) {
|
|
11254
11143
|
var ctrl = this;
|
|
11255
11144
|
var lng = i18next.language;
|
|
11256
11145
|
|
|
11257
|
-
ctrl.environmentVariablesForm = null;
|
|
11258
11146
|
ctrl.igzScrollConfig = {
|
|
11259
11147
|
maxElementsCount: 10,
|
|
11260
11148
|
childrenSelector: '.table-body'
|
|
11261
11149
|
};
|
|
11262
|
-
ctrl.
|
|
11263
|
-
|
|
11264
|
-
name: 'uniqueness',
|
|
11265
|
-
label: $i18next.t('functions:UNIQUENESS', { lng: lng }),
|
|
11266
|
-
pattern: validateUniqueness.bind(null, 'name')
|
|
11267
|
-
}]),
|
|
11268
|
-
secretKey: ValidationService.getValidationRules('k8s.configMapKey'),
|
|
11269
|
-
secret: ValidationService.getValidationRules('k8s.secretName'),
|
|
11270
|
-
configmapKey: ValidationService.getValidationRules('k8s.configMapKey', [{
|
|
11271
|
-
name: 'uniqueness',
|
|
11272
|
-
label: $i18next.t('functions:UNIQUENESS', { lng: lng }),
|
|
11273
|
-
pattern: validateUniqueness.bind(null, 'valueFrom.configMapKeyRef.key')
|
|
11274
|
-
}])
|
|
11275
|
-
};
|
|
11276
|
-
ctrl.variables = [];
|
|
11150
|
+
ctrl.isKubePlatform = false;
|
|
11151
|
+
ctrl.labelsForm = null;
|
|
11277
11152
|
ctrl.scrollConfig = {
|
|
11278
11153
|
axis: 'y',
|
|
11279
11154
|
advanced: {
|
|
11280
11155
|
updateOnContentResize: true
|
|
11281
11156
|
}
|
|
11282
11157
|
};
|
|
11158
|
+
ctrl.tooltip = '<a class="link" target="_blank" ' + 'href="https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/">' + $i18next.t('functions:TOOLTIP.LABELS.HEAD', { lng: lng }) + '</a> ' + $i18next.t('functions:TOOLTIP.LABELS.REST', { lng: lng });
|
|
11159
|
+
|
|
11160
|
+
ctrl.keyTooltip = $i18next.t('functions:TOOLTIP.PREFIXED_NAME', {
|
|
11161
|
+
lng: lng,
|
|
11162
|
+
name: $i18next.t('common:LABEL', { lng: lng })
|
|
11163
|
+
});
|
|
11164
|
+
ctrl.validationRules = {
|
|
11165
|
+
key: ValidationService.getValidationRules('function.label.key', [{
|
|
11166
|
+
name: 'uniqueness',
|
|
11167
|
+
label: $i18next.t('functions:UNIQUENESS', { lng: lng }),
|
|
11168
|
+
pattern: validateUniqueness
|
|
11169
|
+
}]),
|
|
11170
|
+
value: ValidationService.getValidationRules('k8s.qualifiedName')
|
|
11171
|
+
};
|
|
11283
11172
|
|
|
11284
11173
|
ctrl.$postLink = postLink;
|
|
11285
11174
|
ctrl.$onChanges = onChanges;
|
|
11286
11175
|
|
|
11287
|
-
ctrl.
|
|
11176
|
+
ctrl.addNewLabel = addNewLabel;
|
|
11288
11177
|
ctrl.handleAction = handleAction;
|
|
11178
|
+
ctrl.isLabelsDisabled = isLabelsDisabled;
|
|
11289
11179
|
ctrl.onChangeData = onChangeData;
|
|
11290
|
-
ctrl.onChangeType = onChangeType;
|
|
11291
11180
|
|
|
11292
11181
|
//
|
|
11293
11182
|
// Hook methods
|
|
@@ -11297,6 +11186,7 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
11297
11186
|
* Post linking method
|
|
11298
11187
|
*/
|
|
11299
11188
|
function postLink() {
|
|
11189
|
+
ctrl.isKubePlatform = FunctionsService.isKubePlatform();
|
|
11300
11190
|
|
|
11301
11191
|
// Bind DOM-related preventDropdownCutOff method to component's controller
|
|
11302
11192
|
PreventDropdownCutOffService.preventDropdownCutOff($element, '.three-dot-menu');
|
|
@@ -11307,21 +11197,226 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
11307
11197
|
* @param {Object} changes
|
|
11308
11198
|
*/
|
|
11309
11199
|
function onChanges(changes) {
|
|
11310
|
-
if (
|
|
11311
|
-
ctrl.
|
|
11312
|
-
|
|
11313
|
-
|
|
11314
|
-
|
|
11315
|
-
name:
|
|
11316
|
-
|
|
11317
|
-
|
|
11318
|
-
|
|
11319
|
-
|
|
11320
|
-
|
|
11321
|
-
|
|
11322
|
-
|
|
11323
|
-
|
|
11324
|
-
|
|
11200
|
+
if (lodash.has(changes, 'version')) {
|
|
11201
|
+
ctrl.labels = lodash.chain(ctrl.version).get('metadata.labels', {}).omitBy(function (value, key) {
|
|
11202
|
+
return lodash.startsWith(key, 'nuclio.io/');
|
|
11203
|
+
}).map(function (value, key) {
|
|
11204
|
+
return {
|
|
11205
|
+
name: key,
|
|
11206
|
+
value: value,
|
|
11207
|
+
ui: {
|
|
11208
|
+
editModeActive: false,
|
|
11209
|
+
isFormValid: false,
|
|
11210
|
+
name: 'label'
|
|
11211
|
+
}
|
|
11212
|
+
};
|
|
11213
|
+
}).value();
|
|
11214
|
+
ctrl.labels = lodash.compact(ctrl.labels);
|
|
11215
|
+
ctrl.addNewLabelTooltip = VersionHelperService.isVersionDeployed(ctrl.version) ? $i18next.t('functions:TOOLTIP.ADD_LABELS', { lng: lng }) : '';
|
|
11216
|
+
|
|
11217
|
+
$timeout(function () {
|
|
11218
|
+
if (ctrl.labelsForm.$invalid) {
|
|
11219
|
+
ctrl.labelsForm.$setSubmitted();
|
|
11220
|
+
$rootScope.$broadcast('change-state-deploy-button', { component: 'label', isDisabled: true });
|
|
11221
|
+
}
|
|
11222
|
+
});
|
|
11223
|
+
}
|
|
11224
|
+
}
|
|
11225
|
+
|
|
11226
|
+
//
|
|
11227
|
+
// Public methods
|
|
11228
|
+
//
|
|
11229
|
+
|
|
11230
|
+
/**
|
|
11231
|
+
* Adds new label
|
|
11232
|
+
*/
|
|
11233
|
+
function addNewLabel(event) {
|
|
11234
|
+
// prevent adding labels for deployed functions
|
|
11235
|
+
if (ctrl.isLabelsDisabled() || ctrl.isFunctionDeploying()) {
|
|
11236
|
+
return;
|
|
11237
|
+
}
|
|
11238
|
+
|
|
11239
|
+
$timeout(function () {
|
|
11240
|
+
if (ctrl.labels.length < 1 || lodash.last(ctrl.labels).ui.isFormValid) {
|
|
11241
|
+
ctrl.labels.push({
|
|
11242
|
+
name: '',
|
|
11243
|
+
value: '',
|
|
11244
|
+
ui: {
|
|
11245
|
+
editModeActive: true,
|
|
11246
|
+
isFormValid: false,
|
|
11247
|
+
name: 'label'
|
|
11248
|
+
}
|
|
11249
|
+
});
|
|
11250
|
+
|
|
11251
|
+
$rootScope.$broadcast('change-state-deploy-button', { component: 'label', isDisabled: true });
|
|
11252
|
+
event.stopPropagation();
|
|
11253
|
+
}
|
|
11254
|
+
}, 50);
|
|
11255
|
+
}
|
|
11256
|
+
|
|
11257
|
+
/**
|
|
11258
|
+
* Handler on specific action type
|
|
11259
|
+
* @param {string} actionType
|
|
11260
|
+
* @param {number} index - index of label in array
|
|
11261
|
+
*/
|
|
11262
|
+
function handleAction(actionType, index) {
|
|
11263
|
+
if (actionType === 'delete') {
|
|
11264
|
+
ctrl.labels.splice(index, 1);
|
|
11265
|
+
|
|
11266
|
+
$timeout(function () {
|
|
11267
|
+
updateLabels();
|
|
11268
|
+
});
|
|
11269
|
+
}
|
|
11270
|
+
}
|
|
11271
|
+
|
|
11272
|
+
/**
|
|
11273
|
+
* Checks if labels should be disabled
|
|
11274
|
+
* @returns {boolean}
|
|
11275
|
+
*/
|
|
11276
|
+
function isLabelsDisabled() {
|
|
11277
|
+
return ctrl.isKubePlatform && VersionHelperService.isVersionDeployed(ctrl.version);
|
|
11278
|
+
}
|
|
11279
|
+
|
|
11280
|
+
/**
|
|
11281
|
+
* Changes labels data
|
|
11282
|
+
* @param {Object} label
|
|
11283
|
+
* @param {number} index
|
|
11284
|
+
*/
|
|
11285
|
+
function onChangeData(label, index) {
|
|
11286
|
+
ctrl.labels[index] = lodash.cloneDeep(label);
|
|
11287
|
+
|
|
11288
|
+
updateLabels();
|
|
11289
|
+
}
|
|
11290
|
+
|
|
11291
|
+
//
|
|
11292
|
+
// Private methods
|
|
11293
|
+
//
|
|
11294
|
+
|
|
11295
|
+
/**
|
|
11296
|
+
* Updates function`s labels
|
|
11297
|
+
*/
|
|
11298
|
+
function updateLabels() {
|
|
11299
|
+
var isFormValid = true;
|
|
11300
|
+
var newLabels = {};
|
|
11301
|
+
|
|
11302
|
+
lodash.forEach(ctrl.labels, function (label) {
|
|
11303
|
+
if (!label.ui.isFormValid) {
|
|
11304
|
+
isFormValid = false;
|
|
11305
|
+
}
|
|
11306
|
+
|
|
11307
|
+
newLabels[label.name] = label.value;
|
|
11308
|
+
});
|
|
11309
|
+
|
|
11310
|
+
// since uniqueness validation rule of some fields is dependent on the entire label list, then whenever
|
|
11311
|
+
// the list is modified - the rest of the labels need to be re-validated
|
|
11312
|
+
FormValidationService.validateAllFields(ctrl.labelsForm);
|
|
11313
|
+
|
|
11314
|
+
$rootScope.$broadcast('change-state-deploy-button', {
|
|
11315
|
+
component: 'label',
|
|
11316
|
+
isDisabled: !isFormValid
|
|
11317
|
+
});
|
|
11318
|
+
|
|
11319
|
+
lodash.set(ctrl.version, 'metadata.labels', newLabels);
|
|
11320
|
+
ctrl.onChangeCallback();
|
|
11321
|
+
}
|
|
11322
|
+
|
|
11323
|
+
/**
|
|
11324
|
+
* Determines `uniqueness` validation for `Key` field
|
|
11325
|
+
* @param {string} value - value to validate
|
|
11326
|
+
*/
|
|
11327
|
+
function validateUniqueness(value) {
|
|
11328
|
+
return lodash.filter(ctrl.labels, ['name', value]).length === 1;
|
|
11329
|
+
}
|
|
11330
|
+
}
|
|
11331
|
+
})();
|
|
11332
|
+
'use strict';
|
|
11333
|
+
|
|
11334
|
+
(function () {
|
|
11335
|
+
'use strict';
|
|
11336
|
+
|
|
11337
|
+
NclVersionConfigurationEnvironmentVariablesController.$inject = ['$element', '$i18next', '$rootScope', '$timeout', 'i18next', 'lodash', 'FormValidationService', 'PreventDropdownCutOffService', 'ValidationService'];
|
|
11338
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationEnvironmentVariables', {
|
|
11339
|
+
bindings: {
|
|
11340
|
+
version: '<',
|
|
11341
|
+
onChangeCallback: '<',
|
|
11342
|
+
isFunctionDeploying: '&'
|
|
11343
|
+
},
|
|
11344
|
+
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-environment-variables/version-configuration-environment-variables.tpl.html',
|
|
11345
|
+
controller: NclVersionConfigurationEnvironmentVariablesController
|
|
11346
|
+
});
|
|
11347
|
+
|
|
11348
|
+
function NclVersionConfigurationEnvironmentVariablesController($element, $i18next, $rootScope, $timeout, i18next, lodash, FormValidationService, PreventDropdownCutOffService, ValidationService) {
|
|
11349
|
+
var ctrl = this;
|
|
11350
|
+
var lng = i18next.language;
|
|
11351
|
+
|
|
11352
|
+
ctrl.environmentVariablesForm = null;
|
|
11353
|
+
ctrl.igzScrollConfig = {
|
|
11354
|
+
maxElementsCount: 10,
|
|
11355
|
+
childrenSelector: '.table-body'
|
|
11356
|
+
};
|
|
11357
|
+
ctrl.validationRules = {
|
|
11358
|
+
key: ValidationService.getValidationRules('k8s.envVarName', [{
|
|
11359
|
+
name: 'uniqueness',
|
|
11360
|
+
label: $i18next.t('functions:UNIQUENESS', { lng: lng }),
|
|
11361
|
+
pattern: validateUniqueness.bind(null, 'name')
|
|
11362
|
+
}]),
|
|
11363
|
+
secretKey: ValidationService.getValidationRules('k8s.configMapKey'),
|
|
11364
|
+
secret: ValidationService.getValidationRules('k8s.secretName'),
|
|
11365
|
+
configmapKey: ValidationService.getValidationRules('k8s.configMapKey', [{
|
|
11366
|
+
name: 'uniqueness',
|
|
11367
|
+
label: $i18next.t('functions:UNIQUENESS', { lng: lng }),
|
|
11368
|
+
pattern: validateUniqueness.bind(null, 'valueFrom.configMapKeyRef.key')
|
|
11369
|
+
}])
|
|
11370
|
+
};
|
|
11371
|
+
ctrl.variables = [];
|
|
11372
|
+
ctrl.scrollConfig = {
|
|
11373
|
+
axis: 'y',
|
|
11374
|
+
advanced: {
|
|
11375
|
+
updateOnContentResize: true
|
|
11376
|
+
}
|
|
11377
|
+
};
|
|
11378
|
+
|
|
11379
|
+
ctrl.$postLink = postLink;
|
|
11380
|
+
ctrl.$onChanges = onChanges;
|
|
11381
|
+
|
|
11382
|
+
ctrl.addNewVariable = addNewVariable;
|
|
11383
|
+
ctrl.handleAction = handleAction;
|
|
11384
|
+
ctrl.onChangeData = onChangeData;
|
|
11385
|
+
ctrl.onChangeType = onChangeType;
|
|
11386
|
+
|
|
11387
|
+
//
|
|
11388
|
+
// Hook methods
|
|
11389
|
+
//
|
|
11390
|
+
|
|
11391
|
+
/**
|
|
11392
|
+
* Post linking method
|
|
11393
|
+
*/
|
|
11394
|
+
function postLink() {
|
|
11395
|
+
|
|
11396
|
+
// Bind DOM-related preventDropdownCutOff method to component's controller
|
|
11397
|
+
PreventDropdownCutOffService.preventDropdownCutOff($element, '.three-dot-menu');
|
|
11398
|
+
}
|
|
11399
|
+
|
|
11400
|
+
/**
|
|
11401
|
+
* On changes hook method.
|
|
11402
|
+
* @param {Object} changes
|
|
11403
|
+
*/
|
|
11404
|
+
function onChanges(changes) {
|
|
11405
|
+
if (angular.isDefined(changes.version)) {
|
|
11406
|
+
ctrl.variables = lodash.chain(ctrl.version).get('spec.env', []).map(function (variable) {
|
|
11407
|
+
variable.ui = {
|
|
11408
|
+
editModeActive: false,
|
|
11409
|
+
isFormValid: false,
|
|
11410
|
+
name: 'variable'
|
|
11411
|
+
};
|
|
11412
|
+
|
|
11413
|
+
return variable;
|
|
11414
|
+
}).value();
|
|
11415
|
+
|
|
11416
|
+
ctrl.isOnlyValueTypeInputs = !lodash.some(ctrl.variables, 'valueFrom');
|
|
11417
|
+
|
|
11418
|
+
$timeout(function () {
|
|
11419
|
+
if (ctrl.environmentVariablesForm.$invalid) {
|
|
11325
11420
|
ctrl.environmentVariablesForm.$setSubmitted();
|
|
11326
11421
|
$rootScope.$broadcast('change-state-deploy-button', { component: 'variable', isDisabled: true });
|
|
11327
11422
|
}
|
|
@@ -11454,42 +11549,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
11454
11549
|
})();
|
|
11455
11550
|
'use strict';
|
|
11456
11551
|
|
|
11457
|
-
(function () {
|
|
11458
|
-
'use strict';
|
|
11459
|
-
|
|
11460
|
-
NclVersionConfigurationLoggingController.$inject = ['lodash'];
|
|
11461
|
-
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationLogging', {
|
|
11462
|
-
bindings: {
|
|
11463
|
-
version: '<',
|
|
11464
|
-
onChangeCallback: '<'
|
|
11465
|
-
},
|
|
11466
|
-
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-logging/version-configuration-logging.tpl.html',
|
|
11467
|
-
controller: NclVersionConfigurationLoggingController
|
|
11468
|
-
});
|
|
11469
|
-
|
|
11470
|
-
function NclVersionConfigurationLoggingController(lodash) {
|
|
11471
|
-
var ctrl = this;
|
|
11472
|
-
|
|
11473
|
-
ctrl.inputValueCallback = inputValueCallback;
|
|
11474
|
-
|
|
11475
|
-
//
|
|
11476
|
-
// Public methods
|
|
11477
|
-
//
|
|
11478
|
-
|
|
11479
|
-
/**
|
|
11480
|
-
* Update data callback
|
|
11481
|
-
* @param {string} newData
|
|
11482
|
-
* @param {string} field
|
|
11483
|
-
*/
|
|
11484
|
-
function inputValueCallback(newData, field) {
|
|
11485
|
-
lodash.set(ctrl.version, field, newData);
|
|
11486
|
-
|
|
11487
|
-
ctrl.onChangeCallback();
|
|
11488
|
-
}
|
|
11489
|
-
}
|
|
11490
|
-
})();
|
|
11491
|
-
'use strict';
|
|
11492
|
-
|
|
11493
11552
|
/* eslint max-statements: ["error", 80] */
|
|
11494
11553
|
(function () {
|
|
11495
11554
|
'use strict';
|
|
@@ -12323,68 +12382,67 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
12323
12382
|
(function () {
|
|
12324
12383
|
'use strict';
|
|
12325
12384
|
|
|
12326
|
-
|
|
12327
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
12385
|
+
NclVersionConfigurationVolumesController.$inject = ['$rootScope', '$scope', '$timeout', '$i18next', 'i18next', 'lodash', 'DialogsService', 'FormValidationService', 'FunctionsService', 'ValidationService'];
|
|
12386
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationVolumes', {
|
|
12328
12387
|
bindings: {
|
|
12329
12388
|
version: '<',
|
|
12330
|
-
onChangeCallback: '
|
|
12389
|
+
onChangeCallback: '&',
|
|
12331
12390
|
isFunctionDeploying: '&'
|
|
12332
12391
|
},
|
|
12333
|
-
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
12334
|
-
controller:
|
|
12392
|
+
templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-volumes/version-configuration-volumes.tpl.html',
|
|
12393
|
+
controller: NclVersionConfigurationVolumesController
|
|
12335
12394
|
});
|
|
12336
12395
|
|
|
12337
|
-
function
|
|
12396
|
+
function NclVersionConfigurationVolumesController($rootScope, $scope, $timeout, $i18next, i18next, lodash, DialogsService, FormValidationService, FunctionsService, ValidationService) {
|
|
12338
12397
|
var ctrl = this;
|
|
12339
12398
|
var lng = i18next.language;
|
|
12340
12399
|
|
|
12400
|
+
ctrl.isCreateModeActive = false;
|
|
12401
|
+
ctrl.volumes = [];
|
|
12402
|
+
ctrl.volumesForm = null;
|
|
12341
12403
|
ctrl.igzScrollConfig = {
|
|
12342
|
-
maxElementsCount:
|
|
12343
|
-
childrenSelector: '.
|
|
12404
|
+
maxElementsCount: 5,
|
|
12405
|
+
childrenSelector: '.ncl-collapsing-row'
|
|
12344
12406
|
};
|
|
12345
|
-
ctrl.isKubePlatform = false;
|
|
12346
|
-
ctrl.labelsForm = null;
|
|
12347
12407
|
ctrl.scrollConfig = {
|
|
12348
12408
|
axis: 'y',
|
|
12349
12409
|
advanced: {
|
|
12350
12410
|
updateOnContentResize: true
|
|
12351
12411
|
}
|
|
12352
12412
|
};
|
|
12353
|
-
ctrl.tooltip = '<a class="link" target="_blank" ' + 'href="https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/">' + $i18next.t('functions:TOOLTIP.LABELS.HEAD', { lng: lng }) + '</a> ' + $i18next.t('functions:TOOLTIP.LABELS.REST', { lng: lng });
|
|
12354
|
-
|
|
12355
|
-
ctrl.keyTooltip = $i18next.t('functions:TOOLTIP.PREFIXED_NAME', {
|
|
12356
|
-
lng: lng,
|
|
12357
|
-
name: $i18next.t('common:LABEL', { lng: lng })
|
|
12358
|
-
});
|
|
12359
12413
|
ctrl.validationRules = {
|
|
12360
|
-
|
|
12361
|
-
|
|
12414
|
+
itemName: [],
|
|
12415
|
+
itemPath: ValidationService.getValidationRules('function.itemPath', [{
|
|
12362
12416
|
label: $i18next.t('functions:UNIQUENESS', { lng: lng }),
|
|
12363
|
-
pattern: validateUniqueness
|
|
12417
|
+
pattern: validateUniqueness.bind(null, 'volumeMount.mountPath')
|
|
12364
12418
|
}]),
|
|
12365
|
-
|
|
12419
|
+
containerName: ValidationService.getValidationRules('container.name')
|
|
12420
|
+
};
|
|
12421
|
+
ctrl.maxLengths = {
|
|
12422
|
+
containerSubPath: ValidationService.getMaxLength('function.containerSubPath')
|
|
12366
12423
|
};
|
|
12367
12424
|
|
|
12368
|
-
ctrl.$
|
|
12425
|
+
ctrl.$onInit = onInit;
|
|
12369
12426
|
ctrl.$onChanges = onChanges;
|
|
12427
|
+
ctrl.$onDestroy = onDestroy;
|
|
12370
12428
|
|
|
12371
|
-
ctrl.
|
|
12429
|
+
ctrl.createVolume = createVolume;
|
|
12430
|
+
ctrl.editVolumeCallback = editVolumeCallback;
|
|
12372
12431
|
ctrl.handleAction = handleAction;
|
|
12373
|
-
ctrl.isLabelsDisabled = isLabelsDisabled;
|
|
12374
|
-
ctrl.onChangeData = onChangeData;
|
|
12375
12432
|
|
|
12376
12433
|
//
|
|
12377
12434
|
// Hook methods
|
|
12378
12435
|
//
|
|
12379
12436
|
|
|
12380
12437
|
/**
|
|
12381
|
-
*
|
|
12438
|
+
* Initialization method
|
|
12382
12439
|
*/
|
|
12383
|
-
function
|
|
12384
|
-
ctrl.
|
|
12440
|
+
function onInit() {
|
|
12441
|
+
ctrl.validationRules.itemName = ValidationService.getValidationRules('k8s.dns1123Label');
|
|
12385
12442
|
|
|
12386
|
-
|
|
12387
|
-
|
|
12443
|
+
ctrl.classList = FunctionsService.getClassesList('volume');
|
|
12444
|
+
|
|
12445
|
+
$scope.$on('edit-item-has-been-changed', updateVolumesChangesState);
|
|
12388
12446
|
}
|
|
12389
12447
|
|
|
12390
12448
|
/**
|
|
@@ -12392,135 +12450,195 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
12392
12450
|
* @param {Object} changes
|
|
12393
12451
|
*/
|
|
12394
12452
|
function onChanges(changes) {
|
|
12395
|
-
if (
|
|
12396
|
-
|
|
12397
|
-
|
|
12398
|
-
|
|
12399
|
-
|
|
12400
|
-
|
|
12401
|
-
|
|
12402
|
-
|
|
12403
|
-
|
|
12404
|
-
|
|
12405
|
-
|
|
12406
|
-
}
|
|
12453
|
+
if (angular.isDefined(changes.version)) {
|
|
12454
|
+
|
|
12455
|
+
// get volumes list
|
|
12456
|
+
ctrl.volumes = lodash.map(lodash.get(ctrl.version, 'spec.volumes', []), function (value) {
|
|
12457
|
+
var volumeItem = angular.copy(value);
|
|
12458
|
+
|
|
12459
|
+
volumeItem.ui = {
|
|
12460
|
+
changed: false,
|
|
12461
|
+
editModeActive: false,
|
|
12462
|
+
isFormValid: true,
|
|
12463
|
+
name: 'volume'
|
|
12407
12464
|
};
|
|
12408
|
-
}).value();
|
|
12409
|
-
ctrl.labels = lodash.compact(ctrl.labels);
|
|
12410
|
-
ctrl.addNewLabelTooltip = VersionHelperService.isVersionDeployed(ctrl.version) ? $i18next.t('functions:TOOLTIP.ADD_LABELS', { lng: lng }) : '';
|
|
12411
12465
|
|
|
12412
|
-
|
|
12413
|
-
if (ctrl.labelsForm.$invalid) {
|
|
12414
|
-
ctrl.labelsForm.$setSubmitted();
|
|
12415
|
-
$rootScope.$broadcast('change-state-deploy-button', { component: 'label', isDisabled: true });
|
|
12416
|
-
}
|
|
12466
|
+
return volumeItem;
|
|
12417
12467
|
});
|
|
12418
12468
|
}
|
|
12419
12469
|
}
|
|
12420
12470
|
|
|
12471
|
+
/**
|
|
12472
|
+
* Destructor method
|
|
12473
|
+
*/
|
|
12474
|
+
function onDestroy() {
|
|
12475
|
+
$rootScope.$broadcast('change-state-deploy-button', { component: 'volume', isDisabled: false });
|
|
12476
|
+
}
|
|
12477
|
+
|
|
12421
12478
|
//
|
|
12422
12479
|
// Public methods
|
|
12423
12480
|
//
|
|
12424
12481
|
|
|
12425
12482
|
/**
|
|
12426
|
-
*
|
|
12483
|
+
* Toggle create volume mode
|
|
12484
|
+
* @param {Event} event
|
|
12427
12485
|
*/
|
|
12428
|
-
function
|
|
12429
|
-
|
|
12430
|
-
if (ctrl.isLabelsDisabled() || ctrl.isFunctionDeploying()) {
|
|
12486
|
+
function createVolume(event) {
|
|
12487
|
+
if (ctrl.isFunctionDeploying()) {
|
|
12431
12488
|
return;
|
|
12432
12489
|
}
|
|
12433
12490
|
|
|
12434
12491
|
$timeout(function () {
|
|
12435
|
-
if (
|
|
12436
|
-
ctrl.
|
|
12437
|
-
|
|
12438
|
-
|
|
12492
|
+
if (!isVolumeInEditMode()) {
|
|
12493
|
+
ctrl.volumes.push({
|
|
12494
|
+
volumeMount: {
|
|
12495
|
+
name: ''
|
|
12496
|
+
},
|
|
12497
|
+
volume: {
|
|
12498
|
+
name: ''
|
|
12499
|
+
},
|
|
12439
12500
|
ui: {
|
|
12501
|
+
changed: true,
|
|
12440
12502
|
editModeActive: true,
|
|
12441
12503
|
isFormValid: false,
|
|
12442
|
-
name: '
|
|
12504
|
+
name: 'volume'
|
|
12443
12505
|
}
|
|
12444
12506
|
});
|
|
12445
12507
|
|
|
12446
|
-
|
|
12508
|
+
ctrl.volumesForm.$setPristine();
|
|
12509
|
+
|
|
12447
12510
|
event.stopPropagation();
|
|
12511
|
+
$rootScope.$broadcast('change-state-deploy-button', { component: 'volume', isDisabled: true });
|
|
12448
12512
|
}
|
|
12449
|
-
},
|
|
12513
|
+
}, 100);
|
|
12450
12514
|
}
|
|
12451
12515
|
|
|
12452
12516
|
/**
|
|
12453
|
-
*
|
|
12454
|
-
* @param {
|
|
12455
|
-
* @param {number} index - index of label in array
|
|
12517
|
+
* Edit item callback function
|
|
12518
|
+
* @param {Object} item - selected item
|
|
12456
12519
|
*/
|
|
12457
|
-
function
|
|
12458
|
-
|
|
12459
|
-
|
|
12520
|
+
function editVolumeCallback(item) {
|
|
12521
|
+
ctrl.handleAction('update', item);
|
|
12522
|
+
}
|
|
12460
12523
|
|
|
12461
|
-
|
|
12462
|
-
|
|
12463
|
-
|
|
12524
|
+
/**
|
|
12525
|
+
* According to given action name calls proper action handler
|
|
12526
|
+
* @param {string} actionType - e.g. `'delete'`, `'edit'`, `'update'`
|
|
12527
|
+
* @param {Object} selectedItem - an object of selected volume
|
|
12528
|
+
* @param {number} [index] - index of variable in array
|
|
12529
|
+
*/
|
|
12530
|
+
function handleAction(actionType, selectedItem, index) {
|
|
12531
|
+
if (actionType === 'delete') {
|
|
12532
|
+
deleteHandler(index);
|
|
12533
|
+
} else if (actionType === 'edit') {
|
|
12534
|
+
editHandler(selectedItem);
|
|
12535
|
+
} else if (actionType === 'update') {
|
|
12536
|
+
updateHandler(selectedItem);
|
|
12537
|
+
} else {
|
|
12538
|
+
DialogsService.alert($i18next.t('functions:ERROR_MSG.FUNCTIONALITY_IS_NOT_IMPLEMENTED', { lng: lng }));
|
|
12464
12539
|
}
|
|
12540
|
+
|
|
12541
|
+
$rootScope.$broadcast('change-state-deploy-button', { component: 'volume', isDisabled: false });
|
|
12542
|
+
lodash.forEach(ctrl.volumes, function (volume) {
|
|
12543
|
+
if (!volume.ui.isFormValid) {
|
|
12544
|
+
$rootScope.$broadcast('change-state-deploy-button', { component: volume.ui.name, isDisabled: true });
|
|
12545
|
+
}
|
|
12546
|
+
});
|
|
12547
|
+
|
|
12548
|
+
ctrl.onChangeCallback();
|
|
12465
12549
|
}
|
|
12466
12550
|
|
|
12551
|
+
//
|
|
12552
|
+
// Private methods
|
|
12553
|
+
//
|
|
12554
|
+
|
|
12467
12555
|
/**
|
|
12468
|
-
* Checks
|
|
12469
|
-
* @returns {boolean}
|
|
12556
|
+
* Checks validation of volumes
|
|
12470
12557
|
*/
|
|
12471
|
-
function
|
|
12472
|
-
|
|
12558
|
+
function checkValidation() {
|
|
12559
|
+
if (lodash.some(ctrl.volumes, ['ui.isFormValid', false])) {
|
|
12560
|
+
FormValidationService.validateAllFields(ctrl.volumesForm);
|
|
12561
|
+
}
|
|
12473
12562
|
}
|
|
12474
12563
|
|
|
12475
12564
|
/**
|
|
12476
|
-
*
|
|
12477
|
-
* @param {
|
|
12478
|
-
* @param {number} index
|
|
12565
|
+
* Deletes selected item
|
|
12566
|
+
* @param {number} index - index of variable in array
|
|
12479
12567
|
*/
|
|
12480
|
-
function
|
|
12481
|
-
ctrl.
|
|
12568
|
+
function deleteHandler(index) {
|
|
12569
|
+
ctrl.volumes.splice(index, 1);
|
|
12482
12570
|
|
|
12483
|
-
|
|
12571
|
+
// since uniqueness validation rule of some fields is dependent on the entire volume list, whenever a volume
|
|
12572
|
+
// is removed, the rest of the volumes needs to be re-validated
|
|
12573
|
+
checkValidation();
|
|
12574
|
+
|
|
12575
|
+
var workingCopy = lodash.map(ctrl.volumes, function (volume) {
|
|
12576
|
+
return lodash.omit(volume, 'ui');
|
|
12577
|
+
});
|
|
12578
|
+
|
|
12579
|
+
lodash.set(ctrl.version, 'spec.volumes', workingCopy);
|
|
12484
12580
|
}
|
|
12485
12581
|
|
|
12486
|
-
|
|
12487
|
-
|
|
12488
|
-
|
|
12582
|
+
/**
|
|
12583
|
+
* Toggles item to edit mode
|
|
12584
|
+
* @param {Object} selectedItem - an object of selected volume
|
|
12585
|
+
*/
|
|
12586
|
+
function editHandler(selectedItem) {
|
|
12587
|
+
selectedItem.ui.editModeActive = true;
|
|
12588
|
+
}
|
|
12489
12589
|
|
|
12490
12590
|
/**
|
|
12491
|
-
*
|
|
12591
|
+
* Checks if volume is in edit mode
|
|
12592
|
+
* @returns {boolean}
|
|
12492
12593
|
*/
|
|
12493
|
-
function
|
|
12494
|
-
|
|
12495
|
-
|
|
12594
|
+
function isVolumeInEditMode() {
|
|
12595
|
+
return lodash.some(ctrl.volumes, ['ui.editModeActive', true]);
|
|
12596
|
+
}
|
|
12496
12597
|
|
|
12497
|
-
|
|
12498
|
-
|
|
12499
|
-
|
|
12500
|
-
|
|
12598
|
+
/**
|
|
12599
|
+
* Updates data in selected item
|
|
12600
|
+
* @param {Object} selectedItem - an object of selected volume
|
|
12601
|
+
*/
|
|
12602
|
+
function updateHandler(selectedItem) {
|
|
12603
|
+
var workingCopy = angular.copy(ctrl.volumes);
|
|
12604
|
+
var currentVolume = lodash.find(ctrl.volumes, ['volumeMount.mountPath', selectedItem.volumeMount.mountPath]);
|
|
12605
|
+
var indexOfEditableElement = lodash.findIndex(ctrl.volumes, ['volumeMount.mountPath', selectedItem.volumeMount.mountPath]);
|
|
12501
12606
|
|
|
12502
|
-
|
|
12503
|
-
|
|
12607
|
+
if (angular.isDefined(currentVolume)) {
|
|
12608
|
+
workingCopy[indexOfEditableElement] = {
|
|
12609
|
+
volumeMount: selectedItem.volumeMount,
|
|
12610
|
+
volume: selectedItem.volume
|
|
12611
|
+
};
|
|
12504
12612
|
|
|
12505
|
-
|
|
12506
|
-
|
|
12507
|
-
|
|
12613
|
+
// since uniqueness validation rule of some fields is dependent on the entire volume list, whenever a
|
|
12614
|
+
// volume is updated, the rest of the volumes needs to be re-validated
|
|
12615
|
+
checkValidation();
|
|
12508
12616
|
|
|
12509
|
-
|
|
12510
|
-
|
|
12511
|
-
|
|
12512
|
-
});
|
|
12617
|
+
lodash.forEach(workingCopy, function (volume) {
|
|
12618
|
+
delete volume.ui;
|
|
12619
|
+
});
|
|
12513
12620
|
|
|
12514
|
-
|
|
12515
|
-
|
|
12621
|
+
lodash.set(ctrl.version, 'spec.volumes', workingCopy);
|
|
12622
|
+
}
|
|
12516
12623
|
}
|
|
12517
12624
|
|
|
12518
12625
|
/**
|
|
12519
|
-
*
|
|
12520
|
-
* @param {string} value - value to validate
|
|
12626
|
+
* Checks volumes and updates `ctrl.version.ui.isVolumesChanged` if there is some changed and unsaved trigger.
|
|
12521
12627
|
*/
|
|
12522
|
-
function
|
|
12523
|
-
|
|
12628
|
+
function updateVolumesChangesState() {
|
|
12629
|
+
var isSomeVolumeChanged = lodash.some(ctrl.volumes, ['ui.changed', true]);
|
|
12630
|
+
var isSomeVolumeInEditMode = lodash.some(ctrl.volumes, ['ui.editModeActive', true]);
|
|
12631
|
+
|
|
12632
|
+
lodash.set(ctrl.version, 'ui.isVolumesChanged', isSomeVolumeChanged && isSomeVolumeInEditMode);
|
|
12633
|
+
}
|
|
12634
|
+
|
|
12635
|
+
/**
|
|
12636
|
+
* Determines `uniqueness` validation for `Name` and `Mount Path` fields
|
|
12637
|
+
* @param {string} path
|
|
12638
|
+
* @param {string} value
|
|
12639
|
+
*/
|
|
12640
|
+
function validateUniqueness(path, value) {
|
|
12641
|
+
return lodash.filter(ctrl.volumes, [path, value]).length === 1;
|
|
12524
12642
|
}
|
|
12525
12643
|
}
|
|
12526
12644
|
})();
|
|
@@ -12717,97 +12835,38 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
12717
12835
|
(function () {
|
|
12718
12836
|
'use strict';
|
|
12719
12837
|
|
|
12720
|
-
|
|
12721
|
-
angular.module('iguazio.dashboard-controls').component('
|
|
12838
|
+
NclTestEventsLogsController.$inject = ['lodash'];
|
|
12839
|
+
angular.module('iguazio.dashboard-controls').component('nclTestEventsLogs', {
|
|
12722
12840
|
bindings: {
|
|
12723
|
-
|
|
12724
|
-
onChangeCallback: '&',
|
|
12725
|
-
isFunctionDeploying: '&'
|
|
12841
|
+
logs: '<'
|
|
12726
12842
|
},
|
|
12727
|
-
templateUrl: 'nuclio/functions/version/version-
|
|
12728
|
-
controller:
|
|
12843
|
+
templateUrl: 'nuclio/functions/version/version-code/function-event-pane/test-events-logs/test-events-logs.tpl.html',
|
|
12844
|
+
controller: NclTestEventsLogsController
|
|
12729
12845
|
});
|
|
12730
12846
|
|
|
12731
|
-
function
|
|
12847
|
+
function NclTestEventsLogsController(lodash) {
|
|
12732
12848
|
var ctrl = this;
|
|
12733
|
-
var
|
|
12734
|
-
|
|
12735
|
-
ctrl.isCreateModeActive = false;
|
|
12736
|
-
ctrl.volumes = [];
|
|
12737
|
-
ctrl.volumesForm = null;
|
|
12738
|
-
ctrl.igzScrollConfig = {
|
|
12739
|
-
maxElementsCount: 5,
|
|
12740
|
-
childrenSelector: '.ncl-collapsing-row'
|
|
12741
|
-
};
|
|
12742
|
-
ctrl.scrollConfig = {
|
|
12743
|
-
axis: 'y',
|
|
12744
|
-
advanced: {
|
|
12745
|
-
updateOnContentResize: true
|
|
12746
|
-
}
|
|
12747
|
-
};
|
|
12748
|
-
ctrl.validationRules = {
|
|
12749
|
-
itemName: [],
|
|
12750
|
-
itemPath: ValidationService.getValidationRules('function.itemPath', [{
|
|
12751
|
-
label: $i18next.t('functions:UNIQUENESS', { lng: lng }),
|
|
12752
|
-
pattern: validateUniqueness.bind(null, 'volumeMount.mountPath')
|
|
12753
|
-
}]),
|
|
12754
|
-
containerName: ValidationService.getValidationRules('container.name')
|
|
12755
|
-
};
|
|
12756
|
-
ctrl.maxLengths = {
|
|
12757
|
-
containerSubPath: ValidationService.getMaxLength('function.containerSubPath')
|
|
12758
|
-
};
|
|
12849
|
+
var REQUIRED_PARAMETERS = ['level', 'name', 'time', 'err', 'message', 'ui'];
|
|
12759
12850
|
|
|
12760
12851
|
ctrl.$onInit = onInit;
|
|
12761
|
-
ctrl.$onChanges = onChanges;
|
|
12762
|
-
ctrl.$onDestroy = onDestroy;
|
|
12763
12852
|
|
|
12764
|
-
ctrl.
|
|
12765
|
-
ctrl.
|
|
12766
|
-
ctrl.
|
|
12853
|
+
ctrl.collapseRow = collapseRow;
|
|
12854
|
+
ctrl.expandAllRows = expandAllRows;
|
|
12855
|
+
ctrl.getLevelIconClass = getLevelIconClass;
|
|
12856
|
+
ctrl.getParameters = getParameters;
|
|
12857
|
+
ctrl.hasAdditionalParameters = hasAdditionalParameters;
|
|
12767
12858
|
|
|
12768
12859
|
//
|
|
12769
|
-
// Hook
|
|
12860
|
+
// Hook method
|
|
12770
12861
|
//
|
|
12771
12862
|
|
|
12772
12863
|
/**
|
|
12773
12864
|
* Initialization method
|
|
12774
12865
|
*/
|
|
12775
12866
|
function onInit() {
|
|
12776
|
-
ctrl.
|
|
12777
|
-
|
|
12778
|
-
|
|
12779
|
-
|
|
12780
|
-
$scope.$on('edit-item-has-been-changed', updateVolumesChangesState);
|
|
12781
|
-
}
|
|
12782
|
-
|
|
12783
|
-
/**
|
|
12784
|
-
* On changes hook method.
|
|
12785
|
-
* @param {Object} changes
|
|
12786
|
-
*/
|
|
12787
|
-
function onChanges(changes) {
|
|
12788
|
-
if (angular.isDefined(changes.version)) {
|
|
12789
|
-
|
|
12790
|
-
// get volumes list
|
|
12791
|
-
ctrl.volumes = lodash.map(lodash.get(ctrl.version, 'spec.volumes', []), function (value) {
|
|
12792
|
-
var volumeItem = angular.copy(value);
|
|
12793
|
-
|
|
12794
|
-
volumeItem.ui = {
|
|
12795
|
-
changed: false,
|
|
12796
|
-
editModeActive: false,
|
|
12797
|
-
isFormValid: true,
|
|
12798
|
-
name: 'volume'
|
|
12799
|
-
};
|
|
12800
|
-
|
|
12801
|
-
return volumeItem;
|
|
12802
|
-
});
|
|
12803
|
-
}
|
|
12804
|
-
}
|
|
12805
|
-
|
|
12806
|
-
/**
|
|
12807
|
-
* Destructor method
|
|
12808
|
-
*/
|
|
12809
|
-
function onDestroy() {
|
|
12810
|
-
$rootScope.$broadcast('change-state-deploy-button', { component: 'volume', isDisabled: false });
|
|
12867
|
+
lodash.forEach(ctrl.logs, function (log) {
|
|
12868
|
+
lodash.set(log, 'ui.collapsed', true);
|
|
12869
|
+
});
|
|
12811
12870
|
}
|
|
12812
12871
|
|
|
12813
12872
|
//
|
|
@@ -12815,165 +12874,115 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
12815
12874
|
//
|
|
12816
12875
|
|
|
12817
12876
|
/**
|
|
12818
|
-
*
|
|
12819
|
-
* @param {
|
|
12820
|
-
|
|
12821
|
-
function createVolume(event) {
|
|
12822
|
-
if (ctrl.isFunctionDeploying()) {
|
|
12823
|
-
return;
|
|
12824
|
-
}
|
|
12825
|
-
|
|
12826
|
-
$timeout(function () {
|
|
12827
|
-
if (!isVolumeInEditMode()) {
|
|
12828
|
-
ctrl.volumes.push({
|
|
12829
|
-
volumeMount: {
|
|
12830
|
-
name: ''
|
|
12831
|
-
},
|
|
12832
|
-
volume: {
|
|
12833
|
-
name: ''
|
|
12834
|
-
},
|
|
12835
|
-
ui: {
|
|
12836
|
-
changed: true,
|
|
12837
|
-
editModeActive: true,
|
|
12838
|
-
isFormValid: false,
|
|
12839
|
-
name: 'volume'
|
|
12840
|
-
}
|
|
12841
|
-
});
|
|
12842
|
-
|
|
12843
|
-
ctrl.volumesForm.$setPristine();
|
|
12844
|
-
|
|
12845
|
-
event.stopPropagation();
|
|
12846
|
-
$rootScope.$broadcast('change-state-deploy-button', { component: 'volume', isDisabled: true });
|
|
12847
|
-
}
|
|
12848
|
-
}, 100);
|
|
12849
|
-
}
|
|
12850
|
-
|
|
12851
|
-
/**
|
|
12852
|
-
* Edit item callback function
|
|
12853
|
-
* @param {Object} item - selected item
|
|
12877
|
+
* Collapse/expand row depending on `collapse` value
|
|
12878
|
+
* @param {Object} log
|
|
12879
|
+
* @param {boolean} collapse
|
|
12854
12880
|
*/
|
|
12855
|
-
function
|
|
12856
|
-
|
|
12881
|
+
function collapseRow(log, collapse) {
|
|
12882
|
+
lodash.set(log, 'ui.collapsed', collapse);
|
|
12857
12883
|
}
|
|
12858
12884
|
|
|
12859
12885
|
/**
|
|
12860
|
-
*
|
|
12861
|
-
* @param {
|
|
12862
|
-
* @param {Object} selectedItem - an object of selected volume
|
|
12863
|
-
* @param {number} [index] - index of variable in array
|
|
12886
|
+
* Collapse/expand all rows depending on `expand` value
|
|
12887
|
+
* @param {boolean} expand
|
|
12864
12888
|
*/
|
|
12865
|
-
function
|
|
12866
|
-
|
|
12867
|
-
|
|
12868
|
-
} else if (actionType === 'edit') {
|
|
12869
|
-
editHandler(selectedItem);
|
|
12870
|
-
} else if (actionType === 'update') {
|
|
12871
|
-
updateHandler(selectedItem);
|
|
12872
|
-
} else {
|
|
12873
|
-
DialogsService.alert($i18next.t('functions:ERROR_MSG.FUNCTIONALITY_IS_NOT_IMPLEMENTED', { lng: lng }));
|
|
12874
|
-
}
|
|
12875
|
-
|
|
12876
|
-
$rootScope.$broadcast('change-state-deploy-button', { component: 'volume', isDisabled: false });
|
|
12877
|
-
lodash.forEach(ctrl.volumes, function (volume) {
|
|
12878
|
-
if (!volume.ui.isFormValid) {
|
|
12879
|
-
$rootScope.$broadcast('change-state-deploy-button', { component: volume.ui.name, isDisabled: true });
|
|
12880
|
-
}
|
|
12889
|
+
function expandAllRows(expand) {
|
|
12890
|
+
lodash.forEach(ctrl.logs, function (log) {
|
|
12891
|
+
lodash.set(log, 'ui.collapsed', !expand);
|
|
12881
12892
|
});
|
|
12882
|
-
|
|
12883
|
-
ctrl.onChangeCallback();
|
|
12884
|
-
}
|
|
12885
|
-
|
|
12886
|
-
//
|
|
12887
|
-
// Private methods
|
|
12888
|
-
//
|
|
12889
|
-
|
|
12890
|
-
/**
|
|
12891
|
-
* Checks validation of volumes
|
|
12892
|
-
*/
|
|
12893
|
-
function checkValidation() {
|
|
12894
|
-
if (lodash.some(ctrl.volumes, ['ui.isFormValid', false])) {
|
|
12895
|
-
FormValidationService.validateAllFields(ctrl.volumesForm);
|
|
12896
|
-
}
|
|
12897
12893
|
}
|
|
12898
12894
|
|
|
12899
12895
|
/**
|
|
12900
|
-
*
|
|
12901
|
-
* @param {
|
|
12902
|
-
|
|
12903
|
-
|
|
12904
|
-
|
|
12905
|
-
|
|
12906
|
-
// since uniqueness validation rule of some fields is dependent on the entire volume list, whenever a volume
|
|
12907
|
-
// is removed, the rest of the volumes needs to be re-validated
|
|
12908
|
-
checkValidation();
|
|
12909
|
-
|
|
12910
|
-
var workingCopy = lodash.map(ctrl.volumes, function (volume) {
|
|
12911
|
-
return lodash.omit(volume, 'ui');
|
|
12912
|
-
});
|
|
12913
|
-
|
|
12914
|
-
lodash.set(ctrl.version, 'spec.volumes', workingCopy);
|
|
12896
|
+
* Gets css class depending on log.level
|
|
12897
|
+
* @param {Object} log
|
|
12898
|
+
* @returns {string}
|
|
12899
|
+
*/
|
|
12900
|
+
function getLevelIconClass(log) {
|
|
12901
|
+
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' : '';
|
|
12915
12902
|
}
|
|
12916
12903
|
|
|
12917
12904
|
/**
|
|
12918
|
-
*
|
|
12919
|
-
* @param {Object}
|
|
12905
|
+
* Gets additional parameters
|
|
12906
|
+
* @param {Object} log
|
|
12907
|
+
* @returns {Object}
|
|
12920
12908
|
*/
|
|
12921
|
-
function
|
|
12922
|
-
|
|
12909
|
+
function getParameters(log) {
|
|
12910
|
+
return lodash.omit(log, REQUIRED_PARAMETERS);
|
|
12923
12911
|
}
|
|
12924
12912
|
|
|
12925
12913
|
/**
|
|
12926
|
-
* Checks if
|
|
12914
|
+
* Checks if log has additional parameters
|
|
12915
|
+
* @param {Object} log
|
|
12927
12916
|
* @returns {boolean}
|
|
12928
12917
|
*/
|
|
12929
|
-
function
|
|
12930
|
-
return lodash.
|
|
12918
|
+
function hasAdditionalParameters(log) {
|
|
12919
|
+
return !lodash.isEmpty(getParameters(log));
|
|
12931
12920
|
}
|
|
12921
|
+
}
|
|
12922
|
+
})();
|
|
12923
|
+
'use strict';
|
|
12932
12924
|
|
|
12933
|
-
|
|
12934
|
-
|
|
12935
|
-
* @param {Object} selectedItem - an object of selected volume
|
|
12936
|
-
*/
|
|
12937
|
-
function updateHandler(selectedItem) {
|
|
12938
|
-
var workingCopy = angular.copy(ctrl.volumes);
|
|
12939
|
-
var currentVolume = lodash.find(ctrl.volumes, ['volumeMount.mountPath', selectedItem.volumeMount.mountPath]);
|
|
12940
|
-
var indexOfEditableElement = lodash.findIndex(ctrl.volumes, ['volumeMount.mountPath', selectedItem.volumeMount.mountPath]);
|
|
12925
|
+
(function () {
|
|
12926
|
+
'use strict';
|
|
12941
12927
|
|
|
12942
|
-
|
|
12943
|
-
|
|
12944
|
-
|
|
12945
|
-
|
|
12946
|
-
|
|
12928
|
+
NclTestEventsNavigationTabsController.$inject = ['$i18next', 'i18next'];
|
|
12929
|
+
angular.module('iguazio.dashboard-controls').component('nclTestEventsNavigationTabs', {
|
|
12930
|
+
bindings: {
|
|
12931
|
+
activeTab: '<',
|
|
12932
|
+
tabItems: '<',
|
|
12933
|
+
selectedLogLevel: '<?',
|
|
12934
|
+
onChangeActiveTab: '&',
|
|
12935
|
+
onChangeLogLevel: '&?'
|
|
12936
|
+
},
|
|
12937
|
+
templateUrl: 'nuclio/functions/version/version-code/function-event-pane/test-events-navigation-tabs/test-events-navigation-tabs.tpl.html',
|
|
12938
|
+
controller: NclTestEventsNavigationTabsController
|
|
12939
|
+
});
|
|
12947
12940
|
|
|
12948
|
-
|
|
12949
|
-
|
|
12950
|
-
|
|
12941
|
+
function NclTestEventsNavigationTabsController($i18next, i18next) {
|
|
12942
|
+
var ctrl = this;
|
|
12943
|
+
var lng = i18next.language;
|
|
12951
12944
|
|
|
12952
|
-
|
|
12953
|
-
|
|
12954
|
-
|
|
12945
|
+
ctrl.logLevelValues = [{
|
|
12946
|
+
id: 'error',
|
|
12947
|
+
name: $i18next.t('common:ERROR', { lng: lng }),
|
|
12948
|
+
visible: true
|
|
12949
|
+
}, {
|
|
12950
|
+
id: 'warn',
|
|
12951
|
+
name: $i18next.t('common:WARNING', { lng: lng }),
|
|
12952
|
+
visible: true
|
|
12953
|
+
}, {
|
|
12954
|
+
id: 'info',
|
|
12955
|
+
name: $i18next.t('common:INFO', { lng: lng }),
|
|
12956
|
+
visible: true
|
|
12957
|
+
}, {
|
|
12958
|
+
id: 'debug',
|
|
12959
|
+
name: $i18next.t('common:DEBUG', { lng: lng }),
|
|
12960
|
+
visible: true
|
|
12961
|
+
}];
|
|
12955
12962
|
|
|
12956
|
-
|
|
12957
|
-
|
|
12958
|
-
|
|
12963
|
+
ctrl.changeActiveTab = changeActiveTab;
|
|
12964
|
+
ctrl.isActiveTab = isActiveTab;
|
|
12965
|
+
|
|
12966
|
+
//
|
|
12967
|
+
// Public methods
|
|
12968
|
+
//
|
|
12959
12969
|
|
|
12960
12970
|
/**
|
|
12961
|
-
*
|
|
12971
|
+
* Changes active nav tab
|
|
12972
|
+
* @param {Object} item - current status
|
|
12962
12973
|
*/
|
|
12963
|
-
function
|
|
12964
|
-
|
|
12965
|
-
var isSomeVolumeInEditMode = lodash.some(ctrl.volumes, ['ui.editModeActive', true]);
|
|
12974
|
+
function changeActiveTab(item) {
|
|
12975
|
+
ctrl.activeTab = item;
|
|
12966
12976
|
|
|
12967
|
-
|
|
12977
|
+
ctrl.onChangeActiveTab({ activeTab: item });
|
|
12968
12978
|
}
|
|
12969
12979
|
|
|
12970
12980
|
/**
|
|
12971
|
-
*
|
|
12972
|
-
* @param {
|
|
12973
|
-
* @param {string} value
|
|
12981
|
+
* Checks if it is an active tab
|
|
12982
|
+
* @param {Object} item - current tab
|
|
12974
12983
|
*/
|
|
12975
|
-
function
|
|
12976
|
-
return
|
|
12984
|
+
function isActiveTab(item) {
|
|
12985
|
+
return ctrl.activeTab.id === item.id;
|
|
12977
12986
|
}
|
|
12978
12987
|
}
|
|
12979
12988
|
})();
|
|
@@ -14298,10 +14307,11 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
14298
14307
|
var now = Date.now();
|
|
14299
14308
|
var from = new Date(now - MILLIS_IN_AN_HOUR).toISOString();
|
|
14300
14309
|
var until = new Date(now).toISOString();
|
|
14301
|
-
var
|
|
14302
|
-
var
|
|
14310
|
+
var functionEventsProjectName = '{project="' + ctrl.project.metadata.name + '"}';
|
|
14311
|
+
var projectName = '{project_name="' + ctrl.project.metadata.name + '"}';
|
|
14312
|
+
var gpuUtilizationMetric = ' * on (pod) group_left(function_name)(nuclio_function_pod_labels{project_name="' + ctrl.project.metadata.name + '"})';
|
|
14303
14313
|
var args = {
|
|
14304
|
-
metric: ctrl.functionEventsMetric +
|
|
14314
|
+
metric: ctrl.functionEventsMetric + functionEventsProjectName,
|
|
14305
14315
|
from: from,
|
|
14306
14316
|
until: until,
|
|
14307
14317
|
interval: '5m'
|
|
@@ -17377,7 +17387,8 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
17377
17387
|
runtimeAttributes: {
|
|
17378
17388
|
repositories: []
|
|
17379
17389
|
}
|
|
17380
|
-
}
|
|
17390
|
+
},
|
|
17391
|
+
resources: $stateParams.isNewFunction ? lodash.get(ConfigService, 'nuclio.defaultFunctionPodResources', {}) : {}
|
|
17381
17392
|
},
|
|
17382
17393
|
ui: {
|
|
17383
17394
|
versionCode: '',
|
|
@@ -17830,134 +17841,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
17830
17841
|
})();
|
|
17831
17842
|
'use strict';
|
|
17832
17843
|
|
|
17833
|
-
(function () {
|
|
17834
|
-
'use strict';
|
|
17835
|
-
|
|
17836
|
-
require.config({ paths: { 'vs': '/assets/monaco-editor/min/vs' } });
|
|
17837
|
-
|
|
17838
|
-
angular.module('iguazio.dashboard-controls').directive('igzMonacoEditor', ['lodash', function (lodash) {
|
|
17839
|
-
function link(scope, element, attrs) {
|
|
17840
|
-
var editorElement = element[0];
|
|
17841
|
-
require(['vs/editor/editor.main'], function () {
|
|
17842
|
-
var editorContext = {
|
|
17843
|
-
scope: scope,
|
|
17844
|
-
element: element,
|
|
17845
|
-
attrs: attrs,
|
|
17846
|
-
onThemeChanged: function onThemeChanged(newValue, oldValue) {
|
|
17847
|
-
window.monaco.editor.setTheme(lodash.defaultTo(newValue, 'vs-dark'));
|
|
17848
|
-
},
|
|
17849
|
-
onFileLanguageChanged: function onFileLanguageChanged(newValue) {
|
|
17850
|
-
// update the language model (and set `insertSpaces`)
|
|
17851
|
-
var newModel = window.monaco.editor.createModel('', newValue.language);
|
|
17852
|
-
newModel.updateOptions({ insertSpaces: lodash.defaultTo(newValue.useSpaces, true) });
|
|
17853
|
-
this.editor.setModel(newModel);
|
|
17854
|
-
|
|
17855
|
-
// update the code
|
|
17856
|
-
this.editor.setValue(scope.codeFile.code);
|
|
17857
|
-
},
|
|
17858
|
-
onCodeFileChanged: function onCodeFileChanged() {
|
|
17859
|
-
if (!lodash.isEqual(this.editor.getValue(), scope.codeFile.code)) {
|
|
17860
|
-
this.editor.setValue(scope.codeFile.code);
|
|
17861
|
-
}
|
|
17862
|
-
},
|
|
17863
|
-
onReadOnlyCodeFileChanged: function onReadOnlyCodeFileChanged() {
|
|
17864
|
-
this.editor.setValue(scope.codeFile.code);
|
|
17865
|
-
},
|
|
17866
|
-
onWrapStateChanged: function onWrapStateChanged(newState) {
|
|
17867
|
-
this.editor.updateOptions({ wordWrap: newState ? 'on' : 'off' });
|
|
17868
|
-
},
|
|
17869
|
-
onFontSizeChanged: function onFontSizeChanged(newFontSize) {
|
|
17870
|
-
this.editor.updateOptions({ fontSize: newFontSize });
|
|
17871
|
-
},
|
|
17872
|
-
onReadOnlyChanged: function onReadOnlyChanged(newReadOnly) {
|
|
17873
|
-
this.editor.updateOptions({ readOnly: newReadOnly });
|
|
17874
|
-
}
|
|
17875
|
-
};
|
|
17876
|
-
|
|
17877
|
-
editorContext.editor = window.monaco.editor.defineTheme('custom-vs', {
|
|
17878
|
-
base: 'vs',
|
|
17879
|
-
inherit: true,
|
|
17880
|
-
rules: [{ token: '', foreground: '474056', background: 'ffffff' }, { token: 'number', foreground: '474056' }, { token: 'delimiter', foreground: '474056' }, { token: 'string', foreground: '21d4ac' }],
|
|
17881
|
-
colors: {
|
|
17882
|
-
'editor.foreground': '#474056',
|
|
17883
|
-
'editor.background': '#ffffff',
|
|
17884
|
-
'editorLineNumber.foreground': '#474056',
|
|
17885
|
-
'editorGutter.background': '#e1e0e5',
|
|
17886
|
-
'textBlockQuote.border': '#ffffff',
|
|
17887
|
-
'editorCursor.foreground': '#8B0000',
|
|
17888
|
-
'editor.lineHighlightBackground': '#e1e0e5',
|
|
17889
|
-
'editorMarkerNavigation.background': '#000000',
|
|
17890
|
-
'editor.selectionBackground': '#239bca',
|
|
17891
|
-
'editorIndentGuide.background': '#e1e0e5'
|
|
17892
|
-
}
|
|
17893
|
-
});
|
|
17894
|
-
|
|
17895
|
-
editorContext.editor = window.monaco.editor.create(editorElement, {
|
|
17896
|
-
value: scope.codeFile.code,
|
|
17897
|
-
language: scope.fileLanguage.language,
|
|
17898
|
-
theme: 'vs',
|
|
17899
|
-
automaticLayout: true,
|
|
17900
|
-
dragAndDrop: true,
|
|
17901
|
-
lineNumbersMinChars: scope.miniMonaco ? 2 : 5,
|
|
17902
|
-
lineNumbers: scope.miniMonaco && !scope.showLineNumbers ? 'off' : 'on', // hide line number if it's a mini-monaco
|
|
17903
|
-
minimap: {
|
|
17904
|
-
enabled: !scope.miniMonaco // hide mini-map if it's a mini-monaco
|
|
17905
|
-
},
|
|
17906
|
-
readOnly: scope.readOnly,
|
|
17907
|
-
wordWrap: scope.wordWrap ? 'on' : 'off'
|
|
17908
|
-
});
|
|
17909
|
-
|
|
17910
|
-
// change content callback
|
|
17911
|
-
editorContext.editor.onDidChangeModelContent(function () {
|
|
17912
|
-
|
|
17913
|
-
// call callback from upper scope (monaco component) with new changed code
|
|
17914
|
-
scope.onCodeChange(editorContext.editor.getValue());
|
|
17915
|
-
});
|
|
17916
|
-
|
|
17917
|
-
// set up watch for codeFile changes to reflect updates
|
|
17918
|
-
scope.$watch('fileLanguage', editorContext.onFileLanguageChanged.bind(editorContext));
|
|
17919
|
-
scope.$watch('editorTheme', editorContext.onThemeChanged.bind(editorContext));
|
|
17920
|
-
scope.$watch('wordWrap', editorContext.onWrapStateChanged.bind(editorContext));
|
|
17921
|
-
scope.$watch('codeFile', editorContext.onCodeFileChanged.bind(editorContext));
|
|
17922
|
-
scope.$watch('fontSize', editorContext.onFontSizeChanged.bind(editorContext));
|
|
17923
|
-
scope.$watch('readOnly', editorContext.onReadOnlyChanged.bind(editorContext));
|
|
17924
|
-
|
|
17925
|
-
scope.$on('function-import-source-code', editorContext.onReadOnlyCodeFileChanged.bind(editorContext));
|
|
17926
|
-
});
|
|
17927
|
-
}
|
|
17928
|
-
|
|
17929
|
-
return {
|
|
17930
|
-
link: link,
|
|
17931
|
-
scope: {
|
|
17932
|
-
codeFile: '=codeFile',
|
|
17933
|
-
editorTheme: '=editorTheme',
|
|
17934
|
-
fontSize: '=fontSize',
|
|
17935
|
-
fileLanguage: '=fileLanguage',
|
|
17936
|
-
miniMonaco: '=miniMonaco',
|
|
17937
|
-
showLineNumbers: '=showLineNumbers',
|
|
17938
|
-
onCodeChange: '=onCodeChange',
|
|
17939
|
-
readOnly: '=readOnly',
|
|
17940
|
-
wordWrap: '=wordWrap'
|
|
17941
|
-
}
|
|
17942
|
-
};
|
|
17943
|
-
}]);
|
|
17944
|
-
|
|
17945
|
-
require(['vs/editor/editor.main'], function () {
|
|
17946
|
-
window.monaco.languages.registerCompletionItemProvider('python', {
|
|
17947
|
-
provideCompletionItems: function provideCompletionItems() {
|
|
17948
|
-
return [{
|
|
17949
|
-
label: 'def',
|
|
17950
|
-
kind: window.monaco.languages.CompletionItemKind.Keyword,
|
|
17951
|
-
insertText: {
|
|
17952
|
-
value: 'def ${1:name}():\r\t$0'
|
|
17953
|
-
}
|
|
17954
|
-
}];
|
|
17955
|
-
}
|
|
17956
|
-
});
|
|
17957
|
-
});
|
|
17958
|
-
})();
|
|
17959
|
-
'use strict';
|
|
17960
|
-
|
|
17961
17844
|
(function () {
|
|
17962
17845
|
'use strict';
|
|
17963
17846
|
|
|
@@ -19607,18 +19490,53 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
19607
19490
|
var queueNameIsFilled = !lodash.isEmpty(ctrl.editItemForm.item_queueName.$viewValue);
|
|
19608
19491
|
var topicsIsFilled = !lodash.isEmpty(ctrl.editItemForm.item_topics.$viewValue);
|
|
19609
19492
|
|
|
19610
|
-
// Queue Name and Topics cannot be both empty at the same time
|
|
19611
|
-
// at least one of them should be filled
|
|
19612
|
-
// if one of them is filled, the other is allowed to be empty
|
|
19613
|
-
queueName.allowEmpty = topicsIsFilled;
|
|
19614
|
-
topics.allowEmpty = queueNameIsFilled;
|
|
19493
|
+
// Queue Name and Topics cannot be both empty at the same time
|
|
19494
|
+
// at least one of them should be filled
|
|
19495
|
+
// if one of them is filled, the other is allowed to be empty
|
|
19496
|
+
queueName.allowEmpty = topicsIsFilled;
|
|
19497
|
+
topics.allowEmpty = queueNameIsFilled;
|
|
19498
|
+
|
|
19499
|
+
// update validity: if empty is not allowed and value is currently empty - mark invalid, otherwise valid
|
|
19500
|
+
ctrl.editItemForm.item_queueName.$setValidity('text', queueName.allowEmpty || queueNameIsFilled);
|
|
19501
|
+
ctrl.editItemForm.item_topics.$setValidity('text', topics.allowEmpty || topicsIsFilled);
|
|
19502
|
+
} else if (ctrl.item.kind === 'kafka-cluster') {
|
|
19503
|
+
ctrl.item.attributes.sasl.enable = !lodash.isEmpty(ctrl.item.attributes.sasl.user) && !lodash.isEmpty(ctrl.item.attributes.sasl.password);
|
|
19504
|
+
}
|
|
19505
|
+
}
|
|
19506
|
+
}
|
|
19507
|
+
})();
|
|
19508
|
+
'use strict';
|
|
19509
|
+
|
|
19510
|
+
(function () {
|
|
19511
|
+
'use strict';
|
|
19512
|
+
|
|
19513
|
+
NclFunctionConfigDialogController.$inject = ['ExportService', 'MaskService'];
|
|
19514
|
+
angular.module('iguazio.dashboard-controls').component('nclFunctionConfigDialog', {
|
|
19515
|
+
bindings: {
|
|
19516
|
+
closeDialog: '&',
|
|
19517
|
+
function: '<'
|
|
19518
|
+
},
|
|
19519
|
+
templateUrl: 'nuclio/common/components/function-config-dialog/function-config-dialog.tpl.html',
|
|
19520
|
+
controller: NclFunctionConfigDialogController
|
|
19521
|
+
});
|
|
19522
|
+
|
|
19523
|
+
function NclFunctionConfigDialogController(ExportService, MaskService) {
|
|
19524
|
+
var ctrl = this;
|
|
19615
19525
|
|
|
19616
|
-
|
|
19617
|
-
|
|
19618
|
-
|
|
19619
|
-
|
|
19620
|
-
|
|
19621
|
-
|
|
19526
|
+
ctrl.$onInit = onInit;
|
|
19527
|
+
|
|
19528
|
+
//
|
|
19529
|
+
// Hook methods
|
|
19530
|
+
//
|
|
19531
|
+
|
|
19532
|
+
/**
|
|
19533
|
+
* Initialization method
|
|
19534
|
+
*/
|
|
19535
|
+
function onInit() {
|
|
19536
|
+
var functionWithMask = MaskService.getObjectWithMask(ctrl.function);
|
|
19537
|
+
ctrl.title = ctrl.function.metadata.name + ' - configuration';
|
|
19538
|
+
|
|
19539
|
+
ctrl.sourceCode = ExportService.getFunctionConfig(functionWithMask);
|
|
19622
19540
|
}
|
|
19623
19541
|
}
|
|
19624
19542
|
})();
|
|
@@ -20067,41 +19985,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
20067
19985
|
})();
|
|
20068
19986
|
'use strict';
|
|
20069
19987
|
|
|
20070
|
-
(function () {
|
|
20071
|
-
'use strict';
|
|
20072
|
-
|
|
20073
|
-
NclFunctionConfigDialogController.$inject = ['ExportService', 'MaskService'];
|
|
20074
|
-
angular.module('iguazio.dashboard-controls').component('nclFunctionConfigDialog', {
|
|
20075
|
-
bindings: {
|
|
20076
|
-
closeDialog: '&',
|
|
20077
|
-
function: '<'
|
|
20078
|
-
},
|
|
20079
|
-
templateUrl: 'nuclio/common/components/function-config-dialog/function-config-dialog.tpl.html',
|
|
20080
|
-
controller: NclFunctionConfigDialogController
|
|
20081
|
-
});
|
|
20082
|
-
|
|
20083
|
-
function NclFunctionConfigDialogController(ExportService, MaskService) {
|
|
20084
|
-
var ctrl = this;
|
|
20085
|
-
|
|
20086
|
-
ctrl.$onInit = onInit;
|
|
20087
|
-
|
|
20088
|
-
//
|
|
20089
|
-
// Hook methods
|
|
20090
|
-
//
|
|
20091
|
-
|
|
20092
|
-
/**
|
|
20093
|
-
* Initialization method
|
|
20094
|
-
*/
|
|
20095
|
-
function onInit() {
|
|
20096
|
-
var functionWithMask = MaskService.getObjectWithMask(ctrl.function);
|
|
20097
|
-
ctrl.title = ctrl.function.metadata.name + ' - configuration';
|
|
20098
|
-
|
|
20099
|
-
ctrl.sourceCode = ExportService.getFunctionConfig(functionWithMask);
|
|
20100
|
-
}
|
|
20101
|
-
}
|
|
20102
|
-
})();
|
|
20103
|
-
'use strict';
|
|
20104
|
-
|
|
20105
19988
|
(function () {
|
|
20106
19989
|
'use strict';
|
|
20107
19990
|
|
|
@@ -20201,6 +20084,67 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
20201
20084
|
})();
|
|
20202
20085
|
'use strict';
|
|
20203
20086
|
|
|
20087
|
+
(function () {
|
|
20088
|
+
'use strict';
|
|
20089
|
+
|
|
20090
|
+
NclNavigationTabsController.$inject = ['$rootScope', '$state', '$timeout', 'lodash'];
|
|
20091
|
+
angular.module('iguazio.dashboard-controls').component('nclNavigationTabs', {
|
|
20092
|
+
bindings: {
|
|
20093
|
+
tabItems: '<'
|
|
20094
|
+
},
|
|
20095
|
+
templateUrl: 'nuclio/common/components/navigation-tabs/navigation-tabs.tpl.html',
|
|
20096
|
+
controller: NclNavigationTabsController
|
|
20097
|
+
});
|
|
20098
|
+
|
|
20099
|
+
function NclNavigationTabsController($rootScope, $state, $timeout, lodash) {
|
|
20100
|
+
var ctrl = this;
|
|
20101
|
+
var isTestPaneToggled = true;
|
|
20102
|
+
|
|
20103
|
+
ctrl.isTestPaneClosed = false;
|
|
20104
|
+
ctrl.isToggleButtonVisible = isToggleButtonVisible;
|
|
20105
|
+
ctrl.toggleTestPane = toggleTestPane;
|
|
20106
|
+
|
|
20107
|
+
//
|
|
20108
|
+
// Public methods
|
|
20109
|
+
//
|
|
20110
|
+
|
|
20111
|
+
/**
|
|
20112
|
+
* Checks if 'toggle test pane' button should be visible.
|
|
20113
|
+
* It should, only when 'code' tab is reached.
|
|
20114
|
+
* @returns {boolean}
|
|
20115
|
+
*/
|
|
20116
|
+
function isToggleButtonVisible() {
|
|
20117
|
+
var isButtonVisible = lodash.get($state.$current, 'self.url') === '/code';
|
|
20118
|
+
|
|
20119
|
+
if (!isButtonVisible) {
|
|
20120
|
+
ctrl.isTestPaneClosed = false;
|
|
20121
|
+
|
|
20122
|
+
$rootScope.$broadcast('navigation-tabs_toggle-test-pane', { closeTestPane: ctrl.isTestPaneClosed });
|
|
20123
|
+
}
|
|
20124
|
+
|
|
20125
|
+
return isButtonVisible;
|
|
20126
|
+
}
|
|
20127
|
+
|
|
20128
|
+
/**
|
|
20129
|
+
* Sends broadcast to toggle test pane.
|
|
20130
|
+
*/
|
|
20131
|
+
function toggleTestPane() {
|
|
20132
|
+
if (isTestPaneToggled) {
|
|
20133
|
+
ctrl.isTestPaneClosed = !ctrl.isTestPaneClosed;
|
|
20134
|
+
isTestPaneToggled = false;
|
|
20135
|
+
|
|
20136
|
+
$rootScope.$broadcast('navigation-tabs_toggle-test-pane', { closeTestPane: ctrl.isTestPaneClosed });
|
|
20137
|
+
|
|
20138
|
+
// wait until toggling animation will be completed
|
|
20139
|
+
$timeout(function () {
|
|
20140
|
+
isTestPaneToggled = true;
|
|
20141
|
+
}, 600);
|
|
20142
|
+
}
|
|
20143
|
+
}
|
|
20144
|
+
}
|
|
20145
|
+
})();
|
|
20146
|
+
'use strict';
|
|
20147
|
+
|
|
20204
20148
|
(function () {
|
|
20205
20149
|
'use strict';
|
|
20206
20150
|
|
|
@@ -20303,61 +20247,128 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
20303
20247
|
(function () {
|
|
20304
20248
|
'use strict';
|
|
20305
20249
|
|
|
20306
|
-
|
|
20307
|
-
angular.module('iguazio.dashboard-controls').component('nclNavigationTabs', {
|
|
20308
|
-
bindings: {
|
|
20309
|
-
tabItems: '<'
|
|
20310
|
-
},
|
|
20311
|
-
templateUrl: 'nuclio/common/components/navigation-tabs/navigation-tabs.tpl.html',
|
|
20312
|
-
controller: NclNavigationTabsController
|
|
20313
|
-
});
|
|
20250
|
+
require.config({ paths: { 'vs': '/assets/monaco-editor/min/vs' } });
|
|
20314
20251
|
|
|
20315
|
-
|
|
20316
|
-
|
|
20317
|
-
|
|
20252
|
+
angular.module('iguazio.dashboard-controls').directive('igzMonacoEditor', ['lodash', function (lodash) {
|
|
20253
|
+
function link(scope, element, attrs) {
|
|
20254
|
+
var editorElement = element[0];
|
|
20255
|
+
require(['vs/editor/editor.main'], function () {
|
|
20256
|
+
var editorContext = {
|
|
20257
|
+
scope: scope,
|
|
20258
|
+
element: element,
|
|
20259
|
+
attrs: attrs,
|
|
20260
|
+
onThemeChanged: function onThemeChanged(newValue, oldValue) {
|
|
20261
|
+
window.monaco.editor.setTheme(lodash.defaultTo(newValue, 'vs-dark'));
|
|
20262
|
+
},
|
|
20263
|
+
onFileLanguageChanged: function onFileLanguageChanged(newValue) {
|
|
20264
|
+
// update the language model (and set `insertSpaces`)
|
|
20265
|
+
var newModel = window.monaco.editor.createModel('', newValue.language);
|
|
20266
|
+
newModel.updateOptions({ insertSpaces: lodash.defaultTo(newValue.useSpaces, true) });
|
|
20267
|
+
this.editor.setModel(newModel);
|
|
20318
20268
|
|
|
20319
|
-
|
|
20320
|
-
|
|
20321
|
-
|
|
20269
|
+
// update the code
|
|
20270
|
+
this.editor.setValue(scope.codeFile.code);
|
|
20271
|
+
},
|
|
20272
|
+
onCodeFileChanged: function onCodeFileChanged() {
|
|
20273
|
+
if (!lodash.isEqual(this.editor.getValue(), scope.codeFile.code)) {
|
|
20274
|
+
this.editor.setValue(scope.codeFile.code);
|
|
20275
|
+
}
|
|
20276
|
+
},
|
|
20277
|
+
onReadOnlyCodeFileChanged: function onReadOnlyCodeFileChanged() {
|
|
20278
|
+
this.editor.setValue(scope.codeFile.code);
|
|
20279
|
+
},
|
|
20280
|
+
onWrapStateChanged: function onWrapStateChanged(newState) {
|
|
20281
|
+
this.editor.updateOptions({ wordWrap: newState ? 'on' : 'off' });
|
|
20282
|
+
},
|
|
20283
|
+
onFontSizeChanged: function onFontSizeChanged(newFontSize) {
|
|
20284
|
+
this.editor.updateOptions({ fontSize: newFontSize });
|
|
20285
|
+
},
|
|
20286
|
+
onReadOnlyChanged: function onReadOnlyChanged(newReadOnly) {
|
|
20287
|
+
this.editor.updateOptions({ readOnly: newReadOnly });
|
|
20288
|
+
}
|
|
20289
|
+
};
|
|
20322
20290
|
|
|
20323
|
-
|
|
20324
|
-
|
|
20325
|
-
|
|
20291
|
+
editorContext.editor = window.monaco.editor.defineTheme('custom-vs', {
|
|
20292
|
+
base: 'vs',
|
|
20293
|
+
inherit: true,
|
|
20294
|
+
rules: [{ token: '', foreground: '474056', background: 'ffffff' }, { token: 'number', foreground: '474056' }, { token: 'delimiter', foreground: '474056' }, { token: 'string', foreground: '21d4ac' }],
|
|
20295
|
+
colors: {
|
|
20296
|
+
'editor.foreground': '#474056',
|
|
20297
|
+
'editor.background': '#ffffff',
|
|
20298
|
+
'editorLineNumber.foreground': '#474056',
|
|
20299
|
+
'editorGutter.background': '#e1e0e5',
|
|
20300
|
+
'textBlockQuote.border': '#ffffff',
|
|
20301
|
+
'editorCursor.foreground': '#8B0000',
|
|
20302
|
+
'editor.lineHighlightBackground': '#e1e0e5',
|
|
20303
|
+
'editorMarkerNavigation.background': '#000000',
|
|
20304
|
+
'editor.selectionBackground': '#239bca',
|
|
20305
|
+
'editorIndentGuide.background': '#e1e0e5'
|
|
20306
|
+
}
|
|
20307
|
+
});
|
|
20326
20308
|
|
|
20327
|
-
|
|
20328
|
-
|
|
20329
|
-
|
|
20330
|
-
|
|
20331
|
-
|
|
20332
|
-
|
|
20333
|
-
|
|
20309
|
+
editorContext.editor = window.monaco.editor.create(editorElement, {
|
|
20310
|
+
value: scope.codeFile.code,
|
|
20311
|
+
language: scope.fileLanguage.language,
|
|
20312
|
+
theme: 'vs',
|
|
20313
|
+
automaticLayout: true,
|
|
20314
|
+
dragAndDrop: true,
|
|
20315
|
+
lineNumbersMinChars: scope.miniMonaco ? 2 : 5,
|
|
20316
|
+
lineNumbers: scope.miniMonaco && !scope.showLineNumbers ? 'off' : 'on', // hide line number if it's a mini-monaco
|
|
20317
|
+
minimap: {
|
|
20318
|
+
enabled: !scope.miniMonaco // hide mini-map if it's a mini-monaco
|
|
20319
|
+
},
|
|
20320
|
+
readOnly: scope.readOnly,
|
|
20321
|
+
wordWrap: scope.wordWrap ? 'on' : 'off'
|
|
20322
|
+
});
|
|
20334
20323
|
|
|
20335
|
-
|
|
20336
|
-
|
|
20324
|
+
// change content callback
|
|
20325
|
+
editorContext.editor.onDidChangeModelContent(function () {
|
|
20337
20326
|
|
|
20338
|
-
|
|
20327
|
+
// call callback from upper scope (monaco component) with new changed code
|
|
20328
|
+
scope.onCodeChange(editorContext.editor.getValue());
|
|
20329
|
+
});
|
|
20330
|
+
|
|
20331
|
+
// set up watch for codeFile changes to reflect updates
|
|
20332
|
+
scope.$watch('fileLanguage', editorContext.onFileLanguageChanged.bind(editorContext));
|
|
20333
|
+
scope.$watch('editorTheme', editorContext.onThemeChanged.bind(editorContext));
|
|
20334
|
+
scope.$watch('wordWrap', editorContext.onWrapStateChanged.bind(editorContext));
|
|
20335
|
+
scope.$watch('codeFile', editorContext.onCodeFileChanged.bind(editorContext));
|
|
20336
|
+
scope.$watch('fontSize', editorContext.onFontSizeChanged.bind(editorContext));
|
|
20337
|
+
scope.$watch('readOnly', editorContext.onReadOnlyChanged.bind(editorContext));
|
|
20338
|
+
|
|
20339
|
+
scope.$on('function-import-source-code', editorContext.onReadOnlyCodeFileChanged.bind(editorContext));
|
|
20340
|
+
});
|
|
20341
|
+
}
|
|
20342
|
+
|
|
20343
|
+
return {
|
|
20344
|
+
link: link,
|
|
20345
|
+
scope: {
|
|
20346
|
+
codeFile: '=codeFile',
|
|
20347
|
+
editorTheme: '=editorTheme',
|
|
20348
|
+
fontSize: '=fontSize',
|
|
20349
|
+
fileLanguage: '=fileLanguage',
|
|
20350
|
+
miniMonaco: '=miniMonaco',
|
|
20351
|
+
showLineNumbers: '=showLineNumbers',
|
|
20352
|
+
onCodeChange: '=onCodeChange',
|
|
20353
|
+
readOnly: '=readOnly',
|
|
20354
|
+
wordWrap: '=wordWrap'
|
|
20339
20355
|
}
|
|
20356
|
+
};
|
|
20357
|
+
}]);
|
|
20340
20358
|
|
|
20341
|
-
|
|
20342
|
-
|
|
20343
|
-
|
|
20344
|
-
|
|
20345
|
-
|
|
20346
|
-
|
|
20347
|
-
|
|
20348
|
-
|
|
20349
|
-
|
|
20350
|
-
|
|
20351
|
-
|
|
20352
|
-
$rootScope.$broadcast('navigation-tabs_toggle-test-pane', { closeTestPane: ctrl.isTestPaneClosed });
|
|
20353
|
-
|
|
20354
|
-
// wait until toggling animation will be completed
|
|
20355
|
-
$timeout(function () {
|
|
20356
|
-
isTestPaneToggled = true;
|
|
20357
|
-
}, 600);
|
|
20359
|
+
require(['vs/editor/editor.main'], function () {
|
|
20360
|
+
window.monaco.languages.registerCompletionItemProvider('python', {
|
|
20361
|
+
provideCompletionItems: function provideCompletionItems() {
|
|
20362
|
+
return [{
|
|
20363
|
+
label: 'def',
|
|
20364
|
+
kind: window.monaco.languages.CompletionItemKind.Keyword,
|
|
20365
|
+
insertText: {
|
|
20366
|
+
value: 'def ${1:name}():\r\t$0'
|
|
20367
|
+
}
|
|
20368
|
+
}];
|
|
20358
20369
|
}
|
|
20359
|
-
}
|
|
20360
|
-
}
|
|
20370
|
+
});
|
|
20371
|
+
});
|
|
20361
20372
|
})();
|
|
20362
20373
|
'use strict';
|
|
20363
20374
|
|
|
@@ -21002,6 +21013,57 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
21002
21013
|
})();
|
|
21003
21014
|
'use strict';
|
|
21004
21015
|
|
|
21016
|
+
(function () {
|
|
21017
|
+
'use strict';
|
|
21018
|
+
|
|
21019
|
+
NclVersionConfigurationController.$inject = ['lodash', 'ConfigService', 'VersionHelperService'];
|
|
21020
|
+
angular.module('iguazio.dashboard-controls').component('nclVersionConfiguration', {
|
|
21021
|
+
bindings: {
|
|
21022
|
+
version: '<',
|
|
21023
|
+
isFunctionDeploying: '&'
|
|
21024
|
+
},
|
|
21025
|
+
templateUrl: 'nuclio/functions/version/version-configuration/version-configuration.tpl.html',
|
|
21026
|
+
controller: NclVersionConfigurationController
|
|
21027
|
+
});
|
|
21028
|
+
|
|
21029
|
+
function NclVersionConfigurationController(lodash, ConfigService, VersionHelperService) {
|
|
21030
|
+
var ctrl = this;
|
|
21031
|
+
|
|
21032
|
+
ctrl.scrollConfig = {
|
|
21033
|
+
axis: 'y',
|
|
21034
|
+
advanced: {
|
|
21035
|
+
autoScrollOnFocus: false,
|
|
21036
|
+
updateOnContentResize: true
|
|
21037
|
+
}
|
|
21038
|
+
};
|
|
21039
|
+
|
|
21040
|
+
ctrl.isDemoMode = ConfigService.isDemoMode;
|
|
21041
|
+
|
|
21042
|
+
ctrl.isRuntimeBlockVisible = isRuntimeBlockVisible;
|
|
21043
|
+
ctrl.onConfigurationChangeCallback = onConfigurationChangeCallback;
|
|
21044
|
+
|
|
21045
|
+
//
|
|
21046
|
+
// Public methods
|
|
21047
|
+
//
|
|
21048
|
+
|
|
21049
|
+
/**
|
|
21050
|
+
* Checks if `Runtime Attributes` block is visible
|
|
21051
|
+
* @returns {boolean}
|
|
21052
|
+
*/
|
|
21053
|
+
function isRuntimeBlockVisible() {
|
|
21054
|
+
return lodash.includes(['shell', 'java'], lodash.get(ctrl.version, 'spec.runtime'));
|
|
21055
|
+
}
|
|
21056
|
+
|
|
21057
|
+
/**
|
|
21058
|
+
* Checks if version's configuration was changed
|
|
21059
|
+
*/
|
|
21060
|
+
function onConfigurationChangeCallback() {
|
|
21061
|
+
VersionHelperService.updateIsVersionChanged(ctrl.version);
|
|
21062
|
+
}
|
|
21063
|
+
}
|
|
21064
|
+
})();
|
|
21065
|
+
'use strict';
|
|
21066
|
+
|
|
21005
21067
|
(function () {
|
|
21006
21068
|
'use strict';
|
|
21007
21069
|
|
|
@@ -21593,57 +21655,6 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
21593
21655
|
})();
|
|
21594
21656
|
'use strict';
|
|
21595
21657
|
|
|
21596
|
-
(function () {
|
|
21597
|
-
'use strict';
|
|
21598
|
-
|
|
21599
|
-
NclVersionConfigurationController.$inject = ['lodash', 'ConfigService', 'VersionHelperService'];
|
|
21600
|
-
angular.module('iguazio.dashboard-controls').component('nclVersionConfiguration', {
|
|
21601
|
-
bindings: {
|
|
21602
|
-
version: '<',
|
|
21603
|
-
isFunctionDeploying: '&'
|
|
21604
|
-
},
|
|
21605
|
-
templateUrl: 'nuclio/functions/version/version-configuration/version-configuration.tpl.html',
|
|
21606
|
-
controller: NclVersionConfigurationController
|
|
21607
|
-
});
|
|
21608
|
-
|
|
21609
|
-
function NclVersionConfigurationController(lodash, ConfigService, VersionHelperService) {
|
|
21610
|
-
var ctrl = this;
|
|
21611
|
-
|
|
21612
|
-
ctrl.scrollConfig = {
|
|
21613
|
-
axis: 'y',
|
|
21614
|
-
advanced: {
|
|
21615
|
-
autoScrollOnFocus: false,
|
|
21616
|
-
updateOnContentResize: true
|
|
21617
|
-
}
|
|
21618
|
-
};
|
|
21619
|
-
|
|
21620
|
-
ctrl.isDemoMode = ConfigService.isDemoMode;
|
|
21621
|
-
|
|
21622
|
-
ctrl.isRuntimeBlockVisible = isRuntimeBlockVisible;
|
|
21623
|
-
ctrl.onConfigurationChangeCallback = onConfigurationChangeCallback;
|
|
21624
|
-
|
|
21625
|
-
//
|
|
21626
|
-
// Public methods
|
|
21627
|
-
//
|
|
21628
|
-
|
|
21629
|
-
/**
|
|
21630
|
-
* Checks if `Runtime Attributes` block is visible
|
|
21631
|
-
* @returns {boolean}
|
|
21632
|
-
*/
|
|
21633
|
-
function isRuntimeBlockVisible() {
|
|
21634
|
-
return lodash.includes(['shell', 'java'], lodash.get(ctrl.version, 'spec.runtime'));
|
|
21635
|
-
}
|
|
21636
|
-
|
|
21637
|
-
/**
|
|
21638
|
-
* Checks if version's configuration was changed
|
|
21639
|
-
*/
|
|
21640
|
-
function onConfigurationChangeCallback() {
|
|
21641
|
-
VersionHelperService.updateIsVersionChanged(ctrl.version);
|
|
21642
|
-
}
|
|
21643
|
-
}
|
|
21644
|
-
})();
|
|
21645
|
-
'use strict';
|
|
21646
|
-
|
|
21647
21658
|
(function () {
|
|
21648
21659
|
'use strict';
|
|
21649
21660
|
|
|
@@ -22961,7 +22972,8 @@ angular.module('angular-i18next', []).provider('i18next', [function () {
|
|
|
22961
22972
|
visible: true
|
|
22962
22973
|
}, {
|
|
22963
22974
|
id: 'python:3.6',
|
|
22964
|
-
name: 'Python 3.6',
|
|
22975
|
+
name: 'Python 3.6 ' + $i18next.t('functions:DEPRECATED_SOON_LABEL', { lng: lng }),
|
|
22976
|
+
nameTemplate: 'Python 3.6 ' + '<b>' + $i18next.t('functions:DEPRECATED_SOON_LABEL', { lng: lng }) + '</b>',
|
|
22965
22977
|
visible: true
|
|
22966
22978
|
}, {
|
|
22967
22979
|
id: 'python:3.7',
|
|
@@ -24293,10 +24305,8 @@ try {
|
|
|
24293
24305
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24294
24306
|
}
|
|
24295
24307
|
module.run(['$templateCache', function($templateCache) {
|
|
24296
|
-
$templateCache.put('igz_controls/components/action-
|
|
24297
|
-
'<div class="action-
|
|
24298
|
-
' \'igz-icon-checkbox-checked-few\': $ctrl.checkedItemsCount > 0 && !$ctrl.allItemsChecked,\n' +
|
|
24299
|
-
' \'igz-icon-checkbox-unchecked\': $ctrl.checkedItemsCount === 0}" data-ng-click="$ctrl.onCheckAll()"></div> </div> ');
|
|
24308
|
+
$templateCache.put('igz_controls/components/action-menu/action-menu.tpl.html',
|
|
24309
|
+
'<div class="igz-action-menu" data-ng-if="$ctrl.isVisible()"> <div class="menu-button {{$ctrl.iconClass}}" data-ng-class="{active: $ctrl.isMenuShown}" data-ng-click="$ctrl.toggleMenu($event)" data-uib-tooltip="{{ $ctrl.tooltipText }}" data-tooltip-enable="$ctrl.tooltipEnabled" data-tooltip-placement="top" data-tooltip-popup-delay="300" data-tooltip-append-to-body="true"> </div> <div class="menu-dropdown" data-ng-if="$ctrl.isMenuShown"> <div class="actions-list" data-ng-click="$ctrl.toggleMenu($event)"> <igz-action-item data-ng-repeat="action in $ctrl.actions track by action.id" data-action="action" data-actions="$ctrl.actions"> </igz-action-item> </div> <div class="shortcuts-list" data-ng-if="$ctrl.shortcuts && $ctrl.shortcuts.length > 0" data-ng-class="{\'first-block\': $ctrl.actions.length === 0}"> <div class="shortcuts-header">{{ \'common:SHORTCUTS\' | i18next }}</div> <div class="shortcuts-item" data-ng-repeat="shortcut in $ctrl.shortcuts" data-ng-click="$ctrl.showDetails($event, shortcut.state)"> {{shortcut.label}} </div> </div> </div> </div> ');
|
|
24300
24310
|
}]);
|
|
24301
24311
|
})();
|
|
24302
24312
|
|
|
@@ -24322,8 +24332,10 @@ try {
|
|
|
24322
24332
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24323
24333
|
}
|
|
24324
24334
|
module.run(['$templateCache', function($templateCache) {
|
|
24325
|
-
$templateCache.put('igz_controls/components/action-
|
|
24326
|
-
'<div class="
|
|
24335
|
+
$templateCache.put('igz_controls/components/action-checkbox-all/action-checkbox-all.tpl.html',
|
|
24336
|
+
'<div class="action-checkbox-all"> <div class="check-item" data-ng-class="{\'igz-icon-checkbox-checked\': $ctrl.allItemsChecked,\n' +
|
|
24337
|
+
' \'igz-icon-checkbox-checked-few\': $ctrl.checkedItemsCount > 0 && !$ctrl.allItemsChecked,\n' +
|
|
24338
|
+
' \'igz-icon-checkbox-unchecked\': $ctrl.checkedItemsCount === 0}" data-ng-click="$ctrl.onCheckAll()"></div> </div> ');
|
|
24327
24339
|
}]);
|
|
24328
24340
|
})();
|
|
24329
24341
|
|
|
@@ -24371,13 +24383,8 @@ try {
|
|
|
24371
24383
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24372
24384
|
}
|
|
24373
24385
|
module.run(['$templateCache', function($templateCache) {
|
|
24374
|
-
$templateCache.put('igz_controls/components/
|
|
24375
|
-
'<div class="
|
|
24376
|
-
' \'dropdown-input-disabled\': $ctrl.isDisabled}"> <div class="default-dropdown-field" tabindex="0" data-ng-click="$ctrl.readOnly || $ctrl.toggleDropdown($event)" data-ng-keydown="$ctrl.onDropDownKeydown($event)" data-uib-tooltip="{{$ctrl.isDropdownContainerShown ? \'\' : $ctrl.typedValue}}" data-tooltip-append-to-body="true" data-tooltip-placement="top" data-tooltip-popup-delay="300" data-ng-class="{placeholder: $ctrl.isPlaceholderClass(),\n' +
|
|
24377
|
-
' disabled: $ctrl.isDisabled,\n' +
|
|
24378
|
-
' readonly: $ctrl.readOnly}"> <div class="dropdown-selected-item"> <div data-ng-if="$ctrl.showSelectedItem().icon.name" data-ng-class="{\'custom-color\': $ctrl.dropdownType === \'priority\'}" class="dropdown-icon {{$ctrl.getIcon($ctrl.showSelectedItem()).name}}"> </div> <div data-ng-if="$ctrl.showSelectedItem().badge" data-ng-class="{\'custom-color\': $ctrl.dropdownType === \'badges-dropdown\'}" class="{{$ctrl.showSelectedItem().badge.class}}"> {{$ctrl.showSelectedItem().badge.value}} </div> <input type="text" class="input-name text-ellipsis" data-ng-class="{\'non-editable\': !$ctrl.isTypingEnabled() && !$ctrl.isDisabled, capitalized: $ctrl.isCapitalized}" data-ng-model="$ctrl.typedValue" data-ng-change="$ctrl.onChangeTypingInput()" data-ng-readonly="!$ctrl.isTypingEnabled()" data-ng-required="$ctrl.checkIsRequired()" data-ng-disabled="$ctrl.isDisabled || !$ctrl.isTypingEnabled()" data-ng-pattern="$ctrl.matchPattern" data-ng-trim="{{$ctrl.trim}}" autocomplete="off" name="{{$ctrl.inputName}}" placeholder="{{$ctrl.placeholder}}"> <span data-ng-if="$ctrl.getDescription($ctrl.showSelectedItem().description)" class="description">{{$ctrl.getDescription($ctrl.showSelectedItem().description)}}</span> </div> <div class="dropdown-arrow" data-ng-if="!$ctrl.readOnly"> <span class="{{$ctrl.iconClass}}" data-ng-class="{\'rotate-arrow\': $ctrl.isDropUp}"></span> </div> </div> <div class="default-dropdown-container {{$ctrl.additionalClass}}" tabindex="-1" data-ng-if="$ctrl.isDropdownContainerShown" data-ng-style="{\'top\': $ctrl.topPosition}" data-ng-class="{\'dropdown-overlap\': $ctrl.enableOverlap}" data-ng-scrollbars> <ul class="list" tabindex="-1"> <li class="list-item" tabindex="0" data-ng-repeat="item in $ctrl.getValuesArray() track by $index" data-ng-click="$ctrl.selectItem(item, $event)" data-ng-keydown="$ctrl.onItemKeydown($event, item)" data-ng-class="{\'list-item-description\': $ctrl.getDescription(item),\n' +
|
|
24379
|
-
' \'active\': $ctrl.isItemSelected(item),\n' +
|
|
24380
|
-
' \'disabled\': item.disabled}" data-ng-show="item.visible" data-uib-tooltip="{{$ctrl.getTooltip(item)}}" data-tooltip-placement="{{item.tooltipPlacement || \'left\'}}" data-tooltip-append-to-body="true"> <div class="list-item-block text-ellipsis"> <div data-ng-if="$ctrl.getIcon(item).name" data-ng-class="{\'custom-color\': $ctrl.dropdownType === \'priority\'}" class="dropdown-icon {{$ctrl.getIcon(item).name}}"> </div> <div data-ng-if="item.badge" data-ng-class="{\'custom-color\': $ctrl.dropdownType === \'badges-dropdown\'}" class="{{item.badge.class}}"> {{item.badge.value}} </div> <div class="list-item-label"> <span class="list-item-name" data-ng-class="{\'capitalized\': $ctrl.isCapitalized}"> {{$ctrl.getName(item)}}</span> <span data-ng-show="$ctrl.getDescription(item)" class="description">{{$ctrl.getDescription(item)}}</span> </div> </div> <div class="igz-col-20 igz-icon-tick selected-item-icon" data-ng-show="$ctrl.isItemSelected(item) && !$ctrl.isPagination"></div> </li> </ul> <div class="add-button-wrapper" tabindex="0" data-ng-if="$ctrl.bottomButtonCallback"> <a href="#" class="add-button" data-ng-click="$ctrl.bottomButtonCallback()"> {{ $ctrl.bottomButtonText }} </a> </div> <div class="transclude-container align-items-center" data-ng-if="$ctrl.isTranscludePassed" data-ng-transclude> </div> </div> </div> ');
|
|
24386
|
+
$templateCache.put('igz_controls/components/copy-to-clipboard/copy-to-clipboard.tpl.html',
|
|
24387
|
+
'<div class="igz-action-item" data-ng-click="$ctrl.copyToClipboard()" data-uib-tooltip="{{ $ctrl.tooltipText ? $ctrl.tooltipText : \'common:TOOLTIP.COPY_TO_CLIPBOARD\' | i18next }}" data-tooltip-placement="{{ $ctrl.tooltipPlacement }}" data-tooltip-popup-delay="300" data-tooltip-append-to-body="true"> <div class="action-icon ncl-icon-copy"></div> </div> ');
|
|
24381
24388
|
}]);
|
|
24382
24389
|
})();
|
|
24383
24390
|
|
|
@@ -24388,8 +24395,13 @@ try {
|
|
|
24388
24395
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24389
24396
|
}
|
|
24390
24397
|
module.run(['$templateCache', function($templateCache) {
|
|
24391
|
-
$templateCache.put('igz_controls/components/
|
|
24392
|
-
'<div class="
|
|
24398
|
+
$templateCache.put('igz_controls/components/default-dropdown/default-dropdown.tpl.html',
|
|
24399
|
+
'<div class="default-dropdown" data-ng-class="{\'dropdown-input-invalid\': $ctrl.isShowDropdownError($ctrl.formObject, $ctrl.inputName),\n' +
|
|
24400
|
+
' \'dropdown-input-disabled\': $ctrl.isDisabled}"> <div class="default-dropdown-field" tabindex="0" data-ng-click="$ctrl.readOnly || $ctrl.toggleDropdown($event)" data-ng-keydown="$ctrl.onDropDownKeydown($event)" data-uib-tooltip="{{$ctrl.isDropdownContainerShown ? \'\' : $ctrl.typedValue}}" data-tooltip-append-to-body="true" data-tooltip-placement="top" data-tooltip-popup-delay="300" data-ng-class="{placeholder: $ctrl.isPlaceholderClass(),\n' +
|
|
24401
|
+
' disabled: $ctrl.isDisabled,\n' +
|
|
24402
|
+
' readonly: $ctrl.readOnly}"> <div class="dropdown-selected-item"> <div data-ng-if="$ctrl.showSelectedItem().icon.name" data-ng-class="{\'custom-color\': $ctrl.dropdownType === \'priority\'}" class="dropdown-icon {{$ctrl.getIcon($ctrl.showSelectedItem()).name}}"> </div> <div data-ng-if="$ctrl.showSelectedItem().badge" data-ng-class="{\'custom-color\': $ctrl.dropdownType === \'badges-dropdown\'}" class="{{$ctrl.showSelectedItem().badge.class}}"> {{$ctrl.showSelectedItem().badge.value}} </div> <input type="text" class="input-name text-ellipsis" data-ng-class="{\'non-editable\': !$ctrl.isTypingEnabled() && !$ctrl.isDisabled, capitalized: $ctrl.isCapitalized}" data-ng-model="$ctrl.typedValue" data-ng-change="$ctrl.onChangeTypingInput()" data-ng-readonly="!$ctrl.isTypingEnabled()" data-ng-required="$ctrl.checkIsRequired()" data-ng-disabled="$ctrl.isDisabled || !$ctrl.isTypingEnabled()" data-ng-pattern="$ctrl.matchPattern" data-ng-trim="{{$ctrl.trim}}" autocomplete="off" name="{{$ctrl.inputName}}" placeholder="{{$ctrl.placeholder}}"> <span data-ng-if="$ctrl.getDescription($ctrl.showSelectedItem().description)" class="description">{{$ctrl.getDescription($ctrl.showSelectedItem().description)}}</span> </div> <div class="dropdown-arrow" data-ng-if="!$ctrl.readOnly"> <span class="{{$ctrl.iconClass}}" data-ng-class="{\'rotate-arrow\': $ctrl.isDropUp}"></span> </div> </div> <div class="default-dropdown-container {{$ctrl.additionalClass}}" tabindex="-1" data-ng-if="$ctrl.isDropdownContainerShown" data-ng-style="{\'top\': $ctrl.topPosition}" data-ng-class="{\'dropdown-overlap\': $ctrl.enableOverlap}" data-ng-scrollbars> <ul class="list" tabindex="-1"> <li class="list-item" tabindex="0" data-ng-repeat="item in $ctrl.getValuesArray() track by $index" data-ng-click="$ctrl.selectItem(item, $event)" data-ng-keydown="$ctrl.onItemKeydown($event, item)" data-ng-class="{\'list-item-description\': $ctrl.getDescription(item),\n' +
|
|
24403
|
+
' \'active\': $ctrl.isItemSelected(item),\n' +
|
|
24404
|
+
' \'disabled\': item.disabled}" data-ng-show="item.visible" data-uib-tooltip="{{$ctrl.getTooltip(item)}}" data-tooltip-placement="{{item.tooltipPlacement || \'left\'}}" data-tooltip-append-to-body="true"> <div class="list-item-block text-ellipsis"> <div data-ng-if="$ctrl.getIcon(item).name" data-ng-class="{\'custom-color\': $ctrl.dropdownType === \'priority\'}" class="dropdown-icon {{$ctrl.getIcon(item).name}}"> </div> <div data-ng-if="item.badge" data-ng-class="{\'custom-color\': $ctrl.dropdownType === \'badges-dropdown\'}" class="{{item.badge.class}}"> {{item.badge.value}} </div> <div class="list-item-label"> <span class="list-item-name" data-ng-class="{\'capitalized\': $ctrl.isCapitalized}" data-ng-bind-html="$ctrl.getNameTemplate(item)"></span> <span data-ng-show="$ctrl.getDescription(item)" class="description">{{$ctrl.getDescription(item)}}</span> </div> </div> <div class="igz-col-20 igz-icon-tick selected-item-icon" data-ng-show="$ctrl.isItemSelected(item) && !$ctrl.isPagination"></div> </li> </ul> <div class="add-button-wrapper" tabindex="0" data-ng-if="$ctrl.bottomButtonCallback"> <a href="#" class="add-button" data-ng-click="$ctrl.bottomButtonCallback()"> {{ $ctrl.bottomButtonText }} </a> </div> <div class="transclude-container align-items-center" data-ng-if="$ctrl.isTranscludePassed" data-ng-transclude> </div> </div> </div> ');
|
|
24393
24405
|
}]);
|
|
24394
24406
|
})();
|
|
24395
24407
|
|
|
@@ -24765,8 +24777,8 @@ try {
|
|
|
24765
24777
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24766
24778
|
}
|
|
24767
24779
|
module.run(['$templateCache', function($templateCache) {
|
|
24768
|
-
$templateCache.put('igz_controls/components/info-page/info-page-
|
|
24769
|
-
'<div class="info-page-
|
|
24780
|
+
$templateCache.put('igz_controls/components/info-page/info-page-content/info-page-content.tpl.html',
|
|
24781
|
+
'<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>');
|
|
24770
24782
|
}]);
|
|
24771
24783
|
})();
|
|
24772
24784
|
|
|
@@ -24777,8 +24789,8 @@ try {
|
|
|
24777
24789
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24778
24790
|
}
|
|
24779
24791
|
module.run(['$templateCache', function($templateCache) {
|
|
24780
|
-
$templateCache.put('igz_controls/components/info-page/info-page-
|
|
24781
|
-
'<div class="
|
|
24792
|
+
$templateCache.put('igz_controls/components/info-page/info-page-filters/info-page-filters.tpl.html',
|
|
24793
|
+
'<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> ');
|
|
24782
24794
|
}]);
|
|
24783
24795
|
})();
|
|
24784
24796
|
|
|
@@ -24851,11 +24863,8 @@ try {
|
|
|
24851
24863
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24852
24864
|
}
|
|
24853
24865
|
module.run(['$templateCache', function($templateCache) {
|
|
24854
|
-
$templateCache.put('nuclio/common/components/
|
|
24855
|
-
'<div class="
|
|
24856
|
-
' \'only-value-input\': $ctrl.onlyValueInput,\n' +
|
|
24857
|
-
' \'only-key-value-input\': $ctrl.isVisibleByType(\'value\'),\n' +
|
|
24858
|
-
' \'all-value-types\': $ctrl.allValueTypes}"> <label data-ng-if="$ctrl.useLabels" class="asterisk"> <span data-ng-if="$ctrl.isVisibleByType(\'value\')"> {{ \'common:VALUE\' | i18next }}: </span> <span data-ng-if="$ctrl.isVisibleByType(\'secret\')"> {{ \'functions:SECRET_NAME\' | i18next }}: </span> <span data-ng-if="$ctrl.isVisibleByType(\'configmap\')"> {{ \'functions:CONFIGMAP_NAME\' | i18next }}: </span> </label> <igz-validating-input-field class="input-value" data-field-type="input" data-input-name="value" data-input-value="$ctrl.getInputValue()" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="value" data-is-disabled="$ctrl.isDisabled" data-form-object="$ctrl.keyValueInputForm" data-validation-is-required="!$ctrl.valueOptional" data-validation-pattern="$ctrl.valueValidationPattern" data-validation-rules="$ctrl.validationRules[$ctrl.getType()]" data-placeholder-text="{{$ctrl.valuePlaceholder}}" data-uib-tooltip="{{$ctrl.valueTooltip}}" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="100"> </igz-validating-input-field> <igz-validating-input-field class="input-additional-value" data-ng-if="$ctrl.useAdditionalValue && $ctrl.isVisibleByType(\'value\')" data-field-type="input" data-input-name="additionalValue" data-is-disabled="$ctrl.isDisabled" data-input-value="$ctrl.data.additionalValue" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="additionalValue" data-form-object="$ctrl.keyValueInputForm" data-validation-is-required="!$ctrl.additionalValueOptional"> </igz-validating-input-field> </div> </div> <div class="three-dot-menu" data-ng-if="$ctrl.actions.length > 1 && !$ctrl.isDisabled"> <igz-action-menu data-actions="$ctrl.actions" data-on-fire-action="$ctrl.onFireAction"> </igz-action-menu> </div> <div class="igz-action-panel" data-ng-if="$ctrl.actions.length === 1 && !$ctrl.isDisabled"> <div class="actions-list"> <div class="igz-action-item" data-ng-click="$ctrl.onClickAction($ctrl.actions[0])"> <span class="action-icon" data-ng-class="$ctrl.actions[0].icon"> </span> </div> </div> </div> </form> </div> ');
|
|
24866
|
+
$templateCache.put('nuclio/common/components/function-config-dialog/function-config-dialog.tpl.html',
|
|
24867
|
+
'<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> ');
|
|
24859
24868
|
}]);
|
|
24860
24869
|
})();
|
|
24861
24870
|
|
|
@@ -24866,8 +24875,11 @@ try {
|
|
|
24866
24875
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24867
24876
|
}
|
|
24868
24877
|
module.run(['$templateCache', function($templateCache) {
|
|
24869
|
-
$templateCache.put('nuclio/common/components/
|
|
24870
|
-
'<div class="
|
|
24878
|
+
$templateCache.put('nuclio/common/components/key-value-input/key-value-input.tpl.html',
|
|
24879
|
+
'<div class="ncl-key-value-input"> <form name="$ctrl.keyValueInputForm" class="input-wrapper" data-ng-mousedown="$ctrl.onEditInput()" novalidate> <div class="check-row" data-ng-if="$ctrl.allowSelection"> <igz-action-checkbox data-item="$ctrl.data"></igz-action-checkbox> </div> <div class="inputs-container" data-ng-class="{\'use-type\': $ctrl.useType, \'use-checkbox\': $ctrl.allowSelection}"> <div class="input-container input-key-wrapper" data-ng-if="!$ctrl.onlyValueInput" data-ng-class="{\'use-type\': $ctrl.useType, \'all-value-types\': $ctrl.allValueTypes}"> <label class="key-label asterisk" data-ng-if="$ctrl.useLabels"> {{ \'common:KEY\' | i18next }}: </label> <igz-validating-input-field class="input-key" data-ng-if="!$ctrl.keyList" data-field-type="input" data-input-name="key" data-is-disabled="$ctrl.isDisabled" data-input-value="$ctrl.data.name" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="name" data-form-object="$ctrl.keyValueInputForm" data-validation-is-required="!$ctrl.keyOptional" data-validation-pattern="$ctrl.keyValidationPattern" data-validation-rules="$ctrl.validationRules[\'key\']" data-placeholder-text="{{$ctrl.keyPlaceholder}}" data-uib-tooltip="{{$ctrl.keyTooltip}}" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="100"> </igz-validating-input-field> <igz-default-dropdown class="input-key" data-ng-if="$ctrl.keyList" data-form-object="$ctrl.keyValueInputForm" data-prevent-drop-up="true" data-input-name="key" data-is-disabled="$ctrl.isDisabled" data-values-array="$ctrl.keyList" data-selected-item="$ctrl.getSelectedItem()" data-item-select-callback="$ctrl.onKeyChanged(item)" data-enable-overlap="$ctrl.dropdownOverlap"> </igz-default-dropdown> </div> <div class="input-container input-type-wrapper" data-ng-if="$ctrl.useType" data-ng-class="{\'use-type\': $ctrl.useType, \'all-value-types\': $ctrl.allValueTypes}"> <label data-ng-if="$ctrl.useLabels" class="type-label"> {{ \'common:TYPE\' | i18next }}: </label> <igz-default-dropdown class="input-type" data-form-object="$ctrl.keyValueInputForm" data-select-property-only="id" data-prevent-drop-up="true" data-input-name="type" data-is-disabled="$ctrl.isDisabled" data-values-array="$ctrl.typesList" data-selected-item="$ctrl.getType()" data-placeholder="{{ \'common:PLACEHOLDER.SELECT_TYPE\' | i18next }}" data-item-select-callback="$ctrl.onTypeChanged(item, isItemChanged)" data-enable-overlap="$ctrl.dropdownOverlap"> </igz-default-dropdown> </div> <div class="input-container input-value-key-wrapper" data-ng-if="!$ctrl.isVisibleByType(\'value\')" data-ng-class="{\'use-type\': $ctrl.useType}"> <label data-ng-if="$ctrl.useLabels"> <span data-ng-if="$ctrl.isVisibleByType(\'secret\')"> {{ \'functions:SECRET_KEY\' | i18next }}: </span> <span data-ng-if="$ctrl.isVisibleByType(\'configmap\')"> {{ \'functions:CONFIGMAP_KEY\' | i18next }}: </span> </label> <igz-validating-input-field class="input-value-key" data-field-type="input" data-input-name="value-key" data-input-value="$ctrl.getInputKey()" data-update-data-callback="$ctrl.inputKeyCallback(newData)" data-update-data-field="value-key" data-is-disabled="$ctrl.isDisabled" data-form-object="$ctrl.keyValueInputForm" data-validation-is-required="!$ctrl.valueOptional" data-validation-rules="$ctrl.validationRules[$ctrl.getType() + \'Key\']" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_KEY\' | i18next }}"> </igz-validating-input-field> </div> <div class="input-container input-value-wrapper" data-ng-class="{\'use-type\': $ctrl.useType,\n' +
|
|
24880
|
+
' \'only-value-input\': $ctrl.onlyValueInput,\n' +
|
|
24881
|
+
' \'only-key-value-input\': $ctrl.isVisibleByType(\'value\'),\n' +
|
|
24882
|
+
' \'all-value-types\': $ctrl.allValueTypes}"> <label data-ng-if="$ctrl.useLabels" class="asterisk"> <span data-ng-if="$ctrl.isVisibleByType(\'value\')"> {{ \'common:VALUE\' | i18next }}: </span> <span data-ng-if="$ctrl.isVisibleByType(\'secret\')"> {{ \'functions:SECRET_NAME\' | i18next }}: </span> <span data-ng-if="$ctrl.isVisibleByType(\'configmap\')"> {{ \'functions:CONFIGMAP_NAME\' | i18next }}: </span> </label> <igz-validating-input-field class="input-value" data-field-type="input" data-input-name="value" data-input-value="$ctrl.getInputValue()" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="value" data-is-disabled="$ctrl.isDisabled" data-form-object="$ctrl.keyValueInputForm" data-validation-is-required="!$ctrl.valueOptional" data-validation-pattern="$ctrl.valueValidationPattern" data-validation-rules="$ctrl.validationRules[$ctrl.getType()]" data-placeholder-text="{{$ctrl.valuePlaceholder}}" data-uib-tooltip="{{$ctrl.valueTooltip}}" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="100"> </igz-validating-input-field> <igz-validating-input-field class="input-additional-value" data-ng-if="$ctrl.useAdditionalValue && $ctrl.isVisibleByType(\'value\')" data-field-type="input" data-input-name="additionalValue" data-is-disabled="$ctrl.isDisabled" data-input-value="$ctrl.data.additionalValue" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-update-data-field="additionalValue" data-form-object="$ctrl.keyValueInputForm" data-validation-is-required="!$ctrl.additionalValueOptional"> </igz-validating-input-field> </div> </div> <div class="three-dot-menu" data-ng-if="$ctrl.actions.length > 1 && !$ctrl.isDisabled"> <igz-action-menu data-actions="$ctrl.actions" data-on-fire-action="$ctrl.onFireAction"> </igz-action-menu> </div> <div class="igz-action-panel" data-ng-if="$ctrl.actions.length === 1 && !$ctrl.isDisabled"> <div class="actions-list"> <div class="igz-action-item" data-ng-click="$ctrl.onClickAction($ctrl.actions[0])"> <span class="action-icon" data-ng-class="$ctrl.actions[0].icon"> </span> </div> </div> </div> </form> </div> ');
|
|
24871
24883
|
}]);
|
|
24872
24884
|
})();
|
|
24873
24885
|
|
|
@@ -24891,8 +24903,8 @@ try {
|
|
|
24891
24903
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24892
24904
|
}
|
|
24893
24905
|
module.run(['$templateCache', function($templateCache) {
|
|
24894
|
-
$templateCache.put('nuclio/common/components/
|
|
24895
|
-
'<div class="ncl-
|
|
24906
|
+
$templateCache.put('nuclio/common/components/navigation-tabs/navigation-tabs.tpl.html',
|
|
24907
|
+
'<div class="ncl-navigation-tabs-wrapper"> <div class="ncl-navigation-tabs clearfix"> <div class="navigation-tab" data-ng-repeat="item in $ctrl.tabItems track by item.id" data-ui-sref="{{item.uiRoute}}" data-ui-sref-active="active" data-ng-class="{\'ncl-status-indicator\': item.indicator}"> {{item.tabName | uppercase}} <div class="ncl-status-light" data-ng-if="item.indicator" data-ng-class="item.indicator.lightClass"> <div class="ncl-status-tooltip" data-ng-if="item.indicator.tooltipText" data-ng-class="item.indicator.tooltipClass"> <div class="ncl-status-icon" data-ng-if="item.indicator.tooltipIconClass" data-ng-class="item.indicator.tooltipIconClass"> </div> <div class="ncl-status-title"> {{item.indicator.tooltipText}} </div> </div> </div> </div> </div> <div class="test-pane-actions-wrapper"> <div class="igz-action-panel"> <div class="actions-list"> <div class="igz-action-item" data-ng-if="$ctrl.isToggleButtonVisible()" data-ng-class="{\'active\': !$ctrl.isTestPaneClosed}" data-ng-click="$ctrl.toggleTestPane()"> <div class="action-icon igz-icon-test-pane"></div> </div> </div> </div> </div> </div> ');
|
|
24896
24908
|
}]);
|
|
24897
24909
|
})();
|
|
24898
24910
|
|
|
@@ -24903,8 +24915,8 @@ try {
|
|
|
24903
24915
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24904
24916
|
}
|
|
24905
24917
|
module.run(['$templateCache', function($templateCache) {
|
|
24906
|
-
$templateCache.put('nuclio/common/components/
|
|
24907
|
-
'<div class="ncl-
|
|
24918
|
+
$templateCache.put('nuclio/common/components/nuclio-search-input/search-input.tpl.html',
|
|
24919
|
+
'<div class="ncl-search-input"> <input type="text" class="container-search-input" placeholder="{{$ctrl.placeholder}}" data-ng-keydown="$ctrl.onPressEnter($event)" data-igz-input-blur-on-enter data-ng-model="$ctrl.searchQuery" data-ng-model-options="{ debounce: { \'default\': 500, \'blur\': 0 } }"> <span class="igz-icon-search"></span> </div> ');
|
|
24908
24920
|
}]);
|
|
24909
24921
|
})();
|
|
24910
24922
|
|
|
@@ -24947,6 +24959,18 @@ module.run(['$templateCache', function($templateCache) {
|
|
|
24947
24959
|
}]);
|
|
24948
24960
|
})();
|
|
24949
24961
|
|
|
24962
|
+
(function(module) {
|
|
24963
|
+
try {
|
|
24964
|
+
module = angular.module('iguazio.dashboard-controls.templates');
|
|
24965
|
+
} catch (e) {
|
|
24966
|
+
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24967
|
+
}
|
|
24968
|
+
module.run(['$templateCache', function($templateCache) {
|
|
24969
|
+
$templateCache.put('nuclio/functions/version/version-configuration/version-configuration.tpl.html',
|
|
24970
|
+
'<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> ');
|
|
24971
|
+
}]);
|
|
24972
|
+
})();
|
|
24973
|
+
|
|
24950
24974
|
(function(module) {
|
|
24951
24975
|
try {
|
|
24952
24976
|
module = angular.module('iguazio.dashboard-controls.templates');
|
|
@@ -24971,18 +24995,6 @@ module.run(['$templateCache', function($templateCache) {
|
|
|
24971
24995
|
}]);
|
|
24972
24996
|
})();
|
|
24973
24997
|
|
|
24974
|
-
(function(module) {
|
|
24975
|
-
try {
|
|
24976
|
-
module = angular.module('iguazio.dashboard-controls.templates');
|
|
24977
|
-
} catch (e) {
|
|
24978
|
-
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
24979
|
-
}
|
|
24980
|
-
module.run(['$templateCache', function($templateCache) {
|
|
24981
|
-
$templateCache.put('nuclio/functions/version/version-configuration/version-configuration.tpl.html',
|
|
24982
|
-
'<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> ');
|
|
24983
|
-
}]);
|
|
24984
|
-
})();
|
|
24985
|
-
|
|
24986
24998
|
(function(module) {
|
|
24987
24999
|
try {
|
|
24988
25000
|
module = angular.module('iguazio.dashboard-controls.templates');
|
|
@@ -25101,8 +25113,8 @@ try {
|
|
|
25101
25113
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
25102
25114
|
}
|
|
25103
25115
|
module.run(['$templateCache', function($templateCache) {
|
|
25104
|
-
$templateCache.put('nuclio/functions/version/version-
|
|
25105
|
-
'<div class="ncl-
|
|
25116
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-annotations/version-configuration-annotations.tpl.html',
|
|
25117
|
+
'<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> ');
|
|
25106
25118
|
}]);
|
|
25107
25119
|
})();
|
|
25108
25120
|
|
|
@@ -25113,8 +25125,8 @@ try {
|
|
|
25113
25125
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
25114
25126
|
}
|
|
25115
25127
|
module.run(['$templateCache', function($templateCache) {
|
|
25116
|
-
$templateCache.put('nuclio/functions/version/version-
|
|
25117
|
-
'<div class="ncl-
|
|
25128
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-basic-settings/version-configuration-basic-settings.tpl.html',
|
|
25129
|
+
'<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="{{ \'functions:MIN\' | i18next }}..."> </igz-validating-input-field> <div class="values-label">{{ \'functions: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> ');
|
|
25118
25130
|
}]);
|
|
25119
25131
|
})();
|
|
25120
25132
|
|
|
@@ -25125,8 +25137,8 @@ try {
|
|
|
25125
25137
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
25126
25138
|
}
|
|
25127
25139
|
module.run(['$templateCache', function($templateCache) {
|
|
25128
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
25129
|
-
'<div class="ncl-version-configuration-
|
|
25140
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-build/version-configuration-build.tpl.html',
|
|
25141
|
+
'<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> ');
|
|
25130
25142
|
}]);
|
|
25131
25143
|
})();
|
|
25132
25144
|
|
|
@@ -25137,8 +25149,8 @@ try {
|
|
|
25137
25149
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
25138
25150
|
}
|
|
25139
25151
|
module.run(['$templateCache', function($templateCache) {
|
|
25140
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
25141
|
-
'<div class="ncl-version-configuration-
|
|
25152
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-logging/version-configuration-logging.tpl.html',
|
|
25153
|
+
'<div class="ncl-version-configuration-logging"> <div class="title">{{ \'functions:LOGGING\' | i18next }}</div> <div class="row"> <form name="$ctrl.loggingForm" class="logging-wrapper" novalidate></form> </div> </div> ');
|
|
25142
25154
|
}]);
|
|
25143
25155
|
})();
|
|
25144
25156
|
|
|
@@ -25149,8 +25161,8 @@ try {
|
|
|
25149
25161
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
25150
25162
|
}
|
|
25151
25163
|
module.run(['$templateCache', function($templateCache) {
|
|
25152
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
25153
|
-
'<div class="ncl-version-configuration-
|
|
25164
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-labels/version-configuration-labels.tpl.html',
|
|
25165
|
+
'<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> ');
|
|
25154
25166
|
}]);
|
|
25155
25167
|
})();
|
|
25156
25168
|
|
|
@@ -25173,8 +25185,8 @@ try {
|
|
|
25173
25185
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
25174
25186
|
}
|
|
25175
25187
|
module.run(['$templateCache', function($templateCache) {
|
|
25176
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
25177
|
-
'<div class="ncl-version-configuration-logging"> <div class="title">{{ \'functions:LOGGING\' | i18next }}</div> <div class="row"> <form name="$ctrl.loggingForm" class="logging-wrapper" novalidate></form> </div> </div> ');
|
|
25188
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-resources/version-configuration-resources.tpl.html',
|
|
25189
|
+
'<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"> {{ \'functions: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> ');
|
|
25178
25190
|
}]);
|
|
25179
25191
|
})();
|
|
25180
25192
|
|
|
@@ -25185,8 +25197,8 @@ try {
|
|
|
25185
25197
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
25186
25198
|
}
|
|
25187
25199
|
module.run(['$templateCache', function($templateCache) {
|
|
25188
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
25189
|
-
'<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"> {{ \'functions: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> ');
|
|
25200
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-volumes/version-configuration-volumes.tpl.html',
|
|
25201
|
+
'<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> ');
|
|
25190
25202
|
}]);
|
|
25191
25203
|
})();
|
|
25192
25204
|
|
|
@@ -25197,8 +25209,8 @@ try {
|
|
|
25197
25209
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
25198
25210
|
}
|
|
25199
25211
|
module.run(['$templateCache', function($templateCache) {
|
|
25200
|
-
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-
|
|
25201
|
-
'<div class="ncl-version-configuration-
|
|
25212
|
+
$templateCache.put('nuclio/functions/version/version-configuration/tabs/version-configuration-runtime-attributes/version-configuration-runtime-attributes.tpl.html',
|
|
25213
|
+
'<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> ');
|
|
25202
25214
|
}]);
|
|
25203
25215
|
})();
|
|
25204
25216
|
|
|
@@ -25209,8 +25221,8 @@ try {
|
|
|
25209
25221
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
25210
25222
|
}
|
|
25211
25223
|
module.run(['$templateCache', function($templateCache) {
|
|
25212
|
-
$templateCache.put('nuclio/functions/version/version-
|
|
25213
|
-
'<div class="ncl-
|
|
25224
|
+
$templateCache.put('nuclio/functions/version/version-code/function-event-pane/test-events-logs/test-events-logs.tpl.html',
|
|
25225
|
+
'<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> ');
|
|
25214
25226
|
}]);
|
|
25215
25227
|
})();
|
|
25216
25228
|
|
|
@@ -25221,8 +25233,8 @@ try {
|
|
|
25221
25233
|
module = angular.module('iguazio.dashboard-controls.templates', []);
|
|
25222
25234
|
}
|
|
25223
25235
|
module.run(['$templateCache', function($templateCache) {
|
|
25224
|
-
$templateCache.put('nuclio/functions/version/version-
|
|
25225
|
-
'<div class="ncl-
|
|
25236
|
+
$templateCache.put('nuclio/functions/version/version-code/function-event-pane/test-events-navigation-tabs/test-events-navigation-tabs.tpl.html',
|
|
25237
|
+
'<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> ');
|
|
25226
25238
|
}]);
|
|
25227
25239
|
})();
|
|
25228
25240
|
|