I am rebuilding a Report in v8.1.25 (from older v7.9). I am getting a Data Collection Error message when I am on the Design and Preview tabs in the Report designer. Here is the Error:
WARN: Unable to compile script.SyntaxError: mismatched input '\n' expecting INDENT (<function:updateData>, line 1)
I have triple checked the script from the old to the new and cannot locate where this error is generated from. It does work with no errors in the older v7.9. Here is the script:
def updateData(data, sample):
dbConnection = "redacted"
querywait = """
SELECT top 5
(DATEDIFF(mi,timein,filling_start_time)) AS 'WaitTime'
FROM truckdriver
WHERE job_status = 'Completed'
AND Loadout_ID = ?
AND CAST(timein AS DATE) = CAST(? AS DATE)
AND DATEPART(HOUR, timein) >= ?
AND DATEPART(HOUR, timein) <= ?
AND NOT trailer = 9999
ORDER BY WaitTime DESC
"""
queryfill = """
SELECT top 5
(DATEDIFF(mi,filling_start_time,timeout)) AS 'FillingTime'
FROM truckdriver
WHERE job_status = 'Completed'
AND Loadout_ID = ?
AND CAST(timein AS DATE) = CAST(? AS DATE)
AND DATEPART(HOUR, timein) >= ?
AND DATEPART(HOUR, timein) <= ?
AND NOT trailer = 9999
ORDER BY FillingTime DESC
"""
querytotal = """
SELECT top 5
(DATEDIFF(mi,timein,timeout)) AS 'TotalTime'
FROM truckdriver
WHERE job_status = 'Completed'
AND Loadout_ID = ?
AND CAST(timein AS DATE) = CAST(? AS DATE)
AND DATEPART(HOUR, timein) >= ?
AND DATEPART(HOUR, timein) <= ?
AND NOT trailer = 9999
ORDER BY TotalTime DESC
"""
startDate = data["StartDate"]
gravewait3 = system.db.runPrepQuery(querywait,[3, startDate, 0, 7], database = dbConnection)
daywait3 = system.db.runPrepQuery(querywait,[3, startDate, 8, 15], database = dbConnection)
swingwait3 = system.db.runPrepQuery(querywait,[3, startDate, 16, 23], database = dbConnection)
gravefill3 = system.db.runPrepQuery(queryfill,[3, startDate, 0, 7], database = dbConnection)
dayfill3 = system.db.runPrepQuery(queryfill,[3, startDate, 8, 15], database = dbConnection)
swingfill3 = system.db.runPrepQuery(queryfill,[3, startDate, 16, 23], database = dbConnection)
gravetotal3 = system.db.runPrepQuery(querytotal,[3, startDate, 0, 7], database = dbConnection)
daytotal3 = system.db.runPrepQuery(querytotal,[3, startDate, 8, 15], database = dbConnection)
swingtotal3 = system.db.runPrepQuery(querytotal,[3, startDate, 16, 23], database = dbConnection)
gravewait2 = system.db.runPrepQuery(querywait,[2, startDate, 0, 7], database = dbConnection)
daywait2 = system.db.runPrepQuery(querywait,[2, startDate, 8, 15], database = dbConnection)
swingwait2 = system.db.runPrepQuery(querywait,[2, startDate, 16, 23], database = dbConnection)
gravefill2 = system.db.runPrepQuery(queryfill,[2, startDate, 0, 7], database = dbConnection)
dayfill2 = system.db.runPrepQuery(queryfill,[2, startDate, 8, 15], database = dbConnection)
swingfill2 = system.db.runPrepQuery(queryfill,[2, startDate, 16, 23], database = dbConnection)
gravetotal2 = system.db.runPrepQuery(querytotal,[2, startDate, 0, 7], database = dbConnection)
daytotal2 = system.db.runPrepQuery(querytotal,[2, startDate, 8, 15], database = dbConnection)
swingtotal2 = system.db.runPrepQuery(querytotal,[2, startDate, 16, 23], database = dbConnection)
gravewait1 = system.db.runPrepQuery(querywait,[1, startDate, 0, 7], database = dbConnection)
daywait1 = system.db.runPrepQuery(querywait,[1, startDate, 8, 15], database = dbConnection)
swingwait1 = system.db.runPrepQuery(querywait,[1, startDate, 16, 23], database = dbConnection)
gravefill1 = system.db.runPrepQuery(queryfill,[1, startDate, 0, 7], database = dbConnection)
dayfill1 = system.db.runPrepQuery(queryfill,[1, startDate, 8, 15], database = dbConnection)
swingfill1 = system.db.runPrepQuery(queryfill,[1, startDate, 16, 23], database = dbConnection)
gravetotal1 = system.db.runPrepQuery(querytotal,[1, startDate, 0, 7], database = dbConnection)
daytotal1 = system.db.runPrepQuery(querytotal,[1, startDate, 8, 15], database = dbConnection)
swingtotal1 = system.db.runPrepQuery(querytotal,[1, startDate, 16, 23], database = dbConnection)
ds1 = system.dataset.toDataSet([ 'gwait', 'gfill', 'gtotal', 'dwait', 'dfill', 'dtotal', 'fwait', 'ffill', 'ftotal' ],[])
ds2 = system.dataset.toDataSet([ 'gwait', 'gfill', 'gtotal', 'dwait', 'dfill', 'dtotal', 'fwait', 'ffill', 'ftotal' ],[])
if gravewait1 or daywait1 or swingwait1:
newRow = ['', '', '', '', 'Dock 1 Stats', '', '', '', '']
ds1 = system.dataset.addRow(ds1,newRow)
newRow = ['', 'Grave', '', '', 'Day', '', '', 'Swing', '']
ds1 = system.dataset.addRow(ds1,newRow)
newRow = ['Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time']
ds1 = system.dataset.addRow(ds1,newRow)
for i in range(5):
try:
gw = gravewait1[i][0]
gf = gravefill1[i][0]
gt = gravetotal1[i][0]
except:
gw = None
gf = None
gt = None
try:
dw = daywait1[i][0]
df = dayfill1[i][0]
dt = daytotal1[i][0]
except:
dw = None
df = None
dt = None
try:
sw = swingwait1[i][0]
sf = swingfill1[i][0]
st = swingtotal1[i][0]
except:
sw = None
sf = None
st = None
newRow = [gw, gf, gt, dw, df, dt, sw, sf, st ]
ds1 = system.dataset.addRow(ds1,newRow)
# newRow = ['', '', '', '', '', '', '', '', '']
# ds1 = system.dataset.addRow(ds1,newRow)
elif (gravewait2 or daywait2 or swingwait2):
newRow = ['', '', '', '', 'Dock 2 Stats', '', '', '', '']
ds1 = system.dataset.addRow(ds1,newRow)
newRow = ['', 'Grave', '', '', 'Day', '', '', 'Swing', '']
ds1 = system.dataset.addRow(ds1,newRow)
newRow = ['Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time']
ds1 = system.dataset.addRow(ds1,newRow)
for i in range(5):
try:
gw = gravewait2[i][0]
gf = gravefill2[i][0]
gt = gravetotal2[i][0]
except:
gw = None
gf = None
gt = None
try:
dw = daywait2[i][0]
df = dayfill2[i][0]
dt = daytotal2[i][0]
except:
dw = None
df = None
dt = None
try:
sw = swingwait2[i][0]
sf = swingfill2[i][0]
st = swingtotal2[i][0]
except:
sw = None
sf = None
st = None
newRow = [gw, gf, gt, dw, df, dt, sw, sf, st ]
ds1 = system.dataset.addRow(ds1,newRow)
elif (gravewait3 or daywait3 or swingwait3):
newRow = ['', '', '', '', 'Dock 3 Stats', '', '', '', '']
ds1 = system.dataset.addRow(ds1,newRow)
newRow = ['', 'Grave', '', '', 'Day', '', '', 'Swing', '']
ds1 = system.dataset.addRow(ds1,newRow)
newRow = ['Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time']
ds1 = system.dataset.addRow(ds1,newRow)
for i in range(5):
try:
gw = gravewait3[i][0]
gf = gravefill3[i][0]
gt = gravetotal3[i][0]
except:
gw = None
gf = None
gt = None
try:
dw = daywait3[i][0]
df = dayfill3[i][0]
dt = daytotal3[i][0]
except:
dw = None
df = None
dt = None
try:
sw = swingwait3[i][0]
sf = swingfill3[i][0]
st = swingtotal3[i][0]
except:
sw = None
sf = None
st = None
newRow = [gw, gf, gt, dw, df, dt, sw, sf, st ]
ds1 = system.dataset.addRow(ds1,newRow)
if (gravewait1 or daywait1 or swingwait1) and (gravewait2 or daywait2 or swingwait2):
newRow = ['', '', '', '', 'Dock 2 Stats', '', '', '', '']
ds2 = system.dataset.addRow(ds2,newRow)
newRow = ['', 'Grave', '', '', 'Day', '', '', 'Swing', '']
ds2 = system.dataset.addRow(ds2,newRow)
newRow = ['Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time']
ds2 = system.dataset.addRow(ds2,newRow)
for i in range(5):
try:
gw = gravewait2[i][0]
gf = gravefill2[i][0]
gt = gravetotal2[i][0]
except:
gw = None
gf = None
gt = None
try:
dw = daywait2[i][0]
df = dayfill2[i][0]
dt = daytotal2[i][0]
except:
dw = None
df = None
dt = None
try:
sw = swingwait2[i][0]
sf = swingfill2[i][0]
st = swingtotal2[i][0]
except:
sw = None
sf = None
st = None
newRow = [gw, gf, gt, dw, df, dt, sw, sf, st ]
ds2 = system.dataset.addRow(ds2,newRow)
elif (gravewait1 or daywait1 or swingwait1) and (gravewait3 or daywait3 or swingwait3):
newRow = ['', '', '', '', 'Dock 3 Stats', '', '', '', '']
ds2 = system.dataset.addRow(ds2,newRow)
newRow = ['', 'Grave', '', '', 'Day', '', '', 'Swing', '']
ds2 = system.dataset.addRow(ds2,newRow)
newRow = ['Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time']
ds2 = system.dataset.addRow(ds2,newRow)
for i in range(5):
try:
gw = gravewait3[i][0]
gf = gravefill3[i][0]
gt = gravetotal3[i][0]
except:
gw = None
gf = None
gt = None
try:
dw = daywait3[i][0]
df = dayfill3[i][0]
dt = daytotal3[i][0]
except:
dw = None
df = None
dt = None
try:
sw = swingwait3[i][0]
sf = swingfill3[i][0]
st = swingtotal3[i][0]
except:
sw = None
sf = None
st = None
newRow = [gw, gf, gt, dw, df, dt, sw, sf, st ]
ds2 = system.dataset.addRow(ds2,newRow)
elif (gravewait2 or daywait2 or swingwait2) and (gravewait3 or daywait3 or swingwait3):
newRow = ['', '', '', '', 'Dock 3 Stats', '', '', '', '']
ds2 = system.dataset.addRow(ds2,newRow)
newRow = ['', 'Grave', '', '', 'Day', '', '', 'Swing', '']
ds2 = system.dataset.addRow(ds2,newRow)
newRow = ['Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time', 'Max Wait Time', 'Max Fill Time', 'Max Total Time']
ds2 = system.dataset.addRow(ds2,newRow)
for i in range(5):
try:
gw = gravewait3[i][0]
gf = gravefill3[i][0]
gt = gravetotal3[i][0]
except:
gw = None
gf = None
gt = None
try:
dw = daywait3[i][0]
df = dayfill3[i][0]
dt = daytotal3[i][0]
except:
dw = None
df = None
dt = None
try:
sw = swingwait3[i][0]
sf = swingfill3[i][0]
st = swingtotal3[i][0]
except:
sw = None
sf = None
st = None
newRow = [gw, gf, gt, dw, df, dt, sw, sf, st ]
ds2 = system.dataset.addRow(ds2,newRow)
data["top"] = ds1
data["top2"] = ds2
Any extra set of eyes to help me find the source of the error will be appreciated.
I also checked the logs in the Gateway, so here is the log of this particular error.
org.python.core.PySyntaxError: SyntaxError: mismatched input '\n' expecting INDENT (, line 1)
at org.python.core.ParserFacade.fixParseError(ParserFacade.java:95)
at org.python.core.ParserFacade.parse(ParserFacade.java:205)
at org.python.core.Py.compile_flags(Py.java:2252)
at com.inductiveautomation.ignition.common.script.ScriptManager.compileFunction(ScriptManager.java:898)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$TrackingProjectScriptManager.compileFunctionSuper(ProjectScriptLifecycle.java:789)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$AutoRecompilingScriptFunction.getOrCreateDelegate(ProjectScriptLifecycle.java:888)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$AutoRecompilingScriptFunction.(ProjectScriptLifecycle.java:879)
at com.inductiveautomation.ignition.gateway.project.ProjectScriptLifecycle$TrackingProjectScriptManager.compileFunction(ProjectScriptLifecycle.java:774)
at com.inductiveautomation.ignition.common.script.ScriptManager.compileFunction(ScriptManager.java:881)
at com.inductiveautomation.reporting.gateway.data.ScriptReportDataSource.gatherData(ScriptReportDataSource.java:47)
at com.inductiveautomation.reporting.gateway.ReportingGatewayHook.getReportData(ReportingGatewayHook.java:476)
at com.inductiveautomation.reporting.gateway.ReportingGatewayHook$RPC.getReportData(ReportingGatewayHook.java:579)
at jdk.internal.reflect.GeneratedMethodAccessor152.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at com.inductiveautomation.ignition.gateway.servlets.gateway.functions.ModuleInvoke.invoke(ModuleInvoke.java:167)
at com.inductiveautomation.ignition.gateway.servlets.Gateway.doPost(Gateway.java:434)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:523)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
at com.inductiveautomation.ignition.gateway.bootstrap.MapServlet.service(MapServlet.java:86)
at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1410)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)
at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1665)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1383)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1305)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
at com.inductiveautomation.catapult.handlers.RemoteHostNameLookupHandler.handle(RemoteHostNameLookupHandler.java:121)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:301)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
at org.eclipse.jetty.server.Server.handle(Server.java:563)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:416)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:385)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:272)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:140)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:934)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1078)
at java.base/java.lang.Thread.run(Unknown Source)