Thanks. I was able to work one out on my own.
def customChartTagsDropped(self, paths):
#headers - for reference
#headers = [ 'NAME', 'TAG_PATH', 'AGGREGATION_MODE', 'AXIS', 'SUBPLOT',
# 'ENABLED', 'COLOR', 'DASH_PATTERN', 'RENDER_STYLE', 'LINE_WEIGHT',
# 'SHAPE', 'FILL_SHAPE', 'LABELS', 'GROUP_NAME', 'DIGITAL',
# 'OVERRIDE_AUTOCOLOR', 'HIDDEN', 'USER_SELECTABLE', 'SORT_ORDER', 'USER_REMOVABLE'
# ]
#default row - configure as desired for default trend appearance
defaultRow = [ 'Name', '[Provider]Path', 'MinMax', 'Default Axis', 1,
True, 'color(255,0,0,255)', '', 0, 1,
0, True, False, '', False,
False, False, True, '', True
]
#initialize empty tagPaths list
tagPaths = []
tagNamePaths = []
#for each path in the list of dropped tags
for path in paths:
#each tag provider is formatted as "area_xx" find the first occurance of the tag provider name
pathStartIndex = path.find("area_")
#check for tag in the default provider if the "area" provider is not found
if pathStartIndex == -1:
pathStartIndex = path.find("default")
#make sure provider was found
if pathStartIndex != -1:
#get the tag path from the proivder to the end and format to read the custom PenName property from the tag
tagPath = "["+path[pathStartIndex:]+'.PenName'
tagNamePath = "["+path[pathStartIndex:]+'.Name'
#add the tagPath to the list
tagPaths.append(tagPath)
tagNamePaths.append(tagNamePath)
#tag provider not found, append empty string to keep accurate parallel lists
else:
tagPaths.append('')
penNames = system.tag.readBlocking(tagPaths)
tagNames = system.tag.readBlocking(tagNamePaths)
#for each pen name in the list of read pen names
for count, penName in enumerate(penNames):
#skip any tags where the provider was not found
if tagPaths[count] != '':
#create default row
newRow = defaultRow
#if PenName custom prop does not exist or is empty
if penName.quality.isBad() or penName.value is None or str(penName.value) == '':
#assign tag name row name
newRow[0] = tagNames[count].value
#good PenName found
else:
#assign PenName to row name
newRow[0] = str(penName.value)
#assign history path to row path
newRow[1] = paths[count]
#update tagPens with the new row
self.tagPens = system.dataset.addRow(self.tagPens, self.tagPens.rowCount, newRow)
This script relies on the trended tag to have a custom PenName
property that is used for the name. If it doesn't exist or is blank the tag name is used instead.
One way to improve this would be to create the PenName
prop if it doesn't exist and prompt the user to fill it in, but most/all of the trended tags are part of a UDT so that could get hairy.