This may not the simplest solution but it should work.
<script type="text/javascript"> SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function () { SPClientTemplates.TemplateManager.RegisterTemplateOverrides({ OnPostRender: function (ctx) { var statusColors = { 'My Stuff': 'DarkSeaGreen', 'Blank': '#FF7B61', 'Test': 'LightSteelBlue', 'Hello': 'Plum', 'Boat': 'YellowGreen', 'Mouse': 'DarkGray' }; var rows = ctx.ListData.Row; for (var i = 0; i < rows.length; i++) { var status = rows[i]["Color"]; var rowId = GenerateIIDForListItem(ctx, rows[i]); var row = document.getElementById(rowId); row.style.backgroundColor = statusColors[status]; } } }); }); SP.SOD.executeOrDelayUntilScriptLoaded(CustomJS, 'INIT.js'); function CustomJS() { var _ExpCollGroup = ExpCollGroup; ExpCollGroup = ExpCollGroup = function (groupName, imgName, evt, noAjax) { if (evt != null) g_ExpGroupNeedsState = true; if (document.getElementById("titl" + groupName) == null) return; var viewTable = (document.getElementById("titl" + groupName)).parentNode; if (viewTable == null) return; var ctxNum = groupName.substr(0, groupName.indexOf("-")); var ctxCur = window["ctx" + ctxNum]; if (!Boolean(ctxCur)) return; if (!ctxCur.StateInitDone) ctxInitItemState(ctxCur); if (ctxCur.SelectAllCbx == null) ctxCur.SelectAllCbx = getSelectAllCbxFromTable(viewTable); var tbodyTags = viewTable.getElementsByTagName("TBODY"); var numElts = tbodyTags.length; var len = groupName.length; var img = document.getElementById(imgName); if (img == null) return; var srcPath = img.src; var imgSrc = img.getAttribute('src'); var index = srcPath.lastIndexOf("/"); var commonClusterSrcPath = GetThemedImageUrl("spcommon.png"); var collapseImgClass = fRightToLeft ? "ms-commentcollapsertl-icon" : "ms-commentcollapse-icon"; var collapseSpanClass = fRightToLeft ? "ms-commentcollapsertl-iconouter" : "ms-commentcollapse-iconouter"; var expandImgClass = fRightToLeft ? "ms-commentexpandrtl-icon" : "ms-commentexpand-icon"; var expandSpanClass = fRightToLeft ? "ms-commentexpandrtl-iconouter" : "ms-commentexpand-iconouter"; var oldExpandSrcPath = '/_layouts/15/images/plus.gif'; var oldCollapseSrcPath = '/_layouts/15/images/minus.gif'; var fOpen = false; var displayStr; if (imgSrc == oldExpandSrcPath || imgSrc == commonClusterSrcPath && img.className == expandImgClass || g_ExpInitializing) { fOpen = true; displayStr = ""; if (imgSrc == commonClusterSrcPath) { img.className = collapseImgClass; img.parentNode.className = collapseSpanClass; } else img.src = oldCollapseSrcPath; } else { fOpen = false; displayStr = "none"; if (imgSrc == commonClusterSrcPath) { img.className = expandImgClass; img.parentNode.className = expandSpanClass; } else img.src = oldExpandSrcPath; } var j = 0; for (var i = 0; i < numElts; i++) { var childObj = tbodyTags[i]; if (childObj.id != null && childObj.id.length > len + 4 && groupName == (childObj.id.slice(4)).substr(0, len)) { if (fOpen) { index = childObj.id.indexOf("_", len + 4); if (index != -1) { index = childObj.id.indexOf("_", index + 1); if (index != -1) continue; } } var previousDisplay = childObj.style.display; childObj.style.display = displayStr; var itemCount = 0; if (Boolean(childObj.getAttribute("selectableRows"))) { itemCount = Number(childObj.getAttribute("selectableRows")); //custom logic // currentGroupRows = childObj.rows; //custom logic done } if (typeof FV4UI != "undefined" && FV4UI() && Boolean(itemCount)) { if (!fOpen) { if (previousDisplay != "none") ctxCur.TotalListItems -= itemCount; EnsureScriptParams("core.js", "DeselectCollapsedGroup", ctxCur, childObj); EnsureScriptParams("core.js", "UpdateSelectAllCbx", ctxCur, true); } else { ctxCur.TotalListItems += itemCount; EnsureScriptParams("core.js", "UpdateSelectAllCbx", ctxCur, false); } } if (fOpen && childObj.id.substr(0, 4) == "titl") { var imgObj = document.getElementById("img_" + childObj.id.slice(4)); var imgObjSrc = imgObj.getAttribute('src'); if (imgObjSrc == commonClusterSrcPath) { imgObj.className = expandImgClass; imgObj.parentNode.className = expandSpanClass; } else { imgObj.src = oldExpandSrcPath; } } var groupID = "tbod" + groupName; var child; if (childObj.id.substr(0, groupID.length) == groupID) { if (noAjax) { for (j = 0; j < childObj.childNodes.length; j++) { child = childObj.childNodes[j]; child.style.display = displayStr; } } if (childObj.childNodes.length == 0) { var nextTBody = childObj.nextSibling; while (nextTBody != null) { if (nextTBody.tagName == "TBODY" && nextTBody.id == "") { for (j = 0; j < nextTBody.childNodes.length; j++) { child = nextTBody.childNodes[j]; child.style.display = displayStr; if (typeof FV4UI != "undefined" && FV4UI()) { HandleSingleGroupByRow(ctxCur, child, fOpen); UpdateSelectAllCbx(ctxCur, true); } } break; } else nextTBody = nextTBody.nextSibling; } } } } } if (FV4UI()) EnsureScriptParams("core.js", "UpdateCtxLastSelectableRow", ctxCur, viewTable); if (!noAjax && !g_ExpGroupParseStage) { if (g_ExpGroupNeedsState && ExpGroupFetchWebPartID(groupName) != null && !Boolean(ctxCur.noGroupCollapse)) { if (fOpen) { AddGroupToCookie(groupName); } else { RemoveGroupFromCookie(groupName); } } if (fOpen) { var tbody = document.getElementById("tbod" + groupName + "_"); if (tbody != null) { var isLoaded = tbody.getAttribute("isLoaded"); if (isLoaded == "false") { ExpGroupFetchData(groupName, evt); } } } } //custom logic setTimeout( function () { //alert('custom logic') var statusColors = { 'My Stuff': 'DarkSeaGreen', 'Blank': '#FF7B61', 'Test': 'LightSteelBlue', 'Hello': 'Plum', 'Boat': 'YellowGreen', 'Mouse': 'DarkGray' }; var rows = ctxCur.ListData.Row; for (var i = 0; i < rows.length; i++) { if (rows[i]["Color"] != undefined) { var status = rows[i]["Color"]; var rowId = GenerateIIDForListItem(ctx, rows[i]); var row = document.getElementById(rowId); row.style.backgroundColor = statusColors[status]; } } }, 500); } } </script>
