</label>
</div>
</div>
- <div class="col-md-12">
- <table class="table table-striped">
- <thead>
- <th>
- <div class="input-group">
- <span>Path</span>
- <button class="index-toggle">Toggle</button>
- </div>
- </th>
- <th>
- <div class="input-group">
- <span>Address</span>
- <button class="address-toggle">Toggle</button>
- </div>
- </th>
- <th>
- <div class="input-group">
- <span>Public Key</span>
- <button class="public-key-toggle">Toggle</button>
- </div>
- </th>
- <th>
- <div class="input-group">
- <span>Private Key</span>
- <button class="private-key-toggle">Toggle</button>
- </div>
- </th>
- </thead>
- <tbody class="addresses monospace">
- <tr><td> </td><td> </td><td> </td><td> </td></tr>
- <tr><td> </td><td> </td><td> </td><td> </td></tr>
- <tr><td> </td><td> </td><td> </td><td> </td></tr>
- <tr><td> </td><td> </td><td> </td><td> </td></tr>
- <tr><td> </td><td> </td><td> </td><td> </td></tr>
- </tbody>
- </table>
+ <ul class="addresses-type nav nav-tabs" role="tablist">
+ <li id="table-tab" class="active">
+ <a href="#table" role="tab" data-toggle="tab">Table</a>
+ </li>
+ <li id="csv-tab">
+ <a href="#csv" role="tab" data-toggle="tab">CSV</a>
+ </li>
+ </ul>
+ <div class="addresses-type tab-content">
+ <div id="table" class="tab-pane active">
+ <div class="col-md-12">
+ <table class="table table-striped">
+ <thead>
+ <th>
+ <div class="input-group">
+ <span>Path</span>
+ <button class="index-toggle">Toggle</button>
+ </div>
+ </th>
+ <th>
+ <div class="input-group">
+ <span>Address</span>
+ <button class="address-toggle">Toggle</button>
+ </div>
+ </th>
+ <th>
+ <div class="input-group">
+ <span>Public Key</span>
+ <button class="public-key-toggle">Toggle</button>
+ </div>
+ </th>
+ <th>
+ <div class="input-group">
+ <span>Private Key</span>
+ <button class="private-key-toggle">Toggle</button>
+ </div>
+ </th>
+ </thead>
+ <tbody class="addresses monospace">
+ <tr><td> </td><td> </td><td> </td><td> </td></tr>
+ <tr><td> </td><td> </td><td> </td><td> </td></tr>
+ <tr><td> </td><td> </td><td> </td><td> </td></tr>
+ <tr><td> </td><td> </td><td> </td><td> </td></tr>
+ <tr><td> </td><td> </td><td> </td><td> </td></tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div id="csv" class="tab-pane">
+ <div class="col-md-12">
+ <textarea class="csv form-control" rows="25" readonly></textarea>
+ </div>
+ </div>
</div>
</div>
<span>Show</span>
DOM.useBitpayAddressesContainer = $(".use-bitpay-addresses-container");
DOM.useBitpayAddresses = $(".use-bitpay-addresses");
DOM.addresses = $(".addresses");
+ DOM.csvTab = $("#csv-tab a");
+ DOM.csv = $(".csv");
DOM.rowsToAdd = $(".rows-to-add");
DOM.more = $(".more");
DOM.moreRowsStartIndex = $(".more-rows-start-index");
DOM.addressToggle.on("click", toggleAddresses);
DOM.publicKeyToggle.on("click", togglePublicKeys);
DOM.privateKeyToggle.on("click", togglePrivateKeys);
+ DOM.csvTab.on("click", updateCsv);
DOM.languages.on("click", languageChanged);
DOM.useBitpayAddresses.on("change", useBitpayAddressesChange);
setQrEvents(DOM.showQrEls);
addAddressToList(indexText, address, pubkey, privkey);
if (isLast) {
hidePending();
+ updateCsv();
}
}, 50)
}
function clearAddressesList() {
DOM.addresses.empty();
+ DOM.csv.val("");
stopGenerating();
}
DOM.entropyWordIndexes.text(wordIndexesStr);
}
+ function updateCsv() {
+ var tableCsv = "path,address,public key,private key\n";
+ var rows = DOM.addresses.find("tr");
+ for (var i=0; i<rows.length; i++) {
+ var row = $(rows[i]);
+ var cells = row.find("td");
+ for (var j=0; j<cells.length; j++) {
+ var cell = $(cells[j]);
+ if (!cell.children().hasClass("invisible")) {
+ tableCsv = tableCsv + cell.text();
+ }
+ if (j != cells.length - 1) {
+ tableCsv = tableCsv + ",";
+ }
+ }
+ tableCsv = tableCsv + "\n";
+ }
+ DOM.csv.val(tableCsv);
+ }
+
var networks = [
{
name: "BCH - Bitcoin Cash",
});
});
+it('Can display the table as csv', function(done) {
+ var headings = "path,address,public key,private key";
+ var row1 = "m/44'/0'/0'/0/0,1Di3Vp7tBWtyQaDABLAjfWtF6V7hYKJtug,033f5aed5f6cfbafaf223188095b5980814897295f723815fea5d3f4b648d0d0b3,L26cVSpWFkJ6aQkPkKmTzLqTdLJ923e6CzrVh9cmx21QHsoUmrEE";
+ var row20 = "m/44'/0'/0'/0/19,1KhBy28XLAciXnnRvm71PvQJaETyrxGV55,02b4b3e396434d8cdd20c03ac4aaa07387784d5d867b75987f516f5705ee68cb3a,L4GrDrjReMsCAu5DkLXn79jSb95qR7Zfx7eshybCQZ1qL32MXJab";
+ driver.findElement(By.css('.phrase'))
+ .sendKeys('abandon abandon ability');
+ driver.sleep(generateDelay).then(function() {
+ driver.findElement(By.css('.csv'))
+ .getAttribute("value")
+ .then(function(csv) {
+ expect(csv).toContain(headings);
+ expect(csv).toContain(row1);
+ expect(csv).toContain(row20);
+ done();
+ });
+ });
+});
+
});