mysql-live-client
Version:
The client side script of mysql-live package.
80 lines (79 loc) • 4.21 kB
JavaScript
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
/// <reference path="../../typings/lodash/lodash.d.ts" />
var ObservableCollection_1 = require("./ObservableCollection");
var Helper_1 = require("./Helper");
var JoinerBuilder_1 = require("./tasks/JoinerBuilder");
var Collection = (function (_super) {
__extends(Collection, _super);
function Collection(handler, name) {
_super.call(this, name);
this.handler = handler;
}
Collection.prototype.fireJoinedEvent = function (evt) {
//edw gia ta joins. as paw na dw sto ObservableCollection.fireChangeNow ta comments.
//loipon, auto doulevie sxedon apsoga, to mono 9ema einai oti kanei update to event eite exei allaksei kati eixe oxi
//pragma pou borousa na elenksw mesa sto joiner, alla edw den ginete h fash mas.
//ara na to metaferw olo auto sto Joiner?
//oxi oute sto joiner 9a eixe noima gt kanw fireChangeNow, borei na evlepa gia primary collection an einai
//alou se join alla 9a diwr9wne tin katastasi me ta infos,users kai storiesCollection, alla an eixa akoma ena pio vathu
//join dn 9a to ekane fire, giauto thelw ena entelws new method sto collection.
//to opoio 9a to kalw katw apto joinedChangeEvent() sto Joiner...
var _this = this;
Helper_1.default.forEachKey(this.handler.collections, function (colName) {
var col = _this.handler.collections[colName];
col.tasks.forEach(function (task) {
if (task.collectionNames[1] === _this.name) {
var primaryEvt = {};
if (evt.name === ObservableCollection_1.default.ON_INSERT) {
var newItemForEvent = {};
newItemForEvent[task.params.as] = evt['newItem'];
primaryEvt['newItem'] = newItemForEvent;
primaryEvt['name'] = evt.name;
}
else if (evt.name === ObservableCollection_1.default.ON_UPDATE) {
var newItemForEvent = {};
newItemForEvent[task.params.as] = evt['newItem'];
primaryEvt['newItem'] = newItemForEvent;
var newSelectorForEvent = {};
newSelectorForEvent[task.params.as] = evt['selector'];
primaryEvt['selector'] = newSelectorForEvent;
primaryEvt['name'] = evt.name;
}
else if (evt.name === ObservableCollection_1.default.ON_REMOVE) {
var removeSelectorForEvent = {};
removeSelectorForEvent[task.params.as] = evt['selector'];
primaryEvt['selector'] = removeSelectorForEvent;
primaryEvt['name'] = evt.name;
}
_this.handler.collections[task.collectionNames[0]].fireChangeNow(primaryEvt);
_this.handler.collections[task.collectionNames[0]].fireJoinedEvent(primaryEvt);
}
});
});
};
Collection.prototype.refresh = function (cb) {
this.handler.dispatcher.requestRefresh(this.name, cb);
};
Collection.prototype.save = function (object, cb) {
this.handler.dispatcher.requestSaveObject(this.name, object, cb);
};
Collection.prototype.insert = function (object, cb) {
this.save(object, cb);
};
Collection.prototype.update = function (object, cb) {
this.save(object, cb);
};
Collection.prototype.remove = function (primaryKey, cb) {
this.handler.dispatcher.requestRemoveObject(this.name, primaryKey, cb);
};
Collection.prototype.join = function (relatedCollection) {
return new JoinerBuilder_1.default(this, relatedCollection);
};
return Collection;
})(ObservableCollection_1.default);
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Collection;