dashboard-shell-shell 1.0.1000000098 → 1.0.1000000112
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.
- package/components/ResourceDetail/Masthead.vue +2 -2
- package/components/ResourceDetail/index.vue +2 -2
- package/components/ResourceList/Masthead.vue +6 -4
- package/components/ResourceList/index.vue +3 -3
- package/components/SideNav.vue +2 -2
- package/components/SortableTable/index.vue +2 -2
- package/components/nav/NamespaceFilter.vue +1 -1
- package/components/rancherResourceDetail/Masthead.vue +2 -2
- package/components/rancherResourceDetail/index.vue +2 -2
- package/components/rancherResourceList/Masthead-btn.vue +3 -3
- package/components/rancherResourceList/Masthead.vue +4 -4
- package/components/rancherResourceList/index.vue +3 -3
- package/components/rancherSortableTable/index.vue +1 -1
- package/config/product/auth.js +1 -1
- package/config/router/navigation-guards/index.js +20 -9
- package/edit/workload/mixins/workload.js +1 -1
- package/list/workload.vue +6 -6
- package/mixins/resource-fetch.js +1 -1
- package/models/management.cattle.io.setting.js +1 -1
- package/package.json +1 -1
- package/pages/auth/login.vue +1 -1
- package/pages/auth copy/login.vue +1 -1
- package/pages/prefs.vue +1 -1
- package/plugins/dashboard-store/normalize.js +1 -1
- package/plugins/dashboard-store/resource-class.js +2 -2
- package/store/type-map.js +1 -1
- package/types/shell/index.d.ts +1 -1
- package/utils/router.js +1 -1
|
@@ -256,7 +256,7 @@ export default {
|
|
|
256
256
|
const defaultLocation = {
|
|
257
257
|
name: 'c-cluster-product-resource',
|
|
258
258
|
params: {
|
|
259
|
-
resource:
|
|
259
|
+
resource: this.resource,
|
|
260
260
|
product,
|
|
261
261
|
}
|
|
262
262
|
};
|
|
@@ -425,7 +425,7 @@ export default {
|
|
|
425
425
|
|
|
426
426
|
const resources = this.location?.params?.resource || ''
|
|
427
427
|
|
|
428
|
-
return this.$store.getters['type-map/groupsForVirTypes'](product,
|
|
428
|
+
return this.$store.getters['type-map/groupsForVirTypes'](product, resources);
|
|
429
429
|
},
|
|
430
430
|
|
|
431
431
|
location() {
|
|
@@ -96,7 +96,7 @@ export default {
|
|
|
96
96
|
const route = this.$route;
|
|
97
97
|
const params = route.params;
|
|
98
98
|
const cloneParams = clone(params)
|
|
99
|
-
let resourceType = this.resourceOverride ||
|
|
99
|
+
let resourceType = this.resourceOverride || cloneParams.resource;
|
|
100
100
|
|
|
101
101
|
const inStore = this.storeOverride || store.getters['currentStore'](resourceType);
|
|
102
102
|
const realMode = this.realMode;
|
|
@@ -422,7 +422,7 @@ export default {
|
|
|
422
422
|
const id = userId || this.$route.params.id;
|
|
423
423
|
// const paramsResource = this.$route.params.resource
|
|
424
424
|
const routerResource = clone(this.$route.params.resource)
|
|
425
|
-
const resource = resourceOverride || this.resourceOverride ||
|
|
425
|
+
const resource = resourceOverride || this.resourceOverride || routerResource;
|
|
426
426
|
const options = this.$store.getters[`type-map/optionsFor`](resource);
|
|
427
427
|
|
|
428
428
|
const detailResource = options.resourceDetail || options.resource || resource;
|
|
@@ -86,14 +86,14 @@ export default {
|
|
|
86
86
|
data() {
|
|
87
87
|
const params = { ...this.$route.params };
|
|
88
88
|
|
|
89
|
-
params.resource =
|
|
89
|
+
params.resource = params.resource
|
|
90
90
|
|
|
91
|
-
const formRoute = { name: `${
|
|
91
|
+
const formRoute = { name: `${ this.$route.name }-create`, params };
|
|
92
92
|
|
|
93
93
|
const hasEditComponent = this.$store.getters['type-map/hasCustomEdit'](this.resource);
|
|
94
94
|
|
|
95
95
|
const yamlRoute = {
|
|
96
|
-
name: `${
|
|
96
|
+
name: `${ this.$route.name }-create`,
|
|
97
97
|
params,
|
|
98
98
|
query: { [AS]: _YAML },
|
|
99
99
|
};
|
|
@@ -128,10 +128,12 @@ export default {
|
|
|
128
128
|
return '?';
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
+
// console.log(this.$store.getters['type-map/labelFor'](this.schema, 99), ' type-map/labelFor---------------')
|
|
132
|
+
|
|
131
133
|
return this.$store.getters['type-map/labelFor'](this.schema, 99);
|
|
132
134
|
},
|
|
133
135
|
_descriptionDisplay() {
|
|
134
|
-
const key =
|
|
136
|
+
const key = this.$route.path.split('/'.pop());
|
|
135
137
|
|
|
136
138
|
return this.$store.getters['i18n/t'](`typeDescription."${ key.toLowerCase() }"`);
|
|
137
139
|
},
|
|
@@ -41,7 +41,7 @@ export default {
|
|
|
41
41
|
|
|
42
42
|
async fetch() {
|
|
43
43
|
const store = this.$store;
|
|
44
|
-
const resource =
|
|
44
|
+
const resource = this.resource;
|
|
45
45
|
|
|
46
46
|
const schema = this.schema;
|
|
47
47
|
|
|
@@ -89,7 +89,7 @@ export default {
|
|
|
89
89
|
data() {
|
|
90
90
|
const getters = this.$store.getters;
|
|
91
91
|
const params = { ...this.$route.params };
|
|
92
|
-
const resource =
|
|
92
|
+
const resource = params.resource;
|
|
93
93
|
|
|
94
94
|
const hasListComponent = getters['type-map/hasCustomList'](resource);
|
|
95
95
|
|
|
@@ -201,7 +201,7 @@ export default {
|
|
|
201
201
|
created() {
|
|
202
202
|
let listComponent = false;
|
|
203
203
|
|
|
204
|
-
const resource =
|
|
204
|
+
const resource = this.$route.params.resource;
|
|
205
205
|
const hasListComponent = this.$store.getters['type-map/hasCustomList'](resource);
|
|
206
206
|
|
|
207
207
|
if ( hasListComponent ) {
|
package/components/SideNav.vue
CHANGED
|
@@ -155,7 +155,7 @@ export default {
|
|
|
155
155
|
},
|
|
156
156
|
|
|
157
157
|
isVirtualProduct() {
|
|
158
|
-
return this.rootProduct.name ===
|
|
158
|
+
return this.rootProduct.name === HARVESTER;
|
|
159
159
|
},
|
|
160
160
|
|
|
161
161
|
allNavLinks() {
|
|
@@ -237,7 +237,7 @@ export default {
|
|
|
237
237
|
|
|
238
238
|
getProductsGroups(out, loadProducts, namespaceMode, productMap) {
|
|
239
239
|
const clusterId = this.$store.getters['clusterId'];
|
|
240
|
-
const currentType =
|
|
240
|
+
const currentType = this.$route.params.resource || '';
|
|
241
241
|
|
|
242
242
|
for ( const productId of loadProducts ) {
|
|
243
243
|
const modes = [TYPE_MODES.BASIC];
|
|
@@ -416,7 +416,7 @@ export default {
|
|
|
416
416
|
const isLoading = this.loading || false;
|
|
417
417
|
|
|
418
418
|
let isCreatable = false;
|
|
419
|
-
const lastPath =
|
|
419
|
+
const lastPath = this.$route.path.split('/'.pop());
|
|
420
420
|
|
|
421
421
|
if (lastPath?.includes('.')) {
|
|
422
422
|
isCreatable = this.$store.getters['type-map/optionsFor'](lastPath).isCreatable;
|
|
@@ -424,7 +424,7 @@ export default {
|
|
|
424
424
|
isCreatable = this.$store.getters['type-map/optionsFor'](this.$route.name).isCreatable;
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
-
const resource =
|
|
427
|
+
const resource = this.$route.params.resource;
|
|
428
428
|
|
|
429
429
|
let hasEditComponent = false
|
|
430
430
|
|
|
@@ -146,7 +146,7 @@ export default {
|
|
|
146
146
|
const params = { ...this.$route.params };
|
|
147
147
|
let resource = params.resource;
|
|
148
148
|
if (params.resource) {
|
|
149
|
-
resource =
|
|
149
|
+
resource = resource
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
// Sometimes, different pages may have different namespaces to filter
|
|
@@ -256,7 +256,7 @@ export default {
|
|
|
256
256
|
const defaultLocation = {
|
|
257
257
|
name: 'c-cluster-product-resource',
|
|
258
258
|
params: {
|
|
259
|
-
resource:
|
|
259
|
+
resource: this.resource,
|
|
260
260
|
product,
|
|
261
261
|
}
|
|
262
262
|
};
|
|
@@ -423,7 +423,7 @@ export default {
|
|
|
423
423
|
|
|
424
424
|
const resources = this.location?.params?.resource || ''
|
|
425
425
|
|
|
426
|
-
return this.$store.getters['type-map/groupsForVirTypes'](product,
|
|
426
|
+
return this.$store.getters['type-map/groupsForVirTypes'](product, resources);
|
|
427
427
|
},
|
|
428
428
|
|
|
429
429
|
location() {
|
|
@@ -96,7 +96,7 @@ export default {
|
|
|
96
96
|
const route = this.$route;
|
|
97
97
|
const params = route.params;
|
|
98
98
|
const cloneParams = clone(params)
|
|
99
|
-
let resourceType = this.resourceOverride ||
|
|
99
|
+
let resourceType = this.resourceOverride || cloneParams.resource;
|
|
100
100
|
|
|
101
101
|
const inStore = this.storeOverride || store.getters['currentStore'](resourceType);
|
|
102
102
|
const realMode = this.realMode;
|
|
@@ -422,7 +422,7 @@ export default {
|
|
|
422
422
|
const id = userId || this.$route.params.id;
|
|
423
423
|
// const paramsResource = this.$route.params.resource
|
|
424
424
|
const routerResource = clone(this.$route.params.resource)
|
|
425
|
-
const resource = resourceOverride || this.resourceOverride ||
|
|
425
|
+
const resource = resourceOverride || this.resourceOverride || routerResource;
|
|
426
426
|
const options = this.$store.getters[`type-map/optionsFor`](resource);
|
|
427
427
|
|
|
428
428
|
const detailResource = options.resourceDetail || options.resource || resource;
|
|
@@ -70,14 +70,14 @@ export default {
|
|
|
70
70
|
data() {
|
|
71
71
|
const params = { ...this.$route.params };
|
|
72
72
|
|
|
73
|
-
params.resource =
|
|
73
|
+
params.resource = params.resource
|
|
74
74
|
|
|
75
|
-
const formRoute = { name: `${
|
|
75
|
+
const formRoute = { name: `${ this.$route.name }-create`, params };
|
|
76
76
|
|
|
77
77
|
const hasEditComponent = this.$store.getters['type-map/hasCustomEdit'](this.resource);
|
|
78
78
|
|
|
79
79
|
const yamlRoute = {
|
|
80
|
-
name: `${
|
|
80
|
+
name: `${ this.$route.name }-create`,
|
|
81
81
|
params,
|
|
82
82
|
query: { [AS]: _YAML },
|
|
83
83
|
};
|
|
@@ -91,14 +91,14 @@ export default {
|
|
|
91
91
|
data() {
|
|
92
92
|
const params = { ...this.$route.params };
|
|
93
93
|
|
|
94
|
-
params.resource =
|
|
94
|
+
params.resource = params.resource
|
|
95
95
|
|
|
96
|
-
const formRoute = { name: `${
|
|
96
|
+
const formRoute = { name: `${ this.$route.name }-create`, params };
|
|
97
97
|
|
|
98
98
|
const hasEditComponent = this.$store.getters['type-map/hasCustomEdit'](this.resource);
|
|
99
99
|
|
|
100
100
|
const yamlRoute = {
|
|
101
|
-
name: `${
|
|
101
|
+
name: `${ this.$route.name }-create`,
|
|
102
102
|
params,
|
|
103
103
|
query: { [AS]: _YAML },
|
|
104
104
|
};
|
|
@@ -139,7 +139,7 @@ export default {
|
|
|
139
139
|
return this.$store.getters['type-map/labelFor'](this.schema, 99);
|
|
140
140
|
},
|
|
141
141
|
_descriptionDisplay() {
|
|
142
|
-
const key =
|
|
142
|
+
const key = this.$route.path.split('/'.pop());
|
|
143
143
|
|
|
144
144
|
return this.$store.getters['i18n/t'](`typeDescription."${ key.toLowerCase() }"`);
|
|
145
145
|
},
|
|
@@ -41,7 +41,7 @@ export default {
|
|
|
41
41
|
|
|
42
42
|
async fetch() {
|
|
43
43
|
const store = this.$store;
|
|
44
|
-
const resource =
|
|
44
|
+
const resource = this.resource;
|
|
45
45
|
|
|
46
46
|
const schema = this.schema;
|
|
47
47
|
|
|
@@ -89,7 +89,7 @@ export default {
|
|
|
89
89
|
data() {
|
|
90
90
|
const getters = this.$store.getters;
|
|
91
91
|
const params = { ...this.$route.params };
|
|
92
|
-
const resource =
|
|
92
|
+
const resource = params.resource;
|
|
93
93
|
|
|
94
94
|
const hasListComponent = getters['type-map/hasCustomList'](resource);
|
|
95
95
|
|
|
@@ -201,7 +201,7 @@ export default {
|
|
|
201
201
|
created() {
|
|
202
202
|
let listComponent = false;
|
|
203
203
|
|
|
204
|
-
const resource =
|
|
204
|
+
const resource = this.$route.params.resource;
|
|
205
205
|
const hasListComponent = this.$store.getters['type-map/hasCustomList'](resource);
|
|
206
206
|
|
|
207
207
|
if ( hasListComponent ) {
|
|
@@ -416,7 +416,7 @@ export default {
|
|
|
416
416
|
const isLoading = this.loading || false;
|
|
417
417
|
|
|
418
418
|
let isCreatable = false;
|
|
419
|
-
const lastPath =
|
|
419
|
+
const lastPath = this.$route.path.split('/'.pop());
|
|
420
420
|
|
|
421
421
|
if (lastPath.includes('.')) {
|
|
422
422
|
isCreatable = this.$store.getters['type-map/optionsFor'](lastPath).isCreatable;
|
package/config/product/auth.js
CHANGED
|
@@ -24,7 +24,7 @@ export function init(store) {
|
|
|
24
24
|
spoofedType,
|
|
25
25
|
virtualType,
|
|
26
26
|
} = DSL(store, NAME);
|
|
27
|
-
|
|
27
|
+
console.log('------------------------------------------------2')
|
|
28
28
|
product({
|
|
29
29
|
ifHaveType: new RegExp(`${ MANAGEMENT.USER }|${ MANAGEMENT.AUTH_CONFIG }`, 'i'),
|
|
30
30
|
ifHaveVerb: 'GET',
|
|
@@ -19,21 +19,33 @@ import { harvester2cloud } from '@shell/utils/router';
|
|
|
19
19
|
export function installNavigationGuards(router, context) {
|
|
20
20
|
// 最早执行:保证进入逻辑时 params 始终是 harvester
|
|
21
21
|
router.beforeEach((to, from, next) => {
|
|
22
|
+
let changed = false;
|
|
23
|
+
const params = { ...to.params };
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
if (params?.product?.includes('cloud')) {
|
|
26
|
+
params.product = params.product.replace(/cloud/g, 'harvester');
|
|
27
|
+
changed = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (params?.cluster?.includes('cloud')) {
|
|
31
|
+
params.cluster = params.cluster.replace(/cloud/g, 'harvester');
|
|
32
|
+
changed = true;
|
|
33
|
+
}
|
|
24
34
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
if (params?.resource?.includes('cloud')) {
|
|
36
|
+
params.resource = params.resource.replace(/cloud/g, 'harvester');
|
|
37
|
+
changed = true;
|
|
28
38
|
}
|
|
29
39
|
|
|
30
|
-
if (
|
|
31
|
-
|
|
40
|
+
if (changed) {
|
|
41
|
+
// 触发路由重定向
|
|
42
|
+
return next({ ...to, params });
|
|
32
43
|
}
|
|
33
44
|
|
|
34
45
|
next();
|
|
35
46
|
});
|
|
36
47
|
|
|
48
|
+
|
|
37
49
|
const navigationGuardInstallers = [
|
|
38
50
|
installLoadInitialSettings,
|
|
39
51
|
installAttemptFirstLogin,
|
|
@@ -50,17 +62,16 @@ export function installNavigationGuards(router, context) {
|
|
|
50
62
|
|
|
51
63
|
navigationGuardInstallers.forEach(installer => installer(router, context));
|
|
52
64
|
|
|
53
|
-
// 最后执行:只改地址栏,不改内部
|
|
65
|
+
// 🔹 最后执行:只改地址栏,不改内部
|
|
54
66
|
router.afterEach((to) => {
|
|
55
67
|
|
|
56
|
-
console.log('-----------------------------------------------------3');
|
|
57
|
-
|
|
58
68
|
const cloudPath = to.fullPath
|
|
59
69
|
.replace(/harvester/g, 'cloud')
|
|
60
70
|
|
|
61
71
|
if (cloudPath !== to.fullPath) {
|
|
62
72
|
window.history.replaceState({}, '', cloudPath);
|
|
63
73
|
}
|
|
74
|
+
|
|
64
75
|
});
|
|
65
76
|
}
|
|
66
77
|
|
|
@@ -171,7 +171,7 @@ export default {
|
|
|
171
171
|
data() {
|
|
172
172
|
serialMaker.setPrefix('container-');
|
|
173
173
|
serialMaker.setSeq(0);
|
|
174
|
-
let type =
|
|
174
|
+
let type = this.$route.params.resource;
|
|
175
175
|
const createSidecar = !!this.$route.query.sidecar;
|
|
176
176
|
|
|
177
177
|
if (type === 'workload') {
|
package/list/workload.vue
CHANGED
|
@@ -27,10 +27,10 @@ const $loadingResources = ($route, $store) => {
|
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
const allTypes =
|
|
30
|
+
const allTypes = $route.params.resource === workloadSchema.id;
|
|
31
31
|
|
|
32
32
|
return {
|
|
33
|
-
loadResources: allTypes ? allowedResources : [
|
|
33
|
+
loadResources: allTypes ? allowedResources : [$route.params.resource],
|
|
34
34
|
loadIndeterminate: allTypes,
|
|
35
35
|
};
|
|
36
36
|
};
|
|
@@ -55,7 +55,7 @@ export default {
|
|
|
55
55
|
if (this.allTypes && this.loadResources.length) {
|
|
56
56
|
this.$initializeFetchData(this.loadResources[0], this.loadResources);
|
|
57
57
|
} else {
|
|
58
|
-
this.$initializeFetchData(
|
|
58
|
+
this.$initializeFetchData(this.$route.params.resource);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
try {
|
|
@@ -74,7 +74,7 @@ export default {
|
|
|
74
74
|
return this.$fetchType(allowed, this.loadResources);
|
|
75
75
|
}));
|
|
76
76
|
} else {
|
|
77
|
-
const type =
|
|
77
|
+
const type = this.$route.params.resource;
|
|
78
78
|
|
|
79
79
|
if ( this.$store.getters['cluster/schemaFor'](type) ) {
|
|
80
80
|
const resource = await this.$fetchType(type);
|
|
@@ -89,7 +89,7 @@ export default {
|
|
|
89
89
|
const { loadResources, loadIndeterminate } = $loadingResources(this.$route, this.$store);
|
|
90
90
|
|
|
91
91
|
const { params:{ resource: type } } = this.$route;
|
|
92
|
-
const allTypes =
|
|
92
|
+
const allTypes = this.$route.params.resource === workloadSchema.id;
|
|
93
93
|
const schema = type !== workloadSchema.id ? this.$store.getters['cluster/schemaFor'](type) : workloadSchema;
|
|
94
94
|
const paginationEnabled = !allTypes && this.$store.getters[`cluster/paginationEnabled`]?.({ id: type });
|
|
95
95
|
|
|
@@ -144,7 +144,7 @@ export default {
|
|
|
144
144
|
this.$fetchType(POD);
|
|
145
145
|
this.$fetchType(WORKLOAD_TYPES.JOB);
|
|
146
146
|
} else {
|
|
147
|
-
const type =
|
|
147
|
+
const type = this.$route.params.resource;
|
|
148
148
|
|
|
149
149
|
if (type === WORKLOAD_TYPES.JOB || type === POD) {
|
|
150
150
|
// Ignore job and pods (we're fetching this anyway, plus they contain their own state)
|
package/mixins/resource-fetch.js
CHANGED
|
@@ -35,7 +35,7 @@ export default {
|
|
|
35
35
|
// Normally owner components supply `resource` and `inStore` as part of their data, however these are needed here before parent data runs
|
|
36
36
|
// So set up both here
|
|
37
37
|
const params = { ...this.$route.params };
|
|
38
|
-
const resource =
|
|
38
|
+
const resource = params.resource || this.schema?.id; // Resource can either be on a page showing single list, or a page of a resource showing a list of another resource
|
|
39
39
|
const inStore = this.$store.getters['currentStore'](resource);
|
|
40
40
|
|
|
41
41
|
return {
|
|
@@ -55,7 +55,7 @@ export default class Setting extends HybridModel {
|
|
|
55
55
|
goToEdit(moreQuery = {}) {
|
|
56
56
|
if (this.$rootGetters['currentProduct'].inStore === HARVESTER) {
|
|
57
57
|
location.name = `${ HARVESTER }-c-cluster-brand`;
|
|
58
|
-
location.params = { cluster: this.$rootGetters['currentCluster'].id, product:
|
|
58
|
+
location.params = { cluster: this.$rootGetters['currentCluster'].id, product: HARVESTER };
|
|
59
59
|
|
|
60
60
|
location.query = {
|
|
61
61
|
...location.query,
|
package/package.json
CHANGED
package/pages/auth/login.vue
CHANGED
package/pages/prefs.vue
CHANGED
|
@@ -45,7 +45,7 @@ export default {
|
|
|
45
45
|
...mapGetters({ hasMultipleLocales: 'i18n/hasMultipleLocales' }),
|
|
46
46
|
|
|
47
47
|
isHarvester() {
|
|
48
|
-
return this.isSingleProduct?.productName ===
|
|
48
|
+
return this.isSingleProduct?.productName === HARVESTER;
|
|
49
49
|
},
|
|
50
50
|
|
|
51
51
|
theme: {
|
|
@@ -1270,7 +1270,7 @@ export default class Resource {
|
|
|
1270
1270
|
params: {
|
|
1271
1271
|
product: this.$rootGetters['productId'],
|
|
1272
1272
|
cluster: this.$rootGetters['clusterId'],
|
|
1273
|
-
resource:
|
|
1273
|
+
resource: this.type,
|
|
1274
1274
|
}
|
|
1275
1275
|
};
|
|
1276
1276
|
}
|
|
@@ -1285,7 +1285,7 @@ export default class Resource {
|
|
|
1285
1285
|
params: {
|
|
1286
1286
|
product: this.$rootGetters['productId'],
|
|
1287
1287
|
cluster: this.$rootGetters['clusterId'],
|
|
1288
|
-
resource:
|
|
1288
|
+
resource: this.type,
|
|
1289
1289
|
namespace: this.metadata?.namespace,
|
|
1290
1290
|
id,
|
|
1291
1291
|
}
|
package/store/type-map.js
CHANGED
package/types/shell/index.d.ts
CHANGED
|
@@ -4162,7 +4162,7 @@ export function setPromiseResult(promise: any, obj: any, key: any, label: any):
|
|
|
4162
4162
|
|
|
4163
4163
|
declare module '@shell/utils/router' {
|
|
4164
4164
|
export function harvesterhci2cloud(str: any): any;
|
|
4165
|
-
export function
|
|
4165
|
+
export function str: any: any;
|
|
4166
4166
|
export function harvester2cloud(str: any): any;
|
|
4167
4167
|
export function cloud2harvester(str: any): any;
|
|
4168
4168
|
export function queryParamsFor(current: any, qp: any, defaults?: {}): any;
|
package/utils/router.js
CHANGED
|
@@ -89,7 +89,7 @@ export const getPackageFromRoute = (route) => {
|
|
|
89
89
|
};
|
|
90
90
|
|
|
91
91
|
export const getResourceFromRoute = (to) => {
|
|
92
|
-
let resource =
|
|
92
|
+
let resource = to.params?.resource;
|
|
93
93
|
|
|
94
94
|
if (!resource) {
|
|
95
95
|
resource = findMeta(to, 'resource');
|