1- import app , { Component } from 'apprun'
1+ import { app , Component } from 'apprun' ;
22import Store from './store' ;
33
44const store = new Store ( ) ;
55
66const update = {
7- '#benchmark' : ( store ) => store ,
87
98 run ( store ) {
109 store . run ( ) ;
@@ -17,20 +16,16 @@ const update = {
1716 } ,
1817
1918 remove ( store , id ) {
20- document . getElementById ( id ) . remove ( ) ;
2119 store . delete ( id ) ;
22- store . no_render = true ;
23- return store ;
20+ document . getElementById ( id ) . remove ( ) ;
2421 } ,
2522
2623 select ( store , id ) {
2724 if ( store . selected ) {
2825 document . getElementById ( store . selected ) . className = '' ;
2926 }
30- document . getElementById ( id ) . className = 'danger' ;
3127 store . select ( id ) ;
32- store . no_render = true ;
33- return store ;
28+ document . getElementById ( id ) . className = 'danger' ;
3429 } ,
3530
3631 update ( store ) {
@@ -45,7 +40,7 @@ const update = {
4540
4641 clear ( store ) {
4742 store . clear ( ) ;
48- return store ;
43+ document . getElementById ( "main-table" ) . innerHTML = "" ;
4944 } ,
5045
5146 swaprows ( store ) {
@@ -55,12 +50,8 @@ const update = {
5550}
5651
5752const view = ( model ) => {
58- if ( model . no_render ) {
59- delete model . no_render ;
60- return ;
61- }
6253 const rows = model . data . map ( ( curr ) => {
63- const selected = curr . id == model . selected ? 'danger' : '' ;
54+ const selected = curr . id == model . selected ? 'danger' : undefined ;
6455 const id = curr . id ;
6556 return < tr className = { selected } id = { id } key = { id } >
6657 < td className = "col-md-1" > { id } </ td >
@@ -76,7 +67,7 @@ const view = (model) => {
7667 </ tr > ;
7768 } ) ;
7869
79- return ( < div className = "container" >
70+ return ( < div className = "container" onclick = { click } >
8071 < div className = "jumbotron" >
8172 < div className = "row" >
8273 < div className = "col-md-6" >
@@ -106,7 +97,7 @@ const view = (model) => {
10697 </ div >
10798 </ div >
10899 </ div >
109- < table className = "table table-hover table-striped test-data" >
100+ < table className = "table table-hover table-striped test-data" id = "main-table" >
110101 < tbody >
111102 { rows }
112103 </ tbody >
@@ -125,7 +116,7 @@ const getId = (elem) => {
125116 return undefined ;
126117}
127118
128- document . body . addEventListener ( ' click' , e => {
119+ const click = ( e ) => {
129120 const t = e . target as HTMLElement ;
130121 if ( ! t ) return ;
131122 if ( t . tagName === 'BUTTON' && t . id ) {
@@ -138,10 +129,11 @@ document.body.addEventListener('click', e => {
138129 e . preventDefault ( ) ;
139130 component . run ( 'select' , getId ( t ) ) ;
140131 }
141- } ) ;
132+ } ;
142133
143- app . on ( '//' , _ => { } )
144- app . on ( '#' , _ => { } )
145-
146- let component = new Component ( store , view , update ) ;
134+ const component = new Component ( store , view , update ) ;
135+ component [ '-patch-vdom-on' ] = true ;
136+ component . rendered = ( ) => {
137+ store . selected && ( document . getElementById ( store . selected ) . className = 'danger' ) ;
138+ }
147139component . start ( document . getElementById ( 'main' ) ) ;
0 commit comments