diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-09-21 20:36:03 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-09-21 20:36:03 +0200 |
| commit | 552011b0545f5b03bcc57eb5e543a7b9ac7ad137 (patch) | |
| tree | 4f57076cdbe98f45c10904aeb276c2dc1bcd4c79 | |
| parent | d95f7710546ec95c80b963d3ead49e2c8ced983a (diff) | |
| download | shrinker-552011b0545f5b03bcc57eb5e543a7b9ac7ad137.tar.gz shrinker-552011b0545f5b03bcc57eb5e543a7b9ac7ad137.zip | |
optimize item functions
| -rw-r--r-- | worker.js | 97 |
1 files changed, 43 insertions, 54 deletions
@@ -494,45 +494,38 @@ amqp.connect(RABBITMQ_URI).then(async (rabbit) => { // TODO rm some duplicated code here // { item id: count } item_grants: dynamicColumn([].concat(... + (() => { + // TODO refactor this + const items = new Map(); // key, value, key, value, … - telemetry.data.filter((ev, idx) => - ev.actor == p - && ev.type == "BuyItem" - // filter for first event with same item - && telemetry.data.findIndex((_ev) => - _ev.actor == p - && _ev.type == ev.type - && _ev.payload.Item == ev.payload.Item - ) == idx - ).map((ev) => [ - item_db_map.get(api_name_mappings.get(ev.payload.Item)), - // count(*) - telemetry.data.filter((_ev) => - _ev.actor == ev.actor - && _ev.type == ev.type - && _ev.payload.Item == ev.payload.Item - ).length - ]) + telemetry.data.forEach((ev) => { + if (ev.actor == p && ev.type == "BuyItem") { + const item = item_db_map.get( + api_name_mappings.get(ev.payload.Item) + ); + if (!items.has(item)) items.set(item, 0); + items.set(item, items.get(item)+1); + } + }); + return [...items.entries()]; + })() )), item_sells: dynamicColumn([].concat(... - telemetry.data.filter((ev, idx) => - ev.actor == p - && ev.type == "SellItem" - // filter for first event with same item - && telemetry.data.findIndex((_ev) => - _ev.actor == p - && _ev.type == ev.type - && _ev.payload.Item == ev.payload.Item - ) == idx - ).map((ev) => [ - item_db_map.get(api_name_mappings.get(ev.payload.Item)), - // count(*) - telemetry.data.filter((_ev) => - _ev.actor == ev.actor - && _ev.type == ev.type - && _ev.payload.Item == ev.payload.Item - ).length - ]) + (() => { + const items = new Map(); + // key, value, key, value, … + telemetry.data.forEach((ev) => { + if (ev.actor == p && ev.type == "SellItem") { + const item = item_db_map.get( + api_name_mappings.get(ev.payload.Item)); + if (!items.has(item)) { + items.set(item, 0); + } + items.set(item, items.get(item)+1); + } + }); + return [...items.entries()]; + })() )), ability_a_uses: telemetry.data.filter((ev) => ev.actor == p @@ -673,24 +666,20 @@ amqp.connect(RABBITMQ_URI).then(async (rabbit) => { : acc , 0), item_uses: dynamicColumn([].concat(... - telemetry.data.filter((ev, idx) => - ev.actor == p - && ev.type == "UseItemAbility" - // filter for first event with same item - && telemetry.data.findIndex((_ev) => - _ev.actor == p - && _ev.type == ev.type - && _ev.payload.Ability == ev.payload.Ability - ) == idx - ).map((ev) => [ - item_db_map.get(api_name_mappings.get(ev.payload.Ability)), - // count(*) - telemetry.data.filter((_ev) => - _ev.actor == ev.actor - && _ev.type == ev.type - && _ev.payload.Ability == ev.payload.Ability - ).length - ]) + (() => { + const items = new Map(); + // key, value, key, value, … + telemetry.data.forEach((ev) => { + if (ev.actor == p && ev.type == "UseItemAbility") { + const item = item_db_map.get( + api_name_mappings.get(ev.payload.Ability) + ); + if (!items.has(item)) items.set(item, 0); + items.set(item, items.get(item)+1); + } + }); + return [...items.entries()]; + })() )), player_damage: null, // TODO draft_position: telemetry.data.filter((ev) => |
