Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed Brief Description Popover extraction Issue #1278

Merged
merged 11 commits into from
Oct 12, 2024
12 changes: 10 additions & 2 deletions www/js/lib/popovers.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,13 +99,21 @@ function getArticleLede (href, baseUrl, articleDocument, archive) {

// Helper function to clean up the lede content
function cleanUpLedeContent (node) {
// Define an array of exclusion filters
// (note .exclude-this-class is a dummy class used as an exmple which will used to exclude classes in future)
THEBOSS0369 marked this conversation as resolved.
Show resolved Hide resolved
const exclusionFilters = ['#pcs-edit-section-title-description', '.exclude-this-class'];
// Constrct the :not() selector thing
THEBOSS0369 marked this conversation as resolved.
Show resolved Hide resolved
const notSelector = exclusionFilters.map(filter => `:not(${filter})`).join('');

// Remove all standalone style elements from the given DOM node, because their content is shown by innerText and textContent
const styleElements = Array.from(node.querySelectorAll('style'));
styleElements.forEach(style => {
style.parentNode.removeChild(style);
});
const paragraphs = Array.from(node.querySelectorAll('p'));
// Filter out empty paragraphs or those with less than 50 characters
Jaifroid marked this conversation as resolved.
Show resolved Hide resolved
// Apply this style-based exclusion filter to remove unwanted paragraphs in the popover
const paragraphs = Array.from(node.querySelectorAll(`p${notSelector}`));

// Filter out empty paragraphs or those with less than 50 character
THEBOSS0369 marked this conversation as resolved.
Show resolved Hide resolved
const parasWithContent = paragraphs.filter(para => {
// DEV: Note that innerText is not supported in Firefox OS, so we need to use textContent as a fallback
// The reason we prefer innerText is that it strips out hidden text and unnecessary whitespace, which is not the case with textContent
Expand Down
Loading