@@ -51,11 +51,16 @@ function passtype_to_str(type) {
51
51
}
52
52
53
53
function 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 ;
59
64
60
65
document . querySelector ( '#stored_sites > tbody' ) . appendChild ( tr ) ;
61
66
}
@@ -153,23 +158,20 @@ function get_sitesearch(sitename) {
153
158
154
159
function resolveConflict ( site ) {
155
160
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 ) {
173
175
switch ( ev . target . id ) {
174
176
case 'existing' :
175
177
resolve ( stored_sites [ site . sitesearch ] [ site . sitename ] ) ;
@@ -179,11 +181,13 @@ function resolveConflict(site) {
179
181
break ;
180
182
default :
181
183
return ;
182
-
183
184
}
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 = '' ;
187
191
} ) ;
188
192
}
189
193
0 commit comments