/* ### URL QUERY METHODS ### */ /* Get parameter value from URL */ function getUrlParameter(sParam) { var sPageURL = decodeURIComponent(window.location.search.substring(1)), sURLVariables = sPageURL.split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : sParameterName[1]; } } return ""; }; function hasQuery(queryItemName, queries) { // Remove preceeding questionmark if (queries.indexOf("?") === 0) { var queries = queries.substring(1).split("&"); } else { var queries = queries.split("&"); } if (typeof queries === "object" && queries.toString() !== "") { var queryItems = {}; for (var i = 0; i < queries.length; i++) { var split = queries[i].split('='); queryItems[split[0].trim()] = (typeof split[1] !== "undefined") ? split[1].trim() : ""; } if (queryItemName in queryItems) { return true; } else { return false; } } return false; } function getQueryValue(queryName, queries) { // Remove preceeding questionmark if (queries.indexOf("?") === 0) { var queries = queries.substring(1).split("&"); } else { var queries = queries.split("&"); } var queryItems = {}; for (var i = 0; i < queries.length; i++) { var split = queries[i].split('='); if (typeof split[1] !== "undefined") { queryItems[split[0].trim()] = split[1].trim(); } else { queryItems[queries[i]] = queries[i]; } } if (queryName in queryItems) { return queryItems[queryName]; } else { return ""; } } function updateQueryValue(queryName, queryValue, queries) { var regQueryName = new RegExp("([?&])" + queryName + "=.*?(&|#|$)", "i"); if (queryValue === undefined || queryValue === "") { if (queries.match(regQueryName)) { return removeQuery(queryName, queries); } else { return queries; } } else { if (queries.match(regQueryName)) { return queries.replace(regQueryName, '$1' + queryName + "=" + queryValue + '$2'); } else { var hash = ''; if (queries.indexOf('#') !== -1) { hash = queries.replace(/.*#/, '#'); queries = queries.replace(/#.*/, ''); } var separator = queries.indexOf('?') !== -1 ? "&" : "?"; return queries + separator + queryName + "=" + queryValue + hash; } } } function removeQuery(queryName, queries) { var rtn = queries.split("?")[0], param, params_arr = [], queryString = (queries.indexOf("?") !== -1) ? queries.split("?")[1] : queries; if (queryString !== "") { params_arr = queryString.split("&"); for (var i = params_arr.length - 1; i >= 0; i -= 1) { param = params_arr[i].split("=")[0]; if (param === queryName) { params_arr.splice(i, 1); } } rtn = (queries.indexOf("?") !== -1) ? rtn + "?" + params_arr.join("&") : params_arr.join("&"); } return rtn; } /* ### END URL QUERY METHODS ### */ /* ### VERSION LIST NAVIGATIONS ### */ function versionNavigate(navType, id) { switch(navType) { case "issues": var ajaxURL = "/jira/versionIssues.jsp?version=" + String(id); var currentPath = window.location.pathname + window.location.search; path = updateQueryValue("version", String(id), currentPath); var stateObj = { type: "issues", id: String(id) }; break; case "versions": var ajaxURL = "/jira/versionList.jsp?project=" + String(id); var currentPath = window.location.pathname + window.location.search; var path = removeQuery("version", currentPath); path = updateQueryValue("project", String(id), path); var stateObj = { type: "versions", id: String(id) }; break; } // Get content $.ajax({ type: "POST", url: ajaxURL, data: "" }).done(function(html) { $("#jiraContent").html(html); history.pushState(stateObj, "", path); }).fail(function(resp) { console.log("Error retrieving content. Nothing to show, exiting!"); console.log(resp); }); } /* ### END VERSION LIST NAVIGATIONS ### */