"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var mcv = window.mcv || {}; mcv.forms = mcv.forms || {}; (function (o) { var tokenKey = "__RequestVerificationToken"; var updateToken = function () { var promise = shell.getTokenDeferred(); promise.done(function (newToken) { var token = sessionStorage.getItem(tokenKey); if (!token || newToken !== token) { sessionStorage.setItem(tokenKey, newToken); } }); return promise; }; o.safeAjax = function (ajaxOptions) { var deferredAjax = $.Deferred(); updateToken().done(function (token) { if (!ajaxOptions.headers) { $.extend(ajaxOptions, { headers: { "__RequestVerificationToken": token } }); } else { ajaxOptions.headers["__RequestVerificationToken"] = token; } $.ajax(ajaxOptions) .done(function (data, textStatus, jqXHR) { validateLoginSession(data, textStatus, jqXHR, deferredAjax.resolve); }).fail(deferredAjax.reject); }).fail(function () { deferredAjax.rejectWith(this, arguments); }); return deferredAjax.promise(); }; o.getAjax = function (ajaxOptions) { var options = ajaxOptions || {}; options = __assign(__assign({}, ajaxOptions), { type: 'GET', contentType: "application/json" }); return o.safeAjax(options); }; o.replaceLookupFieldWithAutocomplete = function (lookupName, entityName, errorMessage, dataResolver) { var lookupField = $("#".concat(lookupName)); if (lookupField) { var parentContainer_1 = lookupField.parent(); parentContainer_1.hide(); var lookupNameField_1 = parentContainer_1.find("#".concat(lookupName, "_name")); var lookupEntityNameField_1 = parentContainer_1.find("#".concat(lookupName, "_entityname")); lookupNameField_1.attr('readonly', false); lookupNameField_1.prop('readonly', false); dataResolver().then(function (data) { var fieldSelect = $('").concat(label, "")); $("#".concat(checkboxId)).on('change', function () { var elem = $(this); if (elem.is(":checked")) { yesInput.prop("checked", true); noInput.prop("checked", false); } else { yesInput.prop("checked", false); noInput.prop("checked", true); } }); }; o.AddFieldValidator = function (fieldName, validatorFunc, message, dependentFieldNames) { var validator = document.createElement('span'); var fieldIdSelector = "#".concat(fieldName); var field = $(fieldIdSelector); var fieldParent = field.parent(); var randomIdPart = Math.floor(Math.random() * 1000); validator.style.display = "none"; validator.id = "".concat(fieldName, "-").concat(randomIdPart, "-Validator"); validator.controltovalidate = fieldName; validator.errormessage = "").concat(message, ""); validator.validationGroup = ""; validator.initialvalue = ""; validator.evaluationfunction = validatorFunc; Page_Validators.push(validator); var onChangeFunc = function () { var validationResult = validatorFunc(); if (!validationResult) { fieldParent.removeClass("valid").addClass("has-error invalid"); } else { fieldParent.removeClass("has-error invalid").addClass("valid"); } }; field.change(onChangeFunc); if (dependentFieldNames) { var dependentFields = dependentFieldNames .split(',') .map(function (f) { return $("#".concat(f)); }); dependentFields.forEach(function (df) { return df.change(onChangeFunc); }); } }; o.AddRequiredFieldValidator = function (fieldName, validationFunc) { var filedId = "#".concat(fieldName); if (!validationFunc) { validationFunc = function () { return !!($(filedId).val()); }; } var fieldLabelId = "#".concat(fieldName, "_label"); var message = "".concat($(fieldLabelId).text(), " is a required field."); o.addRequiredClass(fieldName); o.AddFieldValidator(fieldName, validationFunc, message); }; var fieldValidators = {}; var storeFieldValidators = function () { Page_Validators.forEach(function (v, i) { var fieldName = v.controltovalidate; if (fieldName) { if (!fieldValidators[fieldName]) { fieldValidators[fieldName] = []; } fieldValidators[fieldName].push([i, v.evaluationfunction]); } }); }; o.removeValidators = function (fieldName) { var validatorIndexes = fieldValidators[fieldName]; if (validatorIndexes) { validatorIndexes.forEach(function (v) { Page_Validators[v[0]].evaluationfunction = function () { return true; }; }); } }; o.addRemovedValidators = function (fieldName) { var validatorIndexes = fieldValidators[fieldName]; if (validatorIndexes) { validatorIndexes.forEach(function (v) { Page_Validators[v[0]].evaluationfunction = v[1]; }); } }; o.ChangeTheOrderOfBooleanFields = function () { $(".boolean-radio").each(function (pi, pEl) { var container = $(pEl); container.children("label[for$='_1']").prependTo(container); container.children("input[id$='_1']").prependTo(container); }); }; o.hideField = function (fieldName) { var field = $("#".concat(fieldName)); var checkbox = $("#".concat(fieldName, "_checkbox")); field.closest("tr").hide(); field.val(""); $("input[id^=\"".concat(fieldName, "_\"][type=checkbox]")).prop("checked", false); $("input[id^=\"".concat(fieldName, "_\"][type=radio]")).prop("checked", false); o.removeValidators(fieldName); }; o.showField = function (fieldName) { $("#".concat(fieldName)).closest("tr").show(); o.addRemovedValidators(fieldName); }; o.hideTab = function (fieldName) { var tab = $("#".concat(fieldName)).closest('.tab'); tab.hide(); tab.prev('.tab-title').hide(); }; o.showTab = function (fieldName) { var tab = $("#".concat(fieldName)).closest('.tab'); tab.show(); tab.prev('.tab-title').show(); }; o.addRequiredClass = function (fieldName) { $("#".concat(fieldName)).closest("td").find(".info").addClass("required"); }; o.removeRequiredClass = function (fieldName) { $("#".concat(fieldName)).closest("td").find(".info").removeClass("required"); }; o.hideDescription = function (fieldName) { $("#".concat(fieldName)).closest("td").find(".description").hide(); }; o.showDescription = function (fieldName) { $("#".concat(fieldName)).closest("td").find(".description").show(); }; o.AddDays = function (date, days) { var result = new Date(date); result.setDate(result.getDate() + days); return result; }; o.makeFieldsDependentOnBooleanField = function (booleanFieldName, primaryField, otherField, onChangeCallback) { var booleanFieldCheckBoxName = "".concat(booleanFieldName, "_checkbox"); var booleanFieldId = "#".concat(booleanFieldCheckBoxName); var primaryFieldId = "#".concat(primaryField); var primaryFieldContainer = $("#".concat(primaryField)).parent(); var otherFieldId = "#".concat(otherField); var booleanFieldLabel = $("#".concat(booleanFieldName, "_label")).text(); var primaryFieldErrorLabel = $("#".concat(primaryField, "_label")).text(); var otherFieldLabel = $("#".concat(otherField, "_label")).text(); o.ConvertBooleanRadioToCheckbox(booleanFieldName, booleanFieldLabel); o.addRequiredClass(primaryField); o.hideField(booleanFieldName); $(booleanFieldId).closest("div.control").insertAfter(primaryFieldContainer); o.AddFieldValidator(primaryField, function () { return $(booleanFieldId).is(":checked") || !!$(primaryFieldId).val(); }, "".concat(primaryFieldErrorLabel, " is required."), booleanFieldCheckBoxName); o.AddFieldValidator(otherField, function () { return $(booleanFieldId).is(":checked") || !!$(otherFieldId).val(); }, "".concat(otherFieldLabel, " is required."), booleanFieldCheckBoxName); $(booleanFieldId).on('change', function () { var isChecked = $(booleanFieldId).is(":checked"); if (onChangeCallback) { onChangeCallback(isChecked); } if (isChecked) { $(primaryFieldId).attr("readonly", true); $(primaryFieldId).val(""); o.removeRequiredClass(primaryField); o.removeRequiredClass(otherField); o.hideField(otherField); } else { $(primaryFieldId).attr("readonly", false); o.addRequiredClass(primaryField); o.addRequiredClass(otherField); o.showField(otherField); } }); }; var lifeCycleValidation = []; var lifeCycleLoad = []; o.OnValidation = function (validationFunc) { lifeCycleValidation.push(validationFunc); }; o.OnLoad = function (loadFunc) { lifeCycleLoad.push(loadFunc); }; $(function () { lifeCycleValidation.forEach(function (validationFunc) { validationFunc(); }); storeFieldValidators(); window.setTimeout(function () { lifeCycleLoad.forEach(function (loadFunc) { loadFunc(); }); }, 0); }); })(mcv.forms);