Monapartyで何か作ってみる備忘録的な_2

久々にTOKENBATTLEの改良中。

将来の自分の参考に、書いてるプログラムを一部切り出して載せてみます。

これだけ書けば

  1. 記入されたアドレスを読み取って、
  2. そのアドレスが持っているアセットを調べて、
  3. その中でモナカード化されているものを5つ出す

ということができます。

このままだと被りが出てしまうので、その辺の処理は各自で。

動作イメージ。

参考

jQueryでJSONをPOSTしてJSONのレスポンスを受け取る

Counterpartyでアプリを簡単に作ろう!

乱数を生成する(Math.random)

JavaScriptで指定した要素が配列に存在するかチェックする方法を現役エンジニアが解説【初心者向け】

monacard_API(httpsに注意!)

[JavaScript] null とか undefined とか 0 とか 空文字('') とか false とかの判定について

JavaScriptでオブジェクトの内容が知りたい時

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>jQuery TEST</title>
</head>
<body>
  <div class="control-group">
    <label class="control-label" for="address">アドレス</label>
    <div class="controls">
      <input id="address" type="text" value="" />
    </div>
  </div>
  <div class="control-group">
    <label class="control-label" for="num_asset">所持アセット数</label>
    <div class="controls">
      <input id="num_asset" type="text" value="" />
    </div>
  </div>
  <div class="control-group">
    <label class="control-label" for="name_asset_1">カード1</label>
    <div class="controls">
      <input id="name_asset_1" type="text" value="" />
    </div>
    <div class="control-group">
      <label class="control-label" for="name_asset_2">カード2</label>
      <div class="controls">
        <input id="name_asset_2" type="text" value="" />
      </div>
      <div class="control-group">
        <label class="control-label" for="name_asset_3">カード3</label>
        <div class="controls">
          <input id="name_asset_3" type="text" value="" />
        </div>
        <div class="control-group">
          <label class="control-label" for="name_asset_4">カード4</label>
          <div class="controls">
            <input id="name_asset_4" type="text" value="" />
          </div>
          <div class="control-group">
            <label class="control-label" for="name_asset_5">カード5</label>
            <div class="controls">
              <input id="name_asset_5" type="text" value="" />
            </div>
          </div>
          <div class="control-group">
            <div class="controls">
              <button id="update" type="button">更新</button>
            </div>
          </div>
          </form>
          <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
          <!-- <script>
            $.getJSON('http://card.mona.jp/api/card_list', (data) => {
              $('#address').val(JSON.stringify(data[0]));
            });
          </script> -->
          <script>
            $("button#update").click(function () {
              // 多重送信を防ぐため通信完了までボタンをdisableにする
              var button = $(this);
              button.attr("disabled", true);
              // 各フィールドから値を取得してJSONデータを作成
              var data = {
                params: {
                  addresses: [$("#address").val()]
                },
                id: 0,
                jsonrpc: "2.0",
                method: "get_normalized_balances"
              };

var card_list;

              $.ajaxSetup({ async: false });//同期通信(json取ってくるまで待つ)
              $.getJSON('https://card.mona.jp/api/card_list', (dataaa) => {
                card_list = dataaa.list;
              });
              $.ajaxSetup({ async: true });
              // 通信実行
              $.ajax({
                type: "post", // method = "POST"
                url: "https://wallet.monaparty.me/_api", // POST送信先のURL
                data: JSON.stringify(data), // JSONデータ本体
                contentType: 'application/json', // リクエストの Content-Type
                dataType: "json", // レスポンスをJSONとしてパースする
                success: function (json_data) { // 200 OK時

$('#num_asset').val(Object.keys(json_data['result']).length);

                  let i = 0;
                  do {
                    i += 1;
                    do {
                      let rand = Math.floor(Math.random() * (Object.keys(json_data['result']).length + 1 - 1)) + 1 - 1;
                      if (!json_data.result[rand].asset_longname) {
                        var card = json_data.result[rand].asset;
                      } else {
                        var card = json_data.result[rand].asset_longname;
                      }

} while (!card_list.includes(card));

                    $('#name_asset_' + i).val(card);

} while (i < 5);

                  // $('#name_asset_5').val(JSON.stringify(json_data));

alert("Transaction complete. ");

                },
                error: function () { // HTTPエラー時
                  alert("Server Error. Pleasy try again later.");
                },
                complete: function () { // 成功・失敗に関わらず通信が終了した際の処理
                  button.attr("disabled", false); // ボタンを再び enableにする
                }

});

            });
          </script>
</body>

</html>

コメントを残す

メールアドレスが公開されることはありません。