Skip to content

Commit a07c2da

Browse files
committed
Fix bug with enumSource
1 parent 1097489 commit a07c2da

File tree

1 file changed

+44
-42
lines changed

1 file changed

+44
-42
lines changed

src/editors/select.js

Lines changed: 44 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -221,53 +221,55 @@ JSONEditor.defaults.editors.select = JSONEditor.AbstractEditor.extend({
221221
items = vars[this.enumSource[i].source];
222222
}
223223

224-
// Only use a predefined part of the array
225-
if(this.enumSource[i].slice) {
226-
items = Array.prototype.slice.apply(items,this.enumSource[i].slice);
227-
}
228-
// Filter the items
229-
if(this.enumSource[i].filter) {
230-
var new_items = [];
231-
for(j=0; j<items.length; j++) {
232-
if(this.enumSource[i].filter({i:j,item:items[j]})) new_items.push(items[j]);
233-
}
234-
items = new_items;
235-
}
236-
237-
var item_titles = [];
238-
var item_values = [];
239-
for(j=0; j<items.length; j++) {
240-
var item = items[j];
241-
242-
// Rendered value
243-
if(this.enumSource[i].value) {
244-
item_values[j] = this.enumSource[i].value({
245-
i: j,
246-
item: item
247-
});
224+
if(items) {
225+
// Only use a predefined part of the array
226+
if(this.enumSource[i].slice) {
227+
items = Array.prototype.slice.apply(items,this.enumSource[i].slice);
248228
}
249-
// Use value directly
250-
else {
251-
item_values[j] = items[j];
229+
// Filter the items
230+
if(this.enumSource[i].filter) {
231+
var new_items = [];
232+
for(j=0; j<items.length; j++) {
233+
if(this.enumSource[i].filter({i:j,item:items[j]})) new_items.push(items[j]);
234+
}
235+
items = new_items;
252236
}
253237

254-
// Rendered title
255-
if(this.enumSource[i].title) {
256-
item_titles[j] = this.enumSource[i].title({
257-
i: j,
258-
item: item
259-
});
260-
}
261-
// Use value as the title also
262-
else {
263-
item_titles[j] = item_values[j];
238+
var item_titles = [];
239+
var item_values = [];
240+
for(j=0; j<items.length; j++) {
241+
var item = items[j];
242+
243+
// Rendered value
244+
if(this.enumSource[i].value) {
245+
item_values[j] = this.enumSource[i].value({
246+
i: j,
247+
item: item
248+
});
249+
}
250+
// Use value directly
251+
else {
252+
item_values[j] = items[j];
253+
}
254+
255+
// Rendered title
256+
if(this.enumSource[i].title) {
257+
item_titles[j] = this.enumSource[i].title({
258+
i: j,
259+
item: item
260+
});
261+
}
262+
// Use value as the title also
263+
else {
264+
item_titles[j] = item_values[j];
265+
}
264266
}
267+
268+
// TODO: sort
269+
270+
select_options = select_options.concat(item_values);
271+
select_titles = select_titles.concat(item_titles);
265272
}
266-
267-
// TODO: sort
268-
269-
select_options = select_options.concat(item_values);
270-
select_titles = select_titles.concat(item_titles);
271273
}
272274
}
273275

0 commit comments

Comments
 (0)