VV
Size: a a a
AM
E
DF
AA
DF
AA
DF
AA
menuGroups = {
admin: ['one', 'two', 'three'],
manager: ['one', 'two'],
user: []
},
itemsList = [
{link: 'one', name: 'Menu item 1'},
{link: 'two', name: 'Menu Item 2'},
{link: 'three', name: 'Menu item 3'},
];
let currentMenuGroup = menuGroups['user'];
switch (user.role) {
case 'admin':
currentMenuGroup = menuGroups['admin'];
break;
case 'manager':
currentMenuGroup = menuGroups['manager'];
break;
default:
currentMenuGroup = menuGroups['user'];
break;
}
drawMenuItems(currentMenuGroup, itemsList) {
return (
itemsList.map(item => {
return currentMenuGroup.indexOf(item.link) !== -1
? <li
key={item.link}
className={
location.pathname.indexOf(item.link) !== -1
? 'active'
: ''
}>
<Link to={`${config.location}/${item.link}`}>{item.name}</Link>
</li>
: '';
})
);
}HH
DF
menuGroups = {
admin: ['one', 'two', 'three'],
manager: ['one', 'two'],
user: []
},
itemsList = [
{link: 'one', name: 'Menu item 1'},
{link: 'two', name: 'Menu Item 2'},
{link: 'three', name: 'Menu item 3'},
];
let currentMenuGroup = menuGroups['user'];
switch (user.role) {
case 'admin':
currentMenuGroup = menuGroups['admin'];
break;
case 'manager':
currentMenuGroup = menuGroups['manager'];
break;
default:
currentMenuGroup = menuGroups['user'];
break;
}
drawMenuItems(currentMenuGroup, itemsList) {
return (
itemsList.map(item => {
return currentMenuGroup.indexOf(item.link) !== -1
? <li
key={item.link}
className={
location.pathname.indexOf(item.link) !== -1
? 'active'
: ''
}>
<Link to={`${config.location}/${item.link}`}>{item.name}</Link>
</li>
: '';
})
);
}DF
HH
DF
AA
AA
DF
AL
DF
AL
if (able_to_spread_wings) <button>Spread wings</button>до введення цієї практики js код виглядав так:
if (!is_human && (!is_american || (from_europe && has_visa()))) <button>Spread wings</button>При цьому логіка дублювавлась на беку і на фронті і з часом через те що не було single point of trust почався розсинхрон і фронт ловив 400 в бевних кейсах