_Layout.cshtml 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. @inject Microsoft.Extensions.Configuration.IConfiguration configuration
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="utf-8" />
  6. <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
  7. <title>@ViewData["Title"] - Millions</title>
  8. <!-- Original website bootstrap if needed, or link separate -->
  9. <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css" />
  10. <!-- Isolated CSS just for Millions -->
  11. <link rel="stylesheet" href="/Millions/css/site.css" />
  12. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
  13. <script src="https://cdn.tailwindcss.com"></script>
  14. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  15. <link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:wght@400;700;800&display=swap" rel="stylesheet">
  16. <style>
  17. .font-bricolage { font-family: 'Bricolage Grotesque', sans-serif; }
  18. .font-UTM_Futura_Extra { font-family: 'UTM Futura Extra', sans-serif; }
  19. </style>
  20. @RenderSection("Styles", required: false)
  21. </head>
  22. <body class="millions-bg">
  23. @Html.AntiForgeryToken()
  24. <input type="hidden" id="subDomain" value="@(configuration["subDomain"] ?? "")" />
  25. <script>
  26. var subDomain = document.getElementById("subDomain").value || "";
  27. </script>
  28. <div id="loading-overlay" class="hidden">
  29. <div class="loading-spinner"></div>
  30. </div>
  31. @RenderBody()
  32. <!-- Original jquery or similar -->
  33. <script src="/lib/jquery/jquery.min.js"></script>
  34. <script src="/lib/bootstrap/js/bootstrap.bundle.min.js"></script>
  35. <!-- Isolated JS just for Millions -->
  36. <script src="/Millions/js/site.js"></script>
  37. <script>
  38. // Global Loading Helpers
  39. function showLoading() {
  40. $('#loading-overlay').removeClass('hidden').addClass('flex');
  41. }
  42. function hideLoading() {
  43. $('#loading-overlay').removeClass('flex').addClass('hidden');
  44. }
  45. // Auto-show for all AJAX calls
  46. $(document).ajaxStart(function() {
  47. showLoading();
  48. }).ajaxStop(function() {
  49. hideLoading();
  50. });
  51. function formatMoneyV2(amount) {
  52. if (amount === undefined || amount === null || amount === "") return "0";
  53. let str = amount.toString().replace(/[^0-9]/g, '');
  54. if (str === "") return "0";
  55. return str.replace(/\B(?=(\d{3})+(?!\d))/g, ".");
  56. }
  57. function unformatMoneyV2(amount) {
  58. if (amount === undefined || amount === null || amount === "") return "0";
  59. return amount.toString().replace(/[^0-9]/g, '');
  60. }
  61. </script>
  62. @RenderSection("Scripts", required: false)
  63. </body>
  64. </html>