// from config.js /* global urlVersions */ var urlFileUpload = "https://localhost:8443/api/1.0/papers/uploadTmpFile"; /* exported MessageTypesEnum */ var MessageTypesEnum = { INFO: "info", SUCCESS: "success", WARNING: "warning", DANGER: "danger" }; Object.freeze(MessageTypesEnum); function isEmpty(value) { if (typeof value === "function") { return false; } return (value == null || value.length === 0); } /* exported showFeedbackMessage */ function showFeedbackMessage(message, type) { var drawMessage = function (message, type) { var li = $( "
  • " + "" + message + "" + "
  • " ); li.click(function () { $(this).remove(); }); messageDiv.append(li); }; var liveTimeMs = 15000; var messageDiv = $("#messages"); if (isEmpty(message)) { messageDiv.html(""); return; } drawMessage(message, (isEmpty(type) || isEmpty(MessageTypesEnum[type.toUpperCase()]) ? MessageTypesEnum.INFO : type)); setTimeout(function () { messageDiv.find("li").first().remove(); }, liveTimeMs); } /* exported errorHandler */ function errorHandler(response, callBack, errorCallBack) { if (isEmpty(response)) { showFeedbackMessage("Empty response", MessageTypesEnum.DANGER); return; } if (!isEmpty(response.error)) { // TODO: add l10n // showFeedbackMessage(response.error.code + ": " + response.error.message, MessageTypesEnum.DANGER); if (!isEmpty(errorCallBack)) { errorCallBack(response.data); } throw response.error.code + ": " + response.error.message + " / Details: " + response.error.data; } if (!isEmpty(callBack)) { if (isLoginPageResponse(response)) { window.location.href = "/"; } else { callBack(response.data); } } } function isLoginPageResponse(response) { return (typeof response) === 'string' && response.indexOf("") >= 0; } /* exported getFromRest */ function getFromRest(url, callBack, errorCallBack) { $.ajax({ url: url, cache: false, success: function (response) { errorHandler(response, callBack, errorCallBack); } }); } /* exported getFromRestWithVersion */ function getFromRestWithVersion(url, callBack, errorCallBack) { getFromRestWithVersionAndParams(url, "", callBack, errorCallBack); } /* exported getFromRestWithVersionAndParams */ function getFromRestWithVersionAndParams(url, params, callBack, errorCallBack) { getCurrentVersion(function (version) { $.ajax({ url: url + "?versionId=" + version + params, cache: false, success: function (response) { errorHandler(response, callBack, errorCallBack); } }); }); } /* exported postToRest */ function postToRest(url, postData, callBack, completeCallback, errorCallBack) { $.ajax({ url: url, cache: false, dataType: "json", data: postData, contentType: "application/json; charset=utf-8", processData: false, method: "POST", success: function (response) { errorHandler(response, callBack, errorCallBack); }, complete: function () { if (isEmpty(completeCallback)) { return; } completeCallback(); } }); } /* exported postToRestWithVersion */ function postToRestWithVersion(url, postData, callBack, errorCallBack) { postToRestWithVersionAndParams(url, postData, "", callBack, errorCallBack); } /* exported postToRestWithVersionAndParams */ function postToRestWithVersionAndParams(url, postData, params, callBack, errorCallBack) { getCurrentVersion(function (version) { $.ajax({ url: url + "?versionId=" + version + params, cache: false, dataType: "json", data: postData, contentType: "application/json; charset=utf-8", processData: false, method: "POST", success: function (response) { errorHandler(response, callBack, errorCallBack); } }); }); } /* exported putToRestWithVersion */ function putToRestWithVersion(url, putData, callBack, errorCallBack) { putToRestWithVersionAndParams(url, putData, "", callBack, errorCallBack); } /* exported putToRestWithVersionAndParams */ function putToRestWithVersionAndParams(url, putData, params, callBack, errorCallBack) { getCurrentVersion(function (version) { $.ajax({ url: url + "?versionId=" + version + params, cache: false, dataType: "json", data: putData, contentType: "application/json; charset=utf-8", processData: false, method: "PUT", success: function (response) { errorHandler(response, callBack, errorCallBack); } }); }); } /* exported deleteFromRest */ function deleteFromRest(url, callBack, completeCallback, errorCallBack) { $.ajax({ url: url, cache: false, method: "DELETE", success: function (response) { errorHandler(response, callBack, errorCallBack); }, complete: function () { if (isEmpty(completeCallback)) { return; } completeCallback(); } }); } /* exported getCurrentVersion */ function getCurrentVersion(callBack, errorCallBack) { var version = localStorage.getItem("currentVersion"); if (($("#select-versions")[0].options.length > 0) && ($("#select-versions option[value='" + version + "']").length === 0)) { localStorage.removeItem("currentVersion"); version = ""; } if (isEmpty(version)) { getFromRest(urlVersions, function (versions) { if (isEmpty(versions) || versions.count === 0) { return; } var currentVersion = versions.items[0]; localStorage.setItem("currentVersion", currentVersion.id); callBack(currentVersion.id); }, errorCallBack); } else { callBack(version); } } /* exported fillSelect */ function fillSelect(selectElement, values) { $(selectElement).html(""); $.each(values, function (key, value) { $(selectElement).append( "" ); }); } /* exported isUrlVarExists */ function isUrlVarExists(key) { var URL = window.location.href; if (URL.indexOf("?" + key + "=") !== -1) { return true; } else if (URL.indexOf("&" + key + "=") !== -1) { return true; } else if (URL.indexOf("?" + key + "&") !== -1) { return true; } else if (URL.indexOf("&" + key + "&") !== -1) { return true; } else if (URL.endsWith("?" + key)) { return true; } else if (URL.endsWith("&" + key)) { return true; } return false; } /* exported getUrlVar */ function getUrlVar(key) { var result = new RegExp(key + "=([^&]*)", "i").exec(window.location.search); return result && decodeURIComponent(result[1]) || ""; }