# Place all the behaviors and hooks related to the matching controller here. $ = jQuery $.widget 'egov_utils.roles', options: editBtnClass: 'btn btn-sm btn-info' submitBtnClass: 'btn btn-xs btn-primary' editIconClass: 'fa fa-pencil-alt' allRoles: ['<%= EgovUtils::UserUtils::Role.roles.keys.join("', '") %>'] url: null idParamName: 'id' valueName: 'roles' _create: ()-> this.allRoles = this.element.data('all_roles') || this.options.allRoles || [] this._initialize(); _initialize: ()-> btn = this._edit_btn() this.element.find('.roles').append(btn) _edit_btn: ()-> that = this $('', {href: 'javascript:void(0);', class: this.options.editBtnClass}) .html('') .on 'click', (evt)-> evt.preventDefault() that._create_form($(this).closest('.roles')) _create_form: ($elem)-> that = this $elem.html('') entity_id = $elem.data('id') roles = $elem.data('roles') if typeof this.options.url == 'function' url = this.options.url(entity_id) else url = this.options.url $form = $('
', {action: url, method: 'post'}) $form.append('') $form.append('') $form.append('') $form.append('') for r in this.allRoles $form.append('') $form.append('') $elem.append($form) $form.on 'submit', (evt)-> evt.preventDefault() $.ajax(url, {data: $form.serializeArray(), dataType: 'json', method: 'POST'}).done (data, textStatus, jqXHR)-> $elem.html(data.toString()) $elem.data('roles', data) $elem.append(that._edit_btn())