#!/usr/bin/env python3

import cgi, sys
sys.path.insert(0, '/opt/ngon/apps')
from managers.auth_manager import AuthManager, generate_login_page_html

_form = cgi.FieldStorage()
_auth = AuthManager('map')
_auth_required, _should_exit, _headers = _auth.require_auth(_form)

if _should_exit:
    print("Content-Type: application/json")
    if _headers:
        print(_headers)
    print("")
    if _auth_required:
        print('{"success": false, "error": "Authentication required"}')
    else:
        print('{"success": true}')
    sys.exit(0)

if _auth_required:
    print("Content-Type: text/html\n")
    print(generate_login_page_html("Sites Map"))
    sys.exit(0)

sys.path.insert(0, '/var/www/html/ngon')
from links import generate_dropdown_html, generate_dropdown_css, generate_dropdown_js
_user_access = AuthManager.get_user_access()
_nav_html = generate_dropdown_html(_user_access)
_nav_css = generate_dropdown_css()
_nav_js = generate_dropdown_js()

print("Content-Type: text/html\n")
print(f"""<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>NGON Sites Map</title>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
<link rel="stylesheet" href="/status/styles.css?v=30" />
<link rel="stylesheet" href="/status/map.css?v=30" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script src="https://cdn.socket.io/4.7.2/socket.io.min.js"></script>
<style>{_nav_css}</style>
</head>
<body class="map-body">
  <div class="header">
    <div>
      <div class="dropdown">
        <h1 class="dropdown-title">NGON Mining - Sites Map</h1>
        <div class="dropdown-content">{_nav_html}</div>
      </div>
    </div>
    <div class="data-rate-info">
      <span class="map-debug" id="debug-info" style="margin-right:15px;">—</span>
      <span id="conn-status">connecting…</span>
    </div>
  </div>

  <div class="map-kpi-strip" id="kpi-strip">
    <!-- phase 3 -->
  </div>

  <div class="map-main">
    <div id="map-canvas"></div>
    <aside class="map-intel" id="intel-panel">
      <div class="intel-empty">Hover or click a site for details.</div>
    </aside>
  </div>

  <div class="map-ticker-row" id="ticker-pods">
    <div class="ticker-label ticker-label-pod">PODS</div>
    <div class="ticker-body" id="ticker-pods-body"></div>
  </div>
  <div class="map-ticker-row" id="ticker-gens">
    <div class="ticker-label ticker-label-gen">GENS</div>
    <div class="ticker-body" id="ticker-gens-body"></div>
  </div>

  <script>{_nav_js}</script>
  <script src="/status/map_canvas.js?v=30"></script>
  <script src="/status/map_core.js?v=30"></script>
</body>
</html>""")
