<!DOCTYPE html>
<html lang="en">

{{ template "head.tpl.html" . }}

<body class="relative bg-gray-850 text-gray-700 p-4 pt-10 flex flex-col min-h-screen max-w-screen-xl mx-auto justify-center">

{{ template "header.tpl.html" . }}

<div class="hidden flex bg-gray-800 shadow-md z-10 p-2 absolute top-0 right-0 mt-10 mr-8 border border-green-700 rounded popup"
     id="api-key-popup">
    <div class="flex-grow flex flex-col px-2">
        <span class="text-xs text-gray-500 mx-1">API Key</span>
        <input type="text" class="bg-transparent text-sm text-white mx-1 font-mono" id="api-key-container" readonly
               value="{{ .ApiKey }}" style="min-width: 330px">
    </div>
    <div class="flex items-center px-2 border-l border-gray-700">
        <button title="Copy to clipboard" onclick="copyApiKey(event)">📋</button>
    </div>
</div>

<div class="absolute flex top-0 right-0 mr-8 mt-10 py-2">
    <div class="mx-1">
        <button type="button" class="py-1 px-3 h-8 rounded border border-green-700 text-white text-sm"
                onclick="showApiKeyPopup(event)">🔐
        </button>
    </div>
    <div class="mx-1">
        <a href="settings" class="py-1 px-3 h-8 block rounded border border-green-700 text-white text-sm">⚙️</a>
    </div>
    <div class="mx-1">
        <form action="logout" method="post">
            <button type="submit" class="py-1 px-3 h-8 rounded border border-green-700 text-white text-sm">Logout</button>
        </form>
    </div>
</div>

<div class="flex items-center justify-center">
    <h1 class="font-semibold text-2xl text-white m-0 border-b-4 border-green-700">Summary</h1>
</div>

{{ if .User.HasData }}

<div class="self-center border border-gray-700 shadow mt-8 rounded-md p-4 bg-gray-900">
    <form class="text-white flex flex-nowrap items-center justify-center self-center max-w-xl flex-wrap space-x-8">
        <div class="flex space-x-1">
            <label for="from-date-picker" class="text-gray-300 pl-1">▶️ Start:</label>
            <input id="from-date-picker" type="date" name="from" class="text-sm text-gray-300 bg-gray-800 rounded-md text-center cursor-pointer"
                   value="{{ .FromTime.T | simpledate }}" required>
        </div>
        <div class="flex space-x-1">
            <label for="to-date-picker" class="text-gray-300 pl-1">⏹️ End:</label>
            <input id="to-date-picker" type="date" name="to" class="text-sm text-gray-300 bg-gray-800 rounded-md text-center cursor-pointer"
                   value="{{ .ToTime.T | simpledate }}" required>
        </div>
        <div>
            <button type="submit" class="py-1 px-3 rounded bg-green-700 hover:bg-green-800 text-white text-sm">Show</button>
        </div>
    </form>

    <div class="text-gray-300 text-sm flex items-center justify-center mt-4 self-center max-w-lg flex-wrap">
        <a href="summary?interval=today" class="px-1 my-1 mx-1 border-b hover:border-b-2 border-gray-700 hover:bg-green-700 rounded hover:border-none">Today</a>
        <a href="summary?interval=yesterday" class="px-1 my-1 mx-1 border-b hover:border-b-2 border-gray-700 hover:bg-green-700 rounded hover:border-none">Yesterday</a>
        <a href="summary?interval=week" class="px-1 my-1 mx-1 border-b hover:border-b-2 border-gray-700 hover:bg-green-700 rounded hover:border-none">This Week</a>
        <a href="summary?interval=month" class="px-1 my-1 mx-1 border-b hover:border-b-2 border-gray-700 hover:bg-green-700 rounded hover:border-none">This Month</a>
        <a href="summary?interval=year" class="px-1 my-1 mx-1 border-b hover:border-b-2 border-gray-700 hover:bg-green-700 rounded hover:border-none">This Year</a>
        <a href="summary?interval=last_7_days" class="px-1 my-1 mx-1 border-b hover:border-b-2 border-gray-700 hover:bg-green-700 rounded hover:border-none">Past 7 Days</a>
        <a href="summary?interval=last_30_days" class="px-1 my-1 mx-1 border-b hover:border-b-2 border-gray-700 hover:bg-green-700 rounded hover:border-none">Past 30 Days</a>
        <a href="summary?interval=last_12_months" class="px-1 my-1 mx-1 border-b hover:border-b-2 border-gray-700 hover:bg-green-700 rounded hover:border-none">Past 12 Months</a>
        <a href="summary?interval=any" class="px-1 my-1 mx-1 border-b hover:border-b-2 border-gray-700 hover:bg-green-700 rounded hover:border-none">All Time</a>
    </div>
</div>

{{ end }}

{{ template "alerts.tpl.html" . }}

<main class="flex flex-col items-center mt-10 flex-grow">

    {{ if .User.HasData }}

    <span class="text-white text-lg text-gray-300 text-center mb-4">
        <span class="text-xl">⏱️&nbsp;</span>
        Showing a total of <span id="total-span" title="Total Hours" class="text-white text-xl font-semibold border-b-2 border-green-700"></span>
        <span class="text-sm my-2">
            (from <span title="Start Time" class="border-b border-gray-700">{{ .FromTime.T | date }}</span> to <span title="End Time" class="border-b border-gray-700">{{ .ToTime.T | date }}</span>)
        </span>
    </span>

    <div class="flex flex-wrap justify-center">
        <div class="w-full lg:w-1/2 p-1">
            <div class="p-4 pb-10 bg-gray-900 border border-gray-700 text-gray-300 rounded-md shadow m-2 flex flex-col" id="project-container" style="height: 300px">
                <div class="flex justify-between">
                    <div class="w-1/4 flex-1"></div>
                    <span class="font-semibold w-1/2 text-center flex-1">Projects</span>
                    <div class="flex justify-end flex-1 text-xs items-center">
                        <label for="project-top-picker" class="mr-1">Show:&nbsp;</label>
                        <input type="number" min="1" id="project-top-picker" data-entity="0" class="w-1/4 top-picker bg-gray-800 rounded-md text-center" value="10">
                    </div>
                </div>
                <canvas id="chart-projects" class="mt-2"></canvas>
                <div class="hidden placeholder-container flex items-center justify-center h-full flex-col">
                    <span class="text-md font-semibold text-gray-500 mt-4">No data</span>
                </div>
            </div>
        </div>
        <div class="w-full lg:w-1/2 p-1">
            <div class="p-4 pb-10 bg-gray-900 border border-gray-700 text-gray-300 rounded-md shadow m-2 flex flex-col" id="os-container" style="height: 300px">
                <div class="flex justify-between">
                    <div class="w-1/4 flex-1"></div>
                    <span class="font-semibold w-1/2 text-center flex-1">Operating Systems</span>
                    <div class="flex justify-end flex-1 text-xs items-center">
                        <label for="os-top-picker" class="mr-1">Show:&nbsp;</label>
                        <input type="number" min="1" id="os-top-picker" data-entity="1" class="w-1/4 top-picker bg-gray-800 rounded-md text-center" value="10">
                    </div>
                </div>
                <canvas id="chart-os"></canvas>
                <div class="hidden placeholder-container flex items-center justify-center h-full flex-col">
                    <span class="text-md font-semibold text-gray-500 mt-4">No data</span>
                </div>
            </div>
        </div>
        <div class="w-full lg:w-1/2 p-1">
            <div class="p-4 pb-10 bg-gray-900 border border-gray-700 text-gray-300 rounded-md shadow m-2 flex flex-col relative" id="language-container" style="height: 300px">
                <div class="flex justify-between">
                    <div class="w-1/4 flex-1"></div>
                    <span class="font-semibold w-1/2 text-center flex-1">Languages</span>
                    <div class="flex justify-end flex-1 text-xs items-center">
                        <label for="language-top-picker" class="mr-1">Show:&nbsp;</label>
                        <input type="number" min="1" id="language-top-picker" data-entity="3" class="w-1/4 top-picker bg-gray-800 rounded-md text-center" value="10">
                    </div>
                </div>
                <canvas id="chart-language"></canvas>
                <div class="hidden placeholder-container flex items-center justify-center h-full flex-col">
                    <span class="text-md font-semibold text-gray-500 mt-4">No data</span>
                </div>
            </div>
        </div>
        <div class="w-full lg:w-1/2 p-1">
            <div class="p-4 pb-10 bg-gray-900 border border-gray-700 text-gray-300 rounded-md shadow m-2 flex flex-col" id="editor-container" style="height: 300px">
                <div class="flex justify-between">
                    <div class="w-1/4 flex-1"></div>
                    <span class="font-semibold w-1/2 text-center flex-1">Editors</span>
                    <div class="flex justify-end flex-1 text-xs items-center">
                        <label for="editor-top-picker" class="mr-1">Show:&nbsp;</label>
                        <input type="number" min="1" id="editor-top-picker" data-entity="2" class="w-1/4 top-picker bg-gray-800 rounded-md text-center" value="10">
                    </div>
                </div>
                <canvas id="chart-editor"></canvas>
                <div class="hidden placeholder-container flex items-center justify-center h-full flex-col">
                    <span class="text-md font-semibold text-gray-500 mt-4">No data</span>
                </div>
            </div>
        </div>
        <div class="w-full lg:w-1/2 p-1">
            <div class="p-4 pb-10 bg-gray-900 border border-gray-700 text-gray-300 rounded-md shadow m-2 flex flex-col" id="machine-container" style="height: 300px">
                <div class="flex justify-between">
                    <div class="w-1/4 flex-1"></div>
                    <span class="font-semibold w-1/2 text-center flex-1">Machines</span>
                    <div class="flex justify-end flex-1 text-xs items-center">
                        <label for="machine-top-picker" class="mr-1">Show:&nbsp;</label>
                        <input type="number" min="1" id="machine-top-picker" data-entity="4" class="w-1/4 top-picker bg-gray-800 rounded-md text-center" value="10">
                    </div>
                </div>
                <canvas id="chart-machine"></canvas>
                <div class="hidden placeholder-container flex items-center justify-center h-full flex-col">
                    <span class="text-md font-semibold text-gray-500 mt-4">No data</span>
                </div>
            </div>
        </div>
    </div>

    {{ else }}

    <div class="max-w-screen-sm flex flex-col items-center mt-12 space-y-8 text-gray-300 text-center">
        <div class="pb-4">
            <img src="assets/images/welcome.svg" width="200px" alt="User welcome illustration">
        </div>
        <p class="text-sm">
            <strong>Welcome to Wakapi! 👋</strong> It looks like there is no data available for the specified time range.<br>If you logged in to Wakapi for the first time, see the setup instructions below on how to get started.
        </p>
        <div class="w-full pt-10 flex flex-col space-y-4">
            <div>
                <h3 class="inline-block font-semibold text-md border-b border-green-700">Setup Instructions</h3>
            </div>
            <div class="w-full bg-gray-900 text-left rounded-md py-4 px-8 text-xs font-mono shadow-md">
                # <strong>Step 1:</strong> Download WakaTime plugin for your IDE<br>
                # See: https://wakatime.com/plugins<br><br>

                # <strong>Step 2:</strong> Adapt your config<br>
                $ vi ~/.wakatime.cfg<br>

                # Set <em>api_url = <span class="with-url-inner">%s/api/heartbeat</span></em><br>
                # Set <em>api_key = <span id="api-key-instruction"></span></em><br><br>

                # <strong>Step 3:</strong> Start coding and then check back here!
            </div>
            <p class="pt-4 text-sm">
                More at <a href="https://github.com/muety/wakapi" target="_blank" rel="noreferrer noopener" class="font-mono border-b border-green-700">github.com/muety/wakapi</a>.
            </p>
        </div>
    </div>

    {{ end }}

</main>

{{ template "footer.tpl.html" . }}

{{ template "foot.tpl.html" . }}

<script type="text/javascript">
    document.querySelector('#api-key-instruction').innerHTML = document.querySelector('#api-key-container').value
</script>

<script>
    const languageColors = {{ .LanguageColors | json }}
    const editorColors = {{ .EditorColors | json }}
    const osColors = {{ .OSColors | json }}

    const wakapiData = {}
    wakapiData.projects = {{ .Projects | json }}
    wakapiData.operatingSystems = {{ .OperatingSystems | json }}
    wakapiData.editors = {{ .Editors | json }}
    wakapiData.languages = {{ .Languages | json }}
    wakapiData.machines = {{ .Machines | json }}
</script>
<script src="assets/app.js"></script>

</body>

</html>