member.csv to DynamoDB

by Dominic Myers

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/4.1.4/papaparse.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.3.8/css/fileinput.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-fileinput/4.3.8/js/fileinput.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.1.3/toastr.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/2.1.3/toastr.min.js"></script>
<div class="container">
    <form>
        <div class="form-group">
            <label class="control-label">Select File</label>
            <input id="input" type="file" class="file" data-show-preview="false">
        </div>
    </form>
    <pre id="output" style="display:none;"></pre>
</div>

CSS

pre {
    outline: 1px solid #ccc;
    padding: 5px;
    margin: 5px;
}

.string {
    color: green;
}

.number {
    color: darkorange;
}

.boolean {
    color: blue;
}

.null {
    color: magenta;
}

.key {
    color: red;
}

JavaScript

let syntaxHighlight = (json) => json
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, (match) => {
        var cls = 'number';
        if (/^"/.test(match)) {
            if (/:$/.test(match)) {
                cls = 'key';
            } else {
                cls = 'string';
            }
        } else if (/true|false/.test(match)) {
            cls = 'boolean';
        } else if (/null/.test(match)) {
            cls = 'null';
        }
        return '<span class="' + cls + '">' + match + '</span>';
    });

$("form").on("click", ".fileinput-upload", (e) => {
    e.preventDefault();
    if (window.File && window.FileReader && window.FileList && window.Blob) {
        var files = document.getElementById("input").files;
        if (files[0].type === "application/vnd.ms-excel") {
            data = [];
            Papa.parse(files[0], {
                "download": true,
                "header": true,
                "dynamicTyping": true,
                "complete": results => {
                    let data = [];
                    let Status = ["Unpaid", "Paid", "Subscriber"];
                    results.data.forEach((element) => {
                        let index = data.findIndex(e => e.Date === element.date);
                        if (index === -1) {
                            if (element.username === "Others") {
                                let Attendance = [];
                                for (let i = 0; i < element.name; i++) {
                                    Attendance.push({
                                        "Name": "Unknown",
                                        "User": "Unknown",
                                        "Status": Status[1]
                                    });
                                }
                                data.push({
                        ...