Extended Design Report

Extended Design Report combine all analysis plugins in one result as html report or MS word file.

You can configurate which results important for your report and filter critical or all results.

Overview

The report is stored in Extras, in the dialog you have some options:

Overview for Extended Design Report

1) Select output format (interactive html report or MS Word file)

2) Output unit (mm or mil)

3) For many Analysis results you can filter "Only Critical" results

4) Create the Export File

 

HTML Export

Here is an example how the report can be organized, with extra tab pages for each exported analysis:

Example output html report

The report begin with an overview for each step with e.g. design size, component count and the stackup information (signal layers, step count, layer count, net count,...)

With the extended design report you can use customization to change colors and images, you can also add own reports and pages. The report has an open Interface to automate it and create complete reports for all made analysis/checks.

 

Html Report Tools

Html Report Toolkit - Example Project

Einbindung

1. Plugin für Extended Design Report

Wenn das Projekt als Plugin für den Extended Design Report eingebunden werden soll, muss die ReportPlugin Klasse verwendet werden. Das Projekt muss als Class Library kompiliert werden. Die so erstellte DLL muss aus dem bin\Debug Verzeichnis des Projekts in das PlugIn-Verzeichnis im Installationsordner des PCB-Investigator (Beta-Version) kopiert werden (C:\Program Files (x86)\easylogix\PCB-Investigator-Beta\PlugIn). Wenn dies gemacht wurde, sollte es als Eintrag im Extended Design Report erscheinen und ausgewählt werden können.

Da auf diese Weise noch kein Debugging möglich ist, kann man auch das komplette Plugin-Verzeichnis in den bin\Debug Ordner kopieren. Dann muss man noch die folgenden Einstellungen ändern, indem man mit Rechtsklick auf das Projekt Properties auswählt.

  1. unter Debug - Start action die Auswahl von Start project auf Start external program ändern. Und dort über Browse die im Unterverzeichnis des Projekts liegende bin\Debug\PCB-Investigator.exe auswählen.
  2. unter Build - Output den Output path über Browse von bin\Debug auf das Unterverzeichis bin\Debug\PlugIn

Damit ist es dann auch möglich das Plugin zu Debuggen.

2. Automatisierte Erstellung über Code

Wenn der Report vollautomatisiert erstellt werden soll, muss die ReportCreator Klasse verwendet werden. Zum Debuggen muss das Projekt als Anwendung kompiliert werden. Damit alles ausgeführt werden kann, muss noch der komplette Inhalt des Installationsordners des PCB-Investigator (Beta-Version) (C:\Program Files (x86)\easylogix\PCB-Investigator-Beta\PlugIn) in das bin/Debug Verzeichnis des Projekts kopiert werden. Wird diese gestartet, öffnet sich ein Dialog zum Speichern des Reports. Nach Erstellung wird automatisch ein Browserfenster mit dem Report geöffnet.

Getting Started

Im Folgenden wird anhand einer beispielhaften Einteilung von Klassen, der grobe Ablauf zur Reporterstellung beschrieben.

- HtmlReport -

Verwendete Interfaces: IHtmlReport, IHtmlReportNoHtmlExtension
Zweck: Die eigentlich Report Klasse, die für die Darstellung der Html Seite verantwortlich ist.

Sie sollte das IHtmlReport Interface einbinden, das die benötigten Methoden GetHtml()GetCss()GetJs() bereitstellt. Außerdem gibt es mit dem IHtmlReportNoHtmlExtension Interface eine neue Methode GetHtmlData(), die eine einfachere Erstellung des Reports ermöglicht. Die Methode ersetzt die GetHtml() Methode und erwartet als Rückgabe eine Liste von IWindowContentData Objekten.

IWindowContentData => Alle Template Daten die auf erster Ebene innerhalb eines Windows definiert werden können

… zu diesen zählen aktuell:
IDefaultTemplateData => Von den Report Tools vordefinierte Standard Templates, die bereits auf ein Template File aus der Default Report Templates Bibliothek verweisen. Hier müssen nur noch die eigenen Daten eingesetzt werden.
HtmlData => Standard Container der aus einem Template und den passenden Daten dazu besteht. Mit dieser Klasse ist es möglich eigene Templates nach der dotliquid Syntax einzubinden.
HtmlDataContainer => Template Daten, die diese abstrakte Klasse implementieren, bieten die Möglichkeit innerhalb des Templates weitere Untertemplates zu definieren. Damit ist es flexibel möglich, Templates zu kombinieren und ineinander zu verschachteln.

Aktuell gibt es folgende HtmlDataContainer:
ReportWindowData => Dieser Container erzeugt ein Report Fenster. Es kann verwendet werden, um im Hauptfenster eines Reports weitere Unterfenster zu definieren.
AreaData => Einfacher Container ohne Styling, der dazu verwendet werden kann Templates zu gruppieren. Über eine festlegbare css Klasse können einfach eigene Stylings angewendet werden.
GeneralInfoContainerData => Einfacher Container ohne Styling aber mit Titel. Der Titel wird mit einer Linie vom Container getrennt und eignet sich vor allem dafür einfachen Informationstext anzuzeigen.

- ReportCreator -

Verwendete Klassen: ReportCreatorRevised, ReportHelper
Zweck: Eine Klasse zum Erstellen von einem HTML Report ohne UI, rein über Code

- ReportPlugin -

Verwendete Interfaces: IPluginReport, Neu: IPluginReportMultiType
Zweck: Eine Klasse für die Einbindung eines HTML Reports in den Extended Design Report (oder neu: Testcoverage Report)

Alle PCBI-Plugins mit dem IPluginReport Interface können über den Extended Design Report ausgegeben werden. Die wichtigste Methode ist GetHtmlReport diese erwartet als Rückgabe die weiter oben aufgeführte HtmlReport Klasse Somit ist es auch möglich mehrere Reports über eine UI in einem einzelnen HTML Report zu kombinieren. Die einzelnen Reports werden auf der Seite als umschaltbare Tabs aufgelistet. Soll der Report in anderen Reportererzeugern von PCBI verwendet werden, muss das IPluginReportMultiType Interface verwendet werden. Diese stellt eine eigene GetHtmlReport Methode bereit, sowie die Methode IsReportIncluded, die für jeden Reporterzeuger abfragt, ob der Report darin eingebunden werden soll. Aktuell ist dies jedoch nur für den Testcoverage Report implementiert.

optional: - ReportData -

Zweck: Klasse für die Zwischenspeicherung und Bündelung aller relevanten Reportdaten.

Diese Klasse soll zum Sammeln aller benötigten Daten verwendet werden. Ähnlich zu einem DTO ist sie unter anderem hilfreich um den Konstruktor des HtmlReports überschaubar zu halten.

optional: - ReportConstants -

Zweck: Klasse für globale Konstanten.

Diese Klasse soll für die saubere Trennung von konstanten Werten vom restlichen Code dienen.

Standard Templates

Im Folgenden werden alle aktuell verfügbaren HTML Templates der Html Report Tools Library aufgelistet.

  • Heading
  • Spacer
  • Area
  • VerticalBar
  • Tooltip
  • TooltipIcon
  • Image
  • GeneralInfoContainer
  • InfoTable
  • InfoTableMulti
  • TwoRatiosBar
  • ReportSettingsInfoBox
  • ReportSettingsInfoBoxTable
  • ReportSettingsInfoBoxContainer
  • ReportOverviewControl
  • PieChart
  • DataTable
  • InlineDataTable
  • ExtendedTableReport
  • ReportWindow
  • ReportBase
  • DefaultSPA

Resources

Alle Resource files js/css/html müssen als Embedded Resource eingebunden sein, damit sie in der .dll mit vorhanden sind.

Dot Liquid

Die Html Report Tools bauen auf der Library DotLiquid auf. Somit ist die Syntax, die zum Erstellen von Templates verwendet wird, die Liquid Syntax. Um eigene Templates zu erstellen und mit Daten befüllen zu können, muss diese verwendet werden. Im Folgenden finden sich die Links zur Dokumentation, sowohl von DotLiquid[1] als auch von der originalen Liquid Library von Shopify[2]. Letztere hat eine umfassendere Auflistung der verwendbaren Syntax und scheint mit der DotLiquid Syntax übereinzustimmen.