Snippets

Zenduit Team Compliance test

You are viewing an old version of this snippet. View the current version.
Revised by Muen Zhang df6b650
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">

    <title>Compliance Report</title>

    <link rel="stylesheet" href="https://storage.googleapis.com/compliance-report/signature-pad.css">
</head>
<body>

<div id="compliance-content" style="overflow:scroll-y ;width:auto; padding: 3.8rem;height: 100%" class="panel">
    <!--<div id="signature" style="display: flex">-->
    <!--<p align="right" style="width: 30%; margin-right: 10px">Signature</p>-->
    <!--<canvas id="myCanvas" height="100" style="border:1px solid #000000;width: 60%"></canvas>-->
    <!--</div>-->
    <p style="margin-top: 0;margin-bottom: 0;"> I have verified my logs for <span
            id="daterange"></span></p>
    <div align="right" style="margin-bottom: 10px;">
        <img src="https://cdn.rawgit.com/NikitaNO/compliancereport/master/src/eraser-24.png" id="clear">
    </div>

    <div id="signature-pad" style="position:static" class="m-signature-pad">
        <p>Sign here</p>
        <div class="m-signature-pad--body">
            <canvas ></canvas>
        </div>
    </div>

    <!--<div>-->
    <!--&lt;!&ndash;<button style="margin-bottom: 10px" id="save">Save</button>&ndash;&gt;-->
    <!--&lt;!&ndash;<button style="margin-bottom: 10px" src="https://dl.dropboxusercontent.com/u/551937608/compliance/eraser-16.png" id="clear">Clear</button>&ndash;&gt;-->
    <!--</div>-->
    <div align="center" style="width: 100%;">
        <input id="emailInput" style="width: 100%; margin-bottom: 10px" type="text" value=""
               placeholder="Email Address">
    </div>

    <div id="distressButton-container">
        <button id="distressButton-call">Send Email</button>
        <!--<p>Hold the button for 3 seconds to alert a manager</p>-->
        <!--<div id="distressSent">Distress email sent!</div>-->
        <div id="result"></div>
    </div>


</div>

<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://storage.googleapis.com/compliance-report/signature_pad.min.js"></script>

<script type="text/javascript">

    geotab.addin.compliance = function (api, state) {

        var server = window.location.hostname.split('.')[0]
            ,session_id = ''
            ,username = ''
            ,driver_id = ''
            ,db = ''
            ,emailValue = ''
            ,signatureImage = ''
            ,driverName = ''
            ,driverLastName = ''
            ,hosRuleSet = ''
            ,dateRange = ''
            ,cancelImage = document.getElementById('clear')
            ,endDateMail = moment().format("DD MMM")
            ,startEmail14Date = moment().subtract(14, 'days').format("DD MMM")
            ,startEmail7Date = moment().subtract(7, 'days').format("DD MMM")
            ,wrapper = document.getElementById("signature-pad")
            ,canvas = wrapper.querySelector("canvas")
            ,signaturePad = new SignaturePad(canvas);

        //Geotab api calls

        api.getSession(function (session) {
            console.log(session)
            session_id = session.sessionId;
            username = session.userName;
            db = session.database;

            api.call("Get", {
                typeName: 'User', search: {'name': username}
            }, function (result) {
                driver_id = result[0].id;
                driverName = result[0].firstName;
                driverLastName = result[0].lastName;
                hosRuleSet = result[0].hosRuleSet;
                if (hosRuleSet.substr(0, 7).toLowerCase() == "america") {
                    document.getElementById("daterange").innerHTML = startEmail7Date + " - " + endDateMail;

                    dateRange = startEmail7Date + " - " + endDateMail
                }else{
                    document.getElementById("daterange").innerHTML = startEmail14Date + " - " + endDateMail;
                    dateRange = startEmail14Date + " - " + endDateMail
                }

                // document.getElementById("drivername").innerHTML = driverName + driverLastName;
                console.log("Done: ", result);
            }, function (e) {
                console.error("Failed:", e);
            });
        });


        cancelImage.addEventListener('click', function (event) {
            signaturePad.clear();
            resizeCanvas();
        });


        var emailInput = document.getElementById("emailInput"),
                emailInputEntered = function (event) {
                    emailValue = event.target.value.toLowerCase().trim('');
                };

        var distressButton = document.getElementById("distressButton-call"),
                distressSent = document.getElementById("distressSent"),
                distressTimeout = null,
                distressPress = function (event) {
                    if (signaturePad.isEmpty()) {
                        alert("Please provide signature first.");
                    }else{
                        signatureImage = signaturePad.toDataURL('image/png');
                        console.log(signatureImage);
                        console.log(driver_id, emailValue, session_id, db, username, server, driverName, driverLastName, dateRange );
                        event.target.classList.add("press");
                        $.ajax({
                            type: "POST",
                            url: 'https://zendu-compliance-report.zenduit.com/Email/',
                            contentType: "application/x-www-form-urlencoded",
                            //  timeout: 2000,
                            data: {
                                driverId: driver_id,
                                sessionId: session_id,
                                username: username,
                                database: db,
                                email: emailValue,
                                server: server,
                                signature: signatureImage,
                                firstName: driverName,
                                lastName: driverLastName,
                                dateRange: dateRange
                            },
                            success: function (data) {
                                console.log('success');
                                alert("Logs sent");
                                console.log(data);
                            },
                            error: function (error) {
                                console.log(error);
                            }
                        });
                    }
                },
                distressStop = function (event) {
                    event.target.classList.remove("press");
                    clearTimeout(distressTimeout);
                };

        function resizeCanvas() {
            var ratio =  Math.max(window.devicePixelRatio || 1, 1);
            canvas.width = canvas.offsetWidth * ratio;
            canvas.height = canvas.offsetHeight * ratio;
            canvas.getContext("2d").scale(ratio, ratio);
        }

        return {
            initialize: function (api, state, callback) {
                resizeCanvas();
                callback();
            },
            focus: function () {

                distressButton.addEventListener.disabled = true;
                emailInput.addEventListener("input", emailInputEntered);
                distressButton.addEventListener("mousedown", distressPress);
                distressButton.addEventListener("mouseup", distressStop);
            },
            blur: function () {
                distressButton.removeEventListener("mousedown", distressPress);
                distressButton.removeEventListener("mouseup", distressStop);
            }
        };
    }
</script>


</body>
</html>
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.