From a6fa2a96e7ace45b68f5003fd4112ba411691861 Mon Sep 17 00:00:00 2001 From: Subhamoy Biswas Date: Thu, 1 Aug 2024 22:23:14 +0530 Subject: [PATCH] (feat): added hoverable project info tooltip card --- .env.example | 3 +- htdocs/assets/_integrate.php | 1 + htdocs/assets/images/projects/default.jpg | Bin 0 -> 16355 bytes .../images/{ => projects}/fantasywalls.jpg | Bin .../assets/images/{ => projects}/prourl.jpg | Bin htdocs/assets/js/tippy-config.js | 13 +++ htdocs/assets/style.css | 73 +++++++++++++-- htdocs/core/github_api_functions.php | 32 +++++++ htdocs/core/utility_functions.php | 14 +++ htdocs/projects.php | 84 +++++++++++++++++- 10 files changed, 209 insertions(+), 11 deletions(-) create mode 100644 htdocs/assets/images/projects/default.jpg rename htdocs/assets/images/{ => projects}/fantasywalls.jpg (100%) rename htdocs/assets/images/{ => projects}/prourl.jpg (100%) create mode 100644 htdocs/core/github_api_functions.php create mode 100644 htdocs/core/utility_functions.php diff --git a/.env.example b/.env.example index d058e64..1bd5d3a 100644 --- a/.env.example +++ b/.env.example @@ -13,4 +13,5 @@ SMTP_USER = "Your SMTP Sender Username Here" SMTP_PASS = "Your SMTP Sender Password Here" SMTP_SENDTO = "Your Email Inbox Address to Receive Emails" SMTP_PORT = 465 -ANALYTICS_ID = "Your Google Analytics Tracking ID Here" \ No newline at end of file +ANALYTICS_ID = "Your Google Analytics Tracking ID Here" +GITHUB_ACCESS_TOKEN = "Your GitHub Access Token Here" \ No newline at end of file diff --git a/htdocs/assets/_integrate.php b/htdocs/assets/_integrate.php index 9b17918..800c819 100644 --- a/htdocs/assets/_integrate.php +++ b/htdocs/assets/_integrate.php @@ -4,6 +4,7 @@ + diff --git a/htdocs/assets/images/projects/default.jpg b/htdocs/assets/images/projects/default.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c5dce9442f277e331cbadc7ed80413fb69a4e51 GIT binary patch literal 16355 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 literal 0 HcmV?d00001 diff --git a/htdocs/assets/images/fantasywalls.jpg b/htdocs/assets/images/projects/fantasywalls.jpg similarity index 100% rename from htdocs/assets/images/fantasywalls.jpg rename to htdocs/assets/images/projects/fantasywalls.jpg diff --git a/htdocs/assets/images/prourl.jpg b/htdocs/assets/images/projects/prourl.jpg similarity index 100% rename from htdocs/assets/images/prourl.jpg rename to htdocs/assets/images/projects/prourl.jpg diff --git a/htdocs/assets/js/tippy-config.js b/htdocs/assets/js/tippy-config.js index 6610113..9f457a2 100644 --- a/htdocs/assets/js/tippy-config.js +++ b/htdocs/assets/js/tippy-config.js @@ -34,3 +34,16 @@ tippy('#shareclosebutton', { touch: false }); +tippy('.projectitem', { + content(reference) { + const projectId = reference.getAttribute('data-template'); + const projectTippyTemplate = document.getElementById(projectId); + return projectTippyTemplate.innerHTML; + }, + allowHTML: true, + placement: 'right', + theme: 'neosubhamoy', + animation: 'scale-subtle', + touch: false +}); + diff --git a/htdocs/assets/style.css b/htdocs/assets/style.css index 9a0fcb1..9a89f54 100644 --- a/htdocs/assets/style.css +++ b/htdocs/assets/style.css @@ -610,6 +610,10 @@ video { bottom: 0px; } +.bottom-2 { + bottom: 0.5rem; +} + .bottom-\[-10rem\] { bottom: -10rem; } @@ -674,6 +678,10 @@ video { top: 0px; } +.top-2 { + top: 0.5rem; +} + .top-3 { top: 0.75rem; } @@ -1034,6 +1042,10 @@ video { height: 2.5rem; } +.h-2 { + height: 0.5rem; +} + .h-20 { height: 5rem; } @@ -1099,6 +1111,14 @@ video { height: 100vh; } +.h-3 { + height: 0.75rem; +} + +.h-4 { + height: 1rem; +} + .max-h-\[45vh\] { max-height: 45vh; } @@ -1204,6 +1224,14 @@ video { width: 100vw; } +.w-3 { + width: 0.75rem; +} + +.w-4 { + width: 1rem; +} + .max-w-\[45vw\] { max-width: 45vw; } @@ -1538,6 +1566,10 @@ video { background-color: rgba(249, 115, 22, 0.2); } +.bg-\[rgba\(255\2c 255\2c 255\2c 0\.15\)\] { + background-color: rgba(255,255,255,0.15); +} + .bg-\[rgba\(255\2c _255\2c _255\2c _0\.25\)\] { background-color: rgba(255, 255, 255, 0.25); } @@ -1574,6 +1606,35 @@ video { background-color: rgb(30 41 59 / var(--tw-bg-opacity)); } +.bg-bg_third { + --tw-bg-opacity: 1; + background-color: rgb(38 51 74 / var(--tw-bg-opacity)); +} + +.bg-\[rgba\(0\2c 0\2c 0\2c 0\.15\)\] { + background-color: rgba(0,0,0,0.15); +} + +.bg-\[rgba\(0\2c 0\2c 0\2c 0\.20\)\] { + background-color: rgba(0,0,0,0.20); +} + +.bg-\[rgba\(255\2c 255\2c 255\2c 0\.2\)\] { + background-color: rgba(255,255,255,0.2); +} + +.bg-\[rgba\(0\2c 0\2c 0\2c 0\.2\)\] { + background-color: rgba(0,0,0,0.2); +} + +.bg-\[rgba\(56\2c 189\2c 248\2c 0\.5\)\] { + background-color: rgba(56,189,248,0.5); +} + +.bg-\[rgba\(56\2c 189\2c 248\2c 0\.7\)\] { + background-color: rgba(56,189,248,0.7); +} + .bg-gradient-to-r { background-image: linear-gradient(to right, var(--tw-gradient-stops)); } @@ -1832,14 +1893,6 @@ video { text-transform: lowercase; } -.leading-relaxed { - line-height: 1.625; -} - -.leading-loose { - line-height: 2; -} - .text-\[rgb\(22\2c _163\2c _74\)\] { --tw-text-opacity: 1; color: rgb(22 163 74 / var(--tw-text-opacity)); @@ -1905,6 +1958,10 @@ video { opacity: 0.5; } +.opacity-\[0\.70\] { + opacity: 0.70; +} + .opacity-\[0\.75\] { opacity: 0.75; } diff --git a/htdocs/core/github_api_functions.php b/htdocs/core/github_api_functions.php new file mode 100644 index 0000000..0452ea3 --- /dev/null +++ b/htdocs/core/github_api_functions.php @@ -0,0 +1,32 @@ + \ No newline at end of file diff --git a/htdocs/core/utility_functions.php b/htdocs/core/utility_functions.php new file mode 100644 index 0000000..486c9a0 --- /dev/null +++ b/htdocs/core/utility_functions.php @@ -0,0 +1,14 @@ += 1000000000) { + return number_format($num / 1000000000, 1) . 'B'; + } elseif ($num >= 1000000) { + return number_format($num / 1000000, 1) . 'M'; + } elseif ($num >= 1000) { + return number_format($num / 1000, 1) . 'K'; + } else { + return $num; + } +} +?> \ No newline at end of file diff --git a/htdocs/projects.php b/htdocs/projects.php index 91684ac..34ad269 100644 --- a/htdocs/projects.php +++ b/htdocs/projects.php @@ -2,6 +2,8 @@ require 'core/connection.php'; require 'core/host_config.php'; require 'core/query_functions.php'; +require 'core/github_api_functions.php'; +require 'core/utility_functions.php'; require 'core/write_dataset.php'; write_dataset($conn); @@ -95,10 +97,88 @@ $years = create_project_years_array($conn); //fetch all projects by year and show it while ($project = $projects -> fetch_assoc()) { echo " - ".$project['name'].($project['shortdes'] != "" ? ' - '. $project['shortdes'] : '')." + ".$project['name'].($project['shortdes'] != "" ? ' - '. $project['shortdes'] : '')." + "; } - + echo <<