From bebb0b3831862450f35333100159521e0414a9e1 Mon Sep 17 00:00:00 2001
From: Michael Innerberger <michael.innerberger@asc.tuwien.ac.at>
Date: Wed, 9 Aug 2023 16:02:59 -0400
Subject: [PATCH] Add custom display for LevelData

---
 lib/storage/@LevelData/LevelData.m         |  7 ++++++-
 lib/storage/@LevelData/getPropertyGroups.m | 24 ++++++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)
 create mode 100644 lib/storage/@LevelData/getPropertyGroups.m

diff --git a/lib/storage/@LevelData/LevelData.m b/lib/storage/@LevelData/LevelData.m
index 28d0b9a..662bf4b 100644
--- a/lib/storage/@LevelData/LevelData.m
+++ b/lib/storage/@LevelData/LevelData.m
@@ -1,4 +1,4 @@
-classdef LevelData < handle
+classdef LevelData < handle & matlab.mixin.CustomDisplay
 %%LEVELDATA class representing results from level-oriented computations
 
 % Copyright 2023 Philipp Bringmann
@@ -254,6 +254,11 @@ classdef LevelData < handle
         plotTriangulationToFile(obj, jLevel)
     end
 
+    methods (Access=protected)
+        %% CUSTOM DISPLAY
+        propgrp = getPropertyGroups(obj)
+    end
+
     %% AUXILIARY FUNCTIONS
     methods (Access = private)
         function idx = getIndex(obj, variableName)
diff --git a/lib/storage/@LevelData/getPropertyGroups.m b/lib/storage/@LevelData/getPropertyGroups.m
new file mode 100644
index 0000000..3063a08
--- /dev/null
+++ b/lib/storage/@LevelData/getPropertyGroups.m
@@ -0,0 +1,24 @@
+function propgrp = getPropertyGroups(obj)
+    if ~isscalar(obj)
+        propgrp = getPropertyGroups@matlab.mixin.CustomDisplay(obj);
+    else
+        % some rudimentary statistics about variable counts
+        statList = ["nLevel", "nVariable", "nScalarVariable", "nAbsoluteVariable", "nTimeVariable"];
+        statTitle = "Variable Counts";
+        statGrp = matlab.mixin.util.PropertyGroup(statList, statTitle);
+
+        % metadata as a struct
+        metaDataList = struct();
+        for k = obj.metaData.keys'
+            metaDataList.(k{1}) = obj.metaData(k{1});
+        end
+        metaDataTitle = "Metadata";
+        metaDataGrp = matlab.mixin.util.PropertyGroup(metaDataList, metaDataTitle);
+
+        % storage related properties
+        storeList = ["root", "foldername", "filename"];
+        storeTitle = "Storage details";
+        storeGrp = matlab.mixin.util.PropertyGroup(storeList, storeTitle);
+        propgrp = [statGrp, metaDataGrp, storeGrp];
+    end
+end
\ No newline at end of file
-- 
GitLab