Shegsdev/Banka

View on GitHub
client/views/user/transaction-single.html

Summary

Maintainability
Test Coverage
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Banka | My Account</title>
    <link rel="icon" type="image/x-icon" href="../../assets/img/logo.png">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="../../assets/css/main.css">
    <link rel="stylesheet" type="text/css" href="../../assets/css/responsive.css">
</head>
<body>
    <!-- Progress Bar -->
    <span class="progress-bar"></span>
    <nav id="ad-nav">
        <a href="../../../index.html">
            <div id="logo">
                <img src="../../assets/img/logo.png" alt="logo">
            </div>
        </a>
        <div class="ad-nav-right">
            <img id="avatar"
                onclick="openDropDown(true)" 
                class="dropbtn"
                src="../../assets/img/avatar.png" 
            />
            <!-- Dropdown content -->
            <div class="dropdown-content" id="dropdown">
                <a href="#" onclick="event.preventDefault();return logout();">
                    <i class="fas fa-info-circle"></i>
                    Logout
                </a>
            </div>
            <!-- Hamburger links -->
            <a href="#" onclick="event.preventDefault();openSlideMenu(this)">
                <span class="open-slide">
                    <i class="fas fa-align-right fa-2x"></i>
                </span>
            </a>

            <!-- Toast -->
            <div class="toast success">
                <img src="../../assets/img/check-mark.gif" alt="check-mark">
            </div>
            <div class="toast error">
                <img src="../../assets/img/cross-mark.jpg" alt="cross-mark">
            </div>

            <!-- Side nav -->
            <div id="side-menu" class="side-nav">
                <li><a href="profile.html">Dashboard</a></li>
                <li><a href="transactions.html">My transactions</a></li>
                <li onclick="event.preventDefault();return logout();"><a href="#">Logout</a></li>
            </div>
        </div>
    </nav>
    <div class="ad-main">
        <section>
            <aside>
                <ul>
                    <a href="profile.html">
                        <li>
                            <i class="fas fa-chart-line"></i>
                            Dashboard
                        </li>
                    </a>
                    <a href="transactions.html">
                        <li style="background: #076969">
                            <i class="fas fa-history"></i>
                            My transactions
                        </li>
                    </a>
                    <a href="#">
                        <li onclick="event.preventDefault();return logout();">
                            <i class="fas fa-info-circle"></i>
                            Logout
                        </li>
                    </a>
                </ul>
            </aside>
        </section>

        <section class="ad-main-showcase">
            <span class="back" onclick="window.history.back()">
                <i class="fas fa-arrow-left fa-2x"></i>
            </span>
            <header><h2>Transaction details</h2></header>
            <section class="single">
            </section>
            <hr/>
            
        </section>
    </div>

    <script>
        document.addEventListener("DOMContentLoaded", () => {
            withAuth();
            const token = getAuthToken();
            const config = {
                headers: {
                    'Content-Type': 'application/json',
                    'x-access-token': token
                }
            };
            const email = getUser();

            // Get specific transaction details
            (function() {
                const start = new Date();
                const url = new URL(env.url());
                const transactionId = sessionStorage.getItem('transactionId');
                if (!transactionId) throw new Error('Can not fetch transaction details.');
                fetch(`${url.href}/transactions/${transactionId}/`, config)
                    .then(response => response.json())
                    .then(json => {
                        if (json.status < 300) {
                            const transaction = json.data;
                            const date = new Date(transaction.createdOn);
                            const section = document.querySelector('.single');
                            section.innerHTML =
                            `<p>Transaction ID: ${transaction.transactionId}</p>
                            <p>Date: ${date.toUTCString()}</p>
                            <p>Type: ${transaction.type}</p>
                            <p>Amount: ${transaction.amount}</p>
                            <p>New balance: ${transaction.newBalance}</p>
                            `;
                            return handleLoadingComplete(false, 1, '#fff')
                        } else {
                            showToast(false, errorResponse(json.error));
                            return handleLoadingComplete(true, 1)
                        }
                    }).
                    catch(error => {
                        showToast(false, 'Try again');
                        return handleLoadingComplete(true, new Date().getMilliseconds() - start.getMilliseconds())
                    });
                    return null;
            })();
        });
    </script>
    <script src="../../assets/js/main.js"></script>
    <script src="../../assets/js/utils.js"></script>
    <script src="../../assets/js/middleware.js"></script>
    <script src="../../assets/js/dashboard.js"></script>
    <script defer src="https://use.fontawesome.com/releases/v5.8.1/js/all.js" integrity="sha384-g5uSoOSBd7KkhAMlnQILrecXvzst9TdC09/VM+pjDTCM+1il8RHz5fKANTFFb+gQ" crossorigin="anonymous"></script>
</body>
</html>