소스 검색

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 년 전
부모
커밋
2f6e034799
2개의 변경된 파일10개의 추가작업 그리고 15개의 파일을 삭제
  1. 4 1
      inabox.wpf/DynamicGrid/DynamicEditorGrid.xaml.cs
  2. 6 14
      inabox.wpf/DynamicGrid/Editors/CodePopupEditor/CodePopupEditorControl.cs

+ 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()