Skip to content

Instantly share code, notes, and snippets.

@djleonskennedy
Last active April 27, 2017 20:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save djleonskennedy/6034a9127acbbbd58e9be23800b521e8 to your computer and use it in GitHub Desktop.
Save djleonskennedy/6034a9127acbbbd58e9be23800b521e8 to your computer and use it in GitHub Desktop.
example how to render SharePoint List to App, es5
requirejs.config({
paths: {
ramda: '../Scripts/vendor/ramda.min',
jquery: '../Scripts/vendor/jquery-1.12.4.min',
}
});
require(['ramda', 'jquery'], function (R, $) {
$.ajaxSetup({
headers: {
'Accept': 'application/json; odata=verbose',
'Content-Type': 'application/json; odata=verbose'
}
});
// listFields :: a -> b
var listFields = function (url) {
return url + '/items?$select=Id,Title,URL&$expand=&$skiptoken=';
}
// side effects
var Impure = {
getList: R.curry(function (callback, url) {
return $.get(url, function (data, status) {
callback({ data: data, status: status });
});
}),
setHtml: R.curry(function (sel, html) {
return $(sel).html(html)
}),
listUrl: function (name) {
return window['_spPageContextInfo'].webAbsoluteUrl + "/_api/web/lists/getByTitle('" + name + "')";
}
};
// ul :: string -> jqueryDOM
var ul = function (content) {
return $('<ul>' + content + '</ul>');
};
// li :: string -> string
var li = function (url) {
return '<li><a target="_blank" href=' + url.Url + '>' + url.Description + '</a></li>';
};
// safePath :: a[] -> b
var safePath = function (path) {
return path != null ? path : [];
};
// url :: string -> string
var url = R.compose(listFields, Impure.listUrl)
// extractLinks :: a -> b[]
var extractLinks = R.compose(R.map(R.prop('URL')), safePath, R.path(['data', 'd', 'results']));
// renderLinks :: a[] -> ~ html
var renderLinks = R.compose(Impure.setHtml('#want-to-app .content'), ul, R.join(''), R.map(li), extractLinks)
// app :: string -> (a -> b)
var app = R.compose(Impure.getList(renderLinks), url);
// start app with list name
app("wantToList");
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment