Maybe something like this:
def longProcess(rootContainer = event.source.parent):
SelectedReport = system.tag.read("[default]Common/Dynamic Report/Selected_Report").value
plantname = system.tag.read("[client]Plant_Name").value
Header_kWh = system.tag.read("[default]Common/Dynamic Report/Report_header_m2_MeterConsumption").value
Header_kWhTON = system.tag.read("[default]Common/Dynamic Report/Report_header_kWhTON_MeterConsumption").value
plant = plantname.replace(" Line", "")
params = {"plantname":plantname}
Database = system.db.runNamedQuery(project = "Metriks_Dev", path = "EMS/EM_DynamicReport_DB_Select", parameters = params)
Database = Database.getValueAt(0,0)
Unit = event.source.parent.getComponent('Dropdown_Unit').selectedStringValue
if SelectedReport == "Meter Consumption Report" and plantname!= "Robertsbridge Line":
first = event.source.parent.getComponent('Popup Calendar_StartDate').date
second = event.source.parent.getComponent('Popup Calendar_EndDate').date
start = event.source.parent.getComponent('Popup Calendar_StartDate').date
event.source.parent.parent.StartDate = start
end = event.source.parent.getComponent('Popup Calendar_EndDate').date
event.source.parent.parent.EndDate = end
endTime = second
startTime = first
ReportDS = system.tag.read('[default]Common/Dynamic Report/Report_header_name').value
ReportDS = system.dataset.clearDataset(ReportDS)
if Unit == 'kWh':
TagUnit = 'Total_Consumption_kWh'
path = "EMS/EM_DynamicReport_kwhm2_MeterConsumption"
system.tag.write('[default]Common/Dynamic Report/Report_header_MeterConsumption',Header_kWh)
if Unit == 'kWh/T':
TagUnit = 'Total_Consumption_kWh_TON'
path = "EMS/EM_DynamicReport_kwhTON_MeterConsumption"
system.tag.write('[default]Common/Dynamic Report/Report_header_MeterConsumption',Header_kWhTON)
Site_Electric = '[MQTT Engine]Edge Nodes/'+plant+'/Energy/Reports/Static Reports/Electric/Total_Consumption/'+TagUnit+''
params = {"database":Database, "tagpath": Site_Electric, "startDate":startTime,"endDate":endTime}
print '...site electric.....'
print params
dataSet = system.db.runNamedQuery(project = "Metriks_Dev", path = path, parameters = params)
delta = dataSet.getValueAt(0, 0)
print delta
newRow = ["Site_Electric","-","-","-",delta]
ReportDS = system.dataset.addRow(ReportDS, newRow)
Path = '[MQTT Engine]Edge Nodes/'+plant+'/Energy/Reports/Static Reports/Electric/'
results = system.tag.browse(Path, {"tagType":"Folder","recursive":False}).results
for result in results:
if result.get("name"):
Workshops = str(result['name'])
Path = '[MQTT Engine]Edge Nodes/'+plant+'/Energy/Reports/Static Reports/Electric/'+Workshops+'/Total_Consumption/'+TagUnit+''
params = {"database":Database, "tagpath": Path, "startDate":startTime,"endDate":endTime}
dataSet = system.db.runNamedQuery(project = "Metriks_Dev", path = path, parameters = params)
delta = dataSet.getValueAt(0, 0)
newRow = [Workshops,"-","-","-",delta]
ReportDS = system.dataset.addRow(ReportDS, newRow)
Path = Path = '[MQTT Engine]Edge Nodes/'+plant+'/Energy/Reports/Static Reports/Electric/'+Workshops+'/'
Workshop = system.tag.browse(Path, {"tagType":"Folder","recursive":False}).results
for result in Workshop:
Areas = str(result['name'])
Path = '[MQTT Engine]Edge Nodes/'+plant+'/Energy/Reports/Static Reports/Electric/'+Workshops+'/'+Areas+'/Total_Consumption/'+TagUnit+''
params = {"database":Database, "tagpath": Path, "startDate":startTime,"endDate":endTime}
dataSet = system.db.runNamedQuery(project = "Metriks_Dev", path = path, parameters = params)
delta = dataSet.getValueAt(0, 0)
newRow = ["-",Areas,"-","-",delta]
ReportDS = system.dataset.addRow(ReportDS, newRow)
Path = '[MQTT Engine]Edge Nodes/'+plant+'/Energy/Reports/Static Reports/Electric/'+Workshops+'/'+Areas+'/'
Area = system.tag.browse(Path, {"tagType":"Folder","recursive":False}).results
for result in Area:
ProcessSteps = str(result['name'])
Path = '[MQTT Engine]Edge Nodes/'+plant+'/Energy/Reports/Static Reports/Electric/'+Workshops+'/'+Areas+'/'+ProcessSteps+'/Total_Consumption/'+TagUnit+''
params = {"database":Database, "tagpath": Path, "startDate":startTime,"endDate":endTime}
dataSet = system.db.runNamedQuery(project = "Metriks_Dev", path = path, parameters = params)
delta = dataSet.getValueAt(0, 0)
newRow = ["-","-",ProcessSteps,"-",delta]
ReportDS = system.dataset.addRow(ReportDS, newRow)
Path = '[MQTT Engine]Edge Nodes/'+plant+'/Energy/Reports/Static Reports/Electric/'+Workshops+'/'+Areas+'/'+ProcessSteps+'/'
PS = system.tag.browse(Path, {"tagType":"Folder","recursive":False}).results
for result in PS:
Equipments = str(result['name'])
Path = '[MQTT Engine]Edge Nodes/'+plant+'/Energy/Reports/Static Reports/Electric/'+Workshops+'/'+Areas+'/'+ProcessSteps+'/'+Equipments+'/Total_Consumption/'+TagUnit+''
params = {"database":Database, "tagpath": Path, "startDate":startTime,"endDate":endTime}
dataSet = system.db.runNamedQuery(project = "Metriks_Dev", path = path, parameters = params)
delta = dataSet.getValueAt(0, 0)
newRow = ["-","-","-",Equipments,delta]
ReportDS = system.dataset.addRow(ReportDS, newRow)
progress = ??????????????
#Here is progress send back to the template custom property
#progress must be calculated somewhere before this call
def sendBack(progress = progress, rootContainer = rootContainer):
rootContainer.progressValue = progress
# Now we'll send our results back to the UI.
system.util.invokeLater(sendBack)
system.tag.write('[default]Common/Dynamic Report/Report_header_name',ReportDS)
window = system.gui.getParentWindow(event)
window.getComponentForPath("Root Container.Report Viewer").reportPath = ''
window.getComponentForPath("Root Container.Report Viewer").reportPath = 'Meter Consumption Report'
system.util.invokeAsynchronous(longProcess) #Note that this is 'longProcess' instead of 'longProcess()'
But you must find the place where and how to calculate the progress and what it will represent…