addWidget
Class: slmetric.dashboard.Group
Namespace: slmetric.dashboard
(To be removed) Add widget to slmetric.dashboard.Group
object
The Metrics Dashboard user interface, metricdashboard function, slmetric package API, and corresponding customizations will be removed in a future release. For more information, see Migrating from Metrics Dashboard to Model Maintainability Dashboard.
Description
adds a widget to an newWidget = addWidget(group,widgetType,num)slmetric.dashboard.Container object.
Input Arguments
slmetric.dashboard.Group object for which you want to add widgets
to customize Metrics Dashboard layout.
Specify the Type of an
slmetric.dashboard.Container,
slmetric.dashboard.Widget,
slmetric.dashboard.Group, or
slmetric.dashboard.CustomWidget object. This property is
read/write.
Data Types: char
Placement of widget in group on Metrics Dashboard. Order of widgets in the group proceeds from left to right, and then down in the group.
Output Arguments
New widget that you are adding to an slmetric.dashboard.Group
object on the Metrics Dashboard. You can add these widgets to a group:
slmetric.dashboard.Containerslmetric.dashboard.CustomWidgetslmetric.dashboard.Widget
Examples
Create a custom metric that counts nonvirtual blocks. Specify a widget to display this metric on the Metrics Dashboard. Add it to the Size Group.
Open the model vdp by
entering:
openExample('simulink_general/VanDerPolOscillatorExample')Create a custom metric class.
className = 'nonvirtualblockcount';
slmetric.metric.createNewMetricClass(className);
Create the nonvirtual block count metric by adding this code to the
nonvirtualblockcount.m
file.
classdef nonvirtualblockcount < slmetric.metric.Metric %nonvirtualblockcount calculates number of nonvirtual blocks per level. % BusCreator, BusSelector and BusAssign are treated as nonvirtual. properties VirtualBlockTypes = {'Demux','From','Goto','Ground', ... 'GotoTagVisibility','Mux','SignalSpecification', ... 'Terminator','Inport'}; end methods function this = nonvirtualblockcount() this.ID = 'nonvirtualblockcount'; this.Name = 'Nonvirtual Block Count'; this.Version = 1; this.CompileContext = 'None'; this.Description = 'Algorithm that counts nonvirtual blocks per level.'; this.AggregatedValueName = 'Nonvirtual Blocks (incl. Descendants)' this.ValueName = 'Nonvirtual Blocks' this.ComponentScope = [Advisor.component.Types.Model, ... Advisor.component.Types.SubSystem]; this.AggregationMode = slmetric.AggregationMode.Sum; this.ResultChecksumCoverage = true; this.SupportsResultDetails = true; end function res = algorithm(this, component) % create a result object for this component res = slmetric.metric.Result(); % set the component and metric ID res.ComponentID = component.ID; res.MetricID = this.ID; % Practice D1=slmetric.metric.ResultDetail('identifier 1','Name 1'); D1.Value=0; D1.setGroup('Group1','Group1Name'); D2=slmetric.metric.ResultDetail('identifier 2','Name 2'); D2.Value=1; D2.setGroup('Group1','Group1Name'); % use find_system to get all blocks inside this component blocks = find_system(getPath(component), ... 'SearchDepth', 1, ... 'Type', 'Block'); isNonVirtual = true(size(blocks)); for n=1:length(blocks) blockType = get_param(blocks{n}, 'BlockType'); if any(strcmp(this.VirtualBlockTypes, blockType)) isNonVirtual(n) = false; else switch blockType case 'SubSystem' % Virtual unless the block is conditionally executed % or the Treat as atomic unit check box is selected. if strcmp(get_param(blocks{n}, 'IsSubSystemVirtual'), ... 'on') isNonVirtual(n) = false; end case 'Outport' % Outport: Virtual when the block resides within % SubSystem block (conditional or not), and % does not reside in the root (top-level) Simulink window. if component.Type ~= Advisor.component.Types.Model isNonVirtual(n) = false; end case 'Selector' % Virtual only when Number of input dimensions % specifies 1 and Index Option specifies Select % all, Index vector (dialog), or Starting index (dialog). nod = get_param(blocks{n}, 'NumberOfDimensions'); ios = get_param(blocks{n}, 'IndexOptionArray'); ios_settings = {'Assign all', 'Index vector (dialog)', ... 'Starting index (dialog)'}; if nod == 1 && any(strcmp(ios_settings, ios)) isNonVirtual(n) = false; end case 'Trigger' % Virtual when the output port is not present. if strcmp(get_param(blocks{n}, 'ShowOutputPort'), 'off') isNonVirtual(n) = false; end case 'Enable' % Virtual unless connected directly to an Outport block. isNonVirtual(n) = false; if strcmp(get_param(blocks{n}, 'ShowOutputPort'), 'on') pc = get_param(blocks{n}, 'PortConnectivity'); if ~isempty(pc.DstBlock) && ... strcmp(get_param(pc.DstBlock, 'BlockType'), ... 'Outport') isNonVirtual(n) = true; end end end end end blocks = blocks(isNonVirtual); res.Value = length(blocks); end end end
Register the new metric in the metric repository.
[id_metric,err_msg] = slmetric.metric.registerMetric(className);
To begin, open the default configuration for the Metrics Dashboard layout.
conf = slmetric.dashboard.Configuration.open();
Obtain the slmetric.dashboard.Layout object from the
slmetric.dashboard.Configuration object.
layout = getDashboardLayout(conf);
Obtain widget objects that are in the layout object.
layoutWidget = getWidgets(layout);
Remove the widget that represents the Simulink block count metric.
sizeGroup = layoutWidget(2); sizeGroupWidgets = sizeGroup.getWidgets(); sizeGroup.removeWidget(sizeGroupWidgets(1));
Add a widget that displays the nonvirtual block count metric. For custom widgets,
the default visualization type is single value. If you want to use a different
visualization technique, specify a different value for the
VisualizationType property.
newWidget = sizeGroup.addWidget('Custom', 1); newWidget.Title = ('Nonvirtual Block Count'); newWidget.setMetricIDs('nonvirtualblockcount'); newWidget.setWidths(slmetric.dashboard.Width.Medium); newWidget.setHeight(70);
Specify whether there are lines separating the custom widget from other widgets in the group. These commands specify that there is a line to the right of the widget.
s.top = false; s.bottom = false; s.left = false; s.right = true; newWidget.setSeparators([s, s, s, s]);
Save the configuration object. This command serializes the API information to an XML file.
save(conf,'Filename','DashboardConfig.xml');
Set the active configuration.
slmetric.dashboard.setActiveConfiguration(fullfile(pwd,'DashboardConfig.xml'));Open the Metrics Dashboard for the model vdp.
metricsdashboard vdpClick the All Metrics button to run all metrics.
Version History
Introduced in R2018bThe Metrics Dashboard user interface, metricdashboard function, slmetric package API, and corresponding customizations will be removed in a future release. For more information, see Migrating from Metrics Dashboard to Model Maintainability Dashboard.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)