using System; using UnityEditor; namespace YooAsset.Editor { [Serializable] public class ReportHeader { public const int MaxValue = 8388608; /// /// 标题 /// public string HeaderTitle; /// /// 标题宽度 /// public int Width; /// /// 单元列最小宽度 /// public int MinWidth = 50; /// /// 单元列最大宽度 /// public int MaxWidth = MaxValue; /// /// 可伸缩选项 /// public bool Stretchable = false; /// /// 可搜索选项 /// public bool Searchable = false; /// /// 可排序选项 /// public bool Sortable = false; /// /// 统计数量 /// public bool Counter = false; /// /// 展示单位 /// public string Units = string.Empty; /// /// 数值类型 /// public EHeaderType HeaderType = EHeaderType.StringValue; public ReportHeader(string headerTitle, int width) { HeaderTitle = headerTitle; Width = width; MinWidth = width; MaxWidth = width; } public ReportHeader(string headerTitle, int width, int minWidth, int maxWidth) { HeaderTitle = headerTitle; Width = width; MinWidth = minWidth; MaxWidth = maxWidth; } public ReportHeader SetMinWidth(int value) { MinWidth = value; return this; } public ReportHeader SetMaxWidth(int value) { MaxWidth = value; return this; } public ReportHeader SetStretchable() { Stretchable = true; return this; } public ReportHeader SetSearchable() { Searchable = true; return this; } public ReportHeader SetSortable() { Sortable = true; return this; } public ReportHeader SetCounter() { Counter = true; return this; } public ReportHeader SetUnits(string units) { Units = units; return this; } public ReportHeader SetHeaderType(EHeaderType value) { HeaderType = value; return this; } /// /// 检测数值有效性 /// public void CheckValueValid(string value) { if (HeaderType == EHeaderType.AssetPath) { string guid = AssetDatabase.AssetPathToGUID(value); if (string.IsNullOrEmpty(guid)) throw new Exception($"{HeaderTitle} value is invalid asset path : {value}"); } else if (HeaderType == EHeaderType.AssetObject) { string guid = AssetDatabase.AssetPathToGUID(value); if (string.IsNullOrEmpty(guid)) throw new Exception($"{HeaderTitle} value is invalid asset object : {value}"); } else if (HeaderType == EHeaderType.DoubleValue) { if (double.TryParse(value, out double doubleValue) == false) throw new Exception($"{HeaderTitle} value is invalid double value : {value}"); } else if (HeaderType == EHeaderType.LongValue) { if (long.TryParse(value, out long longValue) == false) throw new Exception($"{HeaderTitle} value is invalid long value : {value}"); } else if (HeaderType == EHeaderType.StringValue) { } else { throw new System.NotImplementedException(HeaderType.ToString()); } } } }