Team,
When I attempt to use the search box in a list web part I get the error, "TypeError: Unable to get property 'split' of undefined or null reference"
Setup:
On a Sharepoint 2016 page, I have the following...
1 - List web part #1 is a list of teams. Column A = "Team Name", Column B = "Aliases" (other references that team can be known by).
2 - Display search box is checked for list web part #1 (Edit Web Part / Miscellaneous)
3 - List web part #2 is an on-call roster - showing which team member is rostered on right now.
4 - I have a script editor web part (see below) which performs two filters on the on-call list (#2), (a) filter by time of day and (b) highlight people flagged unavailable.
Symptoms:
i - When the script editor web part (4) is added to the page and I attempt to use the search box (2) on the team list (#1) to search for an alias, I get the error mentioned above.
ii - If I delete the script editor web part and use the search box, search works as expected.
iii - If I move the script below to ~sitecollection/SiteAssets/Scripts/sharepoint-filterdatetime-checkavailable.js and use the same URL noted here in the JS Link field in the on-call web part (#2), the search box works, but the script does not work (maybe a rendering sequence, URL issue, who knows?, I don't)
Any thoughts on this greatly appreciated.
Regards Michael
<script type="text/javascript">
//On-call Roster Filter
//JS Link URL "~sitecollection/SiteAssets/Scripts/sharepoint-filterdatetime-checkavailable.js"
SP.SOD.executeFunc("clienttemplates.js", "SPClientTemplates", function() {
SPClientTemplates.TemplateManager.RegisterTemplateOverrides({
OnPostRender: function(ctx) {
var rows = ctx.ListData.Row;
for (var i=0;i<rows.length;i++)
{
// get today's date
var today = new Date();
// get the Start Date and Time
var startDateTime = rows[i]["StartDateTime"]; //static name "StartDateTime" Format: 31/03/2018 7:00 AM
var startDateTimeParts = startDateTime.split(" ");
var startDate = (startDateTimeParts[0]); // date
var startTime = (startDateTimeParts[1]); // time
var startAMPM = (startDateTimeParts[2]); // time
// Split startDate
var startDateParts = startDate.split("/");
var startDateYear = (startDateParts[2]); // Year
var startDateMonth = (startDateParts[1]); // Month
var startDateDay = (startDateParts[0]); // Day
// Split startTime
var startTimeParts = startTime.split(":");
if (startAMPM == "AM") {
var startTimeHour = (startTimeParts[0]); // Hour
} else {
var startTimeHour = +(startTimeParts[0]) + 12; // Add 12 to the hour figure if PM
}
var startTimeMinutes = (startTimeParts[1]); // Minute
var startTimeSeconds = (startTimeParts[2]); // Seconds
var startDateTimeValue = new Date(startDateYear,startDateMonth-1,startDateDay,startTimeHour,startTimeMinutes,0,0);
// get the End Date and Time
var endDateTime = rows[i]["EndDateTime"]; //static name "EndDateTime" Format: 31/03/2018 7:00 AM
var endDateTimeParts = endDateTime.split(" ");
var endDate = (endDateTimeParts[0]); // date
var endTime = (endDateTimeParts[1]); // time
var endAMPM = (endDateTimeParts[2]); // time
// Split endDate
var endDateParts = endDate.split("/");
var endDateYear = (endDateParts[2]); // Year
var endDateMonth = (endDateParts[1]); // Month
var endDateDay = (endDateParts[0]); // Day
// Split endTime
var endTimeParts = endTime.split(":");
if (endAMPM == "AM") {
var endTimeHour = (endTimeParts[0]); // Hour
} else {
var endTimeHour = +(endTimeParts[0]) + 12; // Add 12 to the hour figure if PM
}
var endTimeMinutes = (endTimeParts[1]); // Minute
var endTimeSeconds = (endTimeParts[2]); // Seconds
var endDateTimeValue = new Date(endDateYear,endDateMonth-1,endDateDay,endTimeHour,endTimeMinutes,0,0);
var rowId = GenerateIIDForListItem(ctx, rows[i]);
var row = document.getElementById(rowId);
var availableStatus = rows[i]["Available"]; // get Available status
if (startDateTimeValue <= today && endDateTimeValue >= today) {
if(availableStatus == "No"){
row.style.backgroundColor = '#ff5f5c'; //highlight row red if availability = no
}
} else {
row.style.display = 'none'; // hide row
}
}
}
});
});
</script>