From 431d34a02ea137930a6a22c92fe305e46281d7f6 Mon Sep 17 00:00:00 2001 From: carrythebanner Date: Thu, 17 Jul 2025 17:56:04 -0700 Subject: [PATCH] add helper function for truncating strings with an ellipsis; use for OpenGraph tag and export to GCal --- site/themes/s2b_hugo_theme/assets/js/cal/helpers.js | 13 ++++++++++++- site/themes/s2b_hugo_theme/assets/js/cal/main.js | 6 +----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/site/themes/s2b_hugo_theme/assets/js/cal/helpers.js b/site/themes/s2b_hugo_theme/assets/js/cal/helpers.js index 604e3753..b79c3c8d 100644 --- a/site/themes/s2b_hugo_theme/assets/js/cal/helpers.js +++ b/site/themes/s2b_hugo_theme/assets/js/cal/helpers.js @@ -87,11 +87,13 @@ // Remove colons and periods for Google Calendar URL (2025-05-21T16:30:00.000Z => 20250521T163000000Z) const calendarDates = `${startDate.replace(regex, '')}/${endDate.replace(regex, '')}`; + const descr = $.fn.truncateString(event.details, 500) + `\n\n${event.shareable}`; + googleCalUrl.search = new URLSearchParams({ action: "TEMPLATE", text: `shift2Bikes: ${event.title}`, location: event.address, - details: `${event.details}\n\n${event.shareable}`, + details: descr, dates: calendarDates, sf: true, // ?? output: 'xml' @@ -100,6 +102,15 @@ return googleCalUrl.toString(); }; + $.fn.truncateString = function ( str, maxLength=250 ) { + let text = str.substring(0,maxLength); + if (str.length > maxLength) { + // replace the last character with an ellipsis + text = text.slice(0, -1) + "…"; + } + return text; + }; + $.fn.compareTimes = function ( event1, event2 ) { if ( event1.time < event2.time ) { return -1; diff --git a/site/themes/s2b_hugo_theme/assets/js/cal/main.js b/site/themes/s2b_hugo_theme/assets/js/cal/main.js index 3a30b522..694529ee 100755 --- a/site/themes/s2b_hugo_theme/assets/js/cal/main.js +++ b/site/themes/s2b_hugo_theme/assets/js/cal/main.js @@ -73,11 +73,7 @@ $(document).ready(function() { if (event.printdescr) { $('meta[property="og:description"]')[0].setAttribute("content", event.printdescr); } else { - var descr = event.details.substring(0,250); - if (event.details.length > 250) { - // replace the last character with an ellipsis - descr = descr.slice(0, -1) + "…"; - } + let descr = container.truncateString(event.details, 250); $('meta[property="og:description"]')[0].setAttribute("content", descr); } document.title = event.title + " - Calendar - " + SITE_TITLE;