From c4d5f194df621033326e12982083ba303d2e1089 Mon Sep 17 00:00:00 2001 From: Siye Wang Date: Wed, 29 Apr 2020 19:23:04 +0800 Subject: [PATCH] 1. Change lognhorn ico file. 2. When the volume has been bound to PVC, the optation of create PVC is disabled. 3. Fix bug that backup does not load 4. Disable recovery when the latest backup field is empty Signed-off-by: Siye Wang --- public/favicon.ico | Bin 5430 -> 4286 bytes src/models/backup.js | 7 ++++--- src/models/engineimage.js | 2 +- src/models/volume.js | 2 +- src/routes/backup/BackupBulkActions.js | 2 +- src/routes/backup/BackupVolumeList.js | 2 +- src/routes/volume/VolumeBulkActions.js | 3 ++- 7 files changed, 10 insertions(+), 8 deletions(-) diff --git a/public/favicon.ico b/public/favicon.ico index ce31321d99b250fa7d257813a0fffdaaf515d45b..f971123ff4045e320bdc18a8494e8268bba851d8 100644 GIT binary patch literal 4286 zcmc&&SxA&o6#mC-G0PUTg(50iBqHje9)h5JjDn!|2#TJHpxiRe%*u?Su&8`!p+ING zy)-j*#HCWn981g8%q0d>$1TSkb>{1wYyXfsOR4{KhdX!XzyF-?ob#RK{v$~$daYh9 z@w=p6C`n5sN%E&jm!#b^`MMaiSL`!7M=wZ{Wn>6-uWlhN$`9%w$t^P}%nKFiCtx-i z(W2KNHPRP}f$qVUZPbR&f<7x4xwm(^9b4!?_NGKEL{gZyTYN6tJ)J9a=5F3tf5uEY zf>gr&vS$ygbb4PSMm58lY4W<#g)*-2cR-D5Y2iudfRF+GBn^4pKFt; zs|kkMY}DjkMDe2o$co)Sb-|nTQ90&@u+z@_q4L=&k>h>swHP+{6Q0#2rn4J3Crmx9 zXsgf1N8M#)UESzVhw9v@zr?c&-TK-;quWpg^MDantHqfbw!LrFX>{h8JAn^AleN|5 z+U^_sf$#?V1P3iu8t5~FP(a);N9?ngaoZ_2kD{S89>$h34EA@BKK6SA_o>X7wPSrC zeD8}MiXC|j4fc|4dNfr$!Mlu;$iK6Tdf##pi*j6YjB-zqzpH~hka}(rUQi7zRUe{r z?QL{?Eg^l{N$e<(LqB_jzWf_GCRtAAm34wA#%EvZDeh7u7gH|Hu*nyAuFl9~^id%> zd>)D(?kA4AglYC_BUM*W&2Qz}BS;u$|MP2` zFwkod_Xv(+*N^4MmEBJEIrrM?^Mq`E-Y9u|Q26vuo3tS_#d+M=`d09*37Iiv+hzI8 z8~3G-rq`l|F|Qmq^1i%kf<5U>zCds;Uz@&FMY4UM4V`Tl+lFIDFWa6IA5Zq4y?bkosM#3G|d7=wPys0``4{b}1`jAcG@ zC+xE9My`fxNZSPcT-ml&Aistb3|d|wZ@^T@=U<6U3&=mnJ?b+c@=_Zp|924dRXL|W z?KLn8Ccp`h&r|4x-{1$B3?rZnhFsKTa|+twG06WUtcN!E1zO>IkZvSo`+~CUeGZ}P z3en#}_YUOqS3h12@$W-7Q~vG>vC+N!4m}}lh5Gm7`>Y86f3Q6Z9hS>T%^|;EviWIC zkA=1Q2DuWxwfu~H0=~cI!Y6P5nnB|so5P^7^6mZlU2OKjHPGC?53)H82W?sUFl2WH zro$xo5&nX$un@L^`at#1EL)Hc>EDM0X#6+8agC#`FGhZ9%WimwN!O122sZb;XG})` zGa8qw5GuS-tR>xpnRO;f(*n?Xl)hMa!q%Bg-wuJO;+|Nc6rc^P;Ae;6_T z`hGkIcMmGZnqR$0%sn=)d*_r-<#VtfcEEPf`uqiq^m`v&xv%r<*yy_vpfQ;;i0%Pf$|1Z1= z7Yg)o_fn00BB~<_jOFr=#r|P|J}!S_RBqch&MucMCI7VlNq)We<6oiw<9L2IHhRCb zS9JA4WSsexPkZP>@;aM1^9R=i7eAkjGk?BZVeQ4{Z>4{az)zsPe~Je>#QO__idR?S+Hp3fL*XY&$`7{#{UvbR1_(y#=(+H-gpzXH&3rv4T=@R7dK6C_O)?_2CzK z{rA-i>3qX2O4AT`2kcdp6j#5Q4Rw(WnzvJ?rYwbdJMgbW+E@Nj&@}8Uz6o6utm)sA O=$U8|ef@h=11|xv$jht% diff --git a/src/models/backup.js b/src/models/backup.js index 0bdd503a..4fad6d8e 100644 --- a/src/models/backup.js +++ b/src/models/backup.js @@ -41,9 +41,10 @@ export default { subscriptions: { setup({ dispatch, history }) { history.listen(() => { - let search = history.location.search ? queryString.parse(history.location.search) : {} - - if (history.location.state || search.state) { + let search = history.location && history.location.search ? queryString.parse(history.location.search) : {} + // This code may cause confusion. React router does not pass parameters when right-clicking on Link, + // resulting in no request for the page, so an Undefined judgment is added. + if (history.location && (search.state || history.location.state || typeof (history.location.state) === 'undefined')) { dispatch({ type: 'query', payload: search, diff --git a/src/models/engineimage.js b/src/models/engineimage.js index 96bf9d6f..6b6da073 100755 --- a/src/models/engineimage.js +++ b/src/models/engineimage.js @@ -27,7 +27,7 @@ export default { payload, }, { call, put }) { const data = yield call(query, parse(payload)) - if (payload && payload.field && payload.keyword) { + if (payload && payload.field && payload.keyword && data.data) { data.data = data.data.filter(item => item[payload.field] && item[payload.field].indexOf(payload.keyword.trim()) > -1) } if (data.data) { diff --git a/src/models/volume.js b/src/models/volume.js index ffbe37ed..a9b8035a 100755 --- a/src/models/volume.js +++ b/src/models/volume.js @@ -468,7 +468,7 @@ export default { return { ...state, createPVAndPVCSingleVisible: false, pvNameDisabled: false, previousChecked: false, createPVAndPVCModalSingleKey: Math.random() } }, hideCreatePVAndPVCModal(state) { - return { ...state, createPVAndPVCVisible: false, previousChecked: false, createPVAndPVCModalKey: Math.random() } + return { ...state, createPVAndPVCVisible: false, nameSpaceDisabled: false, previousChecked: false, createPVAndPVCModalKey: Math.random() } }, hideCreatePVCAllModal(state) { return { ...state, createPVCAllModalVisible: false, createPVCAllModalKey: Math.random() } diff --git a/src/routes/backup/BackupBulkActions.js b/src/routes/backup/BackupBulkActions.js index 2ac097f9..899508b5 100644 --- a/src/routes/backup/BackupBulkActions.js +++ b/src/routes/backup/BackupBulkActions.js @@ -17,7 +17,7 @@ function bulkActions({ selectedRows, restoreLatestBackup, showBulkCreateDisaster } const allActions = [ - { key: 'restoreLatestBackup', name: 'Restore Latest Backup', disabled() { return selectedRows.length === 0 } }, + { key: 'restoreLatestBackup', name: 'Restore Latest Backup', disabled() { return selectedRows.length === 0 || selectedRows.some(record => !record.lastBackupName) } }, { key: 'bulkCreateDisasterRecoveryVolume', name: 'Create Disaster Recovery Volume', disabled() { return selectedRows.length === 0 || selectedRows.some(record => !record.lastBackupName) } }, ] diff --git a/src/routes/backup/BackupVolumeList.js b/src/routes/backup/BackupVolumeList.js index f34690c4..647fd144 100644 --- a/src/routes/backup/BackupVolumeList.js +++ b/src/routes/backup/BackupVolumeList.js @@ -144,7 +144,7 @@ class List extends React.Component { return ( this.handleMenuClick(record, e)} diff --git a/src/routes/volume/VolumeBulkActions.js b/src/routes/volume/VolumeBulkActions.js index 04f75143..c528f5ba 100644 --- a/src/routes/volume/VolumeBulkActions.js +++ b/src/routes/volume/VolumeBulkActions.js @@ -60,6 +60,7 @@ function bulkActions({ selectedRows, engineImages, bulkDeleteVolume, showBulkEng const hasDoingState = (exclusions = []) => selectedRows.some(item => (item.state.endsWith('ing') && !exclusions.includes(item.state)) || item.currentImage !== item.engineImage) const isSnapshotDisabled = () => selectedRows.every(item => !item.actions || !item.actions.snapshotCreate) const isHasStandy = () => selectedRows.some(item => item.standby) + const isHasPVC = () => selectedRows.some(item => item.kubernetesStatus && item.kubernetesStatus.pvStatus && item.kubernetesStatus.pvStatus === 'Bound') // const isAttached = () => selectedRows.some(item => item.state === 'attached') const isRestoring = () => selectedRows.some((selected) => { if (selected.restoreStatus && selected.restoreStatus.length > 0) { @@ -86,7 +87,7 @@ function bulkActions({ selectedRows, engineImages, bulkDeleteVolume, showBulkEng { key: 'upgrade', name: 'Upgrade Engine', disabled() { return selectedRows.length === 0 || !hasAction('engineUpgrade') || hasDoingState() || hasMoreOptions() || isRestoring() } }, { key: 'expandVolume', name: 'Expand Volume', disabled() { return selectedRows.length === 0 || !hasAction('attach') } }, { key: 'createSchedule', name: 'Update Schedule', disabled() { return selectedRows.length === 0 } }, - { key: 'createPVAndPVC', name: 'Create PV/PVC', disabled() { return selectedRows.length === 0 || isHasStandy() || isRestoring() } }, + { key: 'createPVAndPVC', name: 'Create PV/PVC', disabled() { return selectedRows.length === 0 || isHasStandy() || isRestoring() || isHasPVC() } }, { key: 'bulkChangeVolume', name: 'Activate Disaster Recovery Volume', disabled() { return selectedRows.length === 0 || selectedRows.some((item) => !item.standby) } }, ]