]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/BIP39.git/blobdiff - src/js/index.js
fixed spacing, added missing tag
[perso/Immae/Projets/Cryptomonnaies/BIP39.git] / src / js / index.js
index f8b67616c530af1ae84c873a7302f6d59781ac20..c610d29d436cb38e98293357c573a674901c19ed 100644 (file)
@@ -6,15 +6,27 @@
     var network = Bitcoin.networks.bitcoin;
     var addressRowTemplate = $("#address-row-template");
 
+    var showIndex = true;
+    var showAddress = true;
+    var showPrivKey = true;
+
     var phraseChangeTimeoutEvent = null;
 
     var DOM = {};
+    DOM.network = $(".network");
+    DOM.phraseNetwork = $("#network-phrase");
+    DOM.bip44Network = $("#network-bip44");
+    DOM.addressNetwork = $("#network-address-type");
     DOM.phrase = $(".phrase");
     DOM.passphrase = $(".passphrase");
     DOM.generate = $(".generate");
     DOM.rootKey = $(".root-key");
     DOM.extendedPrivKey = $(".extended-priv-key");
     DOM.extendedPubKey = $(".extended-pub-key");
+    DOM.bip32tab = $("#bip32-tab");
+    DOM.bip44tab = $("#bip44-tab");
+    DOM.bip32panel = $("#bip32");
+    DOM.bip44panel = $("#bip44");
     DOM.bip32path = $("#bip32-path");
     DOM.bip44path = $("#bip44-path");
     DOM.bip44purpose = $("#bip44 .purpose");
@@ -35,6 +47,7 @@
 
     function init() {
         // Events
+        DOM.network.on("change", networkChanged);
         DOM.phrase.on("input", delayedPhraseChanged);
         DOM.passphrase.on("input", delayedPhraseChanged);
         DOM.generate.on("click", generateClicked);
 
     // Event handlers
 
+    function networkChanged(e) {
+        var n = e.target.value;
+        if (n == "bitcoin") {
+            network = Bitcoin.networks.bitcoin;
+            DOM.bip44coin.val(0);
+            setBip44DerivationPath();
+            enableBip44Tab();
+        }
+        else if (n == "bitcoin-testnet") {
+            network = Bitcoin.networks.testnet;
+            DOM.bip44coin.val(1);
+            setBip44DerivationPath();
+            enableBip44Tab();
+        }
+        else if (n == "litecoin") {
+            network = Bitcoin.networks.litecoin;
+            DOM.bip44coin.val(2);
+            setBip44DerivationPath();
+            enableBip44Tab();
+        }
+        else if (n == "dogecoin") {
+            network = Bitcoin.networks.dogecoin;
+            //disableBip44Tab();
+        }
+        DOM.phraseNetwork.val(n);
+        DOM.bip44Network.val(n);
+        if(e.target != DOM.addressNetwork.dom){
+            DOM.addressNetwork.val(n);
+        }
+        delayedPhraseChanged();
+    }
+
     function delayedPhraseChanged() {
         hideValidationError();
         showPending();
     }
 
     function toggleIndexes() {
+        showIndex = !showIndex;
         $("td.index span").toggleClass("invisible");
     }
 
     function toggleAddresses() {
+        showAddress = !showAddress;
         $("td.address span").toggleClass("invisible");
     }
 
     function togglePrivateKeys() {
+        showPrivKey = !showPrivKey;
         $("td.privkey span").toggleClass("invisible");
     }
 
 
     function addAddressToList(index, address, privkey) {
         var row = $(addressRowTemplate.html());
-        row.find(".index span").text(index);
-        row.find(".address span").text(address);
-        row.find(".privkey span").text(privkey);
+        // Elements
+        var indexCell = row.find(".index span");
+        var addressCell = row.find(".address span");
+        var privkeyCell = row.find(".privkey span");
+        // Content
+        indexCell.text(index);
+        addressCell.text(address);
+        privkeyCell.text(privkey);
+        // Visibility
+        if (!showIndex) {
+            indexCell.addClass("invisible");
+        }
+        if (!showAddress) {
+            addressCell.addClass("invisible");
+        }
+        if (!showPrivKey) {
+            privkeCell.addClass("invisible");
+        }
         DOM.addresses.append(row);
     }
 
             .hide();
     }
 
+    function enableBip44Tab() {
+        // show bip44 tab (but don't select it)
+        DOM.bip44tab.removeClass("hidden");
+        DOM.bip44panel.removeClass("hidden");
+    }
+
+    function disableBip44Tab() {
+        // hide bip44 tab
+        DOM.bip44tab.addClass("hidden");
+        DOM.bip44tab.removeClass("active");
+        // hide bip44 panel
+        DOM.bip44panel.addClass("hidden");
+        DOM.bip44panel.removeClass("active");
+        // show bip32 tab
+        DOM.bip32tab.addClass("active");
+        // show bip32 panel
+        DOM.bip32panel.addClass("active");
+        // set the derivation path
+        var activePath = $("#bip32 .path");
+        derivationPath = activePath.val();
+    }
+
     init();
 
 })();