Main Content

Generate an Embedded Web View Report

To generate an embedded Web View report, create an instance of the class that defines the report generator (see Create an Embedded Web View Report Generator). 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 Class Definition File for an Embedded Web View). These commands generate and display an instance of that report:

model = 'f14';
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 Navigating an Embedded Web View Report.

Class Definition File for an Embedded Web View

This class generates a report 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