This is an automated email from the ASF dual-hosted git repository. nvazquez pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 2a243b8b692489a6f317f499d1b01e2aff052209 Merge: dc17cf4 4147d5a Author: nicolas <[email protected]> AuthorDate: Fri Sep 10 23:15:53 2021 -0300 Merge branch '4.15' into main .../command/user/config/ListCapabilitiesCmd.java | 2 + .../api/response/CapabilitiesResponse.java | 8 +++ .../com/cloud/server/ManagementServerImpl.java | 2 + ui/src/components/page/GlobalLayout.vue | 5 +- ui/src/store/modules/user.js | 10 +-- ui/src/views/AutogenView.vue | 8 ++- ui/src/views/image/RegisterOrUploadTemplate.vue | 78 +++++++++++++--------- .../views/infra/network/IpRangesTabManagement.vue | 7 +- 8 files changed, 73 insertions(+), 47 deletions(-) diff --cc ui/src/components/page/GlobalLayout.vue index 0203cd1,a059ad2..3eac55a --- a/ui/src/components/page/GlobalLayout.vue +++ b/ui/src/components/page/GlobalLayout.vue @@@ -18,65 -18,61 +18,65 @@@ <template> <a-layout class="layout" :class="[device]"> - <template v-if="isSideMenu()"> - <a-drawer - v-if="isMobile()" - :wrapClassName="'drawer-sider ' + navTheme" - :closable="false" - :visible="collapsed" - placement="left" - @close="() => this.collapsed = false" - > - <side-menu - :menus="menus" - :theme="navTheme" - :collapsed="false" - :collapsible="true" - mode="inline" - @menuSelect="menuSelect"></side-menu> - </a-drawer> + <a-affix style="z-index: 200"> + + <template v-if="isSideMenu()"> + <a-drawer + v-if="isMobile()" + :wrapClassName="'drawer-sider ' + navTheme" + :closable="false" + :visible="collapsed" + placement="left" + @close="() => this.collapsed = false" + > + <side-menu + :menus="menus" + :theme="navTheme" + :collapsed="false" + :collapsible="true" + mode="inline" + @menuSelect="menuSelect"></side-menu> + </a-drawer> - <side-menu - v-else - mode="inline" - :menus="menus" - :theme="navTheme" - :collapsed="collapsed" - :collapsible="true"></side-menu> - </template> - <template v-else> - <a-drawer - v-if="isMobile()" - :wrapClassName="'drawer-sider ' + navTheme" - placement="left" - @close="() => this.collapsed = false" - :closable="false" - :visible="collapsed" - > <side-menu + v-else + mode="inline" :menus="menus" :theme="navTheme" - :collapsed="false" - :collapsible="true" - mode="inline" - @menuSelect="menuSelect"></side-menu> - </a-drawer> - </template> + :collapsed="collapsed" + :collapsible="true"></side-menu> + </template> + <template v-else> + <a-drawer + v-if="isMobile()" + :wrapClassName="'drawer-sider ' + navTheme" + placement="left" + @close="() => this.collapsed = false" + :closable="false" + :visible="collapsed" + > + <side-menu + :menus="menus" + :theme="navTheme" + :collapsed="false" + :collapsible="true" + mode="inline" + @menuSelect="menuSelect"></side-menu> + </a-drawer> + </template> + - <template> ++ <template v-if="isDevelopmentMode"> + <drawer :visible="showSetting" placement="right"> + <div slot="handler"> + <a-button type="primary" size="large"> + <a-icon :type="showSetting ? 'close' : 'setting'"/> + </a-button> + </div> + <setting slot="drawer" :visible="showSetting" /> + </drawer> + </template> - <template v-if="isDevelopmentMode"> - <drawer :visible="showSetting" placement="right"> - <div slot="handler"> - <a-button type="primary" size="large"> - <a-icon :type="showSetting ? 'close' : 'setting'"/> - </a-button> - </div> - <setting slot="drawer" :visible="showSetting" /> - </drawer> - </template> + </a-affix> <a-layout :class="[layoutMode, `content-width-${contentWidth}`]" :style="{ paddingLeft: contentPaddingLeft, minHeight: '100vh' }"> <!-- layout header --> diff --cc ui/src/views/AutogenView.vue index d8ccd0c,247ec00..d1b9f4a --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@@ -474,63 -430,8 +479,60 @@@ export default } }) eventBus.$on('async-job-complete', (action) => { + if (this.$route.path.includes('/vm/')) { + if (action && 'api' in action && ['destroyVirtualMachine'].includes(action.api)) { + return + } + } + + if ((this.$route.path.includes('/publicip/') && ['firewall', 'portforwarding', 'loadbalancing'].includes(this.$route.query.tab)) || + (this.$route.path.includes('/guestnetwork/') && (this.$route.query.tab === 'egress.rules' || this.$route.query.tab === 'public.ip.addresses'))) { + return + } + + if (this.$route.path.includes('/template/') || this.$route.path.includes('/iso/')) { + return + } this.fetchData() }) - eventBus.$on('exec-action', (action, isGroupAction) => { - this.execAction(action, isGroupAction) - }) + eventBus.$on('update-bulk-job-status', (items, action) => { + for (const item of items) { + this.$store.getters.headerNotices.map(function (j) { + if (j.jobid === item.jobid) { + j.bulkAction = action + } + }) + } + }) + + eventBus.$on('update-resource-state', (selectedItems, resource, state, jobid) => { + if (selectedItems.length === 0) { + return + } + var tempResource = [] + if (selectedItems && resource) { + if (resource.includes(',')) { + resource = resource.split(',') + tempResource = resource + } else { + tempResource.push(resource) + } + for (var r = 0; r < tempResource.length; r++) { + var objIndex = 0 + if (this.$route.path.includes('/template') || this.$route.path.includes('/iso')) { + objIndex = selectedItems.findIndex(obj => (obj.zoneid === tempResource[r])) + } else { + objIndex = selectedItems.findIndex(obj => (obj.id === tempResource[r] || obj.username === tempResource[r])) + } + if (state && objIndex !== -1) { + selectedItems[objIndex].status = state + } + if (jobid && objIndex !== -1) { + selectedItems[objIndex].jobid = jobid + } + } + } + }) this.currentPath = this.$route.fullPath this.fetchData()
