ifthenelse-8.x-1.x-dev-no-core/modules/contrib/if_then_else/src/core/Nodes/Conditions/UserHasEntityFieldAccessCondition/UserHasEntityFieldAccessCondition.js

modules/contrib/if_then_else/src/core/Nodes/Conditions/UserHasEntityFieldAccessCondition/UserHasEntityFieldAccessCondition.js
// New add action for setting default values of fields
var VueUserHasEntityFieldAccessConditionControl = {
  components: {
    // Component included for Multiselect.
    Multiselect: window.VueMultiselect.default
  },
  props: ['getData', 'putData', 'emitter'],
  provide() {
    return {
      emitter: this.emitter
    }
  },
  data(){
    return{
      type: drupalSettings.if_then_else.nodes.user_has_entity_field_access_condition.type,
      class: drupalSettings.if_then_else.nodes.user_has_entity_field_access_condition.class,
      name: drupalSettings.if_then_else.nodes.user_has_entity_field_access_condition.name,
      options: [],
      opt_options: [],
      form_fields: [],
      opt_form_fields: [],
      value: [],
      opt_value: [],
    }
  },
  template: `<div class="fields-container">
    <div class="entity-select">
      <label class="typo__label">Field</label>
      <multiselect v-model="value" :options="options" @input="fieldValueChanged" label="name" track-by="code" 
      :searchable="false" :close-on-select="true" :show-labels="false" placeholder="Select a field">
      </multiselect>      
    </div>
    <div class="operation-select">
      <label class="typo__label">Operation</label>
      <multiselect v-model="opt_value" :options="opt_options" @input="optFieldValueChanged" label="name" track-by="code" 
      :searchable="false" :close-on-select="true" :show-labels="false" placeholder="Select Operation Access">
      </multiselect>      
    </div>    
  </div>`,

  methods: {
    fieldValueChanged(value){
      //Triggered when selecting an field.
      var selectedOptions = [];
      selectedOptions.push({name: value.name, code: value.code});
      
      this.putData('form_fields',selectedOptions);
      editor.trigger('process');
    },
    optFieldValueChanged(value){
      //Triggered when selecting an field.
      var selectedOptions = [];
      selectedOptions.push({name: value.name, code: value.code});

      this.putData('opt_form_fields',selectedOptions);
      editor.trigger('process');
    },
  },

  mounted(){
    // initialize variable for data
    this.putData('type',drupalSettings.if_then_else.nodes.user_has_entity_field_access_condition.type);
    this.putData('class',drupalSettings.if_then_else.nodes.user_has_entity_field_access_condition.class);
    this.putData('name', drupalSettings.if_then_else.nodes.user_has_entity_field_access_condition.name);

    //setting values of selected fields when rule edit page loads.
    var get_form_fields = this.getData('form_fields');
    if(typeof get_form_fields != 'undefined'){
      this.value = this.getData('form_fields');
    }else{
      this.putData('form_fields',[]);
    }

    //setting values of selected fields for operation field when rule edit page loads.
    var get_opt_form_fields = this.getData('opt_form_fields');
    if(typeof get_opt_form_fields != 'undefined'){
      this.opt_value = this.getData('opt_form_fields');
    }else{
      this.putData('opt_form_fields',[]);
    }
  },
  created() {
    if(drupalSettings.if_then_else.nodes.user_has_entity_field_access_condition.form_fields){
      //setting list of all fields for a form when rule edit page loads.
      this.options = drupalSettings.if_then_else.nodes.user_has_entity_field_access_condition.form_fields;
      this.opt_options = drupalSettings.if_then_else.nodes.user_has_entity_field_access_condition.opt_options;
    }
  }
};

class UserHasEntityFieldAccessConditionControl extends Rete.Control {
  constructor(emitter, key, readonly) {
    super(key);
    this.component = VueUserHasEntityFieldAccessConditionControl;
    this.props = { emitter, ikey: key, readonly };
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc