Browse Source

Fixed some really dumb code in CodePopupEditor to go through DatabaseSchema like all good things should.
Fixed some really dumb code to not wholesale replace property prefixes when they're not actually prefixes.

Kenric Nugteren 1 year ago
parent
commit
2f6e034799

+ 4 - 1
inabox.wpf/DynamicGrid/DynamicEditorGrid.xaml.cs

@@ -174,7 +174,10 @@ namespace InABox.DynamicGrid
             var prefix = string.Format("{0}.", string.Join(".", comps));
             var cols = Columns.Where(x => !x.ColumnName.Equals(column) && x.ColumnName.StartsWith(prefix));
             foreach (var col in cols)
-                columns[col.ColumnName.Replace(prefix, "")] = col.ColumnName;
+            {
+                var subColumn = col.ColumnName[prefix.Length..];
+                columns[subColumn] = col.ColumnName;
+            }
         }
 
         public IFilter? DefineFilter(Type type) => OnDefineFilter?.Invoke(type);

+ 6 - 14
inabox.wpf/DynamicGrid/Editors/CodePopupEditor/CodePopupEditorControl.cs

@@ -301,20 +301,12 @@ namespace InABox.DynamicGrid
                 LookupFactory.FormatLookup(_type, display, new[] { CodeColumn });
         }
 
-        private string GetCodeColumn()
+        private string GetCodeColumn(Type type)
         {
-            var comps = ColumnName.Split('.').ToList();
-            comps.RemoveAt(comps.Count - 1);
-            var prefix = string.Format("{0}.", string.Join(".", comps));
-            var cols = Host.Columns.Where(x => !x.ColumnName.Equals(ColumnName) && x.ColumnName.StartsWith(prefix));
-            foreach (var col in cols)
-            {
-                var editor = Host.GetEditor(col);
-                if (editor is CodeEditor || editor is UniqueCodeEditor)
-                    return col.ColumnName.Split('.').Last();
-            }
-
-            return "";
+            var prop = DatabaseSchema.Properties(type)
+                .Where(x => x.Editor is BaseCodeEditor && !x.HasParentEntityLink())
+                .FirstOrDefault() ?? throw new Exception($"No code property for {type.EntityName()}");
+            return prop.Name;
         }
 
         public override void Configure()
@@ -329,7 +321,7 @@ namespace InABox.DynamicGrid
             Host.LoadColumns(ColumnName, OtherColumns);
             Host.LoadColumns(ColumnName, codePopupEditor.OtherColumns);
 
-            CodeColumn = !string.IsNullOrEmpty(codePopupEditor.CodeColumn) ? codePopupEditor.CodeColumn : GetCodeColumn();
+            CodeColumn = !string.IsNullOrEmpty(codePopupEditor.CodeColumn) ? codePopupEditor.CodeColumn : GetCodeColumn(_type);
         }
 
         public override void SetFocus()