Cannon Prototype
by abeisgreat
JavaScript
var Cannon = function (url) {
this.url = url;
this.reloaderStrs = {};
this.projectileStr = "*";
this.rawData = [];
this.fetches = 0;
this.delayInt = 0;
var self = this;
this.fire = function (callback) {
self._fetch(callback);
return self;
};
this.reload = function (reloaderStrs) {
self.reloaderStrs = reloaderStrs;
return self;
};
this.limit = function (limit) {
self.limitInt = limit;
return self;
};
this.delay = function (delayInt) {
self.delayInt = delayInt;
return self;
};
this.projectile = function (projectileStr) {
self.projectileStr = projectileStr;
return self;
};
this.recoil = function (target) {
return self._getField(self.rawData, self.projectileStr, target);
};
this._fetch = function (callback, projectileBlob, queryData) {
if (self.limitInt && self.fetches++ == self.limitInt) {
callback(projectileBlob, self);
return;
}
queryData = queryData? queryData: {};
$.get(self.url, queryData, function (data) {
self.rawData.push(data);
var projectilePartial = self._getField([data], self.projectileStr);
if (self._isArray(projectilePartial)) {
if (!projectileBlob) {
projectileBlob = [];
}
for (var p = 0; p<projectilePartial.length; p++) {
projectileBlob.push(projectilePartial[p]);
}
}
var reloaders = {};
var hasReloader = false;
for (var reloaderKey in self.reloaderStrs) {
var reloader = self.reloaderStrs[reloaderKey];
reloaders[reloaderKey] = self._getField([data], self.reloaderStrs[reloaderKey])[0];
...