backups: show a kind's panels only when that asset has data
Every machine was getting a Part Marker Configuration panel, and only two of the 147 known machines are part markers. A kind applies to an asset TYPE, but whether a given asset ever carries that kind of backup is a property of the individual machine, so type alone cannot decide what to show. The generic renderer already handled this: a list panel is visible when it has rows OR declares empty text. Declaring emptytext on both kinds defeated it and forced them to render everywhere. emptytext now defaults to None on the base class, neither bundled kind sets one, and the panel builder OMITS the key rather than emitting null - a present-but-null 'empty' would still have kept the panel on screen. The DNC Info card carried empty text that could never be displayed, since keyvalue visibility is decided purely on field count. Removed rather than left to mislead. A lathe now shows DNC Info and NTLARS history; 0600 and 0614 additionally show Part Marker once something collects for them; a machine with no NTLARS data shows no backup panels at all. The emptytext mechanism stays available for a kind that genuinely wants to say "expected here, nothing yet".
This commit is contained in:
@@ -91,7 +91,7 @@ class BackupsPlugin(BasePlugin):
|
||||
panels = [kind.infopanel() for kind in REGISTRY.values()
|
||||
if kind.infopanel()]
|
||||
for position, kind in enumerate(REGISTRY.values()):
|
||||
panels.append({
|
||||
panel = {
|
||||
'id': 'backups-{}'.format(kind.key),
|
||||
'title': kind.displayname,
|
||||
'assettypes': list(kind.assettypes),
|
||||
@@ -105,7 +105,6 @@ class BackupsPlugin(BasePlugin):
|
||||
{'key': 'shorthash', 'label': 'Hash', 'mono': True},
|
||||
],
|
||||
},
|
||||
'empty': kind.emptytext,
|
||||
# The generic renderer has no per-item actions, and downloading
|
||||
# a .reg needs a per-revision control plus a dialect choice, so
|
||||
# the panel links to the plugin's own history view instead.
|
||||
@@ -115,7 +114,16 @@ class BackupsPlugin(BasePlugin):
|
||||
'emptylabel': 'View history',
|
||||
},
|
||||
'position': 40 + position,
|
||||
})
|
||||
}
|
||||
# OMIT 'empty' entirely unless the kind sets it. The list renderer
|
||||
# shows a panel when it has rows OR declares empty text, so a
|
||||
# present-but-null 'empty' would still render the panel on every
|
||||
# asset of the type. Most machines are not part markers and never
|
||||
# will be, so that panel must disappear rather than announce it has
|
||||
# nothing.
|
||||
if kind.emptytext:
|
||||
panel['empty'] = kind.emptytext
|
||||
panels.append(panel)
|
||||
return panels
|
||||
|
||||
def get_settings_defaults(self) -> List[Dict]:
|
||||
|
||||
Reference in New Issue
Block a user