71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
(function(SKY){
|
|
|
|
var referenceSelectorDefaultOptions = {
|
|
id: null,
|
|
referencedType: null,
|
|
}
|
|
|
|
var referenceDefaultOptions = {
|
|
url: null,
|
|
|
|
referencedType: null,
|
|
|
|
lookup: function(pattern){ return []; },
|
|
render: function(o){ return o; },
|
|
parse: function(src){ return src; },
|
|
id: function(o){ return o; },
|
|
}
|
|
|
|
class SKYReferenceSelector extends SKY.prototypes.SKYSelector {
|
|
constructor(options){
|
|
super();
|
|
|
|
var self = this;
|
|
|
|
this.options = Object.assign({}, referenceSelectorDefaultOptions);
|
|
Object.assign(this.options,options);
|
|
|
|
var html = $('<input type="text">');
|
|
html
|
|
.attr("id",this.options.id)
|
|
.autocomplete({
|
|
source: function(request, response){ response(self.options.referencedType.lookup(request.term)); },
|
|
});
|
|
|
|
this.html( html );
|
|
}
|
|
|
|
|
|
|
|
}
|
|
SKY.prototypes.SKYReferenceSelector = SKYReferenceSelector;
|
|
|
|
class SKYReferencingType extends SKY.prototypes.SKYType {
|
|
|
|
constructor(name,options){
|
|
super(name);
|
|
|
|
this.options = Object.assign({}, referenceDefaultOptions);
|
|
Object.assign(this.options, options);
|
|
|
|
}
|
|
|
|
editor(id){
|
|
return this.selector(id);
|
|
}
|
|
|
|
selector(id){
|
|
return new SKYReferenceSelector({
|
|
referencedType: this,
|
|
id: id,
|
|
});
|
|
}
|
|
|
|
render(value){ return this.options.render(value); }
|
|
parse(src){ return this.options.parse(src); }
|
|
lookup(pattern){ return this.options.lookup(pattern); }
|
|
}
|
|
|
|
SKY.prototypes.SKYReferencingType = SKYReferencingType;
|
|
}(SKY));
|