mirror of https://github.com/rancher/dashboard.git
Merge pull request #3204 from nwmac/group-default-type
Navigation: Allow default child for a group to be configured
This commit is contained in:
commit
a9831a872e
|
|
@ -141,9 +141,18 @@ export default {
|
||||||
if (this.isExpanded && !skipAutoClose) {
|
if (this.isExpanded && !skipAutoClose) {
|
||||||
const items = this.group[this.childrenKey];
|
const items = this.group[this.childrenKey];
|
||||||
|
|
||||||
// Navigate to the first item in the group
|
// Navigate to one of the child items (by default the first child)
|
||||||
if (items && items.length > 0) {
|
if (items && items.length > 0) {
|
||||||
const route = items[0].route;
|
let index = 0;
|
||||||
|
|
||||||
|
// If there is a default type, use it
|
||||||
|
if (this.group.defaultType) {
|
||||||
|
const found = items.findIndex(i => i.name === this.group.defaultType);
|
||||||
|
|
||||||
|
index = (found === -1) ? 0 : found;
|
||||||
|
}
|
||||||
|
|
||||||
|
const route = items[index].route;
|
||||||
|
|
||||||
this.$router.replace(route);
|
this.$router.replace(route);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ export function init(store) {
|
||||||
virtualType,
|
virtualType,
|
||||||
componentForType,
|
componentForType,
|
||||||
configureType,
|
configureType,
|
||||||
|
setGroupDefaultType,
|
||||||
} = DSL(store, NAME);
|
} = DSL(store, NAME);
|
||||||
|
|
||||||
product({
|
product({
|
||||||
|
|
@ -134,6 +135,8 @@ export function init(store) {
|
||||||
configureType(PVC, { isEditable: false });
|
configureType(PVC, { isEditable: false });
|
||||||
configureType(MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING, { isEditable: false });
|
configureType(MANAGEMENT.CLUSTER_ROLE_TEMPLATE_BINDING, { isEditable: false });
|
||||||
|
|
||||||
|
setGroupDefaultType('serviceDiscovery', SERVICE);
|
||||||
|
|
||||||
configureType('workload', {
|
configureType('workload', {
|
||||||
displayName: 'Workload',
|
displayName: 'Workload',
|
||||||
location: {
|
location: {
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,10 @@
|
||||||
// groupOrArrayOfGroups, -- see weightType...
|
// groupOrArrayOfGroups, -- see weightType...
|
||||||
// weight
|
// weight
|
||||||
// )
|
// )
|
||||||
|
// setGroupDefaultType( Set the default child type to show when the group is expanded
|
||||||
|
// groupOrArrayOfGroups, -- see setGroupDefaultType...
|
||||||
|
// defaultType
|
||||||
|
// )
|
||||||
// mapGroup( Remap a group name to a display name
|
// mapGroup( Remap a group name to a display name
|
||||||
// matchRegexOrString, -- see mapType...
|
// matchRegexOrString, -- see mapType...
|
||||||
// replacementString,
|
// replacementString,
|
||||||
|
|
@ -222,6 +226,14 @@ export function DSL(store, product, module = 'type-map') {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setGroupDefaultType(input, defaultType) {
|
||||||
|
if ( isArray(input) ) {
|
||||||
|
store.commit(`${ module }/setGroupDefaultType`, { groups: input, defaultType });
|
||||||
|
} else {
|
||||||
|
store.commit(`${ module }/setGroupDefaultType`, { group: input, defaultType });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
weightType(input, weight, forBasic) {
|
weightType(input, weight, forBasic) {
|
||||||
if ( isArray(input) ) {
|
if ( isArray(input) ) {
|
||||||
store.commit(`${ module }/weightType`, {
|
store.commit(`${ module }/weightType`, {
|
||||||
|
|
@ -291,6 +303,7 @@ export const state = function() {
|
||||||
basicTypes: {},
|
basicTypes: {},
|
||||||
groupIgnore: [],
|
groupIgnore: [],
|
||||||
groupWeights: {},
|
groupWeights: {},
|
||||||
|
groupDefaultTypes: {},
|
||||||
basicGroupWeights: { [ROOT]: 1000 },
|
basicGroupWeights: { [ROOT]: 1000 },
|
||||||
groupMappings: [],
|
groupMappings: [],
|
||||||
typeIgnore: [],
|
typeIgnore: [],
|
||||||
|
|
@ -446,6 +459,14 @@ export const getters = {
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
groupDefaultTypeFor(state) {
|
||||||
|
return (group) => {
|
||||||
|
group = group.toLowerCase();
|
||||||
|
|
||||||
|
return state.groupDefaultTypes[group];
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
getTree(state, getters, rootState, rootGetters) {
|
getTree(state, getters, rootState, rootGetters) {
|
||||||
return (productId, mode, allTypes, clusterId, namespaceMode, namespaces, currentType, search) => {
|
return (productId, mode, allTypes, clusterId, namespaceMode, namespaces, currentType, search) => {
|
||||||
// modes: basic, used, all, favorite
|
// modes: basic, used, all, favorite
|
||||||
|
|
@ -594,7 +615,8 @@ export const getters = {
|
||||||
group = {
|
group = {
|
||||||
name,
|
name,
|
||||||
label,
|
label,
|
||||||
weight: getters.groupWeightFor(name, forBasic),
|
weight: getters.groupWeightFor(name, forBasic),
|
||||||
|
defaultType: getters.groupDefaultTypeFor(name),
|
||||||
};
|
};
|
||||||
|
|
||||||
tree.children.push(group);
|
tree.children.push(group);
|
||||||
|
|
@ -1246,6 +1268,24 @@ export const mutations = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// setGroupDefaultType({group: 'core', defaultType: 'name'});
|
||||||
|
// By default when a group is clicked, the first item is selected - this allows
|
||||||
|
// this behvaiour to be changed and a named child type can be chosen
|
||||||
|
// These operate on group names *after* mapping but *before* translation
|
||||||
|
setGroupDefaultType(state, { group, groups, defaultType }) {
|
||||||
|
if ( !groups ) {
|
||||||
|
groups = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( group ) {
|
||||||
|
groups.push(group);
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( const g of groups ) {
|
||||||
|
state.groupDefaultTypes[g.toLowerCase()] = defaultType;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// weightType('Cluster' 99); -- higher groups are shown first
|
// weightType('Cluster' 99); -- higher groups are shown first
|
||||||
// These operate on *schema* type names, before mapping
|
// These operate on *schema* type names, before mapping
|
||||||
weightType(state, {
|
weightType(state, {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue