Skip to content

Commit ebb80f6

Browse files
committed
Updated Eventiveness
1 parent 44aaebb commit ebb80f6

File tree

6 files changed

+195
-172
lines changed

6 files changed

+195
-172
lines changed

frameworks/keyed/eventiveness/package-lock.json

Lines changed: 71 additions & 71 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frameworks/keyed/eventiveness/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"js-framework-benchmark": {
77
"frameworkVersionFromPackage": "@markersunny/eventiveness",
88
"frameworkHomeURL": "https://github.com/markersunny/eventiveness",
9-
"frameworkVersion": "0.9.9",
9+
"frameworkVersion": "0.9.954",
1010
"issues": [
1111
772
1212
]
@@ -28,7 +28,7 @@
2828
},
2929
"devDependencies": {
3030
"@rollup/plugin-node-resolve": "^15.2.3",
31-
"eventiveness": "^0.9.9",
31+
"eventiveness": "^0.9.954",
3232
"rollup": "^4.14.2"
3333
}
3434
}

frameworks/keyed/eventiveness/src/Main.js

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,28 @@
1-
import { createTree } from 'eventiveness/apriori';
2-
import { apply, set, parentSelector } from 'eventiveness/appliance';
3-
import { preventDefault, stopPropagation, eventListener, matchEventListener} from 'eventiveness/domitory';
4-
import { one } from 'eventiveness/onetomany';
5-
import {range} from 'eventiveness/generational';
61

2+
import { arrayTemplate, createFragment } from 'eventiveness/apriori';
3+
import { apply, parentSelector } from 'eventiveness/appliance';
4+
import { set, update } from 'eventiveness/domitory';
5+
import { preventDefault, stopPropagation, eventListener, matchListener} from 'eventiveness/eventivity';
6+
import { one } from 'eventiveness/onetomany';
7+
import {range, items} from 'eventiveness/generational';
78

89
function _random(max) {return Math.round(Math.random() * 1000) % max;}
910
const adjectives = ["pretty", "large", "big", "small", "tall", "short", "long", "handsome", "plain", "quaint", "clean", "elegant", "easy", "angry", "crazy", "helpful", "mushy", "odd", "unsightly", "adorable", "important", "inexpensive", "cheap", "expensive", "fancy"];
1011
const colours = ["red", "yellow", "blue", "green", "pink", "brown", "purple", "brown", "white", "black", "orange"];
1112
const nouns = ["table", "chair", "house", "bbq", "desk", "car", "pony", "cookie", "sandwich", "burger", "pizza", "mouse", "keyboard"];
1213

14+
const itemTemplate = arrayTemplate(`
15+
<tr>
16+
<td class='col-md-1'>\${indices[item]}</td>
17+
<td class='col-md-4'><a class='lbl'>\${data[item]}</a></td>
18+
<td class='col-md-1'>
19+
<a class='remove'>
20+
<span class='remove glyphicon glyphicon-remove' aria-hidden='true'></span>
21+
</a>
22+
</td>
23+
<td class='col-md-6'></td>
24+
</tr>
25+
`, ['indices', 'data']);
1326

1427
function data() {
1528
return {
@@ -46,7 +59,7 @@ function data() {
4659
},
4760
remove(element, context) {
4861
const index = Array.from(element.parentNode.children).indexOf(element);
49-
context.indices.splice(index); context.data.splice(index);
62+
context.indices.splice(index, 1); context.data.splice(index, 1);
5063
}
5164
}
5265
}
@@ -58,20 +71,22 @@ function view(table) {
5871
this.append(n, context);
5972
},
6073
append(n, context) {
61-
let markup = [], length = context.data.length;
62-
for (let i = length - n; i < length; i++) markup.push(`<tr><td class='col-md-1'>${context.indices[i]}</td><td class='col-md-4'><a class='lbl'>${context.data[i]}</a></td><td class='col-md-1'><a class='remove'><span class='remove glyphicon glyphicon-remove' aria-hidden='true'></span></a></td><td class='col-md-6'></td></tr>`);
63-
table.append(createTree(markup.join('')));
74+
const length = context.data.length;
75+
const renderedItems = itemTemplate(range(length - n, length), context.indices, context.data);
76+
table.append(createFragment(renderedItems));
6477
},
6578
update(context) {
66-
set('a.lbl', [...range(0, context.data.length, 10)],
67-
{textContent: context.data}, table);
79+
apply({
80+
'a.lbl': (...labels) => {
81+
const indices = [...range(0, context.data.length, 10)]
82+
set(items(labels, indices), {textContent: items(context.data, indices)})
83+
}
84+
}, table);
6885
},
6986
clear(context) {table.innerHTML = '';},
7087
swap(context) {
7188
if (table.children.length >= 999) {
72-
const e998 = table.children[998];
73-
table.replaceChild(table.children[1], e998);
74-
table.insertBefore(e998, table.children[1]);
89+
update([...items(table.children, [1, 998])], [...items(table.children, [998, 1])]);
7590
}
7691
},
7792
remove(element, context) {table.removeChild(element);}
@@ -80,7 +95,7 @@ function view(table) {
8095

8196
apply({
8297
'tbody': table => {
83-
const component = one([data(), view(table)]);
98+
const component = one([data(), view(table)], false, [{}]);
8499

85100
let selected;
86101
function select(node) {
@@ -97,7 +112,7 @@ apply({
97112
component.remove([parentSelector(e.target, 'tr')]);
98113
};
99114

100-
table.addEventListener('click', matchEventListener({
115+
table.addEventListener('click', matchListener({
101116
'a.lbl': e => select(e.target.parentNode.parentNode),
102117
'span.remove': eventListener([removeListener, preventDefault, stopPropagation], {})
103118
}));

0 commit comments

Comments
 (0)