@@ -51,11 +51,16 @@ function passtype_to_str(type) {
5151}
5252
5353function stored_sites_table_append ( domain , site , type , loginname , count , ver ) {
54- type = passtype_to_str ( type ) ;
55- let tr = document . createElement ( 'tr' ) ;
56- tr . innerHTML = '<td>' + site + '<td><input class="domainvalue" type="text" data-old="' +
57- domain + '" value="' + domain + '"><td>' + loginname + '<td>' + count + '<td>' + type + '<td>' + ver +
58- '<td><img class="delete" src="delete.png">' ;
54+ let tr = document . importNode ( document . querySelector ( '#stored_sites_row' ) . content , true ) ;
55+ let x = tr . querySelector ( 'input.domainvalue' ) ;
56+ x . value = domain ;
57+ x . setAttribute ( 'data-old' , domain ) ;
58+ x = tr . querySelectorAll ( 'td' ) ;
59+ x [ 0 ] . textContent = site ;
60+ x [ 2 ] . textContent = loginname ;
61+ x [ 3 ] . textContent = count ;
62+ x [ 4 ] . textContent = passtype_to_str ( type ) ;
63+ x [ 5 ] . textContent = ver ;
5964
6065 document . querySelector ( '#stored_sites > tbody' ) . appendChild ( tr ) ;
6166}
@@ -153,23 +158,20 @@ function get_sitesearch(sitename) {
153158
154159function resolveConflict ( site ) {
155160 return new Promise ( function ( resolve , reject ) {
156- var div = document . createElement ( 'div' ) ;
157- div . style . cssText = "position:fixed;width:100%;height:100%;top:0;left:0;background:rgba(0,0,0,0.7);z-index:500" ;
158- div . innerHTML = [
159- '<div style="border:2px black inset;position:fixed;top:5em;left:5em;width:50%;background:white;padding: 1em"><h2>Conflicting ' ,
160- site . sitename ,
161- ' (<small>' , site . sitesearch , '</small>)' ,
162- '</h2><h3>existing</h3>' ,
163- 'type: ' , passtype_to_str ( stored_sites [ site . sitesearch ] [ site . sitename ] . type ) ,
164- ' count: ' , stored_sites [ site . sitesearch ] [ site . sitename ] . generation ,
165- ' username: ' , stored_sites [ site . sitesearch ] [ site . sitename ] . username ,
166- '<h3>importing</h3>' ,
167- 'type: ' , passtype_to_str ( site . passtype ) ,
168- ' count: ' , site . passcnt ,
169- ' username: ' , site . loginname ,
170- '<div style="padding-top:1em"><button id="existing">Keep existing</button> <button id="imported">Replace with imported</button></div>' ,
171- '</div>' ] . join ( '' ) ;
172- div . addEventListener ( 'click' , function ( ev ) {
161+ let existing = stored_sites [ site . sitesearch ] [ site . sitename ] ,
162+ div = document . querySelector ( '#conflict_resolve' ) ;
163+
164+ div . querySelector ( '.sitename' ) . textContent = site . sitename ;
165+ div . querySelector ( '.domainvalue' ) . textContent = site . sitesearch ;
166+ div . querySelector ( '.existing_type' ) . textContent = passtype_to_str ( existing . type ) ;
167+ div . querySelector ( '.existing_count' ) . textContent = existing . generation ;
168+ div . querySelector ( '.existing_username' ) . textContent = existing . username ;
169+
170+ div . querySelector ( '.new_type' ) . textContent = passtype_to_str ( site . passtype ) ;
171+ div . querySelector ( '.new_count' ) . textContent = site . passcnt ;
172+ div . querySelector ( '.new_username' ) . textContent = site . loginname ;
173+
174+ function click_handler ( ev ) {
173175 switch ( ev . target . id ) {
174176 case 'existing' :
175177 resolve ( stored_sites [ site . sitesearch ] [ site . sitename ] ) ;
@@ -179,11 +181,13 @@ function resolveConflict(site) {
179181 break ;
180182 default :
181183 return ;
182-
183184 }
184- div . parentNode . removeChild ( div ) ;
185- } ) ;
186- document . querySelector ( 'body' ) . appendChild ( div ) ;
185+ div . removeEventListener ( 'click' , click_handler ) ;
186+ div . style . display = 'none' ;
187+ }
188+
189+ div . addEventListener ( 'click' , click_handler ) ;
190+ div . style . display = '' ;
187191 } ) ;
188192}
189193
0 commit comments