From 335265590fcef483b99f7bd2c50836f6ad10af11 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Sun, 10 Mar 2013 00:22:05 -0500 Subject: [PATCH] add radio preset input --- js/id/ui/preset/radio.js | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 js/id/ui/preset/radio.js diff --git a/js/id/ui/preset/radio.js b/js/id/ui/preset/radio.js new file mode 100644 index 000000000..a13dd9159 --- /dev/null +++ b/js/id/ui/preset/radio.js @@ -0,0 +1,45 @@ +iD.ui.preset.radio = function(form) { + + var event = d3.dispatch('change', 'close'), + buttons, + input; + + function radio(selection) { + + selection.classed('preset-radio', true); + + buttons = selection.selectAll('button') + .data(form.options) + .enter() + .append('button') + .text(function(d) { return d; }) + .on('click', function() { + buttons.classed('active', false); + d3.select(this).classed('active', true); + change(); + }); + selection.append('button') + .on('click', function() { + buttons.classed('active', false); + change(); + }) + .append('span') + .attr('class', 'icon remove'); + } + + function change() { + var t = {}; + buttons.each(function(d) { + t[d] = d3.select(this).classed('active') ? 'yes' : ''; + }); + event.change(t); + } + + radio.tags = function(tags) { + buttons.classed('active', function(d) { + return tags[d] && tags[d] !== 'no'; + }); + }; + + return d3.rebind(radio, event, 'on'); +};