using VberAdmin.Web.Models.Modals; using VberZero.Tools.StringModel; namespace VberAdmin.Web.Models.Input; public class VmInputGroup { public VmInputGroup() { IsAverage = true; SortId = 0; HiddenInputs = new List(); //Groups = new Dictionary(); Inputs = new Dictionary(); } //private VmInputGroup(bool isChild) : this() //{ // IsChild = isChild; //} //public VmInputGroup Parent { get; private set; } //public bool IsChild { get; private set; } //public Dictionary Groups { get; set; } public VmModal Modal { get; set; } public List HiddenInputs { get; } public Dictionary Inputs { get; set; } public int SortId { get; set; } //public int Count => Groups.Count + Inputs.Count; public int Count => Inputs.Count; private string _layoutClass; public string LayoutClass { get { if (_layoutClass.Empty()) { return AutoCalculateClass(); } return _layoutClass; } set => _layoutClass = value; } /// /// Bootstrap 的标准断点 (sm, md, lg, xl) 默认空 /// public string BreakPoint { get; set; } /// /// 每行的input个数 (2,3,4,6),用于自动计算class 默认2 /// public int RowCount { get; set; } = 2; /// /// 平均分布(个数少时推荐) 大于时 使用MaxRowCount /// public bool IsAverage { get; set; } /// /// 2-4 /// public int MaxRowCount { get; set; } = 3; private string AutoCalculateClass() { if (Inputs.Count <= 0) { return ""; } int count; if (IsAverage) { var average = Count > MaxRowCount ? MaxRowCount : Count; count = 12 / average; } else { count = 12 / (RowCount > 0 ? RowCount : 2); } return $"col-{(BreakPoint.Empty() ? "" : $"{BreakPoint}-")}{count}"; } public VmInputGroup WithBreakPoint(string breakPoint) { BreakPoint = breakPoint; return this; } public VmInputGroup WithLayoutClass(string @class) { LayoutClass = @class; return this; } public VmInputGroup WithAverage(int maxRowCount = 3) { IsAverage = true; MaxRowCount = maxRowCount; return this; } public VmInputGroup WithNotAverage(int rowCount = 2) { IsAverage = false; RowCount = rowCount; return this; } //public VmInputGroup AddGroup(VmInputGroup group) //{ // group.IsChild = true; // group.Parent = this; // Groups.Add(SortId, group); // SortId++; // return this; //} public VmInputGroup AddInput(VmInputBase input) { if (input.IsHidden) { HiddenInputs.Add(input); } else { Inputs.Add(SortId, input); SortId++; } return this; } public VmInputGroup AddInputs(List inputs) { foreach (var input in inputs) { AddInput(input); } return this; } //public VmInputGroup GetGroup(int id) //{ // if (Groups.ContainsKey(id)) // { // var group = Groups[id]; // group.Modal = Modal; // return group; // } // return null; //} public VmInputBase GetInput(int id) { if (Inputs.ContainsKey(id)) { var input = Inputs[id]; input.ModalId = Modal.Id; return input; } return null; } //private VmInputBase SetInputFormId(VmInputBase input) //{ // input.FormId = Modal.FormId; // return input; //} }