From 7460bd3b87e708afafa7fa59c64b1428b5a034fe Mon Sep 17 00:00:00 2001 From: Aleksandra Troitskaya Date: Fri, 22 Sep 2023 10:39:10 +0200 Subject: [PATCH] LITE-28566: Add applied pricelist to marketplace tables --- ...c95.css => index.79edc4161086dcc9a76c.css} | 1 + ...19f36.js => index.7dace5de4ae265038d36.js} | 6 +-- connect_ext_ppr/static/index.html | 2 +- ...> request-details.2e8575914807cddd3bc9.js} | 6 +-- .../PricingTab.vue | 35 +++++++++++--- ui/src/components/RequestMarketplacesTab.vue | 48 +++++++++++++++++-- ui/src/pages/RequestDetails.vue | 3 +- 7 files changed, 83 insertions(+), 18 deletions(-) rename connect_ext_ppr/static/{index.6f15022f4aecf590cc95.css => index.79edc4161086dcc9a76c.css} (99%) rename connect_ext_ppr/static/{index.ab2a9c611cfbbcb19f36.js => index.7dace5de4ae265038d36.js} (98%) rename connect_ext_ppr/static/{request-details.4603b974f1f1b0a7f6bd.js => request-details.2e8575914807cddd3bc9.js} (93%) diff --git a/connect_ext_ppr/static/index.6f15022f4aecf590cc95.css b/connect_ext_ppr/static/index.79edc4161086dcc9a76c.css similarity index 99% rename from connect_ext_ppr/static/index.6f15022f4aecf590cc95.css rename to connect_ext_ppr/static/index.79edc4161086dcc9a76c.css index e4516f8..e2af737 100644 --- a/connect_ext_ppr/static/index.6f15022f4aecf590cc95.css +++ b/connect_ext_ppr/static/index.79edc4161086dcc9a76c.css @@ -1842,6 +1842,7 @@ button + .c-text-field__append-inner > svg[data-v-b5bb9caa]:first-child { margin-top: 0; } .pricing-tab__pricelist { + min-width: 226px; max-width: 226px; } diff --git a/connect_ext_ppr/static/index.ab2a9c611cfbbcb19f36.js b/connect_ext_ppr/static/index.7dace5de4ae265038d36.js similarity index 98% rename from connect_ext_ppr/static/index.ab2a9c611cfbbcb19f36.js rename to connect_ext_ppr/static/index.7dace5de4ae265038d36.js index fa6d376..c59d85e 100644 --- a/connect_ext_ppr/static/index.ab2a9c611cfbbcb19f36.js +++ b/connect_ext_ppr/static/index.7dace5de4ae265038d36.js @@ -510,7 +510,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cloudblueconnect_material_svg_baseline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @cloudblueconnect/material-svg/baseline */ \"./node_modules/@cloudblueconnect/material-svg/icons/google/arrow_drop_down/baseline.svg\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ramda */ \"./node_modules/ramda/es/index.js\");\n/* harmony import */ var _components_cButton_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~components/cButton.vue */ \"./ui/src/components/cButton.vue\");\n/* harmony import */ var _components_cDataTable_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ~components/cDataTable.vue */ \"./ui/src/components/cDataTable.vue\");\n/* harmony import */ var _components_cMenu_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ~components/cMenu.vue */ \"./ui/src/components/cMenu.vue\");\n/* harmony import */ var _components_DetailItem_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ~components/DetailItem.vue */ \"./ui/src/components/DetailItem.vue\");\n/* harmony import */ var _components_Pic_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ~components/Pic.vue */ \"./ui/src/components/Pic.vue\");\n/* harmony import */ var _mixins_sync__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ~mixins/sync */ \"./ui/src/tools/mixins/sync.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/utils */ \"./ui/src/utils.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n mixins: [(0,_mixins_sync__WEBPACK_IMPORTED_MODULE_6__[\"default\"])([{ prop: 'value', local: 'localValue' }])],\n\n components: {\n cButton: _components_cButton_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n cDataTable: _components_cDataTable_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n cMenu: _components_cMenu_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n DetailItem: _components_DetailItem_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n Pic: _components_Pic_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n },\n\n props: {\n value: {\n type: Array,\n default: () => [],\n },\n\n marketplaces: {\n type: Array,\n required: true,\n },\n\n deploymentId: String,\n },\n\n data: () => ({\n localValue: [],\n marketplacesWithPriceLists: [],\n loading: false,\n icons: {\n googleArrowDropDownBaseline: _cloudblueconnect_material_svg_baseline__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n },\n\n headers: [\n {\n text: 'Marketplace',\n value: 'marketplace',\n align: 'left',\n },\n {\n text: 'Pricing stream batch',\n value: 'pricing',\n align: 'left',\n width: 266,\n },\n ],\n }),\n\n methods: {\n prepareRow(item) {\n return {\n id: item.id,\n name: item.name,\n icon: item.icon,\n batches: item.batches,\n pricelist: item.batches[0],\n };\n },\n\n setBatch(batch, marketplace) {\n const index = (0,ramda__WEBPACK_IMPORTED_MODULE_0__.findIndex)((0,ramda__WEBPACK_IMPORTED_MODULE_0__.propEq)(marketplace.id, 'id'), this.localValue);\n this.localValue[index].pricelist = (0,ramda__WEBPACK_IMPORTED_MODULE_0__.pick)(['id', 'name'], batch);\n },\n },\n\n async created() {\n this.localValue = this.marketplaces;\n try {\n this.loading = true;\n const batchesList = await (0,_utils__WEBPACK_IMPORTED_MODULE_7__.getDeploymentBatches)(this.deploymentId);\n const getBatchesForMarketplace = item => ({\n ...item,\n batches: (0,ramda__WEBPACK_IMPORTED_MODULE_0__.filter)((0,ramda__WEBPACK_IMPORTED_MODULE_0__.pathEq)(item.id, ['stream', 'context', 'marketplace', 'id']))(batchesList),\n });\n this.marketplacesWithPriceLists = (0,ramda__WEBPACK_IMPORTED_MODULE_0__.map)(getBatchesForMarketplace, this.marketplaces);\n } catch (e) {\n this.$emit('error', e);\n } finally {\n this.loading = false;\n }\n },\n});\n\n\n\n//# sourceURL=webpack://connect-extension-xvs/./ui/src/components/CreateDeploymentRequestDialog/PricingTab.vue?./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _cloudblueconnect_material_svg_baseline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @cloudblueconnect/material-svg/baseline */ \"./node_modules/@cloudblueconnect/material-svg/icons/google/arrow_drop_down/baseline.svg\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ramda */ \"./node_modules/ramda/es/index.js\");\n/* harmony import */ var _components_cButton_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~components/cButton.vue */ \"./ui/src/components/cButton.vue\");\n/* harmony import */ var _components_cDataTable_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ~components/cDataTable.vue */ \"./ui/src/components/cDataTable.vue\");\n/* harmony import */ var _components_cMenu_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ~components/cMenu.vue */ \"./ui/src/components/cMenu.vue\");\n/* harmony import */ var _components_DetailItem_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ~components/DetailItem.vue */ \"./ui/src/components/DetailItem.vue\");\n/* harmony import */ var _components_Pic_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ~components/Pic.vue */ \"./ui/src/components/Pic.vue\");\n/* harmony import */ var _mixins_sync__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ~mixins/sync */ \"./ui/src/tools/mixins/sync.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/utils */ \"./ui/src/utils.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n mixins: [(0,_mixins_sync__WEBPACK_IMPORTED_MODULE_6__[\"default\"])([{ prop: 'value', local: 'localValue' }])],\n\n components: {\n cButton: _components_cButton_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n cDataTable: _components_cDataTable_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n cMenu: _components_cMenu_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n DetailItem: _components_DetailItem_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n Pic: _components_Pic_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n },\n\n props: {\n value: {\n type: Array,\n default: () => [],\n },\n\n marketplaces: {\n type: Array,\n required: true,\n },\n\n deploymentId: String,\n },\n\n data: () => ({\n localValue: [],\n marketplacesWithPriceLists: [],\n loading: false,\n icons: {\n googleArrowDropDownBaseline: _cloudblueconnect_material_svg_baseline__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n },\n\n headers: [\n {\n text: 'Marketplace',\n value: 'marketplace',\n align: 'left',\n },\n {\n text: 'Pricing stream batch',\n value: 'pricing',\n align: 'left',\n width: 266,\n },\n ],\n }),\n\n methods: {\n prepareRow(item) {\n return {\n id: item.id,\n name: item.name,\n icon: item.icon,\n batches: item.batches,\n pricelist: item.pricelist,\n };\n },\n\n findMarketplaceInList(id) {\n return (0,ramda__WEBPACK_IMPORTED_MODULE_0__.findIndex)((0,ramda__WEBPACK_IMPORTED_MODULE_0__.propEq)(id, 'id'), this.localValue);\n },\n\n setBatch(batch, marketplace) {\n const index = this.findMarketplaceInList(marketplace.id);\n this.localValue[index].pricelist = (0,ramda__WEBPACK_IMPORTED_MODULE_0__.pick)(['id', 'name'], batch);\n },\n\n resetBatch(marketplace) {\n const index = this.findMarketplaceInList(marketplace.id);\n this.localValue[index].pricelist = undefined;\n },\n\n selectedPricelist(marketplace) {\n const index = this.findMarketplaceInList(marketplace.id);\n\n return this.localValue[index].pricelist\n ? this.localValue[index].pricelist.name : '—';\n },\n },\n\n async created() {\n this.localValue = this.marketplaces;\n try {\n this.loading = true;\n const batchesList = await (0,_utils__WEBPACK_IMPORTED_MODULE_7__.getDeploymentBatches)(this.deploymentId);\n const getBatchesForMarketplace = item => ({\n ...item,\n batches: (0,ramda__WEBPACK_IMPORTED_MODULE_0__.filter)((0,ramda__WEBPACK_IMPORTED_MODULE_0__.pathEq)(item.id, ['stream', 'context', 'marketplace', 'id']))(batchesList),\n });\n this.marketplacesWithPriceLists = (0,ramda__WEBPACK_IMPORTED_MODULE_0__.map)(getBatchesForMarketplace, this.marketplaces);\n } catch (e) {\n this.$emit('error', e);\n } finally {\n this.loading = false;\n }\n },\n});\n\n\n\n//# sourceURL=webpack://connect-extension-xvs/./ui/src/components/CreateDeploymentRequestDialog/PricingTab.vue?./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -2457,7 +2457,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c\n return _c(\n \"div\",\n { staticClass: \"pricing-tab\" },\n [\n _c(\"p\", { staticClass: \"pricing-tab__title\" }, [\n _vm._v(\"Link Pricing Stream Batches to Marketplaces\"),\n ]),\n _c(\"c-data-table\", {\n staticClass: \"pricing-tab__table\",\n attrs: {\n value: _vm.marketplacesWithPriceLists,\n headers: _vm.headers,\n \"prepare-row\": _vm.prepareRow,\n updating: _vm.loading,\n \"hide-all-pagination-sections\": \"\",\n \"fix-layout\": \"\",\n },\n scopedSlots: _vm._u([\n {\n key: \"items\",\n fn: function ({ row, visibleHeaders }) {\n return [\n _c(\n \"tr\",\n { staticClass: \"table__row hoverable\" },\n _vm._l(visibleHeaders, function (header) {\n return _c(\n \"td\",\n { key: header.value },\n [\n header.value === \"marketplace\"\n ? [\n _c(\"detail-item\", {\n staticClass: \"pricing-tab__detail\",\n scopedSlots: _vm._u(\n [\n {\n key: \"image\",\n fn: function () {\n return [\n _c(\"pic\", {\n staticClass: \"object-image\",\n attrs: {\n src: row.icon,\n width: 32,\n height: 32,\n size: \"contain\",\n },\n }),\n ]\n },\n proxy: true,\n },\n {\n key: \"body-text\",\n fn: function () {\n return [\n _c(\n \"div\",\n { staticClass: \"truncate-text\" },\n [\n _c(\"span\", [\n _vm._v(_vm._s(row.name)),\n ]),\n ]\n ),\n ]\n },\n proxy: true,\n },\n {\n key: \"assistive-text\",\n fn: function () {\n return [\n _c(\"span\", [_vm._v(_vm._s(row.id))]),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n }),\n ]\n : header.value === \"pricing\"\n ? [\n row.pricelist\n ? _c(\"c-menu\", {\n attrs: {\n locator: \"batches-list\",\n outline: \"\",\n small: \"\",\n \"min-width\": 266,\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"trigger\",\n fn: function () {\n return [\n _c(\n \"c-button\",\n {\n staticClass:\n \"c-menu-list__open\",\n attrs: {\n locator:\n \"c-menu-list_open-button\",\n small: \"\",\n upperCase: false,\n \"icon-right\":\n _vm.icons\n .googleArrowDropDownBaseline,\n mode: \"outlined\",\n },\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"truncate-text pricing-tab__pricelist\",\n attrs: {\n title:\n row.pricelist.name,\n },\n },\n [\n _vm._v(\n _vm._s(\n row.pricelist.name\n )\n ),\n ]\n ),\n ]\n ),\n ]\n },\n proxy: true,\n },\n {\n key: \"default\",\n fn: function () {\n return _vm._l(\n row.batches,\n function (batch) {\n return _c(\n \"div\",\n { key: batch.id },\n [\n _c(\n \"c-button\",\n {\n attrs: {\n small: \"\",\n \"upper-case\": false,\n },\n on: {\n click: function (\n $event\n ) {\n return _vm.setBatch(\n batch,\n row\n )\n },\n },\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"truncate-text\",\n },\n [\n _vm._v(\n _vm._s(batch.name)\n ),\n ]\n ),\n ]\n ),\n ],\n 1\n )\n }\n )\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n })\n : _c(\n \"div\",\n { staticClass: \"assistive-color\" },\n [_vm._v(\"—\")]\n ),\n ]\n : _vm._e(),\n ],\n 2\n )\n }),\n 0\n ),\n ]\n },\n },\n ]),\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://connect-extension-xvs/./ui/src/components/CreateDeploymentRequestDialog/PricingTab.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B1%5D!./node_modules/pug-plain-loader/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c\n return _c(\n \"div\",\n { staticClass: \"pricing-tab\" },\n [\n _c(\"p\", { staticClass: \"pricing-tab__title\" }, [\n _vm._v(\"Link Pricing Stream Batches to Marketplaces\"),\n ]),\n _c(\"c-data-table\", {\n staticClass: \"pricing-tab__table\",\n attrs: {\n value: _vm.marketplacesWithPriceLists,\n headers: _vm.headers,\n \"prepare-row\": _vm.prepareRow,\n updating: _vm.loading,\n \"hide-all-pagination-sections\": \"\",\n \"fix-layout\": \"\",\n },\n scopedSlots: _vm._u([\n {\n key: \"items\",\n fn: function ({ row, visibleHeaders }) {\n return [\n _c(\n \"tr\",\n { staticClass: \"table__row hoverable\" },\n _vm._l(visibleHeaders, function (header) {\n return _c(\n \"td\",\n { key: header.value },\n [\n header.value === \"marketplace\"\n ? [\n _c(\"detail-item\", {\n staticClass: \"pricing-tab__detail\",\n scopedSlots: _vm._u(\n [\n {\n key: \"image\",\n fn: function () {\n return [\n _c(\"pic\", {\n staticClass: \"object-image\",\n attrs: {\n src: row.icon,\n width: 32,\n height: 32,\n size: \"contain\",\n },\n }),\n ]\n },\n proxy: true,\n },\n {\n key: \"body-text\",\n fn: function () {\n return [\n _c(\n \"div\",\n { staticClass: \"truncate-text\" },\n [\n _c(\"span\", [\n _vm._v(_vm._s(row.name)),\n ]),\n ]\n ),\n ]\n },\n proxy: true,\n },\n {\n key: \"assistive-text\",\n fn: function () {\n return [\n _c(\"span\", [_vm._v(_vm._s(row.id))]),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n }),\n ]\n : header.value === \"pricing\"\n ? [\n row.batches.length > 0\n ? _c(\"c-menu\", {\n attrs: {\n locator: \"batches-list\",\n outline: \"\",\n small: \"\",\n \"min-width\": 266,\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"trigger\",\n fn: function () {\n return [\n _c(\n \"c-button\",\n {\n staticClass:\n \"c-menu-list__open\",\n attrs: {\n locator:\n \"c-menu-list_open-button\",\n small: \"\",\n upperCase: false,\n \"icon-right\":\n _vm.icons\n .googleArrowDropDownBaseline,\n mode: \"outlined\",\n },\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"pricing-tab__pricelist truncate-text\",\n },\n [\n _vm._v(\n _vm._s(\n _vm.selectedPricelist(\n row\n )\n )\n ),\n ]\n ),\n ]\n ),\n ]\n },\n proxy: true,\n },\n {\n key: \"default\",\n fn: function () {\n return [\n _c(\n \"c-button\",\n {\n attrs: {\n small: \"\",\n \"upper-case\": false,\n fluid: \"\",\n },\n on: {\n click: function ($event) {\n return _vm.resetBatch(row)\n },\n },\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"assistive-color\",\n },\n [_vm._v(\"—\")]\n ),\n ]\n ),\n _vm._l(\n row.batches,\n function (batch) {\n return _c(\n \"div\",\n { key: batch.id },\n [\n _c(\n \"c-button\",\n {\n attrs: {\n small: \"\",\n \"upper-case\": false,\n },\n on: {\n click: function (\n $event\n ) {\n return _vm.setBatch(\n batch,\n row\n )\n },\n },\n },\n [\n _c(\n \"div\",\n {\n staticClass:\n \"truncate-text\",\n },\n [\n _vm._v(\n _vm._s(\n batch.name\n )\n ),\n ]\n ),\n ]\n ),\n ],\n 1\n )\n }\n ),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n })\n : _c(\n \"div\",\n { staticClass: \"assistive-color\" },\n [_vm._v(\"—\")]\n ),\n ]\n : _vm._e(),\n ],\n 2\n )\n }),\n 0\n ),\n ]\n },\n },\n ]),\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://connect-extension-xvs/./ui/src/components/CreateDeploymentRequestDialog/PricingTab.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B1%5D!./node_modules/pug-plain-loader/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -3096,7 +3096,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /******/ // This function allow to reference async chunks /******/ __webpack_require__.u = (chunkId) => { /******/ // return url for filenames based on template -/******/ return "" + chunkId + "." + {"deployment-details":"b0d7de95e55401ae12ca","request-details":"4603b974f1f1b0a7f6bd"}[chunkId] + ".js"; +/******/ return "" + chunkId + "." + {"deployment-details":"b0d7de95e55401ae12ca","request-details":"2e8575914807cddd3bc9"}[chunkId] + ".js"; /******/ }; /******/ })(); /******/ diff --git a/connect_ext_ppr/static/index.html b/connect_ext_ppr/static/index.html index c4f35c2..0e6890b 100644 --- a/connect_ext_ppr/static/index.html +++ b/connect_ext_ppr/static/index.html @@ -12,7 +12,7 @@ Index - +
diff --git a/connect_ext_ppr/static/request-details.4603b974f1f1b0a7f6bd.js b/connect_ext_ppr/static/request-details.2e8575914807cddd3bc9.js similarity index 93% rename from connect_ext_ppr/static/request-details.4603b974f1f1b0a7f6bd.js rename to connect_ext_ppr/static/request-details.2e8575914807cddd3bc9.js index 70833d3..3d1d153 100644 --- a/connect_ext_ppr/static/request-details.4603b974f1f1b0a7f6bd.js +++ b/connect_ext_ppr/static/request-details.2e8575914807cddd3bc9.js @@ -135,7 +135,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac \******************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _components_cDataTable_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ~components/cDataTable.vue */ \"./ui/src/components/cDataTable.vue\");\n/* harmony import */ var _components_DetailItem_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~components/DetailItem.vue */ \"./ui/src/components/DetailItem.vue\");\n/* harmony import */ var _components_Pic_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ~components/Pic.vue */ \"./ui/src/components/Pic.vue\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils */ \"./ui/src/utils.js\");\n\n\n\n\n\n\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n cDataTable: _components_cDataTable_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n DetailItem: _components_DetailItem_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n Pic: _components_Pic_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n },\n\n props: {\n requestId: {\n type: String,\n required: true,\n },\n },\n\n data: () => ({\n loading: true,\n marketplaces: [],\n\n headers: [\n { text: 'Marketplace', value: 'marketplace' },\n { text: 'External ID', value: 'externalId' },\n ],\n }),\n\n methods: {\n prepareRow(item) {\n return {\n externalId: item.external_id,\n marketplace: {\n id: item.id,\n name: item.name,\n icon: item.icon,\n },\n };\n },\n },\n\n async created() {\n this.marketplaces = await (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getDeploymentRequestMarketplaces)(this.requestId);\n this.loading = false;\n },\n});\n\n\n\n//# sourceURL=webpack://connect-extension-xvs/./ui/src/components/RequestMarketplacesTab.vue?./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ramda */ \"./node_modules/ramda/es/index.js\");\n/* harmony import */ var _components_cDataTable_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ~components/cDataTable.vue */ \"./ui/src/components/cDataTable.vue\");\n/* harmony import */ var _components_DetailItem_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ~components/DetailItem.vue */ \"./ui/src/components/DetailItem.vue\");\n/* harmony import */ var _components_Pic_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ~components/Pic.vue */ \"./ui/src/components/Pic.vue\");\n/* harmony import */ var _tools_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/tools/utils */ \"./ui/src/tools/utils.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/utils */ \"./ui/src/utils.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst enrichByBatchInfo = (0,_tools_utils__WEBPACK_IMPORTED_MODULE_4__.enrich)('id', ['pricelist', 'id'], 'pricelist');\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n components: {\n cDataTable: _components_cDataTable_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n DetailItem: _components_DetailItem_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n Pic: _components_Pic_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n },\n\n props: {\n request: {\n type: Object,\n required: true,\n },\n },\n\n data: () => ({\n loading: true,\n marketplaces: [],\n marketplacesWithBatchesInfo: [],\n\n headers: [\n { text: 'Marketplace', value: 'marketplace' },\n { text: 'External ID', value: 'externalId' },\n { text: 'Pricing Batch', value: 'pricelist' },\n ],\n }),\n\n computed: {\n requestId: (0,ramda__WEBPACK_IMPORTED_MODULE_0__.path)(['request', 'id']),\n deploymentId: (0,ramda__WEBPACK_IMPORTED_MODULE_0__.path)(['request', 'deployment', 'id']),\n },\n\n methods: {\n prepareRow(item) {\n return {\n externalId: item.external_id,\n marketplace: {\n id: item.id,\n name: item.name,\n icon: item.icon,\n },\n\n pricelist: item.pricelist,\n };\n },\n },\n\n async created() {\n this.marketplaces = await (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getDeploymentRequestMarketplaces)(this.requestId);\n const batches = await (0,_utils__WEBPACK_IMPORTED_MODULE_5__.getDeploymentBatches)(this.deploymentId);\n\n this.marketplacesWithBatchesInfo = enrichByBatchInfo(batches, this.marketplaces);\n this.loading = false;\n },\n});\n\n\n\n//# sourceURL=webpack://connect-extension-xvs/./ui/src/components/RequestMarketplacesTab.vue?./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -425,7 +425,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac \*******************************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c\n return _c(\n \"div\",\n { staticClass: \"request-marketplaces-tab\" },\n [\n _c(\"c-data-table\", {\n attrs: {\n headers: _vm.headers,\n \"prepare-row\": _vm.prepareRow,\n \"show-loader\": _vm.loading,\n \"hide-all-pagination-sections\": \"\",\n },\n scopedSlots: _vm._u([\n {\n key: \"items\",\n fn: function ({ row, visibleHeaders }) {\n return [\n _c(\n \"tr\",\n {\n staticClass: \"table__row hoverable\",\n attrs: { id: row.id },\n },\n [\n _vm._l(visibleHeaders, function (header) {\n return [\n header.value === \"marketplace\"\n ? _c(\n \"td\",\n { key: header.value, staticClass: \"nowrap-cell\" },\n [\n _c(\"detail-item\", {\n attrs: {\n \"assistive-text\": row.marketplace.id,\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"body-text\",\n fn: function () {\n return [\n _c(\n \"div\",\n { staticClass: \"truncate-text\" },\n [\n _vm._v(\n _vm._s(row.marketplace.name)\n ),\n ]\n ),\n ]\n },\n proxy: true,\n },\n {\n key: \"image\",\n fn: function () {\n return [\n _c(\"pic\", {\n staticClass: \"object-image\",\n class: {\n \"picture-placeholder\":\n !row.marketplace.icon,\n },\n attrs: {\n src: row.marketplace.icon,\n width: 32,\n height: 32,\n size: \"contain\",\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n }),\n ],\n 1\n )\n : _vm._e(),\n header.value === \"externalId\"\n ? _c(\n \"td\",\n { key: header.value, staticClass: \"nowrap-cell\" },\n [\n row.externalId\n ? _c(\"span\", [_vm._v(_vm._s(row.externalId))])\n : _c(\n \"span\",\n { staticClass: \"assistive-text\" },\n [_vm._v(\"–\")]\n ),\n ]\n )\n : _vm._e(),\n ]\n }),\n ],\n 2\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.marketplaces,\n callback: function ($$v) {\n _vm.marketplaces = $$v\n },\n expression: \"marketplaces\",\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://connect-extension-xvs/./ui/src/components/RequestMarketplacesTab.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B1%5D!./node_modules/pug-plain-loader/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c\n return _c(\n \"div\",\n { staticClass: \"request-marketplaces-tab\" },\n [\n _c(\"c-data-table\", {\n attrs: {\n headers: _vm.headers,\n \"prepare-row\": _vm.prepareRow,\n \"show-loader\": _vm.loading,\n \"hide-all-pagination-sections\": \"\",\n },\n scopedSlots: _vm._u([\n {\n key: \"items\",\n fn: function ({ row, visibleHeaders }) {\n return [\n _c(\n \"tr\",\n {\n staticClass: \"table__row hoverable\",\n attrs: { id: row.id },\n },\n [\n _vm._l(visibleHeaders, function (header) {\n return [\n header.value === \"marketplace\"\n ? _c(\n \"td\",\n { key: header.value, staticClass: \"nowrap-cell\" },\n [\n _c(\"detail-item\", {\n attrs: {\n \"assistive-text\": row.marketplace.id,\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"body-text\",\n fn: function () {\n return [\n _c(\n \"div\",\n { staticClass: \"truncate-text\" },\n [\n _vm._v(\n _vm._s(row.marketplace.name)\n ),\n ]\n ),\n ]\n },\n proxy: true,\n },\n {\n key: \"image\",\n fn: function () {\n return [\n _c(\"pic\", {\n staticClass: \"object-image\",\n class: {\n \"picture-placeholder\":\n !row.marketplace.icon,\n },\n attrs: {\n src: row.marketplace.icon,\n width: 32,\n height: 32,\n size: \"contain\",\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n }),\n ],\n 1\n )\n : _vm._e(),\n header.value === \"externalId\"\n ? _c(\n \"td\",\n { key: header.value, staticClass: \"nowrap-cell\" },\n [\n row.externalId\n ? _c(\"span\", [_vm._v(_vm._s(row.externalId))])\n : _c(\n \"div\",\n { staticClass: \"assistive-color\" },\n [_vm._v(\"—\")]\n ),\n ]\n )\n : _vm._e(),\n header.value === \"pricelist\"\n ? _c(\n \"td\",\n { key: header.value, staticClass: \"nowrap-cell\" },\n [\n row.pricelist\n ? _c(\"detail-item\", {\n attrs: {\n \"assistive-text\": row.pricelist.id,\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"body-text\",\n fn: function () {\n return [\n _c(\n \"div\",\n {\n staticClass:\n \"truncate-text\",\n },\n [\n _vm._v(\n _vm._s(row.pricelist.name)\n ),\n ]\n ),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n })\n : _c(\n \"div\",\n { staticClass: \"assistive-color\" },\n [_vm._v(\"—\")]\n ),\n ],\n 1\n )\n : _vm._e(),\n ]\n }),\n ],\n 2\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.marketplacesWithBatchesInfo,\n callback: function ($$v) {\n _vm.marketplacesWithBatchesInfo = $$v\n },\n expression: \"marketplacesWithBatchesInfo\",\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://connect-extension-xvs/./ui/src/components/RequestMarketplacesTab.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B1%5D!./node_modules/pug-plain-loader/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }), @@ -455,7 +455,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac \******************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c\n return _c(\n \"c-view\",\n {\n staticClass: \"request-details\",\n attrs: {\n title: _vm.requestId,\n \"assistive-title\": \"Request Details\",\n \"back-route\": { name: \"Dashboard\", params: { tab: \"requests\" } },\n \"current-tab\": _vm.currentTab,\n loading: _vm.loading,\n \"show-alert\": _vm.isFailedRequest,\n },\n on: {\n \"update:currentTab\": function ($event) {\n _vm.currentTab = $event\n },\n \"update:current-tab\": function ($event) {\n _vm.currentTab = $event\n },\n },\n scopedSlots: _vm._u(\n [\n _vm.isAnyActionVisible\n ? {\n key: \"actions\",\n fn: function () {\n return [\n _c(\n \"actions-menu\",\n { attrs: { outline: \"\" } },\n [\n _vm.canAbort\n ? _c(\"c-button\", {\n staticClass: \"list-item\",\n attrs: {\n icon: _vm.icons.googleCancelBaseline,\n loading: _vm.isAbortingRequest,\n \"upper-case\": false,\n color: \"red\",\n label: \"Abort\",\n },\n on: { click: _vm.abortRequest },\n })\n : _vm._e(),\n _vm.canRetry\n ? _c(\"c-button\", {\n staticClass: \"list-item\",\n attrs: {\n icon: _vm.icons.googleRefreshBaseline,\n loading: _vm.isRetryingRequest,\n \"upper-case\": false,\n label: \"Retry\",\n },\n on: { click: _vm.retryRequest },\n })\n : _vm._e(),\n ],\n 1\n ),\n ]\n },\n proxy: true,\n }\n : null,\n {\n key: \"alert\",\n fn: function () {\n return [\n _c(\"p\", { staticClass: \"request-details__error\" }, [\n _vm._v(\n \"An error occurred while processing this deployment request. Try restarting the deployment\\nrequest. If the issue persists, contact your Support team.\"\n ),\n _vm.hasErrorDetails\n ? _c(\"a\", { on: { click: _vm.openErrorDetailsDialog } }, [\n _vm._v(\"Error details\"),\n ])\n : _vm._e(),\n ]),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n },\n [\n _c(\"div\", { staticClass: \"info-container\" }, [\n _c(\n \"div\",\n { staticClass: \"info-column\" },\n [\n _c(\"grid-item\", {\n attrs: { \"column-width\": 50, label: \"Status\" },\n scopedSlots: _vm._u([\n {\n key: \"value\",\n fn: function () {\n return [\n _c(\n \"div\",\n { staticClass: \"request-details__status\" },\n [\n _c(\"c-status\", {\n attrs: { status: _vm.request.status },\n }),\n _vm.hasErrorDetails\n ? [\n _c(\n \"span\",\n { staticClass: \"request-details__dot\" },\n [_vm._v(\"•\")]\n ),\n _c(\n \"a\",\n { on: { click: _vm.openErrorDetailsDialog } },\n [_vm._v(\"Details\")]\n ),\n ]\n : _vm._e(),\n ],\n 2\n ),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n _c(\"grid-item\", {\n attrs: { \"column-width\": 50, label: \"Product\" },\n scopedSlots: _vm._u([\n {\n key: \"value\",\n fn: function () {\n return [\n _c(\"detail-item\", {\n attrs: {\n \"body-text\": _vm.request.deployment?.product?.name,\n dense: \"\",\n },\n scopedSlots: _vm._u([\n {\n key: \"image\",\n fn: function () {\n return [\n _c(\"pic\", {\n attrs: {\n src: _vm.request.deployment?.product?.icon,\n width: 16,\n height: 16,\n },\n }),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"info-column\" },\n [\n _c(\"grid-item\", {\n attrs: { \"column-width\": 28, label: \"Hub\" },\n scopedSlots: _vm._u([\n {\n key: \"value\",\n fn: function () {\n return [\n _c(\"span\", [\n _vm._v(_vm._s(_vm.request.deployment?.hub?.name)),\n ]),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n _c(\"grid-item\", {\n attrs: { \"column-width\": 28, label: \"PPR\" },\n scopedSlots: _vm._u([\n {\n key: \"value\",\n fn: function () {\n return [\n _c(\n \"div\",\n { staticClass: \"request-details__ppr\" },\n [\n _c(\"c-icon\", {\n attrs: {\n icon: _vm.icons.googleDescriptionBaseline,\n size: \"16px\",\n },\n }),\n _c(\"span\", [\n _vm._v(\n \"Version \" + _vm._s(_vm.request.ppr?.version)\n ),\n ]),\n _c(\"span\", { staticClass: \"request-details__dot\" }, [\n _vm._v(\"•\"),\n ]),\n _c(\"a\", { on: { click: _vm.downloadPPR } }, [\n _vm._v(\"Download\"),\n ]),\n ],\n 1\n ),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"info-column\" },\n [\n _c(\"grid-item\", {\n attrs: { \"column-width\": 78, label: \"L2 Resellers\" },\n scopedSlots: _vm._u([\n {\n key: \"value\",\n fn: function () {\n return [\n _c(\n \"div\",\n { staticClass: \"request-details__delegate\" },\n [\n _c(\"c-icon\", {\n attrs: {\n icon: _vm.request.delegate_l2\n ? _vm.icons.googleCheckCircleBaseline\n : _vm.icons.googleRemoveCircleBaseline,\n size: \"16px\",\n },\n }),\n _c(\"span\", [\n _vm._v(\n _vm._s(\n _vm.request.delegate_l2\n ? \"Delegated\"\n : \"Not delegated\"\n )\n ),\n ]),\n ],\n 1\n ),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n ],\n 1\n ),\n ]),\n _c(\"c-tabs\", {\n attrs: { \"current-tab\": _vm.currentTab, tabs: _vm.tabs },\n on: {\n \"update:currentTab\": function ($event) {\n _vm.currentTab = $event\n },\n \"update:current-tab\": function ($event) {\n _vm.currentTab = $event\n },\n },\n scopedSlots: _vm._u([\n {\n key: \"marketplaces\",\n fn: function () {\n return [\n _c(\"request-marketplaces-tab\", {\n attrs: { \"request-id\": _vm.requestId },\n }),\n ]\n },\n proxy: true,\n },\n {\n key: \"tasks\",\n fn: function () {\n return [\n _c(\"request-tasks-tab\", {\n attrs: {\n \"request-id\": _vm.requestId,\n updating: _vm.areTasksUpdating,\n },\n on: {\n \"update:updating\": function ($event) {\n _vm.areTasksUpdating = $event\n },\n },\n }),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n _c(\"error-dialog\", {\n attrs: {\n \"error-message\": _vm.errorMessages,\n type: \"Deployment Request\",\n },\n model: {\n value: _vm.isErrorDialogOpen,\n callback: function ($$v) {\n _vm.isErrorDialogOpen = $$v\n },\n expression: \"isErrorDialogOpen\",\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://connect-extension-xvs/./ui/src/pages/RequestDetails.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B1%5D!./node_modules/pug-plain-loader/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render),\n/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns)\n/* harmony export */ });\nvar render = function render() {\n var _vm = this,\n _c = _vm._self._c\n return _c(\n \"c-view\",\n {\n staticClass: \"request-details\",\n attrs: {\n title: _vm.requestId,\n \"assistive-title\": \"Request Details\",\n \"back-route\": { name: \"Dashboard\", params: { tab: \"requests\" } },\n \"current-tab\": _vm.currentTab,\n loading: _vm.loading,\n \"show-alert\": _vm.isFailedRequest,\n },\n on: {\n \"update:currentTab\": function ($event) {\n _vm.currentTab = $event\n },\n \"update:current-tab\": function ($event) {\n _vm.currentTab = $event\n },\n },\n scopedSlots: _vm._u(\n [\n _vm.isAnyActionVisible\n ? {\n key: \"actions\",\n fn: function () {\n return [\n _c(\n \"actions-menu\",\n { attrs: { outline: \"\" } },\n [\n _vm.canAbort\n ? _c(\"c-button\", {\n staticClass: \"list-item\",\n attrs: {\n icon: _vm.icons.googleCancelBaseline,\n loading: _vm.isAbortingRequest,\n \"upper-case\": false,\n color: \"red\",\n label: \"Abort\",\n },\n on: { click: _vm.abortRequest },\n })\n : _vm._e(),\n _vm.canRetry\n ? _c(\"c-button\", {\n staticClass: \"list-item\",\n attrs: {\n icon: _vm.icons.googleRefreshBaseline,\n loading: _vm.isRetryingRequest,\n \"upper-case\": false,\n label: \"Retry\",\n },\n on: { click: _vm.retryRequest },\n })\n : _vm._e(),\n ],\n 1\n ),\n ]\n },\n proxy: true,\n }\n : null,\n {\n key: \"alert\",\n fn: function () {\n return [\n _c(\"p\", { staticClass: \"request-details__error\" }, [\n _vm._v(\n \"An error occurred while processing this deployment request. Try restarting the deployment\\nrequest. If the issue persists, contact your Support team.\"\n ),\n _vm.hasErrorDetails\n ? _c(\"a\", { on: { click: _vm.openErrorDetailsDialog } }, [\n _vm._v(\"Error details\"),\n ])\n : _vm._e(),\n ]),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n },\n [\n _c(\"div\", { staticClass: \"info-container\" }, [\n _c(\n \"div\",\n { staticClass: \"info-column\" },\n [\n _c(\"grid-item\", {\n attrs: { \"column-width\": 50, label: \"Status\" },\n scopedSlots: _vm._u([\n {\n key: \"value\",\n fn: function () {\n return [\n _c(\n \"div\",\n { staticClass: \"request-details__status\" },\n [\n _c(\"c-status\", {\n attrs: { status: _vm.request.status },\n }),\n _vm.hasErrorDetails\n ? [\n _c(\n \"span\",\n { staticClass: \"request-details__dot\" },\n [_vm._v(\"•\")]\n ),\n _c(\n \"a\",\n { on: { click: _vm.openErrorDetailsDialog } },\n [_vm._v(\"Details\")]\n ),\n ]\n : _vm._e(),\n ],\n 2\n ),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n _c(\"grid-item\", {\n attrs: { \"column-width\": 50, label: \"Product\" },\n scopedSlots: _vm._u([\n {\n key: \"value\",\n fn: function () {\n return [\n _c(\"detail-item\", {\n attrs: {\n \"body-text\": _vm.request.deployment?.product?.name,\n dense: \"\",\n },\n scopedSlots: _vm._u([\n {\n key: \"image\",\n fn: function () {\n return [\n _c(\"pic\", {\n attrs: {\n src: _vm.request.deployment?.product?.icon,\n width: 16,\n height: 16,\n },\n }),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"info-column\" },\n [\n _c(\"grid-item\", {\n attrs: { \"column-width\": 28, label: \"Hub\" },\n scopedSlots: _vm._u([\n {\n key: \"value\",\n fn: function () {\n return [\n _c(\"span\", [\n _vm._v(_vm._s(_vm.request.deployment?.hub?.name)),\n ]),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n _c(\"grid-item\", {\n attrs: { \"column-width\": 28, label: \"PPR\" },\n scopedSlots: _vm._u([\n {\n key: \"value\",\n fn: function () {\n return [\n _c(\n \"div\",\n { staticClass: \"request-details__ppr\" },\n [\n _c(\"c-icon\", {\n attrs: {\n icon: _vm.icons.googleDescriptionBaseline,\n size: \"16px\",\n },\n }),\n _c(\"span\", [\n _vm._v(\n \"Version \" + _vm._s(_vm.request.ppr?.version)\n ),\n ]),\n _c(\"span\", { staticClass: \"request-details__dot\" }, [\n _vm._v(\"•\"),\n ]),\n _c(\"a\", { on: { click: _vm.downloadPPR } }, [\n _vm._v(\"Download\"),\n ]),\n ],\n 1\n ),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n ],\n 1\n ),\n _c(\n \"div\",\n { staticClass: \"info-column\" },\n [\n _c(\"grid-item\", {\n attrs: { \"column-width\": 78, label: \"L2 Resellers\" },\n scopedSlots: _vm._u([\n {\n key: \"value\",\n fn: function () {\n return [\n _c(\n \"div\",\n { staticClass: \"request-details__delegate\" },\n [\n _c(\"c-icon\", {\n attrs: {\n icon: _vm.request.delegate_l2\n ? _vm.icons.googleCheckCircleBaseline\n : _vm.icons.googleRemoveCircleBaseline,\n size: \"16px\",\n },\n }),\n _c(\"span\", [\n _vm._v(\n _vm._s(\n _vm.request.delegate_l2\n ? \"Delegated\"\n : \"Not delegated\"\n )\n ),\n ]),\n ],\n 1\n ),\n ]\n },\n proxy: true,\n },\n ]),\n }),\n ],\n 1\n ),\n ]),\n _vm.request\n ? _c(\"c-tabs\", {\n attrs: { \"current-tab\": _vm.currentTab, tabs: _vm.tabs },\n on: {\n \"update:currentTab\": function ($event) {\n _vm.currentTab = $event\n },\n \"update:current-tab\": function ($event) {\n _vm.currentTab = $event\n },\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"marketplaces\",\n fn: function () {\n return [\n _c(\"request-marketplaces-tab\", {\n attrs: { request: _vm.request },\n }),\n ]\n },\n proxy: true,\n },\n {\n key: \"tasks\",\n fn: function () {\n return [\n _c(\"request-tasks-tab\", {\n attrs: {\n \"request-id\": _vm.requestId,\n updating: _vm.areTasksUpdating,\n },\n on: {\n \"update:updating\": function ($event) {\n _vm.areTasksUpdating = $event\n },\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n false,\n 344068362\n ),\n })\n : _vm._e(),\n _c(\"error-dialog\", {\n attrs: {\n \"error-message\": _vm.errorMessages,\n type: \"Deployment Request\",\n },\n model: {\n value: _vm.isErrorDialogOpen,\n callback: function ($$v) {\n _vm.isErrorDialogOpen = $$v\n },\n expression: \"isErrorDialogOpen\",\n },\n }),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n\n\n//# sourceURL=webpack://connect-extension-xvs/./ui/src/pages/RequestDetails.vue?./node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet%5B1%5D.rules%5B1%5D!./node_modules/pug-plain-loader/index.js!./node_modules/vue-loader/lib/index.js??vue-loader-options"); /***/ }) diff --git a/ui/src/components/CreateDeploymentRequestDialog/PricingTab.vue b/ui/src/components/CreateDeploymentRequestDialog/PricingTab.vue index e80ffe6..db5eae8 100644 --- a/ui/src/components/CreateDeploymentRequestDialog/PricingTab.vue +++ b/ui/src/components/CreateDeploymentRequestDialog/PricingTab.vue @@ -34,7 +34,7 @@ template(v-else-if="header.value === 'pricing'") c-menu( - v-if="row.pricelist", + v-if="row.batches.length > 0", locator="batches-list", outline, small, @@ -48,11 +48,17 @@ :icon-right="icons.googleArrowDropDownBaseline" mode="outlined", ) - .truncate-text.pricing-tab__pricelist( - :title="row.pricelist.name", - ) {{ row.pricelist.name }} + .pricing-tab__pricelist.truncate-text {{ selectedPricelist(row) }} template(#default="") + c-button( + small, + :upper-case="false", + fluid, + @click="resetBatch(row)", + ) + .assistive-color — + div( v-for="batch in row.batches", :key="batch.id", @@ -150,14 +156,30 @@ export default { name: item.name, icon: item.icon, batches: item.batches, - pricelist: item.batches[0], + pricelist: item.pricelist, }; }, + findMarketplaceInList(id) { + return findIndex(propEq(id, 'id'), this.localValue); + }, + setBatch(batch, marketplace) { - const index = findIndex(propEq(marketplace.id, 'id'), this.localValue); + const index = this.findMarketplaceInList(marketplace.id); this.localValue[index].pricelist = pick(['id', 'name'], batch); }, + + resetBatch(marketplace) { + const index = this.findMarketplaceInList(marketplace.id); + this.localValue[index].pricelist = undefined; + }, + + selectedPricelist(marketplace) { + const index = this.findMarketplaceInList(marketplace.id); + + return this.localValue[index].pricelist + ? this.localValue[index].pricelist.name : '—'; + }, }, async created() { @@ -194,6 +216,7 @@ export default { } &__pricelist { + min-width: 226px; max-width: 226px; } } diff --git a/ui/src/components/RequestMarketplacesTab.vue b/ui/src/components/RequestMarketplacesTab.vue index e13da87..6c96d92 100644 --- a/ui/src/components/RequestMarketplacesTab.vue +++ b/ui/src/components/RequestMarketplacesTab.vue @@ -1,7 +1,7 @@