Skip to end of banner
Go to start of banner

Custom CSHTML Report Page Creation

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Possible Custom Page Locations

Root\UI\Web Sites\EmpowerID.Web\EmpowerID.Web.PortableAreas.Common\Views\CustomViews\Authenticated

Root\UI\Web Sites\EmpowerID.Web\EmpowerID.Web.PortableAreas.Common\Views\Reports

Root\UI\Web Sites\EmpowerID.Web\EmpowerID.Web.PortableAreas.Common\Views\ObjectTypeSearch

Grids not inline on a page but loaded as partials should be created here

Root\UI\Web Sites\EmpowerID.Web\EmpowerID.Web.PortableAreas.Common\Views\ViewOne

and Loaded Like this as tabs

<div data-bind="eidTab: { Title: '@EidResx("ApprovalFlowPoliciesGrid", true)', Url: '@Url.Action("LoadPartial", "ViewOne", new { area = "Common", partial = "ApprovalFlowPoliciesGrid" } )' }"></div>

and loaded like this when used on ViewOne pages

@{
Html.RenderPartial("Accordion", new LocalizedDataModel() { Text = EidResx("RbacAssigneeAssignmentGridTargetassigneeGroup").ToString(), Value = Url.HashedAction("LoadPartial", "ViewOne", "Common", new { partial = "RbacAssigneeAssignmentGrid", TargetAssigneeID = Model.GetProperty("GroupGUID") }, removeArea: false) });                             
}

Basic Page Skeleton

@{
    Layout = "_Layout.cshtml";
    ViewBag.UINounID = new Guid("ABB34C92-B418-4734-B5EE-F27D094008BF");
    //ViewBag.SearchTitle = "Risk Management";

}

@if (EidAuthenticationHandler.HasAccessToPage(new Guid("d0dd4ac2-e166-4d72-ba65-e841b2fd3319")))
{

<div id="@ViewBag.UniqueID-tabstrip" data-bind="eidTabStrip: {}">

@if (EidAuthenticationHandler.HasAccessToPage(new Guid("db2c77de-600a-4ee8-9e3f-69f0381467bd")))
{
        <div data-bind="eidTab: { Title: '@EidResx("TabName", true)' }"></div>
        <div data-bind="eidTabPanel: {}">
                <div data-bind='eidGrid: { IsImplicit: true, grid: {
//Grid properties here

} }'>
//Columns here

        </div>
}
</div>

    }
    else
    {
    <div>
        <br>
        <br>
        <h1>@EidResx("AccessToPageDenied")</h1>
    </div>
    }

Header Section

@{
    Layout = "_Layout.cshtml";
    ViewBag.ShowActions = false;
    ViewBag.UINounID = new Guid("ABB34C92-B418-4734-B5EE-F27D094008BF");
    var personGuid = EidContext.LoginPersonGuid == Guid.Empty ? EidContext.CurrentPersonGuid : EidContext.LoginPersonGuid;
    ViewBag.SearchTitle = "Risk Management";

}

Load Tooltips Templates (Optional)

@{ Html.RenderAction("ResourceAttestationTooltips", "Templates"); }

Typical Breadcrumb

<div class="eid-breadcrumbs-container">
        <a href="@Url.GetHomePageHashed()" class="eid-breadcrumbs">@EidResx("Home") ></a>
        <a href="#Common/Find/azureidentitymanager" class="eid-breadcrumbs">@EidResx("Azure Identities")</a>
    </div>

Basic Search Template - One Defined Per Grid on Page or in CSHTML if Grid is not inline

        @Html.StartTemplate("EidBusinessRequestTypesWebSearch")
        <div class="eid-search ui-widget ui-widget-content eid-content eid-last ui-helper-clearfix"
             data-bind="eidForm: {}, focusFirstInput: true">
            <div class="eid-form-field fourcol">
                <label>
                    <span>@EidResx("SearchTerms"):</span>
                    <input type="text" data-bind="value: condition('SearchTerms')" />
                </label>
            </div>
            <div class="row">
                <button data-bind="jqButton: { disabled: $parent.DataSource.IsRefreshing }" class="eid-grid-search-button" type="submit">@Html.EidResx("EmpowerIDApplicationCommonWords_Search")</button>
            </div>
        </div>
        @Html.EndTemplate()

Property on Grid Object that Specifies its Search Template

SearcherTemplateName: "EidAzureAccountWebSearch",

Wrap Tabs in HasAccess Checks

 @if (EidAuthenticationHandler.HasAccessToPage(new Guid("4f919b9f-d592-493f-82c4-ae16cdd8a2a0")))
{
    <div data-bind="eidTab: { Title: '@EidResx("AzLocalRiskRulesGrid", true)', Url: '@Url.Action("AzLocalRiskRulesGrid", "ViewOne", new { area = "Common" })' }"></div>
}     

Grids Can Be Inline in the Page or Loaded from another CSHTML - Example Loading from a File

<div data-bind="eidTab: { Title: '@EidResx("ApprovalFlowPoliciesGrid", true)', Url: '@Url.Action("LoadPartial", "ViewOne", new { area = "Common", partial = "ApprovalFlowPoliciesGrid" } )' }"></div>

Example of Adding a Location Tree to a Grid (Add after last grid column)

<div data-bind='eidGridPanel: { Type: "Left", Title: "@EidResx("Locations", EscapeMode.HtmlAttribute)", CloseOnTarget: ".eid-tree-node-link" }'>
<div data-bind='eidStandaloneTree: { url: eid.url.api.services("Tree/GetOrgZones?hideITNodes=false&parentID=200"), useGuid: false, Mode: "Slim", value: DataSource.parameter("OrgZoneID"), AutoLoad: true }'></div>
</div>

Example of an Action Panel for Grid (Add after Location Tree Panel or last grid column)

                <div data-bind='eidGridPanel: { Type: "Left", Title: "@EidResx("Locations", EscapeMode.HtmlAttribute)", CloseOnTarget: ".eid-tree-node-link" }'>
                    <div data-bind='eidStandaloneTree: { url: eid.url.api.services("Tree/GetOrgZones?hideITNodes=false&parentID=200"), useGuid: false, Mode: "Slim", value: DataSource.parameter("OrgZoneID"), AutoLoad: true }'></div>
                </div>
                <div data-bind='eidGridPanel: { Type: "Right", Title: "@EidResx("Actions", EscapeMode.HtmlAttribute)" }'>
                    <!-- ko 'if': SelectedRow() -->
                    <div class="eid-grid-selected-bar"></div>
                    <div class="eid-grid-selected">
                        <div class="eid-panel-area" data-bind="'with': SelectedRow().DataItem">
                            <h4 class="eid-panel-area-title">
                                <span>@EidResx("ActionsFor") </span>
                                <a class="eid-text-link" data-bind='text: FriendlyName(), attr: { "href": "@Url.HashedContent("Common/ViewOne/Component?id=")" + AccountID() + "&componentName=Account", "title": FriendlyName }'></a>
                            </h4>
                            <div class="eid-panel-area-body">
                                <div data-bind='eidDataSource: {
                                                autoRefresh: true,
                                                dataSource: {
                                                    Url: "@Url.AreaAction("ActionsByResourceIDNounModels", "NounVerbAction", "Common")",
                                                    Parameters: { resourceId: ResourceID, noun : "AzureUser"  }
                                            }
                                            }'>
                                    <ul class="eid-link-list">
                                        <!-- ko foreach: DataView -->
                                        <li>
                                            <a class="eid-link-inverted" data-bind='text: FriendlyName, attr: { "title": Description, "href": Href }'></a>
                                        </li>
                                        <!-- /ko -->
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </div>
                    <!-- /ko -->
                    <div class="eid-panel-area">
                        <h4 class="eid-panel-area-title">
                            @EidResx("GeneralActions")
                        </h4>
                        <div class="eid-panel-area-body">
                            <div data-bind='eidDataSource: {
                                                autoRefresh: true,
                                                dataSource: {
                                                    Url: "@Url.AreaAction("ActionsByNoun", "NounVerbAction", "Common", new { noun = "AzureUser" })"
                                                }
                                            }'>
                                <ul class="eid-link-list">
                                    <!-- ko foreach: DataView -->
                                    <li>
                                        <a data-bind='text: FriendlyName, attr: { "title": Description, "href": Href }'></a>
                                    </li>
                                    <!-- /ko -->
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

Grid Columns and Formatters

Example Link to Viewone Page by GUID

@{ Html.RenderPartial("HyperLinkColumn", new TheDotNetFactory.EmpowerID.Web.PortableAreas.Common.Models.Shared.HyperLinkColumnModel()
  {
    Title = EidResx("Owner").ToString(),
    DataFieldName = "OwnerFriendlyName",
    AccessGuid = Guid.Parse("1998dc9b-d8df-421b-a9ce-31f029cf0893"),
    UrlFormat = Url.HashedContent("Common/ViewOne/ComponentByGuid?id={PersonID}", removeArea: false)
});}

Example Link to Viewone Page by ID (Int)

@{ Html.RenderPartial("HyperLinkColumn", new TheDotNetFactory.EmpowerID.Web.PortableAreas.Common.Models.Shared.HyperLinkColumnModel()                    {
  Title = EidResx("EmpowerIDComponentProperties_PersonView.Login").ToString(),
  DataFieldName = "EmpowerIDLogon",
  AccessGuid = Guid.Parse("1998dc9b-d8df-421b-a9ce-31f029cf0893"),
  UrlFormat = Url.HashedContent("Common/ViewOne/Component?id={PersonID}&componentName=Person", removeArea: false)
});}

Examples of Grid Column Templates

    @Html.StartTemplate("EidGridColumnAZIChangeTypeTemplate")
    <span data-bind="attr: { title: (!ToolTip()).toString() }, css: {
        'eid-grid-decisions-approved' : !ParentRow.DataItem.Disabled(),
        'eid-grid-decisions-rejected' : ParentRow.DataItem.Disabled()
      }"></span>
    @Html.EndTemplate()
    
<div data-bind='eidGridColumn: { Title: "@EidResx("Type", EscapeMode.HtmlAttribute)", DataFieldName: "AccountTypeName", FormatType: "Custom" }'>
                    <div data-bind="attr: { title: DataItem.AccountTypeName() }, css: {
                     'eid-icon-person-small': DataItem.AccountTypeName() == 'User',
                     'eid-icon-management-small': DataItem.AccountTypeName() == 'Person',
                     'eid-icon-shared-credentials-small': DataItem.AccountTypeName() == 'ServicePrincipal',
                     'eid-icon-groups-small': DataItem.AccountTypeName() == 'ManagedIdentity' }">
                     </div>
</div>

Example of Usage of a Grid Column Template

<div data-bind='eidGridColumn:  { Title: "@EidResx("Enabled", EscapeMode.HtmlAttribute)", DataFieldName: "Disabled", TemplateName: "EidGridColumnAZIChangeTypeTemplate" }'></div>

Grid Column Formatter: DateTime

            <div data-bind='eidGridColumn:  { Title: "@EidResx("ProcessTime", EscapeMode.HtmlAttribute)", DataFieldName: "ProcessTime", FormatType: "DateTime" }'></div>
            <div data-bind='eidGridColumn:  { Title: "@EidResx("LockedByServer", EscapeMode.HtmlAttribute)", DataFieldName: "LockedByServer", FormatType: "String" }'></div>

Grid Column Formatter: Force to String

<div data-bind='eidGridColumn:  { Title: "@EidResx("LockedByServer", EscapeMode.HtmlAttribute)", DataFieldName: "LockedByServer", FormatType: "String" }'></div>

Grid Column Formatter: CheckBox

<div data-bind='eidGridColumn:  { Title: "@EidResx("Team", EscapeMode.HtmlAttribute)", DataFieldName: "IsTeamsGroup", FormatType: "CheckBox" }'></div>

Example of a Non-Sortable Column with a Template

<div data-bind='eidGridColumn:  {
  Title: "@EidResx("EmpowerIDGridTypeColumns_GroupAccountHistory.GroupAccountHistoryChangeTypeName", true)",
  DataFieldName: "GroupAccountHistoryChangeTypeName",
  EnableSorting: false,
  TemplateName: "EidGridColumnGroupChangeTypeTemplate"
}'></div>

Example of a Grid Column that Links to MyTasks

Add this to the header section

@{
    var myTasksMicroserviceURL = Config<string>("MyTasksMicroserviceURL");
    Uri myTasksUri = new Uri(myTasksMicroserviceURL);
}

Example Grid Column with link to MyTasks Item

<div data-bind='eidGridColumn:  {
  Title: "@EidResx("ViewBusinessRequestItem", true)",
  DataFieldName: "FriendlyName",
  FormatType: "HyperLink",
  DataBag: {
      UrlFormat: "@((new Uri(myTasksUri, "/all/businessRequestItems?id={BusinessRequestItemID}")).ToString())"
      }
}'></div>

Example Grid Link to Old Workflow Tasks View One Page

<div data-bind='eidGridColumn:  { Title: "@EidResxAttr("BusinessProcessTaskID")", DataFieldName: "BusinessProcessTaskID", FormatType: "Custom" }'>
  <!-- ko 'with': DataItem -->
  <a data-bind="text: BusinessProcessTaskID(), attr: { href:  eid.url('#Common/ViewOneTask/?id=' + BusinessProcessTaskID()) }"></a>
  <!-- /ko -->
</div>

Example Grid Column Formatter Changing a Number to a Text Value

<div data-bind='eidGridColumn:  { Title: "@EidResx("ProcessStatus", EscapeMode.HtmlAttribute)", DataFieldName: "ProcessStatus", FormatType: "Custom"}'>
                <!-- ko 'with': DataItem -->
                <!-- ko 'if': ProcessStatus() == 0 -->
                <span data-bind='text:"@EidResx("Not Processed", EscapeMode.HtmlAttribute)"'></span>
                <!-- /ko -->
                <!-- ko 'if': ProcessStatus() == 1 -->
                <span data-bind='text:"@EidResx("In Progress", EscapeMode.HtmlAttribute)"'></span>
                <!-- /ko -->
                <!-- ko 'if': ProcessStatus() == 2 -->
                <span data-bind='text:"@EidResx("Processed", EscapeMode.HtmlAttribute)"'></span>
                <!-- /ko -->
                <!-- ko 'if': ProcessStatus() == 3 -->
                <span data-bind='text:"@EidResx("Error", EscapeMode.HtmlAttribute)"'></span>
                <!-- /ko -->
                <!-- ko 'if': ProcessStatus() == 4 -->
                <span data-bind='text:"@EidResx("Ignored", EscapeMode.HtmlAttribute)"'></span>
                <!-- /ko -->
                <!-- ko 'if': ProcessStatus() == 5 -->
                <span data-bind='text:"@EidResx("Pending Reprocessing", EscapeMode.HtmlAttribute)"'></span>
                <!-- /ko -->
                <!-- /ko -->
</div>

Advanced Search Templates

Typically styled using fourcol, fourcol, fourcol last

On the Grid itself, specify only SearchTerms for simple search if the view has SearchTerms on it

SearcherTemplateName: "EidAzureAccountWebSearch",
SearcherMode: "Advanced",
Searcher: {
        SimpleOptions: [
        { DataFieldName: "SearchTerms" }
        ],
        EnableSimpleMode: true
},

Example of Advanced Search on a text field that is not a parameter

<div class="eid-form-field fourcol">
        <label>
            <span>@Html.EidResx("EmpowerIDLogin"):</span>
            <input type="text" data-bind="value: condition('EmpowerIDLogon')" />
         </label>
</div>

Example of Advanced Search on a Boolean field that is not a parameter

        <div class="eid-form-field fourcol">
            <label>
                <span>@Html.EidResx("Disabled"):</span>
                <input type="checkbox" data-bind="eidCheckBox: { checked: condition('Disabled', null, null, 'Boolean'), enableTriState: true }" />
            </label>
        </div>

Example of Advanced Search on a Boolean field that is a parameter

<div class="eid-form-field fourcol">
         <label>
              <span>@Html.EidResx("NeverLoggedInOnly"):</span>
              <input type="checkbox" data-bind="eidCheckBox: { checked: parameter('NeverLoggedInOnly', null, null, 'Boolean'), enableTriState: true }" />
         </label>
</div>

Example Date Range Search on a Single Column that is not a Parameter

<div class="eid-form-field fourcol">
            <label class="ui-display-inline">
                <span>@EidResx("LastLogonTimeBetween")</span>
                <input type="date" data-bind="date: {
                        value: condition('LastLogonTime', null, 'GreaterThan', 'DateTime'),
                        viewModelFormat: 'toUTCZeroTimeString'
                     }" />
            </label>
</div>
<div class="eid-form-field fourcol last">
            <label class="ui-display-inline">
                <span>@EidResx("LastLogonTimeand")</span>
                <input type="date" data-bind="date: {
                        value: condition('LastLogonTime', null, 'LessThan', 'DateTime'),
                        viewModelFormat: 'toUTCMidnightTimeString'
                     }" />
            </label>
</div>

Example Date Range Search with Calculated Default Values

<div class="sixcol">
            <div class="eid-form-field">
                <label class="ui-display-inline">
                    <span>Between</span>
                    <input type="date" data-bind="date: {
                        value: parameter('StartDate', Date.now().subtractDays(7).toUTCZeroTimeString()),
                        viewModelFormat: 'toUTCZeroTimeString'
                        }" />
                </label>
            </div>
</div>
<div class="sixcol last">
            <div class="eid-form-field">
                <label class="ui-display-inline">
                    <span>and</span>
                    <input type="date" data-bind="date: {
                        value: parameter('EndDate', Date.now().toUTCMidnightTimeString()),
                        viewModelFormat: 'toUTCMidnightTimeString'
                        }" />
                </label>
            </div>
</div>

Autocomplete Search for Person Sending PersonGUID as a Parameter Value to Method

<div class="eid-form-field fourcol">
            <label>
                @EidResx("ByMember", true)
            </label>
<div class="eid-person-autocomplete" data-bind="eidAutocomplete: {
                value: parameter('PersonID'),
                ItemTemplateName: 'EidAutoCompletePerson',
                DataSource: { TypeName: 'PersonSearch', MethodName: 'GetSearch', parameters: { textToSearch: null } },
                valueField: 'PersonGUID',
                displayField: 'FriendlyName',
                otherFields: ['Login', 'PersonID'],
                TypeName: 'Person',
                InitialLoadType: 'Person',
                searchParameterName: 'textToSearch' }">
            </div>
</div>

More Up to Date threecol Style Example Person Autocomplete with PersonGUID as a Parameter

<div class="eid-form-field threecol">
                    <label>
                        @Html.EidResx("InitiatorOrTargetPersonID")
                    </label>
                    <div data-bind="eidAutocomplete: { value: parameter('InitiatorOrTargetPersonID'),
                    componentName: 'PersonSearch',
                    methodName: 'GetSearch', displayField: 'FriendlyName', otherFields: ['PersonID','FriendlyName','PersonStoreFriendlyName','NetBiosName','LogonName','Login'],
                    initialValueDataSource: { componentName: 'PersonView', methodName: 'GetByPersonGUID', parameters: {personGuid: null }, displayField: 'FriendlyName' },
                    ItemHref: 'Common/ViewOne/ComponentByGuid?id={1}&componentName={0}',
                    TypeName: 'Person',
                    valueField: 'PersonGUID',
                    ItemTemplateName: 'EidAutoCompletePerson',
                    initialLoadType: 'Person' }">
                    </div>

</div>

AccountStoreGUID AutoComplete as a Parameter Example

<div class="eid-form-field threecol">
                    <label>
                        @Html.EidResx("AccountStore")
                    </label>
                    <div data-bind="eidAutocomplete: { value: parameter('AccountStoreID'),
                    componentName: 'AccountStoreSearch',
                    methodName: 'GetSearch', displayField: 'FriendlyName', otherFields: ['AccountStoreID','FriendlyName','AccountStoreStoreFriendlyName','NetBiosName','LogonName','Login', 'SecurityBoundaryTypeName','FQN','Name'],
                    initialValueDataSource: { componentName: 'AccountStore', methodName: 'GetByAccountStoreGUID', parameters: {AccountStoreGuid: null }, displayField: 'FriendlyName' },
                    ItemHref: 'Common/ViewOne/ComponentByGuid?id={1}&componentName={0}',
                    TypeName: 'AccountStore',
                    valueField: 'AccountStoreGUID',
                    ItemTemplateName: 'EidAutoCompleteAccountStore',
                    initialLoadType: 'AccountStore' }">
                    </div>

</div>

Example Searching by an Enum Where the Component Doesn’t Have a View (Getall)

<div class="eid-form-field fourcol">
        <label>
            <span>@Html.EidResx("ManagementRoleTypeFriendlyName"):</span>
            <select data-bind='eidCombobox: { EnableClear: true, Value: condition("ManagementRoleTypeID", null, null, "Int"), TextField: "FriendlyName", ValueField: "ManagementRoleTypeID",
                        DataSource: { SortByName: "FriendlyName", TypeName: "ManagementRoleType", DoesSupportSearch: false, DoesSupportPaging: false,
                         MethodName: "GetAll" } }'>
            </select>
        </label>
</div>

Non-Localized Example of Searching by location Tree as a Method Parameter

<div class="eid-form-field fourcol last">
        <label>
            Location (In or Below)
        </label>
    <div data-bind="eidPopupTree: { ShowInline: true,
TreeType: 'OrgZone', nullValue: 0, value: parameter('OrgZoneID', 0),
DataBag: { SearchServerSide: true, EnableSearch: true, url: eid.url.api.services('Tree/GetOrgZones?hideITNodes=false&parentID=0') }
}"></div>
    </div>

Another Location Tree Example

<div class="eid-form-field fourcol">
        <label>
            <span>@Html.EidResx("OrgZone"):</span>
            <div data-bind="eidPopupTree: { ShowInline: true, TreeType: 'OrgZone', nullValue: 0, value: parameter('OrgZoneID', null, null, 'Int'), DataBag: { SearchServerSide: true, EnableSearch: true, url: eid.url.api.services('Tree/GetOrgZones?hideITNodes=false&parentID=0') } }"></div>
        </label>
</div>

Example of Searching by OrgRole Tree as a Method Parameter

<div class="eid-form-field fourcol">
        <label>
            @EidResx("Parent") @EidResx("Role")
        </label>
        <div data-bind="eidPopupTree: { ShowInline: true, TreeType: 'OrgRole', nullValue: 0, value: parameter('OrgRoleID', 0), DataBag: { SearchServerSide: true, EnableSearch: true } }"></div>
</div>

Example Searching by Business Role and Location (OROZ)

    <div class="eid-form-field fourcol">
        <label>
            @EidResx("BusinessRoleAndLocationInOrBelow")
        </label>
        <div data-bind="eidPopupDualTree: { ShowInline: true, value: parameter('orgRoleOrgZoneID', 0), nullValue: 0 }"></div>
    </div>

Example: Hard Coding a Default Value for a Search Field

<div class="eid-form-field fourcol">
        <label>
            <span>@Html.EidResx("MinimumPercentageOfPeopleInOROZ"):</span>
            <input type="text" data-bind="value: parameter('MinimumPercentageOfPeopleInOROZ', 40)" />
        </label>
</div>

Example: Loading a Default Search Field Value from a Resource System Config Setting

Add this line to the header code section to retrieve the value and does some parsing in this example

var joinFilter = Config<string>("AccountInboxJoinFilter").Replace("\n", "").Replace("\r", "");

Example Usage of the Advanced Search Field

<div class="eid-form-field fourcol">
        <label>
            <span>@Html.EidResx("AccountInboxJoinFilter"):</span>
            <textarea data-bind="value: parameter('JoinFilter', '@joinFilter')" />
        </label>
</div>

Example AutoComplete Where Method Has Large # of Parameters

        <div class="eid-form-field fourcol">
        <label>
            <span>@EidResx("AzGlobalRight")</span>
        </label>
        <div data-bind="eidAutocomplete: { value: parameter('AzGlobalRightID', '@ViewBag.AzGlobalRightID', null, 'Guid'),
                                   componentName: 'AzGlobalRightView',
                                   methodName: 'GetAllSearch', displayField: 'FriendlyName', otherFields: ['AzGlobalRightID','FriendlyName'],
                                   parameters: {
                                    ResourceSystemTypeModuleID: null,
                                    ResourceSystemTypeID: null,
                                    AzRightTypeID: null,
                                    OrgZoneID: null,
                                    ResourceTypeOperationID: null,
                                    AzGlobalRoleID: null,
                                    AzLocalRoleID: null,
                                    Denied: null,
                                    AzGlobalFunctionID: null,
                                    AzLocalFunctionID: null,
                                    AssigneeID: null,
                                    columnsToSearch: 'SearchTerms',
                                    textToSearch: null
                                            },
                                            valueField: 'AzGlobalRightID',
                                            ItemHref: 'Common/ViewOne/ComponentByGuid?id={1}&componentName={0}',
                                            initialValueDataSource: { componentName: 'AzGlobalRightView', methodName: 'GetByAzGlobalRightID', parameters: {AzGlobalRightID: null }, displayField: 'FriendlyName' },
                                            initialLoadType: 'AzGlobalRight',
                                            TypeName: 'AzGlobalRight' }">
        </div>
    </div>

ResourceSystem AutoComplete with Default Value Set to 1 = EmpowerID

    <div class="eid-form-field fourcol last">
        <div data-bind="eidAutocomplete: { labelText: '@EidResx("System", true)',
             value: parameter('ResourceSystemID', 1, null, 'Int'), componentName: 'ResourceSystemView',
                    initialLoadType: 'ResourceSystem',
            TypeName: 'ResourceSystem',
                    methodName: 'GetAllSearch',
             parameters: { columnsToSearch: null },
                    displayField: 'FriendlyName',
                    valueField: 'ResourceSystemID',
                    searchParameterName: 'textToSearch',
                     }"></div>
    </div>

Auto-Complete Example Where it Looks Like the Default Value is Being Passed into the Page (i.e. ViewBag)

<div class="eid-form-field fourcol last">
            <label>
                <span>@EidResx("Risk"):</span>
            </label>
<div data-bind="eidAutocomplete: { value: parameter('AzLocalRiskID', '@ViewBag.AzLocalRiskID', null, 'Guid'),
                                            componentName: 'AzLocalRiskView',
                                            methodName: 'GetAllSearch', displayField: 'FriendlyName', otherFields: ['AzLocalRiskID','FriendlyName'],
                                            parameters: {
                                            AzGlobalRiskID: null,
                                            AzRiskLevelID: null,
                                            AzLocalRiskTypeID: null,
                                            OrgZoneID: null,
                                            OwnerID: null,
                                            columnsToSearch: null
                                    },
                                            valueField: 'AzLocalRiskID',
                                            ItemHref: 'Common/ViewOne/ComponentByGuid?id={1}&componentName={0}',
                                            initialValueDataSource: { componentName: 'AzLocalRiskView', methodName: 'GetByAzLocalRiskID', parameters: {AzLocalRiskID: null }, displayField: 'FriendlyName' },
                                            initialLoadType: 'AzLocalRisk',
                                            TypeName: 'AzLocalRisk' }">
            </div>
</div>

Grids

Searcher Section Properties

                DoesSupportSearch: true,
                SearcherTemplateName: "EidSoDViolationWebSearch1-@searchTemplateGuid",
                EnableGroupBy: false,
                SearcherMode: "Advanced",
                Searcher: {
                    SimpleOptions: [
                        { DataFieldName: "Name", BooleanLogicType: "OR" },
                        { DataFieldName: "Login", BooleanLogicType: "OR" },
                        { DataFieldName: "ViolatorPersonFriendlyName", BooleanLogicType: "OR" },
                        { DataFieldName: "ViolatorPersonManagerFriendlyName", BooleanLogicType: "OR" },
                        { DataFieldName: "Description" }
                    ],
                    EnableSimpleMode: true,
                    SortByField: "CreatedDate",
                    SortByOrder: "Desc"
                },

DataSource Section

Example method with lots of parameters and the values can be passed into the page using the ViewBag

DataSource: {
                    TypeName: "AzLocalRiskViolationView",
                    MethodName: "GetAllSearch",
                    Parameters: {
                        AzLocalRiskRuleID: '@ViewBag.AzLocalRiskRuleID',
                        AzLocalRiskID: '@ViewBag.AzLocalRiskID',
                        AzGlobalRiskID: '@ViewBag.AzGlobalRiskID',
                        ViolatorPersonID: '@ViewBag.ViolatorPersonID',
                        ViolatorOrgZoneID: '@ViewBag.ViolatorOrgZoneID',
                        AnyFunctionAssigneeID: '@ViewBag.AnyFunctionAssigneeID',
                        RiskFunctionAssigneeID: '@ViewBag.RiskFunctionAssigneeID',
                        RiskSegregatedFunctionAssigneeID : '@ViewBag.RiskSegregatedFunctionAssigneeID',
                        AnyFunctionAssigneeID : '@ViewBag.AnyFunctionAssigneeID',
                        MitigatorPersonID: '@ViewBag.MitigatorPersonID',
                        MitigationExpiringInXDays: '@ViewBag.MitigationExpiringInXDays',
                        LocalRiskOwner: '@ViewBag.LocalRiskOwner',
                        MitigationUnreviewed: '@ViewBag.MitigationUnreviewed',
                        HideViolationCombinations: '@ViewBag.HideViolationCombinations'
                    },
                    IncludedProperties: ["PersonID", "Login","ViolatorPersonDepartment", "ViolatorPersonTitle", "ViolatorPersonManagerFriendlyName","ViolatorPersonManagerEmail", "Name", "AzLocalRiskMitigationStatusID", "Email", "AzLocalRiskMitigationStatusFriendlyName", "LastMitigationStatusReview", "AzLocalRiskViolationID", "AzLocalRiskRuleName", "AzLocalRiskRuleID", "ApplicationID", "FriendlyName", "Name",
                        "Description", "ModifiedDate", "CreatedDate", "AzLocalRiskName", "ProtectedApplicationResourceID", "Expired", "HighestExpirationDate",
                        "AzLocalRiskFriendlyName", "AzRiskTypeFriendlyName", "MitigationOwnerAssigneeFriendlyName", "AzLocalRiskMitigationStatusFriendlyName", "AzLocalRiskViolatorMitigationID",
                        "RiskFunctionAssigneeFriendlyName", "RiskSegregatedFunctionAssigneeFriendlyName", "RiskType",
                        "AzLocalRiskMitigationStatusFriendlyName", "MitigationOwnerAssigneeFriendlyName", "AzLocalRiskID"
                    ],
                    DoesSupportSearch: true
}

Report Options Settings

ReportOptions: {
  Columns: [{ DataFieldName: "Login", Title: "Login Name"}, { DataFieldName: "Email", Title: "Email" }],
  ReportTitle: "@EidResx("LastLoginTitle")",
  ReportDescription: "@EidResx("LastLoginDescription")",
  ReportLocation: "#Common/Find/azurelicensemanager"
},

Creating Custom Pages Using the WF Studio Page Designer

See the following topic:

Create a simple page with advanced search

URL for Page Designer Pages - https://yourserver/UI/#common/pages/view/RBACViewID


  • No labels