modules/ui/tools/power_support.js (65 lines of code) (raw):
import { uiToolSegemented } from './segmented';
import { t } from '../../util/locale';
export function uiToolPowerSupport(context) {
var tool = uiToolSegemented(context);
tool.id = 'power_support';
tool.label = t('toolbar.support.title');
tool.key = t('toolbar.support.key');
tool.iconName = 'temaki-power_tower';
tool.items = [
{
id: 'none',
icon: 'temaki-vertex',
label: t('toolbar.structure.none.title'),
tags: {}
},
{
id: 'pole',
icon: 'temaki-utility_pole',
label: t('toolbar.support.pole.title'),
tags: {
power: 'pole'
}
},
{
id: 'tower',
icon: 'temaki-power_tower',
label: t('toolbar.support.tower.title'),
tags: {
power: 'tower'
}
}
];
tool.chooseItem = function(item) {
context.mode().defaultNodeTags = item.tags;
};
tool.activeItem = function() {
var nodeTags = context.mode().defaultNodeTags;
return tool.items.find(function(d) {
return nodeTags === d.tags;
});
};
function powerLineValue() {
var mode = context.mode();
var way = context.hasEntity(mode.wayID);
var tags = (way && way.tags) || mode.defaultTags;
var powerValue = tags && tags.power;
if (powerValue === 'line' || powerValue === 'minor_line') {
return powerValue;
}
return null;
}
tool.allowed = function() {
if (context.mode().id !== 'draw-line' && context.mode().id !== 'add-line') return false;
return !!powerLineValue();
};
var parentInstall = tool.install;
tool.install = function() {
parentInstall();
if (!tool.activeItem()) {
var index = powerLineValue() === 'line' ? 2 : 1;
tool.chooseItem(tool.items[index]);
}
};
return tool;
}