|
11 | 11 |
|
12 | 12 | @model IList<GriddlyButton>
|
13 | 13 |
|
| 14 | +@functions{ |
| 15 | + IEnumerable<IEnumerable<GriddlyButton>> GetGroups(IEnumerable<GriddlyButton> buttons) |
| 16 | + { |
| 17 | + List<IEnumerable<GriddlyButton>> groups = new List<IEnumerable<GriddlyButton>>(); |
| 18 | + |
| 19 | + List<GriddlyButton> currentList = null; |
| 20 | + foreach (var b in buttons) |
| 21 | + { |
| 22 | + if (currentList == null) |
| 23 | + { |
| 24 | + currentList = new List<GriddlyButton>(); |
| 25 | + groups.Add(currentList); |
| 26 | + } |
| 27 | + |
| 28 | + if (b.IsSeparator) |
| 29 | + { |
| 30 | + currentList = null; |
| 31 | + } |
| 32 | + else |
| 33 | + { |
| 34 | + currentList.Add(b); |
| 35 | + } |
| 36 | + } |
| 37 | + |
| 38 | + groups.RemoveAll(x => x.Count() == 0); |
| 39 | + |
| 40 | + return groups; |
| 41 | + } |
| 42 | +} |
| 43 | + |
14 | 44 | @{
|
15 |
| - var leftButtons = Model.Where(x => !x.AlignRight && ViewBag.AlignRight != true); |
16 |
| - var rightButtons = Model.Where(x => x.AlignRight || ViewBag.AlignRight == true); |
| 45 | + var leftGroups = GetGroups(Model.Where(x => !x.AlignRight && ViewBag.AlignRight != true)); |
| 46 | + var rightGroups = GetGroups(Model.Where(x => x.AlignRight || ViewBag.AlignRight == true)); |
17 | 47 | }
|
18 | 48 |
|
19 | 49 | @if (Model.Any())
|
20 | 50 | {
|
21 |
| - if (rightButtons.Any()) |
| 51 | + if (rightGroups.Any()) |
22 | 52 | {
|
23 | 53 | <div class="btn-toolbar @ViewBag.ClassName pull-right">
|
24 |
| - @if (rightButtons.Count() > 1) |
| 54 | + @foreach (var group in rightGroups) |
25 | 55 | {
|
26 |
| - @:<div class="btn-group"> |
27 |
| - } |
28 |
| - @foreach (GriddlyButton button in rightButtons) |
| 56 | + if (group.Count() > 1 || group.First().Buttons.Count() == 0) |
| 57 | + { |
| 58 | + @:<div class="btn-group"> |
| 59 | + } |
| 60 | + foreach (GriddlyButton button in group) |
29 | 61 | {
|
30 | 62 | button.AlignRight = true;
|
31 |
| - |
32 |
| - if (button.IsSeparator) |
33 |
| - { |
34 |
| - @:</div> |
35 |
| - @:<div class="btn-group"> |
36 |
| - } |
37 |
| - else |
38 |
| - { |
39 |
| - @Html.Partial(GriddlySettings.ButtonTemplate, button); |
40 |
| - } |
| 63 | + @Html.Partial(GriddlySettings.ButtonTemplate, button); |
| 64 | + } |
| 65 | + if (group.Count() > 1 || group.First().Buttons.Count() == 0) |
| 66 | + { |
| 67 | + @:</div> |
41 | 68 | }
|
42 |
| - @if (rightButtons.Count() > 1) |
43 |
| - { |
44 |
| - @:</div> |
45 | 69 | }
|
46 | 70 | </div>
|
47 | 71 | }
|
48 |
| - if (leftButtons.Any()) |
| 72 | + if (leftGroups.Any()) |
49 | 73 | {
|
50 | 74 | <div class="btn-toolbar @ViewBag.ClassName">
|
51 |
| - @if (leftButtons.Count() > 1) |
| 75 | + @foreach (var group in leftGroups) |
52 | 76 | {
|
53 |
| - @:<div class="btn-group"> |
54 |
| - } |
55 |
| - @foreach (GriddlyButton button in leftButtons) |
56 |
| - { |
57 |
| - if (button.IsSeparator) |
| 77 | + if (group.Count() > 1 || group.First().Buttons.Count() == 0) |
58 | 78 | {
|
59 |
| - @:</div> |
60 | 79 | @:<div class="btn-group">
|
61 | 80 | }
|
62 |
| - else |
| 81 | + foreach (GriddlyButton button in group) |
63 | 82 | {
|
64 | 83 | @Html.Partial(GriddlySettings.ButtonTemplate, button);
|
65 | 84 | }
|
66 |
| - } |
67 |
| - @if (leftButtons.Count() > 1) |
68 |
| - { |
69 |
| - @:</div> |
| 85 | + if (group.Count() > 1 || group.First().Buttons.Count() == 0) |
| 86 | + { |
| 87 | + @:</div> |
| 88 | + } |
70 | 89 | }
|
71 | 90 | </div>
|
72 | 91 | }
|
|
0 commit comments