Skip to content
This repository has been archived by the owner on May 2, 2022. It is now read-only.

Commit

Permalink
Merge branch 'release/v2.0.2'
Browse files Browse the repository at this point in the history
  • Loading branch information
rousan committed Oct 1, 2018
2 parents 98aed24 + 76abc74 commit f37e3e7
Show file tree
Hide file tree
Showing 8 changed files with 193 additions and 283 deletions.
2 changes: 1 addition & 1 deletion dist/datamodel.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/datamodel.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "datamodel",
"description": "Relational algebra compliant in-memory tabular data store",
"homepage": "https://github.com/chartshq/datamodel",
"version": "2.0.1",
"version": "2.0.2",
"license": "MIT",
"main": "dist/datamodel.js",
"author": "Charts.com <support@charts.com>",
Expand Down
53 changes: 15 additions & 38 deletions src/datamodel.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import {
getRootGroupByModel,
propagateToAllDataModels,
getRootDataModel,
propagateImmutableActions
propagateImmutableActions,
addToPropNamespace
} from './helper';
import { DM_DERIVATIVES, PROPAGATION } from './constants';
import {
Expand Down Expand Up @@ -393,9 +394,10 @@ class DataModel extends Relation {
*
* @return {DataModel} DataModel instance.
*/
propagate (identifiers, payload, config = {}) {
propagate (identifiers, config = {}, addToNameSpace, propConfig = {}) {
const isMutableAction = config.isMutableAction;
const propagationSourceId = config.sourceId;
const payload = config.payload;
const rootModel = getRootDataModel(this);
const propagationNameSpace = rootModel._propagationNameSpace;
const rootGroupByModel = getRootGroupByModel(this);
Expand All @@ -404,42 +406,17 @@ class DataModel extends Relation {
model: rootModel
};

propagateToAllDataModels(identifiers, rootModels, {
propagationNameSpace,
payload,
propagationSourceId
});

if (isMutableAction) {
propagateImmutableActions(propagationNameSpace, rootModels, propagationSourceId);
}
return this;
}

addToPropNamespace (sourceId, config = {}) {
let sourceNamespace;
const actionName = config.actionName;
const payload = config.payload;
const isMutableAction = config.isMutableAction;
const rootModel = getRootDataModel(this);
const propagationNameSpace = rootModel._propagationNameSpace;
const criteria = config.criteria;
addToNameSpace && addToPropNamespace(propagationNameSpace, config, this);
propagateToAllDataModels(identifiers, rootModels, { propagationNameSpace, sourceId: propagationSourceId },
Object.assign({
payload
}, config));

if (isMutableAction) {
!propagationNameSpace.mutableActions[sourceId] && (propagationNameSpace.mutableActions[sourceId] = {});
sourceNamespace = propagationNameSpace.mutableActions[sourceId];
} else {
!propagationNameSpace.immutableActions[sourceId] && (propagationNameSpace.immutableActions[sourceId] = {});
sourceNamespace = propagationNameSpace.immutableActions[sourceId];
}

if (criteria === null) {
delete sourceNamespace[actionName];
} else {
sourceNamespace[actionName] = {
criteria,
payload
};
propagateImmutableActions(propagationNameSpace, rootModels, {
config,
propConfig
}, this);
}

return this;
Expand Down Expand Up @@ -484,9 +461,9 @@ class DataModel extends Relation {
* @param {DataModel} identifiers The propagated DataModel.
* @memberof DataModel
*/
handlePropagation (payload) {
handlePropagation (propModel, payload) {
let propListeners = this._onPropagation;
propListeners.forEach(fn => fn.call(this, payload));
propListeners.forEach(fn => fn.call(this, propModel, payload));
}

/**
Expand Down

0 comments on commit f37e3e7

Please sign in to comment.