From 6dbfcd76b909c26bcfa9505ded1454cd92c82b3c Mon Sep 17 00:00:00 2001 From: mfacchinelli Date: Fri, 12 Jan 2024 10:53:25 +0000 Subject: [PATCH] Customize display of "mag.Instrument" class --- resources/ReleaseNotes.md | 1 + src/data/+mag/Instrument.m | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/resources/ReleaseNotes.md b/resources/ReleaseNotes.md index c9415db7..f81a776f 100644 --- a/resources/ReleaseNotes.md +++ b/resources/ReleaseNotes.md @@ -1,2 +1,3 @@ +- Customize display of "mag.Instrument" class - Move PNG export before FIG save - Fix multiple small issues with HK view \ No newline at end of file diff --git a/src/data/+mag/Instrument.m b/src/data/+mag/Instrument.m index 1a94c437..e347abef 100644 --- a/src/data/+mag/Instrument.m +++ b/src/data/+mag/Instrument.m @@ -1,4 +1,4 @@ -classdef (Sealed) Instrument < handle & matlab.mixin.Copyable & mag.mixin.SetGet +classdef (Sealed) Instrument < handle & matlab.mixin.Copyable & matlab.mixin.CustomDisplay & mag.mixin.SetGet % INSTRUMENT Class containing MAG instrument data. properties @@ -223,5 +223,38 @@ function downsample(this, targetFrequency) copiedThis.Secondary = copy(this.Secondary); copiedThis.HK = copy(this.HK); end + + function header = getHeader(this) + + if isscalar(this) + + if this.HasScience && this.HasMetaData && ... + ~isempty(this.Primary.MetaData) && ~ismissing(this.Primary.MetaData.DataFrequency) && ~isequal(this.Primary.MetaData.Mode, "Hybrid") && ... + ~isempty(this.Secondary.MetaData) && ~ismissing(this.Secondary.MetaData.DataFrequency) && ~isequal(this.Secondary.MetaData.Mode, "Hybrid") + + tag = char(compose(" in %s (%d, %d)", this.Primary.MetaData.Mode, this.Primary.MetaData.DataFrequency, this.Secondary.MetaData.DataFrequency)); + else + tag = char.empty(); + end + + className = matlab.mixin.CustomDisplay.getClassNameForHeader(this); + header = [' ', className, tag, ' with properties:']; + else + header = getHeader@matlab.mixin.CustomDisplay(this); + end + end + + function groups = getPropertyGroups(this) + + if isscalar(this) + + propertyList = ["HasData", "HasMetaData", "HasScience", "HasHK", "TimeRange", ... + "Primary", "Secondary", ... + "MetaData", "Events", "HK"]; + groups = matlab.mixin.util.PropertyGroup(propertyList, ""); + else + groups = getPropertyGroups@matlab.mixin.CustomDisplay(this); + end + end end end