{% macro navbar(services, topics, params, active='services') %}
{% endmacro %} {% macro content_navbar() %}
{% endmacro %} {% macro dynamic_array_input(fielddict) %} //to match the pattern in DOM idx = function (n, i) { return n + '-' + i ; } {% for name, type in fielddict.iteritems() %} {% if type[-2:] == '[]' %} $('#{{ name }}_btnAdd').click( function() { $('#{{ name }}_btnDel').removeAttr('disabled').button('enable'); // enable the "del" button // how many "duplicatable" input fields we currently have var num = $('.{{ name }}_clonedInput').length; // the numeric ID of the new input field being added var newNum = new Number(num + 1); var newElem = $('#'+idx('div{{ name }}', num)).clone().attr('id', idx('div{{ name }}', newNum)); newElem.children(':first').attr( 'for', idx('{{ name }}', newNum) ) // label newElem.find('#'+idx('{{ name }}', num)).attr( 'id', idx('{{ name }}', newNum) ).attr('name', idx('{{ name }}', newNum));//input, even embedded in jquery mobile divs $('#'+idx('div{{ name }}', num)).after(newElem); // business rule: limit the number of fields to 5 if (newNum == 5) { $('#{{ name }}_btnAdd' ).attr('disabled', 'disabled').button('disable'); $('#{{ name }}_btnAdd').parent().find('.ui-btn-text').text('maximum fields reached'); } return false; // cancel original event }); $( '#{{ name }}_btnDel' ).click( function() { // how many "duplicatable" input fields we currently have var num = $( '.{{ name }}_clonedInput' ).length; // remove the last element $('#'+idx('div{{ name }}', num )).remove(); // enable the "add" button, since we've removed one $('#{{ name }}_btnAdd').removeAttr('disabled').button('enable'); $('#{{ name }}_btnAdd').parent().find('.ui-btn-text').text('add another name'); // if only one element remains, disable the "remove" button if ( num-1 == 1 ) $('#{{ name }}_btnDel' ).attr('disabled', 'disabled').button('disable'); return false; // cancel original event }); {% endif %} {% endfor %} {% endmacro %} {% macro generate_inputs(fielddict) %} {% for name, type in fielddict.iteritems() %}
{% if type=='bool' %} {% elif type=='float32' %} {% elif type=='int32' %} {% elif type=='uint8' %} {% elif type=='std_msgs/Header' %}
{% elif type=='geometry_msgs/Vector3' %}
{% elif type=='string' %} {% elif type=='string[]' %}
{% else %} {% endif %}
{% endfor %} {% endmacro %} {% macro generate_msgdata(fielddict) %} msgdata = {} {% for name, type in fielddict.iteritems() %} {% if type=='bool' %} msgdata['{{ name }}'] = $('#{{ name }}').is(":checked") {% elif type=='float32' %} msgdata['{{ name }}'] = parseInt($('#{{ name }}').val()) {% elif type=='int32' %} msgdata['{{ name }}'] = parseInt($('#{{ name }}').val()) {% elif type=='uint8' %} msgdata['{{ name }}'] = parseInt($('#{{ name }}').val()) {% elif type=='geometry_msgs/Vector3' %} msgdata['{{ name }}'] = {} msgdata['{{ name }}']['x'] = parseInt($('#{{ name }}_x').val()) msgdata['{{ name }}']['y'] = parseInt($('#{{ name }}_y').val()) msgdata['{{ name }}']['z'] = parseInt($('#{{ name }}_z').val()) {% elif type=='string' %} msgdata['{{ name }}'] = $('#{{ name }}').val() {% elif type=='string[]' %} msgdata['{{ name }}']=[] for (idx=1; idx <= $( '.{{ name }}_clonedInput' ).length; idx++) { var val=$('#{{ name }}-' + idx).val() if (val!='') { msgdata['{{ name }}'].push( val ) } } {% else %} msgdata['{{ name }}'] = $('#{{ name }}').val() {% endif %} {% endfor %} {%endmacro %}