+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @if (this.IsBusy)
+ {
+
+ }
+
+ @if (this.matrix == null || this.RowType == null || this.ColumnType == null || this.RelationType == null)
+ {
+
Pick a row Spec Object Type, a column Spec Object Type and a Spec Relation Type to view the matrix.
+ }
+ else if (this.VisibleRows.Count == 0 || this.VisibleColumns.Count == 0)
+ {
+
No SpecObjects match the current selection@(this.ShowOnlyRelated ? " with at least one relation" : "").
+ }
+ else
+ {
+ @if (this.ShowLargeMatrixHint)
+ {
+
+ Rendering @(this.VisibleRows.Count) × @(this.VisibleColumns.Count) cells. Tip: enable
+ Show only related to focus on the cells that actually carry a relation.
+
+ }
+
+ var gridTemplate = $"var(--row-header-width) repeat({this.VisibleColumns.Count}, var(--cell-width))";
+
+
+
+
+
+ @foreach (var column in this.VisibleColumns)
+ {
+ if (this.renderedCells.TryGetValue((row.Identifier, column.Identifier), out var rendered))
+ {
+
+ @if (rendered.TargetUrl != null)
+ {
+
@rendered.Glyph
+ }
+ else
+ {
+
@rendered.Glyph
+ }
+
+ }
+ else
+ {
+
+ }
+ }
+
+
+
+ }
+
+}
diff --git a/reqifviewer/Pages/RelationMatrix/RelationMatrixPage.razor.cs b/reqifviewer/Pages/RelationMatrix/RelationMatrixPage.razor.cs
new file mode 100644
index 0000000..c7632c4
--- /dev/null
+++ b/reqifviewer/Pages/RelationMatrix/RelationMatrixPage.razor.cs
@@ -0,0 +1,530 @@
+// -------------------------------------------------------------------------------------------------
+//