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

838 lines
21 KiB
JavaScript

if (!String.prototype.format) {
String.prototype.format = function () {
var args = arguments;
return this.replace(/{(\d+)}/g, function (match, number) {
return typeof args[number] !== 'undefined' ? args[number] : match;
});
};
}
if (!Array.prototype.hasValue) {
Array.prototype.hasValue = function (key, value) {
for (var item in this) {
if (this.hasOwnProperty(item)) {
if (this[item][key] === value) {
return true;
}
}
}
return false;
};
}
if (!Array.prototype.contains) {
Array.prototype.contains = function (value) {
if ($.inArray(value, this) === -1) {
return false;
} else {
return true;
}
};
}
if (!String.prototype.endsWith) {
String.prototype.endsWith = function (suffix) {
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
}
if (!String.prototype.isBase64) {
String.prototype.isBase64 = function () {
try {
var decodedText = atob(this);
var encodedText = btoa(decodedText);
var isBase64Text = encodedText == this;
return isBase64Text;
} catch (ex) {
return false;
}
};
}
$.fn.onKeyPressEnter = function (func) {
return this.each(function () {
$(this).keypress(function (event) {
var keycode = parseInt(event.keyCode ? event.keyCode : event.which);
if (keycode === 13) {
func.call(this, event);
}
});
});
};
$.fn.onKeyPressLeft = function (func) {
return this.each(function () {
$(this).keypress(function (event) {
var keycode = parseInt(event.keyCode ? event.keyCode : event.which);
if (keycode === 37) {
func.call(this, event);
}
});
});
};
$.fn.onKeyPressRight = function (func) {
return this.each(function () {
$(this).keypress(function (event) {
var keycode = parseInt(event.keyCode ? event.keyCode : event.which);
if (keycode === 39) {
func.call(this, event);
}
});
});
};
jQuery.fn.extend({
insertAtCaret: function (myValue) {
return this.each(function (i) {
if (document.selection) {
//For browsers like Internet Explorer
this.focus();
var sel = document.selection.createRange();
sel.text = myValue;
this.focus();
} else if (this.selectionStart || this.selectionStart == '0') {
//For browsers like Firefox and Webkit based
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value =
this.value.substring(0, startPos) +
myValue +
this.value.substring(endPos, this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
});
}
});
$.fn.resetForm = function () {
var form = $(this);
var inputs = form.find(
"input:not([disabled]):not(.disabledItem):not([type='hidden'])"
);
$.each(inputs, function () {
var input = $(this);
var type = input.prop('type');
if (type === 'checkbox' || type === 'radio') {
input.prop('checked', false);
} else {
input.val('');
}
});
var multiselects = form.find('select[multiple]');
$.each(multiselects, function () {
var multiselect = $(this);
var kendoMultiSelect = multiselect.data('kendoMultiSelect');
if (typeof kendoMultiSelect !== 'undefined') kendoMultiSelect.value([]);
});
};
var CommonUtils = (function () {
var commonUtils = function () {};
commonUtils.allowOnlyNumber = function (e) {
return allowOnlyNumber(e);
};
commonUtils.checkBrowserVersion = function () {
return CheckBrowserVersion();
};
commonUtils.checkKendoComboBoxHasItemByValue = function (
comboBoxName,
value
) {
return checkKendoComboBoxHasItemByValue(comboBoxName, value);
};
commonUtils.createGuid = function (withoutHyphen) {
return createGuid(withoutHyphen);
};
commonUtils.exists = function (variable) {
return exists(variable);
};
commonUtils.getHtmlInnerTextFromString = function (variable) {
return getHtmlInnerTextFromString(variable);
};
commonUtils.getNormalizedHtmlFromString = function (variable) {
return getNormalizedHtmlFromString(variable);
};
commonUtils.isBool = function (variable) {
return isBool(variable);
};
commonUtils.isFunction = function (variable) {
return isFunction(variable);
};
commonUtils.isNull = function (variable) {
return isNull(variable);
};
commonUtils.isNullOrEmpty = function (variable) {
return isNullOrEmpty(variable);
};
commonUtils.isNullOrUndefined = function (variable) {
return isNull(variable) || isUndefined(variable);
};
commonUtils.isNullOrWhiteSpace = function (variable, checkUnstrippedText) {
return isNullOrWhiteSpace(variable, checkUnstrippedText);
};
commonUtils.isNullOrEmptyOrUndefined = function (variable) {
return isNullOrEmpty(variable) || isUndefined(variable);
};
commonUtils.isUndefined = function (variable) {
return isUndefined(variable);
};
commonUtils.parseBool = function (variable) {
return parseBool(variable);
};
commonUtils.parseNull = function (variable) {
return parseNull(variable);
};
commonUtils.setCaretPosition = function (input, position) {
return setCaretPosition(input, position);
};
commonUtils.Log = function (text) {
if (!isUndefined(console) && !isUndefined(console.error)) {
console.error(text);
}
};
commonUtils.formFileDownload = function (url, fileId) {
if ($('#hidden-form').length > 0) {
$('#hidden-form').remove();
}
$('<form>')
.attr({
method: 'POST',
id: 'hidden-form',
action: url
})
.appendTo('body');
$('<input>')
.attr({
type: 'hidden',
id: 'Id',
name: 'Id',
value: fileId
})
.appendTo('#hidden-form');
$('#hidden-form').submit();
};
commonUtils.LineBreakRegex = new RegExp('\r?\n', 'g');
function createGuid(withoutHyphen) {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
if (withoutHyphen) {
return s4() + s4() + s4() + s4() + s4() + s4() + s4() + s4();
}
return (
s4() +
s4() +
'-' +
s4() +
'-' +
s4() +
'-' +
s4() +
'-' +
s4() +
s4() +
s4()
);
}
function parseBool(variable) {
if (
variable === 'true' ||
variable === 'True' ||
variable === true ||
variable === 1 ||
variable === '1'
) {
return true;
}
return false;
}
function parseNull(variable) {
if (variable.toLowerCase() === 'null') {
return null;
}
return variable;
}
function exists(object) {
return object.length > 0;
}
function isUndefined(variable) {
return typeof variable === 'undefined';
}
function isNull(variable) {
return variable == null;
}
function isNullOrEmpty(variable) {
return isNull(variable) || variable === '';
}
function isNullOrWhiteSpace(variable, checkUnstrippedText) {
if (typeof variable !== 'string') {
return true;
}
if (isUndefined(checkUnstrippedText)) {
checkUnstrippedText = true;
}
var text;
if (checkUnstrippedText) {
text = variable;
} else {
text = getHtmlInnerTextFromString(variable);
}
var result = text.trim();
return isNullOrEmpty(result);
}
function isBool(variable) {
return typeof variable === 'boolean';
}
function isFunction(variable) {
return typeof variable === 'function';
}
function getNormalizedHtmlFromString(variable) {
var tempDivElement = document.createElement('textarea');
tempDivElement.innerHTML = variable;
return tempDivElement.value;
}
function getHtmlInnerTextFromString(variable) {
var tempDivElement = document.createElement('div');
tempDivElement.innerHTML = getNormalizedHtmlFromString(variable);
return tempDivElement.innerText;
}
function allowOnlyNumber(e) {
// Allow: backspace, delete, tab, escape, enter and .
if (
$.inArray(e.keyCode, [46, 8, 9, 27, 13, 110]) !== -1 ||
// Allow: Ctrl/cmd+A
(e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) ||
// Allow: Ctrl/cmd+C
(e.keyCode == 67 && (e.ctrlKey === true || e.metaKey === true)) ||
// Allow: Ctrl/cmd+X
(e.keyCode == 88 && (e.ctrlKey === true || e.metaKey === true)) ||
// Allow: home, end, left, up, right, down
(e.keyCode >= 35 && e.keyCode <= 40)
) {
// let it happen, don't do anything
return;
}
// Ensure that it is a number and stop the keypress
if (
(e.shiftKey || e.keyCode < 48 || e.keyCode > 57) &&
(e.keyCode < 96 || e.keyCode > 105)
) {
e.preventDefault();
}
}
function checkKendoComboBoxHasItemByValue(comboBoxName, value) {
var kendoComboBox = KretaComboBoxHelper.getKendoComboBoxData(comboBoxName);
var comboBoxItemsByValue = $.grep(kendoComboBox.dataItems(), function (e) {
return e.Value === value;
});
var result = comboBoxItemsByValue.length > 0;
return result;
}
function CheckBrowserVersion() {
// ha mobilon lévő böngészőről nézi a böngészőt, nincs figyelmeztetés
var indexOfMOBI = navigator.userAgent.indexOf('Mobi');
if (indexOfMOBI !== -1) {
return true;
}
var MinVersionEdgeHTML = 14;
var MinVersionFirefox = 50;
var MinVersionChrome = 50;
var MinVersionOpera = 36;
var KretaBrowser = (function () {
var userAgent = navigator.userAgent;
var arr =
userAgent.match(
/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i
) || [];
var browser = arr[1];
var version = arr[2];
//IE
if (/trident/i.test(browser)) {
browser = 'IE';
var ieVersionArr = /\brv[ :]+(\d+)/g.exec(userAgent) || [];
version = ieVersionArr[1] || '';
return { browser: browser, version: version };
}
//Opera és Edge
if (browser === 'Chrome') {
var isEdgeOrOperaArr = userAgent.match(/\b(OPR|Edge)\/(\d+)/i);
if (isEdgeOrOperaArr !== null) {
browser = isEdgeOrOperaArr[1].replace('OPR', 'Opera');
version = isEdgeOrOperaArr[2];
return { browser: browser, version: version };
}
}
var isOtherVersionArr = userAgent.match(/version\/(\d+)/i);
//Safari
if (isOtherVersionArr !== null) {
version = isOtherVersionArr[1];
}
return { browser: browser, version: version };
})();
// verzió és böngésző ellenőrzés
if (
KretaBrowser.browser === 'Edge' &&
KretaBrowser.version >= MinVersionEdgeHTML
) {
return true;
}
if (
KretaBrowser.browser === 'Opera' &&
KretaBrowser.version >= MinVersionOpera
) {
return true;
}
if (
KretaBrowser.browser === 'Firefox' &&
KretaBrowser.version >= MinVersionFirefox
) {
return true;
}
if (
KretaBrowser.browser === 'Chrome' &&
KretaBrowser.version >= MinVersionChrome
) {
return true;
}
return false;
}
function setCaretPosition(input, position) {
if (input.setSelectionRange) {
// Modern browsers
input.focus();
input.setSelectionRange(position, position);
} else if (input.createTextRange) {
// IE8 and below
var textRange = input.createTextRange();
textRange.collapse(true);
textRange.moveEnd('character', position);
textRange.moveStart('character', position);
textRange.select();
}
}
commonUtils.hunSorterWithKey = function (key) {
return function hunSort(x, y) {
if (!x.hasOwnProperty(key) || !y.hasOwnProperty(key)) {
return 0;
}
var a = x[key];
var b = y[key];
var hunABC = [
'A',
'Á',
'B',
'C',
'CS',
'D',
'DZ',
'DZS',
'E',
'É',
'F',
'G',
'GY',
'H',
'I',
'Í',
'J',
'K',
'L',
'LY',
'M',
'N',
'NY',
'O',
'Ó',
'Ö',
'Ő',
'P',
'Q',
'R',
'S',
'SZ',
'T',
'TY',
'U',
'Ú',
'Ü',
'Ű',
'V',
'W',
'X',
'Y',
'Z',
'ZS'
];
var digraphs = ['CS', 'DZ', 'GY', 'LY', 'NY', 'SZ', 'TY', 'ZS'];
var trigraphs = ['DZS'];
var hunAccentsMap = {
Á: 'A',
É: 'E',
Í: 'I',
Ó: 'O',
Ő: 'Ö',
Ú: 'U',
Ű: 'Ü'
};
var foreignCharactersMap = {
// A
À: 'A',
Â: 'A',
Ă: 'A',
Ä: 'A',
Ą: 'A',
Å: 'A',
Ā: 'A',
Æ: 'A',
// C
Č: 'C',
Ć: 'C',
Ç: 'C',
// D
Ď: 'D',
Ð: 'D',
Dž: 'D',
Đ: 'D',
// E
È: 'E',
Ê: 'E',
Ě: 'E',
Ë: 'E',
Ę: 'E',
Ē: 'E',
// G
Ğ: 'G',
// I
Ì: 'I',
Î: 'I',
Ï: 'I',
İ: 'I',
Ī: 'I',
// L
Ĺ: 'L',
Ľ: 'L',
Lj: 'L',
Ł: 'L',
: 'L',
: 'L',
// N
Ň: 'N',
Ñ: 'N',
Nj: 'N',
// O
Ò: 'O',
Ô: 'O',
Õ: 'O',
Ō: 'O',
Ø: 'O',
Œ: 'O',
// R
Ŕ: 'R',
Ř: 'R',
: 'R',
: 'R',
// S
Ś: 'S',
Š: 'S',
Ŝ: 'S',
Ș: 'S',
Ş: 'S',
// T
Ť: 'T',
Ț: 'T',
Þ: 'T',
// U
Ù: 'U',
Û: 'U',
Ů: 'U',
Ū: 'U',
// Y
Ý: 'Y',
Ÿ: 'Y',
// Z
Ź: 'Z',
Ż: 'Z',
Ž: 'Z'
};
var removeAccent = false;
// clean special characters and replace ssz -> szsz
var cleanerRegex =
/(.)(?=\1)(DZS|CS|DZ|GY|LY|NY|SZ|TY|ZS)| |-|\[|\]|\.|\(|\)|/g;
var cleanForeignCharacters = function cleanForeignCharacters(text) {
return [].concat(text).reduce(function (acc, curr) {
return acc + (foreignCharactersMap[curr] || curr);
}, '');
};
var getUpperCaseAndReplaxeTwiceOccured =
function getUpperCaseAndReplaxeTwiceOccured(text) {
return cleanForeignCharacters(text.toUpperCase()).replace(
cleanerRegex,
'$2$2'
);
};
var aUpper = getUpperCaseAndReplaxeTwiceOccured(a);
var bUpper = getUpperCaseAndReplaxeTwiceOccured(b);
var compareNumbers = function compareNumbers(i, j) {
if (i < j) {
return -1;
}
if (i > j) {
return 1;
}
return 0;
};
var getCharAndShift = function getCharAndShift(text, index) {
var shift = 3;
var _char = '';
if (trigraphs.includes(text.substring(index, index + shift))) {
_char = text.substring(index, index + shift);
} else {
shift = 2;
if (digraphs.includes(text.substring(index, index + shift))) {
_char = text.substring(index, index + shift);
} else {
shift = 1;
_char = text.charAt(index);
}
}
return {
shift: shift,
char: _char,
isNumber: Number.isInteger(parseInt(_char))
};
};
var getIndex = function getIndex(_char2) {
return hunABC.indexOf(
(removeAccent && hunAccentsMap[_char2]) || _char2
);
};
var compareTexts = function compareTexts(_ref) {
var aIndex = _ref.aIndex,
bIndex = _ref.bIndex;
var _getCharAndShift = getCharAndShift(aUpper, aIndex),
aShift = _getCharAndShift.shift,
aCurrentChar = _getCharAndShift['char'],
aIsNumber = _getCharAndShift.isNumber;
var _getCharAndShift2 = getCharAndShift(bUpper, bIndex),
bShift = _getCharAndShift2.shift,
bCurrentChar = _getCharAndShift2['char'],
bIsNumber = _getCharAndShift2.isNumber;
var aCharIndex = getIndex(aCurrentChar);
var bCharIndex = getIndex(bCurrentChar);
if (aIsNumber && bIsNumber) {
var aNumber = parseInt(aCurrentChar);
var bNumber = parseInt(bCurrentChar);
if (aNumber !== bNumber) {
return compareNumbers(aNumber, bNumber);
}
} else if (aCharIndex !== bCharIndex) {
return compareNumbers(aCharIndex, bCharIndex);
}
return compareTexts({
aIndex: aIndex + aShift,
bIndex: bIndex + bShift
});
};
var cleanAccent = function cleanAccent(text) {
return [].concat(text).reduce(function (acc, curr) {
return acc + (hunAccentsMap[curr] || curr);
}, '');
};
if (aUpper === bUpper) {
var aFirstChar = getIndex(a.charAt(0));
var bFirstChar = getIndex(b.charAt(0));
return compareNumbers(aFirstChar, bFirstChar);
}
return compareTexts({
aIndex: 0,
bIndex: 0
});
};
};
commonUtils.getBankszamlaVezetoBankAjax = function (url, bankszamlaszam) {
if (bankszamlaszam === undefined) {
return '';
}
return $.ajax({
type: 'POST',
global: false,
dataType: 'html',
url: url,
data: { bankszamlaszam: bankszamlaszam },
success: function (data) {
tmp = data;
},
error: function (xhr, textStatus, errorThrown) {
tmp = '';
}
});
};
commonUtils.dateFormat = 'YYYY-MM-DD';
commonUtils.dateTimeFormat = 'YYYY-MM-DD HH:mm';
commonUtils.getUtcTimeFromDateAndTime = function (date, time) {
var datum;
if (CommonUtils.isNullOrUndefined(date)) {
datum = moment(new Date()).format(commonUtils.dateFormat);
} else {
var parameterDateFormat =
date.indexOf('-') > -1 ? commonUtils.dateFormat : 'YYYY. MM. DD.';
datum = moment(date, parameterDateFormat).format(commonUtils.dateFormat);
}
var splittedTime = '';
if (time.length <= 5) {
splittedTime = time.substr(time.length - 5);
} else {
splittedTime = moment(time, 'HH:mm:ss').format('LT'); // LT -> AM/PM szerepel a time-nál
}
var idopont = moment(datum + splittedTime, commonUtils.dateTimeFormat);
var utcIdopont = moment(idopont).utc().format(commonUtils.dateTimeFormat);
var utcTime = moment(utcIdopont).format('HH:mm');
return utcTime;
};
commonUtils.SetUtcDateTimeFromDatetime = function (dateTime) {
return (
moment(dateTime).format('YYYY-MM-DD') +
' ' +
commonUtils.getUtcTimeFromDateAndTime(
moment(dateTime).format('YYYY-MM-DD'),
moment(dateTime).format('HH:mm:ss')
)
);
};
commonUtils.EscapeControlCharacters = function (jsonString) {
return (
jsonString
.replace(/\n/g, '\\n') // line feed
.replace(/\r/g, '\\r') // carriage return
.replace(/\t/g, '\\t') // horizontal tab
//.replace(/\b/g, "\\b") // backspace
.replace(/\v/g, '\\v') // vertical tab
//.replace(/\a/g, "\\a") // bell
.replace(/\f/g, '\\f')
); // form feed
};
commonUtils.JSONparse = function (json) {
if (json.substring(1, 2) === '\r' || json.substring(1, 2) === '\n') {
return JSON.parse(json);
}
return JSON.parse(CommonUtils.EscapeControlCharacters(json));
};
//Required if mezők UI oldali ellenőrzése
//params: expression: bool, fieldId:string, errorMessage:string -> (pl.: '@Html.Raw(TanuloResource.TanterviJellemzoMegadasaKotelezo.Replace(Environment.NewLine, ""))' )
commonUtils.UpdateRequiredProperies = function (expression, fieldId, errorMessage) {
if (expression) {
$(fieldId).rules("add", "required");
$(fieldId).attr("data-rule-required", "true");
$(fieldId).attr("data-msg-required", errorMessage);
$(fieldId).attr("aria-required", "true");
}
else {
$(fieldId).rules("remove", "required");
$(fieldId).attr("data-rule-required", "false");
$(fieldId).attr("aria-required", "false");
}
}
commonUtils.ConvertToDateWithPointsFormat = function (dateWithPoints) {
if (dateWithPoints.includes('.')) {
splitarray = dateWithPoints.split(".");
return splitarray[0] + "-" + splitarray[1] + "-" + splitarray[2];
}
return dateWithPoints;
}
return commonUtils;
})();