Skip to content
77 changes: 74 additions & 3 deletions assets/js/plugin-check-admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,46 @@
return false;
}

/**
* Counts the total number of errors and warnings in the aggregated results.
*
* @since 1.0.0
Comment thread
ernilambar marked this conversation as resolved.
Outdated
*
* @return {Object} Object with errorCount and warningCount properties.
*/
function countResults() {
let errorCount = 0;
let warningCount = 0;

// Count errors.
for ( const file of Object.keys( aggregatedResults.errors ) ) {
const lines = aggregatedResults.errors[ file ] || {};

for ( const line of Object.keys( lines ) ) {
const columns = lines[ line ] || {};

for ( const column of Object.keys( columns ) ) {
errorCount += ( columns[ column ] || [] ).length;
}
}
}

// Count warnings.
for ( const file of Object.keys( aggregatedResults.warnings ) ) {
const lines = aggregatedResults.warnings[ file ] || {};

for ( const line of Object.keys( lines ) ) {
const columns = lines[ line ] || {};

for ( const column of Object.keys( columns ) ) {
warningCount += ( columns[ column ] || [] ).length;
}
}
}

return { errorCount, warningCount };
}

function defaultString( key ) {
if (
pluginCheck.strings &&
Expand Down Expand Up @@ -545,9 +585,40 @@
*/
function renderResultsMessage( isSuccessMessage ) {
const messageType = isSuccessMessage ? 'success' : 'error';
const messageText = isSuccessMessage
? pluginCheck.successMessage
: pluginCheck.errorMessage;
let messageText;

if ( isSuccessMessage ) {
messageText = pluginCheck.successMessage;
} else {
Comment thread
davidperezgar marked this conversation as resolved.
// Count errors and warnings.
const { errorCount, warningCount } = countResults();

// Build the message with counts.
let errorPart = '';
if ( errorCount > 0 ) {
errorPart =
errorCount === 1 ? '1 error' : errorCount + ' errors';
}

let warningPart = '';
if ( warningCount > 0 ) {
warningPart =
warningCount === 1
? '1 warning'
Comment thread
ernilambar marked this conversation as resolved.
Outdated
: warningCount + ' warnings';
}

if ( errorPart && warningPart ) {
messageText = errorPart + ' and ' + warningPart + ' found.';
} else if ( errorPart ) {
messageText = errorPart + ' found.';
} else if ( warningPart ) {
messageText = warningPart + ' found.';
Comment thread
davidperezgar marked this conversation as resolved.
Outdated
} else {
// Fallback to default message if somehow no errors/warnings.
messageText = pluginCheck.errorMessage;
}
}

resultsContainer.innerHTML =
renderTemplate( 'plugin-check-results-complete', {
Expand Down
Loading