Generate Embedded Web View Reports
To generate an embedded Web View report, create an instance of the class that defines the report generator (see Create Embedded Web View Report Generators). Then, use the fill
and close
report generator methods.
For example, suppose that you want to create a report using the
SystemDesignVariables
class example (see Generate Class Definition File for Embedded Web Views). These commands
generate and display an instance of that
report:
model = "slrgex_f14"; openExample(model); rptName = sprintf('%sVariables',model); load_system(model); rpt = SystemDesignVariables(rptName,model); fill(rpt); close(rpt); close_system(model); rptview(rptName);
The fill(rpt)
command uses the fill
method, which the report generator inherits from its base class. This method embeds a Web View of the f14
model in the report. It also calls the fillContent
method of the report generator, which fills the report document pane with a report about the variables used by the f14
model.
Here is part of the resulting Embedded Web View report:
For information on navigating to different parts of the report, see Navigate Through Embedded Web View Reports.
Generate Class Definition File for Embedded Web Views
This class generates a file for the workspace and data dictionary variables used by a specified Simulink® model.
classdef SystemDesignVariables < slreportgen.webview.EmbeddedWebViewDocument %SystemDesignVariables Report on variables used by a Simulink model % Defines a class of report generators to produce HTML reports on % the workspace and data dictionary variables used by a Simulink % model. The generated report includes this information for % each variable: % % Value (if the value is a scalar, numeric value) % Data Type % Source (e.g, path of dictionary containing the variable) % Source Type (e.g., data dictionary or base workspace) % Users (path of blocks that use the variable) methods function rpt = SystemDesignVariables(reportPath, modelName) % Invoke the EmbeddedWebViewDocument constructor, which % saves the report path and model name for use by the % report's fill methods. rpt@slreportgen.webview.EmbeddedWebViewDocument(reportPath,... modelName); % Turn off duplicate link warnings to avoid warnings for % blocks that use multiple design variables. rpt.ValidateLinksAndAnchors = false; rpt.ExportOptions.IncludeMaskedSubsystems = true; rpt.ExportOptions.IncludeSimulinkLibraryLinks = true; rpt.ExportOptions.IncludeReferencedModels = true; end function fillContent(rpt) % Fill the Content hole in the report template with design % variable information. You can use DOM or Report API methods % to create, format, add, and append content to this report. %% Set up report % Allow use of unqualified names for DOM and Report objects, % such as Paragraph instead of mlreportgen.dom.Paragraph and % TitlePage instead of mlreportgen.report.TitlePage. import mlreportgen.dom.* import mlreportgen.report.* % Obtain model name, which was saved by the report % constructor. getExportedModels returns model names as a % cell array, in case a report uses multiple models. model = getExportModels(rpt); % Extract the model from the cell array. (This report uses % only one model.) model= model{1}; % Add a title page to the report add(rpt, TitlePage("Title",[model " Report"],"Author","")); % Find variables used by the reported model finder = slreportgen.finder.ModelVariableFinder(model); % Create a Variables Chapter ch = Chapter("Variables"); while hasNext(finder) result = next(finder); % Create a section for the variable s = Section(result.Name); % Add variable information to the section using % default reporter settings reporter = getReporter(result); add(s,reporter); % Add this section to the chapter add(ch,s); end % Add the chapter to the report add(rpt,ch); end end end
To generate two-way links between design variable user paths and blocks in the Web View that use the design variables, replace these lines of code:
% Add variable information to the section using % default reporter settings reporter = getReporter(result); add(s,reporter);
with these lines of code:
% Create a Users list with links to the embedded model usedByPara = Paragraph("Used By:"); usedByPara.Bold = true; add(s, usedByPara); users = result.Users; nUsers = numel(users); for u = 1:nUsers userLink = createElementTwoWayLink(rpt, ... users{u}, ... Paragraph(users{u})); add(s,userLink); end