I have given an error like this in my report:
WARN: Error invoking script.Traceback (most recent call last):
File "function:updateData", line 62, in updateData
TypeError: list indices must be integers
NOTE: Line 62 is the last line in the code.
Here is my code:
def updateData(data, sample):
currentDate = system.tag.readBlocking(['[System]Gateway/CurrentDateTime'])[0].value
currentYear = data['year']
dateStart = system.date.addYears(system.date.parse(system.date.format(currentDate,currentYear + "-12-22 08:00:00"),'yyyy-MM-dd HH:mm:ss'),-1)
endDate = system.date.addYears(system.date.parse(system.date.format(dateStart,currentYear + "-12-22 08:00:00"),'yyyy-MM-dd HH:mm:ss' ),1)
data = []
data1 = []
dataAlarms = []
header1 = ['Label','Jan','Feb','Mar','Apr','May','June','July','Aug','Sept','Oct','Nov','Dec']
facilities = system.tag.readBlocking('[default]MQTT Facilities/Facilities')[0].value
alarmProperties = ['eventTime',
'label',
'displayPath',
'eventValue',
'name',
'Source']
header = ['EventTime',
'label',
'DisplayPath',
'eventValue',
'State',
'Source']
count = 0
count1 = 0
for month in range(12):
dataBuffer = []
startDateAggre = system.date.addMonths(dateStart, month)
endDateAggre = system.date.addMonths(startDateAggre, 1)
alarmJournal = system.alarm.queryJournal(startDate = startDateAggre, endDate = endDateAggre)
if len(alarmJournal) != 0:
for alarm in alarmJournal:
bufferData = []
for prop in alarmProperties:
propertyAlarm = alarm.get(prop)
bufferData.append(propertyAlarm)
data.append(bufferData)
datasetFinal = system.dataset.toDataSet(header, data)
dataAlarm = system.dataset.filterColumns(datasetFinal, [5])
for row in range(dataAlarm.getRowCount()):
dataLocation = str(dataAlarm.getValueAt(row,0))
splitName = dataLocation.split('/')[1]
splitName1 = splitName.split(':')[1]
data1.append(splitName1)
for location in range(facilities.getRowCount()):
number = count
label1 = facilities.getValueAt(location,0)
x = label1.split('/')
y = str(x[0])
splitName = y.replace('Ground Water Reservoir - 1','GWR1')
dataBuffer.append(y)
count = count + 1
for loc in dataBuffer:
countList = [0,0,0,0,0,0,0,0,0,0,0,0]
count1 += 1
for i in range(len(data1)):
if data1[i] == loc:
countList[month] += 1
dataAlarms.append([y] + countList)
data['alarmFinal'] = system.dataset.toDataSet(header1, dataAlarms)