ifthenelse-8.x-1.x-dev-no-core/modules/contrib/if_then_else/src/core/Nodes/Actions/AddUserRoleAction/AddUserRoleAction.js
modules/contrib/if_then_else/src/core/Nodes/Actions/AddUserRoleAction/AddUserRoleAction.js
var VueAddUserRoleActionControl = {
props: ['emitter', 'ikey', 'getData', 'putData'],
components: {
Multiselect: window.VueMultiselect.default
},
template: `
<div class="fields-container">
<div class="form-fields-selection" >
<label for="one">User Roles</label>
<multiselect v-model="value" :show-labels="false" tag-placeholder="Add this as new tag" placeholder="Roles" label="label" track-by="name" :options="options" :multiple="true" :taggable="true" @input="updateSelected" @tag="addTag"></multiselect>
<br>
</div>
</div>`,
data() {
return {
type: drupalSettings.if_then_else.nodes.add_user_role_action.type,
class: drupalSettings.if_then_else.nodes.add_user_role_action.class,
name: drupalSettings.if_then_else.nodes.add_user_role_action.name,
value: [],
options: [],
selected_options: [],
}
},
methods: {
addTag (newTag) {
//Multiselect tags
const tag = {
name: newTag,
label: newTag.substring(0, 2) + Math.floor((Math.random() * 10000000))
};
this.options.push(tag);
this.value.push(tag)
},
updateSelected(value){
//Triggered when changing field values
var selectedOptions = [];
value.forEach((resource) => {
selectedOptions.push({name: resource.name, label: resource.label});
});
this.putData('selected_options',selectedOptions);
editor.trigger('process');
},
},
mounted() {
//initialize variable for data
this.putData('type',drupalSettings.if_then_else.nodes.add_user_role_action.type);
this.putData('class',drupalSettings.if_then_else.nodes.add_user_role_action.class);
this.putData('name', drupalSettings.if_then_else.nodes.add_user_role_action.name);
//setting values of selected fields when rule edit page loads.
//Setting values of retejs condition nodes when editing rule page loads
var get_selected_options = this.getData('selected_options');
if(typeof get_selected_options != 'undefined'){
this.value = this.getData('selected_options');
}
else {
this.putData('selected_options',[]);
}
},
created() {
if(drupalSettings.if_then_else.nodes.add_user_role_action.roles){
//Fetching values of fields when editing rule page loads
for (let option in drupalSettings.if_then_else.nodes.add_user_role_action.roles) {
this.options.push({
name: option,
label: drupalSettings.if_then_else.nodes.add_user_role_action.roles[option]
});
}
}
}
};
class AddUserRoleActionControl extends Rete.Control {
constructor(emitter, key) {
super(key);
this.component = VueAddUserRoleActionControl;
this.props = { emitter, ikey: key };
}
//setting list value of fields. Used when changing entity or bundle value in condition node.
setOptions(options) {
this.vueContext.options = options;
}
}
