Skip to content

Commit b224303

Browse files
committed
Use setTimeout to delay init to next event loop frame
1 parent bb108e8 commit b224303

File tree

1 file changed

+64
-62
lines changed

1 file changed

+64
-62
lines changed

src/assets/editors/filefly.js

Lines changed: 64 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -106,72 +106,74 @@ class FileflyEditor extends StringEditor {
106106

107107
initSelectize () {
108108
var self = this;
109-
this.ajaxPath = '/filefly/api';
109+
setTimeout(function () {
110+
self.ajaxPath = '/filefly/api';
110111

111-
if (this.schema && this.schema.ajaxPath) {
112-
this.ajaxPath = this.schema.ajaxPath;
113-
}
112+
if (self.schema && self.schema.ajaxPath) {
113+
self.ajaxPath = self.schema.ajaxPath;
114+
}
114115

115-
var firstLoad = false;
116-
117-
this.selectize = $(this.input).selectize({
118-
valueField: 'path',
119-
labelField: 'path',
120-
searchField: 'path',
121-
placeholder: 'Select a file...',
122-
maxItems: 1,
123-
plugins: ['remove_button'],
124-
/* DO NOT enable Preload
125-
when enabled it causes item loading issues when triggering multiple move row actions
126-
in a short amount of time
127-
*/
128-
preload: false,
129-
options: [],
130-
create: true,
131-
persist: true,
132-
render: {
133-
item: function (item, escape) {
134-
return '<div class="" style="height: 70px">' +
135-
'<img class="pull-left img-responsive" alt="filefly image" style="max-width: 100px; max-height: 70px" src="' + self.ajaxPath + '?action=stream&path=' + (item.path) + '" />' +
136-
'<span class="">' + escape(item.path) + '</span><br/>' +
137-
'</div>';
138-
},
139-
option: function (item, escape) {
140-
return '<div class="col-xs-6 col-sm-4 col-md-3 col-lg-2" style="height: 150px">' +
141-
'<img class="img-responsive" alt="filefly image" style="max-height: 100px" src="' + self.ajaxPath + '?action=stream&path=' + (item.path) + '" />' +
142-
'<span class="">' + escape(item.path) + '</span>' +
143-
'</div>';
144-
}
145-
},
146-
load: function (query, callback) {
147-
var selectize = this;
148-
$.ajax({
149-
url: self.ajaxPath,
150-
type: 'GET',
151-
dataType: 'json',
152-
data: {
153-
action: 'search',
154-
q: query,
155-
limit: 5
156-
},
157-
error: function (e) {
158-
console.log('error', e)
116+
var firstLoad = false;
117+
118+
self.selectize = $(self.input).selectize({
119+
valueField: 'path',
120+
labelField: 'path',
121+
searchField: 'path',
122+
placeholder: 'Select a file...',
123+
maxItems: 1,
124+
plugins: ['remove_button'],
125+
/* DO NOT enable Preload
126+
when enabled it causes item loading issues when triggering multiple move row actions
127+
in a short amount of time
128+
*/
129+
preload: false,
130+
options: [],
131+
create: true,
132+
persist: true,
133+
render: {
134+
item: function (item, escape) {
135+
return '<div class="" style="height: 70px">' +
136+
'<img class="pull-left img-responsive" alt="filefly image" style="max-width: 100px; max-height: 70px" src="' + self.ajaxPath + '?action=stream&path=' + (item.path) + '" />' +
137+
'<span class="">' + escape(item.path) + '</span><br/>' +
138+
'</div>';
159139
},
160-
success: function (data) {
161-
callback(data);
162-
if (!firstLoad) {
163-
selectize.setValue(self.input.value);
164-
firstLoad = true;
165-
self.onInputChange();
166-
}
140+
option: function (item, escape) {
141+
return '<div class="col-xs-6 col-sm-4 col-md-3 col-lg-2" style="height: 150px">' +
142+
'<img class="img-responsive" alt="filefly image" style="max-height: 100px" src="' + self.ajaxPath + '?action=stream&path=' + (item.path) + '" />' +
143+
'<span class="">' + escape(item.path) + '</span>' +
144+
'</div>';
167145
}
168-
});
169-
},
170-
onChange: function() {
171-
self.input.value = this.getValue();
172-
self.onInputChange();
173-
}
174-
});
146+
},
147+
load: function (query, callback) {
148+
var selectize = this;
149+
$.ajax({
150+
url: self.ajaxPath,
151+
type: 'GET',
152+
dataType: 'json',
153+
data: {
154+
action: 'search',
155+
q: query,
156+
limit: 5
157+
},
158+
error: function (e) {
159+
console.log('error', e)
160+
},
161+
success: function (data) {
162+
callback(data);
163+
if (!firstLoad) {
164+
selectize.setValue(self.input.value);
165+
firstLoad = true;
166+
self.onInputChange();
167+
}
168+
}
169+
});
170+
},
171+
onChange: function() {
172+
self.input.value = self.getValue();
173+
self.onInputChange();
174+
}
175+
});
176+
}, 0)
175177
}
176178

177179
onInputChange () {

0 commit comments

Comments
 (0)