Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //BELOW CODE SETS ROW COLOR IF USER IS SELECTED IN A "SPmembers" FIELD DIRECTLY OR THROUGH SPGROUP AND COLORS ROWS IF DATE IS LESSER THEN TODAY//
- SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
- OnPostRender: function(ctx) {
- var SPmembers = "int_x002e_lrn_x002e_members" //YOU CAN SET PEOPLE AND GROUPS FIELD HERE
- var SPDate = "int_x002e_lrn_x002e_date" //YOU CAN SET DATE FIELD HERE
- var RowColorUser = "#aaddaa" //YOU CAN SET ROW COLOR FOR USER CRITERIA HERE
- var RowColorDate = "#f2f2f2" //YOU CAN SET ROW COLOR FOR PAST EVENTS HERE
- var today = new Date(); // get today's date
- today.setHours(0,0,0,0); // zero out the time portion so we will only compare days
- var requestUri = _spPageContextInfo.webAbsoluteUrl + '/_api/web/CurrentUser/Groups?$select=Id,Title';
- var requestHeaders = { "accept" : "application/json;odata=verbose" };
- var rows = ctx.ListData.Row;
- var usergroupsids=[];
- var result=null;
- result = $.ajax({url : requestUri,contentType : "application/json;odata=verbose",headers : requestHeaders,global: false,async:false,success : function(data) {return data;}}) //REQUESTS ALL USER GROUPS USING REST API AND STORES ANSWER IN AN OBJECT
- for (var i = 0; i < result.responseJSON.d.results.length; i++){usergroupsids.push(result.responseJSON.d.results[i].Id);} //FORMS AN ARRAY OF GROUP ID'S FROM RESULT OBJECT
- //alert(usergroupsids); //FOR TESTING
- for (var i=0;i<rows.length;i++) //CYCLE TROUGH ALL THE ROWS DISPLAYED
- {
- var itemDate = new Date(ParseDate(rows[i][SPDate])); //GETS DATE FROM A DATE FIELD, AND CONVERT IT TO VARIABLE
- var rowElementId = GenerateIIDForListItem(ctx, rows[i]); //PREPARES ELEMENTS FOR FORMATTING
- var tr = document.getElementById(rowElementId); //PREPARES ELEMENTS FOR FORMATTING
- if (itemDate <= today)
- {
- tr.style.backgroundColor = RowColorDate;
- }
- if (rows[i][SPmembers] != "")
- {
- for (var e=0;e<rows[i][SPmembers].length;e++)
- {
- var isGroup = rows[i][SPmembers][e].jobTitle == null;
- if (isGroup) //IF jobTitle IS NULL, THEN IT'S A GROUP OBJECT, ELSE IT'S A USER OBJECT
- {
- if ((($.inArray(parseFloat(rows[i][SPmembers][e].id), usergroupsids)) != -1) || (rows[i][SPmembers][e].title == "Everyone"))
- {
- tr.style.backgroundColor = RowColorUser;
- }
- //alert('Current User is in a group' + rows[i][SPmembers][e].title) //FOR TESTING
- //alert('Element ' + e + ' ' + rows[i][SPmembers][e].title + ' is a Group') //FOR TESTING
- }
- else
- {
- if ((_spPageContextInfo.userId == rows[i][SPmembers][e].id) || (rows[i][SPmembers][e].title == "Everyone"))
- {
- tr.style.backgroundColor = RowColorUser;
- }
- //alert('Element ' + e + ' ' + rows[i][SPmembers][e].title + ' is a User') //FOR TESTING
- }
- }
- }
- }
- }
- });
- function ParseDate(dateString) {
- //dd.mm.yyyy, or dd.mm.yy
- var dateArr = dateString.split(".");
- if (dateArr.length == 1) {
- return null; //wrong format
- }
- //parse time after the year - separated by space
- var spacePos = dateArr[2].indexOf(" ");
- if(spacePos > 1) {
- var timeString = dateArr[2].substr(spacePos + 1);
- var timeArr = timeString.split(":");
- dateArr[2] = dateArr[2].substr(0, spacePos);
- if (timeArr.length == 2) {
- //minutes only
- return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]));
- } else {
- //including seconds
- return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]), parseInt(timeArr[2]))
- }
- } else {
- //gotcha at months - January is at 0, not 1 as one would expect
- return new Date(parseInt(dateArr[2]), parseInt(dateArr[1] - 1), parseInt(dateArr[0]));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement