riskreport.web.js.BlackDuckRiskReport.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of blackduck-common Show documentation
Show all versions of blackduck-common Show documentation
A library for using various capabilities of Black Duck, notably the REST API and signature scanning.
/*
* blackduck-common
*
* Copyright (c) 2023 Synopsys, Inc.
*
* Use subject to the terms and conditions of the Synopsys End User Software License and Maintenance Agreement. All rights reserved worldwide.
*/
var RiskReport = function (myJQuery, jsonData) {
this.myJQuery = myJQuery;
this.rawdata = jsonData;
};
RiskReport.prototype.getPercentage = function (count) {
var totalCount = this.rawdata.totalComponents;
var percentage = 0;
if (totalCount > 0 && count > 0) {
percentage = (count / totalCount) * 100;
}
return percentage;
};
RiskReport.prototype.createRiskString = function (high, medium, low) {
if (high != 0) {
return "H";
} else if (medium != 0) {
return "M";
} else if (low != 0) {
return "L";
} else {
return "-";
}
};
RiskReport.prototype.createPhaseString = function (phase) {
if (phase == "PLANNING") {
return "In Planning";
} else if (phase == "DEVELOPMENT") {
return "In Development";
} else if (phase == "RELEASED") {
return "Released";
} else if (phase == "DEPRECATED") {
return "Deprecated";
} else if (phase == "ARCHIVED") {
return "Archived";
} else {
return "Unknown Phase";
}
};
RiskReport.prototype.createDistributionString = function (distribution) {
if (distribution == "EXTERNAL") {
return "External";
} else if (distribution == "SAAS") {
return "SaaS";
} else if (distribution == "INTERNAL") {
return "Internal";
} else if (distribution == "OPENSOURCE") {
return "Open Source";
} else {
return "Unknown Distribution";
}
};
RiskReport.prototype.createHeader = function () {
var reportHeader = document.createElement("div");
this.myJQuery(reportHeader).addClass("reportHeader");
var title = document.createElement("div");
this.myJQuery(title).addClass("h1 reportHeaderTitle");
this.myJQuery(title).text("Black Duck Risk Report");
var icon = document.createElement("div");
this.myJQuery(icon).addClass("reportHeaderIcon");
this.myJQuery(icon).css({"float": "right"});
this.myJQuery(reportHeader).append(title);
this.myJQuery(reportHeader).append(icon);
return reportHeader;
};
RiskReport.prototype.createVersionSummary = function () {
var table = document.createElement("div");
this.myJQuery(table).addClass("versionSummaryTable");
var versionInfo = document.createElement("div");
var projectName = document.createElement("div");
var projectVersion = document.createElement("div");
var moreDetail = document.createElement("div");
this.myJQuery(projectName).addClass("clickable linkText versionSummaryLargeLabel");
if (this.rawdata.projectURL) {
this.myJQuery(projectName).attr("onclick", "window.open('" + this.rawdata.projectURL + "', '_blank');");
}
this.myJQuery(projectName).text(this.rawdata.projectName);
this.myJQuery(projectVersion).addClass("clickable linkText versionSummaryLargeLabel");
if (this.rawdata.projectVersionURL) {
this.myJQuery(projectVersion).attr("onclick", "window.open('" + this.rawdata.projectVersionURL + "', '_blank');");
}
this.myJQuery(projectVersion).text(this.rawdata.projectVersion);
this.myJQuery(moreDetail).addClass("linkText riskReportText clickable evenPadding");
this.myJQuery(moreDetail).css({"float": "right"});
if (this.rawdata.projectVersionURL) {
this.myJQuery(moreDetail).attr("onclick", "window.open('" + this.rawdata.projectVersionURL + "', '_blank');");
}
this.myJQuery(moreDetail).text("See more detail...");
this.myJQuery(versionInfo).append(projectName);
this.myJQuery(versionInfo).append(this.myJQuery(''))
this.myJQuery(versionInfo).append(projectVersion);
this.myJQuery(versionInfo).append(moreDetail);
var info = this.myJQuery(document.createElement("div"));
this.myJQuery(info).append(this.myJQuery('Phase:'));
this.myJQuery(info).append(this.myJQuery('' + this.createPhaseString(this.rawdata.phase) + ''));
this.myJQuery(info).append(this.myJQuery('|'));
this.myJQuery(info).append(this.myJQuery('Distribution:'));
this.myJQuery(info).append(this.myJQuery('' + this.createDistributionString(this.rawdata.distribution) + ''));
this.myJQuery(table).append(versionInfo);
this.myJQuery(table).append(info);
return table;
};
RiskReport.prototype.createHorizontalBar = function (labelId, labelValue, clickFnName, barId, barValue, barStyleClass) {
var percentage = this.getPercentage(barValue) + '%';
return this.myJQuery(' ');
};
RiskReport.prototype.createSecurityRiskContainer = function () {
var container = document.createElement("div");
this.myJQuery(container).addClass("riskSummaryContainer horizontal rounded");
var labelDiv = document.createElement("div");
this.myJQuery(labelDiv).addClass("riskSummaryContainerLabel");
this.myJQuery(labelDiv).text("Security Risk").append('');
this.myJQuery(container).append(labelDiv);
this.myJQuery(container).append(this.createHorizontalBar('highSecurityRiskLabel', 'High', 'filterTableByVulnerabilityRisk', 'highVulnerabilityRiskBar', this.rawdata.vulnerabilityRiskHighCount, 'progress-fill-high'));
this.myJQuery(container).append(this.createHorizontalBar('mediumSecurityRiskLabel', 'Medium', 'filterTableByVulnerabilityRisk', 'mediumVulnerabilityRiskBar', this.rawdata.vulnerabilityRiskMediumCount, 'progress-fill-medium'));
this.myJQuery(container).append(this.createHorizontalBar('lowSecurityRiskLabel', 'Low', 'filterTableByVulnerabilityRisk', 'lowVulnerabilityRiskBar', this.rawdata.vulnerabilityRiskLowCount, 'progress-fill-low'));
this.myJQuery(container).append(this.createHorizontalBar('noneSecurityRiskLabel', 'None', 'filterTableByVulnerabilityRisk', 'noneVulnerabilityRiskBar', this.rawdata.vulnerabilityRiskNoneCount, 'progress-fill-none'));
return container;
};
RiskReport.prototype.createLicenseRiskContainer = function () {
var container = document.createElement("div");
this.myJQuery(container).addClass("riskSummaryContainer horizontal rounded");
var labelDiv = document.createElement("div");
this.myJQuery(labelDiv).addClass("riskSummaryContainerLabel");
this.myJQuery(labelDiv).text("License Risk").append('');
this.myJQuery(container).append(labelDiv);
this.myJQuery(container).append(this.createHorizontalBar('highLicenseRiskLabel', 'High', 'filterTableByLicenseRisk', 'highLicenseRiskBar', this.rawdata.licenseRiskHighCount, 'progress-fill-high'));
this.myJQuery(container).append(this.createHorizontalBar('mediumLicenseRiskLabel', 'Medium', 'filterTableByLicenseRisk', 'mediumLicenseRiskBar', this.rawdata.licenseRiskMediumCount, 'progress-fill-medium'));
this.myJQuery(container).append(this.createHorizontalBar('lowLicenseRiskLabel', 'Low', 'filterTableByLicenseRisk', 'lowLicenseRiskBar', this.rawdata.licenseRiskLowCount, 'progress-fill-low'));
this.myJQuery(container).append(this.createHorizontalBar('noneLicenseRiskLabel', 'None', 'filterTableByLicenseRisk', 'noneLicenseRiskBar', this.rawdata.licenseRiskNoneCount, 'progress-fill-none'));
return container;
};
RiskReport.prototype.createOperationalRiskContainer = function () {
var container = document.createElement("div");
this.myJQuery(container).addClass("riskSummaryContainer horizontal rounded");
var labelDiv = document.createElement("div");
this.myJQuery(labelDiv).addClass("riskSummaryContainerLabel");
this.myJQuery(labelDiv).text("Operational Risk").append('');
this.myJQuery(container).append(labelDiv);
this.myJQuery(container).append(this.createHorizontalBar('highOperationalRiskLabel', 'High', 'filterTableByOperationalRisk', 'highOperationalRiskBar', this.rawdata.operationalRiskHighCount, 'progress-fill-high'));
this.myJQuery(container).append(this.createHorizontalBar('mediumOperationalRiskLabel', 'Medium', 'filterTableByOperationalRisk', 'mediumOperationalRiskBar', this.rawdata.operationalRiskMediumCount, 'progress-fill-medium'));
this.myJQuery(container).append(this.createHorizontalBar('lowOperationalRiskLabel', 'Low', 'filterTableByOperationalRisk', 'lowOperationalRiskBar', this.rawdata.operationalRiskLowCount, 'progress-fill-low'));
this.myJQuery(container).append(this.createHorizontalBar('noneOperationalRiskLabel', 'None', 'filterTableByOperationalRisk', 'noneOperationalRiskBar', this.rawdata.operationalRiskNoneCount, 'progress-fill-none'));
return container;
};
RiskReport.prototype.createSummaryTable = function () {
var table = document.createElement("table");
this.myJQuery(table).addClass("table-summary horizontal")
var tableBody = document.createElement("tbody");
var tableRow = document.createElement("tr");
var tableDataLabel = document.createElement("td");
this.myJQuery(tableDataLabel).addClass("summaryLabel");
this.myJQuery(tableDataLabel).css({"font-weight": "bold"});
this.myJQuery(tableDataLabel).text("BOM Entries");
var tableDataValue = document.createElement("td");
this.myJQuery(tableDataValue).addClass("summaryLabel");
this.myJQuery(tableDataValue).text(this.rawdata.totalComponents);
this.myJQuery(tableRow).append(tableDataLabel);
this.myJQuery(tableRow).append(tableDataValue);
this.myJQuery(tableBody).append(tableRow);
this.myJQuery(table).append(tableBody);
return table;
};
RiskReport.prototype.columnClickEvent = function () {
if (this.initSortTable == false) {
console.log("init sorttable");
sorttable.makeSortable(document.getElementById('blackDuckBomReport'));
} else {
console.log("sortable table inited");
}
};
RiskReport.prototype.createComponentTableHead = function () {
var compStyleClass = "clickable componentColumn columnLabel evenPadding";
var licenseStyleClass = "clickable columnLabel evenPadding";
var riskStyleClass = "clickable riskColumnLabel evenPadding";
var tableHead = document.createElement("thead");
var tableHeadRow = document.createElement("tr");
this.myJQuery(tableHeadRow).append(document.createElement("th"));
var columnHeadComponent = document.createElement("th");
this.myJQuery(columnHeadComponent).addClass(compStyleClass);
this.myJQuery(columnHeadComponent).text("Component");
var columnHeadVersion = document.createElement("th");
this.myJQuery(columnHeadVersion).addClass(compStyleClass);
this.myJQuery(columnHeadVersion).text("Version");
var columnHeadLicense = document.createElement("th");
this.myJQuery(columnHeadLicense).addClass(licenseStyleClass);
this.myJQuery(columnHeadLicense).text("License");
var columnHeadEntryHigh = document.createElement("th");
this.myJQuery(columnHeadEntryHigh).addClass(riskStyleClass);
this.myJQuery(columnHeadEntryHigh).text("H");
var columnHeadEntryMedium = document.createElement("th");
this.myJQuery(columnHeadEntryMedium).addClass(riskStyleClass);
this.myJQuery(columnHeadEntryMedium).text("M");
var columnHeadEntryLow = document.createElement("th");
this.myJQuery(columnHeadEntryLow).addClass(riskStyleClass);
this.myJQuery(columnHeadEntryLow).text("L");
var columnHeadLicenseRisk = document.createElement("th");
this.myJQuery(columnHeadLicenseRisk).addClass(riskStyleClass);
this.myJQuery(columnHeadLicenseRisk).attr("title", "License Risk");
this.myJQuery(columnHeadLicenseRisk).text("Lic R");
var columnHeadOperationRisk = document.createElement("th");
this.myJQuery(columnHeadOperationRisk).addClass(riskStyleClass);
this.myJQuery(columnHeadOperationRisk).attr("title", "Operational Risk");
this.myJQuery(columnHeadOperationRisk).text("Opt R");
this.myJQuery(tableHeadRow).append(columnHeadComponent);
this.myJQuery(tableHeadRow).append(columnHeadVersion);
this.myJQuery(tableHeadRow).append(columnHeadLicense);
this.myJQuery(tableHeadRow).append(columnHeadEntryHigh);
this.myJQuery(tableHeadRow).append(columnHeadEntryMedium);
this.myJQuery(tableHeadRow).append(columnHeadEntryLow);
this.myJQuery(tableHeadRow).append(columnHeadLicenseRisk);
this.myJQuery(tableHeadRow).append(columnHeadOperationRisk);
this.myJQuery(tableHead).append(tableHeadRow);
return tableHead;
};
RiskReport.prototype.createComponentTableRow = function (entry) {
var tableRow = document.createElement("tr");
var columnApprovalStatus = document.createElement("td");
this.myJQuery(columnApprovalStatus).addClass("evenPadding violation");
this.myJQuery(columnApprovalStatus).append(this.myJQuery(''));
var approvalDiv = document.createElement("div");
this.myJQuery(approvalDiv).text(entry.policyStatus);
this.myJQuery(columnApprovalStatus).append(approvalDiv);
var columnComponent = document.createElement("td");
this.myJQuery(columnComponent).addClass("clickable componentColumn evenPadding");
if (entry.componentURL) {
this.myJQuery(columnComponent).attr("onclick", "window.open('" + entry.componentURL + "', '_blank');");
}
this.myJQuery(columnComponent).text(entry.componentName);
var columnVersion = document.createElement("td");
if (entry.componentVersion) {
this.myJQuery(columnVersion).addClass("clickable componentColumn evenPadding");
if (entry.componentVersionURL) {
this.myJQuery(columnVersion).attr("onclick", "window.open('" + entry.componentVersionURL + "', '_blank');");
}
this.myJQuery(columnVersion).text(entry.componentVersion);
} else {
this.myJQuery(columnVersion).addClass("componentColumn evenPadding");
this.myJQuery(columnVersion).text("?");
}
var columnLicense = document.createElement("td");
this.myJQuery(columnLicense).addClass("licenseColumn evenPadding");
if (entry.license) {
this.myJQuery(columnLicense).attr("title", entry.license);
this.myJQuery(columnLicense).text(entry.license);
} else {
this.myJQuery(columnLicense).attr("title", "Unknown License");
this.myJQuery(columnLicense).text("Unknown License");
}
var columnHighRisk = document.createElement("td");
this.myJQuery(columnHighRisk).addClass("riskColumn");
var highRiskDiv = document.createElement("div");
this.myJQuery(highRiskDiv).addClass("risk-span riskColumn risk-count");
this.myJQuery(highRiskDiv).text(entry.securityRiskHighCount);
this.myJQuery(columnHighRisk).append(highRiskDiv);
var columnMediumRisk = document.createElement("td");
this.myJQuery(columnMediumRisk).addClass("riskColumn");
var mediumRiskDiv = document.createElement("div");
this.myJQuery(mediumRiskDiv).addClass("risk-span riskColumn risk-count");
this.myJQuery(mediumRiskDiv).text(entry.securityRiskMediumCount);
this.myJQuery(columnMediumRisk).append(mediumRiskDiv);
var columnLowRisk = document.createElement("td");
this.myJQuery(columnLowRisk).addClass("riskColumn");
var lowRiskDiv = document.createElement("div");
this.myJQuery(lowRiskDiv).addClass("risk-span riskColumn risk-count");
this.myJQuery(lowRiskDiv).text(entry.securityRiskLowCount);
this.myJQuery(columnLowRisk).append(lowRiskDiv);
var columnLicenseRisk = document.createElement("td");
this.myJQuery(columnLicenseRisk).addClass("riskColumn");
var licRiskDiv = document.createElement("div");
this.myJQuery(licRiskDiv).addClass("risk-span riskColumn risk-count");
this.myJQuery(licRiskDiv).text(this.createRiskString(entry.licenseRiskHighCount, entry.licenseRiskMediumCount, entry.licenseRiskLowCount));
this.myJQuery(columnLicenseRisk).append(licRiskDiv);
var columnOperationalRisk = document.createElement("td");
this.myJQuery(columnOperationalRisk).addClass("riskColumn");
var opRiskDiv = document.createElement("div");
this.myJQuery(opRiskDiv).addClass("risk-span riskColumn risk-count");
this.myJQuery(opRiskDiv).text(this.createRiskString(entry.operationalRiskHighCount, entry.operationalRiskMediumCount, entry.operationalRiskLowCount));
this.myJQuery(columnOperationalRisk).append(opRiskDiv);
this.myJQuery(tableRow).append(columnApprovalStatus);
this.myJQuery(tableRow).append(columnComponent);
this.myJQuery(tableRow).append(columnVersion);
this.myJQuery(tableRow).append(columnLicense);
this.myJQuery(tableRow).append(columnHighRisk);
this.myJQuery(tableRow).append(columnMediumRisk);
this.myJQuery(tableRow).append(columnLowRisk);
this.myJQuery(tableRow).append(columnLicenseRisk);
this.myJQuery(tableRow).append(columnOperationalRisk);
return tableRow;
};
RiskReport.prototype.createComponentTable = function () {
var table = document.createElement("table");
this.myJQuery(table).attr("id", "blackDuckBomReport");
this.myJQuery(table).addClass("table sortable");
this.myJQuery(table).attr("onmouseenter", "initSortTable();");
this.myJQuery(table).append(this.createComponentTableHead());
var tableBody = document.createElement("tbody");
this.myJQuery(tableBody).attr("id", "blackDuckBomReportBody");
var entryArray = this.rawdata.components;
var odd = true;
for (var index = 0; index < entryArray.length; index++) {
try {
var tableRow = this.createComponentTableRow(entryArray[index]);
adjustTableRow(tableRow, odd);
adjustSecurityRisks(tableRow);
adjustOtherRisks(tableRow, licenseRiskColumnNum);
adjustOtherRisks(tableRow, operationRiskColumnNum);
odd = !odd;
this.myJQuery(tableBody).append(tableRow);
} catch (ex) {
console.log("Exception creating table row in Component Table" + ex);
}
}
this.myJQuery(table).append(tableBody);
return table;
};
RiskReport.prototype.createReport = function () {
var report = document.createElement("div")
this.myJQuery(report).addClass("riskReportBackgroundColor");
this.myJQuery(report).append(this.createHeader());
this.myJQuery(report).append(this.createVersionSummary());
this.myJQuery(report).append(this.createSecurityRiskContainer());
this.myJQuery(report).append(this.createLicenseRiskContainer());
this.myJQuery(report).append(this.createOperationalRiskContainer());
this.myJQuery(report).append(this.createSummaryTable());
var table = this.createComponentTable();
this.myJQuery(report).append(table);
this.myJQuery("#riskReportDiv").html(this.myJQuery(report).html());
};
© 2015 - 2024 Weber Informatics LLC | Privacy Policy