Pārlūkot izejas kodu

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 gadu atpakaļ
vecāks
revīzija
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 prefix = string.Format("{0}.", string.Join(".", comps));
             var cols = Columns.Where(x => !x.ColumnName.Equals(column) && x.ColumnName.StartsWith(prefix));
             var cols = Columns.Where(x => !x.ColumnName.Equals(column) && x.ColumnName.StartsWith(prefix));
             foreach (var col in cols)
             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);
         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 });
                 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()
         public override void Configure()
@@ -329,7 +321,7 @@ namespace InABox.DynamicGrid
             Host.LoadColumns(ColumnName, OtherColumns);
             Host.LoadColumns(ColumnName, OtherColumns);
             Host.LoadColumns(ColumnName, codePopupEditor.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()
         public override void SetFocus()