Hello All
I was trying to reuse the Historical Playback Control from Ignition Exchange.
It works but I don’t understand all of it . I don’t understand how
if currentTimeString in cache:
can be true.
in this part:
globals = system.util.getGlobals()
if 'playbackCache' not in globals:
globals['playbackCache'] = {}
cache = globals['playbackCache']
if currentTimeString in cache:
#self.custom.debug = "stringInCache"
row = cache[currentTimeString]
foundAll = True
for tag in tags:
if (tag.split("]")[1] if len(tag.split("]"))>1 else tag).replace("/","_").replace(" ","_") not in row:
foundAll = False
if foundAll:
# Cache Hit
info += "Cache hit. "
self.params.values = row
if not 'foundAll' in vars() or foundAll == False:
# Cache Miss
info += "Cache miss. "
#self.custom.debug = foundAll
# Set the length of the cache retrieval:
seconds = 10
# Grab the values from the current second
dataset = system.tag.queryTagHistory([tag for tag in tags], currentTimeDate, system.date.addSeconds(currentTimeDate, seconds), seconds)
pyDataset = system.dataset.toPyDataSet(dataset)
columns = pyDataset.getColumnNames()
# Make sure the cache isn't too big. If it is, dump it.
if len(cache) > 10000:
cache = {}
for row in pyDataset:
values = {}
timeStampString = ""
for i in range(len(columns)):
if columns[i] == "t_stamp":
timeStampString = "T"+system.date.format(row[i], "yyyy-MM-dd HH-mm-ss").replace(" ", "T")
else:
values[columns[i].replace("/","_").replace(" ","_")] = row[i]
cache[timeStampString] = values
self.params.values = cache[currentTimeString]
How does currentTimeString get into cache.
I hope you guys can help me and understand the use of globals in this case.