(function($K)
|
|
{
|
|
$K.add('module', 'magicquery', {
|
|
init: function(app, context)
|
|
{
|
|
this.app = app;
|
|
this.response = app.response;
|
|
|
|
// defaults
|
|
var defaults = {
|
|
url: false
|
|
};
|
|
|
|
// context
|
|
this.context = context;
|
|
this.params = context.getParams(defaults);
|
|
this.$element = context.getElement();
|
|
},
|
|
// public
|
|
start: function()
|
|
{
|
|
this.$element.on('click.kube.magicquery', this._send.bind(this));
|
|
},
|
|
stop: function()
|
|
{
|
|
this._enable();
|
|
this.$element.off('.kube.magicquery');
|
|
},
|
|
|
|
// private
|
|
_disable: function()
|
|
{
|
|
this.$element.attr('disabled', true);
|
|
},
|
|
_enable: function()
|
|
{
|
|
this.$element.removeAttr('disabled');
|
|
},
|
|
_send: function(e)
|
|
{
|
|
e.preventDefault();
|
|
this._disable();
|
|
|
|
$K.ajax.post({
|
|
url: this.params.url,
|
|
success: this._parse.bind(this)
|
|
});
|
|
},
|
|
_parse: function(data)
|
|
{
|
|
this._enable();
|
|
|
|
var json = this.response.parse(data);
|
|
if (json)
|
|
{
|
|
this.app.broadcast('magicquery.success', this, json);
|
|
}
|
|
},
|
|
});
|
|
})(Kube);
|