|
3 | 3 | window.mwcMixin = {
|
4 | 4 |
|
5 | 5 | properties: {
|
6 |
| - subsReady:{type:Boolean,notify:true,value:true}, |
7 |
| - |
8 |
| - mwcData:Object, |
9 |
| - __mwcHandles:{type:Array,value:[]}, |
10 |
| - __mwcComputations:{type:Array,value:[]}, |
11 |
| - __mwcComputationsIds:{type:Array,value:[]}, |
12 |
| - __mwcBin:{type:Array,value:[]} |
| 6 | + subsReady: { type: Boolean, notify: true, value: true }, |
| 7 | + mwcData: Object, |
| 8 | + __mwcHandles: { type: Array, value: [] }, |
| 9 | + __mwcPush: { type: Array, value: [] }, |
| 10 | + __mwcComputations: { type: Array, value: [] }, |
| 11 | + __mwcComputationsIds: { type: Array, value: [] }, |
| 12 | + __mwcBin: { type: Array, value: [] } |
13 | 13 | },
|
14 |
| - trackers:[], |
15 |
| - _mwcSetData(data){ |
16 |
| - this.set("mwcData",data); |
| 14 | + trackers: [], |
| 15 | + _mwcSetData: function _mwcSetData(data) { |
| 16 | + this.set("mwcData", data); |
17 | 17 | },
|
18 |
| - beforeRegister(){ |
19 |
| - this.__mwcDeps = {}; |
20 |
| - this.observers = this.observers || []; |
21 |
| - for(let i = 0;i < this.trackers.length;i++){ |
22 |
| - const tracker = this.trackers[i]; |
23 |
| - const sections = tracker.split(/[\(,\)]+/); |
24 |
| - const input = sections[1]; |
25 |
| - const cb = sections[0]; |
26 |
| - const r_id = `__mwc_${Random.id(10)}`; |
27 |
| - const dep = new Tracker.Dependency(); |
28 |
| - this.__mwcDeps[tracker] = {_id:r_id,dep:dep,cb:cb}; |
29 |
| - this[r_id] = (...arg)=>{ |
30 |
| - this.__mwcDeps[tracker].arg = arg; |
31 |
| - this.__mwcDeps[tracker].dep.changed(); |
| 18 | + beforeRegister: function beforeRegister() { |
| 19 | + var _this = this; |
| 20 | + |
| 21 | + var mwcDeps = {}; |
| 22 | + var observers = this.observers || []; |
| 23 | + var trackers = this.trackers; |
| 24 | + //console.log("elem",trackers); |
| 25 | + |
| 26 | + var _loop = function _loop(i) { |
| 27 | + var tracker = trackers[i]; |
| 28 | + var sections = tracker.split(/[\(\)]+/); |
| 29 | + var input = sections[1]; |
| 30 | + var cb = sections[0]; |
| 31 | + var r_id = "__mwc_" + Random.id(10); |
| 32 | + var obj = { |
| 33 | + _id: r_id, |
| 34 | + cb: cb |
| 35 | + }; |
| 36 | + mwcDeps[tracker] = obj; |
| 37 | + var _trObFn = function _trObFn() { |
| 38 | + var arg = arguments; |
| 39 | + var dep = obj; |
| 40 | + dep.dep = this.__mwcDeps[tracker].dep || new Tracker.Dependency(); |
| 41 | + dep.arg = arg; |
| 42 | + this.__mwcDeps[tracker] = dep; |
| 43 | + this.__mwcDeps[tracker] = _.clone(this.__mwcDeps[tracker]); |
| 44 | + dep.dep.changed(); |
32 | 45 | };
|
| 46 | + _this[r_id] = _trObFn; |
| 47 | + observers.push(r_id + "(" + input + ")"); |
| 48 | + }; |
33 | 49 |
|
34 |
| - this.observers.push(`${r_id}(${input})`); |
| 50 | + for (var i = 0; i < trackers.length; i++) { |
| 51 | + _loop(i); |
35 | 52 | }
|
| 53 | + this.observers = observers; |
| 54 | + this.__mwcDeps = mwcDeps; |
36 | 55 | },
|
37 |
| - attached() { |
| 56 | + attached: function attached() { |
| 57 | + var _this2 = this; |
| 58 | + |
38 | 59 | this.__mwcFirstRun = true;
|
39 |
| - for(let i in this.__mwcDeps){ |
40 |
| - const tracker = this.__mwcDeps[i]; |
41 |
| - const obFn = (c)=>{ |
42 |
| - tracker.dep.depend(); |
43 |
| - this[tracker.cb].apply(this,tracker.arg); |
| 60 | + |
| 61 | + var _loop2 = function _loop2(i) { |
| 62 | + var obFn = function obFn(c) { |
| 63 | + _this2.__mwcDeps[i].dep = _this2.__mwcDeps[i].dep || new Tracker.Dependency(); |
| 64 | + _this2.__mwcDeps[i].dep.depend(); |
| 65 | + _this2[_this2.__mwcDeps[i].cb].apply(_this2, _this2.__mwcDeps[i].arg); |
| 66 | + _this2.__mwcDeps = _.clone(_this2.__mwcDeps); |
44 | 67 | };
|
45 |
| - this.autorun(obFn.bind(null,this)); |
| 68 | + _this2.autorun(obFn.bind(_this2)); |
| 69 | + }; |
| 70 | + |
| 71 | + for (var i in this.__mwcDeps) { |
| 72 | + _loop2(i); |
46 | 73 | }
|
47 | 74 | this.autorun(this.tracker);
|
48 |
| - this.autorun(mwcDataUpdate.bind(null,this)); |
| 75 | + this.autorun(mwcDataUpdate.bind(null, this)); |
49 | 76 | },
|
50 |
| - detached() { |
51 |
| - for(let i in this.__mwcDeps){ |
52 |
| - const tracker = this.__mwcDeps[i]; |
53 |
| - delete this[tracker[`_id`]]; |
54 |
| - } |
55 |
| - delete this.__mwcDeps; |
56 |
| - _.each(this.__mwcComputations,(c)=>{ |
| 77 | + detached: function detached() { |
| 78 | + _.each(this.__mwcComputations, function (c) { |
57 | 79 | c.stop();
|
58 | 80 | });
|
59 | 81 | this.__mwcComputations = [];
|
60 |
| - this.__mwcHandles.forEach((h)=>{ |
| 82 | + this.__mwcHandles.forEach(function (h) { |
61 | 83 | h.stop();
|
62 | 84 | });
|
63 |
| - this.__mwcBin.forEach((h)=>{ |
| 85 | + this.__mwcBin.forEach(function (h) { |
64 | 86 | h.stop();
|
65 | 87 | });
|
66 |
| - |
67 | 88 | },
|
68 |
| - _mwcPush(p,val) { |
69 |
| - let prop = _.clone(this[p]); |
| 89 | + _mwcPush: function _mwcPush(p, val) { |
| 90 | + var prop = _.clone(this[p]); |
70 | 91 | prop.push(val);
|
71 |
| - this.set(p,prop); |
| 92 | + this.set(p, prop); |
72 | 93 | },
|
73 |
| - guard(f) { |
| 94 | + guard: function guard(f) { |
74 | 95 | if (Meteor.isServer || !Tracker.currentComputation) {
|
75 | 96 | return f();
|
76 | 97 | }
|
77 | 98 |
|
78 |
| - let dep = new Tracker.Dependency(); |
| 99 | + var dep = new Tracker.Dependency(); |
79 | 100 | dep.depend();
|
80 | 101 |
|
81 |
| - let value, newValue; |
82 |
| - Tracker.autorun(comp => { |
| 102 | + var value = void 0, |
| 103 | + newValue = void 0; |
| 104 | + Tracker.autorun(function (comp) { |
83 | 105 | newValue = f();
|
84 | 106 | if (!comp.firstRun && !EJSON.equals(newValue, value)) {
|
85 | 107 | dep.changed();
|
|
88 | 110 | });
|
89 | 111 |
|
90 | 112 | return newValue;
|
91 |
| - |
92 | 113 | },
|
93 |
| - autorun(f){ |
94 |
| - const cb = (c)=> { |
95 |
| - if(!_.find(this.__mwcComputationsIds,(_id)=>{ |
| 114 | + autorun: function autorun(f) { |
| 115 | + var _this3 = this; |
| 116 | + |
| 117 | + var cb = function cb(c) { |
| 118 | + if (!_.find(_this3.__mwcComputationsIds, function (_id) { |
96 | 119 | return _id == c._id;
|
97 |
| - })){ |
98 |
| - this._mwcPush("__mwcComputationsIds",c._id); |
99 |
| - this._mwcPush("__mwcComputations",c); |
| 120 | + })) { |
| 121 | + _this3._mwcPush("__mwcComputationsIds", c._id); |
| 122 | + _this3._mwcPush("__mwcComputations", c); |
100 | 123 | }
|
101 |
| - f.bind(this)(c); |
| 124 | + f.bind(_this3)(c); |
102 | 125 | };
|
103 | 126 | return Tracker.autorun(cb.bind(this));
|
104 |
| - |
105 | 127 | },
|
106 |
| - _removeSubs(val){ |
107 |
| - const handles = _.reject(_.clone(this.__mwcHandles),(h)=>{ |
108 |
| - if(h.subscriptionId == val.subscriptionId){ |
| 128 | + _removeSubs: function _removeSubs(val) { |
| 129 | + var handles = _.reject(_.clone(this.__mwcHandles), function (h) { |
| 130 | + if (h.subscriptionId == val.subscriptionId) { |
109 | 131 | return true;
|
110 | 132 | }
|
111 | 133 | });
|
112 |
| - this._mwcPush('__mwcBin',val); |
113 |
| - this.set("__mwcHandles",handles); |
114 |
| - |
| 134 | + this._mwcPush('__mwcBin', val); |
| 135 | + this.set("__mwcHandles", handles); |
115 | 136 | },
|
116 |
| - subscribe() { |
117 |
| - const handle = Meteor.subscribe.apply(null,arguments); |
118 |
| - this._mwcPush("__mwcHandles",handle); |
| 137 | + subscribe: function subscribe() { |
| 138 | + var _this4 = this; |
| 139 | + |
| 140 | + var handle = Meteor.subscribe.apply(null, arguments); |
| 141 | + this._mwcPush("__mwcHandles", handle); |
119 | 142 | this._subsReady();
|
120 |
| - const afterSub = (c)=>{ |
| 143 | + var afterSub = function afterSub(c) { |
121 | 144 | if (handle.ready()) {
|
122 |
| - this._removeSubs(handle); |
123 |
| - this._subsReady(); |
| 145 | + _this4._removeSubs(handle); |
| 146 | + _this4._subsReady(); |
124 | 147 | c.stop();
|
125 |
| - |
126 | 148 | }
|
127 | 149 | };
|
128 | 150 | this.autorun(afterSub.bind(this));
|
129 | 151 |
|
130 | 152 | return handle;
|
131 | 153 | },
|
132 |
| - _subsReady(h) { |
133 |
| - const isReady = _.every(this.__mwcHandles, (sub)=> { |
| 154 | + _subsReady: function _subsReady(h) { |
| 155 | + var isReady = _.every(this.__mwcHandles, function (sub) { |
134 | 156 | return sub && sub.ready();
|
135 | 157 | });
|
136 |
| - this.set("subsReady",isReady); |
| 158 | + this.set("subsReady", isReady); |
137 | 159 | return isReady;
|
138 | 160 | },
|
139 |
| - |
140 |
| - getMeteorData(){ |
141 |
| - }, |
142 |
| - tracker(){ |
143 |
| - |
144 |
| - } |
| 161 | + getMeteorData: function getMeteorData() {}, |
| 162 | + tracker: function tracker() {} |
145 | 163 | };
|
146 |
| -const mwcDataUpdate = (element)=> { |
147 |
| - const data = element.getMeteorData(); |
| 164 | +var mwcDataUpdate = function mwcDataUpdate(element) { |
| 165 | + var data = element.getMeteorData(); |
148 | 166 | // if(element.getMeteorData()){
|
149 | 167 | // console.log("Use tracker instead of getMeteorData");
|
150 | 168 | // }
|
|
158 | 176 | return;
|
159 | 177 | }
|
160 | 178 |
|
161 |
| - Tracker.afterFlush(()=> { |
| 179 | + Tracker.afterFlush(function () { |
162 | 180 | element._mwcSetData(data);
|
163 | 181 | });
|
164 | 182 | };
|
|
0 commit comments