| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- mgJsComponentHandler.addDefaultComponent('mg-ajax-select-rs', {
- template: '#t-mg-ajax-select-rs',
- props: [
- 'component_id',
- 'component_namespace',
- 'component_index',
- 'reload_fields_ids',
- 'hide_by_default_if_no_data'
- ],
- data: function () {
- return {
- options: [],
- selected: null
- };
- },
- created: function () {
- var self = this;
- self.$nextTick(function () {
- self.initSelect();
- });
- //create reload events
- for (var key in self.reload_fields_ids) {
- if (!self.reload_fields_ids.hasOwnProperty(key)) {
- continue;
- }
- mgEventHandler.on('SelectFieldValueChanged', self.reload_fields_ids[key], function (id, params) {
- self.loadAjaxData();
- });
- }
- },
- methods: {
- initSelect: function () {
- var self = this;
- if ($('#' + self.component_id).hasClass('selectized')) {
- var selectizedInstance = $('#' + self.component_id).selectize();
- selectizedInstance[0].selectize.destroy();
- }
- $('#' + self.component_id).selectize({
- valueField: 'key',
- labelField: 'value',
- searchField: 'value',
- plugins: ['remove_button'],
- options: self.options,
- load: function (query, callback) {
- //if no search string
- if (!query.length) {
- // return;
- return callback([]);
- } else {
- self.loadAjaxData(query);
- self.$nextTick(function () {
- callback(self.options);
- });
- }
- }
- });
- },
- loadAjaxData: function (query) {
- var self = this;
- self.loading_state = true;
- var loadFormData = false;
- for (var key in self.reload_fields_ids) {
- if (!self.reload_fields_ids.hasOwnProperty(key)) {
- continue;
- }
- if (self.reload_fields_ids[key] !== '' && self.reload_fields_ids)
- {
- loadFormData = true;
- break;
- }
- }
- if (loadFormData) {
- var tmpForm = $("select[name='" + self.component_id + "']").parents('form').first();
- var tmpFormId = $(tmpForm).attr('id');
- var tmpFormDataHandler = new mgFormControler(tmpFormId);
- var formData = tmpFormDataHandler.getFieldsData();
- if (typeof formData.formData !== 'undefined') {
- formData = formData.formData;
- }
- } else {
- var formData = {};
- }
- var requestParams = {
- loadData: self.component_id,
- namespace: self.component_namespace,
- index: self.component_index,
- searchQuery: query
- };
- for (var key in formData) {
- if (!formData.hasOwnProperty(key)) {
- continue;
- }
- requestParams[key] = formData[key];
- }
- var response = mgPageControler.vueLoader.vloadData(requestParams);
- return response.done(function (data) {
- self.options = [];
- for (var key in data.data.rawData.options) {
- if (!data.data.rawData.options.hasOwnProperty(key)) {
- continue;
- }
- var tmpOpt = {};
- tmpOpt[key] = data.data.rawData.options[key];
- self.options.push({}[key] = data.data.rawData.options[key]);
- }
- self.$nextTick(function () {
- self.showSelectIfHidden();
- });
- }).fail(function () {
- });
- },
- showSelectIfHidden: function () {
- var self = this;
- if (self.hide_by_default_if_no_data && self.options.length > 0) {
- if ($('#' + self.component_id).parents('.lu-form-group').first().length > 0) {
- $('#' + self.component_id).parents('.lu-form-group').first().removeAttr('hidden');
- }
- }
- }
- }
- });
|