kreta/KretaWeb/Scripts/KendoHelper/KretaComboBoxHelper.js
2024-03-13 00:33:46 +01:00

183 lines
5.1 KiB
JavaScript

var KretaComboBoxHelper = (function () {
var kretaComboBoxHelper = function () {};
kretaComboBoxHelper.getKendoComboBoxData = function (comboBoxId) {
var comboBox = $('#' + comboBoxId);
var comboBoxData = comboBox.data('kendoComboBox');
return comboBoxData;
};
kretaComboBoxHelper.getKendoValue = function (comboBoxId) {
var comboBoxData = kretaComboBoxHelper.getKendoComboBoxData(comboBoxId);
var result = comboBoxData.value();
return result;
};
kretaComboBoxHelper.getCascadeData = function (inputName) {
if (inputName.indexOf(',') >= 0) {
var array = inputName.split(',');
var data = '';
$.each(array, function (key, value) {
if (data.length > 0 && $('#' + value).val() != '') {
data += ',';
}
if (value.indexOf('#') >= 0) {
data += $(value).val();
} else {
data += $('#' + value).val();
}
});
return { cascadeFilter: data };
} else {
return { cascadeFilter: $(inputName).val() };
}
};
kretaComboBoxHelper.getServerFilteringData = function (inputName) {
return { serverFilter: $(inputName).val() };
};
kretaComboBoxHelper.getServerFilteringComboBoxTextData = function (
inputName
) {
var textValue = $(inputName).data('kendoComboBox').text();
if (textValue.length > 0) {
return { serverFilter: textValue };
}
return null;
};
kretaComboBoxHelper.refreshComboBox = function (inputName) {
var widget = $('#' + inputName).data('kendoComboBox');
widget.dataSource.read();
};
kretaComboBoxHelper.setFirstItem = function (inputName, setIfHasOnlyOneItem) {
var widget = $('#' + inputName).data('kendoComboBox');
if (setIfHasOnlyOneItem) {
if (widget.dataSource.data().length === 1) {
widget.value(widget.dataSource.data()[0].Value);
}
} else {
//NOTE: Check if has item!
if (widget.dataSource.data().length > 0) {
widget.value(widget.dataSource.data()[0].Value);
}
}
};
kretaComboBoxHelper.onChange = function (e) {
elementId = e.sender.element[0].id.replace('.', '_');
$('input[name="' + elementId + '"]').attr(
'title',
$('input[name="' + elementId + '_input' + '"]').attr('title')
); /*validációs üzenet buborékolása*/
var comboBox = $('#' + elementId).data('kendoComboBox');
checkSelectedValue(comboBox);
};
kretaComboBoxHelper.checkSelectedValue = function (elementId) {
var comboBox = $('#' + elementId).data('kendoComboBox');
checkSelectedValue(comboBox);
};
kretaComboBoxHelper.onDataBound = function (e) {
var elementId = e.sender.element[0].id;
var comboBox = $('#' + elementId).data('kendoComboBox');
if (typeof comboBox !== 'undefined') {
if (!comboBox.element.attr('placeholder')) {
comboBox.element.attr(
'placeholder',
comboBox.input.attr('placeholder')
);
}
var dataSource = comboBox.dataSource;
if (dataSource != null) {
if (dataSource.data().length == 1) {
var data = dataSource.data()[0];
comboBox.value(data.Value);
comboBox.trigger('change');
} else {
checkSelectedValue(comboBox);
}
}
}
};
kretaComboBoxHelper.onDataBoundWithoutSetSingleElement = function (e) {
var elementId = e.sender.element[0].id;
var comboBox = $('#' + elementId).data('kendoComboBox');
if (typeof comboBox !== 'undefined') {
if (!comboBox.element.attr('placeholder')) {
comboBox.element.attr(
'placeholder',
comboBox.input.attr('placeholder')
);
}
var dataSource = comboBox.dataSource;
if (dataSource != null) {
if (dataSource.data().length != 1) {
checkSelectedValue(comboBox);
}
}
}
};
kretaComboBoxHelper.onOpenDropdown = function (e) {
var elementId = e.sender.element[0].id;
var comboBox = $('#' + elementId).data('kendoComboBox');
var maxWidth = 800;
var comboMinWidth = $('#' + elementId)
.parents('.k-combobox')
.width();
if (comboMinWidth > maxWidth) {
maxWidth = comboMinWidth;
}
comboBox.list.css('maxWidth', maxWidth);
comboBox.list.css('minWidth', comboMinWidth);
comboBox.list.width('auto');
};
kretaComboBoxHelper.setKendoValue = function (comboBoxData, value) {
comboBoxData.value(value);
comboBoxData.trigger('change');
};
function checkSelectedValue(comboBox) {
if (comboBox.selectedIndex === -1 && comboBox.value()) {
comboBox.value(null);
comboBox.input.attr(
'placeholder',
comboBox.element.attr('data-msg-unknownvalue')
);
} else {
comboBox.input.attr('placeholder', comboBox.element.attr('placeholder'));
}
}
kretaComboBoxHelper.getIndexForValue = function (comboBoxId, value) {
var data = kretaComboBoxHelper
.getKendoComboBoxData(comboBoxId)
.dataSource.data();
var index = -1;
for (var i = 0; i < data.length; i++) {
if (data[i].Value === value) {
index = i;
break;
}
}
return index;
};
return kretaComboBoxHelper;
})();