@nethserver/ns8-ui-lib 1.2.10 → 1.3.1

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.
@@ -8431,7 +8431,7 @@ var script$h = {
8431
8431
  required: true
8432
8432
  },
8433
8433
  status: {
8434
- type: Array,
8434
+ type: Object,
8435
8435
  required: true
8436
8436
  },
8437
8437
  repositoryLabel: {
@@ -8468,7 +8468,7 @@ var __vue_render__$p = function __vue_render__() {
8468
8468
 
8469
8469
  return _c('div', {
8470
8470
  staticClass: "ns-backup-card-details"
8471
- }, [_vm._ssrNode("<div class=\"tr\" data-v-5c5848fc><div class=\"td label\" data-v-5c5848fc>" + _vm._ssrEscape(_vm._s(_vm.repositoryLabel)) + "</div> <div class=\"td\" data-v-5c5848fc>" + _vm._ssrEscape("\n " + _vm._s(_vm.backup.repoName) + "\n ") + "</div></div> "), _vm._ssrNode("<div class=\"tr\" data-v-5c5848fc>", "</div>", [_vm._ssrNode("<div class=\"td label\" data-v-5c5848fc>" + _vm._ssrEscape(_vm._s(_vm.completedLabel)) + "</div> "), _vm._ssrNode("<div class=\"td\" data-v-5c5848fc>", "</div>", [_vm.status[_vm.backup.id] && _vm.status[_vm.backup.id].end ? _vm._ssrNode("<span data-v-5c5848fc>", "</span>", [_c('cv-interactive-tooltip', {
8471
+ }, [_vm._ssrNode("<div class=\"tr\" data-v-b3150a14><div class=\"td label\" data-v-b3150a14>" + _vm._ssrEscape(_vm._s(_vm.repositoryLabel)) + "</div> <div class=\"td\" data-v-b3150a14>" + _vm._ssrEscape("\n " + _vm._s(_vm.backup.repoName) + "\n ") + "</div></div> "), _vm._ssrNode("<div class=\"tr\" data-v-b3150a14>", "</div>", [_vm._ssrNode("<div class=\"td label\" data-v-b3150a14>" + _vm._ssrEscape(_vm._s(_vm.completedLabel)) + "</div> "), _vm._ssrNode("<div class=\"td\" data-v-b3150a14>", "</div>", [_vm.status[_vm.backup.id] && _vm.status[_vm.backup.id].end ? _vm._ssrNode("<span data-v-b3150a14>", "</span>", [_c('cv-interactive-tooltip', {
8472
8472
  staticClass: "info tooltip-with-text-trigger",
8473
8473
  attrs: {
8474
8474
  "alignment": "center",
@@ -8480,7 +8480,7 @@ var __vue_render__$p = function __vue_render__() {
8480
8480
  addSuffix: true
8481
8481
  })) + "\n ")]), _vm._v(" "), _c('template', {
8482
8482
  slot: "content"
8483
- }, [_vm._v("\n " + _vm._s(_vm._f("date")(_vm.status[_vm.backup.id].end * 1000, "yyyy-MM-dd HH:mm:ss")) + "\n ")])], 2)], 1) : _vm._ssrNode("<span data-v-5c5848fc>-</span>")])], 2), _vm._ssrNode(" <div class=\"tr\" data-v-5c5848fc><div class=\"td label\" data-v-5c5848fc>" + _vm._ssrEscape(_vm._s(_vm.durationLabel)) + "</div> <div class=\"td\" data-v-5c5848fc>" + (_vm.status[_vm.backup.id] && _vm.status[_vm.backup.id].end && _vm.status[_vm.backup.id].start ? "<span data-v-5c5848fc>" + _vm._ssrEscape("\n " + _vm._s(_vm._f("secondsFormat")(_vm.status[_vm.backup.id].end - _vm.status[_vm.backup.id].start)) + "\n ") + "</span>" : "<span data-v-5c5848fc>-</span>") + "</div></div> <div class=\"tr\" data-v-5c5848fc><div class=\"td label\" data-v-5c5848fc>" + _vm._ssrEscape(_vm._s(_vm.totalSizeLabel)) + "</div> <div class=\"td\" data-v-5c5848fc>" + (_vm.status[_vm.backup.id] && _vm.status[_vm.backup.id].total_size ? "<span data-v-5c5848fc>" + _vm._ssrEscape("\n " + _vm._s(_vm._f("byteFormat")(_vm.status[_vm.backup.id].total_size)) + "\n ") + "</span>" : "<span data-v-5c5848fc>-</span>") + "</div></div> <div class=\"tr\" data-v-5c5848fc><div class=\"td label\" data-v-5c5848fc>" + _vm._ssrEscape(_vm._s(_vm.totalFileCountLabel)) + "</div> <div class=\"td\" data-v-5c5848fc>" + (_vm.status[_vm.backup.id] && _vm.status[_vm.backup.id].total_file_count ? "<span data-v-5c5848fc>" + _vm._ssrEscape("\n " + _vm._s(_vm.status[_vm.backup.id].total_file_count) + "\n ") + "</span>" : "<span data-v-5c5848fc>-</span>") + "</div></div>")], 2);
8483
+ }, [_vm._v("\n " + _vm._s(_vm._f("date")(_vm.status[_vm.backup.id].end * 1000, "yyyy-MM-dd HH:mm:ss")) + "\n ")])], 2)], 1) : _vm._ssrNode("<span data-v-b3150a14>-</span>")])], 2), _vm._ssrNode(" <div class=\"tr\" data-v-b3150a14><div class=\"td label\" data-v-b3150a14>" + _vm._ssrEscape(_vm._s(_vm.durationLabel)) + "</div> <div class=\"td\" data-v-b3150a14>" + (_vm.status[_vm.backup.id] && _vm.status[_vm.backup.id].end && _vm.status[_vm.backup.id].start ? "<span data-v-b3150a14>" + _vm._ssrEscape("\n " + _vm._s(_vm._f("secondsFormat")(_vm.status[_vm.backup.id].end - _vm.status[_vm.backup.id].start)) + "\n ") + "</span>" : "<span data-v-b3150a14>-</span>") + "</div></div> <div class=\"tr\" data-v-b3150a14><div class=\"td label\" data-v-b3150a14>" + _vm._ssrEscape(_vm._s(_vm.totalSizeLabel)) + "</div> <div class=\"td\" data-v-b3150a14>" + (_vm.status[_vm.backup.id] && _vm.status[_vm.backup.id].total_size ? "<span data-v-b3150a14>" + _vm._ssrEscape("\n " + _vm._s(_vm._f("byteFormat")(_vm.status[_vm.backup.id].total_size)) + "\n ") + "</span>" : "<span data-v-b3150a14>-</span>") + "</div></div> <div class=\"tr\" data-v-b3150a14><div class=\"td label\" data-v-b3150a14>" + _vm._ssrEscape(_vm._s(_vm.totalFileCountLabel)) + "</div> <div class=\"td\" data-v-b3150a14>" + (_vm.status[_vm.backup.id] && _vm.status[_vm.backup.id].total_file_count ? "<span data-v-b3150a14>" + _vm._ssrEscape("\n " + _vm._s(_vm.status[_vm.backup.id].total_file_count) + "\n ") + "</span>" : "<span data-v-b3150a14>-</span>") + "</div></div>")], 2);
8484
8484
  };
8485
8485
 
8486
8486
  var __vue_staticRenderFns__$p = [];
@@ -8488,8 +8488,8 @@ var __vue_staticRenderFns__$p = [];
8488
8488
 
8489
8489
  var __vue_inject_styles__$r = function __vue_inject_styles__(inject) {
8490
8490
  if (!inject) return;
8491
- inject("data-v-5c5848fc_0", {
8492
- source: ".ns-backup-card-details[data-v-5c5848fc]{display:contents}.tr[data-v-5c5848fc]{display:table-row}.td[data-v-5c5848fc]{display:table-cell}.label[data-v-5c5848fc]{padding-right:.75rem;font-weight:700;text-align:right;padding-bottom:.5rem}",
8491
+ inject("data-v-b3150a14_0", {
8492
+ source: ".ns-backup-card-details[data-v-b3150a14]{display:contents}.tr[data-v-b3150a14]{display:table-row}.td[data-v-b3150a14]{display:table-cell}.label[data-v-b3150a14]{padding-right:.75rem;font-weight:700;text-align:right;padding-bottom:.5rem}",
8493
8493
  map: undefined,
8494
8494
  media: undefined
8495
8495
  });
@@ -8497,10 +8497,10 @@ var __vue_inject_styles__$r = function __vue_inject_styles__(inject) {
8497
8497
  /* scoped */
8498
8498
 
8499
8499
 
8500
- var __vue_scope_id__$r = "data-v-5c5848fc";
8500
+ var __vue_scope_id__$r = "data-v-b3150a14";
8501
8501
  /* module identifier */
8502
8502
 
8503
- var __vue_module_identifier__$r = "data-v-5c5848fc";
8503
+ var __vue_module_identifier__$r = "data-v-b3150a14";
8504
8504
  /* functional template */
8505
8505
 
8506
8506
  var __vue_is_functional_template__$r = false;
@@ -8574,6 +8574,10 @@ var NsBackupCardDetails = __vue_component__$Q;var script$g = {
8574
8574
  type: String,
8575
8575
  default: "Show more"
8576
8576
  },
8577
+ multipleUncertainStatusLabel: {
8578
+ type: String,
8579
+ default: "Some backups failed or are pending"
8580
+ },
8577
8581
  moduleId: {
8578
8582
  type: String,
8579
8583
  required: true
@@ -8603,9 +8607,15 @@ var NsBackupCardDetails = __vue_component__$Q;var script$g = {
8603
8607
  data: function data() {
8604
8608
  return {
8605
8609
  backupsContainingInstance: [],
8606
- status: []
8610
+ status: {},
8611
+ summaryStatus: undefined
8607
8612
  };
8608
8613
  },
8614
+ computed: {
8615
+ singleBackup: function singleBackup() {
8616
+ return this.backupsContainingInstance.length === 1 ? this.backupsContainingInstance[0] : null;
8617
+ }
8618
+ },
8609
8619
  watch: {
8610
8620
  repositories: function repositories() {
8611
8621
  this.updateData();
@@ -8666,8 +8676,15 @@ var NsBackupCardDetails = __vue_component__$Q;var script$g = {
8666
8676
  return i.module_id == _this.moduleId;
8667
8677
  });
8668
8678
 
8669
- var status = _instance.status;
8670
- this.status[_backup.id] = status;
8679
+ var instanceStatus = _instance.status;
8680
+ this.status[_backup.id] = instanceStatus; // overwrite summary status if:
8681
+ // - it is undefined (first time loading)
8682
+ // - the status is not successful
8683
+ // - the status is null (not run yet) and the previous status was true (successful)
8684
+
8685
+ if (this.summaryStatus === undefined || instanceStatus && instanceStatus.success === false || instanceStatus && instanceStatus.success === null && this.summaryStatus === true) {
8686
+ this.summaryStatus = instanceStatus;
8687
+ }
8671
8688
  }
8672
8689
  } catch (err) {
8673
8690
  _iterator2.e(err);
@@ -8725,69 +8742,53 @@ var __vue_render__$o = function __vue_render__() {
8725
8742
  }
8726
8743
  }), _vm._v(" "), _c('span', [_vm._v("\n " + _vm._s(_vm.noBackupMessage) + "\n ")])], 1)] : [_c('div', {
8727
8744
  staticClass: "backups"
8728
- }, _vm._l(_vm.backupsContainingInstance, function (backup) {
8729
- return _c('div', {
8730
- key: backup.id,
8731
- staticClass: "backup"
8732
- }, [_vm.backupsContainingInstance.length > 1 ? _c('div', {
8733
- staticClass: "row"
8734
- }, [_c('h5', {
8735
- staticClass: "title"
8736
- }, [_vm._v("\n " + _vm._s(backup.name) + "\n ")])]) : _vm._e(), _vm._v(" "), _c('div', {
8737
- staticClass: "table-wrapper"
8738
- }, [_c('div', {
8739
- staticClass: "table"
8740
- }, [_c('div', {
8741
- staticClass: "tr"
8742
- }, [_c('div', {
8743
- staticClass: "td label"
8744
- }, [_vm._v(_vm._s(_vm.statusLabel))]), _vm._v(" "), _c('div', {
8745
- staticClass: "td status"
8746
- }, [!backup.enabled ? _c('span', {
8747
- staticClass: "ns-warning"
8748
- }, [_vm._v("\n " + _vm._s(_vm.backupDisabledLabel) + "\n ")]) : _vm.status[backup.id] && _vm.status[backup.id].success == true ? _c('span', {
8749
- staticClass: "ns-success"
8750
- }, [_c('span', [_vm._v(_vm._s(_vm.statusSuccessLabel))])]) : _vm.status[backup.id] && _vm.status[backup.id].success == false ? _c('span', {
8751
- staticClass: "ns-error"
8752
- }, [_vm._v("\n " + _vm._s(_vm.statusErrorLabel) + "\n ")]) : _c('span', {
8753
- staticClass: "ns-warning"
8754
- }, [_vm._v("\n " + _vm._s(_vm.statusNotRunLabel) + "\n ")])])]), _vm._v(" "), _vm.backupsContainingInstance.length == 1 ? _c('NsBackupCardDetails', {
8755
- attrs: {
8756
- "backup": backup,
8757
- "status": _vm.status,
8758
- "repositoryLabel": _vm.repositoryLabel,
8759
- "completedLabel": _vm.completedLabel,
8760
- "durationLabel": _vm.durationLabel,
8761
- "totalSizeLabel": _vm.totalSizeLabel,
8762
- "totalFileCountLabel": _vm.totalFileCountLabel
8763
- }
8764
- }) : _vm._e()], 1)]), _vm._v(" "), _vm.backupsContainingInstance.length > 1 ? _c('div', {
8765
- staticClass: "table-wrapper"
8766
- }, [_c('div', {
8767
- staticClass: "table"
8768
- }, [_c('cv-accordion', {
8769
- ref: "accordion",
8770
- refInFor: true
8771
- }, [_c('cv-accordion-item', {
8772
- attrs: {
8773
- "open": _vm.toggleAccordion[0]
8774
- }
8775
- }, [_c('template', {
8776
- slot: "title"
8777
- }, [_vm._v(_vm._s(_vm.showMoreLabel))]), _vm._v(" "), _c('template', {
8778
- slot: "content"
8779
- }, [_c('NsBackupCardDetails', {
8780
- attrs: {
8781
- "backup": backup,
8782
- "status": _vm.status,
8783
- "repositoryLabel": _vm.repositoryLabel,
8784
- "completedLabel": _vm.completedLabel,
8785
- "durationLabel": _vm.durationLabel,
8786
- "totalSizeLabel": _vm.totalSizeLabel,
8787
- "totalFileCountLabel": _vm.totalFileCountLabel
8788
- }
8789
- })], 1)], 2)], 1)], 1)]) : _vm._e()]);
8790
- }), 0)], _vm._v(" "), _c('div', [_c('div', {
8745
+ }, [_vm.backupsContainingInstance.length == 1 ? _c('div', {
8746
+ staticClass: "backup"
8747
+ }, [_c('div', {
8748
+ staticClass: "table-wrapper"
8749
+ }, [_c('div', {
8750
+ staticClass: "table"
8751
+ }, [_c('div', {
8752
+ staticClass: "tr"
8753
+ }, [_c('div', {
8754
+ staticClass: "td label"
8755
+ }, [_vm._v(_vm._s(_vm.statusLabel))]), _vm._v(" "), _c('div', {
8756
+ staticClass: "td status"
8757
+ }, [!_vm.singleBackup.enabled ? _c('span', {
8758
+ staticClass: "ns-warning"
8759
+ }, [_vm._v("\n " + _vm._s(_vm.backupDisabledLabel) + "\n ")]) : _vm.status[_vm.singleBackup.id] && _vm.status[_vm.singleBackup.id].success == true ? _c('span', {
8760
+ staticClass: "ns-success"
8761
+ }, [_c('span', [_vm._v(_vm._s(_vm.statusSuccessLabel))])]) : _vm.status[_vm.singleBackup.id] && _vm.status[_vm.singleBackup.id].success == false ? _c('span', {
8762
+ staticClass: "ns-error"
8763
+ }, [_vm._v("\n " + _vm._s(_vm.statusErrorLabel) + "\n ")]) : _c('span', {
8764
+ staticClass: "ns-warning"
8765
+ }, [_vm._v("\n " + _vm._s(_vm.statusNotRunLabel) + "\n ")])])]), _vm._v(" "), _c('NsBackupCardDetails', {
8766
+ attrs: {
8767
+ "backup": _vm.singleBackup,
8768
+ "status": _vm.status,
8769
+ "repositoryLabel": _vm.repositoryLabel,
8770
+ "completedLabel": _vm.completedLabel,
8771
+ "durationLabel": _vm.durationLabel,
8772
+ "totalSizeLabel": _vm.totalSizeLabel,
8773
+ "totalFileCountLabel": _vm.totalFileCountLabel
8774
+ }
8775
+ })], 1)])]) : _c('div', [_c('div', {
8776
+ staticClass: "table-wrapper"
8777
+ }, [_c('div', {
8778
+ staticClass: "table"
8779
+ }, [_c('div', {
8780
+ staticClass: "tr"
8781
+ }, [_c('div', {
8782
+ staticClass: "td label"
8783
+ }, [_vm._v(_vm._s(_vm.statusLabel))]), _vm._v(" "), _c('div', {
8784
+ staticClass: "td status"
8785
+ }, [_vm.summaryStatus && _vm.summaryStatus.success == true ? _c('span', {
8786
+ staticClass: "ns-success"
8787
+ }, [_c('span', [_vm._v(_vm._s(_vm.statusSuccessLabel))])]) : _vm.summaryStatus && _vm.summaryStatus.success == false ? _c('span', {
8788
+ staticClass: "ns-error"
8789
+ }, [_vm._v("\n " + _vm._s(_vm.statusErrorLabel) + "\n ")]) : _c('span', {
8790
+ staticClass: "ns-warning"
8791
+ }, [_vm._v("\n " + _vm._s(_vm.multipleUncertainStatusLabel) + "\n ")])])])])])])])], _vm._v(" "), _c('div', [_c('div', {
8791
8792
  staticClass: "row mg-top-sm"
8792
8793
  }, [_c('NsButton', {
8793
8794
  attrs: {
@@ -8806,11 +8807,11 @@ var __vue_staticRenderFns__$o = [];
8806
8807
 
8807
8808
  var __vue_inject_styles__$q = function __vue_inject_styles__(inject) {
8808
8809
  if (!inject) return;
8809
- inject("data-v-6f55bf84_0", {
8810
- source: ".ns-backup-card[data-v-6f55bf84]{display:flex;flex-direction:column;justify-content:center;min-height:7rem}.backup[data-v-6f55bf84]{margin-bottom:1rem}.backup[data-v-6f55bf84]:last-child{margin-bottom:0}.row[data-v-6f55bf84]{display:flex;align-items:center;justify-content:center;margin-bottom:.5rem}.title[data-v-6f55bf84]{margin-left:.25rem;margin-right:.25rem;margin-bottom:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-wrapper[data-v-6f55bf84]{display:flex;justify-content:center;margin-bottom:.5rem}.table[data-v-6f55bf84]{display:table}.tr[data-v-6f55bf84]{display:table-row}.td[data-v-6f55bf84]{display:table-cell}.label[data-v-6f55bf84]{padding-right:.75rem;font-weight:700;text-align:right;padding-bottom:.5rem}.status[data-v-6f55bf84]{font-weight:700}.backup-status-icon[data-v-6f55bf84]{margin-right:.25rem}",
8810
+ inject("data-v-d65141fe_0", {
8811
+ source: ".ns-backup-card[data-v-d65141fe]{display:flex;flex-direction:column;justify-content:center;min-height:7rem}.backup[data-v-d65141fe]{margin-bottom:1rem}.backup[data-v-d65141fe]:last-child{margin-bottom:0}.row[data-v-d65141fe]{display:flex;align-items:center;justify-content:center;margin-bottom:.5rem}.title[data-v-d65141fe]{margin-left:.25rem;margin-right:.25rem;margin-bottom:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-wrapper[data-v-d65141fe]{display:flex;justify-content:center;margin-bottom:.5rem}.table[data-v-d65141fe]{display:table}.tr[data-v-d65141fe]{display:table-row}.td[data-v-d65141fe]{display:table-cell}.label[data-v-d65141fe]{padding-right:.75rem;font-weight:700;text-align:right;padding-bottom:.5rem}.status[data-v-d65141fe]{font-weight:700}.backup-status-icon[data-v-d65141fe]{margin-right:.25rem}",
8811
8812
  map: undefined,
8812
8813
  media: undefined
8813
- }), inject("data-v-6f55bf84_1", {
8814
+ }), inject("data-v-d65141fe_1", {
8814
8815
  source: ".ns-backup-card .bx--accordion--start .bx--accordion__content{margin-left:0}",
8815
8816
  map: undefined,
8816
8817
  media: undefined
@@ -8819,10 +8820,10 @@ var __vue_inject_styles__$q = function __vue_inject_styles__(inject) {
8819
8820
  /* scoped */
8820
8821
 
8821
8822
 
8822
- var __vue_scope_id__$q = "data-v-6f55bf84";
8823
+ var __vue_scope_id__$q = "data-v-d65141fe";
8823
8824
  /* module identifier */
8824
8825
 
8825
- var __vue_module_identifier__$q = "data-v-6f55bf84";
8826
+ var __vue_module_identifier__$q = "data-v-d65141fe";
8826
8827
  /* functional template */
8827
8828
 
8828
8829
  var __vue_is_functional_template__$q = false;
@@ -20356,9 +20357,16 @@ var script$5 = {
20356
20357
  Close16: Close16__default["default"]
20357
20358
  },
20358
20359
  props: {
20359
- autoFilter: Boolean,
20360
- autoHighlight: Boolean,
20360
+ autoFilter: {
20361
+ type: Boolean,
20362
+ default: true
20363
+ },
20364
+ autoHighlight: {
20365
+ type: Boolean,
20366
+ default: true
20367
+ },
20361
20368
  disabled: Boolean,
20369
+ readonly: Boolean,
20362
20370
  invalidMessage: {
20363
20371
  type: String,
20364
20372
  default: undefined
@@ -20549,7 +20557,7 @@ var script$5 = {
20549
20557
  this.isWarn = !!(this.$slots["warn-text"] || this.warnText && this.warnText.length);
20550
20558
  },
20551
20559
  clearFilter: function clearFilter() {
20552
- if (this.disabled) return;
20560
+ if (this.disabled || this.readonly) return;
20553
20561
  this.internalUpdateValue("");
20554
20562
  this.filter = "";
20555
20563
  this.$refs.input.focus();
@@ -20644,7 +20652,7 @@ var script$5 = {
20644
20652
  }
20645
20653
  },
20646
20654
  onInput: function onInput() {
20647
- if (this.disabled) return;
20655
+ if (this.disabled || this.readonly) return;
20648
20656
  this.doOpen(true);
20649
20657
  this.updateOptions();
20650
20658
  this.updateHighlight();
@@ -20658,7 +20666,7 @@ var script$5 = {
20658
20666
  this.open = newVal;
20659
20667
  },
20660
20668
  onDown: function onDown() {
20661
- if (this.disabled) return;
20669
+ if (this.disabled || this.readonly) return;
20662
20670
 
20663
20671
  if (!this.open) {
20664
20672
  this.doOpen(true);
@@ -20667,19 +20675,19 @@ var script$5 = {
20667
20675
  }
20668
20676
  },
20669
20677
  onUp: function onUp() {
20670
- if (this.disabled) return;
20678
+ if (this.disabled || this.readonly) return;
20671
20679
 
20672
20680
  if (this.open) {
20673
20681
  this.doMove(true);
20674
20682
  }
20675
20683
  },
20676
20684
  onEsc: function onEsc() {
20677
- if (this.disabled) return;
20685
+ if (this.disabled || this.readonly) return;
20678
20686
  this.doOpen(false);
20679
20687
  this.$el.focus();
20680
20688
  },
20681
20689
  onEnter: function onEnter() {
20682
- if (this.disabled) return;
20690
+ if (this.disabled || this.readonly) return;
20683
20691
  this.doOpen(!this.open);
20684
20692
 
20685
20693
  if (!this.open) {
@@ -20688,7 +20696,7 @@ var script$5 = {
20688
20696
  }
20689
20697
  },
20690
20698
  onClick: function onClick() {
20691
- if (this.disabled) return;
20699
+ if (this.disabled || this.readonly) return;
20692
20700
  this.doOpen(!this.open);
20693
20701
 
20694
20702
  if (this.open) {
@@ -20745,14 +20753,14 @@ var script$5 = {
20745
20753
  this.$emit("change", this.dataValue);
20746
20754
  },
20747
20755
  inputClick: function inputClick() {
20748
- if (this.disabled) return;
20756
+ if (this.disabled || this.readonly) return;
20749
20757
 
20750
20758
  if (!this.open) {
20751
20759
  this.doOpen(true);
20752
20760
  }
20753
20761
  },
20754
20762
  inputFocus: function inputFocus() {
20755
- if (this.disabled) return;
20763
+ if (this.disabled || this.readonly) return;
20756
20764
  this.doOpen(true);
20757
20765
  },
20758
20766
  getItemLabel: function getItemLabel(item) {
@@ -20789,7 +20797,7 @@ var __vue_render__$e = function __vue_render__() {
20789
20797
  on: {
20790
20798
  "focusout": _vm.onFocusOut
20791
20799
  }
20792
- }, [_vm.title ? _vm._ssrNode("<label" + _vm._ssrAttr("for", _vm.uid) + _vm._ssrClass(null, [_vm.carbonPrefix + "--label", (_obj$1 = {}, _obj$1[_vm.carbonPrefix + "--label--disabled"] = _vm.disabled, _obj$1)]) + " data-v-610245c0>", "</label>", [_vm._ssrNode("<div class=\"label-with-tooltip\" data-v-610245c0>", "</div>", [_vm._ssrNode("<span data-v-610245c0>" + _vm._ssrEscape("\n " + _vm._s(_vm.title) + "\n ") + "</span> "), _vm.hasTooltipSlot ? _c('cv-interactive-tooltip', {
20800
+ }, [_vm.title ? _vm._ssrNode("<label" + _vm._ssrAttr("for", _vm.uid) + _vm._ssrClass(null, [_vm.carbonPrefix + "--label", (_obj$1 = {}, _obj$1[_vm.carbonPrefix + "--label--disabled"] = _vm.disabled, _obj$1)]) + " data-v-001e5b15>", "</label>", [_vm._ssrNode("<div class=\"label-with-tooltip\" data-v-001e5b15>", "</div>", [_vm._ssrNode("<span data-v-001e5b15>" + _vm._ssrEscape("\n " + _vm._s(_vm.title) + "\n ") + "</span> "), _vm.hasTooltipSlot ? _c('cv-interactive-tooltip', {
20793
20801
  staticClass: "info",
20794
20802
  attrs: {
20795
20803
  "alignment": _vm.tooltipAlignment,
@@ -20797,25 +20805,29 @@ var __vue_render__$e = function __vue_render__() {
20797
20805
  }
20798
20806
  }, [_c('template', {
20799
20807
  slot: "content"
20800
- }, [_vm._t("tooltip")], 2)], 2) : _vm._e()], 2)]) : _vm._e(), _vm._ssrNode(" "), _vm._ssrNode("<div role=\"listbox\" tabindex=\"-1\"" + _vm._ssrAttr("data-invalid", _vm.isInvalid) + _vm._ssrAttrs(_vm.$attrs) + _vm._ssrClass(null, [_vm.carbonPrefix + "--combo-box " + _vm.carbonPrefix + "--list-box", (_obj$2 = {}, _obj$2[_vm.carbonPrefix + "--list-box--light"] = _vm.isLight, _obj$2[_vm.carbonPrefix + "--combo-box--expanded"] = _vm.open, _obj$2[_vm.carbonPrefix + "--list-box--expanded"] = _vm.open, _obj$2[_vm.carbonPrefix + "--combo-box--disabled " + _vm.carbonPrefix + "--list-box--disabled"] = _vm.disabled, _obj$2)]) + " data-v-610245c0>", "</div>", [_vm.isInvalid ? _c('WarningFilled16', {
20808
+ }, [_vm._t("tooltip")], 2)], 2) : _vm._e()], 2)]) : _vm._e(), _vm._ssrNode(" "), _vm._ssrNode("<div role=\"listbox\" tabindex=\"-1\"" + _vm._ssrAttr("data-invalid", _vm.isInvalid) + _vm._ssrAttrs(_vm.$attrs) + _vm._ssrClass(null, [_vm.carbonPrefix + "--combo-box " + _vm.carbonPrefix + "--list-box", (_obj$2 = {}, _obj$2[_vm.carbonPrefix + "--list-box--light"] = _vm.isLight, _obj$2[_vm.carbonPrefix + "--combo-box--expanded"] = _vm.open, _obj$2[_vm.carbonPrefix + "--list-box--expanded"] = _vm.open, _obj$2[_vm.carbonPrefix + "--combo-box--disabled " + _vm.carbonPrefix + "--list-box--disabled"] = _vm.disabled, _obj$2)]) + " data-v-001e5b15>", "</div>", [_vm.isInvalid ? _c('WarningFilled16', {
20801
20809
  class: [_vm.carbonPrefix + "--list-box__invalid-icon invalid-icon"]
20802
20810
  }) : _vm._e(), _vm._ssrNode(" "), _vm.isWarn && !_vm.isInvalid ? _c('WarningAltFilled16', {
20803
20811
  class: _vm.carbonPrefix + "--list-box__invalid-icon " + _vm.carbonPrefix + "--list-box__invalid-icon--warning warn-icon"
20804
- }) : _vm._e(), _vm._ssrNode(" "), _vm._ssrNode("<div role=\"button\" aria-haspopup=\"true\"" + _vm._ssrAttr("aria-expanded", _vm.open ? 'true' : 'false') + _vm._ssrAttr("aria-owns", _vm.uid) + _vm._ssrAttr("aria-controls", _vm.uid) + " tabindex=\"-1\" type=\"button\"" + _vm._ssrAttr("aria-label", _vm.open ? 'close menu' : 'open menu') + " data-toggle=\"true\"" + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__field"]) + " data-v-610245c0>", "</div>", [_vm._ssrNode("<input" + _vm._ssrAttr("aria-controls", _vm.uid) + " aria-autocomplete=\"list\" role=\"combobox\"" + _vm._ssrAttr("aria-disabled", _vm.disabled) + _vm._ssrAttr("aria-expanded", _vm.open ? 'true' : 'false') + " autocomplete=\"off\"" + _vm._ssrAttr("disabled", _vm.disabled) + _vm._ssrAttr("placeholder", _vm.label) + _vm._ssrAttr("value", _vm.filter) + _vm._ssrClass(null, [_vm.carbonPrefix + "--text-input", (_obj$3 = {}, _obj$3[_vm.carbonPrefix + "--text-input--empty"] = !_vm.filter || _vm.filter.length === 0, _obj$3)]) + " data-v-610245c0> "), _vm.filter ? _vm._ssrNode("<div role=\"button\" tabindex=\"0\"" + _vm._ssrAttr("title", _vm.clearFilterLabel) + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__selection"]) + " data-v-610245c0>", "</div>", [_c('Close16')], 1) : _vm._e(), _vm._ssrNode(" "), _vm._ssrNode("<div role=\"button\"" + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__menu-icon", (_obj$4 = {}, _obj$4[_vm.carbonPrefix + "--list-box__menu-icon--open"] = _vm.open, _obj$4)]) + " data-v-610245c0>", "</div>", [_c('chevron-down-16', {
20812
+ }) : _vm._e(), _vm._ssrNode(" "), _vm._ssrNode("<div role=\"button\" aria-haspopup=\"true\"" + _vm._ssrAttr("aria-expanded", _vm.open ? 'true' : 'false') + _vm._ssrAttr("aria-owns", _vm.uid) + _vm._ssrAttr("aria-controls", _vm.uid) + " tabindex=\"-1\" type=\"button\"" + _vm._ssrAttr("aria-label", _vm.open ? 'close menu' : 'open menu') + " data-toggle=\"true\"" + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__field"]) + " data-v-001e5b15>", "</div>", [_vm._ssrNode("<input" + _vm._ssrAttr("aria-controls", _vm.uid) + " aria-autocomplete=\"list\" role=\"combobox\"" + _vm._ssrAttr("aria-disabled", _vm.disabled) + _vm._ssrAttr("aria-expanded", _vm.open ? 'true' : 'false') + " autocomplete=\"off\"" + _vm._ssrAttr("disabled", _vm.disabled) + _vm._ssrAttr("readonly", _vm.readonly) + _vm._ssrAttr("placeholder", _vm.label) + _vm._ssrAttr("value", _vm.filter) + _vm._ssrClass(null, [_vm.carbonPrefix + "--text-input", (_obj$3 = {}, _obj$3[_vm.carbonPrefix + "--text-input--empty"] = !_vm.filter || _vm.filter.length === 0, _obj$3)]) + " data-v-001e5b15> "), _vm.filter ? _vm._ssrNode("<div role=\"button\" tabindex=\"0\"" + _vm._ssrAttr("title", _vm.clearFilterLabel) + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__selection", {
20813
+ 'cursor-not-allowed': _vm.readonly
20814
+ }]) + " data-v-001e5b15>", "</div>", [_c('Close16')], 1) : _vm._e(), _vm._ssrNode(" "), _vm._ssrNode("<div role=\"button\"" + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__menu-icon", (_obj$4 = {}, _obj$4[_vm.carbonPrefix + "--list-box__menu-icon--open"] = _vm.open, _obj$4), {
20815
+ 'cursor-not-allowed': _vm.readonly
20816
+ }]) + " data-v-001e5b15>", "</div>", [_c('chevron-down-16', {
20805
20817
  attrs: {
20806
20818
  "aria-label": _vm.open ? 'Close menu' : 'Open menu'
20807
20819
  }
20808
20820
  })], 1)], 2), _vm._ssrNode(" <div" + _vm._ssrAttr("id", _vm.uid) + " role=\"listbox\"" + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__menu"]) + _vm._ssrStyle(null, null, {
20809
20821
  display: _vm.open ? '' : 'none'
20810
- }) + " data-v-610245c0>" + _vm._ssrList(_vm.limitedDataOptions, function (item, index) {
20822
+ }) + " data-v-001e5b15>" + _vm._ssrList(_vm.limitedDataOptions, function (item, index) {
20811
20823
  var _obj;
20812
20824
 
20813
- return "<div" + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__menu-item", (_obj = {}, _obj[_vm.carbonPrefix + "--list-box__menu-item--highlighted"] = _vm.highlighted === item.value, _obj)]) + " data-v-610245c0><div" + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__menu-item__option"]) + " data-v-610245c0>" + _vm._ssrEscape("\n " + _vm._s(_vm.getItemLabel(item)) + "\n ") + "</div></div>";
20814
- }) + "</div>")], 2), _vm._ssrNode(" "), _vm.isInvalid ? _vm._ssrNode("<div" + _vm._ssrClass(null, [_vm.carbonPrefix + "--form-requirement"]) + " data-v-610245c0>", "</div>", [_vm._t("invalid-message", function () {
20825
+ return "<div" + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__menu-item", (_obj = {}, _obj[_vm.carbonPrefix + "--list-box__menu-item--highlighted"] = _vm.highlighted === item.value, _obj)]) + " data-v-001e5b15><div" + _vm._ssrClass(null, [_vm.carbonPrefix + "--list-box__menu-item__option"]) + " data-v-001e5b15>" + _vm._ssrEscape("\n " + _vm._s(_vm.getItemLabel(item)) + "\n ") + "</div></div>";
20826
+ }) + "</div>")], 2), _vm._ssrNode(" "), _vm.isInvalid ? _vm._ssrNode("<div" + _vm._ssrClass(null, [_vm.carbonPrefix + "--form-requirement"]) + " data-v-001e5b15>", "</div>", [_vm._t("invalid-message", function () {
20815
20827
  return [_vm._v(_vm._s(_vm.invalidMessage))];
20816
- })], 2) : _vm._e(), _vm._ssrNode(" "), _vm.isWarn && !_vm.isInvalid ? _vm._ssrNode("<div" + _vm._ssrClass(null, _vm.carbonPrefix + "--form__requirement warn-text") + " data-v-610245c0>", "</div>", [_vm._t("warn-text", function () {
20828
+ })], 2) : _vm._e(), _vm._ssrNode(" "), _vm.isWarn && !_vm.isInvalid ? _vm._ssrNode("<div" + _vm._ssrClass(null, _vm.carbonPrefix + "--form__requirement warn-text") + " data-v-001e5b15>", "</div>", [_vm._t("warn-text", function () {
20817
20829
  return [_vm._v(_vm._s(_vm.warnText))];
20818
- })], 2) : _vm._e(), _vm._ssrNode(" "), _vm.isHelper && !_vm.isInvalid && !_vm.isWarn ? _vm._ssrNode("<div" + _vm._ssrClass(null, [_vm.carbonPrefix + "--form__helper-text", (_obj$5 = {}, _obj$5[_vm.carbonPrefix + "--form__helper-text--disabled"] = _vm.disabled, _obj$5)]) + " data-v-610245c0>", "</div>", [_vm._t("helper-text", function () {
20830
+ })], 2) : _vm._e(), _vm._ssrNode(" "), _vm.isHelper && !_vm.isInvalid && !_vm.isWarn ? _vm._ssrNode("<div" + _vm._ssrClass(null, [_vm.carbonPrefix + "--form__helper-text", (_obj$5 = {}, _obj$5[_vm.carbonPrefix + "--form__helper-text--disabled"] = _vm.disabled, _obj$5)]) + " data-v-001e5b15>", "</div>", [_vm._t("helper-text", function () {
20819
20831
  return [_vm._v(_vm._s(_vm.helperText))];
20820
20832
  })], 2) : _vm._e()], 2);
20821
20833
  };
@@ -20825,11 +20837,11 @@ var __vue_staticRenderFns__$e = [];
20825
20837
 
20826
20838
  var __vue_inject_styles__$f = function __vue_inject_styles__(inject) {
20827
20839
  if (!inject) return;
20828
- inject("data-v-610245c0_0", {
20829
- source: ".margin-bottom-on-open[data-v-610245c0]{margin-bottom:14rem}.label-with-tooltip[data-v-610245c0]{display:flex;align-items:baseline}.ns-combo-box .warn-text[data-v-610245c0]{margin-top:.25rem}.invalid-icon[data-v-610245c0],.warn-icon[data-v-610245c0]{right:3rem}",
20840
+ inject("data-v-001e5b15_0", {
20841
+ source: ".margin-bottom-on-open[data-v-001e5b15]{margin-bottom:14rem}.label-with-tooltip[data-v-001e5b15]{display:flex;align-items:baseline}.ns-combo-box .warn-text[data-v-001e5b15]{margin-top:.25rem}.invalid-icon[data-v-001e5b15],.warn-icon[data-v-001e5b15]{right:3rem}.cursor-not-allowed[data-v-001e5b15]{cursor:not-allowed}",
20830
20842
  map: undefined,
20831
20843
  media: undefined
20832
- }), inject("data-v-610245c0_1", {
20844
+ }), inject("data-v-001e5b15_1", {
20833
20845
  source: ".ns-combo-box .bx--tooltip__label .bx--tooltip__trigger{margin-left:.25rem}.ns-combo-box .bx--list-box__invalid-icon--warning{position:absolute;top:50%;right:3rem;fill:#f1c21b;transform:translateY(-50%)}.ns-combo-box .bx--list-box__invalid-icon--warning+.bx--list-box__field .bx--list-box__selection{right:4rem!important}",
20834
20846
  map: undefined,
20835
20847
  media: undefined
@@ -20838,10 +20850,10 @@ var __vue_inject_styles__$f = function __vue_inject_styles__(inject) {
20838
20850
  /* scoped */
20839
20851
 
20840
20852
 
20841
- var __vue_scope_id__$f = "data-v-610245c0";
20853
+ var __vue_scope_id__$f = "data-v-001e5b15";
20842
20854
  /* module identifier */
20843
20855
 
20844
- var __vue_module_identifier__$f = "data-v-610245c0";
20856
+ var __vue_module_identifier__$f = "data-v-001e5b15";
20845
20857
  /* functional template */
20846
20858
 
20847
20859
  var __vue_is_functional_template__$f = false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nethserver/ns8-ui-lib",
3
- "version": "1.2.10",
3
+ "version": "1.3.1",
4
4
  "description": "Vue.js library for NethServer 8 UI",
5
5
  "keywords": [
6
6
  "nethserver",
@@ -29,28 +29,20 @@
29
29
  </template>
30
30
  <template v-else>
31
31
  <div class="backups">
32
- <div
33
- v-for="backup in backupsContainingInstance"
34
- :key="backup.id"
35
- class="backup"
36
- >
37
- <div v-if="backupsContainingInstance.length > 1" class="row">
38
- <h5 class="title">
39
- {{ backup.name }}
40
- </h5>
41
- </div>
32
+ <div v-if="backupsContainingInstance.length == 1" class="backup">
42
33
  <div class="table-wrapper">
43
34
  <div class="table">
44
35
  <!-- status -->
45
36
  <div class="tr">
46
37
  <div class="td label">{{ statusLabel }}</div>
47
38
  <div class="td status">
48
- <span v-if="!backup.enabled" class="ns-warning">
39
+ <span v-if="!singleBackup.enabled" class="ns-warning">
49
40
  {{ backupDisabledLabel }}
50
41
  </span>
51
42
  <span
52
43
  v-else-if="
53
- status[backup.id] && status[backup.id].success == true
44
+ status[singleBackup.id] &&
45
+ status[singleBackup.id].success == true
54
46
  "
55
47
  class="ns-success"
56
48
  >
@@ -58,7 +50,8 @@
58
50
  </span>
59
51
  <span
60
52
  v-else-if="
61
- status[backup.id] && status[backup.id].success == false
53
+ status[singleBackup.id] &&
54
+ status[singleBackup.id].success == false
62
55
  "
63
56
  class="ns-error"
64
57
  >
@@ -70,8 +63,7 @@
70
63
  </div>
71
64
  </div>
72
65
  <NsBackupCardDetails
73
- v-if="backupsContainingInstance.length == 1"
74
- :backup="backup"
66
+ :backup="singleBackup"
75
67
  :status="status"
76
68
  :repositoryLabel="repositoryLabel"
77
69
  :completedLabel="completedLabel"
@@ -81,27 +73,32 @@
81
73
  />
82
74
  </div>
83
75
  </div>
84
- <div
85
- v-if="backupsContainingInstance.length > 1"
86
- class="table-wrapper"
87
- >
76
+ </div>
77
+ <div v-else>
78
+ <!-- multiple backups for this instance -->
79
+ <div class="table-wrapper">
88
80
  <div class="table">
89
- <cv-accordion ref="accordion">
90
- <cv-accordion-item :open="toggleAccordion[0]">
91
- <template slot="title">{{ showMoreLabel }}</template>
92
- <template slot="content">
93
- <NsBackupCardDetails
94
- :backup="backup"
95
- :status="status"
96
- :repositoryLabel="repositoryLabel"
97
- :completedLabel="completedLabel"
98
- :durationLabel="durationLabel"
99
- :totalSizeLabel="totalSizeLabel"
100
- :totalFileCountLabel="totalFileCountLabel"
101
- />
102
- </template>
103
- </cv-accordion-item>
104
- </cv-accordion>
81
+ <!-- status -->
82
+ <div class="tr">
83
+ <div class="td label">{{ statusLabel }}</div>
84
+ <div class="td status">
85
+ <span
86
+ v-if="summaryStatus && summaryStatus.success == true"
87
+ class="ns-success"
88
+ >
89
+ <span>{{ statusSuccessLabel }}</span>
90
+ </span>
91
+ <span
92
+ v-else-if="summaryStatus && summaryStatus.success == false"
93
+ class="ns-error"
94
+ >
95
+ {{ statusErrorLabel }}
96
+ </span>
97
+ <span v-else class="ns-warning">
98
+ {{ multipleUncertainStatusLabel }}
99
+ </span>
100
+ </div>
101
+ </div>
105
102
  </div>
106
103
  </div>
107
104
  </div>
@@ -186,6 +183,10 @@ export default {
186
183
  type: String,
187
184
  default: "Show more",
188
185
  },
186
+ multipleUncertainStatusLabel: {
187
+ type: String,
188
+ default: "Some backups failed or are pending",
189
+ },
189
190
  moduleId: {
190
191
  type: String,
191
192
  required: true,
@@ -215,9 +216,17 @@ export default {
215
216
  data() {
216
217
  return {
217
218
  backupsContainingInstance: [],
218
- status: [],
219
+ status: {},
220
+ summaryStatus: undefined,
219
221
  };
220
222
  },
223
+ computed: {
224
+ singleBackup() {
225
+ return this.backupsContainingInstance.length === 1
226
+ ? this.backupsContainingInstance[0]
227
+ : null;
228
+ },
229
+ },
221
230
  watch: {
222
231
  repositories: function () {
223
232
  this.updateData();
@@ -247,8 +256,22 @@ export default {
247
256
  const instance = backup.instances.find(
248
257
  (i) => i.module_id == this.moduleId
249
258
  );
250
- const status = instance.status;
251
- this.status[backup.id] = status;
259
+ const instanceStatus = instance.status;
260
+ this.status[backup.id] = instanceStatus;
261
+
262
+ // overwrite summary status if:
263
+ // - it is undefined (first time loading)
264
+ // - the status is not successful
265
+ // - the status is null (not run yet) and the previous status was true (successful)
266
+ if (
267
+ this.summaryStatus === undefined ||
268
+ (instanceStatus && instanceStatus.success === false) ||
269
+ (instanceStatus &&
270
+ instanceStatus.success === null &&
271
+ this.summaryStatus === true)
272
+ ) {
273
+ this.summaryStatus = instanceStatus;
274
+ }
252
275
  }
253
276
  },
254
277
  goToBackup() {
@@ -332,4 +355,4 @@ export default {
332
355
  .ns-backup-card .bx--accordion--start .bx--accordion__content {
333
356
  margin-left: 0;
334
357
  }
335
- </style>
358
+ </style>
@@ -89,7 +89,7 @@ export default {
89
89
  required: true,
90
90
  },
91
91
  status: {
92
- type: Array,
92
+ type: Object,
93
93
  required: true,
94
94
  },
95
95
  repositoryLabel: {