|
3 | 3 | option(v-if="!selectOptions.hideNoneSelectedText", :disabled="schema.required", :value="null", :selected="value == undefined") {{ selectOptions.noneSelectedText || "<Nothing selected>" }} |
4 | 4 |
|
5 | 5 | template(v-for="item in items") |
6 | | - optgroup(v-if="schema.group && item.group", :label="getGroupName(item)") |
7 | | - option(v-if="schema.group && item.ops", v-for="i in item.ops", :value="getItemValue(i)") {{ getItemName(i) }} |
| 6 | + optgroup(v-if="item.group", :label="getGroupName(item)") |
| 7 | + option(v-if="item.ops", v-for="i in item.ops", :value="getItemValue(i)") {{ getItemName(i) }} |
8 | 8 |
|
9 | 9 | option(v-if="!item.group", :value="getItemValue(item)") {{ getItemName(item) }} |
10 | 10 | </template> |
|
24 | 24 | items() { |
25 | 25 | let values = this.schema.values; |
26 | 26 | if (typeof(values) == "function") { |
27 | | - return values.apply(this, [this.model, this.schema]); |
| 27 | + return this.dataSorting(values.apply(this, [this.model, this.schema])); |
28 | 28 | } else |
29 | | -
|
30 | | - if(this.schema.group){ |
31 | | - let array = []; |
32 | | - let arrayElement = {}; |
33 | | -
|
34 | | - values.forEach((item) => { |
35 | | -
|
36 | | - arrayElement = null; |
37 | | -
|
38 | | - if(item.group){ |
39 | | - // There is in a group. |
40 | | - |
41 | | - // Find element with this group. |
42 | | - arrayElement = find(array, i => {return i.group == item.group}); |
43 | | -
|
44 | | - if(arrayElement){ |
45 | | - // There is such a group. |
46 | | -
|
47 | | - arrayElement.ops.push({ |
48 | | - id: item.id, |
49 | | - name: item.name |
50 | | - }); |
51 | | - }else{ |
52 | | - // There is not such a group. |
53 | | - |
54 | | - // Initialising. |
55 | | - arrayElement = { |
56 | | - group:"", |
57 | | - ops:[] |
58 | | - }; |
59 | | -
|
60 | | - // Set group. |
61 | | - arrayElement.group = item.group; |
62 | | -
|
63 | | - // Set Group element. |
64 | | - arrayElement.ops.push({ |
65 | | - id: item.id, |
66 | | - name: item.name |
67 | | - }); |
68 | | -
|
69 | | - // Add array. |
70 | | - array.push(arrayElement); |
71 | | - } |
72 | | - }else{ |
73 | | - // There is not in a group. |
74 | | - array.push(item); |
75 | | - } |
76 | | - }); |
77 | | -
|
78 | | - // With Groups. |
79 | | - return array; |
80 | | - } |
81 | | -
|
82 | | - // Without Group. |
83 | | - return values; |
| 29 | + return this.dataSorting(values); |
84 | 30 | } |
85 | 31 | }, |
86 | 32 |
|
87 | 33 | methods: { |
88 | 34 |
|
| 35 | + dataSorting(values){ |
| 36 | + let array = []; |
| 37 | + let arrayElement = {}; |
| 38 | +
|
| 39 | + values.forEach((item) => { |
| 40 | +
|
| 41 | + arrayElement = null; |
| 42 | +
|
| 43 | + if(item.group){ |
| 44 | + // There is in a group. |
| 45 | + |
| 46 | + // Find element with this group. |
| 47 | + arrayElement = find(array, i => {return i.group == item.group}); |
| 48 | +
|
| 49 | + if(arrayElement){ |
| 50 | + // There is such a group. |
| 51 | +
|
| 52 | + arrayElement.ops.push({ |
| 53 | + id: item.id, |
| 54 | + name: item.name |
| 55 | + }); |
| 56 | + }else{ |
| 57 | + // There is not such a group. |
| 58 | + |
| 59 | + // Initialising. |
| 60 | + arrayElement = { |
| 61 | + group:"", |
| 62 | + ops:[] |
| 63 | + }; |
| 64 | +
|
| 65 | + // Set group. |
| 66 | + arrayElement.group = item.group; |
| 67 | +
|
| 68 | + // Set Group element. |
| 69 | + arrayElement.ops.push({ |
| 70 | + id: item.id, |
| 71 | + name: item.name |
| 72 | + }); |
| 73 | +
|
| 74 | + // Add array. |
| 75 | + array.push(arrayElement); |
| 76 | + } |
| 77 | + }else{ |
| 78 | + // There is not in a group. |
| 79 | + array.push(item); |
| 80 | + } |
| 81 | + }); |
| 82 | +
|
| 83 | + // With Groups. |
| 84 | + return array; |
| 85 | + }, |
| 86 | +
|
89 | 87 | getGroupName(item){ |
90 | 88 | if(item && item.group){ |
91 | 89 | return item.group; |
|
0 commit comments