Skip to content

Commit

Permalink
eslint
Browse files Browse the repository at this point in the history
  • Loading branch information
JujuDel committed Nov 11, 2024
1 parent 542842f commit 65bb99e
Showing 1 changed file with 41 additions and 41 deletions.
82 changes: 41 additions & 41 deletions source/plugins/community/16personalities/index.mjs
Original file line number Diff line number Diff line change
@@ -1,98 +1,98 @@
// Setup
//Setup
export default async function({login, q, imports, data, account}, {enabled = false, extras = false} = {}) {
try {
// Check if the plugin is enabled and requirements are met
//Check if the plugin is enabled and requirements are met
if ((!q["16personalities"]) || (!imports.metadata.plugins["16personalities"].enabled(enabled, {extras})))
return null

// Load inputs
//Load inputs
let {url, sections, scores} = imports.metadata.plugins["16personalities"].inputs({data, account, q})
if (!url)
throw {error: {message: "URL is not set"}}

// Start puppeteer and navigate to page
//Start puppeteer and navigate to page
console.debug(`metrics/compute/${login}/plugins > 16personalities > starting browser`)
const browser = await imports.puppeteer.launch()
console.debug(`metrics/compute/${login}/plugins > 16personalities > started ${await browser.version()}`)
const page = await browser.newPage()
console.debug(`metrics/compute/${login}/plugins > 16personalities > loading ${url}`)

// Capture console messages from the browser context
page.on('console', msg => {
if (msg.type() === 'debug') {
console.debug(`BROWSER: ${msg.text()}`);
//Capture console messages from the browser context
page.on(`console`, msg => {

Check failure on line 21 in source/plugins/community/16personalities/index.mjs

View workflow job for this annotation

GitHub Actions / Lint code

Strings must use doublequote
if (msg.type() === `debug`) {

Check failure on line 22 in source/plugins/community/16personalities/index.mjs

View workflow job for this annotation

GitHub Actions / Lint code

Strings must use doublequote
console.debug(`BROWSER: ${msg.text()}`)
}
})

await page.goto(url, {waitUntil: 'networkidle2'})
await page.goto(url, {waitUntil: `networkidle2`})

Check failure on line 27 in source/plugins/community/16personalities/index.mjs

View workflow job for this annotation

GitHub Actions / Lint code

Strings must use doublequote

// Fetch raw data
//Fetch raw data
const raw = await page.evaluate(() => {
const getInnerText = (selector) => document.querySelector(selector)?.innerText || ""
const getInnerText = selector => document.querySelector(selector)?.innerText || ""

// Default map personality category to RGB colors
//Default map personality category to RGB colors
const defaultPersonalityColors = {
explorers: 'rgb(228, 174, 58)', // Virtuoso, Adventurer, Entrepreneur, Entertainer
sentinels: 'rgb(66, 152, 180)', // Logistician, Defender, Executive, Consul
diplomats: 'rgb(51, 164, 116)', // Advocate, Mediator, Protagonist, Campaigner
analysts: 'rgb(136, 97, 154)', // Architect, Logician, Commander, Debater
default: 'rgb(0, 0, 0)'
explorers: `rgb(228, 174, 58)`, //Virtuoso, Adventurer, Entrepreneur, Entertainer

Check failure on line 35 in source/plugins/community/16personalities/index.mjs

View workflow job for this annotation

GitHub Actions / Lint code

Strings must use doublequote
sentinels: `rgb(66, 152, 180)`, //Logistician, Defender, Executive, Consul

Check failure on line 36 in source/plugins/community/16personalities/index.mjs

View workflow job for this annotation

GitHub Actions / Lint code

Strings must use doublequote
diplomats: `rgb(51, 164, 116)`, //Advocate, Mediator, Protagonist, Campaigner

Check failure on line 37 in source/plugins/community/16personalities/index.mjs

View workflow job for this annotation

GitHub Actions / Lint code

Strings must use doublequote
analysts: `rgb(136, 97, 154)`, //Architect, Logician, Commander, Debater

Check failure on line 38 in source/plugins/community/16personalities/index.mjs

View workflow job for this annotation

GitHub Actions / Lint code

Strings must use doublequote
default: `rgb(0, 0, 0)`

Check failure on line 39 in source/plugins/community/16personalities/index.mjs

View workflow job for this annotation

GitHub Actions / Lint code

Strings must use doublequote
}
let defaultColor = defaultPersonalityColors.default

// Choose the default color based on the personality type
const personalityType = getInnerText(".link--inline");
//Choose the default color based on the personality type
const personalityType = getInnerText(".link--inline")
if (personalityType.includes("Virtuoso") || personalityType.includes("Adventurer") || personalityType.includes("Entrepreneur") || personalityType.includes("Entertainer"))
defaultColor = defaultPersonalityColors.explorers
else if (personalityType.includes("Logistician") || personalityType.includes("Defender") || personalityType.includes("Executive") || personalityType.includes("Consul"))
defaultColor = defaultPersonalityColors.sentinels
else if (personalityType.includes("Advocate") || personalityType.includes("Mediator") || personalityType.includes("Protagonist") || personalityType.includes("Campaigner"))
defaultColor = defaultPersonalityColors.diplomats
else if (personalityType.includes("Architect") || personalityType.includes("Logician") || personalityType.includes("Commander") || personalityType.includes("Debater"))
defaultColor = defaultPersonalityColors.analysts;
defaultColor = defaultPersonalityColors.analysts

console.debug(`Personality Type: ${personalityType}`)

return {
// Type extraction
//Type extraction
type: getInnerText(".type__code"),

// Personality details extraction
//Personality details extraction
personality: [...document.querySelectorAll(".slider__slides > div")].map(card => {
// Extract image data
//Extract image data
let image = ""
const cardElement = card.querySelector(".card__image")
// Check if the card has an image as an url, e.g., the "His Role" image or the "His Strategy" image
//Check if the card has an image as an url, e.g., the "His Role" image or the "His Strategy" image
if (cardElement.querySelector("img")) {
image = cardElement.querySelector("img").src
console.debug(`Image for ${card.querySelector(".card__title")?.innerText}: ${image}`)
}
// Check if the card has a image as a svg, e.g., the "His personality" image
//Check if the card has a image as a svg, e.g., the "His personality" image
else if (cardElement.querySelector("svg")) {
image = new XMLSerializer().serializeToString(cardElement.querySelector("svg"))
image = `data:image/svg+xml,${encodeURIComponent(image)}`
console.debug(`Image for ${card.querySelector(".card__title")?.innerText} is a svg`)
}

return {
category: card.querySelector(".card__title")?.innerText || "", // Category, e.g., "His role"
value: card.querySelector(".card__subtitle")?.innerText || "", // Value of the category, e.g., "Sentinel"
image, // Image of the category
text: card.querySelector(".prevent--drag.card__p")?.innerText || "" // Description of the category
category: card.querySelector(".card__title")?.innerText || "", //Category, e.g., "His role"
value: card.querySelector(".card__subtitle")?.innerText || "", //Value of the category, e.g., "Sentinel"
image, //Image of the category
text: card.querySelector(".prevent--drag.card__p")?.innerText || "" //Description of the category
}
}),

// Traits details extraction
//Traits details extraction
traits: [...document.querySelectorAll(".traits__boxes > div")].map(card => {
const categoryText = card.querySelector(".traitbox__label")?.innerText
const scoreText = card.querySelector(".traitbox__value")?.innerText.trim() // Get the text like "75% Extraverted"
const scoreText = card.querySelector(".traitbox__value")?.innerText.trim() //Get the text like "75% Extraverted"

console.debug(`Parsing Trait category ${categoryText} ${scoreText}`);
console.debug(`Parsing Trait category ${categoryText} ${scoreText}`)

// Split the score text into percentage and trait
const [percentage, ...traitArray] = scoreText.split(' ');
//Split the score text into percentage and trait
const [percentage, ...traitArray] = scoreText.split(` `);

Check failure on line 93 in source/plugins/community/16personalities/index.mjs

View workflow job for this annotation

GitHub Actions / Lint code

Strings must use doublequote

Check failure on line 93 in source/plugins/community/16personalities/index.mjs

View workflow job for this annotation

GitHub Actions / Lint code

Extra semicolon

// Return the traits details
//Return the traits details
return {
category: categoryText || "", // Trait category name, e.g., "Energy"
value: traitArray.join(" ") || "", // Extracted trait, e.g., "Extraverted"
Expand All @@ -101,12 +101,12 @@ export default async function({login, q, imports, data, account}, {enabled = fal
}
}),

// Color
color: document.querySelector(".card__bg") ? getComputedStyle(document.querySelector(".card__bg")).backgroundColor : defaultColor
//Color
color: document.querySelector(".card__bg") ? getComputedStyle(document.querySelector(".card__bg")).backgroundColor : defaultColor //eslint-disable-line no-undef
}
})

// Format data
//Format data
const {color} = raw
const type = raw.type.replace("(", "").replace(")", "").trim()
const personality = await Promise.all(raw.personality.map(async ({category, value, image, text}) => ({
Expand All @@ -122,13 +122,13 @@ export default async function({login, q, imports, data, account}, {enabled = fal
text: text.trim()
}))

// Close browser
//Close browser
await browser.close();

// Results
//Results
return {sections, color, type, personality, traits}
}
// Handle errors
//Handle errors
catch (error) {
throw imports.format.error(error)
}
Expand Down

0 comments on commit 65bb99e

Please sign in to comment.