Advertisement
Journeym

Untitled

Jan 24th, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //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//
  2. SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
  3.   OnPostRender: function(ctx) {
  4.     var SPmembers = "int_x002e_lrn_x002e_members" //YOU CAN SET PEOPLE AND GROUPS FIELD HERE
  5.     var SPDate = "int_x002e_lrn_x002e_date" //YOU CAN SET DATE FIELD HERE
  6.     var RowColorUser = "#aaddaa" //YOU CAN SET ROW COLOR FOR USER CRITERIA HERE
  7.     var RowColorDate = "#f2f2f2" //YOU CAN SET ROW COLOR FOR PAST EVENTS HERE
  8.     var today = new Date(); // get today's date
  9.     today.setHours(0,0,0,0); // zero out the time portion so we will only compare days
  10.     var requestUri = _spPageContextInfo.webAbsoluteUrl + '/_api/web/CurrentUser/Groups?$select=Id,Title';
  11.     var requestHeaders = { "accept" : "application/json;odata=verbose" };
  12.     var rows = ctx.ListData.Row;
  13.     var usergroupsids=[];
  14.     var result=null;
  15.     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
  16.     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
  17.     //alert(usergroupsids); //FOR TESTING
  18.     for (var i=0;i<rows.length;i++) //CYCLE TROUGH ALL THE ROWS DISPLAYED
  19.     {
  20.         var itemDate = new Date(ParseDate(rows[i][SPDate])); //GETS DATE FROM A DATE FIELD, AND CONVERT IT TO VARIABLE
  21.         var rowElementId = GenerateIIDForListItem(ctx, rows[i]); //PREPARES ELEMENTS FOR FORMATTING
  22.         var tr = document.getElementById(rowElementId); //PREPARES ELEMENTS FOR FORMATTING
  23.         if (itemDate <= today)
  24.         {
  25.             tr.style.backgroundColor = RowColorDate;
  26.         }
  27.         if (rows[i][SPmembers] != "")
  28.         {
  29.             for (var e=0;e<rows[i][SPmembers].length;e++)
  30.             {
  31.                 var isGroup = rows[i][SPmembers][e].jobTitle == null;
  32.                 if (isGroup) //IF jobTitle IS NULL, THEN IT'S A GROUP OBJECT, ELSE IT'S A USER OBJECT
  33.                 {
  34.                     if ((($.inArray(parseFloat(rows[i][SPmembers][e].id), usergroupsids)) != -1) || (rows[i][SPmembers][e].title == "Everyone"))
  35.                     {
  36.                         tr.style.backgroundColor = RowColorUser;
  37.                     }
  38.                     //alert('Current User is in a group' + rows[i][SPmembers][e].title) //FOR TESTING
  39.                     //alert('Element ' + e + ' ' + rows[i][SPmembers][e].title + ' is a Group') //FOR TESTING
  40.                 }
  41.                 else
  42.                 {
  43.                     if ((_spPageContextInfo.userId == rows[i][SPmembers][e].id) || (rows[i][SPmembers][e].title == "Everyone"))
  44.                     {
  45.                         tr.style.backgroundColor = RowColorUser;
  46.                     }
  47.                     //alert('Element ' + e + ' ' + rows[i][SPmembers][e].title + ' is a User') //FOR TESTING       
  48.                 }
  49.             }
  50.         }
  51.     }
  52.   }
  53. });
  54. function ParseDate(dateString) {
  55.     //dd.mm.yyyy, or dd.mm.yy
  56.     var dateArr = dateString.split(".");
  57.     if (dateArr.length == 1) {
  58.         return null;    //wrong format
  59.     }
  60.     //parse time after the year - separated by space
  61.     var spacePos = dateArr[2].indexOf(" ");
  62.     if(spacePos > 1) {
  63.         var timeString = dateArr[2].substr(spacePos + 1);
  64.         var timeArr = timeString.split(":");
  65.         dateArr[2] = dateArr[2].substr(0, spacePos);
  66.         if (timeArr.length == 2) {
  67.             //minutes only
  68.             return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]));
  69.         } else {
  70.             //including seconds
  71.             return new Date(parseInt(dateArr[2]), parseInt(dateArr[1]-1), parseInt(dateArr[0]), parseInt(timeArr[0]), parseInt(timeArr[1]), parseInt(timeArr[2]))
  72.         }
  73.     } else {
  74.         //gotcha at months - January is at 0, not 1 as one would expect
  75.         return new Date(parseInt(dateArr[2]), parseInt(dateArr[1] - 1), parseInt(dateArr[0]));
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement