Files:
Example is from a display template context, using sharepoint's _vti_history API.
/**
* Display Template managed properties
**/
var webAbsoluteUrl = _spPageContextInfo.webAbsoluteUrl || "";
var path = ctx.CurrentItem.Path || "";
var fileName = calcFilename(path);
var majorVersion = ctx.CurrentItem.UIVersionStringOWSTEXT || "";
var id = ctx.ClientControl.get_nextUniqueId();
var linkId = id + "link_id";
getMinorVersion(webAbsoluteUrl, path, fileName, function(data){
//console.log("data", data);
// get majorminor version e.g. 1.5
var minorVersion = data.value || "0";
var majorMinorVersion = Math.floor(+majorVersion) + "." + minorVersion;
// get whole version number e.g 1 * 512 = 512
var majorMinorVersionWholeNumber = 0;
var nr = parseInt(majorMinorVersion);
if(!isNaN(nr)) majorMinorVersionWholeNumber = (majorVersion * 512);
// build link to file
var linkToVersionedFile = path;
if(Math.floor(parseInt(majorMinorVersion)) != +majorMinorVersion) linkToVersionedFile = webAbsoluteUrl + "/_vti_history/" + majorMinorVersionWholeNumber + endPath;
document.getElementById(linkId).href = linkToVersionedFile;
//console.log("link-to-file", linkToVersionedFile);
}, function(error){
console.warn("error", error);
});
/**
* Gets minor version of file by it's filename and path
*/
function getMinorVersion(webAbsoluteUrl, path, filename, onSuccess, onFail){
var _webAbsoluteUrl = webAbsoluteUrl || "";
var _path = path || "";
var _filename = filename || "";
var _onSuccess = onSuccess || function(){};
var _onFail = onFail || function(){};
// REGEX: match all start and end occurances of '/' character
var folder = _path.replace(_webAbsoluteUrl, "").replace("/" + filename, "").replace(/(^\/+|\/+$)/g, "");
var url = _webAbsoluteUrl + "/_api/web/getfolderbyserverrelativeurl('"+folder+"')/files('"+filename+"')/minorversion";
httpGet(url, _onSuccess, _onFail);
}
function calcFilename(path){
if(!path) return "";
var segments = path.split("/");
if(!segments[segments.length-1]) return "";
return segments[segments.length-1];
}