deploy: 9e06f72056
This commit is contained in:
parent
de09820554
commit
e4f08bf9a7
187 changed files with 6620 additions and 6342 deletions
|
|
@ -5,16 +5,16 @@
|
|||
<meta name=generator content="Hugo 0.92.1">
|
||||
<meta name=description content>
|
||||
<title>Extending the Role Center Headlines :: AL Guidelines</title>
|
||||
<link href=/css/nucleus.css?1644506468 rel=stylesheet>
|
||||
<link href=/css/fontawesome-all.min.css?1644506468 rel=stylesheet>
|
||||
<link href=/css/featherlight.min.css?1644506468 rel=stylesheet>
|
||||
<link href=/css/perfect-scrollbar.min.css?1644506468 rel=stylesheet>
|
||||
<link href=/css/auto-complete.css?1644506468 rel=stylesheet>
|
||||
<link href=/css/theme.css?1644506468 rel=stylesheet>
|
||||
<link href=/css/theme-blue.css?1644506468 rel=stylesheet>
|
||||
<link href=/css/variant.css?1644506468 rel=stylesheet>
|
||||
<link href=/css/print.css?1644506468 rel=stylesheet media=print>
|
||||
<script src=/js/jquery.min.js?1644506468></script>
|
||||
<link href=/css/nucleus.css?1644600599 rel=stylesheet>
|
||||
<link href=/css/fontawesome-all.min.css?1644600599 rel=stylesheet>
|
||||
<link href=/css/featherlight.min.css?1644600599 rel=stylesheet>
|
||||
<link href=/css/perfect-scrollbar.min.css?1644600599 rel=stylesheet>
|
||||
<link href=/css/auto-complete.css?1644600599 rel=stylesheet>
|
||||
<link href=/css/theme.css?1644600599 rel=stylesheet>
|
||||
<link href=/css/theme-blue.css?1644600599 rel=stylesheet>
|
||||
<link href=/css/variant.css?1644600599 rel=stylesheet>
|
||||
<link href=/css/print.css?1644600599 rel=stylesheet media=print>
|
||||
<script src=/js/jquery.min.js?1644600599></script>
|
||||
<style>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
||||
</head>
|
||||
<body data-url=/navpatterns/1-patterns/extending-the-role-center-headlines/>
|
||||
|
|
@ -32,9 +32,9 @@ ALGuidelines.Dev
|
|||
<input data-search-input id=search-by type=search placeholder=Search...>
|
||||
<span data-search-clear><i class="fas fa-times"></i></span>
|
||||
</div>
|
||||
<script src=/js/lunr.min.js?1644506468></script>
|
||||
<script src=/js/auto-complete.js?1644506468></script>
|
||||
<script src=/js/search.js?1644506468></script>
|
||||
<script src=/js/lunr.min.js?1644600599></script>
|
||||
<script src=/js/auto-complete.js?1644600599></script>
|
||||
<script src=/js/search.js?1644600599></script>
|
||||
</div>
|
||||
<div class=highlightable>
|
||||
<ul class=topics>
|
||||
|
|
@ -266,19 +266,14 @@ ALGuidelines.Dev
|
|||
<main id=body-inner>
|
||||
<h1>Extending the Role Center Headlines</h1>
|
||||
<p><em>By David Bastide at Microsoft Development Center Copenhagen</em></p>
|
||||
<p>_<a href=3733.logo.png><img src=3733.logo.png alt=" "></a>_</p>
|
||||
<p>__</p>
|
||||
<p><a href=3733.logo.png><img src=3733.logo.png alt=" "></a></p>
|
||||
<h2 id=context>Context</h2>
|
||||
<p>Headlines are designed as a page of type HeadlinePart containing at least one text field. The part is added to the top of Role Center pages.<br>
|
||||
This document provides an elegant and extensible pattern about how to extend the Role Center headlines to add your own business headlines based on your data, and display them only if relevant.</p>
|
||||
<h2 id=description>Description</h2>
|
||||
<p>The Dynamics 365 Business Central release (April 2018) introduces a new HeadlinePart page type. This page type defines a page that rotates a display of several headlines after another, in the web client. A user can also click to switch to another headline. Headlines can also include a drilldown action that will be invoked when the user clicks the headline Text of the payload can be emphasized.<br>
|
||||
Headlines are divided in 2 parts: the qualifier, and the payload as you can see in the figure below.<br>
|
||||
_<br>
|
||||
_</p>
|
||||
Headlines are divided in 2 parts: the qualifier, and the payload as you can see in the figure below.</p>
|
||||
<p><a href=Headline.png><img src=Headline.png alt=" "></a></p>
|
||||
<p>< –[if gte mso 9]>< [endif]–>< –[if gte mso 9]>< [endif]–>< –[if gte mso 9]>< [endif]–>< –[if gte mso 10]>
|
||||
< [endif]–></p>
|
||||
<p><em>Figure 1: Qualifier, Payload and emphasized text.</em></p>
|
||||
<h2 id=usage>Usage</h2>
|
||||
<p>A page part has been added to each major Role Center:</p>
|
||||
|
|
@ -310,84 +305,79 @@ If no headline is added on these pages, fallback headlines will be displayed.</p
|
|||
</ul>
|
||||
<h3 id=examples>Examples:</h3>
|
||||
<h4 id=1-extending-the-page-with-a-new-headline>1. Extending the page with a new headline:</h4>
|
||||
<pre><code>group(LargestSale)
|
||||
{
|
||||
Visible = LargestSaleVisible;
|
||||
ShowCaption=false;
|
||||
Editable=false;
|
||||
|
||||
field(LargestSaleText;LargestSaleText)
|
||||
{
|
||||
ApplicationArea = Basic, Suite;
|
||||
DrillDown=true;
|
||||
|
||||
trigger OnDrillDown()
|
||||
var
|
||||
EssentialBusHeadlineMgt: Codeunit "Essential Bus. Headline Mgt.";
|
||||
begin
|
||||
EssentialBusHeadlineMgt.OnDrillDownLargestSale();
|
||||
end;
|
||||
}
|
||||
<div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=color:#66d9ef>group</span><span style=color:#f92672>(</span>LargestSale<span style=color:#f92672>)
|
||||
</span><span style=color:#f92672></span>{
|
||||
Visible = LargestSaleVisible;
|
||||
ShowCaption=false;
|
||||
Editable=false;
|
||||
|
||||
<span style=color:#66d9ef>field</span><span style=color:#f92672>(</span>LargestSaleText;LargestSaleText<span style=color:#f92672>)
|
||||
</span><span style=color:#f92672> </span>{
|
||||
ApplicationArea = Basic, Suite;
|
||||
DrillDown=true;
|
||||
|
||||
<span style=color:#66d9ef>trigger</span> OnDrillDown<span style=color:#f92672>()
|
||||
</span><span style=color:#f92672> </span><span style=color:#66d9ef>var</span>
|
||||
EssentialBusHeadlineMgt: <span style=color:#66d9ef>Codeunit</span> "Essential Bus. Headline Mgt.";
|
||||
<span style=color:#66d9ef>begin</span>
|
||||
EssentialBusHeadlineMgt<span style=color:#f92672>.</span>OnDrillDownLargestSale<span style=color:#f92672>()</span>;
|
||||
<span style=color:#66d9ef>end</span>;
|
||||
}
|
||||
}
|
||||
</code></pre>
|
||||
<h4 id=heading></h4>
|
||||
<h4 id=2-subscribing-to-the-oncomputeheadlines-event-and-computing-headlines>2. Subscribing to the OnComputeHeadlines event, and computing headlines</h4>
|
||||
<pre><code>\[EventSubscriber(ObjectType::Codeunit, Codeunit::"Headline RC Business Manager", 'OnComputeHeadlines', '', true, true)\]
|
||||
procedure OnComputeHeadlinesBusinessManager()
|
||||
begin
|
||||
// \[...\] compute headline, and init the EssentialBusinessHeadline record
|
||||
if not ShowHeadline then
|
||||
exit; // not enough data to compute headline
|
||||
if not HeadlineManagement.GetHeadlineText(
|
||||
'Insight from last week',
|
||||
StrSubstNo('The largest posted sales invoice was for %1',
|
||||
HeadlineManagement.Emphasize(Format(CustomerLedgerEntry.Amount, 0, TypeHelper.GetAmountFormatWithUserLocale('$'))))
|
||||
EssentialBusinessHeadline."Headline Text")
|
||||
then
|
||||
exit;
|
||||
EssentialBusinessHeadline.Validate("Headline Visible", true);
|
||||
EssentialBusinessHeadline.Modify();
|
||||
end;
|
||||
</code></pre>
|
||||
<h4 id=heading-1></h4>
|
||||
<h4 id=3-subscribing-to-the-onisanyextensionheadlinevisible-event>3. Subscribing to the OnIsAnyExtensionHeadlineVisible event</h4>
|
||||
<pre><code>\[EventSubscriber(ObjectType::Page, Page::"Headline RC Business Manager", 'OnIsAnyExtensionHeadlineVisible', '', true, true)\]
|
||||
procedure OnIsAnyExtensionHeadlineVisible(var ExtensionHeadlinesVisible: Boolean)
|
||||
var
|
||||
EssentialBusinessHeadline: Record "Essential Business Headline";
|
||||
AtLeastOneHeadlineVisible: Boolean;
|
||||
begin
|
||||
EssentialBusinessHeadline.SetRange("Headline Visible", true);
|
||||
EssentialBusinessHeadline.SetFilter("Headline Name",'%1|%2|%3|%4|%5',
|
||||
EssentialBusinessHeadline."Headline Name"::LargestOrder,
|
||||
EssentialBusinessHeadline."Headline Name"::LargestSale,
|
||||
EssentialBusinessHeadline."Headline Name"::BusiestResource,
|
||||
EssentialBusinessHeadline."Headline Name"::MostPopularItem,
|
||||
EssentialBusinessHeadline."Headline Name"::SalesIncrease,
|
||||
EssentialBusinessHeadline."Headline Name"::TopCustomer);
|
||||
AtLeastOneHeadlineVisible := not EssentialBusinessHeadline.IsEmpty();
|
||||
// only modify the var if this extension is making some headlines visible, setting to false could override some other extensions setting the value to true
|
||||
if AtLeastOneHeadlineVisible then
|
||||
ExtensionHeadlinesVisible := true;
|
||||
end;
|
||||
</code></pre>
|
||||
<h4 id=heading-2></h4>
|
||||
</code></pre></div><h4 id=2-subscribing-to-the-oncomputeheadlines-event-and-computing-headlines>2. Subscribing to the OnComputeHeadlines event, and computing headlines</h4>
|
||||
<div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>[EventSubscriber<span style=color:#f92672>(</span><span style=color:#66d9ef>ObjectType</span>::<span style=color:#66d9ef>Codeunit</span>, <span style=color:#66d9ef>Codeunit</span>::"Headline RC Business Manager", <span style=color:#e6db74>'OnComputeHeadlines'</span>, <span style=color:#e6db74>''</span>, true, true<span style=color:#f92672>)</span>]
|
||||
<span style=color:#66d9ef>procedure</span> OnComputeHeadlinesBusinessManager<span style=color:#f92672>()
|
||||
</span><span style=color:#f92672> </span><span style=color:#66d9ef>begin</span>
|
||||
<span style=color:#75715e>// [...] compute headline, and init the EssentialBusinessHeadline record
|
||||
</span><span style=color:#75715e></span> <span style=color:#66d9ef>if</span> <span style=color:#f92672>not</span> ShowHeadline <span style=color:#66d9ef>then</span>
|
||||
<span style=color:#66d9ef>exit</span>; <span style=color:#75715e>// not enough data to compute headline
|
||||
</span><span style=color:#75715e></span>
|
||||
<span style=color:#66d9ef>if</span> <span style=color:#f92672>not</span> HeadlineManagement<span style=color:#f92672>.</span>GetHeadlineText<span style=color:#f92672>(
|
||||
</span><span style=color:#f92672> </span><span style=color:#e6db74>'Insight from last week'</span>,
|
||||
StrSubstNo<span style=color:#f92672>(</span><span style=color:#e6db74>'The largest posted sales invoice was for %1'</span>,
|
||||
HeadlineManagement<span style=color:#f92672>.</span>Emphasize<span style=color:#f92672>(</span>Format<span style=color:#f92672>(</span>CustomerLedgerEntry<span style=color:#f92672>.</span>Amount, <span style=color:#ae81ff>0</span>, TypeHelper<span style=color:#f92672>.</span>GetAmountFormatWithUserLocale<span style=color:#f92672>(</span><span style=color:#e6db74>'$'</span><span style=color:#f92672>))))
|
||||
</span><span style=color:#f92672> </span>EssentialBusinessHeadline<span style=color:#f92672>.</span>"Headline Text"<span style=color:#f92672>)
|
||||
</span><span style=color:#f92672> </span><span style=color:#66d9ef>then</span>
|
||||
<span style=color:#66d9ef>exit</span>;
|
||||
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span>Validate<span style=color:#f92672>(</span>"Headline Visible", true<span style=color:#f92672>)</span>;
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span><span style=color:#66d9ef>Modify</span><span style=color:#f92672>()</span>;
|
||||
<span style=color:#66d9ef>end</span>;
|
||||
</code></pre></div><h4 id=3-subscribing-to-the-onisanyextensionheadlinevisible-event>3. Subscribing to the OnIsAnyExtensionHeadlineVisible event</h4>
|
||||
<div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>[EventSubscriber<span style=color:#f92672>(</span><span style=color:#66d9ef>ObjectType</span>::<span style=color:#66d9ef>Page</span>, <span style=color:#66d9ef>Page</span>::"Headline RC Business Manager", <span style=color:#e6db74>'OnIsAnyExtensionHeadlineVisible'</span>, <span style=color:#e6db74>''</span>, true, true<span style=color:#f92672>)</span>]
|
||||
<span style=color:#66d9ef>procedure</span> OnIsAnyExtensionHeadlineVisible<span style=color:#f92672>(</span><span style=color:#66d9ef>var</span> ExtensionHeadlinesVisible: <span style=color:#66d9ef>Boolean</span><span style=color:#f92672>)
|
||||
</span><span style=color:#f92672></span><span style=color:#66d9ef>var</span>
|
||||
EssentialBusinessHeadline: <span style=color:#66d9ef>Record</span> "Essential Business Headline";
|
||||
AtLeastOneHeadlineVisible: <span style=color:#66d9ef>Boolean</span>;
|
||||
<span style=color:#66d9ef>begin</span>
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span>SetRange<span style=color:#f92672>(</span>"Headline Visible", true<span style=color:#f92672>)</span>;
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span>SetFilter<span style=color:#f92672>(</span>"Headline Name",<span style=color:#e6db74>'%1|%2|%3|%4|%5'</span>,
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span>"Headline Name"::LargestOrder,
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span>"Headline Name"::LargestSale,
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span>"Headline Name"::BusiestResource,
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span>"Headline Name"::MostPopularItem,
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span>"Headline Name"::SalesIncrease,
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span>"Headline Name"::TopCustomer<span style=color:#f92672>)</span>;
|
||||
|
||||
AtLeastOneHeadlineVisible <span style=color:#f92672>:=</span> <span style=color:#f92672>not</span> EssentialBusinessHeadline<span style=color:#f92672>.</span>IsEmpty<span style=color:#f92672>()</span>;
|
||||
<span style=color:#75715e>// only modify the var if this extension is making some headlines visible, setting to false could override some other extensions setting the value to true
|
||||
</span><span style=color:#75715e></span> <span style=color:#66d9ef>if</span> AtLeastOneHeadlineVisible <span style=color:#66d9ef>then</span>
|
||||
ExtensionHeadlinesVisible <span style=color:#f92672>:=</span> true;
|
||||
<span style=color:#66d9ef>end</span>;
|
||||
</code></pre></div><h4 id=heading></h4>
|
||||
<h4 id=4-setting-the-headline-text-on-the-page>4. Setting the headline text on the page</h4>
|
||||
<pre><code>trigger OnAfterGetRecord()
|
||||
begin
|
||||
EssentialBusinessHeadline.GetHeadline(EssentialBusinessHeadline."Headline Name"::LargestSale);
|
||||
LargestSaleVisible := EssentialBusinessHeadline."Headline Visible";
|
||||
LargestSaleText := EssentialBusinessHeadline."Headline Text";
|
||||
end;
|
||||
</code></pre>
|
||||
<p><a href=0724.Headline-sequence-diagram-v2.png><img src=0724.Headline-sequence-diagram-v2.png alt=" "></a></p>
|
||||
<div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=color:#66d9ef>trigger</span> OnAfterGetRecord<span style=color:#f92672>()
|
||||
</span><span style=color:#f92672></span><span style=color:#66d9ef>begin</span>
|
||||
EssentialBusinessHeadline<span style=color:#f92672>.</span>GetHeadline<span style=color:#f92672>(</span>EssentialBusinessHeadline<span style=color:#f92672>.</span>"Headline Name"::LargestSale<span style=color:#f92672>)</span>;
|
||||
LargestSaleVisible <span style=color:#f92672>:=</span> EssentialBusinessHeadline<span style=color:#f92672>.</span>"Headline Visible";
|
||||
LargestSaleText <span style=color:#f92672>:=</span> EssentialBusinessHeadline<span style=color:#f92672>.</span>"Headline Text";
|
||||
<span style=color:#66d9ef>end</span>;
|
||||
</code></pre></div><p><a href=0724.Headline-sequence-diagram-v2.png><img src=0724.Headline-sequence-diagram-v2.png alt=" "></a></p>
|
||||
<p><em>Figure 2: Sequence diagram of headline usage</em></p>
|
||||
<h2 id=usages-in-nav>Usages in NAV:</h2>
|
||||
<ul>
|
||||
<li>Essential Business Headlines extension</li>
|
||||
</ul>
|
||||
<p>< –[if gte mso 9]>< [endif]–>< –[if gte mso 9]>< [endif]–>< –[if gte mso 9]>< [endif]–>< –[if supportAnnotations]–>< –[endif]–>< –[if gte mso 10]>
|
||||
< [endif]–></p>
|
||||
<footer class=footline>
|
||||
</footer>
|
||||
</main>
|
||||
|
|
@ -400,12 +390,12 @@ end;
|
|||
<div style=left:-1000px;overflow:scroll;position:absolute;top:-1000px;border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px>
|
||||
<div style=border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px></div>
|
||||
</div>
|
||||
<script src=/js/clipboard.min.js?1644506468></script>
|
||||
<script src=/js/perfect-scrollbar.min.js?1644506468></script>
|
||||
<script src=/js/perfect-scrollbar.jquery.min.js?1644506468></script>
|
||||
<script src=/js/jquery.svg.pan.zoom.js?1644506468></script>
|
||||
<script src=/js/featherlight.min.js?1644506468></script>
|
||||
<script src=/js/modernizr.custom-3.6.0.js?1644506468></script>
|
||||
<script src=/js/relearn.js?1644506468></script>
|
||||
<script src=/js/clipboard.min.js?1644600599></script>
|
||||
<script src=/js/perfect-scrollbar.min.js?1644600599></script>
|
||||
<script src=/js/perfect-scrollbar.jquery.min.js?1644600599></script>
|
||||
<script src=/js/jquery.svg.pan.zoom.js?1644600599></script>
|
||||
<script src=/js/featherlight.min.js?1644600599></script>
|
||||
<script src=/js/modernizr.custom-3.6.0.js?1644600599></script>
|
||||
<script src=/js/relearn.js?1644600599></script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue