iguazio.dashboard-controls 1.1.1 → 1.2.0

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.
@@ -5181,72 +5181,6 @@ such restriction.
5181
5181
  })();
5182
5182
  "use strict";
5183
5183
 
5184
- /*
5185
- Copyright 2018 Iguazio Systems Ltd.
5186
- Licensed under the Apache License, Version 2.0 (the "License") with
5187
- an addition restriction as set forth herein. You may not use this
5188
- file except in compliance with the License. You may obtain a copy of
5189
- the License at http://www.apache.org/licenses/LICENSE-2.0.
5190
- Unless required by applicable law or agreed to in writing, software
5191
- distributed under the License is distributed on an "AS IS" BASIS,
5192
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
5193
- implied. See the License for the specific language governing
5194
- permissions and limitations under the License.
5195
- In addition, you may not use the software for any purposes that are
5196
- illegal under applicable law, and the grant of the foregoing license
5197
- under the Apache 2.0 license is conditioned upon your compliance with
5198
- such restriction.
5199
- */
5200
- (function () {
5201
- 'use strict';
5202
-
5203
- IgzActionsPanesController.$inject = ["lodash", "ConfigService"];
5204
- angular.module('iguazio.dashboard-controls').component('igzActionsPanes', {
5205
- bindings: {
5206
- infoPaneDisable: '<?',
5207
- isInfoPaneOpened: '<?',
5208
- filtersToggleMethod: '&?',
5209
- filtersCounter: '<?',
5210
- isFiltersOpened: '<?',
5211
- showFilterIcon: '@?',
5212
- infoPaneToggleMethod: '&?',
5213
- closeInfoPane: '&?'
5214
- },
5215
- templateUrl: 'igz_controls/components/actions-panes/actions-panes.tpl.html',
5216
- controller: IgzActionsPanesController
5217
- });
5218
- function IgzActionsPanesController(lodash, ConfigService) {
5219
- var ctrl = this;
5220
- ctrl.callToggleMethod = null;
5221
- ctrl.$onInit = onInit;
5222
- ctrl.isShowFilterActionIcon = isShowFilterActionIcon;
5223
-
5224
- //
5225
- // Hook methods
5226
- //
5227
-
5228
- /**
5229
- * Initialization method
5230
- */
5231
- function onInit() {
5232
- ctrl.callToggleMethod = angular.isFunction(ctrl.closeInfoPane) ? ctrl.closeInfoPane : ctrl.infoPaneToggleMethod;
5233
- }
5234
-
5235
- //
5236
- // Public method
5237
- //
5238
-
5239
- /**
5240
- * Checks if filter toggles method exists and if filter pane should toggle only in demo mode
5241
- * @returns {boolean}
5242
- */
5243
- function isShowFilterActionIcon() {
5244
- return angular.isFunction(ctrl.filtersToggleMethod) && (lodash.isEqual(ctrl.showFilterIcon, 'true') || ConfigService.isDemoMode());
5245
- }
5246
- }
5247
- })();
5248
- "use strict";
5249
-
5250
5184
  /*
5251
5185
  Copyright 2018 Iguazio Systems Ltd.
5252
5186
  Licensed under the Apache License, Version 2.0 (the "License") with
@@ -5381,6 +5315,72 @@ such restriction.
5381
5315
  })();
5382
5316
  "use strict";
5383
5317
 
5318
+ /*
5319
+ Copyright 2018 Iguazio Systems Ltd.
5320
+ Licensed under the Apache License, Version 2.0 (the "License") with
5321
+ an addition restriction as set forth herein. You may not use this
5322
+ file except in compliance with the License. You may obtain a copy of
5323
+ the License at http://www.apache.org/licenses/LICENSE-2.0.
5324
+ Unless required by applicable law or agreed to in writing, software
5325
+ distributed under the License is distributed on an "AS IS" BASIS,
5326
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
5327
+ implied. See the License for the specific language governing
5328
+ permissions and limitations under the License.
5329
+ In addition, you may not use the software for any purposes that are
5330
+ illegal under applicable law, and the grant of the foregoing license
5331
+ under the Apache 2.0 license is conditioned upon your compliance with
5332
+ such restriction.
5333
+ */
5334
+ (function () {
5335
+ 'use strict';
5336
+
5337
+ IgzActionsPanesController.$inject = ["lodash", "ConfigService"];
5338
+ angular.module('iguazio.dashboard-controls').component('igzActionsPanes', {
5339
+ bindings: {
5340
+ infoPaneDisable: '<?',
5341
+ isInfoPaneOpened: '<?',
5342
+ filtersToggleMethod: '&?',
5343
+ filtersCounter: '<?',
5344
+ isFiltersOpened: '<?',
5345
+ showFilterIcon: '@?',
5346
+ infoPaneToggleMethod: '&?',
5347
+ closeInfoPane: '&?'
5348
+ },
5349
+ templateUrl: 'igz_controls/components/actions-panes/actions-panes.tpl.html',
5350
+ controller: IgzActionsPanesController
5351
+ });
5352
+ function IgzActionsPanesController(lodash, ConfigService) {
5353
+ var ctrl = this;
5354
+ ctrl.callToggleMethod = null;
5355
+ ctrl.$onInit = onInit;
5356
+ ctrl.isShowFilterActionIcon = isShowFilterActionIcon;
5357
+
5358
+ //
5359
+ // Hook methods
5360
+ //
5361
+
5362
+ /**
5363
+ * Initialization method
5364
+ */
5365
+ function onInit() {
5366
+ ctrl.callToggleMethod = angular.isFunction(ctrl.closeInfoPane) ? ctrl.closeInfoPane : ctrl.infoPaneToggleMethod;
5367
+ }
5368
+
5369
+ //
5370
+ // Public method
5371
+ //
5372
+
5373
+ /**
5374
+ * Checks if filter toggles method exists and if filter pane should toggle only in demo mode
5375
+ * @returns {boolean}
5376
+ */
5377
+ function isShowFilterActionIcon() {
5378
+ return angular.isFunction(ctrl.filtersToggleMethod) && (lodash.isEqual(ctrl.showFilterIcon, 'true') || ConfigService.isDemoMode());
5379
+ }
5380
+ }
5381
+ })();
5382
+ "use strict";
5383
+
5384
5384
  /*
5385
5385
  Copyright 2018 Iguazio Systems Ltd.
5386
5386
  Licensed under the Apache License, Version 2.0 (the "License") with
@@ -6127,6 +6127,11 @@ such restriction.
6127
6127
  }
6128
6128
  }
6129
6129
  }
6130
+ if (angular.isDefined(changes.selectedPreset)) {
6131
+ if (lodash.has(ctrl.presets, changes.selectedPreset.currentValue)) {
6132
+ ctrl.displayText = ctrl.presets[changes.selectedPreset.currentValue].label;
6133
+ }
6134
+ }
6130
6135
  }
6131
6136
 
6132
6137
  //
@@ -7225,6 +7230,112 @@ such restriction.
7225
7230
  })();
7226
7231
  "use strict";
7227
7232
 
7233
+ /*
7234
+ Copyright 2018 Iguazio Systems Ltd.
7235
+ Licensed under the Apache License, Version 2.0 (the "License") with
7236
+ an addition restriction as set forth herein. You may not use this
7237
+ file except in compliance with the License. You may obtain a copy of
7238
+ the License at http://www.apache.org/licenses/LICENSE-2.0.
7239
+ Unless required by applicable law or agreed to in writing, software
7240
+ distributed under the License is distributed on an "AS IS" BASIS,
7241
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
7242
+ implied. See the License for the specific language governing
7243
+ permissions and limitations under the License.
7244
+ In addition, you may not use the software for any purposes that are
7245
+ illegal under applicable law, and the grant of the foregoing license
7246
+ under the Apache 2.0 license is conditioned upon your compliance with
7247
+ such restriction.
7248
+ */
7249
+ (function () {
7250
+ 'use strict';
7251
+
7252
+ IgzImportProjectDialogController.$inject = ["$scope", "$i18next", "i18next", "lodash"];
7253
+ angular.module('iguazio.dashboard-controls').component('igzImportProjectDialog', {
7254
+ bindings: {
7255
+ closeDialog: '&',
7256
+ dialogTitle: '<',
7257
+ displayAllOptions: '<'
7258
+ },
7259
+ templateUrl: 'igz_controls/components/import-project-dialog/import-project-dialog.tpl.html',
7260
+ controller: IgzImportProjectDialogController
7261
+ });
7262
+ function IgzImportProjectDialogController($scope, $i18next, i18next, lodash) {
7263
+ var ctrl = this;
7264
+ var lng = i18next.language;
7265
+ var checkedItem = 'singleFunction';
7266
+ ctrl.option = [];
7267
+ ctrl.optionList = [{
7268
+ label: $i18next.t('common:APPLY_TO_ALL_FUNCTIONS_IN_THIS_PROJECT', {
7269
+ lng: lng
7270
+ }),
7271
+ id: 'singleProject',
7272
+ value: 'singleProject',
7273
+ disabled: false,
7274
+ visibility: true
7275
+ }, {
7276
+ label: $i18next.t('common:APPLY_TO_ALL_FUNCTIONS_IN_ALL_PROJECT', {
7277
+ lng: lng
7278
+ }),
7279
+ id: 'allProjects',
7280
+ value: 'allProjects',
7281
+ disabled: false,
7282
+ visibility: true
7283
+ }];
7284
+ ctrl.$onInit = onInit;
7285
+ ctrl.onClose = onClose;
7286
+ ctrl.onCheckboxChange = onCheckboxChange;
7287
+
7288
+ //
7289
+ // Hook methods
7290
+ //
7291
+
7292
+ /**
7293
+ * Initialization method
7294
+ */
7295
+ function onInit() {
7296
+ lodash.set(ctrl.optionList, '[1].visibility', ctrl.displayAllOptions);
7297
+ }
7298
+
7299
+ //
7300
+ // Public methods
7301
+ //
7302
+
7303
+ /**
7304
+ * Handles checking/un-checking checkbox
7305
+ */
7306
+ function onCheckboxChange() {
7307
+ if (!lodash.isNil(ctrl.option)) {
7308
+ if (lodash.includes(ctrl.option, 'allProjects')) {
7309
+ lodash.set(ctrl.optionList, '[0].disabled', true);
7310
+ if (ctrl.option.length === 1) {
7311
+ ctrl.option.unshift('singleProject');
7312
+ }
7313
+ } else {
7314
+ lodash.set(ctrl.optionList, '[0].disabled', false);
7315
+ }
7316
+ ctrl.optionList = angular.copy(ctrl.optionList);
7317
+ ctrl.option = angular.copy(ctrl.option);
7318
+ checkedItem = lodash.get(ctrl.option, [ctrl.option.length - 1]);
7319
+ } else {
7320
+ checkedItem = 'singleFunction';
7321
+ }
7322
+ }
7323
+
7324
+ /**
7325
+ * Closes dialog
7326
+ * @param {string} action
7327
+ */
7328
+ function onClose(action) {
7329
+ ctrl.closeDialog({
7330
+ action: action,
7331
+ option: checkedItem
7332
+ });
7333
+ ctrl.option = [];
7334
+ }
7335
+ }
7336
+ })();
7337
+ "use strict";
7338
+
7228
7339
  /*
7229
7340
  Copyright 2018 Iguazio Systems Ltd.
7230
7341
  Licensed under the Apache License, Version 2.0 (the "License") with
@@ -7423,121 +7534,15 @@ such restriction.
7423
7534
  (function () {
7424
7535
  'use strict';
7425
7536
 
7426
- IgzImportProjectDialogController.$inject = ["$scope", "$i18next", "i18next", "lodash"];
7427
- angular.module('iguazio.dashboard-controls').component('igzImportProjectDialog', {
7537
+ IgzElasticLogTableRowController.$inject = ["lodash"];
7538
+ angular.module('iguazio.dashboard-controls').component('igzElasticLogTableRow', {
7428
7539
  bindings: {
7429
- closeDialog: '&',
7430
- dialogTitle: '<',
7431
- displayAllOptions: '<'
7540
+ entryItem: '<'
7432
7541
  },
7433
- templateUrl: 'igz_controls/components/import-project-dialog/import-project-dialog.tpl.html',
7434
- controller: IgzImportProjectDialogController
7542
+ templateUrl: 'igz_controls/components/log-table-row/log-table-row.tpl.html',
7543
+ controller: IgzElasticLogTableRowController
7435
7544
  });
7436
- function IgzImportProjectDialogController($scope, $i18next, i18next, lodash) {
7437
- var ctrl = this;
7438
- var lng = i18next.language;
7439
- var checkedItem = 'singleFunction';
7440
- ctrl.option = [];
7441
- ctrl.optionList = [{
7442
- label: $i18next.t('common:APPLY_TO_ALL_FUNCTIONS_IN_THIS_PROJECT', {
7443
- lng: lng
7444
- }),
7445
- id: 'singleProject',
7446
- value: 'singleProject',
7447
- disabled: false,
7448
- visibility: true
7449
- }, {
7450
- label: $i18next.t('common:APPLY_TO_ALL_FUNCTIONS_IN_ALL_PROJECT', {
7451
- lng: lng
7452
- }),
7453
- id: 'allProjects',
7454
- value: 'allProjects',
7455
- disabled: false,
7456
- visibility: true
7457
- }];
7458
- ctrl.$onInit = onInit;
7459
- ctrl.onClose = onClose;
7460
- ctrl.onCheckboxChange = onCheckboxChange;
7461
-
7462
- //
7463
- // Hook methods
7464
- //
7465
-
7466
- /**
7467
- * Initialization method
7468
- */
7469
- function onInit() {
7470
- lodash.set(ctrl.optionList, '[1].visibility', ctrl.displayAllOptions);
7471
- }
7472
-
7473
- //
7474
- // Public methods
7475
- //
7476
-
7477
- /**
7478
- * Handles checking/un-checking checkbox
7479
- */
7480
- function onCheckboxChange() {
7481
- if (!lodash.isNil(ctrl.option)) {
7482
- if (lodash.includes(ctrl.option, 'allProjects')) {
7483
- lodash.set(ctrl.optionList, '[0].disabled', true);
7484
- if (ctrl.option.length === 1) {
7485
- ctrl.option.unshift('singleProject');
7486
- }
7487
- } else {
7488
- lodash.set(ctrl.optionList, '[0].disabled', false);
7489
- }
7490
- ctrl.optionList = angular.copy(ctrl.optionList);
7491
- ctrl.option = angular.copy(ctrl.option);
7492
- checkedItem = lodash.get(ctrl.option, [ctrl.option.length - 1]);
7493
- } else {
7494
- checkedItem = 'singleFunction';
7495
- }
7496
- }
7497
-
7498
- /**
7499
- * Closes dialog
7500
- * @param {string} action
7501
- */
7502
- function onClose(action) {
7503
- ctrl.closeDialog({
7504
- action: action,
7505
- option: checkedItem
7506
- });
7507
- ctrl.option = [];
7508
- }
7509
- }
7510
- })();
7511
- "use strict";
7512
-
7513
- /*
7514
- Copyright 2018 Iguazio Systems Ltd.
7515
- Licensed under the Apache License, Version 2.0 (the "License") with
7516
- an addition restriction as set forth herein. You may not use this
7517
- file except in compliance with the License. You may obtain a copy of
7518
- the License at http://www.apache.org/licenses/LICENSE-2.0.
7519
- Unless required by applicable law or agreed to in writing, software
7520
- distributed under the License is distributed on an "AS IS" BASIS,
7521
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
7522
- implied. See the License for the specific language governing
7523
- permissions and limitations under the License.
7524
- In addition, you may not use the software for any purposes that are
7525
- illegal under applicable law, and the grant of the foregoing license
7526
- under the Apache 2.0 license is conditioned upon your compliance with
7527
- such restriction.
7528
- */
7529
- (function () {
7530
- 'use strict';
7531
-
7532
- IgzElasticLogTableRowController.$inject = ["lodash"];
7533
- angular.module('iguazio.dashboard-controls').component('igzElasticLogTableRow', {
7534
- bindings: {
7535
- entryItem: '<'
7536
- },
7537
- templateUrl: 'igz_controls/components/log-table-row/log-table-row.tpl.html',
7538
- controller: IgzElasticLogTableRowController
7539
- });
7540
- function IgzElasticLogTableRowController(lodash) {
7545
+ function IgzElasticLogTableRowController(lodash) {
7541
7546
  var ctrl = this;
7542
7547
  ctrl.getLogLevel = getLogLevel;
7543
7548
  ctrl.getLogName = getLogName;
@@ -8154,6 +8159,7 @@ such restriction.
8154
8159
  lodash.forEach(ctrl.optionList, function (option) {
8155
8160
  option.checked = ctrl.isAllItemsChecked;
8156
8161
  });
8162
+ updateViewValue();
8157
8163
  }
8158
8164
  }
8159
8165
 
@@ -10643,6 +10649,95 @@ such restriction.
10643
10649
  })();
10644
10650
  "use strict";
10645
10651
 
10652
+ /*
10653
+ Copyright 2018 Iguazio Systems Ltd.
10654
+ Licensed under the Apache License, Version 2.0 (the "License") with
10655
+ an addition restriction as set forth herein. You may not use this
10656
+ file except in compliance with the License. You may obtain a copy of
10657
+ the License at http://www.apache.org/licenses/LICENSE-2.0.
10658
+ Unless required by applicable law or agreed to in writing, software
10659
+ distributed under the License is distributed on an "AS IS" BASIS,
10660
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
10661
+ implied. See the License for the specific language governing
10662
+ permissions and limitations under the License.
10663
+ In addition, you may not use the software for any purposes that are
10664
+ illegal under applicable law, and the grant of the foregoing license
10665
+ under the Apache 2.0 license is conditioned upon your compliance with
10666
+ such restriction.
10667
+ */
10668
+ (function () {
10669
+ 'use strict';
10670
+
10671
+ IgzSplashScreenController.$inject = ["$scope", "$state", "$i18next", "i18next"];
10672
+ angular.module('iguazio.dashboard-controls').component('igzSplashScreen', {
10673
+ bindings: {
10674
+ isSplashShowed: '<'
10675
+ },
10676
+ templateUrl: 'igz_controls/components/splash-screen/splash-screen.tpl.html',
10677
+ controller: IgzSplashScreenController
10678
+ });
10679
+ function IgzSplashScreenController($scope, $state, $i18next, i18next) {
10680
+ var ctrl = this;
10681
+ var lng = i18next.language;
10682
+
10683
+ // public properties
10684
+ ctrl.isLoading = true;
10685
+ ctrl.isAlertShowing = false;
10686
+ ctrl.textToDisplay = $i18next.t('common:LOADING_CAPITALIZE_ELLIPSIS', {
10687
+ lng: lng
10688
+ });
10689
+ ctrl.$onInit = onInit;
10690
+
10691
+ // public methods
10692
+ ctrl.refreshPage = refreshPage;
10693
+
10694
+ //
10695
+ // Hook methods
10696
+ //
10697
+
10698
+ /**
10699
+ * Initialization method
10700
+ */
10701
+ function onInit() {
10702
+ $scope.$on('splash-screen_show-error', showError);
10703
+ }
10704
+
10705
+ //
10706
+ // Public methods
10707
+ //
10708
+
10709
+ /**
10710
+ * Sends broadcast to refresh browse page
10711
+ */
10712
+ function refreshPage() {
10713
+ ctrl.isLoading = true;
10714
+ ctrl.isAlertShowing = false;
10715
+ $state.reload();
10716
+ }
10717
+
10718
+ //
10719
+ // Private methods
10720
+ //
10721
+
10722
+ /**
10723
+ * Shows error text
10724
+ * @param {Object} event - native broadcast event
10725
+ * @param {string} data - broadcast data
10726
+ */
10727
+ function showError(event, data) {
10728
+ if (angular.isDefined(data.textToDisplay)) {
10729
+ ctrl.textToDisplay = data.textToDisplay;
10730
+ }
10731
+ if (angular.isDefined(data.alertText)) {
10732
+ ctrl.alertText = data.alertText;
10733
+ }
10734
+ ctrl.isLoading = false;
10735
+ ctrl.isAlertShowing = true;
10736
+ }
10737
+ }
10738
+ })();
10739
+ "use strict";
10740
+
10646
10741
  /*
10647
10742
  Copyright 2018 Iguazio Systems Ltd.
10648
10743
  Licensed under the Apache License, Version 2.0 (the "License") with
@@ -10816,38 +10911,59 @@ such restriction.
10816
10911
  (function () {
10817
10912
  'use strict';
10818
10913
 
10819
- IgzSplashScreenController.$inject = ["$scope", "$state", "$i18next", "i18next"];
10820
- angular.module('iguazio.dashboard-controls').component('igzSplashScreen', {
10914
+ /**
10915
+ * @name igzTextEdit
10916
+ * @description
10917
+ * Text edit component. This component is a text editor based on `Monaco code editor`
10918
+ * https://github.com/Microsoft/monaco-editor
10919
+ *
10920
+ * @param {string} content - main text content which can be edited.
10921
+ * @param {Object} closeDialog - callback on closing editor dialog.
10922
+ * @param {Object} closeButtonText - name of the bottom close/cancel button.
10923
+ * @param {string} label - name of the text file.
10924
+ * @param {string} language - language of the current content (`plain text`, `javascript` etc.).
10925
+ * Note: uses for updating node after submitting
10926
+ * @param {string} submitButtonText - name of the bottom submit/apply button.
10927
+ * @param {Object} submitData - callback on submitting data.
10928
+ */
10929
+ IgzTextPreviewController.$inject = ["$i18next", "$rootScope", "$scope", "$timeout", "i18next", "ngDialog", "lodash", "DialogsService"];
10930
+ angular.module('iguazio.dashboard-controls').component('igzTextEdit', {
10821
10931
  bindings: {
10822
- isSplashShowed: '<'
10932
+ content: '@',
10933
+ closeDialog: '&',
10934
+ closeButtonText: '@',
10935
+ ngDialogId: '@',
10936
+ label: '@',
10937
+ language: '@',
10938
+ submitButtonText: '@',
10939
+ submitData: '&'
10823
10940
  },
10824
- templateUrl: 'igz_controls/components/splash-screen/splash-screen.tpl.html',
10825
- controller: IgzSplashScreenController
10941
+ templateUrl: 'igz_controls/components/text-edit/text-edit.tpl.html',
10942
+ controller: IgzTextPreviewController
10826
10943
  });
10827
- function IgzSplashScreenController($scope, $state, $i18next, i18next) {
10944
+ function IgzTextPreviewController($i18next, $rootScope, $scope, $timeout, i18next, ngDialog, lodash, DialogsService) {
10828
10945
  var ctrl = this;
10829
10946
  var lng = i18next.language;
10830
-
10831
- // public properties
10832
- ctrl.isLoading = true;
10833
- ctrl.isAlertShowing = false;
10834
- ctrl.textToDisplay = $i18next.t('common:LOADING_CAPITALIZE_ELLIPSIS', {
10835
- lng: lng
10836
- });
10947
+ var contentCopy = '';
10948
+ ctrl.enableWordWrap = false;
10949
+ ctrl.fileChanged = false;
10950
+ ctrl.isLoadingState = false;
10951
+ ctrl.serverError = '';
10837
10952
  ctrl.$onInit = onInit;
10838
-
10839
- // public methods
10840
- ctrl.refreshPage = refreshPage;
10953
+ ctrl.onChangeText = onChangeText;
10954
+ ctrl.onClose = onClose;
10955
+ ctrl.onSubmit = onSubmit;
10841
10956
 
10842
10957
  //
10843
- // Hook methods
10958
+ // Hook method
10844
10959
  //
10845
10960
 
10846
10961
  /**
10847
- * Initialization method
10962
+ * Init method
10848
10963
  */
10849
10964
  function onInit() {
10850
- $scope.$on('splash-screen_show-error', showError);
10965
+ contentCopy = angular.copy(ctrl.content);
10966
+ $scope.$on('close-dialog-service_close-dialog', ctrl.onClose);
10851
10967
  }
10852
10968
 
10853
10969
  //
@@ -10855,118 +10971,8 @@ such restriction.
10855
10971
  //
10856
10972
 
10857
10973
  /**
10858
- * Sends broadcast to refresh browse page
10859
- */
10860
- function refreshPage() {
10861
- ctrl.isLoading = true;
10862
- ctrl.isAlertShowing = false;
10863
- $state.reload();
10864
- }
10865
-
10866
- //
10867
- // Private methods
10868
- //
10869
-
10870
- /**
10871
- * Shows error text
10872
- * @param {Object} event - native broadcast event
10873
- * @param {string} data - broadcast data
10874
- */
10875
- function showError(event, data) {
10876
- if (angular.isDefined(data.textToDisplay)) {
10877
- ctrl.textToDisplay = data.textToDisplay;
10878
- }
10879
- if (angular.isDefined(data.alertText)) {
10880
- ctrl.alertText = data.alertText;
10881
- }
10882
- ctrl.isLoading = false;
10883
- ctrl.isAlertShowing = true;
10884
- }
10885
- }
10886
- })();
10887
- "use strict";
10888
-
10889
- /*
10890
- Copyright 2018 Iguazio Systems Ltd.
10891
- Licensed under the Apache License, Version 2.0 (the "License") with
10892
- an addition restriction as set forth herein. You may not use this
10893
- file except in compliance with the License. You may obtain a copy of
10894
- the License at http://www.apache.org/licenses/LICENSE-2.0.
10895
- Unless required by applicable law or agreed to in writing, software
10896
- distributed under the License is distributed on an "AS IS" BASIS,
10897
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
10898
- implied. See the License for the specific language governing
10899
- permissions and limitations under the License.
10900
- In addition, you may not use the software for any purposes that are
10901
- illegal under applicable law, and the grant of the foregoing license
10902
- under the Apache 2.0 license is conditioned upon your compliance with
10903
- such restriction.
10904
- */
10905
- (function () {
10906
- 'use strict';
10907
-
10908
- /**
10909
- * @name igzTextEdit
10910
- * @description
10911
- * Text edit component. This component is a text editor based on `Monaco code editor`
10912
- * https://github.com/Microsoft/monaco-editor
10913
- *
10914
- * @param {string} content - main text content which can be edited.
10915
- * @param {Object} closeDialog - callback on closing editor dialog.
10916
- * @param {Object} closeButtonText - name of the bottom close/cancel button.
10917
- * @param {string} label - name of the text file.
10918
- * @param {string} language - language of the current content (`plain text`, `javascript` etc.).
10919
- * Note: uses for updating node after submitting
10920
- * @param {string} submitButtonText - name of the bottom submit/apply button.
10921
- * @param {Object} submitData - callback on submitting data.
10922
- */
10923
- IgzTextPreviewController.$inject = ["$i18next", "$rootScope", "$scope", "$timeout", "i18next", "ngDialog", "lodash", "DialogsService"];
10924
- angular.module('iguazio.dashboard-controls').component('igzTextEdit', {
10925
- bindings: {
10926
- content: '@',
10927
- closeDialog: '&',
10928
- closeButtonText: '@',
10929
- ngDialogId: '@',
10930
- label: '@',
10931
- language: '@',
10932
- submitButtonText: '@',
10933
- submitData: '&'
10934
- },
10935
- templateUrl: 'igz_controls/components/text-edit/text-edit.tpl.html',
10936
- controller: IgzTextPreviewController
10937
- });
10938
- function IgzTextPreviewController($i18next, $rootScope, $scope, $timeout, i18next, ngDialog, lodash, DialogsService) {
10939
- var ctrl = this;
10940
- var lng = i18next.language;
10941
- var contentCopy = '';
10942
- ctrl.enableWordWrap = false;
10943
- ctrl.fileChanged = false;
10944
- ctrl.isLoadingState = false;
10945
- ctrl.serverError = '';
10946
- ctrl.$onInit = onInit;
10947
- ctrl.onChangeText = onChangeText;
10948
- ctrl.onClose = onClose;
10949
- ctrl.onSubmit = onSubmit;
10950
-
10951
- //
10952
- // Hook method
10953
- //
10954
-
10955
- /**
10956
- * Init method
10957
- */
10958
- function onInit() {
10959
- contentCopy = angular.copy(ctrl.content);
10960
- $scope.$on('close-dialog-service_close-dialog', ctrl.onClose);
10961
- }
10962
-
10963
- //
10964
- // Public methods
10965
- //
10966
-
10967
- /**
10968
- * Sets file changed flag to true
10969
- * @param {string} sourceCode - changed file content
10974
+ * Sets file changed flag to true
10975
+ * @param {string} sourceCode - changed file content
10970
10976
  */
10971
10977
  function onChangeText(sourceCode) {
10972
10978
  var isFileChanged = !lodash.isEqual(contentCopy, sourceCode);
@@ -11043,114 +11049,6 @@ such restriction.
11043
11049
  })();
11044
11050
  "use strict";
11045
11051
 
11046
- /*
11047
- Copyright 2018 Iguazio Systems Ltd.
11048
- Licensed under the Apache License, Version 2.0 (the "License") with
11049
- an addition restriction as set forth herein. You may not use this
11050
- file except in compliance with the License. You may obtain a copy of
11051
- the License at http://www.apache.org/licenses/LICENSE-2.0.
11052
- Unless required by applicable law or agreed to in writing, software
11053
- distributed under the License is distributed on an "AS IS" BASIS,
11054
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
11055
- implied. See the License for the specific language governing
11056
- permissions and limitations under the License.
11057
- In addition, you may not use the software for any purposes that are
11058
- illegal under applicable law, and the grant of the foregoing license
11059
- under the Apache 2.0 license is conditioned upon your compliance with
11060
- such restriction.
11061
- */
11062
- (function () {
11063
- 'use strict';
11064
-
11065
- IgzToastStatusPanelController.$inject = ["$element", "$rootScope", "$timeout", "$transclude", "lodash"];
11066
- angular.module('iguazio.dashboard-controls').component('igzToastStatusPanel', {
11067
- bindings: {
11068
- onClose: '&?',
11069
- panelMessages: '<',
11070
- panelState: '<',
11071
- permanent: '<?'
11072
- },
11073
- templateUrl: 'igz_controls/components/toast-status-panel/toast-status-panel.tpl.html',
11074
- controller: IgzToastStatusPanelController,
11075
- transclude: true
11076
- });
11077
- function IgzToastStatusPanelController($element, $rootScope, $timeout, $transclude, lodash) {
11078
- var ctrl = this;
11079
- var statusIcons = {
11080
- 'succeeded': 'igz-icon-tick-round',
11081
- 'in-progress': 'igz-icon-properties',
11082
- 'failed': 'igz-icon-block'
11083
- };
11084
- ctrl.isToastPanelShown = false;
11085
- ctrl.isTranscludePassed = false;
11086
- ctrl.$onChanges = onChanges;
11087
- ctrl.closeToastPanel = closeToastPanel;
11088
- ctrl.getState = getState;
11089
- ctrl.getStateMessage = getStateMessage;
11090
-
11091
- // checks if transclude template was passed
11092
- $transclude(function (transclude) {
11093
- ctrl.isTranscludePassed = transclude.length > 0 && !(
11094
- // a single text node with whitespace only, meaning there is nothing important between the opening
11095
- // tag `<igz-toast-status-panel>` and the closing tag `</igz-toast-status-panel>`
11096
- transclude.length === 1 && transclude[0].nodeType === 3 && transclude.text().trim() === '');
11097
- });
11098
-
11099
- //
11100
- // Hook methods
11101
- //
11102
-
11103
- /**
11104
- * On changes method
11105
- * @param {Object} changes
11106
- */
11107
- function onChanges(changes) {
11108
- if (lodash.has(changes, 'panelState')) {
11109
- ctrl.isToastPanelShown = !lodash.isNil(changes.panelState.currentValue);
11110
- $element.find('.panel-status-icon').removeClass(lodash.get(statusIcons, changes.panelState.previousValue)).addClass(lodash.get(statusIcons, changes.panelState.currentValue));
11111
- $element.find('.toast-status-panel').removeClass(changes.panelState.previousValue).addClass(changes.panelState.currentValue);
11112
- $element.find('.panel-status').removeClass(changes.panelState.previousValue).addClass(changes.panelState.currentValue);
11113
- }
11114
- }
11115
-
11116
- //
11117
- // Public methods
11118
- //
11119
-
11120
- /**
11121
- * Shows/hides toast panel
11122
- */
11123
- function closeToastPanel() {
11124
- ctrl.isToastPanelShown = false;
11125
- ctrl.panelState = null;
11126
- if (lodash.isFunction(ctrl.onClose)) {
11127
- ctrl.onClose();
11128
- }
11129
- $timeout(function () {
11130
- $rootScope.$broadcast('igzWatchWindowResize::resize');
11131
- });
11132
- }
11133
-
11134
- /**
11135
- * Gets current state
11136
- * @returns {?string} (e.g. "in-progress", "succeeded", "failed")
11137
- */
11138
- function getState() {
11139
- return ctrl.panelState;
11140
- }
11141
-
11142
- /**
11143
- * Gets status message of given state
11144
- * @param {string} state (e.g. "in-progress", "succeeded", "failed")
11145
- * @returns {string}
11146
- */
11147
- function getStateMessage(state) {
11148
- return lodash.get(ctrl, ['panelMessages', state]);
11149
- }
11150
- }
11151
- })();
11152
- "use strict";
11153
-
11154
11052
  /*
11155
11053
  Copyright 2018 Iguazio Systems Ltd.
11156
11054
  Licensed under the Apache License, Version 2.0 (the "License") with
@@ -11707,27 +11605,135 @@ such restriction.
11707
11605
  (function () {
11708
11606
  'use strict';
11709
11607
 
11710
- IgzActionItemMore.$inject = ["$element", "$document", "$scope"];
11711
- angular.module('iguazio.dashboard-controls').component('igzActionItemMore', {
11608
+ IgzToastStatusPanelController.$inject = ["$element", "$rootScope", "$timeout", "$transclude", "lodash"];
11609
+ angular.module('iguazio.dashboard-controls').component('igzToastStatusPanel', {
11712
11610
  bindings: {
11713
- actions: '<?',
11714
- onFilesDropped: '<?'
11611
+ onClose: '&?',
11612
+ panelMessages: '<',
11613
+ panelState: '<',
11614
+ permanent: '<?'
11715
11615
  },
11716
- templateUrl: 'igz_controls/components/action-item/action-item-more/action-item-more.tpl.html',
11717
- controller: IgzActionItemMore,
11616
+ templateUrl: 'igz_controls/components/toast-status-panel/toast-status-panel.tpl.html',
11617
+ controller: IgzToastStatusPanelController,
11718
11618
  transclude: true
11719
11619
  });
11720
- function IgzActionItemMore($element, $document, $scope) {
11620
+ function IgzToastStatusPanelController($element, $rootScope, $timeout, $transclude, lodash) {
11721
11621
  var ctrl = this;
11722
- ctrl.isDropdownShown = false;
11723
- ctrl.toggleTemplate = toggleTemplate;
11622
+ var statusIcons = {
11623
+ 'succeeded': 'igz-icon-tick-round',
11624
+ 'in-progress': 'igz-icon-properties',
11625
+ 'failed': 'igz-icon-block'
11626
+ };
11627
+ ctrl.isToastPanelShown = false;
11628
+ ctrl.isTranscludePassed = false;
11629
+ ctrl.$onChanges = onChanges;
11630
+ ctrl.closeToastPanel = closeToastPanel;
11631
+ ctrl.getState = getState;
11632
+ ctrl.getStateMessage = getStateMessage;
11633
+
11634
+ // checks if transclude template was passed
11635
+ $transclude(function (transclude) {
11636
+ ctrl.isTranscludePassed = transclude.length > 0 && !(
11637
+ // a single text node with whitespace only, meaning there is nothing important between the opening
11638
+ // tag `<igz-toast-status-panel>` and the closing tag `</igz-toast-status-panel>`
11639
+ transclude.length === 1 && transclude[0].nodeType === 3 && transclude.text().trim() === '');
11640
+ });
11724
11641
 
11725
11642
  //
11726
- // Public methods
11643
+ // Hook methods
11727
11644
  //
11728
11645
 
11729
11646
  /**
11730
- * Shows/hides sub-template
11647
+ * On changes method
11648
+ * @param {Object} changes
11649
+ */
11650
+ function onChanges(changes) {
11651
+ if (lodash.has(changes, 'panelState')) {
11652
+ ctrl.isToastPanelShown = !lodash.isNil(changes.panelState.currentValue);
11653
+ $element.find('.panel-status-icon').removeClass(lodash.get(statusIcons, changes.panelState.previousValue)).addClass(lodash.get(statusIcons, changes.panelState.currentValue));
11654
+ $element.find('.toast-status-panel').removeClass(changes.panelState.previousValue).addClass(changes.panelState.currentValue);
11655
+ $element.find('.panel-status').removeClass(changes.panelState.previousValue).addClass(changes.panelState.currentValue);
11656
+ }
11657
+ }
11658
+
11659
+ //
11660
+ // Public methods
11661
+ //
11662
+
11663
+ /**
11664
+ * Shows/hides toast panel
11665
+ */
11666
+ function closeToastPanel() {
11667
+ ctrl.isToastPanelShown = false;
11668
+ ctrl.panelState = null;
11669
+ if (lodash.isFunction(ctrl.onClose)) {
11670
+ ctrl.onClose();
11671
+ }
11672
+ $timeout(function () {
11673
+ $rootScope.$broadcast('igzWatchWindowResize::resize');
11674
+ });
11675
+ }
11676
+
11677
+ /**
11678
+ * Gets current state
11679
+ * @returns {?string} (e.g. "in-progress", "succeeded", "failed")
11680
+ */
11681
+ function getState() {
11682
+ return ctrl.panelState;
11683
+ }
11684
+
11685
+ /**
11686
+ * Gets status message of given state
11687
+ * @param {string} state (e.g. "in-progress", "succeeded", "failed")
11688
+ * @returns {string}
11689
+ */
11690
+ function getStateMessage(state) {
11691
+ return lodash.get(ctrl, ['panelMessages', state]);
11692
+ }
11693
+ }
11694
+ })();
11695
+ "use strict";
11696
+
11697
+ /*
11698
+ Copyright 2018 Iguazio Systems Ltd.
11699
+ Licensed under the Apache License, Version 2.0 (the "License") with
11700
+ an addition restriction as set forth herein. You may not use this
11701
+ file except in compliance with the License. You may obtain a copy of
11702
+ the License at http://www.apache.org/licenses/LICENSE-2.0.
11703
+ Unless required by applicable law or agreed to in writing, software
11704
+ distributed under the License is distributed on an "AS IS" BASIS,
11705
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
11706
+ implied. See the License for the specific language governing
11707
+ permissions and limitations under the License.
11708
+ In addition, you may not use the software for any purposes that are
11709
+ illegal under applicable law, and the grant of the foregoing license
11710
+ under the Apache 2.0 license is conditioned upon your compliance with
11711
+ such restriction.
11712
+ */
11713
+ (function () {
11714
+ 'use strict';
11715
+
11716
+ IgzActionItemMore.$inject = ["$element", "$document", "$scope"];
11717
+ angular.module('iguazio.dashboard-controls').component('igzActionItemMore', {
11718
+ bindings: {
11719
+ actions: '<?',
11720
+ onFilesDropped: '<?'
11721
+ },
11722
+ templateUrl: 'igz_controls/components/action-item/action-item-more/action-item-more.tpl.html',
11723
+ controller: IgzActionItemMore,
11724
+ transclude: true
11725
+ });
11726
+ function IgzActionItemMore($element, $document, $scope) {
11727
+ var ctrl = this;
11728
+ ctrl.isDropdownShown = false;
11729
+ ctrl.toggleTemplate = toggleTemplate;
11730
+
11731
+ //
11732
+ // Public methods
11733
+ //
11734
+
11735
+ /**
11736
+ * Shows/hides sub-template
11731
11737
  */
11732
11738
  function toggleTemplate() {
11733
11739
  ctrl.isDropdownShown = !ctrl.isDropdownShown;
@@ -11884,6 +11890,135 @@ such restriction.
11884
11890
  })();
11885
11891
  "use strict";
11886
11892
 
11893
+ /*
11894
+ Copyright 2018 Iguazio Systems Ltd.
11895
+ Licensed under the Apache License, Version 2.0 (the "License") with
11896
+ an addition restriction as set forth herein. You may not use this
11897
+ file except in compliance with the License. You may obtain a copy of
11898
+ the License at http://www.apache.org/licenses/LICENSE-2.0.
11899
+ Unless required by applicable law or agreed to in writing, software
11900
+ distributed under the License is distributed on an "AS IS" BASIS,
11901
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
11902
+ implied. See the License for the specific language governing
11903
+ permissions and limitations under the License.
11904
+ In addition, you may not use the software for any purposes that are
11905
+ illegal under applicable law, and the grant of the foregoing license
11906
+ under the Apache 2.0 license is conditioned upon your compliance with
11907
+ such restriction.
11908
+ */
11909
+ (function () {
11910
+ 'use strict';
11911
+
11912
+ IgzInfoPageContentController.$inject = ["$scope", "$timeout", "$window", "$element"];
11913
+ angular.module('iguazio.dashboard-controls').component('igzInfoPageContent', {
11914
+ bindings: {
11915
+ scrolled: '<',
11916
+ watchId: '@?'
11917
+ },
11918
+ templateUrl: 'igz_controls/components/info-page/info-page-content/info-page-content.tpl.html',
11919
+ transclude: true,
11920
+ controller: IgzInfoPageContentController
11921
+ });
11922
+ function IgzInfoPageContentController($scope, $timeout, $window, $element) {
11923
+ var ctrl = this;
11924
+ ctrl.isFiltersShowed = false;
11925
+ ctrl.isInfoPaneShowed = false;
11926
+
11927
+ // Config for horizontal scrollbar on containers view
11928
+ ctrl.scrollConfigHorizontal = {
11929
+ axis: 'x',
11930
+ scrollInertia: 0
11931
+ };
11932
+ ctrl.$onInit = onInit;
11933
+ ctrl.$postLink = postLink;
11934
+
11935
+ //
11936
+ // Hook methods
11937
+ //
11938
+
11939
+ /**
11940
+ * Init method
11941
+ */
11942
+ function onInit() {
11943
+ var watchId = angular.isDefined(ctrl.watchId) ? '-' + ctrl.watchId : '';
11944
+ $scope.$on('info-page-upper-pane_toggle-start' + watchId, onUpperPaneToggleStart);
11945
+ $scope.$on('info-page-filters_toggle-start' + watchId, onFiltersPaneToggleStart);
11946
+ $scope.$on('info-page-pane_toggle-start' + watchId, onInfoPaneToggleStart);
11947
+ $scope.$on('info-page-pane_toggled', dispatchResize);
11948
+ }
11949
+
11950
+ /**
11951
+ * Post linking method
11952
+ */
11953
+ function postLink() {
11954
+ $timeout(function () {
11955
+ manageHorizontalScroll();
11956
+ $scope.$on('info-page-filters_toggled', manageHorizontalScroll);
11957
+ $scope.$on('info-page-pane_toggled', manageHorizontalScroll);
11958
+ $scope.$on('igzWatchWindowResize::resize', manageHorizontalScroll);
11959
+ });
11960
+ }
11961
+
11962
+ //
11963
+ // Private methods
11964
+ //
11965
+
11966
+ /**
11967
+ * Manages x-scrollbar behavior
11968
+ * Needed to get rid of accidental wrong content width calculations made by 'ng-scrollbars' library
11969
+ * We just control x-scrollbar with lib's native enable/disable methods
11970
+ */
11971
+ function manageHorizontalScroll() {
11972
+ var $scrollXContainer = $element.find('.igz-scrollable-container.horizontal').first();
11973
+ var contentWrapperWidth = $element.find('.igz-info-page-content-wrapper').first().width();
11974
+ var contentMinWidth = parseInt($element.find('.igz-info-page-content').css('min-width'));
11975
+ if ($scrollXContainer.length && contentWrapperWidth < (contentMinWidth || 946)) {
11976
+ $scrollXContainer.mCustomScrollbar('update');
11977
+ } else if ($scrollXContainer.length) {
11978
+ $scrollXContainer.mCustomScrollbar('disable', true);
11979
+ $element.find('.mCSB_container').first().width('100%');
11980
+ }
11981
+ }
11982
+
11983
+ /**
11984
+ * Upper pane toggle start $broadcast listener
11985
+ * @param {Object} e - broadcast event
11986
+ * @param {boolean} isShown - represents upper pane state
11987
+ */
11988
+ function onUpperPaneToggleStart(e, isShown) {
11989
+ ctrl.isUpperPaneShowed = isShown;
11990
+ }
11991
+
11992
+ /**
11993
+ * Filters pane toggle start $broadcast listener
11994
+ * @param {Object} e - broadcast event
11995
+ * @param {boolean} isShown - represents filters pane state
11996
+ */
11997
+ function onFiltersPaneToggleStart(e, isShown) {
11998
+ ctrl.isFiltersShowed = isShown;
11999
+ }
12000
+
12001
+ /**
12002
+ * Info pane toggle start $broadcast listener
12003
+ * @param {Object} e - broadcast event
12004
+ * @param {boolean} isShown - represents info pane state
12005
+ */
12006
+ function onInfoPaneToggleStart(e, isShown) {
12007
+ ctrl.isInfoPaneShowed = isShown;
12008
+ }
12009
+
12010
+ /**
12011
+ * Updates Ui-Layout library's containers size
12012
+ */
12013
+ function dispatchResize() {
12014
+ $timeout(function () {
12015
+ $window.dispatchEvent(new Event('resize'));
12016
+ }, 0);
12017
+ }
12018
+ }
12019
+ })();
12020
+ "use strict";
12021
+
11887
12022
  /*
11888
12023
  Copyright 2018 Iguazio Systems Ltd.
11889
12024
  Licensed under the Apache License, Version 2.0 (the "License") with
@@ -11906,6 +12041,7 @@ such restriction.
11906
12041
  IgzInfoPageFiltersController.$inject = ["$rootScope", "$scope", "$animate", "$element", "EventHelperService"];
11907
12042
  angular.module('iguazio.dashboard-controls').component('igzInfoPageFilters', {
11908
12043
  bindings: {
12044
+ applyIsDisabled: '<?',
11909
12045
  isDisabled: '<?',
11910
12046
  isFiltersShowed: '<',
11911
12047
  changeStateCallback: '&',
@@ -12117,149 +12253,20 @@ such restriction.
12117
12253
  (function () {
12118
12254
  'use strict';
12119
12255
 
12120
- IgzInfoPageContentController.$inject = ["$scope", "$timeout", "$window", "$element"];
12121
- angular.module('iguazio.dashboard-controls').component('igzInfoPageContent', {
12122
- bindings: {
12123
- scrolled: '<',
12124
- watchId: '@?'
12125
- },
12126
- templateUrl: 'igz_controls/components/info-page/info-page-content/info-page-content.tpl.html',
12127
- transclude: true,
12128
- controller: IgzInfoPageContentController
12129
- });
12130
- function IgzInfoPageContentController($scope, $timeout, $window, $element) {
12131
- var ctrl = this;
12132
- ctrl.isFiltersShowed = false;
12133
- ctrl.isInfoPaneShowed = false;
12134
-
12135
- // Config for horizontal scrollbar on containers view
12136
- ctrl.scrollConfigHorizontal = {
12137
- axis: 'x',
12138
- scrollInertia: 0
12256
+ /**
12257
+ * Extend white background to the bottom of the view port
12258
+ */
12259
+ igzExtendBackground.$inject = ["$timeout"];
12260
+ angular.module('iguazio.dashboard-controls').directive('igzExtendBackground', igzExtendBackground);
12261
+ function igzExtendBackground($timeout) {
12262
+ return {
12263
+ restrict: 'A',
12264
+ link: link
12139
12265
  };
12140
- ctrl.$onInit = onInit;
12141
- ctrl.$postLink = postLink;
12142
-
12143
- //
12144
- // Hook methods
12145
- //
12146
-
12147
- /**
12148
- * Init method
12149
- */
12150
- function onInit() {
12151
- var watchId = angular.isDefined(ctrl.watchId) ? '-' + ctrl.watchId : '';
12152
- $scope.$on('info-page-upper-pane_toggle-start' + watchId, onUpperPaneToggleStart);
12153
- $scope.$on('info-page-filters_toggle-start' + watchId, onFiltersPaneToggleStart);
12154
- $scope.$on('info-page-pane_toggle-start' + watchId, onInfoPaneToggleStart);
12155
- $scope.$on('info-page-pane_toggled', dispatchResize);
12156
- }
12157
-
12158
- /**
12159
- * Post linking method
12160
- */
12161
- function postLink() {
12162
- $timeout(function () {
12163
- manageHorizontalScroll();
12164
- $scope.$on('info-page-filters_toggled', manageHorizontalScroll);
12165
- $scope.$on('info-page-pane_toggled', manageHorizontalScroll);
12166
- $scope.$on('igzWatchWindowResize::resize', manageHorizontalScroll);
12167
- });
12168
- }
12169
-
12170
- //
12171
- // Private methods
12172
- //
12173
-
12174
- /**
12175
- * Manages x-scrollbar behavior
12176
- * Needed to get rid of accidental wrong content width calculations made by 'ng-scrollbars' library
12177
- * We just control x-scrollbar with lib's native enable/disable methods
12178
- */
12179
- function manageHorizontalScroll() {
12180
- var $scrollXContainer = $element.find('.igz-scrollable-container.horizontal').first();
12181
- var contentWrapperWidth = $element.find('.igz-info-page-content-wrapper').first().width();
12182
- var contentMinWidth = parseInt($element.find('.igz-info-page-content').css('min-width'));
12183
- if ($scrollXContainer.length && contentWrapperWidth < (contentMinWidth || 946)) {
12184
- $scrollXContainer.mCustomScrollbar('update');
12185
- } else if ($scrollXContainer.length) {
12186
- $scrollXContainer.mCustomScrollbar('disable', true);
12187
- $element.find('.mCSB_container').first().width('100%');
12188
- }
12189
- }
12190
-
12191
- /**
12192
- * Upper pane toggle start $broadcast listener
12193
- * @param {Object} e - broadcast event
12194
- * @param {boolean} isShown - represents upper pane state
12195
- */
12196
- function onUpperPaneToggleStart(e, isShown) {
12197
- ctrl.isUpperPaneShowed = isShown;
12198
- }
12199
-
12200
- /**
12201
- * Filters pane toggle start $broadcast listener
12202
- * @param {Object} e - broadcast event
12203
- * @param {boolean} isShown - represents filters pane state
12204
- */
12205
- function onFiltersPaneToggleStart(e, isShown) {
12206
- ctrl.isFiltersShowed = isShown;
12207
- }
12208
-
12209
- /**
12210
- * Info pane toggle start $broadcast listener
12211
- * @param {Object} e - broadcast event
12212
- * @param {boolean} isShown - represents info pane state
12213
- */
12214
- function onInfoPaneToggleStart(e, isShown) {
12215
- ctrl.isInfoPaneShowed = isShown;
12216
- }
12217
-
12218
- /**
12219
- * Updates Ui-Layout library's containers size
12220
- */
12221
- function dispatchResize() {
12222
- $timeout(function () {
12223
- $window.dispatchEvent(new Event('resize'));
12224
- }, 0);
12225
- }
12226
- }
12227
- })();
12228
- "use strict";
12229
-
12230
- /*
12231
- Copyright 2018 Iguazio Systems Ltd.
12232
- Licensed under the Apache License, Version 2.0 (the "License") with
12233
- an addition restriction as set forth herein. You may not use this
12234
- file except in compliance with the License. You may obtain a copy of
12235
- the License at http://www.apache.org/licenses/LICENSE-2.0.
12236
- Unless required by applicable law or agreed to in writing, software
12237
- distributed under the License is distributed on an "AS IS" BASIS,
12238
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12239
- implied. See the License for the specific language governing
12240
- permissions and limitations under the License.
12241
- In addition, you may not use the software for any purposes that are
12242
- illegal under applicable law, and the grant of the foregoing license
12243
- under the Apache 2.0 license is conditioned upon your compliance with
12244
- such restriction.
12245
- */
12246
- (function () {
12247
- 'use strict';
12248
-
12249
- /**
12250
- * Extend white background to the bottom of the view port
12251
- */
12252
- igzExtendBackground.$inject = ["$timeout"];
12253
- angular.module('iguazio.dashboard-controls').directive('igzExtendBackground', igzExtendBackground);
12254
- function igzExtendBackground($timeout) {
12255
- return {
12256
- restrict: 'A',
12257
- link: link
12258
- };
12259
- function link(scope, element, attrs) {
12260
- var timeout = 0;
12261
- var containerPath = 'body';
12262
- activate();
12266
+ function link(scope, element, attrs) {
12267
+ var timeout = 0;
12268
+ var containerPath = 'body';
12269
+ activate();
12263
12270
 
12264
12271
  //
12265
12272
  // Private methods
@@ -12469,6 +12476,94 @@ such restriction.
12469
12476
  })();
12470
12477
  "use strict";
12471
12478
 
12479
+ /*
12480
+ Copyright 2018 Iguazio Systems Ltd.
12481
+ Licensed under the Apache License, Version 2.0 (the "License") with
12482
+ an addition restriction as set forth herein. You may not use this
12483
+ file except in compliance with the License. You may obtain a copy of
12484
+ the License at http://www.apache.org/licenses/LICENSE-2.0.
12485
+ Unless required by applicable law or agreed to in writing, software
12486
+ distributed under the License is distributed on an "AS IS" BASIS,
12487
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12488
+ implied. See the License for the specific language governing
12489
+ permissions and limitations under the License.
12490
+ In addition, you may not use the software for any purposes that are
12491
+ illegal under applicable law, and the grant of the foregoing license
12492
+ under the Apache 2.0 license is conditioned upon your compliance with
12493
+ such restriction.
12494
+ */
12495
+ (function () {
12496
+ 'use strict';
12497
+
12498
+ NclTestEventsNavigationTabsController.$inject = ["$i18next", "i18next"];
12499
+ angular.module('iguazio.dashboard-controls').component('nclTestEventsNavigationTabs', {
12500
+ bindings: {
12501
+ activeTab: '<',
12502
+ tabItems: '<',
12503
+ selectedLogLevel: '<?',
12504
+ onChangeActiveTab: '&',
12505
+ onChangeLogLevel: '&?'
12506
+ },
12507
+ templateUrl: 'nuclio/functions/version/version-code/function-event-pane/test-events-navigation-tabs/test-events-navigation-tabs.tpl.html',
12508
+ controller: NclTestEventsNavigationTabsController
12509
+ });
12510
+ function NclTestEventsNavigationTabsController($i18next, i18next) {
12511
+ var ctrl = this;
12512
+ var lng = i18next.language;
12513
+ ctrl.logLevelValues = [{
12514
+ id: 'error',
12515
+ name: $i18next.t('common:ERROR', {
12516
+ lng: lng
12517
+ }),
12518
+ visible: true
12519
+ }, {
12520
+ id: 'warn',
12521
+ name: $i18next.t('common:WARNING', {
12522
+ lng: lng
12523
+ }),
12524
+ visible: true
12525
+ }, {
12526
+ id: 'info',
12527
+ name: $i18next.t('common:INFO', {
12528
+ lng: lng
12529
+ }),
12530
+ visible: true
12531
+ }, {
12532
+ id: 'debug',
12533
+ name: $i18next.t('common:DEBUG', {
12534
+ lng: lng
12535
+ }),
12536
+ visible: true
12537
+ }];
12538
+ ctrl.changeActiveTab = changeActiveTab;
12539
+ ctrl.isActiveTab = isActiveTab;
12540
+
12541
+ //
12542
+ // Public methods
12543
+ //
12544
+
12545
+ /**
12546
+ * Changes active nav tab
12547
+ * @param {Object} item - current status
12548
+ */
12549
+ function changeActiveTab(item) {
12550
+ ctrl.activeTab = item;
12551
+ ctrl.onChangeActiveTab({
12552
+ activeTab: item
12553
+ });
12554
+ }
12555
+
12556
+ /**
12557
+ * Checks if it is an active tab
12558
+ * @param {Object} item - current tab
12559
+ */
12560
+ function isActiveTab(item) {
12561
+ return ctrl.activeTab.id === item.id;
12562
+ }
12563
+ }
12564
+ })();
12565
+ "use strict";
12566
+
12472
12567
  /*
12473
12568
  Copyright 2018 Iguazio Systems Ltd.
12474
12569
  Licensed under the Apache License, Version 2.0 (the "License") with
@@ -12591,126 +12686,38 @@ such restriction.
12591
12686
  (function () {
12592
12687
  'use strict';
12593
12688
 
12594
- NclTestEventsNavigationTabsController.$inject = ["$i18next", "i18next"];
12595
- angular.module('iguazio.dashboard-controls').component('nclTestEventsNavigationTabs', {
12689
+ NclVersionConfigurationAnnotationsController.$inject = ["$element", "$i18next", "$rootScope", "$timeout", "i18next", "lodash", "FormValidationService", "PreventDropdownCutOffService", "ValidationService"];
12690
+ angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationAnnotations', {
12596
12691
  bindings: {
12597
- activeTab: '<',
12598
- tabItems: '<',
12599
- selectedLogLevel: '<?',
12600
- onChangeActiveTab: '&',
12601
- onChangeLogLevel: '&?'
12692
+ version: '<',
12693
+ onChangeCallback: '<',
12694
+ isFunctionDeploying: '&'
12602
12695
  },
12603
- templateUrl: 'nuclio/functions/version/version-code/function-event-pane/test-events-navigation-tabs/test-events-navigation-tabs.tpl.html',
12604
- controller: NclTestEventsNavigationTabsController
12696
+ templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-annotations/version-configuration-annotations.tpl.html',
12697
+ controller: NclVersionConfigurationAnnotationsController
12605
12698
  });
12606
- function NclTestEventsNavigationTabsController($i18next, i18next) {
12699
+ function NclVersionConfigurationAnnotationsController($element, $i18next, $rootScope, $timeout, i18next, lodash, FormValidationService, PreventDropdownCutOffService, ValidationService) {
12607
12700
  var ctrl = this;
12608
12701
  var lng = i18next.language;
12609
- ctrl.logLevelValues = [{
12610
- id: 'error',
12611
- name: $i18next.t('common:ERROR', {
12612
- lng: lng
12613
- }),
12614
- visible: true
12615
- }, {
12616
- id: 'warn',
12617
- name: $i18next.t('common:WARNING', {
12618
- lng: lng
12619
- }),
12620
- visible: true
12621
- }, {
12622
- id: 'info',
12623
- name: $i18next.t('common:INFO', {
12624
- lng: lng
12625
- }),
12626
- visible: true
12627
- }, {
12628
- id: 'debug',
12629
- name: $i18next.t('common:DEBUG', {
12630
- lng: lng
12631
- }),
12632
- visible: true
12633
- }];
12634
- ctrl.changeActiveTab = changeActiveTab;
12635
- ctrl.isActiveTab = isActiveTab;
12636
-
12637
- //
12638
- // Public methods
12639
- //
12640
-
12641
- /**
12642
- * Changes active nav tab
12643
- * @param {Object} item - current status
12644
- */
12645
- function changeActiveTab(item) {
12646
- ctrl.activeTab = item;
12647
- ctrl.onChangeActiveTab({
12648
- activeTab: item
12649
- });
12650
- }
12651
-
12652
- /**
12653
- * Checks if it is an active tab
12654
- * @param {Object} item - current tab
12655
- */
12656
- function isActiveTab(item) {
12657
- return ctrl.activeTab.id === item.id;
12658
- }
12659
- }
12660
- })();
12661
- "use strict";
12662
-
12663
- /*
12664
- Copyright 2018 Iguazio Systems Ltd.
12665
- Licensed under the Apache License, Version 2.0 (the "License") with
12666
- an addition restriction as set forth herein. You may not use this
12667
- file except in compliance with the License. You may obtain a copy of
12668
- the License at http://www.apache.org/licenses/LICENSE-2.0.
12669
- Unless required by applicable law or agreed to in writing, software
12670
- distributed under the License is distributed on an "AS IS" BASIS,
12671
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12672
- implied. See the License for the specific language governing
12673
- permissions and limitations under the License.
12674
- In addition, you may not use the software for any purposes that are
12675
- illegal under applicable law, and the grant of the foregoing license
12676
- under the Apache 2.0 license is conditioned upon your compliance with
12677
- such restriction.
12678
- */
12679
- (function () {
12680
- 'use strict';
12681
-
12682
- NclVersionConfigurationAnnotationsController.$inject = ["$element", "$i18next", "$rootScope", "$timeout", "i18next", "lodash", "FormValidationService", "PreventDropdownCutOffService", "ValidationService"];
12683
- angular.module('iguazio.dashboard-controls').component('nclVersionConfigurationAnnotations', {
12684
- bindings: {
12685
- version: '<',
12686
- onChangeCallback: '<',
12687
- isFunctionDeploying: '&'
12688
- },
12689
- templateUrl: 'nuclio/functions/version/version-configuration/tabs/version-configuration-annotations/version-configuration-annotations.tpl.html',
12690
- controller: NclVersionConfigurationAnnotationsController
12691
- });
12692
- function NclVersionConfigurationAnnotationsController($element, $i18next, $rootScope, $timeout, i18next, lodash, FormValidationService, PreventDropdownCutOffService, ValidationService) {
12693
- var ctrl = this;
12694
- var lng = i18next.language;
12695
- ctrl.annotationsForm = null;
12696
- ctrl.igzScrollConfig = {
12697
- maxElementsCount: 10,
12698
- childrenSelector: '.table-body'
12699
- };
12700
- ctrl.scrollConfig = {
12701
- axis: 'y',
12702
- advanced: {
12703
- updateOnContentResize: true
12704
- }
12705
- };
12706
- ctrl.tooltip = '<a class="link" target="_blank" ' + 'href="https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/">' + $i18next.t('functions:TOOLTIP.ANNOTATIONS.HEAD', {
12707
- lng: lng
12708
- }) + '</a> ' + $i18next.t('functions:TOOLTIP.ANNOTATIONS.REST', {
12709
- lng: lng
12710
- });
12711
- ctrl.keyTooltip = $i18next.t('functions:TOOLTIP.PREFIXED_NAME', {
12712
- lng: lng,
12713
- name: $i18next.t('functions:TOOLTIP.ANNOTATION', {
12702
+ ctrl.annotationsForm = null;
12703
+ ctrl.igzScrollConfig = {
12704
+ maxElementsCount: 10,
12705
+ childrenSelector: '.table-body'
12706
+ };
12707
+ ctrl.scrollConfig = {
12708
+ axis: 'y',
12709
+ advanced: {
12710
+ updateOnContentResize: true
12711
+ }
12712
+ };
12713
+ ctrl.tooltip = '<a class="link" target="_blank" ' + 'href="https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/">' + $i18next.t('functions:TOOLTIP.ANNOTATIONS.HEAD', {
12714
+ lng: lng
12715
+ }) + '</a> ' + $i18next.t('functions:TOOLTIP.ANNOTATIONS.REST', {
12716
+ lng: lng
12717
+ });
12718
+ ctrl.keyTooltip = $i18next.t('functions:TOOLTIP.PREFIXED_NAME', {
12719
+ lng: lng,
12720
+ name: $i18next.t('functions:TOOLTIP.ANNOTATION', {
12714
12721
  lng: lng
12715
12722
  })
12716
12723
  });
@@ -18362,66 +18369,324 @@ such restriction.
18362
18369
  },
18363
18370
  percentage: 0
18364
18371
  };
18365
- ctrl.apiGateway.spec.upstreams.push(ctrl.primaryUpstream);
18366
- }
18367
- if (!ctrl.editWizard) {
18368
- ApiGatewaysService.buildIngressHost(ctrl.apiGateway, ctrl.project);
18369
- }
18370
- ctrl.apiGatewayCopy = angular.copy(ctrl.apiGateway);
18371
- initActions();
18372
- }
18373
-
18374
- /**
18375
- * Populates the function list by fetching it from backend.
18376
- * If fetch fails, shows a message to the user about the failure and retries fetch until successful.
18377
- */
18378
- function populateFunctionList() {
18379
- ctrl.getFunctions({
18380
- projectName: ctrl.project.metadata.name,
18381
- enrichApiGateways: true
18382
- }).then(function (data) {
18383
- functionsList = data;
18384
- ctrl.functionFetchPanel.state = null; // hide toast panel
18385
- })["catch"](function () {
18386
- ctrl.functionFetchPanel.state = 'failed'; // show toast panel with failure style
18387
- $timeout(populateFunctionList, FUNCTION_LIST_FETCH_POLL_DELAY);
18388
- });
18389
- }
18390
-
18391
- /**
18392
- * Promotes canary function to primary and removes old primary function
18393
- */
18394
- function promoteCanaryFunction() {
18395
- DialogsService.confirm($i18next.t('functions:PROMOTE_CANARY_CONFIRM', {
18396
- lng: lng
18397
- }), $i18next.t('functions:PROMOTE', {
18398
- lng: lng
18399
- })).then(function () {
18400
- lodash.set(ctrl.canaryUpstream, 'percentage', 0);
18401
- ctrl.primaryUpstream = ctrl.canaryUpstream;
18402
- ctrl.canaryUpstream = null;
18403
- lodash.set(ctrl.apiGateway, 'spec.upstreams', [ctrl.primaryUpstream]);
18404
- $rootScope.$broadcast('wizard_changes-have-been-made', isChangesHaveBeenMade());
18372
+ ctrl.apiGateway.spec.upstreams.push(ctrl.primaryUpstream);
18373
+ }
18374
+ if (!ctrl.editWizard) {
18375
+ ApiGatewaysService.buildIngressHost(ctrl.apiGateway, ctrl.project);
18376
+ }
18377
+ ctrl.apiGatewayCopy = angular.copy(ctrl.apiGateway);
18378
+ initActions();
18379
+ }
18380
+
18381
+ /**
18382
+ * Populates the function list by fetching it from backend.
18383
+ * If fetch fails, shows a message to the user about the failure and retries fetch until successful.
18384
+ */
18385
+ function populateFunctionList() {
18386
+ ctrl.getFunctions({
18387
+ projectName: ctrl.project.metadata.name,
18388
+ enrichApiGateways: true
18389
+ }).then(function (data) {
18390
+ functionsList = data;
18391
+ ctrl.functionFetchPanel.state = null; // hide toast panel
18392
+ })["catch"](function () {
18393
+ ctrl.functionFetchPanel.state = 'failed'; // show toast panel with failure style
18394
+ $timeout(populateFunctionList, FUNCTION_LIST_FETCH_POLL_DELAY);
18395
+ });
18396
+ }
18397
+
18398
+ /**
18399
+ * Promotes canary function to primary and removes old primary function
18400
+ */
18401
+ function promoteCanaryFunction() {
18402
+ DialogsService.confirm($i18next.t('functions:PROMOTE_CANARY_CONFIRM', {
18403
+ lng: lng
18404
+ }), $i18next.t('functions:PROMOTE', {
18405
+ lng: lng
18406
+ })).then(function () {
18407
+ lodash.set(ctrl.canaryUpstream, 'percentage', 0);
18408
+ ctrl.primaryUpstream = ctrl.canaryUpstream;
18409
+ ctrl.canaryUpstream = null;
18410
+ lodash.set(ctrl.apiGateway, 'spec.upstreams', [ctrl.primaryUpstream]);
18411
+ $rootScope.$broadcast('wizard_changes-have-been-made', isChangesHaveBeenMade());
18412
+ });
18413
+ }
18414
+
18415
+ /**
18416
+ * Removes a canary function
18417
+ */
18418
+ function removeCanaryFunction() {
18419
+ ctrl.canaryUpstream = null;
18420
+ lodash.set(ctrl.apiGateway, 'spec.upstreams', [ctrl.primaryUpstream]);
18421
+ $rootScope.$broadcast('wizard_changes-have-been-made', isChangesHaveBeenMade());
18422
+ }
18423
+
18424
+ /**
18425
+ * Updates function name
18426
+ * @param functionName {string} - the new data
18427
+ * @param upstream {string} - the name of the input
18428
+ */
18429
+ function updateUpstreamFunctionName(functionName, upstream) {
18430
+ lodash.set(upstream, 'nucliofunction.name', functionName);
18431
+ $rootScope.$broadcast('wizard_changes-have-been-made', isChangesHaveBeenMade());
18432
+ }
18433
+ }
18434
+ })();
18435
+ "use strict";
18436
+
18437
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
18438
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18439
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
18440
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18441
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
18442
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18443
+ /*
18444
+ Copyright 2018 Iguazio Systems Ltd.
18445
+ Licensed under the Apache License, Version 2.0 (the "License") with
18446
+ an addition restriction as set forth herein. You may not use this
18447
+ file except in compliance with the License. You may obtain a copy of
18448
+ the License at http://www.apache.org/licenses/LICENSE-2.0.
18449
+ Unless required by applicable law or agreed to in writing, software
18450
+ distributed under the License is distributed on an "AS IS" BASIS,
18451
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
18452
+ implied. See the License for the specific language governing
18453
+ permissions and limitations under the License.
18454
+ In addition, you may not use the software for any purposes that are
18455
+ illegal under applicable law, and the grant of the foregoing license
18456
+ under the Apache 2.0 license is conditioned upon your compliance with
18457
+ such restriction.
18458
+ */
18459
+ /*eslint complexity: ["error", 15]*/
18460
+ (function () {
18461
+ 'use strict';
18462
+
18463
+ DuplicateFunctionDialogController.$inject = ["$state", "$i18next", "i18next", "lodash", "DialogsService", "EventHelperService", "ValidationService"];
18464
+ angular.module('iguazio.dashboard-controls').component('nclDuplicateFunctionDialog', {
18465
+ bindings: {
18466
+ closeDialog: '&',
18467
+ getFunction: '&',
18468
+ project: '<',
18469
+ version: '<'
18470
+ },
18471
+ templateUrl: 'nuclio/functions/duplicate-function-dialog/duplicate-function-dialog.tpl.html',
18472
+ controller: DuplicateFunctionDialogController
18473
+ });
18474
+ function DuplicateFunctionDialogController($state, $i18next, i18next, lodash, DialogsService, EventHelperService, ValidationService) {
18475
+ var ctrl = this;
18476
+ var lng = i18next.language;
18477
+ ctrl.duplicateFunctionForm = {};
18478
+ ctrl.duplicateInputFieldsData = [];
18479
+ ctrl.inputModelOptions = {
18480
+ debounce: {
18481
+ 'default': 0
18482
+ }
18483
+ };
18484
+ ctrl.maxLengths = {
18485
+ functionName: ValidationService.getMaxLength('function.name')
18486
+ };
18487
+ ctrl.nameTakenError = false;
18488
+ ctrl.secretFieldsData = {};
18489
+ ctrl.validationRules = {
18490
+ functionName: ValidationService.getValidationRules('function.name')
18491
+ };
18492
+ ctrl.$onInit = onInit;
18493
+ ctrl.duplicateFunction = duplicateFunction;
18494
+ ctrl.inputValueCallback = inputValueCallback;
18495
+ ctrl.onClose = onClose;
18496
+
18497
+ //
18498
+ // Hook methods
18499
+ //
18500
+
18501
+ /**
18502
+ * Initialization method
18503
+ */
18504
+ function onInit() {
18505
+ generateDuplicateInputFieldsData();
18506
+ }
18507
+
18508
+ //
18509
+ // Public methods
18510
+ //
18511
+
18512
+ /**
18513
+ * Duplicates selected function with a new name
18514
+ * @param {Object} event
18515
+ */
18516
+ function duplicateFunction(event) {
18517
+ if (angular.isUndefined(event) || event.keyCode === EventHelperService.ENTER) {
18518
+ ctrl.nameTakenError = false;
18519
+ ctrl.duplicateFunctionForm.$setSubmitted();
18520
+ if (ctrl.duplicateFunctionForm.$valid) {
18521
+ var newFunction = lodash.pick(ctrl.version, 'spec');
18522
+ var projectId = lodash.get(ctrl.project, 'metadata.name');
18523
+ lodash.forEach(ctrl.secretFieldsData, function (value, path) {
18524
+ if (path === 'name') {
18525
+ lodash.set(newFunction, 'metadata.name', value);
18526
+ } else {
18527
+ lodash.set(newFunction, path, value);
18528
+ }
18529
+ });
18530
+ ctrl.getFunction({
18531
+ metadata: {
18532
+ name: ctrl.secretFieldsData.name
18533
+ }
18534
+ }).then(function () {
18535
+ DialogsService.alert($i18next.t('functions:ERROR_MSG.FUNCTION_NAME_ALREADY_IN_USE', {
18536
+ lng: lng
18537
+ }));
18538
+ })["catch"](function (error) {
18539
+ if (error.status === 404) {
18540
+ ctrl.closeDialog();
18541
+ $state.go('app.project.function.edit.code', {
18542
+ isNewFunction: true,
18543
+ id: ctrl.project.metadata.name,
18544
+ functionId: newFunction.metadata.name,
18545
+ projectId: projectId,
18546
+ projectNamespace: ctrl.project.metadata.namespace,
18547
+ functionData: newFunction
18548
+ });
18549
+ }
18550
+ });
18551
+ }
18552
+ }
18553
+ }
18554
+
18555
+ /**
18556
+ * Sets new data from input field
18557
+ * @param {string} newData - new string value which should be set
18558
+ * @param {string} field
18559
+ */
18560
+ function inputValueCallback(newData, field) {
18561
+ ctrl.secretFieldsData[field] = newData;
18562
+ }
18563
+
18564
+ /**
18565
+ * Closes dialog
18566
+ * @param {Event} [event]
18567
+ */
18568
+ function onClose(event) {
18569
+ if (angular.isUndefined(event) || event.keyCode === EventHelperService.ENTER) {
18570
+ ctrl.closeDialog();
18571
+ }
18572
+ }
18573
+
18574
+ //
18575
+ // Private methods
18576
+ //
18577
+
18578
+ /**
18579
+ * Generates the data to display new input fields
18580
+ */
18581
+ function generateDuplicateInputFieldsData() {
18582
+ ctrl.duplicateInputFieldsData = lodash.map(findFunctionSecrets(), function (elem) {
18583
+ var message = '';
18584
+ var moreInfoData = '';
18585
+ if (elem.key === 'password') {
18586
+ if (elem.path.includes('spec.triggers')) {
18587
+ // Trigger with type MQTT\V3IO, Access key field
18588
+ message = $i18next.t('functions:TRIGGER_ACCESS_KEY', {
18589
+ lng: lng,
18590
+ triggerName: elem.path.split('.')[2]
18591
+ });
18592
+ } else if (elem.path.includes('spec.build')) {
18593
+ // Code Entry Type: Git, Token field
18594
+ message = $i18next.t('functions:CODE_ENTRY_TYPE_PASSWORD', {
18595
+ lng: lng,
18596
+ codeEntryType: lodash.get(ctrl.version, 'spec.build.codeEntryType', '')
18597
+ });
18598
+ }
18599
+ } else if (elem.key === 'accessKeyID') {
18600
+ // Trigger with type Kinesis, Access key ID field
18601
+ message = $i18next.t('functions:TRIGGER_ACCESS_KEY_ID', {
18602
+ lng: lng,
18603
+ triggerName: elem.path.split('.')[2]
18604
+ });
18605
+ } else if (elem.key === 'secretAccessKey') {
18606
+ // Trigger with type Kinesis, Secret Access key field
18607
+ message = $i18next.t('functions:TRIGGER_SECRET_ACCESS_KEY', {
18608
+ lng: lng,
18609
+ triggerName: elem.path.split('.')[2]
18610
+ });
18611
+ } else if (elem.key === 'accessKey') {
18612
+ // Volume with type V3IO, Access key field
18613
+ var volumeName = lodash.get(ctrl.version, elem.path.split('.').slice(0, 3).join('.') + '.volume.name', '');
18614
+ moreInfoData = $i18next.t('functions:ACCESS_KEY_DESCRIPTION');
18615
+ message = $i18next.t('functions:VOLUME_ACCESS_KEY', {
18616
+ lng: lng,
18617
+ volumeName: volumeName
18618
+ });
18619
+ } else if (elem.key === 's3SecretAccessKey') {
18620
+ // Code Entry Type: s3, Session access key field
18621
+ moreInfoData = $i18next.t('functions:TOOLTIP.S3.SECRET_ACCESS_KEY');
18622
+ message = $i18next.t('functions:CODE_ENTRY_TYPE_KEY', {
18623
+ lng: lng,
18624
+ codeEntryType: lodash.get(ctrl.version, 'spec.build.codeEntryType', '')
18625
+ });
18626
+ } else if (elem.key === 's3SessionToken') {
18627
+ // Code Entry Type: s3, Session token field
18628
+ moreInfoData = $i18next.t('functions:TOOLTIP.S3.SESSION_TOKEN');
18629
+ message = $i18next.t('functions:CODE_ENTRY_TYPE_TOKEN', {
18630
+ lng: lng,
18631
+ codeEntryType: lodash.get(ctrl.version, 'spec.build.codeEntryType', '')
18632
+ });
18633
+ } else if (elem.key === 'Authorization') {
18634
+ // Code Entry Type: GitHub, Token field
18635
+ moreInfoData = $i18next.t('functions:TOOLTIP.GITHUB.TOKEN');
18636
+ message = $i18next.t('functions:CODE_ENTRY_TYPE_TOKEN', {
18637
+ lng: lng,
18638
+ codeEntryType: lodash.get(ctrl.version, 'spec.build.codeEntryType', '')
18639
+ });
18640
+ } else if (elem.key === 'X-V3io-Session-Key') {
18641
+ // Code Entry Type: Archive, Access key field
18642
+ moreInfoData = $i18next.t('functions:functions:TOOLTIP.V3IO_ACCESS_KEY');
18643
+ message = $i18next.t('functions:CODE_ENTRY_ACCESS_KEY', {
18644
+ lng: lng,
18645
+ codeEntryType: lodash.get(ctrl.version, 'spec.build.codeEntryType', '')
18646
+ });
18647
+ }
18648
+ return {
18649
+ moreInfoData: moreInfoData,
18650
+ title: message || lodash.startCase(elem.key),
18651
+ key: elem.key,
18652
+ path: elem.path
18653
+ };
18405
18654
  });
18406
18655
  }
18407
18656
 
18408
18657
  /**
18409
- * Removes a canary function
18410
- */
18411
- function removeCanaryFunction() {
18412
- ctrl.canaryUpstream = null;
18413
- lodash.set(ctrl.apiGateway, 'spec.upstreams', [ctrl.primaryUpstream]);
18414
- $rootScope.$broadcast('wizard_changes-have-been-made', isChangesHaveBeenMade());
18415
- }
18416
-
18417
- /**
18418
- * Updates function name
18419
- * @param functionName {string} - the new data
18420
- * @param upstream {string} - the name of the input
18658
+ * Generates the list of fields in which the value starts with "$ref"
18659
+ * @returns {Array.<Object>}
18421
18660
  */
18422
- function updateUpstreamFunctionName(functionName, upstream) {
18423
- lodash.set(upstream, 'nucliofunction.name', functionName);
18424
- $rootScope.$broadcast('wizard_changes-have-been-made', isChangesHaveBeenMade());
18661
+ function findFunctionSecrets() {
18662
+ var secretsArray = [];
18663
+ iterateObject(ctrl.version.spec, 'spec');
18664
+ return secretsArray;
18665
+ function iterateObject(obj, prevPath) {
18666
+ var _loop = function _loop() {
18667
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
18668
+ key = _Object$entries$_i[0],
18669
+ value = _Object$entries$_i[1];
18670
+ if (lodash.isArray(value)) {
18671
+ lodash.forEach(value, function (elem, index) {
18672
+ var path = prevPath + '.' + key + '.[' + index + ']';
18673
+ iterateObject(elem, path);
18674
+ });
18675
+ } else if (lodash.isObject(value)) {
18676
+ path = prevPath + '.' + key;
18677
+ iterateObject(value, path);
18678
+ } else if (lodash.isString(value) && value.includes('$ref')) {
18679
+ secretsArray.push({
18680
+ path: prevPath + '.' + key,
18681
+ key: key
18682
+ });
18683
+ }
18684
+ },
18685
+ path;
18686
+ for (var _i = 0, _Object$entries = Object.entries(obj); _i < _Object$entries.length; _i++) {
18687
+ _loop();
18688
+ }
18689
+ }
18425
18690
  }
18426
18691
  }
18427
18692
  })();
@@ -18990,179 +19255,22 @@ such restriction.
18990
19255
  DeployDeletedFunctionDialogController.$inject = ["$state", "$rootScope", "EventHelperService"];
18991
19256
  angular.module('iguazio.dashboard-controls').component('nclDeployDeletedFunctionDialog', {
18992
19257
  bindings: {
18993
- closeDialog: '&',
18994
- deploy: '&',
18995
- version: '<'
18996
- },
18997
- templateUrl: 'nuclio/functions/deploy-deleted-function-dialog/deploy-deleted-function-dialog.tpl.html',
18998
- controller: DeployDeletedFunctionDialogController
18999
- });
19000
- function DeployDeletedFunctionDialogController($state, $rootScope, EventHelperService) {
19001
- var ctrl = this;
19002
- ctrl.deployFunction = deployFunction;
19003
- ctrl.goToFunctions = goToFunctions;
19004
- ctrl.onClose = onClose;
19005
-
19006
- //
19007
- // Public methods
19008
- //
19009
-
19010
- /**
19011
- * Closes dialog
19012
- * @param {Event} [event]
19013
- */
19014
- function onClose(event) {
19015
- if (angular.isUndefined(event) || event.keyCode === EventHelperService.ENTER) {
19016
- ctrl.closeDialog();
19017
- }
19018
- }
19019
-
19020
- /**
19021
- * Redirect to functions panel
19022
- */
19023
- function goToFunctions() {
19024
- $state.go('app.project.functions');
19025
- ctrl.closeDialog();
19026
- }
19027
-
19028
- /**
19029
- * Deploy function
19030
- * @param {Event} [event]
19031
- */
19032
- function deployFunction(event) {
19033
- ctrl.deploy(event, ctrl.version);
19034
- ctrl.closeDialog();
19035
- }
19036
- }
19037
- })();
19038
- "use strict";
19039
-
19040
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
19041
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19042
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19043
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
19044
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
19045
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19046
- /*
19047
- Copyright 2018 Iguazio Systems Ltd.
19048
- Licensed under the Apache License, Version 2.0 (the "License") with
19049
- an addition restriction as set forth herein. You may not use this
19050
- file except in compliance with the License. You may obtain a copy of
19051
- the License at http://www.apache.org/licenses/LICENSE-2.0.
19052
- Unless required by applicable law or agreed to in writing, software
19053
- distributed under the License is distributed on an "AS IS" BASIS,
19054
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
19055
- implied. See the License for the specific language governing
19056
- permissions and limitations under the License.
19057
- In addition, you may not use the software for any purposes that are
19058
- illegal under applicable law, and the grant of the foregoing license
19059
- under the Apache 2.0 license is conditioned upon your compliance with
19060
- such restriction.
19061
- */
19062
- /*eslint complexity: ["error", 15]*/
19063
- (function () {
19064
- 'use strict';
19065
-
19066
- DuplicateFunctionDialogController.$inject = ["$state", "$i18next", "i18next", "lodash", "DialogsService", "EventHelperService", "ValidationService"];
19067
- angular.module('iguazio.dashboard-controls').component('nclDuplicateFunctionDialog', {
19068
- bindings: {
19069
- closeDialog: '&',
19070
- getFunction: '&',
19071
- project: '<',
19072
- version: '<'
19073
- },
19074
- templateUrl: 'nuclio/functions/duplicate-function-dialog/duplicate-function-dialog.tpl.html',
19075
- controller: DuplicateFunctionDialogController
19076
- });
19077
- function DuplicateFunctionDialogController($state, $i18next, i18next, lodash, DialogsService, EventHelperService, ValidationService) {
19078
- var ctrl = this;
19079
- var lng = i18next.language;
19080
- ctrl.duplicateFunctionForm = {};
19081
- ctrl.duplicateInputFieldsData = [];
19082
- ctrl.inputModelOptions = {
19083
- debounce: {
19084
- 'default': 0
19085
- }
19086
- };
19087
- ctrl.maxLengths = {
19088
- functionName: ValidationService.getMaxLength('function.name')
19089
- };
19090
- ctrl.nameTakenError = false;
19091
- ctrl.secretFieldsData = {};
19092
- ctrl.validationRules = {
19093
- functionName: ValidationService.getValidationRules('function.name')
19094
- };
19095
- ctrl.$onInit = onInit;
19096
- ctrl.duplicateFunction = duplicateFunction;
19097
- ctrl.inputValueCallback = inputValueCallback;
19098
- ctrl.onClose = onClose;
19099
-
19100
- //
19101
- // Hook methods
19102
- //
19103
-
19104
- /**
19105
- * Initialization method
19106
- */
19107
- function onInit() {
19108
- generateDuplicateInputFieldsData();
19109
- }
19110
-
19111
- //
19112
- // Public methods
19113
- //
19114
-
19115
- /**
19116
- * Duplicates selected function with a new name
19117
- * @param {Object} event
19118
- */
19119
- function duplicateFunction(event) {
19120
- if (angular.isUndefined(event) || event.keyCode === EventHelperService.ENTER) {
19121
- ctrl.nameTakenError = false;
19122
- ctrl.duplicateFunctionForm.$setSubmitted();
19123
- if (ctrl.duplicateFunctionForm.$valid) {
19124
- var newFunction = lodash.pick(ctrl.version, 'spec');
19125
- var projectId = lodash.get(ctrl.project, 'metadata.name');
19126
- lodash.forEach(ctrl.secretFieldsData, function (value, path) {
19127
- if (path === 'name') {
19128
- lodash.set(newFunction, 'metadata.name', value);
19129
- } else {
19130
- lodash.set(newFunction, path, value);
19131
- }
19132
- });
19133
- ctrl.getFunction({
19134
- metadata: {
19135
- name: ctrl.secretFieldsData.name
19136
- }
19137
- }).then(function () {
19138
- DialogsService.alert($i18next.t('functions:ERROR_MSG.FUNCTION_NAME_ALREADY_IN_USE', {
19139
- lng: lng
19140
- }));
19141
- })["catch"](function (error) {
19142
- if (error.status === 404) {
19143
- ctrl.closeDialog();
19144
- $state.go('app.project.function.edit.code', {
19145
- isNewFunction: true,
19146
- id: ctrl.project.metadata.name,
19147
- functionId: newFunction.metadata.name,
19148
- projectId: projectId,
19149
- projectNamespace: ctrl.project.metadata.namespace,
19150
- functionData: newFunction
19151
- });
19152
- }
19153
- });
19154
- }
19155
- }
19156
- }
19258
+ closeDialog: '&',
19259
+ deploy: '&',
19260
+ version: '<'
19261
+ },
19262
+ templateUrl: 'nuclio/functions/deploy-deleted-function-dialog/deploy-deleted-function-dialog.tpl.html',
19263
+ controller: DeployDeletedFunctionDialogController
19264
+ });
19265
+ function DeployDeletedFunctionDialogController($state, $rootScope, EventHelperService) {
19266
+ var ctrl = this;
19267
+ ctrl.deployFunction = deployFunction;
19268
+ ctrl.goToFunctions = goToFunctions;
19269
+ ctrl.onClose = onClose;
19157
19270
 
19158
- /**
19159
- * Sets new data from input field
19160
- * @param {string} newData - new string value which should be set
19161
- * @param {string} field
19162
- */
19163
- function inputValueCallback(newData, field) {
19164
- ctrl.secretFieldsData[field] = newData;
19165
- }
19271
+ //
19272
+ // Public methods
19273
+ //
19166
19274
 
19167
19275
  /**
19168
19276
  * Closes dialog
@@ -19174,122 +19282,21 @@ such restriction.
19174
19282
  }
19175
19283
  }
19176
19284
 
19177
- //
19178
- // Private methods
19179
- //
19180
-
19181
19285
  /**
19182
- * Generates the data to display new input fields
19286
+ * Redirect to functions panel
19183
19287
  */
19184
- function generateDuplicateInputFieldsData() {
19185
- ctrl.duplicateInputFieldsData = lodash.map(findFunctionSecrets(), function (elem) {
19186
- var message = '';
19187
- var moreInfoData = '';
19188
- if (elem.key === 'password') {
19189
- if (elem.path.includes('spec.triggers')) {
19190
- // Trigger with type MQTT\V3IO, Access key field
19191
- message = $i18next.t('functions:TRIGGER_ACCESS_KEY', {
19192
- lng: lng,
19193
- triggerName: elem.path.split('.')[2]
19194
- });
19195
- } else if (elem.path.includes('spec.build')) {
19196
- // Code Entry Type: Git, Token field
19197
- message = $i18next.t('functions:CODE_ENTRY_TYPE_PASSWORD', {
19198
- lng: lng,
19199
- codeEntryType: lodash.get(ctrl.version, 'spec.build.codeEntryType', '')
19200
- });
19201
- }
19202
- } else if (elem.key === 'accessKeyID') {
19203
- // Trigger with type Kinesis, Access key ID field
19204
- message = $i18next.t('functions:TRIGGER_ACCESS_KEY_ID', {
19205
- lng: lng,
19206
- triggerName: elem.path.split('.')[2]
19207
- });
19208
- } else if (elem.key === 'secretAccessKey') {
19209
- // Trigger with type Kinesis, Secret Access key field
19210
- message = $i18next.t('functions:TRIGGER_SECRET_ACCESS_KEY', {
19211
- lng: lng,
19212
- triggerName: elem.path.split('.')[2]
19213
- });
19214
- } else if (elem.key === 'accessKey') {
19215
- // Volume with type V3IO, Access key field
19216
- var volumeName = lodash.get(ctrl.version, elem.path.split('.').slice(0, 3).join('.') + '.volume.name', '');
19217
- moreInfoData = $i18next.t('functions:ACCESS_KEY_DESCRIPTION');
19218
- message = $i18next.t('functions:VOLUME_ACCESS_KEY', {
19219
- lng: lng,
19220
- volumeName: volumeName
19221
- });
19222
- } else if (elem.key === 's3SecretAccessKey') {
19223
- // Code Entry Type: s3, Session access key field
19224
- moreInfoData = $i18next.t('functions:TOOLTIP.S3.SECRET_ACCESS_KEY');
19225
- message = $i18next.t('functions:CODE_ENTRY_TYPE_KEY', {
19226
- lng: lng,
19227
- codeEntryType: lodash.get(ctrl.version, 'spec.build.codeEntryType', '')
19228
- });
19229
- } else if (elem.key === 's3SessionToken') {
19230
- // Code Entry Type: s3, Session token field
19231
- moreInfoData = $i18next.t('functions:TOOLTIP.S3.SESSION_TOKEN');
19232
- message = $i18next.t('functions:CODE_ENTRY_TYPE_TOKEN', {
19233
- lng: lng,
19234
- codeEntryType: lodash.get(ctrl.version, 'spec.build.codeEntryType', '')
19235
- });
19236
- } else if (elem.key === 'Authorization') {
19237
- // Code Entry Type: GitHub, Token field
19238
- moreInfoData = $i18next.t('functions:TOOLTIP.GITHUB.TOKEN');
19239
- message = $i18next.t('functions:CODE_ENTRY_TYPE_TOKEN', {
19240
- lng: lng,
19241
- codeEntryType: lodash.get(ctrl.version, 'spec.build.codeEntryType', '')
19242
- });
19243
- } else if (elem.key === 'X-V3io-Session-Key') {
19244
- // Code Entry Type: Archive, Access key field
19245
- moreInfoData = $i18next.t('functions:functions:TOOLTIP.V3IO_ACCESS_KEY');
19246
- message = $i18next.t('functions:CODE_ENTRY_ACCESS_KEY', {
19247
- lng: lng,
19248
- codeEntryType: lodash.get(ctrl.version, 'spec.build.codeEntryType', '')
19249
- });
19250
- }
19251
- return {
19252
- moreInfoData: moreInfoData,
19253
- title: message || lodash.startCase(elem.key),
19254
- key: elem.key,
19255
- path: elem.path
19256
- };
19257
- });
19288
+ function goToFunctions() {
19289
+ $state.go('app.project.functions');
19290
+ ctrl.closeDialog();
19258
19291
  }
19259
19292
 
19260
19293
  /**
19261
- * Generates the list of fields in which the value starts with "$ref"
19262
- * @returns {Array.<Object>}
19294
+ * Deploy function
19295
+ * @param {Event} [event]
19263
19296
  */
19264
- function findFunctionSecrets() {
19265
- var secretsArray = [];
19266
- iterateObject(ctrl.version.spec, 'spec');
19267
- return secretsArray;
19268
- function iterateObject(obj, prevPath) {
19269
- var _loop = function _loop() {
19270
- var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
19271
- key = _Object$entries$_i[0],
19272
- value = _Object$entries$_i[1];
19273
- if (lodash.isArray(value)) {
19274
- lodash.forEach(value, function (elem, index) {
19275
- var path = prevPath + '.' + key + '.[' + index + ']';
19276
- iterateObject(elem, path);
19277
- });
19278
- } else if (lodash.isObject(value)) {
19279
- path = prevPath + '.' + key;
19280
- iterateObject(value, path);
19281
- } else if (lodash.isString(value) && value.includes('$ref')) {
19282
- secretsArray.push({
19283
- path: prevPath + '.' + key,
19284
- key: key
19285
- });
19286
- }
19287
- },
19288
- path;
19289
- for (var _i = 0, _Object$entries = Object.entries(obj); _i < _Object$entries.length; _i++) {
19290
- _loop();
19291
- }
19292
- }
19297
+ function deployFunction(event) {
19298
+ ctrl.deploy(event, ctrl.version);
19299
+ ctrl.closeDialog();
19293
19300
  }
19294
19301
  }
19295
19302
  })();
@@ -20910,73 +20917,6 @@ such restriction.
20910
20917
  })();
20911
20918
  "use strict";
20912
20919
 
20913
- /*
20914
- Copyright 2018 Iguazio Systems Ltd.
20915
- Licensed under the Apache License, Version 2.0 (the "License") with
20916
- an addition restriction as set forth herein. You may not use this
20917
- file except in compliance with the License. You may obtain a copy of
20918
- the License at http://www.apache.org/licenses/LICENSE-2.0.
20919
- Unless required by applicable law or agreed to in writing, software
20920
- distributed under the License is distributed on an "AS IS" BASIS,
20921
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
20922
- implied. See the License for the specific language governing
20923
- permissions and limitations under the License.
20924
- In addition, you may not use the software for any purposes that are
20925
- illegal under applicable law, and the grant of the foregoing license
20926
- under the Apache 2.0 license is conditioned upon your compliance with
20927
- such restriction.
20928
- */
20929
- (function () {
20930
- 'use strict';
20931
-
20932
- NclDeployLogController.$inject = ["lodash"];
20933
- angular.module('iguazio.dashboard-controls').component('nclDeployLog', {
20934
- bindings: {
20935
- logEntries: '<'
20936
- },
20937
- templateUrl: 'nuclio/common/components/deploy-log/deploy-log.tpl.html',
20938
- controller: NclDeployLogController
20939
- });
20940
- function NclDeployLogController(lodash) {
20941
- var ctrl = this;
20942
- ctrl.scrollConfig = {
20943
- advanced: {
20944
- updateOnContentResize: true
20945
- },
20946
- theme: 'light-thin'
20947
- };
20948
- ctrl.lodash = lodash;
20949
- ctrl.getLogLevel = getLogLevel;
20950
- ctrl.getLogParams = getLogParams;
20951
-
20952
- //
20953
- // Public methods
20954
- //
20955
-
20956
- /**
20957
- * Get log level display value
20958
- * @param {string} level - the level model value (one of: 'debug', 'info', 'warn', 'error')
20959
- * @returns {string} the log level display value
20960
- */
20961
- function getLogLevel(level) {
20962
- return lodash.first(level).toUpperCase();
20963
- }
20964
-
20965
- /**
20966
- * Get log parameters display value
20967
- * @param {string} logEntry - the log entry that includes the parameters
20968
- * @returns {string} the log level display value
20969
- */
20970
- function getLogParams(logEntry) {
20971
- var params = lodash.omit(logEntry, ['name', 'time', 'level', 'message', 'err']);
20972
- return lodash.isEmpty(params) ? '' : '[' + lodash.map(params, function (value, key) {
20973
- return key + ': ' + angular.toJson(value);
20974
- }).join(', ').replace(/\\n/g, '\n').replace(/\\"/g, '"') + ']';
20975
- }
20976
- }
20977
- })();
20978
- "use strict";
20979
-
20980
20920
  /*
20981
20921
  Copyright 2018 Iguazio Systems Ltd.
20982
20922
  Licensed under the Apache License, Version 2.0 (the "License") with
@@ -21192,6 +21132,73 @@ such restriction.
21192
21132
  })();
21193
21133
  "use strict";
21194
21134
 
21135
+ /*
21136
+ Copyright 2018 Iguazio Systems Ltd.
21137
+ Licensed under the Apache License, Version 2.0 (the "License") with
21138
+ an addition restriction as set forth herein. You may not use this
21139
+ file except in compliance with the License. You may obtain a copy of
21140
+ the License at http://www.apache.org/licenses/LICENSE-2.0.
21141
+ Unless required by applicable law or agreed to in writing, software
21142
+ distributed under the License is distributed on an "AS IS" BASIS,
21143
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
21144
+ implied. See the License for the specific language governing
21145
+ permissions and limitations under the License.
21146
+ In addition, you may not use the software for any purposes that are
21147
+ illegal under applicable law, and the grant of the foregoing license
21148
+ under the Apache 2.0 license is conditioned upon your compliance with
21149
+ such restriction.
21150
+ */
21151
+ (function () {
21152
+ 'use strict';
21153
+
21154
+ NclDeployLogController.$inject = ["lodash"];
21155
+ angular.module('iguazio.dashboard-controls').component('nclDeployLog', {
21156
+ bindings: {
21157
+ logEntries: '<'
21158
+ },
21159
+ templateUrl: 'nuclio/common/components/deploy-log/deploy-log.tpl.html',
21160
+ controller: NclDeployLogController
21161
+ });
21162
+ function NclDeployLogController(lodash) {
21163
+ var ctrl = this;
21164
+ ctrl.scrollConfig = {
21165
+ advanced: {
21166
+ updateOnContentResize: true
21167
+ },
21168
+ theme: 'light-thin'
21169
+ };
21170
+ ctrl.lodash = lodash;
21171
+ ctrl.getLogLevel = getLogLevel;
21172
+ ctrl.getLogParams = getLogParams;
21173
+
21174
+ //
21175
+ // Public methods
21176
+ //
21177
+
21178
+ /**
21179
+ * Get log level display value
21180
+ * @param {string} level - the level model value (one of: 'debug', 'info', 'warn', 'error')
21181
+ * @returns {string} the log level display value
21182
+ */
21183
+ function getLogLevel(level) {
21184
+ return lodash.first(level).toUpperCase();
21185
+ }
21186
+
21187
+ /**
21188
+ * Get log parameters display value
21189
+ * @param {string} logEntry - the log entry that includes the parameters
21190
+ * @returns {string} the log level display value
21191
+ */
21192
+ function getLogParams(logEntry) {
21193
+ var params = lodash.omit(logEntry, ['name', 'time', 'level', 'message', 'err']);
21194
+ return lodash.isEmpty(params) ? '' : '[' + lodash.map(params, function (value, key) {
21195
+ return key + ': ' + angular.toJson(value);
21196
+ }).join(', ').replace(/\\n/g, '\n').replace(/\\"/g, '"') + ']';
21197
+ }
21198
+ }
21199
+ })();
21200
+ "use strict";
21201
+
21195
21202
  /*
21196
21203
  Copyright 2018 Iguazio Systems Ltd.
21197
21204
  Licensed under the Apache License, Version 2.0 (the "License") with
@@ -22266,18 +22273,30 @@ such restriction.
22266
22273
  (function () {
22267
22274
  'use strict';
22268
22275
 
22269
- NclFunctionConfigDialogController.$inject = ["ExportService", "MaskService"];
22270
- angular.module('iguazio.dashboard-controls').component('nclFunctionConfigDialog', {
22276
+ NclMonacoController.$inject = ["$scope", "lodash"];
22277
+ angular.module('iguazio.dashboard-controls').component('nclMonaco', {
22271
22278
  bindings: {
22272
- closeDialog: '&',
22273
- "function": '<'
22279
+ language: '<',
22280
+ functionSourceCode: '<',
22281
+ onChangeSourceCodeCallback: '&',
22282
+ selectedTheme: '<',
22283
+ miniMonaco: '<?',
22284
+ noTopPadding: '<?',
22285
+ showLineNumbers: '<?',
22286
+ showTextSizeDropdown: '<?',
22287
+ readOnly: '<?',
22288
+ wordWrap: '<?',
22289
+ name: '@?'
22274
22290
  },
22275
- templateUrl: 'nuclio/common/components/function-config-dialog/function-config-dialog.tpl.html',
22276
- controller: NclFunctionConfigDialogController
22291
+ templateUrl: 'nuclio/common/components/monaco/monaco.tpl.html',
22292
+ controller: NclMonacoController
22277
22293
  });
22278
- function NclFunctionConfigDialogController(ExportService, MaskService) {
22294
+ function NclMonacoController($scope, lodash) {
22279
22295
  var ctrl = this;
22280
22296
  ctrl.$onInit = onInit;
22297
+ ctrl.$onChanges = onChanges;
22298
+ ctrl.onCodeChange = onCodeChange;
22299
+ ctrl.onTextSizeChange = onTextSizeChange;
22281
22300
 
22282
22301
  //
22283
22302
  // Hook methods
@@ -22287,9 +22306,57 @@ such restriction.
22287
22306
  * Initialization method
22288
22307
  */
22289
22308
  function onInit() {
22290
- var functionWithMask = MaskService.getObjectWithMask(ctrl["function"]);
22291
- ctrl.title = ctrl["function"].metadata.name + ' - configuration';
22292
- ctrl.sourceCode = ExportService.getFunctionConfig(functionWithMask);
22309
+ ctrl.noTopPadding = lodash.defaultTo(ctrl.noTopPadding, ctrl.showTextSizeDropdown);
22310
+ $scope.selectedCodeFile = {
22311
+ code: ctrl.functionSourceCode
22312
+ };
22313
+ $scope.selectedFileLanguage = {
22314
+ language: ctrl.language
22315
+ };
22316
+ }
22317
+
22318
+ /**
22319
+ * On changes method
22320
+ * @param {Object} changes
22321
+ */
22322
+ function onChanges(changes) {
22323
+ if (angular.isDefined(changes.language) && !changes.language.isFirstChange()) {
22324
+ $scope.selectedCodeFile = {
22325
+ code: $scope.selectedCodeFile.code
22326
+ };
22327
+ $scope.selectedFileLanguage = {
22328
+ language: changes.language.currentValue
22329
+ };
22330
+ }
22331
+ if (angular.isDefined(changes.functionSourceCode) && !changes.functionSourceCode.isFirstChange()) {
22332
+ $scope.selectedCodeFile = {
22333
+ code: changes.functionSourceCode.currentValue
22334
+ };
22335
+ }
22336
+ }
22337
+
22338
+ /**
22339
+ * On code change callback.
22340
+ * igz-monaco-editor directive calls this callback with new changed content
22341
+ * @param {string} newCode - changed code
22342
+ */
22343
+ function onCodeChange(newCode) {
22344
+ if (angular.isFunction(ctrl.onChangeSourceCodeCallback)) {
22345
+ ctrl.onChangeSourceCodeCallback({
22346
+ sourceCode: newCode,
22347
+ language: $scope.selectedCodeFile.language
22348
+ });
22349
+ }
22350
+ }
22351
+
22352
+ /**
22353
+ * On text size dropdown change
22354
+ * @param {string} newTextSize
22355
+ */
22356
+ function onTextSizeChange(newTextSize) {
22357
+ if (!lodash.isNil(newTextSize)) {
22358
+ ctrl.selectedTextSize = newTextSize;
22359
+ }
22293
22360
  }
22294
22361
  }
22295
22362
  })();
@@ -22809,57 +22876,30 @@ such restriction.
22809
22876
  (function () {
22810
22877
  'use strict';
22811
22878
 
22812
- NclNavigationTabsController.$inject = ["$rootScope", "$state", "$timeout", "lodash"];
22813
- angular.module('iguazio.dashboard-controls').component('nclNavigationTabs', {
22879
+ NclFunctionConfigDialogController.$inject = ["ExportService", "MaskService"];
22880
+ angular.module('iguazio.dashboard-controls').component('nclFunctionConfigDialog', {
22814
22881
  bindings: {
22815
- tabItems: '<'
22882
+ closeDialog: '&',
22883
+ "function": '<'
22816
22884
  },
22817
- templateUrl: 'nuclio/common/components/navigation-tabs/navigation-tabs.tpl.html',
22818
- controller: NclNavigationTabsController
22885
+ templateUrl: 'nuclio/common/components/function-config-dialog/function-config-dialog.tpl.html',
22886
+ controller: NclFunctionConfigDialogController
22819
22887
  });
22820
- function NclNavigationTabsController($rootScope, $state, $timeout, lodash) {
22888
+ function NclFunctionConfigDialogController(ExportService, MaskService) {
22821
22889
  var ctrl = this;
22822
- var isTestPaneToggled = true;
22823
- ctrl.isTestPaneClosed = false;
22824
- ctrl.isToggleButtonVisible = isToggleButtonVisible;
22825
- ctrl.toggleTestPane = toggleTestPane;
22890
+ ctrl.$onInit = onInit;
22826
22891
 
22827
22892
  //
22828
- // Public methods
22893
+ // Hook methods
22829
22894
  //
22830
22895
 
22831
22896
  /**
22832
- * Checks if 'toggle test pane' button should be visible.
22833
- * It should, only when 'code' tab is reached.
22834
- * @returns {boolean}
22835
- */
22836
- function isToggleButtonVisible() {
22837
- var isButtonVisible = lodash.get($state.$current, 'self.url') === '/code';
22838
- if (!isButtonVisible) {
22839
- ctrl.isTestPaneClosed = false;
22840
- $rootScope.$broadcast('navigation-tabs_toggle-test-pane', {
22841
- closeTestPane: ctrl.isTestPaneClosed
22842
- });
22843
- }
22844
- return isButtonVisible;
22845
- }
22846
-
22847
- /**
22848
- * Sends broadcast to toggle test pane.
22897
+ * Initialization method
22849
22898
  */
22850
- function toggleTestPane() {
22851
- if (isTestPaneToggled) {
22852
- ctrl.isTestPaneClosed = !ctrl.isTestPaneClosed;
22853
- isTestPaneToggled = false;
22854
- $rootScope.$broadcast('navigation-tabs_toggle-test-pane', {
22855
- closeTestPane: ctrl.isTestPaneClosed
22856
- });
22857
-
22858
- // wait until toggling animation will be completed
22859
- $timeout(function () {
22860
- isTestPaneToggled = true;
22861
- }, 600);
22862
- }
22899
+ function onInit() {
22900
+ var functionWithMask = MaskService.getObjectWithMask(ctrl["function"]);
22901
+ ctrl.title = ctrl["function"].metadata.name + ' - configuration';
22902
+ ctrl.sourceCode = ExportService.getFunctionConfig(functionWithMask);
22863
22903
  }
22864
22904
  }
22865
22905
  })();
@@ -22884,89 +22924,56 @@ such restriction.
22884
22924
  (function () {
22885
22925
  'use strict';
22886
22926
 
22887
- NclMonacoController.$inject = ["$scope", "lodash"];
22888
- angular.module('iguazio.dashboard-controls').component('nclMonaco', {
22927
+ NclNavigationTabsController.$inject = ["$rootScope", "$state", "$timeout", "lodash"];
22928
+ angular.module('iguazio.dashboard-controls').component('nclNavigationTabs', {
22889
22929
  bindings: {
22890
- language: '<',
22891
- functionSourceCode: '<',
22892
- onChangeSourceCodeCallback: '&',
22893
- selectedTheme: '<',
22894
- miniMonaco: '<?',
22895
- noTopPadding: '<?',
22896
- showLineNumbers: '<?',
22897
- showTextSizeDropdown: '<?',
22898
- readOnly: '<?',
22899
- wordWrap: '<?',
22900
- name: '@?'
22930
+ tabItems: '<'
22901
22931
  },
22902
- templateUrl: 'nuclio/common/components/monaco/monaco.tpl.html',
22903
- controller: NclMonacoController
22932
+ templateUrl: 'nuclio/common/components/navigation-tabs/navigation-tabs.tpl.html',
22933
+ controller: NclNavigationTabsController
22904
22934
  });
22905
- function NclMonacoController($scope, lodash) {
22935
+ function NclNavigationTabsController($rootScope, $state, $timeout, lodash) {
22906
22936
  var ctrl = this;
22907
- ctrl.$onInit = onInit;
22908
- ctrl.$onChanges = onChanges;
22909
- ctrl.onCodeChange = onCodeChange;
22910
- ctrl.onTextSizeChange = onTextSizeChange;
22937
+ var isTestPaneToggled = true;
22938
+ ctrl.isTestPaneClosed = false;
22939
+ ctrl.isToggleButtonVisible = isToggleButtonVisible;
22940
+ ctrl.toggleTestPane = toggleTestPane;
22911
22941
 
22912
22942
  //
22913
- // Hook methods
22943
+ // Public methods
22914
22944
  //
22915
22945
 
22916
22946
  /**
22917
- * Initialization method
22918
- */
22919
- function onInit() {
22920
- ctrl.noTopPadding = lodash.defaultTo(ctrl.noTopPadding, ctrl.showTextSizeDropdown);
22921
- $scope.selectedCodeFile = {
22922
- code: ctrl.functionSourceCode
22923
- };
22924
- $scope.selectedFileLanguage = {
22925
- language: ctrl.language
22926
- };
22927
- }
22928
-
22929
- /**
22930
- * On changes method
22931
- * @param {Object} changes
22947
+ * Checks if 'toggle test pane' button should be visible.
22948
+ * It should, only when 'code' tab is reached.
22949
+ * @returns {boolean}
22932
22950
  */
22933
- function onChanges(changes) {
22934
- if (angular.isDefined(changes.language) && !changes.language.isFirstChange()) {
22935
- $scope.selectedCodeFile = {
22936
- code: $scope.selectedCodeFile.code
22937
- };
22938
- $scope.selectedFileLanguage = {
22939
- language: changes.language.currentValue
22940
- };
22941
- }
22942
- if (angular.isDefined(changes.functionSourceCode) && !changes.functionSourceCode.isFirstChange()) {
22943
- $scope.selectedCodeFile = {
22944
- code: changes.functionSourceCode.currentValue
22945
- };
22951
+ function isToggleButtonVisible() {
22952
+ var isButtonVisible = lodash.get($state.$current, 'self.url') === '/code';
22953
+ if (!isButtonVisible) {
22954
+ ctrl.isTestPaneClosed = false;
22955
+ $rootScope.$broadcast('navigation-tabs_toggle-test-pane', {
22956
+ closeTestPane: ctrl.isTestPaneClosed
22957
+ });
22946
22958
  }
22959
+ return isButtonVisible;
22947
22960
  }
22948
22961
 
22949
22962
  /**
22950
- * On code change callback.
22951
- * igz-monaco-editor directive calls this callback with new changed content
22952
- * @param {string} newCode - changed code
22963
+ * Sends broadcast to toggle test pane.
22953
22964
  */
22954
- function onCodeChange(newCode) {
22955
- if (angular.isFunction(ctrl.onChangeSourceCodeCallback)) {
22956
- ctrl.onChangeSourceCodeCallback({
22957
- sourceCode: newCode,
22958
- language: $scope.selectedCodeFile.language
22965
+ function toggleTestPane() {
22966
+ if (isTestPaneToggled) {
22967
+ ctrl.isTestPaneClosed = !ctrl.isTestPaneClosed;
22968
+ isTestPaneToggled = false;
22969
+ $rootScope.$broadcast('navigation-tabs_toggle-test-pane', {
22970
+ closeTestPane: ctrl.isTestPaneClosed
22959
22971
  });
22960
- }
22961
- }
22962
22972
 
22963
- /**
22964
- * On text size dropdown change
22965
- * @param {string} newTextSize
22966
- */
22967
- function onTextSizeChange(newTextSize) {
22968
- if (!lodash.isNil(newTextSize)) {
22969
- ctrl.selectedTextSize = newTextSize;
22973
+ // wait until toggling animation will be completed
22974
+ $timeout(function () {
22975
+ isTestPaneToggled = true;
22976
+ }, 600);
22970
22977
  }
22971
22978
  }
22972
22979
  }
@@ -24552,45 +24559,81 @@ such restriction.
24552
24559
  (function () {
24553
24560
  'use strict';
24554
24561
 
24555
- NclVersionConfigurationController.$inject = ["lodash", "ConfigService", "VersionHelperService"];
24556
- angular.module('iguazio.dashboard-controls').component('nclVersionConfiguration', {
24562
+ NclVersionMonitoringController.$inject = ["$rootScope", "$timeout", "lodash", "FunctionsService"];
24563
+ angular.module('iguazio.dashboard-controls').component('nclVersionMonitoring', {
24557
24564
  bindings: {
24558
- version: '<',
24559
- isFunctionDeploying: '&'
24565
+ version: '<'
24560
24566
  },
24561
- templateUrl: 'nuclio/functions/version/version-configuration/version-configuration.tpl.html',
24562
- controller: NclVersionConfigurationController
24567
+ templateUrl: 'nuclio/functions/version/version-monitoring/version-monitoring.tpl.html',
24568
+ controller: NclVersionMonitoringController
24563
24569
  });
24564
- function NclVersionConfigurationController(lodash, ConfigService, VersionHelperService) {
24570
+ function NclVersionMonitoringController($rootScope, $timeout, lodash, FunctionsService) {
24565
24571
  var ctrl = this;
24572
+ ctrl.enrichedNodeSelectors = [];
24566
24573
  ctrl.scrollConfig = {
24567
- axis: 'y',
24568
24574
  advanced: {
24569
- autoScrollOnFocus: false,
24570
24575
  updateOnContentResize: true
24571
24576
  }
24572
24577
  };
24573
- ctrl.isDemoMode = ConfigService.isDemoMode;
24574
- ctrl.isRuntimeBlockVisible = isRuntimeBlockVisible;
24575
- ctrl.onConfigurationChangeCallback = onConfigurationChangeCallback;
24578
+ ctrl.loggerScrollConfig = {
24579
+ advanced: {
24580
+ updateOnContentResize: true
24581
+ },
24582
+ theme: 'light-thin'
24583
+ };
24584
+ ctrl.rowIsCollapsed = {
24585
+ buildLog: false,
24586
+ errorLog: false
24587
+ };
24588
+ ctrl.$onInit = onInit;
24589
+ ctrl.checkIsErrorState = checkIsErrorState;
24590
+ ctrl.onRowCollapse = onRowCollapse;
24591
+
24592
+ //
24593
+ // Hook methods
24594
+ //
24595
+
24596
+ /**
24597
+ * Initialization method
24598
+ */
24599
+ function onInit() {
24600
+ ctrl.isFunctionDeploying = lodash.partial(FunctionsService.isFunctionDeploying, ctrl.version);
24601
+ initEnrichedNodeSelectors();
24602
+ }
24576
24603
 
24577
24604
  //
24578
24605
  // Public methods
24579
24606
  //
24580
24607
 
24581
24608
  /**
24582
- * Checks if `Runtime Attributes` block is visible
24609
+ * Checks if current version status is `error`
24583
24610
  * @returns {boolean}
24584
24611
  */
24585
- function isRuntimeBlockVisible() {
24586
- return lodash.includes(['shell', 'java'], lodash.get(ctrl.version, 'spec.runtime'));
24612
+ function checkIsErrorState() {
24613
+ return lodash.includes(['error', 'unhealthy'], lodash.get(ctrl.version.status, 'state'));
24587
24614
  }
24588
24615
 
24589
24616
  /**
24590
- * Checks if version's configuration was changed
24617
+ * Generates a node selectors list
24591
24618
  */
24592
- function onConfigurationChangeCallback() {
24593
- VersionHelperService.updateIsVersionChanged(ctrl.version);
24619
+ function initEnrichedNodeSelectors() {
24620
+ ctrl.enrichedNodeSelectors = lodash.chain(ctrl.version).get('status.enrichedNodeSelector', {}).map(function (key, value) {
24621
+ return {
24622
+ name: value,
24623
+ value: key
24624
+ };
24625
+ }).value();
24626
+ }
24627
+
24628
+ /**
24629
+ * Called when row is collapsed/expanded
24630
+ * @param {string} row - name of expanded/collapsed row
24631
+ */
24632
+ function onRowCollapse(row) {
24633
+ ctrl.rowIsCollapsed[row] = !ctrl.rowIsCollapsed[row];
24634
+ $timeout(function () {
24635
+ $rootScope.$broadcast('igzWatchWindowResize::resize');
24636
+ }, 350);
24594
24637
  }
24595
24638
  }
24596
24639
  })();
@@ -24629,7 +24672,10 @@ such restriction.
24629
24672
  var ctrl = this;
24630
24673
  var lng = i18next.language;
24631
24674
  var refreshInterval = null;
24632
- var initialTimeRange = null;
24675
+ var initialTimeRange = {
24676
+ from: null,
24677
+ to: null
24678
+ };
24633
24679
  var initialDatePreset = '7d';
24634
24680
  var initialReplicas = [];
24635
24681
  var defaultFilter = {
@@ -24649,6 +24695,7 @@ such restriction.
24649
24695
  ctrl.logs = {};
24650
24696
  ctrl.replicasList = [];
24651
24697
  ctrl.filter = {};
24698
+ ctrl.applyIsDisabled = false;
24652
24699
  ctrl.scrollConfig = {
24653
24700
  axis: 'y',
24654
24701
  theme: 'light',
@@ -24657,7 +24704,7 @@ such restriction.
24657
24704
  }
24658
24705
  };
24659
24706
  ctrl.datePreset = initialDatePreset;
24660
- ctrl.timeRange = null;
24707
+ ctrl.timeRange = initialTimeRange;
24661
24708
  ctrl.searchStates = {};
24662
24709
  ctrl.selectedReplicas = [];
24663
24710
  ctrl.isFiltersShowed = {
@@ -24671,27 +24718,37 @@ such restriction.
24671
24718
  ctrl.refreshRate = {
24672
24719
  value: '10',
24673
24720
  options: [{
24674
- name: '5 ' + $i18next.t('common:SECONDS', {
24721
+ name: $i18next.t('common:EVERY', {
24722
+ lng: lng
24723
+ }) + ' 5 ' + $i18next.t('common:SECONDS', {
24675
24724
  lng: lng
24676
24725
  }),
24677
24726
  value: '5'
24678
24727
  }, {
24679
- name: '10 ' + $i18next.t('common:SECONDS', {
24728
+ name: $i18next.t('common:EVERY', {
24729
+ lng: lng
24730
+ }) + ' 10 ' + $i18next.t('common:SECONDS', {
24680
24731
  lng: lng
24681
24732
  }),
24682
24733
  value: '10'
24683
24734
  }, {
24684
- name: '20 ' + $i18next.t('common:SECONDS', {
24735
+ name: $i18next.t('common:EVERY', {
24736
+ lng: lng
24737
+ }) + ' 20 ' + $i18next.t('common:SECONDS', {
24685
24738
  lng: lng
24686
24739
  }),
24687
24740
  value: '20'
24688
24741
  }, {
24689
- name: '30 ' + $i18next.t('common:SECONDS', {
24742
+ name: $i18next.t('common:EVERY', {
24743
+ lng: lng
24744
+ }) + ' 30 ' + $i18next.t('common:SECONDS', {
24690
24745
  lng: lng
24691
24746
  }),
24692
24747
  value: '30'
24693
24748
  }, {
24694
- name: '1 ' + $i18next.t('common:MINUTE', {
24749
+ name: $i18next.t('common:EVERY', {
24750
+ lng: lng
24751
+ }) + ' 1 ' + $i18next.t('common:MINUTE', {
24695
24752
  lng: lng
24696
24753
  }),
24697
24754
  value: '60'
@@ -24840,9 +24897,7 @@ such restriction.
24840
24897
  * Triggered when selected replicas list was changed
24841
24898
  */
24842
24899
  function onCheckboxChange() {
24843
- if (!ctrl.selectedReplicas) {
24844
- ctrl.selectedReplicas = angular.copy(initialReplicas);
24845
- }
24900
+ ctrl.applyIsDisabled = !ctrl.selectedReplicas;
24846
24901
  }
24847
24902
 
24848
24903
  /**
@@ -24888,7 +24943,9 @@ such restriction.
24888
24943
  * Reset filters
24889
24944
  */
24890
24945
  function resetFilters() {
24946
+ ctrl.applyIsDisabled = false;
24891
24947
  ctrl.timeRange = initialTimeRange;
24948
+ ctrl.datePreset = initialDatePreset;
24892
24949
  ctrl.selectedReplicas = initialReplicas;
24893
24950
  lodash.merge(ctrl.filter, defaultFilter);
24894
24951
  $rootScope.$broadcast('search-input_reset');
@@ -25062,81 +25119,45 @@ such restriction.
25062
25119
  (function () {
25063
25120
  'use strict';
25064
25121
 
25065
- NclVersionMonitoringController.$inject = ["$rootScope", "$timeout", "lodash", "FunctionsService"];
25066
- angular.module('iguazio.dashboard-controls').component('nclVersionMonitoring', {
25122
+ NclVersionConfigurationController.$inject = ["lodash", "ConfigService", "VersionHelperService"];
25123
+ angular.module('iguazio.dashboard-controls').component('nclVersionConfiguration', {
25067
25124
  bindings: {
25068
- version: '<'
25125
+ version: '<',
25126
+ isFunctionDeploying: '&'
25069
25127
  },
25070
- templateUrl: 'nuclio/functions/version/version-monitoring/version-monitoring.tpl.html',
25071
- controller: NclVersionMonitoringController
25128
+ templateUrl: 'nuclio/functions/version/version-configuration/version-configuration.tpl.html',
25129
+ controller: NclVersionConfigurationController
25072
25130
  });
25073
- function NclVersionMonitoringController($rootScope, $timeout, lodash, FunctionsService) {
25131
+ function NclVersionConfigurationController(lodash, ConfigService, VersionHelperService) {
25074
25132
  var ctrl = this;
25075
- ctrl.enrichedNodeSelectors = [];
25076
25133
  ctrl.scrollConfig = {
25134
+ axis: 'y',
25077
25135
  advanced: {
25136
+ autoScrollOnFocus: false,
25078
25137
  updateOnContentResize: true
25079
25138
  }
25080
25139
  };
25081
- ctrl.loggerScrollConfig = {
25082
- advanced: {
25083
- updateOnContentResize: true
25084
- },
25085
- theme: 'light-thin'
25086
- };
25087
- ctrl.rowIsCollapsed = {
25088
- buildLog: false,
25089
- errorLog: false
25090
- };
25091
- ctrl.$onInit = onInit;
25092
- ctrl.checkIsErrorState = checkIsErrorState;
25093
- ctrl.onRowCollapse = onRowCollapse;
25094
-
25095
- //
25096
- // Hook methods
25097
- //
25098
-
25099
- /**
25100
- * Initialization method
25101
- */
25102
- function onInit() {
25103
- ctrl.isFunctionDeploying = lodash.partial(FunctionsService.isFunctionDeploying, ctrl.version);
25104
- initEnrichedNodeSelectors();
25105
- }
25140
+ ctrl.isDemoMode = ConfigService.isDemoMode;
25141
+ ctrl.isRuntimeBlockVisible = isRuntimeBlockVisible;
25142
+ ctrl.onConfigurationChangeCallback = onConfigurationChangeCallback;
25106
25143
 
25107
25144
  //
25108
25145
  // Public methods
25109
25146
  //
25110
25147
 
25111
25148
  /**
25112
- * Checks if current version status is `error`
25149
+ * Checks if `Runtime Attributes` block is visible
25113
25150
  * @returns {boolean}
25114
25151
  */
25115
- function checkIsErrorState() {
25116
- return lodash.includes(['error', 'unhealthy'], lodash.get(ctrl.version.status, 'state'));
25117
- }
25118
-
25119
- /**
25120
- * Generates a node selectors list
25121
- */
25122
- function initEnrichedNodeSelectors() {
25123
- ctrl.enrichedNodeSelectors = lodash.chain(ctrl.version).get('status.enrichedNodeSelector', {}).map(function (key, value) {
25124
- return {
25125
- name: value,
25126
- value: key
25127
- };
25128
- }).value();
25152
+ function isRuntimeBlockVisible() {
25153
+ return lodash.includes(['shell', 'java'], lodash.get(ctrl.version, 'spec.runtime'));
25129
25154
  }
25130
25155
 
25131
25156
  /**
25132
- * Called when row is collapsed/expanded
25133
- * @param {string} row - name of expanded/collapsed row
25157
+ * Checks if version's configuration was changed
25134
25158
  */
25135
- function onRowCollapse(row) {
25136
- ctrl.rowIsCollapsed[row] = !ctrl.rowIsCollapsed[row];
25137
- $timeout(function () {
25138
- $rootScope.$broadcast('igzWatchWindowResize::resize');
25139
- }, 350);
25159
+ function onConfigurationChangeCallback() {
25160
+ VersionHelperService.updateIsVersionChanged(ctrl.version);
25140
25161
  }
25141
25162
  }
25142
25163
  })();
@@ -25224,6 +25245,7 @@ such restriction.
25224
25245
  ctrl.editTriggerCallback = editTriggerCallback;
25225
25246
  ctrl.handleAction = handleAction;
25226
25247
  ctrl.isCreateNewTriggerEnabled = isCreateNewTriggerEnabled;
25248
+ ctrl.isHttpTriggerCheckboxShown = isHttpTriggerCheckboxShown;
25227
25249
  ctrl.isHttpTriggerMsgShown = isHttpTriggerMsgShown;
25228
25250
 
25229
25251
  //
@@ -25391,13 +25413,20 @@ such restriction.
25391
25413
  });
25392
25414
  }
25393
25415
 
25416
+ /**
25417
+ * Tests whether the `Do not create http trigger by default` checkbox is shown
25418
+ * @returns {boolean}
25419
+ */
25420
+ function isHttpTriggerCheckboxShown() {
25421
+ return !lodash.get(ConfigService, 'nuclio.disableDefaultHttpTrigger', false) && !lodash.some(ctrl.version.spec.triggers, ['kind', 'http']);
25422
+ }
25423
+
25394
25424
  /**
25395
25425
  * Tests whether the `HTTP trigger message` is shown
25396
25426
  * @returns {boolean} `true` in case "HTTP trigger message" is shown, or `false` otherwise.
25397
25427
  */
25398
25428
  function isHttpTriggerMsgShown() {
25399
- var disableDefaultHttpTrigger = lodash.get(ConfigService, 'nuclio.disableDefaultHttpTrigger', false);
25400
- return !disableDefaultHttpTrigger && !lodash.some(ctrl.version.spec.triggers, ['kind', 'http']);
25429
+ return isHttpTriggerCheckboxShown() && !ctrl.version.spec.disableDefaultHTTPTrigger;
25401
25430
  }
25402
25431
 
25403
25432
  //
@@ -27822,9 +27851,8 @@ try {
27822
27851
  module = angular.module('iguazio.dashboard-controls.templates', []);
27823
27852
  }
27824
27853
  module.run(['$templateCache', function($templateCache) {
27825
- $templateCache.put('igz_controls/components/actions-panes/actions-panes.tpl.html',
27826
- '<div class="actions-bar-left actions-panes-block"> <div class="igz-action-panel"> <div class="actions-list"> <div class="igz-action-item" data-ng-class="{active: $ctrl.isFiltersOpened}" data-ng-if="$ctrl.isShowFilterActionIcon()" data-uib-tooltip="{{ \'common:FILTER\' | i18next }}" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="1000" data-ng-click="$ctrl.filtersToggleMethod()"> <div class="action-icon igz-icon-filter"></div> <span data-ng-if="$ctrl.filtersCounter" class="filter-counter">{{$ctrl.filtersCounter}}</span> </div> <div class="igz-action-item last-item" data-ng-class="{inactive: (!$ctrl.isInfoPaneOpened && !$ctrl.infoPaneToggleMethod) || $ctrl.infoPaneDisable,\n' +
27827
- ' active: $ctrl.isInfoPaneOpened}" data-ng-if="$ctrl.closeInfoPane || $ctrl.infoPaneToggleMethod" data-uib-tooltip="{{ \'common:INFO_PANE\' | i18next }}" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="1000" data-ng-click="$ctrl.callToggleMethod()"> <div class="action-icon igz-icon-info-round"></div> </div> </div> </div> </div> ');
27854
+ $templateCache.put('igz_controls/components/action-panel/action-panel.tpl.html',
27855
+ '<div class="igz-action-panel" data-igz-right-click data-ng-show="$ctrl.isActionPanelShown()"> <div class="actions-list clearfix" data-ng-show="$ctrl.mainActions.length > 0 || $ctrl.remainingActions.length > 0"> <igz-action-item data-ng-repeat="action in $ctrl.mainActions" data-action="action"> </igz-action-item> <igz-action-item-more data-ng-if="$ctrl.remainingActions.length !== 0" data-actions="$ctrl.remainingActions"> <div class="transclude-container" data-ng-transclude></div> </igz-action-item-more> </div> <div class="actions-list empty" data-ng-show="$ctrl.mainActions.length === 0 && $ctrl.remainingActions.length === 0"> {{ \'common:NO_ACTIONS\' | i18next }} </div> </div> ');
27828
27856
  }]);
27829
27857
  })();
27830
27858
 
@@ -27835,8 +27863,9 @@ try {
27835
27863
  module = angular.module('iguazio.dashboard-controls.templates', []);
27836
27864
  }
27837
27865
  module.run(['$templateCache', function($templateCache) {
27838
- $templateCache.put('igz_controls/components/action-panel/action-panel.tpl.html',
27839
- '<div class="igz-action-panel" data-igz-right-click data-ng-show="$ctrl.isActionPanelShown()"> <div class="actions-list clearfix" data-ng-show="$ctrl.mainActions.length > 0 || $ctrl.remainingActions.length > 0"> <igz-action-item data-ng-repeat="action in $ctrl.mainActions" data-action="action"> </igz-action-item> <igz-action-item-more data-ng-if="$ctrl.remainingActions.length !== 0" data-actions="$ctrl.remainingActions"> <div class="transclude-container" data-ng-transclude></div> </igz-action-item-more> </div> <div class="actions-list empty" data-ng-show="$ctrl.mainActions.length === 0 && $ctrl.remainingActions.length === 0"> {{ \'common:NO_ACTIONS\' | i18next }} </div> </div> ');
27866
+ $templateCache.put('igz_controls/components/actions-panes/actions-panes.tpl.html',
27867
+ '<div class="actions-bar-left actions-panes-block"> <div class="igz-action-panel"> <div class="actions-list"> <div class="igz-action-item" data-ng-class="{active: $ctrl.isFiltersOpened}" data-ng-if="$ctrl.isShowFilterActionIcon()" data-uib-tooltip="{{ \'common:FILTER\' | i18next }}" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="1000" data-ng-click="$ctrl.filtersToggleMethod()"> <div class="action-icon igz-icon-filter"></div> <span data-ng-if="$ctrl.filtersCounter" class="filter-counter">{{$ctrl.filtersCounter}}</span> </div> <div class="igz-action-item last-item" data-ng-class="{inactive: (!$ctrl.isInfoPaneOpened && !$ctrl.infoPaneToggleMethod) || $ctrl.infoPaneDisable,\n' +
27868
+ ' active: $ctrl.isInfoPaneOpened}" data-ng-if="$ctrl.closeInfoPane || $ctrl.infoPaneToggleMethod" data-uib-tooltip="{{ \'common:INFO_PANE\' | i18next }}" data-tooltip-append-to-body="true" data-tooltip-placement="bottom" data-tooltip-popup-delay="1000" data-ng-click="$ctrl.callToggleMethod()"> <div class="action-icon igz-icon-info-round"></div> </div> </div> </div> </div> ');
27840
27869
  }]);
27841
27870
  })();
27842
27871
 
@@ -27900,8 +27929,8 @@ try {
27900
27929
  module = angular.module('iguazio.dashboard-controls.templates', []);
27901
27930
  }
27902
27931
  module.run(['$templateCache', function($templateCache) {
27903
- $templateCache.put('igz_controls/components/element-loading-status/element-loading-status.tpl.html',
27904
- '<div class="element-loading-status" data-ng-class="\'loading-status-\' + $ctrl.loadingStatusSize"> <div class="loader-wrapper" data-ng-if="$ctrl.isShowSpinner"> <div class="loader-fading-circle" data-ng-if="!$ctrl.textStatus" data-uib-tooltip="{{$ctrl.tooltipLabel}}" data-tooltip-placement="top" data-tooltip-popup-delay="100" data-tooltip-append-to-body="true"> <div class="loader-circle1 loader-circle"></div> <div class="loader-circle2 loader-circle"></div> <div class="loader-circle3 loader-circle"></div> <div class="loader-circle4 loader-circle"></div> <div class="loader-circle5 loader-circle"></div> <div class="loader-circle6 loader-circle"></div> <div class="loader-circle7 loader-circle"></div> <div class="loader-circle8 loader-circle"></div> <div class="loader-circle9 loader-circle"></div> <div class="loader-circle10 loader-circle"></div> <div class="loader-circle11 loader-circle"></div> <div class="loader-circle12 loader-circle"></div> </div> <div data-ng-if="$ctrl.textStatus" class="loader-text">{{ \'common:LOADING_CAPITALIZE_ELLIPSIS\' | i18next }}</div> </div> <div data-ng-if="$ctrl.isShowContent && !$ctrl.isShowError"> <div data-ng-transclude></div> </div> <div class="loading-error" data-ng-if="$ctrl.isShowError && $ctrl.checkSize(\'default\')"> <div class="sad-icon"></div> <div class="loading-error-title">{{$ctrl.title}}</div> <div class="loading-error-message"> <span data-ng-bind="$ctrl.errorMessage"></span> <span data-ng-if="$ctrl.refresh"> <span>{{ \'common:ERROR_MSG.ELEMENT_LOADING_DEFAULT_2\' | i18next }}</span> <span class="refresh-page" data-ng-click="$ctrl.refreshPage($event)"> {{ \'common:ERROR_MSG.ELEMENT_LOADING_DEFAULT_3\' | i18next }} </span>. </span> </div> </div> <div class="loading-error" data-ng-if="$ctrl.isShowError && $ctrl.checkSize(\'small\')"> <div class="loading-error-title"></div> <div class="loading-error-message"> <div> {{ \'common:ERROR_MSG.ELEMENT_LOADING_SMALL_1\' | i18next }} </div> <div class="refresh-page" data-ng-click="$ctrl.refreshPage($event)" title="{{ \'common:ERROR_MSG.ELEMENT_LOADING_SMALL_2\' | i18next }}"> {{ \'common:ERROR_MSG.ELEMENT_LOADING_SMALL_2\' | i18next }} </div> </div> </div> </div> ');
27932
+ $templateCache.put('igz_controls/components/import-project-dialog/import-project-dialog.tpl.html',
27933
+ '<div class="import-project-dialog">{{$ctrl.dialogTitle}}</div> <igz-multiple-checkboxes data-ng-model="$ctrl.option" data-options="$ctrl.optionList" data-ng-change="$ctrl.onCheckboxChange($event)" data-ng-required="true" data-base-id="import-project-option_"> </igz-multiple-checkboxes> <div class="buttons"> <button class="igz-button-just-text" data-ng-click="$ctrl.onClose(\'skip\')"> {{ \'functions:SKIP\' | i18next }} </button> <button class="igz-button-primary" data-ng-click="$ctrl.onClose(\'replace\')"> {{ \'functions:REPLACE\' | i18next }} </button> </div>');
27905
27934
  }]);
27906
27935
  })();
27907
27936
 
@@ -27912,8 +27941,8 @@ try {
27912
27941
  module = angular.module('iguazio.dashboard-controls.templates', []);
27913
27942
  }
27914
27943
  module.run(['$templateCache', function($templateCache) {
27915
- $templateCache.put('igz_controls/components/import-project-dialog/import-project-dialog.tpl.html',
27916
- '<div class="import-project-dialog">{{$ctrl.dialogTitle}}</div> <igz-multiple-checkboxes data-ng-model="$ctrl.option" data-options="$ctrl.optionList" data-ng-change="$ctrl.onCheckboxChange($event)" data-ng-required="true" data-base-id="import-project-option_"> </igz-multiple-checkboxes> <div class="buttons"> <button class="igz-button-just-text" data-ng-click="$ctrl.onClose(\'skip\')"> {{ \'functions:SKIP\' | i18next }} </button> <button class="igz-button-primary" data-ng-click="$ctrl.onClose(\'replace\')"> {{ \'functions:REPLACE\' | i18next }} </button> </div>');
27944
+ $templateCache.put('igz_controls/components/element-loading-status/element-loading-status.tpl.html',
27945
+ '<div class="element-loading-status" data-ng-class="\'loading-status-\' + $ctrl.loadingStatusSize"> <div class="loader-wrapper" data-ng-if="$ctrl.isShowSpinner"> <div class="loader-fading-circle" data-ng-if="!$ctrl.textStatus" data-uib-tooltip="{{$ctrl.tooltipLabel}}" data-tooltip-placement="top" data-tooltip-popup-delay="100" data-tooltip-append-to-body="true"> <div class="loader-circle1 loader-circle"></div> <div class="loader-circle2 loader-circle"></div> <div class="loader-circle3 loader-circle"></div> <div class="loader-circle4 loader-circle"></div> <div class="loader-circle5 loader-circle"></div> <div class="loader-circle6 loader-circle"></div> <div class="loader-circle7 loader-circle"></div> <div class="loader-circle8 loader-circle"></div> <div class="loader-circle9 loader-circle"></div> <div class="loader-circle10 loader-circle"></div> <div class="loader-circle11 loader-circle"></div> <div class="loader-circle12 loader-circle"></div> </div> <div data-ng-if="$ctrl.textStatus" class="loader-text">{{ \'common:LOADING_CAPITALIZE_ELLIPSIS\' | i18next }}</div> </div> <div data-ng-if="$ctrl.isShowContent && !$ctrl.isShowError"> <div data-ng-transclude></div> </div> <div class="loading-error" data-ng-if="$ctrl.isShowError && $ctrl.checkSize(\'default\')"> <div class="sad-icon"></div> <div class="loading-error-title">{{$ctrl.title}}</div> <div class="loading-error-message"> <span data-ng-bind="$ctrl.errorMessage"></span> <span data-ng-if="$ctrl.refresh"> <span>{{ \'common:ERROR_MSG.ELEMENT_LOADING_DEFAULT_2\' | i18next }}</span> <span class="refresh-page" data-ng-click="$ctrl.refreshPage($event)"> {{ \'common:ERROR_MSG.ELEMENT_LOADING_DEFAULT_3\' | i18next }} </span>. </span> </div> </div> <div class="loading-error" data-ng-if="$ctrl.isShowError && $ctrl.checkSize(\'small\')"> <div class="loading-error-title"></div> <div class="loading-error-message"> <div> {{ \'common:ERROR_MSG.ELEMENT_LOADING_SMALL_1\' | i18next }} </div> <div class="refresh-page" data-ng-click="$ctrl.refreshPage($event)" title="{{ \'common:ERROR_MSG.ELEMENT_LOADING_SMALL_2\' | i18next }}"> {{ \'common:ERROR_MSG.ELEMENT_LOADING_SMALL_2\' | i18next }} </div> </div> </div> </div> ');
27917
27946
  }]);
27918
27947
  })();
27919
27948
 
@@ -27959,7 +27988,7 @@ module.run(['$templateCache', function($templateCache) {
27959
27988
  ' \'igz-icon-checkbox-checked-few\': group.itemsChecked > 0 && !group.allItemsChecked,\n' +
27960
27989
  ' \'igz-icon-checkbox-unchecked\': group.itemsChecked === 0}" data-ng-click="$ctrl.onCheckAllItems($event, name)"> </div> <div class="checkboxes-group-name">{{group.name}}</div> <div data-ng-if="group.addingEnabled" class="checkboxes-add-item"> <button class="checkboxes-add-item-button igz-icon-add" data-ng-click="$ctrl.toggleAddItemField(group, name)" data-uib-tooltip="{{ \'common:TOOLTIP.ADD_NEW\' | i18next }}" data-tooltip-enable="true" data-tooltip-placement="top" data-tooltip-popup-delay="200" data-tooltip-append-to-body="true"></button> </div> </div> <ul data-ng-if="group.visible" class="checkboxes-list"> <li data-ng-if="group.addingEnabled && group.addItemInputVisible" class="checkboxes-add-item"> <igz-validating-input-field class="add-item-input" data-field-type="input" data-is-focused="true" data-ng-class="{\'active\': $ctrl.isSearchInputFocused}" data-item-blur-callback="$ctrl.addItem(inputValue, group, name)"> </igz-validating-input-field> </li> <li class="multiple-checkboxes-option" data-ng-if="item.visibility" data-ng-repeat="item in group.options track by $index"> <input class="multiple-checkboxes-option-input" id="{{item.id}}" type="checkbox" data-ng-model="item.checked" data-ng-change="$ctrl.updateViewValue()" data-ng-disabled="$ctrl.isDisabled(item)" data-ng-show="!item.filtered"> <label class="multiple-checkboxes-option-label" for="{{item.id}}" data-ng-class="{\'disabled\': $ctrl.isDisabled(item)}" data-ng-show="!item.filtered" data-tooltip-enable="{{item.enableTooltip}}" data-uib-tooltip="{{item.tooltipText}}" data-tooltip-placement="left" data-tooltip-popup-delay="200" data-tooltip-append-to-body="true"> {{item.label}} </label> </li> </ul> </div> </div> <div data-ng-if="!$ctrl.groups && $ctrl.selectAllNone" class="checkboxes-header"> <div class="master-checkbox" data-ng-class="{\'igz-icon-checkbox-checked\': $ctrl.isAllItemsChecked,\n' +
27961
27990
  ' \'igz-icon-checkbox-checked-few\': $ctrl.checkedItemsCount > 0 && !$ctrl.isAllItemsChecked,\n' +
27962
- ' \'igz-icon-checkbox-unchecked\': $ctrl.checkedItemsCount === 0}" data-ng-click="$ctrl.onCheckAllItems($event)"> </div> </div> <ul data-ng-if="!$ctrl.groups" class="checkboxes-list checkboxes-regular-list"> <li class="multiple-checkboxes-option" data-ng-if="item.visibility" data-ng-repeat="item in $ctrl.optionList track by $index"> <input class="multiple-checkboxes-option-input" id="{{item.id}}" type="checkbox" data-ng-model="item.checked" data-ng-show="!item.filtered" data-ng-change="$ctrl.updateViewValue()" data-ng-disabled="$ctrl.isDisabled(item)"> <label class="multiple-checkboxes-option-label" for="{{item.id}}" data-ng-class="{\'disabled\': $ctrl.isDisabled(item)}" data-tooltip-enable="{{item.enableTooltip}}" data-uib-tooltip="{{item.tooltipText}}" data-ng-show="!item.filtered" data-tooltip-placement="left" data-tooltip-popup-delay="200" data-tooltip-append-to-body="true"> {{item.label}} </label> </li> </ul> </div> <div data-ng-if="$ctrl.dropdownApply" class="checkboxes-bottom-bar"> <button class="igz-button-just-text small" data-ng-click="$ctrl.onCancel($event)"> {{ \'common:CANCEL\' | i18next }} </button> <button class="igz-button-primary small" data-ng-click="$ctrl.onApply($event)" data-ng-disabled="$ctrl.isApplyButtonDisabled"> {{ \'common:APPLY\' | i18next }} </button> </div> </div> <div data-ng-if="!$ctrl.dropdown && !$ctrl.groups && $ctrl.selectAllNone" class="checkboxes-header"> <div class="master-checkbox" data-ng-class="{\'igz-icon-checkbox-checked\': $ctrl.isAllItemsChecked,\n' +
27991
+ ' \'igz-icon-checkbox-unchecked\': $ctrl.checkedItemsCount === 0}" data-ng-click="$ctrl.onCheckAllItems($event)"> <span class="select-all-option">{{ \'common:SELECT_ALL\' | i18next }}</span> </div> </div> <ul data-ng-if="!$ctrl.groups" class="checkboxes-list checkboxes-regular-list"> <li class="multiple-checkboxes-option" data-ng-if="item.visibility" data-ng-repeat="item in $ctrl.optionList track by $index"> <input class="multiple-checkboxes-option-input" id="{{item.id}}" type="checkbox" data-ng-model="item.checked" data-ng-show="!item.filtered" data-ng-change="$ctrl.updateViewValue()" data-ng-disabled="$ctrl.isDisabled(item)"> <label class="multiple-checkboxes-option-label" for="{{item.id}}" data-ng-class="{\'disabled\': $ctrl.isDisabled(item)}" data-tooltip-enable="{{item.enableTooltip}}" data-uib-tooltip="{{item.tooltipText}}" data-ng-show="!item.filtered" data-tooltip-placement="left" data-tooltip-popup-delay="200" data-tooltip-append-to-body="true"> {{item.label}} </label> </li> </ul> </div> <div data-ng-if="$ctrl.dropdownApply" class="checkboxes-bottom-bar"> <button class="igz-button-just-text small" data-ng-click="$ctrl.onCancel($event)"> {{ \'common:CANCEL\' | i18next }} </button> <button class="igz-button-primary small" data-ng-click="$ctrl.onApply($event)" data-ng-disabled="$ctrl.isApplyButtonDisabled"> {{ \'common:APPLY\' | i18next }} </button> </div> </div> <div data-ng-if="!$ctrl.dropdown && !$ctrl.groups && $ctrl.selectAllNone" class="checkboxes-header"> <div class="master-checkbox" data-ng-class="{\'igz-icon-checkbox-checked\': $ctrl.isAllItemsChecked,\n' +
27963
27992
  ' \'igz-icon-checkbox-checked-few\': $ctrl.checkedItemsCount > 0 && !$ctrl.isAllItemsChecked,\n' +
27964
27993
  ' \'igz-icon-checkbox-unchecked\': $ctrl.checkedItemsCount === 0}" data-ng-click="$ctrl.onCheckAllItems($event)"> </div> </div> <ul class="igz-multiple-checkboxes-list" data-ng-if="!$ctrl.dropdown && !$ctrl.groups"> <li class="multiple-checkboxes-option" data-ng-if="item.visibility" data-ng-repeat="item in $ctrl.optionList track by $index"> <input class="multiple-checkboxes-option-input" id="{{item.id}}" type="checkbox" data-ng-model="item.checked" data-ng-change="$ctrl.updateViewValue()" data-ng-disabled="$ctrl.isDisabled(item)"> <label class="multiple-checkboxes-option-label" for="{{item.id}}" data-ng-class="{\'disabled\': $ctrl.isDisabled(item)}" data-tooltip-enable="{{item.enableTooltip}}" data-uib-tooltip="{{item.tooltipText}}" data-tooltip-placement="left" data-tooltip-popup-delay="200" data-tooltip-append-to-body="true"> {{item.label}} </label> <igz-more-info data-ng-if="item.moreInfo" data-description="{{item.moreInfo}}" data-default-tooltip-placement="top"> </igz-more-info> </li> </ul> <div data-ng-if="$ctrl.groups && !$ctrl.dropdown" class="checkboxes-groups-wrapper"> <div data-ng-repeat="(name, group) in $ctrl.optionList" class="checkboxes-groups"> <div data-ng-if="$ctrl.selectAllNone && group.visible" class="group-title"> <div class="master-checkbox" data-ng-class="{\'igz-icon-checkbox-checked\': group.allItemsChecked,\n' +
27965
27994
  ' \'igz-icon-checkbox-checked-few\': group.itemsChecked > 0 && !group.allItemsChecked,\n' +
@@ -28046,18 +28075,6 @@ module.run(['$templateCache', function($templateCache) {
28046
28075
  }]);
28047
28076
  })();
28048
28077
 
28049
- (function(module) {
28050
- try {
28051
- module = angular.module('iguazio.dashboard-controls.templates');
28052
- } catch (e) {
28053
- module = angular.module('iguazio.dashboard-controls.templates', []);
28054
- }
28055
- module.run(['$templateCache', function($templateCache) {
28056
- $templateCache.put('igz_controls/components/sort-dropdown/sort-dropdown.tpl.html',
28057
- '<div class="igz-custom-dropdown dropdown" data-uib-dropdown data-is-open="$ctrl.isOpen"> <div class="igz-action-item" data-ng-class="{ \'subtemplate-show\': $ctrl.isOpen }" data-uib-dropdown-toggle data-uib-tooltip="{{ \'common:TOOLTIP.SORT\' | i18next }}" data-tooltip-append-to-body="true" data-tooltip-placement="top"> <span class="action-icon igz-icon-sort"></span> </div> <ul class="dropdown-menu dropdown-list" data-ng-if="$ctrl.isOpen"> <li class="dropdown-menu-item" data-ng-repeat="option in $ctrl.sortOptions track by option.value" data-ng-show="option.visible" data-ng-click="$ctrl.handleOptionClick(option)"> <span class="item-name" data-ng-class="{ \'active-item\': option.active }">{{option.label}}</span> <span class="igz-icon-sort-{{option.desc ? \'down\' : \'up\'}}" data-ng-show="option.active"> </span> </li> </ul> </div> ');
28058
- }]);
28059
- })();
28060
-
28061
28078
  (function(module) {
28062
28079
  try {
28063
28080
  module = angular.module('iguazio.dashboard-controls.templates');
@@ -28077,8 +28094,8 @@ try {
28077
28094
  module = angular.module('iguazio.dashboard-controls.templates', []);
28078
28095
  }
28079
28096
  module.run(['$templateCache', function($templateCache) {
28080
- $templateCache.put('igz_controls/components/text-edit/text-edit.tpl.html',
28081
- '<div class="text-preview-directive-wrapper"> <div class="title text-ellipsis" tooltip="{{::$ctrl.label}}" data-tooltip-append-to-body="true" data-tooltip-popup-delay="400" data-tooltip-placement="bottom-left"> {{::$ctrl.label}} </div> <div class="text-preview-wrapper"> <div class="word-wrap-checkbox-wrapper"> <div class="word-wrap-checkbox col-50 col-checkbox"> <input id="wrap-checkbox" type="checkbox" data-ng-model="$ctrl.enableWordWrap"> <label for="wrap-checkbox">{{ \'common:WRAP\' | i18next }}</label> </div> </div> <ncl-monaco class="monaco-code-editor" data-function-source-code="$ctrl.content" data-selected-theme="\'vs-light\'" data-language="$ctrl.language" data-on-change-source-code-callback="$ctrl.onChangeText(sourceCode)" data-word-wrap="$ctrl.enableWordWrap"> </ncl-monaco> </div> <div class="close-button igz-icon-close" data-ng-click="$ctrl.onClose()"></div> <div class="buttons"> <button class="igz-button-just-text" tabindex="0" data-ng-hide="$ctrl.isLoadingState" data-ng-click="$ctrl.onClose()" data-ng-keydown="$ctrl.onClose($event)" data-test-id="general.text-edit_close.button"> {{::$ctrl.closeButtonText}} </button> <button class="igz-button-primary" tabindex="0" data-ng-hide="$ctrl.isLoadingState" data-ng-class="{\'disabled\': !$ctrl.fileChanged}" data-ng-click="$ctrl.onSubmit()" data-test-id="general.text-edit_save.button"> {{::$ctrl.submitButtonText}} </button> <button class="igz-button-primary" data-ng-show="$ctrl.isLoadingState"> {{ \'common:LOADING_CAPITALIZE_ELLIPSIS\' | i18next }} </button> <button class="error-text text-centered error-relative" data-ng-hide="$ctrl.serverError === \'\'"> {{ \'common:ERROR_COLON\' | i18next }} {{$ctrl.serverError}} </button> </div> </div> ');
28097
+ $templateCache.put('igz_controls/components/sort-dropdown/sort-dropdown.tpl.html',
28098
+ '<div class="igz-custom-dropdown dropdown" data-uib-dropdown data-is-open="$ctrl.isOpen"> <div class="igz-action-item" data-ng-class="{ \'subtemplate-show\': $ctrl.isOpen }" data-uib-dropdown-toggle data-uib-tooltip="{{ \'common:TOOLTIP.SORT\' | i18next }}" data-tooltip-append-to-body="true" data-tooltip-placement="top"> <span class="action-icon igz-icon-sort"></span> </div> <ul class="dropdown-menu dropdown-list" data-ng-if="$ctrl.isOpen"> <li class="dropdown-menu-item" data-ng-repeat="option in $ctrl.sortOptions track by option.value" data-ng-show="option.visible" data-ng-click="$ctrl.handleOptionClick(option)"> <span class="item-name" data-ng-class="{ \'active-item\': option.active }">{{option.label}}</span> <span class="igz-icon-sort-{{option.desc ? \'down\' : \'up\'}}" data-ng-show="option.active"> </span> </li> </ul> </div> ');
28082
28099
  }]);
28083
28100
  })();
28084
28101
 
@@ -28089,8 +28106,8 @@ try {
28089
28106
  module = angular.module('iguazio.dashboard-controls.templates', []);
28090
28107
  }
28091
28108
  module.run(['$templateCache', function($templateCache) {
28092
- $templateCache.put('igz_controls/components/toast-status-panel/toast-status-panel.tpl.html',
28093
- '<div class="toast-status-panel" data-ng-show="$ctrl.isToastPanelShown"> <div class="btn-close igz-icon-close" data-ng-if="!$ctrl.permanent && $ctrl.panelState !== \'in-progress\'" data-ng-click="$ctrl.closeToastPanel()"> </div> <div class="panel-status"> <span class="panel-status-icon"></span> <div class="igz-scrollable-container msg-scrollable-container" data-ng-scrollbars> <div class="panel-status-msg" data-ng-if="$ctrl.isTranscludePassed" data-ng-transclude></div> <div class="panel-status-msg" data-ng-if="!$ctrl.isTranscludePassed"> {{$ctrl.getStateMessage($ctrl.panelState)}} </div> </div> </div> </div> ');
28109
+ $templateCache.put('igz_controls/components/text-edit/text-edit.tpl.html',
28110
+ '<div class="text-preview-directive-wrapper"> <div class="title text-ellipsis" tooltip="{{::$ctrl.label}}" data-tooltip-append-to-body="true" data-tooltip-popup-delay="400" data-tooltip-placement="bottom-left"> {{::$ctrl.label}} </div> <div class="text-preview-wrapper"> <div class="word-wrap-checkbox-wrapper"> <div class="word-wrap-checkbox col-50 col-checkbox"> <input id="wrap-checkbox" type="checkbox" data-ng-model="$ctrl.enableWordWrap"> <label for="wrap-checkbox">{{ \'common:WRAP\' | i18next }}</label> </div> </div> <ncl-monaco class="monaco-code-editor" data-function-source-code="$ctrl.content" data-selected-theme="\'vs-light\'" data-language="$ctrl.language" data-on-change-source-code-callback="$ctrl.onChangeText(sourceCode)" data-word-wrap="$ctrl.enableWordWrap"> </ncl-monaco> </div> <div class="close-button igz-icon-close" data-ng-click="$ctrl.onClose()"></div> <div class="buttons"> <button class="igz-button-just-text" tabindex="0" data-ng-hide="$ctrl.isLoadingState" data-ng-click="$ctrl.onClose()" data-ng-keydown="$ctrl.onClose($event)" data-test-id="general.text-edit_close.button"> {{::$ctrl.closeButtonText}} </button> <button class="igz-button-primary" tabindex="0" data-ng-hide="$ctrl.isLoadingState" data-ng-class="{\'disabled\': !$ctrl.fileChanged}" data-ng-click="$ctrl.onSubmit()" data-test-id="general.text-edit_save.button"> {{::$ctrl.submitButtonText}} </button> <button class="igz-button-primary" data-ng-show="$ctrl.isLoadingState"> {{ \'common:LOADING_CAPITALIZE_ELLIPSIS\' | i18next }} </button> <button class="error-text text-centered error-relative" data-ng-hide="$ctrl.serverError === \'\'"> {{ \'common:ERROR_COLON\' | i18next }} {{$ctrl.serverError}} </button> </div> </div> ');
28094
28111
  }]);
28095
28112
  })();
28096
28113
 
@@ -28123,6 +28140,18 @@ module.run(['$templateCache', function($templateCache) {
28123
28140
  }]);
28124
28141
  })();
28125
28142
 
28143
+ (function(module) {
28144
+ try {
28145
+ module = angular.module('iguazio.dashboard-controls.templates');
28146
+ } catch (e) {
28147
+ module = angular.module('iguazio.dashboard-controls.templates', []);
28148
+ }
28149
+ module.run(['$templateCache', function($templateCache) {
28150
+ $templateCache.put('igz_controls/components/toast-status-panel/toast-status-panel.tpl.html',
28151
+ '<div class="toast-status-panel" data-ng-show="$ctrl.isToastPanelShown"> <div class="btn-close igz-icon-close" data-ng-if="!$ctrl.permanent && $ctrl.panelState !== \'in-progress\'" data-ng-click="$ctrl.closeToastPanel()"> </div> <div class="panel-status"> <span class="panel-status-icon"></span> <div class="igz-scrollable-container msg-scrollable-container" data-ng-scrollbars> <div class="panel-status-msg" data-ng-if="$ctrl.isTranscludePassed" data-ng-transclude></div> <div class="panel-status-msg" data-ng-if="!$ctrl.isTranscludePassed"> {{$ctrl.getStateMessage($ctrl.panelState)}} </div> </div> </div> </div> ');
28152
+ }]);
28153
+ })();
28154
+
28126
28155
  (function(module) {
28127
28156
  try {
28128
28157
  module = angular.module('iguazio.dashboard-controls.templates');
@@ -28163,8 +28192,8 @@ try {
28163
28192
  module = angular.module('iguazio.dashboard-controls.templates', []);
28164
28193
  }
28165
28194
  module.run(['$templateCache', function($templateCache) {
28166
- $templateCache.put('nuclio/functions/deploy-deleted-function-dialog/deploy-deleted-function-dialog.tpl.html',
28167
- '<div class="deploy-deleted-function-dialog"> <div class="close-button igz-icon-close" data-ng-click="$ctrl.onClose()"></div> <div class="title"> {{ \'functions:DELETED_FUNCTION_WHILE_DEPLOYING_MSG\' | i18next }} </div> <div class="buttons"> <button class="ncl-secondary-button igz-button-just-text" tabindex="0" data-ng-click="$ctrl.goToFunctions()"> {{ \'functions:GO_TO_FUNCTIONS\' | i18next }} </button> <button class="ncl-primary-button igz-button-primary" tabindex="1" data-ng-click="$ctrl.deployFunction($event)"> {{ \'functions:DEPLOY\' | i18next }} </button> </div> </div> ');
28195
+ $templateCache.put('nuclio/functions/duplicate-function-dialog/duplicate-function-dialog.tpl.html',
28196
+ '<div class="close-button igz-icon-close" data-ng-click="$ctrl.onClose()"></div> <div class="title"> {{ \'functions:DUPLICATE_FUNCTION\' | i18next }} </div> <div class="main-content"> <form name="$ctrl.duplicateFunctionForm" novalidate data-ng-keydown="$ctrl.duplicateFunction($event)"> <div class="field-group function-name-group"> <div class="field-label function-name-label"> {{ \'common:FUNCTION_NAME\' | i18next }} </div> <div class="field-input function-name-input"> <igz-validating-input-field data-field-type="input" data-input-name="name" data-input-value="$ctrl.newFunctionName" data-is-focused="true" data-form-object="$ctrl.duplicateFunctionForm" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-validation-is-required="true" data-validation-rules="$ctrl.validationRules.functionName" data-validation-max-length="{{$ctrl.maxLengths.functionName}}" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_FUNCTION_NAME\' | i18next }}"> </igz-validating-input-field> </div> </div> <div class="subtitle" data-ng-if="$ctrl.duplicateInputFieldsData.length > 0"> {{ \'functions:DUPLICATE_FUNCTION_SUBTITLE\' | i18next }} </div> <div class="field-group" data-ng-repeat="inputFieldData in $ctrl.duplicateInputFieldsData track by inputFieldData.path"> <div class="field-label function-configuration-label"> {{inputFieldData.title}} <igz-more-info data-ng-if="inputFieldData.moreInfoData" data-description="{{inputFieldData.moreInfoData}}" data-default-tooltip-placement="top"> </igz-more-info> </div> <div class="field-label function-configuration-path"> {{ \'common:PATH\' | i18next }}: {{inputFieldData.path}} </div> <div class="field-input function-configuration-input"> <igz-validating-input-field data-field-type="input" data-input-name="{{inputFieldData.path}}" data-form-object="$ctrl.duplicateFunctionForm" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-validation-is-required="true" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_VALUE\' | i18next }}"> </igz-validating-input-field> </div> </div> </form> </div> <div class="buttons"> <button class="ncl-secondary-button igz-button-just-text" data-test-id="functions.duplicate_function_cancel.button" tabindex="0" data-ng-click="$ctrl.onClose()" data-ng-keydown="$ctrl.onClose($event)"> {{ \'common:CANCEL\' | i18next }} </button> <button class="ncl-primary-button igz-button-primary" data-test-id="functions.duplicate_function_duplicate.button" tabindex="0" data-ng-click="$ctrl.duplicateFunction()" data-ng-keydown="$ctrl.duplicateFunction($event)" data-ng-hide="$ctrl.isLoadingState"> {{ \'common:DUPLICATE\' | i18next }} </button> <button class="ncl-primary-button igz-button-primary" data-ng-show="$ctrl.isLoadingState"> {{ \'common:LOADING_CAPITALIZE_ELLIPSIS\' | i18next }} </button> </div> ');
28168
28197
  }]);
28169
28198
  })();
28170
28199
 
@@ -28175,8 +28204,8 @@ try {
28175
28204
  module = angular.module('iguazio.dashboard-controls.templates', []);
28176
28205
  }
28177
28206
  module.run(['$templateCache', function($templateCache) {
28178
- $templateCache.put('nuclio/functions/duplicate-function-dialog/duplicate-function-dialog.tpl.html',
28179
- '<div class="close-button igz-icon-close" data-ng-click="$ctrl.onClose()"></div> <div class="title"> {{ \'functions:DUPLICATE_FUNCTION\' | i18next }} </div> <div class="main-content"> <form name="$ctrl.duplicateFunctionForm" novalidate data-ng-keydown="$ctrl.duplicateFunction($event)"> <div class="field-group function-name-group"> <div class="field-label function-name-label"> {{ \'common:FUNCTION_NAME\' | i18next }} </div> <div class="field-input function-name-input"> <igz-validating-input-field data-field-type="input" data-input-name="name" data-input-value="$ctrl.newFunctionName" data-is-focused="true" data-form-object="$ctrl.duplicateFunctionForm" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-validation-is-required="true" data-validation-rules="$ctrl.validationRules.functionName" data-validation-max-length="{{$ctrl.maxLengths.functionName}}" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_FUNCTION_NAME\' | i18next }}"> </igz-validating-input-field> </div> </div> <div class="subtitle" data-ng-if="$ctrl.duplicateInputFieldsData.length > 0"> {{ \'functions:DUPLICATE_FUNCTION_SUBTITLE\' | i18next }} </div> <div class="field-group" data-ng-repeat="inputFieldData in $ctrl.duplicateInputFieldsData track by inputFieldData.path"> <div class="field-label function-configuration-label"> {{inputFieldData.title}} <igz-more-info data-ng-if="inputFieldData.moreInfoData" data-description="{{inputFieldData.moreInfoData}}" data-default-tooltip-placement="top"> </igz-more-info> </div> <div class="field-label function-configuration-path"> {{ \'common:PATH\' | i18next }}: {{inputFieldData.path}} </div> <div class="field-input function-configuration-input"> <igz-validating-input-field data-field-type="input" data-input-name="{{inputFieldData.path}}" data-form-object="$ctrl.duplicateFunctionForm" data-update-data-callback="$ctrl.inputValueCallback(newData, field)" data-validation-is-required="true" data-placeholder-text="{{ \'functions:PLACEHOLDER.ENTER_VALUE\' | i18next }}"> </igz-validating-input-field> </div> </div> </form> </div> <div class="buttons"> <button class="ncl-secondary-button igz-button-just-text" data-test-id="functions.duplicate_function_cancel.button" tabindex="0" data-ng-click="$ctrl.onClose()" data-ng-keydown="$ctrl.onClose($event)"> {{ \'common:CANCEL\' | i18next }} </button> <button class="ncl-primary-button igz-button-primary" data-test-id="functions.duplicate_function_duplicate.button" tabindex="0" data-ng-click="$ctrl.duplicateFunction()" data-ng-keydown="$ctrl.duplicateFunction($event)" data-ng-hide="$ctrl.isLoadingState"> {{ \'common:DUPLICATE\' | i18next }} </button> <button class="ncl-primary-button igz-button-primary" data-ng-show="$ctrl.isLoadingState"> {{ \'common:LOADING_CAPITALIZE_ELLIPSIS\' | i18next }} </button> </div> ');
28207
+ $templateCache.put('nuclio/functions/deploy-deleted-function-dialog/deploy-deleted-function-dialog.tpl.html',
28208
+ '<div class="deploy-deleted-function-dialog"> <div class="close-button igz-icon-close" data-ng-click="$ctrl.onClose()"></div> <div class="title"> {{ \'functions:DELETED_FUNCTION_WHILE_DEPLOYING_MSG\' | i18next }} </div> <div class="buttons"> <button class="ncl-secondary-button igz-button-just-text" tabindex="0" data-ng-click="$ctrl.goToFunctions()"> {{ \'functions:GO_TO_FUNCTIONS\' | i18next }} </button> <button class="ncl-primary-button igz-button-primary" tabindex="1" data-ng-click="$ctrl.deployFunction($event)"> {{ \'functions:DEPLOY\' | i18next }} </button> </div> </div> ');
28180
28209
  }]);
28181
28210
  })();
28182
28211
 
@@ -28277,8 +28306,8 @@ try {
28277
28306
  module = angular.module('iguazio.dashboard-controls.templates', []);
28278
28307
  }
28279
28308
  module.run(['$templateCache', function($templateCache) {
28280
- $templateCache.put('igz_controls/components/info-page/info-page-filters/info-page-filters.tpl.html',
28281
- '<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> ');
28309
+ $templateCache.put('igz_controls/components/info-page/info-page-content/info-page-content.tpl.html',
28310
+ '<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>');
28282
28311
  }]);
28283
28312
  })();
28284
28313
 
@@ -28289,8 +28318,8 @@ try {
28289
28318
  module = angular.module('iguazio.dashboard-controls.templates', []);
28290
28319
  }
28291
28320
  module.run(['$templateCache', function($templateCache) {
28292
- $templateCache.put('igz_controls/components/info-page/info-page-content/info-page-content.tpl.html',
28293
- '<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>');
28321
+ $templateCache.put('igz_controls/components/info-page/info-page-filters/info-page-filters.tpl.html',
28322
+ '<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 || $ctrl.applyIsDisabled" data-ng-if="$ctrl.applyFilters">{{ \'common:APPLY\' | i18next }} </button> </div> </div> </div> ');
28294
28323
  }]);
28295
28324
  })();
28296
28325
 
@@ -28325,8 +28354,9 @@ try {
28325
28354
  module = angular.module('iguazio.dashboard-controls.templates', []);
28326
28355
  }
28327
28356
  module.run(['$templateCache', function($templateCache) {
28328
- $templateCache.put('nuclio/common/components/deploy-log/deploy-log.tpl.html',
28329
- '<div class="ncl-deploy-log-wrapper"> <div class="log-panel igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="log-entry" data-ng-if="$ctrl.lodash.isArray($ctrl.logEntries)" data-ng-repeat="log in $ctrl.logEntries track by $index"> <span class="log-entry-time" data-ng-if="log.time">[{{log.time | date:\'HH:mm:ss.sss\'}}]</span> <span class="log-entry-level-{{log.level}}" data-ng-if="log.level">&nbsp;({{$ctrl.getLogLevel(log.level)}})</span> <span class="log-entry-message">&nbsp;{{log.message}}</span> <span class="log-entry-error" data-ng-if="log.err">&nbsp;{{log.err}}</span> <span class="log-entry-params">&nbsp;{{$ctrl.getLogParams(log)}}</span> </div> <div class="log-entry" data-ng-if="!$ctrl.lodash.isArray($ctrl.logEntries)"> {{$ctrl.logEntries}} </div> </div> </div> ');
28357
+ $templateCache.put('nuclio/common/components/collapsing-row/collapsing-row.tpl.html',
28358
+ '<div class="ncl-collapsing-row"> <div class="title-block common-table-row" data-ng-class="{\'collapsed\': !$ctrl.item.ui.editModeActive}"> <div class="common-table-cell row-collapse"> <span class="collapse-icon" data-ng-click="$ctrl.onCollapse($event)" data-ng-class="{\'collapsed igz-icon-right\': !$ctrl.item.ui.editModeActive,\n' +
28359
+ ' \'igz-icon-down\': $ctrl.item.ui.editModeActive}"> </span> </div> <div data-ng-show="!$ctrl.item.ui.editModeActive" class="igz-row common-table-cells-container item-row"> <div class="item-name" data-ng-if="!$ctrl.isNil($ctrl.item.name)"> <div class="text-ellipsis"> {{$ctrl.item.name}} </div> <igz-more-info data-ng-if="$ctrl.item.ui.moreInfoMsg.name" data-trigger="click" data-is-html-enabled="true" data-is-open="$ctrl.item.ui.moreInfoMsg.name.isOpen" data-icon-type="{{$ctrl.item.ui.moreInfoMsg.name.type}}" data-description="{{$ctrl.item.ui.moreInfoMsg.name.description}}"> </igz-more-info> </div> <div class="text-ellipsis item-name" data-ng-if="!$ctrl.isNil($ctrl.item.volumeMount.name)"> {{ $ctrl.item.volumeMount.name }} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.ui.selectedClass)"> {{$ctrl.item.ui.selectedClass.name}} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.volume.hostPath)"> {{ \'common:HOST_PATH\' | i18next }} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume)"> {{ \'functions:V3IO\' | i18next }} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.volume.secret.secretName)"> {{ \'functions:SECRET\' | i18next }} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.volume.configMap.name)"> {{ \'functions:CONFIG_MAP\' | i18next }} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.volume.persistentVolumeClaim.claimName)"> {{ \'functions:PVC\' | i18next }} </div> <div class="igz-col-70 item-info"> <div data-ng-hide="$ctrl.item.ui.editModeActive" class="collapsed-item-info-block"> <span data-ng-if="!$ctrl.isNil($ctrl.item.url)"> <span class="field-label">{{ \'common:URL\' | i18next }}</span>:&nbsp;{{ $ctrl.item.url }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.maxWorkers)"> <span class="field-label">{{ \'functions:MAX_WORKERS\' | i18next }}</span>:&nbsp;{{ $ctrl.item.maxWorkers }};&nbsp; </span> <span data-ng-if="$ctrl.isNumber($ctrl.item.workerAvailabilityTimeoutMilliseconds)"> <span class="field-label">{{ \'functions:WORKER_AVAILABILITY_TIMEOUT\' | i18next }}</span>:&nbsp;{{ $ctrl.item.workerAvailabilityTimeoutMilliseconds }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.secret)"> <span class="field-label">{{ \'functions:SECRET\' | i18next }}</span>:&nbsp;{{ $ctrl.getMask($ctrl.item.secret) }};&nbsp; </span> <span data-ng-repeat="(key, value) in $ctrl.item.attributes" data-ng-if="$ctrl.displayedAttributesFields.includes(key)"> <span class="field-label">{{ key }}</span>:&nbsp;{{ $ctrl.getAttributeValue(key, value) }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.annotations)"> <span class="field-label">{{ \'functions:ANNOTATIONS\' | i18next }}</span>:&nbsp;{{ $ctrl.item.annotations }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.username)"> <span class="field-label">{{ \'common:USERNAME\' | i18next }}</span>:&nbsp;{{ $ctrl.item.username }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.password)"> <span class="field-label">{{ \'common:PASSWORD\' | i18next }}</span>:&nbsp;{{ $ctrl.getMask($ctrl.item.password) }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volumeMount.mountPath)"> <span class="field-label">{{ \'functions:MOUNT_PATH\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volumeMount.mountPath }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volume.hostPath)"> <span class="field-label">{{ \'common:HOST_PATH\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volume.hostPath.path }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volumeMount.readOnly)"> <span class="field-label">{{ \'common:READ_ONLY\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volumeMount.readOnly }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume.options.container)"> <span class="field-label">{{ \'functions:CONTAINER_NAME\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volume.flexVolume.options.container }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume.options.subPath)"> <span class="field-label">{{ \'functions:SUB_PATH\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volume.flexVolume.options.subPath }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volume.configMap.name)"> <span class="field-label">{{ \'functions:CONFIG_MAP_NAME\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volume.configMap.name }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volume.persistentVolumeClaim.claimName)"> <span class="field-label">{{ \'functions:PERSISTENT_VOLUME_CLAIM_NAME\' | i18next }}</span>:&nbsp; {{ $ctrl.item.volume.persistentVolumeClaim.claimName }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.workerAllocatorName)"> <span class="field-label">{{ \'functions:WORKER_ALLOCATOR_NAME\' | i18next }}</span>:&nbsp;{{ $ctrl.item.workerAllocatorName }};&nbsp; </span> </div> </div> </div> <div data-ng-transclude class="igz-col-100" data-ng-if="$ctrl.item.ui.editModeActive"></div> <div class="common-table-cell actions-menu" data-ng-hide="$ctrl.readOnly" data-ng-if="::$ctrl.showDotMenu()"> <igz-action-menu data-actions="$ctrl.actions" data-on-fire-action="$ctrl.onFireAction"> </igz-action-menu> </div> <div class="common-table-cell single-action" data-ng-hide="$ctrl.readOnly" data-ng-if="::!$ctrl.showDotMenu()"> <div class="igz-action-panel"> <div class="actions-list"> <div class="igz-action-item" data-test-id="{{$ctrl.deleteTestId}}" data-ng-click="$ctrl.onClickAction($ctrl.actions[0])" data-uib-tooltip="{{$ctrl.actions[0].label}}" data-tooltip-popup-delay="1000" data-tooltip-placement="bottom" data-tooltip-append-to-body="true"> <span class="action-icon" data-ng-class="$ctrl.actions[0].icon"> </span> </div> </div> </div> </div> </div> </div> ');
28330
28360
  }]);
28331
28361
  })();
28332
28362
 
@@ -28337,9 +28367,8 @@ try {
28337
28367
  module = angular.module('iguazio.dashboard-controls.templates', []);
28338
28368
  }
28339
28369
  module.run(['$templateCache', function($templateCache) {
28340
- $templateCache.put('nuclio/common/components/collapsing-row/collapsing-row.tpl.html',
28341
- '<div class="ncl-collapsing-row"> <div class="title-block common-table-row" data-ng-class="{\'collapsed\': !$ctrl.item.ui.editModeActive}"> <div class="common-table-cell row-collapse"> <span class="collapse-icon" data-ng-click="$ctrl.onCollapse($event)" data-ng-class="{\'collapsed igz-icon-right\': !$ctrl.item.ui.editModeActive,\n' +
28342
- ' \'igz-icon-down\': $ctrl.item.ui.editModeActive}"> </span> </div> <div data-ng-show="!$ctrl.item.ui.editModeActive" class="igz-row common-table-cells-container item-row"> <div class="item-name" data-ng-if="!$ctrl.isNil($ctrl.item.name)"> <div class="text-ellipsis"> {{$ctrl.item.name}} </div> <igz-more-info data-ng-if="$ctrl.item.ui.moreInfoMsg.name" data-trigger="click" data-is-html-enabled="true" data-is-open="$ctrl.item.ui.moreInfoMsg.name.isOpen" data-icon-type="{{$ctrl.item.ui.moreInfoMsg.name.type}}" data-description="{{$ctrl.item.ui.moreInfoMsg.name.description}}"> </igz-more-info> </div> <div class="text-ellipsis item-name" data-ng-if="!$ctrl.isNil($ctrl.item.volumeMount.name)"> {{ $ctrl.item.volumeMount.name }} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.ui.selectedClass)"> {{$ctrl.item.ui.selectedClass.name}} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.volume.hostPath)"> {{ \'common:HOST_PATH\' | i18next }} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume)"> {{ \'functions:V3IO\' | i18next }} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.volume.secret.secretName)"> {{ \'functions:SECRET\' | i18next }} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.volume.configMap.name)"> {{ \'functions:CONFIG_MAP\' | i18next }} </div> <div class="item-class" data-ng-if="!$ctrl.isNil($ctrl.item.volume.persistentVolumeClaim.claimName)"> {{ \'functions:PVC\' | i18next }} </div> <div class="igz-col-70 item-info"> <div data-ng-hide="$ctrl.item.ui.editModeActive" class="collapsed-item-info-block"> <span data-ng-if="!$ctrl.isNil($ctrl.item.url)"> <span class="field-label">{{ \'common:URL\' | i18next }}</span>:&nbsp;{{ $ctrl.item.url }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.maxWorkers)"> <span class="field-label">{{ \'functions:MAX_WORKERS\' | i18next }}</span>:&nbsp;{{ $ctrl.item.maxWorkers }};&nbsp; </span> <span data-ng-if="$ctrl.isNumber($ctrl.item.workerAvailabilityTimeoutMilliseconds)"> <span class="field-label">{{ \'functions:WORKER_AVAILABILITY_TIMEOUT\' | i18next }}</span>:&nbsp;{{ $ctrl.item.workerAvailabilityTimeoutMilliseconds }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.secret)"> <span class="field-label">{{ \'functions:SECRET\' | i18next }}</span>:&nbsp;{{ $ctrl.getMask($ctrl.item.secret) }};&nbsp; </span> <span data-ng-repeat="(key, value) in $ctrl.item.attributes" data-ng-if="$ctrl.displayedAttributesFields.includes(key)"> <span class="field-label">{{ key }}</span>:&nbsp;{{ $ctrl.getAttributeValue(key, value) }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.annotations)"> <span class="field-label">{{ \'functions:ANNOTATIONS\' | i18next }}</span>:&nbsp;{{ $ctrl.item.annotations }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.username)"> <span class="field-label">{{ \'common:USERNAME\' | i18next }}</span>:&nbsp;{{ $ctrl.item.username }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.password)"> <span class="field-label">{{ \'common:PASSWORD\' | i18next }}</span>:&nbsp;{{ $ctrl.getMask($ctrl.item.password) }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volumeMount.mountPath)"> <span class="field-label">{{ \'functions:MOUNT_PATH\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volumeMount.mountPath }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volume.hostPath)"> <span class="field-label">{{ \'common:HOST_PATH\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volume.hostPath.path }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volumeMount.readOnly)"> <span class="field-label">{{ \'common:READ_ONLY\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volumeMount.readOnly }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume.options.container)"> <span class="field-label">{{ \'functions:CONTAINER_NAME\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volume.flexVolume.options.container }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volume.flexVolume.options.subPath)"> <span class="field-label">{{ \'functions:SUB_PATH\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volume.flexVolume.options.subPath }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volume.configMap.name)"> <span class="field-label">{{ \'functions:CONFIG_MAP_NAME\' | i18next }}</span>:&nbsp;{{ $ctrl.item.volume.configMap.name }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.volume.persistentVolumeClaim.claimName)"> <span class="field-label">{{ \'functions:PERSISTENT_VOLUME_CLAIM_NAME\' | i18next }}</span>:&nbsp; {{ $ctrl.item.volume.persistentVolumeClaim.claimName }};&nbsp; </span> <span data-ng-if="!$ctrl.isNil($ctrl.item.workerAllocatorName)"> <span class="field-label">{{ \'functions:WORKER_ALLOCATOR_NAME\' | i18next }}</span>:&nbsp;{{ $ctrl.item.workerAllocatorName }};&nbsp; </span> </div> </div> </div> <div data-ng-transclude class="igz-col-100" data-ng-if="$ctrl.item.ui.editModeActive"></div> <div class="common-table-cell actions-menu" data-ng-hide="$ctrl.readOnly" data-ng-if="::$ctrl.showDotMenu()"> <igz-action-menu data-actions="$ctrl.actions" data-on-fire-action="$ctrl.onFireAction"> </igz-action-menu> </div> <div class="common-table-cell single-action" data-ng-hide="$ctrl.readOnly" data-ng-if="::!$ctrl.showDotMenu()"> <div class="igz-action-panel"> <div class="actions-list"> <div class="igz-action-item" data-test-id="{{$ctrl.deleteTestId}}" data-ng-click="$ctrl.onClickAction($ctrl.actions[0])" data-uib-tooltip="{{$ctrl.actions[0].label}}" data-tooltip-popup-delay="1000" data-tooltip-placement="bottom" data-tooltip-append-to-body="true"> <span class="action-icon" data-ng-class="$ctrl.actions[0].icon"> </span> </div> </div> </div> </div> </div> </div> ');
28370
+ $templateCache.put('nuclio/common/components/deploy-log/deploy-log.tpl.html',
28371
+ '<div class="ncl-deploy-log-wrapper"> <div class="log-panel igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="log-entry" data-ng-if="$ctrl.lodash.isArray($ctrl.logEntries)" data-ng-repeat="log in $ctrl.logEntries track by $index"> <span class="log-entry-time" data-ng-if="log.time">[{{log.time | date:\'HH:mm:ss.sss\'}}]</span> <span class="log-entry-level-{{log.level}}" data-ng-if="log.level">&nbsp;({{$ctrl.getLogLevel(log.level)}})</span> <span class="log-entry-message">&nbsp;{{log.message}}</span> <span class="log-entry-error" data-ng-if="log.err">&nbsp;{{log.err}}</span> <span class="log-entry-params">&nbsp;{{$ctrl.getLogParams(log)}}</span> </div> <div class="log-entry" data-ng-if="!$ctrl.lodash.isArray($ctrl.logEntries)"> {{$ctrl.logEntries}} </div> </div> </div> ');
28343
28372
  }]);
28344
28373
  })();
28345
28374
 
@@ -28363,8 +28392,9 @@ try {
28363
28392
  module = angular.module('iguazio.dashboard-controls.templates', []);
28364
28393
  }
28365
28394
  module.run(['$templateCache', function($templateCache) {
28366
- $templateCache.put('nuclio/common/components/function-config-dialog/function-config-dialog.tpl.html',
28367
- '<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> ');
28395
+ $templateCache.put('nuclio/common/components/monaco/monaco.tpl.html',
28396
+ '<div class="ncl-monaco"> <div class="ncl-monaco-wrapper" data-ng-class="{\'ncl-monaco-dark\': $ctrl.selectedTheme === \'vs-dark\',\n' +
28397
+ ' \'no-top-padding\': $ctrl.noTopPadding}"> <div data-ng-if="$ctrl.showTextSizeDropdown" class="ncl-monaco-top-row"> <ncl-text-size-dropdown data-update-data-callback="$ctrl.onTextSizeChange(newTextSize)"> </ncl-text-size-dropdown> </div> <div class="ncl-monaco-editor" igz-monaco-editor data-font-size="$ctrl.selectedTextSize" data-code-file="selectedCodeFile" data-editor-theme="$ctrl.selectedTheme" data-file-language="selectedFileLanguage" data-mini-monaco="$ctrl.miniMonaco" data-show-line-numbers="$ctrl.showLineNumbers" data-read-only="$ctrl.readOnly" data-on-code-change="$ctrl.onCodeChange" data-word-wrap="$ctrl.wordWrap"> </div> </div> </div> ');
28368
28398
  }]);
28369
28399
  })();
28370
28400
 
@@ -28393,8 +28423,8 @@ try {
28393
28423
  module = angular.module('iguazio.dashboard-controls.templates', []);
28394
28424
  }
28395
28425
  module.run(['$templateCache', function($templateCache) {
28396
- $templateCache.put('nuclio/common/components/navigation-tabs/navigation-tabs.tpl.html',
28397
- '<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> ');
28426
+ $templateCache.put('nuclio/common/components/function-config-dialog/function-config-dialog.tpl.html',
28427
+ '<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> ');
28398
28428
  }]);
28399
28429
  })();
28400
28430
 
@@ -28405,9 +28435,8 @@ try {
28405
28435
  module = angular.module('iguazio.dashboard-controls.templates', []);
28406
28436
  }
28407
28437
  module.run(['$templateCache', function($templateCache) {
28408
- $templateCache.put('nuclio/common/components/monaco/monaco.tpl.html',
28409
- '<div class="ncl-monaco"> <div class="ncl-monaco-wrapper" data-ng-class="{\'ncl-monaco-dark\': $ctrl.selectedTheme === \'vs-dark\',\n' +
28410
- ' \'no-top-padding\': $ctrl.noTopPadding}"> <div data-ng-if="$ctrl.showTextSizeDropdown" class="ncl-monaco-top-row"> <ncl-text-size-dropdown data-update-data-callback="$ctrl.onTextSizeChange(newTextSize)"> </ncl-text-size-dropdown> </div> <div class="ncl-monaco-editor" igz-monaco-editor data-font-size="$ctrl.selectedTextSize" data-code-file="selectedCodeFile" data-editor-theme="$ctrl.selectedTheme" data-file-language="selectedFileLanguage" data-mini-monaco="$ctrl.miniMonaco" data-show-line-numbers="$ctrl.showLineNumbers" data-read-only="$ctrl.readOnly" data-on-code-change="$ctrl.onCodeChange" data-word-wrap="$ctrl.wordWrap"> </div> </div> </div> ');
28438
+ $templateCache.put('nuclio/common/components/navigation-tabs/navigation-tabs.tpl.html',
28439
+ '<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> ');
28411
28440
  }]);
28412
28441
  })();
28413
28442
 
@@ -28493,8 +28522,8 @@ try {
28493
28522
  module = angular.module('iguazio.dashboard-controls.templates', []);
28494
28523
  }
28495
28524
  module.run(['$templateCache', function($templateCache) {
28496
- $templateCache.put('nuclio/functions/version/version-configuration/version-configuration.tpl.html',
28497
- '<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> ');
28525
+ $templateCache.put('nuclio/functions/version/version-monitoring/version-monitoring.tpl.html',
28526
+ '<div class="ncl-version-monitoring ncl-version" data-igz-extend-background> <div class="igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="ncl-version-monitoring-wrapper"> <div class="row"> <div class="monitoring-block"> <div class="invocation-block"> <div class="internal-invocation-urls"> <span class="title">{{ \'functions:INTERNAL_INVOCATION_URLS\' | i18next }}: </span> <ul class="invocation-url-list" ng-if="!$ctrl.isFunctionDeploying()"> <li class="monitoring-invocation-url-wrapper" data-ng-repeat="url in $ctrl.version.status.internalInvocationUrls"> <span>{{url}}</span> <div class="igz-action-panel"> <div class="actions-list"> <igz-copy-to-clipboard data-value="url"></igz-copy-to-clipboard> </div> </div> </li> </ul> <p data-ng-if="!$ctrl.version.status.internalInvocationUrls.length || $ctrl.isFunctionDeploying()" data-ng-i18next="common:N_A"></p> </div> <div class="external-invocation-urls"> <span class="title">{{ \'functions:EXTERNAL_INVOCATION_URLS\' | i18next }}: </span> <igz-more-info data-description="{{ \'functions:TOOLTIP.TO_MAKE_FUNCTION_ACCESSIBLE\' | i18next:{functionId: $ctrl.version.metadata.name} }}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> <ul class="invocation-url-list" data-ng-if="$ctrl.version.status.externalInvocationUrls.length > 0 && !$ctrl.isFunctionDeploying()"> <li class="monitoring-invocation-url-wrapper" data-ng-repeat="url in $ctrl.version.status.externalInvocationUrls"> <span>{{url}}</span> <div class="igz-action-panel"> <div class="actions-list"> <igz-copy-to-clipboard data-value="url"></igz-copy-to-clipboard> </div> </div> </li> </ul> <p data-ng-if="!$ctrl.version.status.externalInvocationUrls || $ctrl.version.status.externalInvocationUrls.length === 0 || $ctrl.isFunctionDeploying()" data-ng-i18next="common:N_A"></p> </div> </div> <div data-ng-if="$ctrl.enrichedNodeSelectors.length > 0" class="enriched-node-selectors"> <span class="title">{{ \'functions:NODE_SELECTORS\' | i18next }}: </span> <igz-more-info data-description="{{ \'functions:TOOLTIP.ENRICHED_NODE_SELECTOR\' | i18next }}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> <div class="table-body" data-ng-repeat="nodeSelector in $ctrl.enrichedNodeSelectors"> <ncl-key-value-input class="enriched-node-selectors" data-is-read-only="true" data-key-tooltip="nodeSelector.name" data-value-tooltip="nodeSelector.value" data-item-index="$index" data-row-data="nodeSelector" data-use-labels="true" data-use-type="false"> </ncl-key-value-input> </div> </div> </div> </div> <div class="row"> <div class="monitoring-block ncl-monitoring-build-logger"> <span class="icon-collapsed general-content" data-ng-class="$ctrl.rowIsCollapsed.buildLog ? \'igz-icon-right\' : \'igz-icon-down\'" data-ng-click="$ctrl.onRowCollapse(\'buildLog\')"></span> <span class="monitoring-block-title"> {{ \'functions:BUILD_LOG\' | i18next }} </span> <div class="ncl-monitoring-build-logs collapsed-block-content-wrapper" data-uib-collapse="$ctrl.rowIsCollapsed.buildLog"> <ncl-deploy-log data-log-entries="$ctrl.version.status.logs"></ncl-deploy-log> </div> </div> </div> <div class="row" data-ng-if="$ctrl.checkIsErrorState()"> <div class="monitoring-block ncl-monitoring-error-logger"> <span class="icon-collapsed general-content" data-ng-class="$ctrl.rowIsCollapsed.errorLog ? \'igz-icon-right\' : \'igz-icon-down\'" data-ng-click="$ctrl.onRowCollapse(\'errorLog\')"> </span> <span class="monitoring-block-title"> {{ \'common:ERROR\' | i18next }} </span> <div class="ncl-monitoring-error-logs collapsed-block-content-wrapper" data-uib-collapse="$ctrl.rowIsCollapsed.errorLog"> <div class="error-panel igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="log-entry"> <span class="log-entry-error"> {{$ctrl.version.status.message}} </span> </div> </div> </div> </div> </div> </div> </div> </div> ');
28498
28527
  }]);
28499
28528
  })();
28500
28529
 
@@ -28506,7 +28535,7 @@ try {
28506
28535
  }
28507
28536
  module.run(['$templateCache', function($templateCache) {
28508
28537
  $templateCache.put('nuclio/functions/version/version-execution-log/version-execution-log.tpl.html',
28509
- ' <igz-splash-screen data-is-splash-showed="$ctrl.isSplashShowed"></igz-splash-screen> <div class="ncl-version-execution-log ncl-version" data-igz-extend-background> <div class="ncl-version-execution-log-wrapper"> <div class="row" data-ng-class="{\'filters-shown\': $ctrl.isFiltersShowed.value}"> <igz-info-page-filters data-is-filters-showed="$ctrl.isFiltersShowed.value" data-change-state-callback="$ctrl.isFiltersShowed.changeValue(newVal)" data-toggle-method="$ctrl.toggleFilters()" data-apply-filters="$ctrl.applyFilters()" data-watch-id="log-filter" data-reset-filters="$ctrl.resetFilters()"> <div class="info-page-filters-item search-input-item filter-message-wrapper"> <div class="filter-message align-items-center"> <span class="filter-label">{{ \'common:MESSAGE\' | i18next }}</span> <igz-more-info data-is-default-tooltip-enabled="true" data-default-tooltip-placement="top" data-is-html-enabled="true" data-description="{{ \'common:TOOLTIP.LOGS_MESSAGE_DESCRIPTION\' | i18next }}"> </igz-more-info> </div> <igz-search-input class="igz-component" data-data-set="$ctrl.logs" data-search-keys="$ctrl.searchKeys" data-placeholder="{{ \'common:PLACEHOLDER.SOME_LOG_MESSAGE\' | i18next }}" data-type="control" data-rule-type="message" data-search-states="$ctrl.searchStates" data-search-callback="$ctrl.onQueryChanged(searchQuery, ruleType)" data-on-search-submit="$ctrl.applyFilters()"> </igz-search-input> </div> <div class="info-page-filters-item all-padded"> <div class="browser-search-bar-wrapper"> <span class="filter-label"> {{ \'common:TIME_RANGE\' | i18next }} </span> <igz-date-time-picker data-pick-time="true" data-pick-future-dates="false" data-selected-preset="{{$ctrl.datePreset}}" data-input-date-from="$ctrl.timeRange.frNom" data-input-date-to="$ctrl.timeRange.to" data-is-date-range="true" data-is-required="true" data-custom-presets="$ctrl.customDatePresets" data-on-change-model="$ctrl.onTimeRangeChange(newValue, selectedPreset)"> </igz-date-time-picker> </div> </div> <div class="info-page-filters-item all-padded"> <div class="filter-label"> {{ \'common:LEVEL\' | i18next }} </div> <div class="filter-level-wrapper align-items-center"> <div class="igz-col-50"> <div class="filter-level-item"> <input type="checkbox" data-ng-model="$ctrl.filter.level.debug" id="level-debug"> <label for="level-debug"> <span class="level-icon ncl-icon-debug"></span> {{ \'common:DEBUG\' | i18next }} </label> </div> <div class="filter-level-item"> <input type="checkbox" data-ng-model="$ctrl.filter.level.warn" id="level-warning"> <label for="level-warning"> <span class="level-icon igz-icon-warning"></span> {{ \'common:WARNING\' | i18next }} </label> </div> </div> <div class="igz-col-50"> <div class="filter-level-item"> <input type="checkbox" data-ng-model="$ctrl.filter.level.info" id="level-info"> <label for="level-info"> <span class="level-icon igz-icon-info-round"></span> {{ \'common:INFO\' | i18next }} </label> </div> <div class="filter-level-item"> <input type="checkbox" data-ng-model="$ctrl.filter.level.error" id="level-error"> <label for="level-error"> <span class="level-icon igz-icon-cancel-path"></span> {{ \'common:ERROR\' | i18next }} </label> </div> </div> </div> </div> <div class="info-page-filters-item all-padded replicas"> <span class="filter-label"> {{ \'common:REPLICAS\' | i18next }} </span> <igz-multiple-checkboxes data-ng-model="$ctrl.selectedReplicas" data-options="$ctrl.replicasList" data-dropdown="true" data-select-all-none="true" data-ng-change="$ctrl.onCheckboxChange($event)" data-ng-required="true" data-base-id="select-replica_"> </igz-multiple-checkboxes> </div> </igz-info-page-filters> <igz-info-page-actions-bar> <div class="igz-action-panel"> <div class="actions-list"> <div class="actions-bar-right"> <div class="actions-bar-left actions-buttons-block actions-dropdown-block"> <igz-default-dropdown data-values-array="$ctrl.refreshRate.options" data-selected-item="$ctrl.refreshRate.value" data-select-property-only="value" data-item-select-callback="$ctrl.onRefreshRateChange(item, isItemChanged, field)" data-item-select-field="refreshRate.value"> </igz-default-dropdown> </div> <div class="actions-bar-left"> <igz-action-item-refresh data-is-disabled="$ctrl.isFunctionDeploying()" data-refresh="$ctrl.searchWithParams($ctrl.page.number, $ctrl.page.size)"> </igz-action-item-refresh> </div> <igz-actions-panes data-filters-toggle-method="$ctrl.toggleFilters()" data-show-filter-icon="true" data-filters-counter="$ctrl.activeFilters" data-is-filters-opened="$ctrl.isFiltersShowed.value"> </igz-actions-panes> </div> </div> </div> </igz-info-page-actions-bar> <div class="igz-control-panel-log"> <div class="control-panel-log-table common-table"> <div class="search-input-not-found" data-ng-if="$ctrl.logs.length === 0"> {{ \'functions:NO_LOGS_HAVE_BEEN_FOUND\' | i18next }} </div> <div data-igz-extend-background class="common-table-body"> <div class="igz-scrollable-container logs-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig" data-ng-hide="$ctrl.logs.length === 0"> <div data-ng-repeat="log in $ctrl.logs"> <igz-elastic-log-table-row data-entry-item="log"></igz-elastic-log-table-row> </div> <igz-pagination class="control-panel-log-pagination" data-page-data="$ctrl.page" data-pagination-callback="$ctrl.searchWithParams(page, size)" data-ng-hide="$ctrl.logs.length === 0" data-per-page-values="$ctrl.perPageValues"> </igz-pagination> </div> </div> </div> </div> </div> </div> </div> ');
28538
+ ' <igz-splash-screen data-is-splash-showed="$ctrl.isSplashShowed"></igz-splash-screen> <div class="ncl-version-execution-log ncl-version" data-igz-extend-background> <div class="ncl-version-execution-log-wrapper"> <div class="row" data-ng-class="{\'filters-shown\': $ctrl.isFiltersShowed.value}"> <igz-info-page-filters data-is-filters-showed="$ctrl.isFiltersShowed.value" data-change-state-callback="$ctrl.isFiltersShowed.changeValue(newVal)" data-toggle-method="$ctrl.toggleFilters()" data-apply-filters="$ctrl.applyFilters()" data-apply-is-disabled="$ctrl.applyIsDisabled" data-watch-id="log-filter" data-reset-filters="$ctrl.resetFilters()"> <div class="info-page-filters-item search-input-item filter-message-wrapper"> <div class="filter-message align-items-center"> <span class="filter-label">{{ \'common:MESSAGE\' | i18next }}</span> <igz-more-info data-is-default-tooltip-enabled="true" data-default-tooltip-placement="top" data-is-html-enabled="true" data-description="{{ \'common:TOOLTIP.LOGS_MESSAGE_DESCRIPTION\' | i18next }}"> </igz-more-info> </div> <igz-search-input class="igz-component" data-data-set="$ctrl.logs" data-search-keys="$ctrl.searchKeys" data-placeholder="{{ \'common:PLACEHOLDER.SOME_LOG_MESSAGE\' | i18next }}" data-type="control" data-rule-type="message" data-search-states="$ctrl.searchStates" data-search-callback="$ctrl.onQueryChanged(searchQuery, ruleType)" data-on-search-submit="$ctrl.applyFilters()"> </igz-search-input> </div> <div class="info-page-filters-item all-padded"> <div class="browser-search-bar-wrapper"> <span class="filter-label"> {{ \'common:TIME_RANGE\' | i18next }} </span> <igz-date-time-picker data-pick-time="true" data-pick-future-dates="false" data-selected-preset="{{$ctrl.datePreset}}" data-input-date-from="$ctrl.timeRange.from" data-input-date-to="$ctrl.timeRange.to" data-is-date-range="true" data-is-required="true" data-custom-presets="$ctrl.customDatePresets" data-on-change-model="$ctrl.onTimeRangeChange(newValue, selectedPreset)"> </igz-date-time-picker> </div> </div> <div class="info-page-filters-item all-padded"> <div class="filter-label"> {{ \'common:LEVEL\' | i18next }} </div> <div class="filter-level-wrapper align-items-center"> <div class="igz-col-50"> <div class="filter-level-item"> <input type="checkbox" data-ng-model="$ctrl.filter.level.debug" id="level-debug"> <label for="level-debug"> <span class="level-icon ncl-icon-debug"></span> {{ \'common:DEBUG\' | i18next }} </label> </div> <div class="filter-level-item"> <input type="checkbox" data-ng-model="$ctrl.filter.level.warn" id="level-warning"> <label for="level-warning"> <span class="level-icon igz-icon-warning"></span> {{ \'common:WARNING\' | i18next }} </label> </div> </div> <div class="igz-col-50"> <div class="filter-level-item"> <input type="checkbox" data-ng-model="$ctrl.filter.level.info" id="level-info"> <label for="level-info"> <span class="level-icon igz-icon-info-round"></span> {{ \'common:INFO\' | i18next }} </label> </div> <div class="filter-level-item"> <input type="checkbox" data-ng-model="$ctrl.filter.level.error" id="level-error"> <label for="level-error"> <span class="level-icon igz-icon-cancel-path"></span> {{ \'common:ERROR\' | i18next }} </label> </div> </div> </div> </div> <div class="info-page-filters-item all-padded replicas"> <span class="filter-label asterisk"> {{ \'common:REPLICAS\' | i18next }} </span> <igz-multiple-checkboxes data-ng-model="$ctrl.selectedReplicas" data-options="$ctrl.replicasList" data-dropdown="true" data-select-all-none="true" data-ng-change="$ctrl.onCheckboxChange($event)" data-ng-required="true" data-base-id="select-replica_"> </igz-multiple-checkboxes> </div> </igz-info-page-filters> <igz-info-page-actions-bar> <div class="igz-action-panel"> <div class="actions-list"> <div class="actions-bar-right"> <div class="actions-bar-left actions-buttons-block actions-dropdown-block"> <igz-default-dropdown data-values-array="$ctrl.refreshRate.options" data-selected-item="$ctrl.refreshRate.value" data-select-property-only="value" data-item-select-callback="$ctrl.onRefreshRateChange(item, isItemChanged, field)" data-item-select-field="refreshRate.value"> </igz-default-dropdown> </div> <div class="actions-bar-left"> <igz-action-item-refresh data-is-disabled="$ctrl.isFunctionDeploying()" data-refresh="$ctrl.searchWithParams($ctrl.page.number, $ctrl.page.size)"> </igz-action-item-refresh> </div> <igz-actions-panes data-filters-toggle-method="$ctrl.toggleFilters()" data-show-filter-icon="true" data-filters-counter="$ctrl.activeFilters" data-is-filters-opened="$ctrl.isFiltersShowed.value"> </igz-actions-panes> </div> </div> </div> </igz-info-page-actions-bar> <div class="igz-control-panel-log"> <div class="control-panel-log-table common-table"> <div class="search-input-not-found" data-ng-if="$ctrl.logs.length === 0"> {{ \'functions:NO_LOGS_HAVE_BEEN_FOUND\' | i18next }} </div> <div data-igz-extend-background class="common-table-body"> <div class="igz-scrollable-container logs-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig" data-ng-hide="$ctrl.logs.length === 0"> <div data-ng-repeat="log in $ctrl.logs"> <igz-elastic-log-table-row data-entry-item="log"></igz-elastic-log-table-row> </div> <igz-pagination class="control-panel-log-pagination" data-page-data="$ctrl.page" data-pagination-callback="$ctrl.searchWithParams(page, size)" data-ng-hide="$ctrl.logs.length === 0" data-per-page-values="$ctrl.perPageValues"> </igz-pagination> </div> </div> </div> </div> </div> </div> </div> ');
28510
28539
  }]);
28511
28540
  })();
28512
28541
 
@@ -28517,8 +28546,8 @@ try {
28517
28546
  module = angular.module('iguazio.dashboard-controls.templates', []);
28518
28547
  }
28519
28548
  module.run(['$templateCache', function($templateCache) {
28520
- $templateCache.put('nuclio/functions/version/version-monitoring/version-monitoring.tpl.html',
28521
- '<div class="ncl-version-monitoring ncl-version" data-igz-extend-background> <div class="igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="ncl-version-monitoring-wrapper"> <div class="row"> <div class="monitoring-block"> <div class="invocation-block"> <div class="internal-invocation-urls"> <span class="title">{{ \'functions:INTERNAL_INVOCATION_URLS\' | i18next }}: </span> <ul class="invocation-url-list" ng-if="!$ctrl.isFunctionDeploying()"> <li class="monitoring-invocation-url-wrapper" data-ng-repeat="url in $ctrl.version.status.internalInvocationUrls"> <span>{{url}}</span> <div class="igz-action-panel"> <div class="actions-list"> <igz-copy-to-clipboard data-value="url"></igz-copy-to-clipboard> </div> </div> </li> </ul> <p data-ng-if="!$ctrl.version.status.internalInvocationUrls.length || $ctrl.isFunctionDeploying()" data-ng-i18next="common:N_A"></p> </div> <div class="external-invocation-urls"> <span class="title">{{ \'functions:EXTERNAL_INVOCATION_URLS\' | i18next }}: </span> <igz-more-info data-description="{{ \'functions:TOOLTIP.TO_MAKE_FUNCTION_ACCESSIBLE\' | i18next:{functionId: $ctrl.version.metadata.name} }}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> <ul class="invocation-url-list" data-ng-if="$ctrl.version.status.externalInvocationUrls.length > 0 && !$ctrl.isFunctionDeploying()"> <li class="monitoring-invocation-url-wrapper" data-ng-repeat="url in $ctrl.version.status.externalInvocationUrls"> <span>{{url}}</span> <div class="igz-action-panel"> <div class="actions-list"> <igz-copy-to-clipboard data-value="url"></igz-copy-to-clipboard> </div> </div> </li> </ul> <p data-ng-if="!$ctrl.version.status.externalInvocationUrls || $ctrl.version.status.externalInvocationUrls.length === 0 || $ctrl.isFunctionDeploying()" data-ng-i18next="common:N_A"></p> </div> </div> <div data-ng-if="$ctrl.enrichedNodeSelectors.length > 0" class="enriched-node-selectors"> <span class="title">{{ \'functions:NODE_SELECTORS\' | i18next }}: </span> <igz-more-info data-description="{{ \'functions:TOOLTIP.ENRICHED_NODE_SELECTOR\' | i18next }}" data-trigger="click" data-is-html-enabled="true"> </igz-more-info> <div class="table-body" data-ng-repeat="nodeSelector in $ctrl.enrichedNodeSelectors"> <ncl-key-value-input class="enriched-node-selectors" data-is-read-only="true" data-key-tooltip="nodeSelector.name" data-value-tooltip="nodeSelector.value" data-item-index="$index" data-row-data="nodeSelector" data-use-labels="true" data-use-type="false"> </ncl-key-value-input> </div> </div> </div> </div> <div class="row"> <div class="monitoring-block ncl-monitoring-build-logger"> <span class="icon-collapsed general-content" data-ng-class="$ctrl.rowIsCollapsed.buildLog ? \'igz-icon-right\' : \'igz-icon-down\'" data-ng-click="$ctrl.onRowCollapse(\'buildLog\')"></span> <span class="monitoring-block-title"> {{ \'functions:BUILD_LOG\' | i18next }} </span> <div class="ncl-monitoring-build-logs collapsed-block-content-wrapper" data-uib-collapse="$ctrl.rowIsCollapsed.buildLog"> <ncl-deploy-log data-log-entries="$ctrl.version.status.logs"></ncl-deploy-log> </div> </div> </div> <div class="row" data-ng-if="$ctrl.checkIsErrorState()"> <div class="monitoring-block ncl-monitoring-error-logger"> <span class="icon-collapsed general-content" data-ng-class="$ctrl.rowIsCollapsed.errorLog ? \'igz-icon-right\' : \'igz-icon-down\'" data-ng-click="$ctrl.onRowCollapse(\'errorLog\')"> </span> <span class="monitoring-block-title"> {{ \'common:ERROR\' | i18next }} </span> <div class="ncl-monitoring-error-logs collapsed-block-content-wrapper" data-uib-collapse="$ctrl.rowIsCollapsed.errorLog"> <div class="error-panel igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <div class="log-entry"> <span class="log-entry-error"> {{$ctrl.version.status.message}} </span> </div> </div> </div> </div> </div> </div> </div> </div> ');
28549
+ $templateCache.put('nuclio/functions/version/version-configuration/version-configuration.tpl.html',
28550
+ '<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> ');
28522
28551
  }]);
28523
28552
  })();
28524
28553
 
@@ -28530,7 +28559,7 @@ try {
28530
28559
  }
28531
28560
  module.run(['$templateCache', function($templateCache) {
28532
28561
  $templateCache.put('nuclio/functions/version/version-triggers/version-triggers.tpl.html',
28533
- '<div class="ncl-version-trigger ncl-version"> <div class="common-table"> <div class="content-message-pane" data-ng-if="$ctrl.isHttpTriggerMsgShown()" data-ng-i18next="[html]functions:HTTP_TRIGGER_MSG"> </div> <div class="common-table-header header-row"> <div class="common-table-cell header-name"> {{ \'common:NAME\' | i18next }} </div> <div class="common-table-cell header-class"> {{ \'common:CLASS\' | i18next }} </div> <div class="igz-col-70 common-table-cell"> {{ \'common:INFO\' | i18next }} </div> </div> <div class="content-message-pane" data-ng-if="$ctrl.triggers.length === 0"> {{ \'functions:TRIGGERS_NOT_FOUND\' | i18next }} </div> <div class="common-table-body" data-igz-extend-background> <div class="igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <ncl-collapsing-row data-ng-repeat="trigger in $ctrl.triggers track by trigger.name" data-item="trigger" data-type="trigger" data-read-only="$ctrl.isFunctionDeploying()" data-delete-test-id="functions.triggers_delete.button" data-action-handler-callback="$ctrl.handleAction(actionType, selectedItem)"> <ncl-edit-item class="common-table-cells-container edit-trigger-row" data-item="trigger" data-class-list="$ctrl.classList" data-type="trigger" data-read-only="$ctrl.isFunctionDeploying()" data-validation-rules="$ctrl.validationRules" data-default-fields="$ctrl.defaultFields" data-on-select-class-callback="$ctrl.checkClassUniqueness()" data-on-submit-callback="$ctrl.editTriggerCallback(item)"> </ncl-edit-item> </ncl-collapsing-row> <div class="common-table-row create-trigger-button igz-create-button" data-ng-class="{\'disabled\': $ctrl.isFunctionDeploying()}" data-ng-if="$ctrl.isCreateNewTriggerEnabled()" data-ng-click="$ctrl.createTrigger($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:ADD_TRIGGER\' | i18next }} </div> </div> </div> </div> </div> ');
28562
+ '<div class="ncl-version-trigger ncl-version"> <div class="common-table"> <div class="content-message-pane" data-ng-if="$ctrl.isHttpTriggerMsgShown()" data-ng-i18next="[html]functions:HTTP_TRIGGER_MSG"> </div> <div class="http-trigger-checkbox" data-ng-if="$ctrl.isHttpTriggerCheckboxShown()"> <input type="checkbox" class="small" id="disable-default-http-trigger" name="disableDefaultHTTPTrigger" data-ng-model="$ctrl.version.spec.disableDefaultHTTPTrigger" data-ng-disabled="$ctrl.isFunctionDeploying()"> <label for="disable-default-http-trigger" class="checkbox-inline">{{ \'common:DO_NOT_CREATE_HTTP_TRIGGER_BY_DEFAULT\' | i18next }}</label> <igz-more-info data-description="{{ \'functions:TOOLTIP.DO_NOT_CREATE_HTTP_TRIGGER_BY_DEFAULT\' | i18next }}" data-trigger="click" data-default-tooltip-placement="right"> </igz-more-info> </div> <div class="common-table-header header-row"> <div class="common-table-cell header-name"> {{ \'common:NAME\' | i18next }} </div> <div class="common-table-cell header-class"> {{ \'common:CLASS\' | i18next }} </div> <div class="igz-col-70 common-table-cell"> {{ \'common:INFO\' | i18next }} </div> </div> <div class="content-message-pane" data-ng-if="$ctrl.triggers.length === 0"> {{ \'functions:TRIGGERS_NOT_FOUND\' | i18next }} </div> <div class="common-table-body" data-igz-extend-background> <div class="igz-scrollable-container" data-ng-scrollbars data-ng-scrollbars-config="$ctrl.scrollConfig"> <ncl-collapsing-row data-ng-repeat="trigger in $ctrl.triggers track by trigger.name" data-item="trigger" data-type="trigger" data-read-only="$ctrl.isFunctionDeploying()" data-delete-test-id="functions.triggers_delete.button" data-action-handler-callback="$ctrl.handleAction(actionType, selectedItem)"> <ncl-edit-item class="common-table-cells-container edit-trigger-row" data-item="trigger" data-class-list="$ctrl.classList" data-type="trigger" data-read-only="$ctrl.isFunctionDeploying()" data-validation-rules="$ctrl.validationRules" data-default-fields="$ctrl.defaultFields" data-on-select-class-callback="$ctrl.checkClassUniqueness()" data-on-submit-callback="$ctrl.editTriggerCallback(item)"> </ncl-edit-item> </ncl-collapsing-row> <div class="common-table-row create-trigger-button igz-create-button" data-ng-class="{\'disabled\': $ctrl.isFunctionDeploying()}" data-ng-if="$ctrl.isCreateNewTriggerEnabled()" data-ng-click="$ctrl.createTrigger($event)"> <span class="igz-icon-add-round"></span> {{ \'functions:ADD_TRIGGER\' | i18next }} </div> </div> </div> </div> </div> ');
28534
28563
  }]);
28535
28564
  })();
28536
28565
 
@@ -28628,8 +28657,8 @@ try {
28628
28657
  module = angular.module('iguazio.dashboard-controls.templates', []);
28629
28658
  }
28630
28659
  module.run(['$templateCache', function($templateCache) {
28631
- $templateCache.put('nuclio/functions/version/version-code/function-event-pane/test-events-logs/test-events-logs.tpl.html',
28632
- '<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> ');
28660
+ $templateCache.put('nuclio/functions/version/version-code/function-event-pane/test-events-navigation-tabs/test-events-navigation-tabs.tpl.html',
28661
+ '<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> ');
28633
28662
  }]);
28634
28663
  })();
28635
28664
 
@@ -28640,8 +28669,8 @@ try {
28640
28669
  module = angular.module('iguazio.dashboard-controls.templates', []);
28641
28670
  }
28642
28671
  module.run(['$templateCache', function($templateCache) {
28643
- $templateCache.put('nuclio/functions/version/version-code/function-event-pane/test-events-navigation-tabs/test-events-navigation-tabs.tpl.html',
28644
- '<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> ');
28672
+ $templateCache.put('nuclio/functions/version/version-code/function-event-pane/test-events-logs/test-events-logs.tpl.html',
28673
+ '<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> ');
28645
28674
  }]);
28646
28675
  })();
28647
28676