| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- 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<VmInputBase>();
- //Groups = new Dictionary<int, VmInputGroup>();
- Inputs = new Dictionary<int, VmInputBase>();
- }
- //private VmInputGroup(bool isChild) : this()
- //{
- // IsChild = isChild;
- //}
- //public VmInputGroup Parent { get; private set; }
- //public bool IsChild { get; private set; }
- //public Dictionary<int, VmInputGroup> Groups { get; set; }
- public VmModal Modal { get; set; }
- public List<VmInputBase> HiddenInputs { get; }
- public Dictionary<int, VmInputBase> 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;
- }
- /// <summary>
- /// Bootstrap 的标准断点 (sm, md, lg, xl) 默认空
- /// </summary>
- public string BreakPoint { get; set; }
- /// <summary>
- /// 每行的input个数 (2,3,4,6),用于自动计算class 默认2
- /// </summary>
- public int RowCount { get; set; } = 2;
- /// <summary>
- /// 平均分布(个数少时推荐) 大于<see cref="MaxRowCount"/>时 使用MaxRowCount
- /// </summary>
- public bool IsAverage { get; set; }
- /// <summary>
- /// 2-4
- /// </summary>
- 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<VmInputBase> 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;
- //}
- }
|