From 2d27c4a134f99bc328b8bdae8e1a57ea7ab5b9b7 Mon Sep 17 00:00:00 2001 From: Travis CI User Date: Wed, 18 Dec 2024 14:04:42 -0500 Subject: [PATCH] Updates --- 404.html | 2 +- 404/index.html | 2 +- chunk-map.json | 2 +- complex/disable-delete-btn-error-tx/index.html | 2 +- complex/enable-wo-classification/index.html | 2 +- complex/restrict-complete-status/index.html | 2 +- complex/restrict-wo-priority-based-on-work-type/index.html | 2 +- complex/set-default-values-new-wo/index.html | 2 +- component---src-pages-overview-mdx-05b8570fe702505fc3d7.js | 2 -- ...onent---src-pages-overview-mdx-05b8570fe702505fc3d7.js.map | 1 - component---src-pages-overview-mdx-db57767646ce2878c15d.js | 2 ++ ...onent---src-pages-overview-mdx-db57767646ce2878c15d.js.map | 1 + debug-ui/index.html | 2 +- index.html | 2 +- overview/index.html | 4 ++-- page-data/app-data.json | 2 +- page-data/complex/disable-delete-btn-error-tx/page-data.json | 2 +- page-data/complex/enable-wo-classification/page-data.json | 2 +- .../restrict-wo-priority-based-on-work-type/page-data.json | 2 +- page-data/complex/set-default-values-new-wo/page-data.json | 2 +- page-data/debug-ui/page-data.json | 2 +- page-data/index/page-data.json | 2 +- page-data/overview/page-data.json | 2 +- page-data/simple/create-wo-priority-lookup/page-data.json | 2 +- page-data/simple/default-record-data-options/page-data.json | 2 +- page-data/simple/extended-lookup-map/page-data.json | 2 +- page-data/simple/replace-date-attribute/page-data.json | 2 +- page-data/simple/update-app-saved-query/page-data.json | 2 +- search_index.json | 2 +- simple/create-wo-priority-lookup/index.html | 2 +- simple/default-record-data-options/index.html | 2 +- simple/extended-lookup-map/index.html | 2 +- simple/modify-default-queries/index.html | 2 +- simple/replace-date-attribute/index.html | 2 +- simple/update-app-saved-query/index.html | 2 +- ...742c401854fd.js => webpack-runtime-1d3512344e5486f7d33b.js | 4 ++-- ...54fd.js.map => webpack-runtime-1d3512344e5486f7d33b.js.map | 2 +- webpack.stats.json | 2 +- 38 files changed, 39 insertions(+), 39 deletions(-) delete mode 100644 component---src-pages-overview-mdx-05b8570fe702505fc3d7.js delete mode 100644 component---src-pages-overview-mdx-05b8570fe702505fc3d7.js.map create mode 100644 component---src-pages-overview-mdx-db57767646ce2878c15d.js create mode 100644 component---src-pages-overview-mdx-db57767646ce2878c15d.js.map rename webpack-runtime-bd278d61742c401854fd.js => webpack-runtime-1d3512344e5486f7d33b.js (97%) rename webpack-runtime-bd278d61742c401854fd.js.map => webpack-runtime-1d3512344e5486f7d33b.js.map (99%) diff --git a/404.html b/404.html index 3b1b2de..058a58c 100644 --- a/404.html +++ b/404.html @@ -12,4 +12,4 @@ } } }) -
\ No newline at end of file +
\ No newline at end of file diff --git a/404/index.html b/404/index.html index aef572d..d884599 100644 --- a/404/index.html +++ b/404/index.html @@ -12,4 +12,4 @@ } } }) -
\ No newline at end of file +
\ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json index 9da352c..16d64f2 100644 --- a/chunk-map.json +++ b/chunk-map.json @@ -1 +1 @@ -{"polyfill":["/polyfill-9a192f2a2d41e90f300c.js"],"app":["/app-c8bbcaf5b033ffcef894.js"],"component---src-pages-404-js":["/component---src-pages-404-js-6f8044898a01bc7ebed0.js"],"component---src-pages-complex-disable-delete-btn-error-tx-mdx":["/component---src-pages-complex-disable-delete-btn-error-tx-mdx-0c1598c89037560950b2.js"],"component---src-pages-complex-enable-wo-classification-mdx":["/component---src-pages-complex-enable-wo-classification-mdx-049699786875d29b2902.js"],"component---src-pages-complex-restrict-complete-status-mdx":["/component---src-pages-complex-restrict-complete-status-mdx-9bc75583cbfd7cc690da.js"],"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx":["/component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx-d4b6f18a6375f5110967.js"],"component---src-pages-complex-set-default-values-new-wo-mdx":["/component---src-pages-complex-set-default-values-new-wo-mdx-7066463c2fe0f05e1018.js"],"component---src-pages-debug-ui-mdx":["/component---src-pages-debug-ui-mdx-f0eb896595561e6a2638.js"],"component---src-pages-index-mdx":["/component---src-pages-index-mdx-efee3e974d631789d067.js"],"component---src-pages-overview-mdx":["/component---src-pages-overview-mdx-05b8570fe702505fc3d7.js"],"component---src-pages-simple-create-wo-priority-lookup-mdx":["/component---src-pages-simple-create-wo-priority-lookup-mdx-bcf0c7f9d0efaff379c0.js"],"component---src-pages-simple-default-record-data-options-mdx":["/component---src-pages-simple-default-record-data-options-mdx-5e37acca4bd01cb7aacc.js"],"component---src-pages-simple-extended-lookup-map-mdx":["/component---src-pages-simple-extended-lookup-map-mdx-38ffad5552e60f7f41c8.js"],"component---src-pages-simple-modify-default-queries-mdx":["/component---src-pages-simple-modify-default-queries-mdx-e262b7eaa22d81dcfd4c.js"],"component---src-pages-simple-replace-date-attribute-mdx":["/component---src-pages-simple-replace-date-attribute-mdx-655340f77fb350a79ee8.js"],"component---src-pages-simple-update-app-saved-query-mdx":["/component---src-pages-simple-update-app-saved-query-mdx-506c6d231ffe8ba4a3fd.js"]} \ No newline at end of file +{"polyfill":["/polyfill-9a192f2a2d41e90f300c.js"],"app":["/app-c8bbcaf5b033ffcef894.js"],"component---src-pages-404-js":["/component---src-pages-404-js-6f8044898a01bc7ebed0.js"],"component---src-pages-complex-disable-delete-btn-error-tx-mdx":["/component---src-pages-complex-disable-delete-btn-error-tx-mdx-0c1598c89037560950b2.js"],"component---src-pages-complex-enable-wo-classification-mdx":["/component---src-pages-complex-enable-wo-classification-mdx-049699786875d29b2902.js"],"component---src-pages-complex-restrict-complete-status-mdx":["/component---src-pages-complex-restrict-complete-status-mdx-9bc75583cbfd7cc690da.js"],"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx":["/component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx-d4b6f18a6375f5110967.js"],"component---src-pages-complex-set-default-values-new-wo-mdx":["/component---src-pages-complex-set-default-values-new-wo-mdx-7066463c2fe0f05e1018.js"],"component---src-pages-debug-ui-mdx":["/component---src-pages-debug-ui-mdx-f0eb896595561e6a2638.js"],"component---src-pages-index-mdx":["/component---src-pages-index-mdx-efee3e974d631789d067.js"],"component---src-pages-overview-mdx":["/component---src-pages-overview-mdx-db57767646ce2878c15d.js"],"component---src-pages-simple-create-wo-priority-lookup-mdx":["/component---src-pages-simple-create-wo-priority-lookup-mdx-bcf0c7f9d0efaff379c0.js"],"component---src-pages-simple-default-record-data-options-mdx":["/component---src-pages-simple-default-record-data-options-mdx-5e37acca4bd01cb7aacc.js"],"component---src-pages-simple-extended-lookup-map-mdx":["/component---src-pages-simple-extended-lookup-map-mdx-38ffad5552e60f7f41c8.js"],"component---src-pages-simple-modify-default-queries-mdx":["/component---src-pages-simple-modify-default-queries-mdx-e262b7eaa22d81dcfd4c.js"],"component---src-pages-simple-replace-date-attribute-mdx":["/component---src-pages-simple-replace-date-attribute-mdx-655340f77fb350a79ee8.js"],"component---src-pages-simple-update-app-saved-query-mdx":["/component---src-pages-simple-update-app-saved-query-mdx-506c6d231ffe8ba4a3fd.js"]} \ No newline at end of file diff --git a/complex/disable-delete-btn-error-tx/index.html b/complex/disable-delete-btn-error-tx/index.html index cfd5308..618ff6b 100644 --- a/complex/disable-delete-btn-error-tx/index.html +++ b/complex/disable-delete-btn-error-tx/index.html @@ -20,4 +20,4 @@ security group sigoption for mxapiwodetail

Step 3: Modify the App.xml File from the Navigator application. Locate the delete button (id=“a38re”) in the App.xml file. Add a disabled attribute to the button, linked to a custom property that will control its state based on the sigoption.

<button id="a38re" disabled="{item.disabled}">Delete</button>

Step 4: Configure the AppCustomizations.js. Use the applicationInitialized(app) event to capture the value of sigoption WO_DELETEERROR_TRX for the current application instance and store it in a class variable for later use. This will determine if the delete option is permitted.

applicationInitialized(app) {
// Store the delete permission for error transactions
this.canDeleteError = this.app.checkSigOption(`${this.app.state.woOSName}.WO_DELETEERROR_TRX`);
}

Step 5: Use the onAfterLoadData event to iterate over each item in the syncTranscationDS datasource. This allows you to set the disabled attribute based on the sigoption value and transaction properties.

onAfterLoadData(datasource, items, query) {
// Check if the data source is 'syncTranscationDS'
if (datasource.name === 'syncTranscationDS') {
items.forEach(item => {
// Disable delete if the transaction is from WORKORDER and deletion is not allowed
item.disabled = item.collectionid === 'WORKORDER' && !this.canDeleteError;
});
}
}

The code above will disable the delete button for errored transactions from the WORKORDER collection if deletion is not allowed based on the sigoption. -The visibility of the delete button can be adjusted at any time by an administrator through the Security Groups application. By changing the WO_DELETEERROR_TRX sigoption setting for the relevant security group, administrators can dynamically control whether users can delete errored transactions.

\ No newline at end of file +The visibility of the delete button can be adjusted at any time by an administrator through the Security Groups application. By changing the WO_DELETEERROR_TRX sigoption setting for the relevant security group, administrators can dynamically control whether users can delete errored transactions.

\ No newline at end of file diff --git a/complex/enable-wo-classification/index.html b/complex/enable-wo-classification/index.html index 8799e77..a534d9d 100644 --- a/complex/enable-wo-classification/index.html +++ b/complex/enable-wo-classification/index.html @@ -18,4 +18,4 @@

Step 8: In the Security application, confirm that your group has read access to the “MXAPICLASSSTRUCTURE” object.

object structure security -
\ No newline at end of file +
\ No newline at end of file diff --git a/complex/restrict-complete-status/index.html b/complex/restrict-complete-status/index.html index 1f54763..c965414 100644 --- a/complex/restrict-complete-status/index.html +++ b/complex/restrict-complete-status/index.html @@ -17,4 +17,4 @@ In this customization, the COMPLETE option is removed from the status change lookups. The Work Order completion must be completed through the report page, if the conditions are met.

Procedure

Step 1: Add a boolean page state to the report_work page

<states id="jy5r4">
[...]
<state name="disableCompleted" value="false" type="boolean" id="trg_g8n3b"/>
</states>

Step 2: In the app.xml file, include the hidecompleted state to the disable condition on the button (p6aav)

<button slot="buttons" label="Complete work" kind="primary" id="p6aav" […]
disabled="{page.state.disableCompleted || woDetailsReportWork.item.flowcontrolled || !app.checkSigOption(`$
{app.state.woOSName}.COMPWOBUTTON`)}"/>

Step 3: In the AppCustomization.js file, declare the dialogOpened method to handle the window opening event. The code inside

the method should contain the verification of the name of the dialog that was opened, the existence of the datasource and the confirmation of the current page before executing the filter, “item.maxvalue !== ‘COMP’”, insert the following logic in the method:

/**
* dialogOpened handler filter out complete status when opened
* @param {Object} obj
* @param {Dialog} obj.dialog
*/
dialogOpened({dialog}) {
-
// page name when dialog is open
this.app.log.d(TAG,`dialog ${dialog?.name} opened at ${this.app.currentPage.name} page`);

Step 4: Create a method to check if a given list contains full failure report (Problem, Cause and Remedy)

/**
* Validates Problem, Cause and Remedy inside failure report list
* @private
* @param {Array} failureReport - failure report list.
* @returns {boolean} Promise of an array of items.
*/
hasPCR(failureReport = []) {
let hasProblem = false;
let hasCause = false;

Step 5: Create the main method responsible to output if the a work order item can be completed based on the criteria discussed.

/**
* Validation to allow completion. Validation is:
* a. should have work Log comments
* b. should have labor actuals
* c. should have Problem Cause and Remedy codes IF Work Type is not in [PM] and there is an Asset on the record
* This should only be called from report_work page
* @param {Application} app
* @returns {boolean}
*/

Step 6: Apply validation using the previous method to update the state created.

/**
* Enables/disables complete button from report work page based on complete validation
* @param {Page} page
* @param {App} app
*/
async addCompleteButtonValidation(page, app) {
// Set disable before starting processing condition
page.state.disableCompleted=true;
// Get validation result

Step 7: Bind buttonValidation method to pageResumed lifecycle hook when it is the correct page.

pageResumed(page, app) {
// Run validation for complete button
if (app.currentPage.name === 'report_work' && page.name==='report_work') {
this.app.log.d(TAG,'entering add completebuttonvalidation logic');
this.addCompleteButtonValidation(page, app);
}
}
\ No newline at end of file +
// page name when dialog is open
this.app.log.d(TAG,`dialog ${dialog?.name} opened at ${this.app.currentPage.name} page`);

Step 4: Create a method to check if a given list contains full failure report (Problem, Cause and Remedy)

/**
* Validates Problem, Cause and Remedy inside failure report list
* @private
* @param {Array} failureReport - failure report list.
* @returns {boolean} Promise of an array of items.
*/
hasPCR(failureReport = []) {
let hasProblem = false;
let hasCause = false;

Step 5: Create the main method responsible to output if the a work order item can be completed based on the criteria discussed.

/**
* Validation to allow completion. Validation is:
* a. should have work Log comments
* b. should have labor actuals
* c. should have Problem Cause and Remedy codes IF Work Type is not in [PM] and there is an Asset on the record
* This should only be called from report_work page
* @param {Application} app
* @returns {boolean}
*/

Step 6: Apply validation using the previous method to update the state created.

/**
* Enables/disables complete button from report work page based on complete validation
* @param {Page} page
* @param {App} app
*/
async addCompleteButtonValidation(page, app) {
// Set disable before starting processing condition
page.state.disableCompleted=true;
// Get validation result

Step 7: Bind buttonValidation method to pageResumed lifecycle hook when it is the correct page.

pageResumed(page, app) {
// Run validation for complete button
if (app.currentPage.name === 'report_work' && page.name==='report_work') {
this.app.log.d(TAG,'entering add completebuttonvalidation logic');
this.addCompleteButtonValidation(page, app);
}
}
\ No newline at end of file diff --git a/complex/restrict-wo-priority-based-on-work-type/index.html b/complex/restrict-wo-priority-based-on-work-type/index.html index cf54a07..081e655 100644 --- a/complex/restrict-wo-priority-based-on-work-type/index.html +++ b/complex/restrict-wo-priority-based-on-work-type/index.html @@ -16,4 +16,4 @@ implement a condition to remove the Priority 5 option from the lookup when creating and editing work orders if their work types are other than preventive maintenance (PM)

Procedure

Step 1: Follow the practice below to create a query, create a datasource to load the data and declare a new lookup.

Create Priority Lookup in Techmobile

Step 2: Declare the dialogOpened method to handle the window opening event. The code inside the method should contain the verification of the name of the dialog that was opened, the existence of the datasource and the confirmation of the current page before executing the filter. Insert the following logic in the method:

dialogOpened({dialog}) {
// page name when dialog is open
this.app.log.d(TAG,`dialog ${dialog?.name} opened at ${this.app.currentPage.name} page`);
if (dialog?.name === 'trg_woPriorityLookup' && ['woedit'].some(page => page === this.app.currentPage.name)) {
-
// Check status domain datasource existence
const priorityLookupDS = this.app.findDatasource('trg_WoPrioritylookupDS');
if (!priorityLookupDS) {
\ No newline at end of file +
// Check status domain datasource existence
const priorityLookupDS = this.app.findDatasource('trg_WoPrioritylookupDS');
if (!priorityLookupDS) {
\ No newline at end of file diff --git a/complex/set-default-values-new-wo/index.html b/complex/set-default-values-new-wo/index.html index 8fb1263..82d47e7 100644 --- a/complex/set-default-values-new-wo/index.html +++ b/complex/set-default-values-new-wo/index.html @@ -14,4 +14,4 @@ })
Skip to main contentMAF Configuration Practices

Set default values to fields when creating new and follow-up work orders

About this task

Set default values for fields on new work orders and follow-up work orders. This exercise guides you through defining priority = 1 and work type = CM (Correction Maintenance) when creating new and follow-up work orders. -All steps are done within the AppCustomizations.js file.

Procedure

Step 1: Create constants that indicate the default values for priority and work type. Avoid inserting static values directly into the code to facilitate changes, readability, and tracking.

const DEFAULT_WORKTYPE = 'CM';
const DEFAULT_WORKPRIORITY = 1;

Step 2: Create conditions inside the page summary handler method (pageResumed) to set the default values.

pageResumed(page, app) {
// Check creation of Follow-up Work
if (app.currentPage.name === 'woedit' && page.name=== 'woedit' && page?.params?.followup) {
if (page?.params?.workorder) {
// Replace workorder attribute from URL params
page.params.workorder.worktype = DEFAULT_WORKTYPE;
page.params.workorder.wopriority = DEFAULT_WORKPRIORITY;
}
}

Step 3: nclude the new record creation event handler to datasource. Include conditions to identify the correct datasource - in this case “dsCreateWo”. To create new records, use properties from the DS schema, this avoids conflicts with other code that is

defining the same property.

/**
* Add new record handler
* @param {Object} object
* @param {Datasource} obj.datasource
*/
onAddNewRecord({datasource, item}) {
// Set default values for schema dsCreateWo when creating Work Order
if (datasource?.name === 'dsCreateWo' && datasource?.schema) {
datasource.schema.properties.worktype.defaultValue = DEFAULT_WORKTYPE;
\ No newline at end of file +All steps are done within the AppCustomizations.js file.

Procedure

Step 1: Create constants that indicate the default values for priority and work type. Avoid inserting static values directly into the code to facilitate changes, readability, and tracking.

const DEFAULT_WORKTYPE = 'CM';
const DEFAULT_WORKPRIORITY = 1;

Step 2: Create conditions inside the page summary handler method (pageResumed) to set the default values.

pageResumed(page, app) {
// Check creation of Follow-up Work
if (app.currentPage.name === 'woedit' && page.name=== 'woedit' && page?.params?.followup) {
if (page?.params?.workorder) {
// Replace workorder attribute from URL params
page.params.workorder.worktype = DEFAULT_WORKTYPE;
page.params.workorder.wopriority = DEFAULT_WORKPRIORITY;
}
}

Step 3: nclude the new record creation event handler to datasource. Include conditions to identify the correct datasource - in this case “dsCreateWo”. To create new records, use properties from the DS schema, this avoids conflicts with other code that is

defining the same property.

/**
* Add new record handler
* @param {Object} object
* @param {Datasource} obj.datasource
*/
onAddNewRecord({datasource, item}) {
// Set default values for schema dsCreateWo when creating Work Order
if (datasource?.name === 'dsCreateWo' && datasource?.schema) {
datasource.schema.properties.worktype.defaultValue = DEFAULT_WORKTYPE;
\ No newline at end of file diff --git a/component---src-pages-overview-mdx-05b8570fe702505fc3d7.js b/component---src-pages-overview-mdx-05b8570fe702505fc3d7.js deleted file mode 100644 index b6b3a33..0000000 --- a/component---src-pages-overview-mdx-05b8570fe702505fc3d7.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkmas_playbook=self.webpackChunkmas_playbook||[]).push([[749],{3624:function(e,t,a){a.d(t,{Z:function(){return E}});var i=a(7294),n=a(8650),o=a.n(n),l=a(1597),r=a(811),s=a(87),u=a(5900),c=a.n(u),d=function(e){var t,a=e.title,n=e.theme,o=e.tabs,l=void 0===o?[]:o;return i.createElement("div",{className:c()("PageHeader-module--page-header--NqfPe",(t={},t["PageHeader-module--with-tabs--vbQ-W"]=l.length,t["PageHeader-module--dark-mode--WCeH8"]="dark"===n,t))},i.createElement("div",{className:"bx--grid"},i.createElement("div",{className:"bx--row"},i.createElement("div",{className:"bx--col-lg-12"},i.createElement("h1",{id:"page-title",className:"PageHeader-module--text--Er2EO"},a)))))},p=function(e){var t=e.relativePagePath,a=e.repository,n=(0,l.useStaticQuery)("1364590287").site.siteMetadata.repository,o=a||n,r=o.baseUrl,s=o.subDirectory,u=r+"/edit/"+o.branch+s+"/src/pages"+t;return r?i.createElement("div",{className:"bx--row EditLink-module--row--BEmSX"},i.createElement("div",{className:"bx--col"},i.createElement("a",{className:"EditLink-module--link--IDrl1",href:u},"Edit this page on GitHub"))):null},m=a(4703),h=a(1721),g=function(e){function t(){return e.apply(this,arguments)||this}return(0,h.Z)(t,e),t.prototype.render=function(){var e=this.props,t=e.title,a=e.tabs,n=e.slug,r=n.split("/").filter(Boolean).slice(-1)[0],s=a.map((function(e){var t,a=o()(e,{lower:!0,strict:!0}),s=a===r,u=new RegExp(r+"/?(#.*)?$"),d=n.replace(u,a);return i.createElement("li",{key:e,className:c()((t={},t["PageTabs-module--selected-item--aBB0K"]=s,t),"PageTabs-module--list-item--024o6")},i.createElement(l.Link,{className:"PageTabs-module--link--Kz-7R",to:""+d},e))}));return i.createElement("div",{className:"PageTabs-module--tabs-container--Cdfzw"},i.createElement("div",{className:"bx--grid"},i.createElement("div",{className:"bx--row"},i.createElement("div",{className:"bx--col-lg-12 bx--col-no-gutter"},i.createElement("nav",{"aria-label":t},i.createElement("ul",{className:"PageTabs-module--list--xLqxG"},s))))))},t}(i.Component),b=g,f=a(7296),k=a(5387),w=a(3732),v=function(e){var t=e.date,a=new Date(t);return t?i.createElement(w.X2,{className:"last-modified-date-module--row--XJoYQ"},i.createElement(w.sg,null,i.createElement("div",{className:"last-modified-date-module--text--ogPQF"},"Page last updated: ",a.toLocaleDateString("en-GB",{day:"2-digit",year:"numeric",month:"long"})))):null},E=function(e){var t=e.pageContext,a=e.children,n=e.location,u=e.Title,c=t.frontmatter,h=void 0===c?{}:c,g=t.relativePagePath,w=t.titleType,E=h.tabs,y=h.title,x=h.theme,N=h.description,M=h.keywords,P=h.date,T=(0,k.Z)().interiorTheme,C=(0,l.useStaticQuery)("2456312558").site.pathPrefix,A=C?n.pathname.replace(C,""):n.pathname,B=E?A.split("/").filter(Boolean).slice(-1)[0]||o()(E[0],{lower:!0}):"",q=x||T;return i.createElement(s.Z,{tabs:E,homepage:!1,theme:q,pageTitle:y,pageDescription:N,pageKeywords:M,titleType:w},i.createElement(d,{title:u?i.createElement(u,null):y,label:"label",tabs:E,theme:q}),E&&i.createElement(b,{title:y,slug:A,tabs:E,currentTab:B}),i.createElement(f.Z,{padded:!0},a,i.createElement(p,{relativePagePath:g}),i.createElement(v,{date:P})),i.createElement(m.Z,{pageContext:t,location:n,slug:A,tabs:E,currentTab:B}),i.createElement(r.Z,null))}},830:function(e,t,a){a.r(t),a.d(t,{_frontmatter:function(){return r},default:function(){return c}});var i=a(3366),n=(a(7294),a(4983)),o=a(3624),l=["components"],r={},s={_frontmatter:r},u=o.Z;function c(e){var t=e.components,a=(0,i.Z)(e,l);return(0,n.kt)(u,Object.assign({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"IBM’s Maximo Application Framework (MAF) supports the creation of Maximo Mobile and Role-based application within Manage."),(0,n.kt)("p",null,"The MAF Configuration application can be used by implementers to configure IBM-provided applications (or duplicates of those applications) that are built with the MAF. Other MAS applications, such as Health and Monitor, will provide MAF applications (now or in the future) that can also be configured using the MAF Configuration application."),(0,n.kt)("p",null,"In this document we provide a few examples of configuration that can be used, extended, adapted and combined to achieve the desired customization."),(0,n.kt)("p",null,"The guide is separeted in two sections: ",(0,n.kt)("strong",{parentName:"p"},"Simple")," and ",(0,n.kt)("strong",{parentName:"p"},"Complex")," practices. For simple ones it is expected to get references about adding attributes in a card, updating saved queries used in a lookup. For complex section, we dissect customizations combining different lifecycle events with new methods to meet the conditions proposed in the configuration criteria."),(0,n.kt)("h1",null,"General tips"),(0,n.kt)("h2",null,"Ideas"),(0,n.kt)("p",null,"Often times a customization won’t be possible due to limitations of the framework or maybe processes not exposed. Instead of a bug an idea should be issued through ",(0,n.kt)("a",{href:"https://ibm-ai-apps.ideas.ibm.com/",target:"_blank"},"Ideas Portal"),"."),(0,n.kt)("h2",null,"Order"),(0,n.kt)("p",null,"The order to place the XML tags is important. Although it is a markup language the build process take into consideration the order it is declared along the file."),(0,n.kt)("h2",null,"Logs"),(0,n.kt)("p",null,"One way to track progress during customization is using logs. Creating a tag prefix to use building the configurations associated with log API available in Graphite helps identify all paths the code can take."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-js"},"// Tag for log (to be add at the first line of the file)\nconst TAG = '***Custom***';\n")),(0,n.kt)("h2",null,"Filter datasource"),(0,n.kt)("p",null,"There are a few ways to fetch the right amount of data to the appropriate context."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"QBE filter (declaration or API)"),(0,n.kt)("li",{parentName:"ul"},"Where clause"),(0,n.kt)("li",{parentName:"ul"},"Saved Query"),(0,n.kt)("li",{parentName:"ul"},"Mobile QBE Filter")),(0,n.kt)("p",null,"The last one is exclusive for mobile apps searching against data previously loaded.\nBasically mobile-qbe-filter is a qbe filter used by the apps when running in the mobile container. It’s only used when fetching data from the local db (on the device) and not used when fetching data from maximo/server.\nMobile only supports mobile-qbe-filter on the “top most” object."),(0,n.kt)("p",null,"Considerations about translating all characteristics of a where clause into Mobile-QBE-Filter:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Nested properties does not work in mobile, instead an alias should be used and referenced in the QBE filter."),(0,n.kt)("li",{parentName:"ul"},"Variables like SYSDAY are interpreted only in server, so avoid using it.")),(0,n.kt)("p",null,"Saved query should be used to be the less restrictive filter. If there is additional filter criteria, then you would add to the maximo-datasource a where (for web) and mobile-qbe-filter (for mobile) to reduce the dataset.\nLookup datasources for Maximo Mobile need to use the same saved query so it’s important that you implement the filter with where & mobile-qbe-filter."),(0,n.kt)("h2",null,"Support"),(0,n.kt)("p",null,"Although it not a regular but we also offer support through ",(0,n.kt)("strong",{parentName:"p"},"L3 RBA Configuration")," queue.​"),(0,n.kt)("p",null,"This queue is intended for issues with a specific application’s behavior when performing configuration. This would include connecting to data sources, altering or creating new functions within an application, altering UI layout, page routing, adhering to maximo business rules, etc.​"),(0,n.kt)("p",null,"Reminder that the same support policies apply to configuration. Customers running older/non supported versions of RBA and Mobile (<8.10) will not have access to configuration support.​"),(0,n.kt)("p",null,"In addition, the ",(0,n.kt)("strong",{parentName:"p"},"L3 RBA Configuration")," queue is going to get a lot of bugs or questions reported that are eventually traced back to code customizations, which are not supported, although we will do our best to point them in the correct direction.​"))}c.isMDXComponent=!0}}]); -//# sourceMappingURL=component---src-pages-overview-mdx-05b8570fe702505fc3d7.js.map \ No newline at end of file diff --git a/component---src-pages-overview-mdx-05b8570fe702505fc3d7.js.map b/component---src-pages-overview-mdx-05b8570fe702505fc3d7.js.map deleted file mode 100644 index 5c3fc5c..0000000 --- a/component---src-pages-overview-mdx-05b8570fe702505fc3d7.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-overview-mdx-05b8570fe702505fc3d7.js","mappings":"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","sources":["webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageHeader/index.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageHeader/PageHeader.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageHeader/PageHeader.module.scss","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/EditLink/index.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/EditLink/EditLink.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/EditLink/EditLink.module.scss","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageTabs/PageTabs.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageTabs/PageTabs.module.scss","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageTabs/index.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/LastModifiedDate/index.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/LastModifiedDate/LastModifiedDate.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/LastModifiedDate/last-modified-date.module.scss","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/templates/Default.js","webpack://mas-playbook/./src/pages/overview.mdx"],"sourcesContent":["import PageHeader from './PageHeader';\n\nexport default PageHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport * as styles from './PageHeader.module.scss';\n\nconst PageHeader = ({ title, theme, tabs = [] }) => (\n \n
\n
\n
\n

\n {title}\n

\n
\n
\n
\n \n);\n\nPageHeader.propTypes = {\n /**\n * Specify the title for the page\n */\n title: PropTypes.node,\n};\n\nexport default PageHeader;\n","// extracted by mini-css-extract-plugin\nexport var bxTextTruncateEnd = \"PageHeader-module--bx--text-truncate--end--b8JtW\";\nexport var bxTextTruncateFront = \"PageHeader-module--bx--text-truncate--front--WwZFh\";\nexport var darkMode = \"PageHeader-module--dark-mode--WCeH8\";\nexport var pageHeader = \"PageHeader-module--page-header--NqfPe\";\nexport var text = \"PageHeader-module--text--Er2EO\";\nexport var withTabs = \"PageHeader-module--with-tabs--vbQ-W\";","import EditLink from './EditLink';\n\nexport default EditLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { graphql, useStaticQuery } from 'gatsby';\n\nimport { link, row } from './EditLink.module.scss';\n\nconst EditLink = ({ relativePagePath, repository: repositoryProp }) => {\n const {\n site: {\n siteMetadata: { repository },\n },\n } = useStaticQuery(graphql`\n query REPOSITORY_QUERY {\n site {\n siteMetadata {\n repository {\n baseUrl\n subDirectory\n branch\n }\n }\n }\n }\n `);\n\n const { baseUrl, subDirectory, branch } = repositoryProp || repository;\n\n const href = `${baseUrl}/edit/${branch}${subDirectory}/src/pages${relativePagePath}`;\n\n return baseUrl ? (\n
\n
\n \n Edit this page on GitHub\n \n
\n
\n ) : null;\n};\n\nEditLink.propTypes = {\n repository: PropTypes.shape({\n baseUrl: PropTypes.string,\n subDirectory: PropTypes.string,\n branch: PropTypes.string,\n }),\n relativePagePath: PropTypes.string,\n};\n\nexport default EditLink;\n","// extracted by mini-css-extract-plugin\nexport var bxTextTruncateEnd = \"EditLink-module--bx--text-truncate--end--uI0cF\";\nexport var bxTextTruncateFront = \"EditLink-module--bx--text-truncate--front--HxjcS\";\nexport var link = \"EditLink-module--link--IDrl1\";\nexport var row = \"EditLink-module--row--BEmSX\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'gatsby';\nimport slugify from 'slugify';\nimport cx from 'classnames';\n\nimport {\n tabsContainer,\n list,\n selectedItem,\n listItem,\n link,\n} from './PageTabs.module.scss';\n\nexport default class PageTabs extends React.Component {\n render() {\n const { title, tabs, slug } = this.props;\n const currentTab = slug.split('/').filter(Boolean).slice(-1)[0];\n\n const pageTabs = tabs.map((tab) => {\n const slugifiedTab = slugify(tab, { lower: true, strict: true });\n const selected = slugifiedTab === currentTab;\n // matches with or without trailing slash: /?\n // matches with or without hash link: (#.*)?\n const currentTabRegex = new RegExp(`${currentTab}/?(#.*)?$`);\n const href = slug.replace(currentTabRegex, slugifiedTab);\n return (\n
  • \n \n {tab}\n \n
  • \n );\n });\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nPageTabs.propTypes = {\n tabs: PropTypes.array,\n slug: PropTypes.string,\n};\n","// extracted by mini-css-extract-plugin\nexport var bxTextTruncateEnd = \"PageTabs-module--bx--text-truncate--end--OC59x\";\nexport var bxTextTruncateFront = \"PageTabs-module--bx--text-truncate--front--5I6-L\";\nexport var link = \"PageTabs-module--link--Kz-7R\";\nexport var list = \"PageTabs-module--list--xLqxG\";\nexport var listItem = \"PageTabs-module--list-item--024o6\";\nexport var selectedItem = \"PageTabs-module--selected-item--aBB0K\";\nexport var tabsContainer = \"PageTabs-module--tabs-container--Cdfzw\";","import PageTabs from './PageTabs';\n\nexport default PageTabs;\n","import LastModifiedDate from './LastModifiedDate';\n\nexport default LastModifiedDate;\n","import React from 'react';\nimport { Row, Column } from '../Grid';\nimport * as styles from './last-modified-date.module.scss';\n\nconst LastModifiedDate = ({ date }) => {\n const options = {\n day: '2-digit',\n year: 'numeric',\n month: 'long',\n };\n\n const lastModified = new Date(date);\n\n return date ? (\n \n \n
    \n Page last updated: {lastModified.toLocaleDateString('en-GB', options)}\n {/* // https://www-03preprod.ibm.com/support/knowledgecenter/ibm_style/dates-and-times.html */}\n
    \n
    \n
    \n ) : null;\n};\nexport default LastModifiedDate;\n","// extracted by mini-css-extract-plugin\nexport var bxTextTruncateEnd = \"last-modified-date-module--bx--text-truncate--end--QgCc7\";\nexport var bxTextTruncateFront = \"last-modified-date-module--bx--text-truncate--front--kel8a\";\nexport var row = \"last-modified-date-module--row--XJoYQ\";\nexport var text = \"last-modified-date-module--text--ogPQF\";","import React from 'react';\nimport slugify from 'slugify';\nimport { useStaticQuery, graphql } from 'gatsby';\n\nimport Utils from '../components/Utils';\nimport Layout from '../components/Layout';\nimport PageHeader from '../components/PageHeader';\nimport EditLink from '../components/EditLink';\nimport NextPrevious from '../components/NextPrevious';\nimport PageTabs from '../components/PageTabs';\nimport Main from '../components/Main';\nimport useMetadata from '../util/hooks/useMetadata';\nimport LastModifiedDate from '../components/LastModifiedDate';\n\nconst Default = ({ pageContext, children, location, Title }) => {\n const { frontmatter = {}, relativePagePath, titleType } = pageContext;\n const {\n tabs,\n title,\n theme: frontmatterTheme,\n description,\n keywords,\n date,\n } = frontmatter;\n\n const { interiorTheme } = useMetadata();\n\n // get the path prefix if it exists\n const {\n site: { pathPrefix },\n } = useStaticQuery(graphql`\n query PATH_PREFIX_QUERY {\n site {\n pathPrefix\n }\n }\n `);\n\n // let gatsby handle prefixing\n const slug = pathPrefix\n ? location.pathname.replace(pathPrefix, '')\n : location.pathname;\n\n const getCurrentTab = () => {\n if (!tabs) return '';\n return (\n slug.split('/').filter(Boolean).slice(-1)[0] ||\n slugify(tabs[0], { lower: true })\n );\n };\n\n const currentTab = getCurrentTab();\n\n const theme = frontmatterTheme || interiorTheme;\n\n return (\n \n : title}\n label=\"label\"\n tabs={tabs}\n theme={theme}\n />\n {tabs && (\n \n )}\n
    \n {children}\n \n \n
    \n \n \n \n );\n};\n\nexport default Default;\n","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nimport DefaultLayout from \"/home/travis/build/maximo-app-framework/configuration-practices-documentation/node_modules/gatsby-theme-carbon/src/templates/Default.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

    {`IBM’s Maximo Application Framework (MAF) supports the creation of Maximo Mobile and Role-based application within Manage.`}

    \n

    {`The MAF Configuration application can be used by implementers to configure IBM-provided applications (or duplicates of those applications) that are built with the MAF. Other MAS applications, such as Health and Monitor, will provide MAF applications (now or in the future) that can also be configured using the MAF Configuration application.`}

    \n

    {`In this document we provide a few examples of configuration that can be used, extended, adapted and combined to achieve the desired customization.`}

    \n

    {`The guide is separeted in two sections: `}{`Simple`}{` and `}{`Complex`}{` practices. For simple ones it is expected to get references about adding attributes in a card, updating saved queries used in a lookup. For complex section, we dissect customizations combining different lifecycle events with new methods to meet the conditions proposed in the configuration criteria.`}

    \n

    {`General tips`}

    \n

    {`Ideas`}

    \n

    {`Often times a customization won’t be possible due to limitations of the framework or maybe processes not exposed. Instead of a bug an idea should be issued through `}{`Ideas Portal`}{`.`}

    \n

    {`Order`}

    \n

    {`The order to place the XML tags is important. Although it is a markup language the build process take into consideration the order it is declared along the file.`}

    \n

    {`Logs`}

    \n

    {`One way to track progress during customization is using logs. Creating a tag prefix to use building the configurations associated with log API available in Graphite helps identify all paths the code can take.`}

    \n
    {`// Tag for log (to be add at the first line of the file)\nconst TAG = '***Custom***';\n`}
    \n

    {`Filter datasource`}

    \n

    {`There are a few ways to fetch the right amount of data to the appropriate context.`}

    \n
      \n
    • {`QBE filter (declaration or API)`}
    • \n
    • {`Where clause`}
    • \n
    • {`Saved Query`}
    • \n
    • {`Mobile QBE Filter`}
    • \n
    \n

    {`The last one is exclusive for mobile apps searching against data previously loaded.\nBasically mobile-qbe-filter is a qbe filter used by the apps when running in the mobile container. It’s only used when fetching data from the local db (on the device) and not used when fetching data from maximo/server.\nMobile only supports mobile-qbe-filter on the “top most” object.`}

    \n

    {`Considerations about translating all characteristics of a where clause into Mobile-QBE-Filter:`}

    \n
      \n
    • {`Nested properties does not work in mobile, instead an alias should be used and referenced in the QBE filter.`}
    • \n
    • {`Variables like SYSDAY are interpreted only in server, so avoid using it.`}
    • \n
    \n

    {`Saved query should be used to be the less restrictive filter. If there is additional filter criteria, then you would add to the maximo-datasource a where (for web) and mobile-qbe-filter (for mobile) to reduce the dataset.\nLookup datasources for Maximo Mobile need to use the same saved query so it’s important that you implement the filter with where & mobile-qbe-filter.`}

    \n

    {`Support`}

    \n

    {`Although it not a regular but we also offer support through `}{`L3 RBA Configuration`}{` queue.​`}

    \n

    {`This queue is intended for issues with a specific application’s behavior when performing configuration. This would include connecting to data sources, altering or creating new functions within an application, altering UI layout, page routing, adhering to maximo business rules, etc.​`}

    \n

    {`Reminder that the same support policies apply to configuration. Customers running older/non supported versions of RBA and Mobile (<8.10) will not have access to configuration support.​`}

    \n

    {`In addition, the `}{`L3 RBA Configuration`}{` queue is going to get a lot of bugs or questions reported that are eventually traced back to code customizations, which are not supported, although we will do our best to point them in the correct direction.​`}

    \n\n
    ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"names":["title","theme","tabs","className","cx","length","id","relativePagePath","repositoryProp","repository","useStaticQuery","site","siteMetadata","baseUrl","subDirectory","href","branch","PageTabs","render","this","props","slug","currentTab","split","filter","Boolean","slice","pageTabs","map","tab","slugifiedTab","slugify","lower","strict","selected","currentTabRegex","RegExp","replace","key","Link","to","React","date","lastModified","Date","toLocaleDateString","day","year","month","pageContext","children","location","Title","frontmatter","titleType","frontmatterTheme","description","keywords","interiorTheme","useMetadata","pathPrefix","pathname","Layout","homepage","pageTitle","pageDescription","pageKeywords","label","Main","padded","NextPrevious","Utils","_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","mdxType","parentName","target","isMDXComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-overview-mdx-db57767646ce2878c15d.js b/component---src-pages-overview-mdx-db57767646ce2878c15d.js new file mode 100644 index 0000000..eb22950 --- /dev/null +++ b/component---src-pages-overview-mdx-db57767646ce2878c15d.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkmas_playbook=self.webpackChunkmas_playbook||[]).push([[749],{3624:function(e,t,a){a.d(t,{Z:function(){return y}});var i=a(7294),n=a(8650),o=a.n(n),l=a(1597),r=a(811),s=a(87),u=a(5900),c=a.n(u),d=function(e){var t,a=e.title,n=e.theme,o=e.tabs,l=void 0===o?[]:o;return i.createElement("div",{className:c()("PageHeader-module--page-header--NqfPe",(t={},t["PageHeader-module--with-tabs--vbQ-W"]=l.length,t["PageHeader-module--dark-mode--WCeH8"]="dark"===n,t))},i.createElement("div",{className:"bx--grid"},i.createElement("div",{className:"bx--row"},i.createElement("div",{className:"bx--col-lg-12"},i.createElement("h1",{id:"page-title",className:"PageHeader-module--text--Er2EO"},a)))))},p=function(e){var t=e.relativePagePath,a=e.repository,n=(0,l.useStaticQuery)("1364590287").site.siteMetadata.repository,o=a||n,r=o.baseUrl,s=o.subDirectory,u=r+"/edit/"+o.branch+s+"/src/pages"+t;return r?i.createElement("div",{className:"bx--row EditLink-module--row--BEmSX"},i.createElement("div",{className:"bx--col"},i.createElement("a",{className:"EditLink-module--link--IDrl1",href:u},"Edit this page on GitHub"))):null},m=a(4703),h=a(1721),g=function(e){function t(){return e.apply(this,arguments)||this}return(0,h.Z)(t,e),t.prototype.render=function(){var e=this.props,t=e.title,a=e.tabs,n=e.slug,r=n.split("/").filter(Boolean).slice(-1)[0],s=a.map((function(e){var t,a=o()(e,{lower:!0,strict:!0}),s=a===r,u=new RegExp(r+"/?(#.*)?$"),d=n.replace(u,a);return i.createElement("li",{key:e,className:c()((t={},t["PageTabs-module--selected-item--aBB0K"]=s,t),"PageTabs-module--list-item--024o6")},i.createElement(l.Link,{className:"PageTabs-module--link--Kz-7R",to:""+d},e))}));return i.createElement("div",{className:"PageTabs-module--tabs-container--Cdfzw"},i.createElement("div",{className:"bx--grid"},i.createElement("div",{className:"bx--row"},i.createElement("div",{className:"bx--col-lg-12 bx--col-no-gutter"},i.createElement("nav",{"aria-label":t},i.createElement("ul",{className:"PageTabs-module--list--xLqxG"},s))))))},t}(i.Component),f=g,b=a(7296),k=a(5387),w=a(3732),v=function(e){var t=e.date,a=new Date(t);return t?i.createElement(w.X2,{className:"last-modified-date-module--row--XJoYQ"},i.createElement(w.sg,null,i.createElement("div",{className:"last-modified-date-module--text--ogPQF"},"Page last updated: ",a.toLocaleDateString("en-GB",{day:"2-digit",year:"numeric",month:"long"})))):null},y=function(e){var t=e.pageContext,a=e.children,n=e.location,u=e.Title,c=t.frontmatter,h=void 0===c?{}:c,g=t.relativePagePath,w=t.titleType,y=h.tabs,E=h.title,x=h.theme,N=h.description,M=h.keywords,P=h.date,T=(0,k.Z)().interiorTheme,C=(0,l.useStaticQuery)("2456312558").site.pathPrefix,A=C?n.pathname.replace(C,""):n.pathname,B=y?A.split("/").filter(Boolean).slice(-1)[0]||o()(y[0],{lower:!0}):"",q=x||T;return i.createElement(s.Z,{tabs:y,homepage:!1,theme:q,pageTitle:E,pageDescription:N,pageKeywords:M,titleType:w},i.createElement(d,{title:u?i.createElement(u,null):E,label:"label",tabs:y,theme:q}),y&&i.createElement(f,{title:E,slug:A,tabs:y,currentTab:B}),i.createElement(b.Z,{padded:!0},a,i.createElement(p,{relativePagePath:g}),i.createElement(v,{date:P})),i.createElement(m.Z,{pageContext:t,location:n,slug:A,tabs:y,currentTab:B}),i.createElement(r.Z,null))}},830:function(e,t,a){a.r(t),a.d(t,{_frontmatter:function(){return r},default:function(){return c}});var i=a(3366),n=(a(7294),a(4983)),o=a(3624),l=["components"],r={},s={_frontmatter:r},u=o.Z;function c(e){var t=e.components,a=(0,i.Z)(e,l);return(0,n.kt)(u,Object.assign({},s,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"IBM’s Maximo Application Framework (MAF) supports the creation of Maximo Mobile and Role-based application within Manage."),(0,n.kt)("p",null,"The MAF Configuration application can be used by implementers to configure IBM-provided applications (or duplicates of those applications) that are built with the MAF. Other MAS applications, such as Health and Monitor, will provide MAF applications (now or in the future) that can also be configured using the MAF Configuration application."),(0,n.kt)("p",null,"In this document we provide a few examples of configuration that can be used, extended, adapted and combined to achieve the desired customization."),(0,n.kt)("p",null,"The guide is separeted in two sections: ",(0,n.kt)("strong",{parentName:"p"},"Simple")," and ",(0,n.kt)("strong",{parentName:"p"},"Complex")," practices. For simple ones it is expected to get references about adding attributes in a card, updating saved queries used in a lookup. For complex section, we dissect customizations combining different lifecycle events with new methods to meet the conditions proposed in the configuration criteria."),(0,n.kt)("p",null,"Simple section addresses mostly configuration, which declare new elements, add properties and modify parameters within the tags. In Complex section, we focus in practices mostly using AppCustomizations.js file and some techniques to achieve the customization."),(0,n.kt)("h1",null,"General tips"),(0,n.kt)("h2",null,"Ideas"),(0,n.kt)("p",null,"Often times a customization won’t be possible due to limitations of the framework or maybe processes not exposed. Instead of a bug an idea should be issued through ",(0,n.kt)("a",{href:"https://ibm-ai-apps.ideas.ibm.com/",target:"_blank"},"Ideas Portal"),"."),(0,n.kt)("h2",null,"Order"),(0,n.kt)("p",null,"The order to place the XML tags is important. Although it is a markup language the build process take into consideration the order it is declared along the file."),(0,n.kt)("h2",null,"Logs"),(0,n.kt)("p",null,"One way to track progress during customization is using logs. Creating a tag prefix to use building the configurations associated with log API available in Graphite helps identify all paths the code can take."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-js"},"// Tag for log (to be add at the first line of the file)\nconst TAG = '***Custom***';\n")),(0,n.kt)("h2",null,"Filter datasource"),(0,n.kt)("p",null,"There are a few ways to fetch the right amount of data to the appropriate context."),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"QBE filter (declaration or API)"),(0,n.kt)("li",{parentName:"ul"},"Where clause"),(0,n.kt)("li",{parentName:"ul"},"Saved Query"),(0,n.kt)("li",{parentName:"ul"},"Mobile QBE Filter")),(0,n.kt)("p",null,"The last one is exclusive for mobile apps searching against data previously loaded.\nBasically mobile-qbe-filter is a qbe filter used by the apps when running in the mobile container. It’s only used when fetching data from the local db (on the device) and not used when fetching data from maximo/server.\nMobile only supports mobile-qbe-filter on the “top most” object."),(0,n.kt)("p",null,"Considerations about translating all characteristics of a where clause into Mobile-QBE-Filter:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"Nested properties does not work in mobile, instead an alias should be used and referenced in the QBE filter."),(0,n.kt)("li",{parentName:"ul"},"Variables like SYSDAY are interpreted only in server, so avoid using it.")),(0,n.kt)("p",null,"Saved query should be used to be the less restrictive filter. If there is additional filter criteria, then you would add to the maximo-datasource a where (for web) and mobile-qbe-filter (for mobile) to reduce the dataset.\nLookup datasources for Maximo Mobile need to use the same saved query so it’s important that you implement the filter with where & mobile-qbe-filter."),(0,n.kt)("h2",null,"Support"),(0,n.kt)("p",null,"Although it not a regular but we also offer support through ",(0,n.kt)("strong",{parentName:"p"},"L3 RBA Configuration")," queue.​"),(0,n.kt)("p",null,"This queue is intended for issues with a specific application’s behavior when performing configuration. This would include connecting to data sources, altering or creating new functions within an application, altering UI layout, page routing, adhering to maximo business rules, etc.​"),(0,n.kt)("p",null,"Reminder that the same support policies apply to configuration. Customers running older/non supported versions of RBA and Mobile (<8.10) will not have access to configuration support.​"),(0,n.kt)("p",null,"In addition, the ",(0,n.kt)("strong",{parentName:"p"},"L3 RBA Configuration")," queue is going to get a lot of bugs or questions reported that are eventually traced back to code customizations, which are not supported, although we will do our best to point them in the correct direction.​"))}c.isMDXComponent=!0}}]); +//# sourceMappingURL=component---src-pages-overview-mdx-db57767646ce2878c15d.js.map \ No newline at end of file diff --git a/component---src-pages-overview-mdx-db57767646ce2878c15d.js.map b/component---src-pages-overview-mdx-db57767646ce2878c15d.js.map new file mode 100644 index 0000000..9d010c5 --- /dev/null +++ b/component---src-pages-overview-mdx-db57767646ce2878c15d.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-overview-mdx-db57767646ce2878c15d.js","mappings":"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","sources":["webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageHeader/index.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageHeader/PageHeader.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageHeader/PageHeader.module.scss","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/EditLink/index.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/EditLink/EditLink.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/EditLink/EditLink.module.scss","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageTabs/PageTabs.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageTabs/PageTabs.module.scss","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/PageTabs/index.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/LastModifiedDate/index.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/LastModifiedDate/LastModifiedDate.js","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/components/LastModifiedDate/last-modified-date.module.scss","webpack://mas-playbook/./node_modules/gatsby-theme-carbon/src/templates/Default.js","webpack://mas-playbook/./src/pages/overview.mdx"],"sourcesContent":["import PageHeader from './PageHeader';\n\nexport default PageHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport * as styles from './PageHeader.module.scss';\n\nconst PageHeader = ({ title, theme, tabs = [] }) => (\n \n
    \n
    \n
    \n

    \n {title}\n

    \n
    \n
    \n
    \n \n);\n\nPageHeader.propTypes = {\n /**\n * Specify the title for the page\n */\n title: PropTypes.node,\n};\n\nexport default PageHeader;\n","// extracted by mini-css-extract-plugin\nexport var bxTextTruncateEnd = \"PageHeader-module--bx--text-truncate--end--b8JtW\";\nexport var bxTextTruncateFront = \"PageHeader-module--bx--text-truncate--front--WwZFh\";\nexport var darkMode = \"PageHeader-module--dark-mode--WCeH8\";\nexport var pageHeader = \"PageHeader-module--page-header--NqfPe\";\nexport var text = \"PageHeader-module--text--Er2EO\";\nexport var withTabs = \"PageHeader-module--with-tabs--vbQ-W\";","import EditLink from './EditLink';\n\nexport default EditLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { graphql, useStaticQuery } from 'gatsby';\n\nimport { link, row } from './EditLink.module.scss';\n\nconst EditLink = ({ relativePagePath, repository: repositoryProp }) => {\n const {\n site: {\n siteMetadata: { repository },\n },\n } = useStaticQuery(graphql`\n query REPOSITORY_QUERY {\n site {\n siteMetadata {\n repository {\n baseUrl\n subDirectory\n branch\n }\n }\n }\n }\n `);\n\n const { baseUrl, subDirectory, branch } = repositoryProp || repository;\n\n const href = `${baseUrl}/edit/${branch}${subDirectory}/src/pages${relativePagePath}`;\n\n return baseUrl ? (\n \n ) : null;\n};\n\nEditLink.propTypes = {\n repository: PropTypes.shape({\n baseUrl: PropTypes.string,\n subDirectory: PropTypes.string,\n branch: PropTypes.string,\n }),\n relativePagePath: PropTypes.string,\n};\n\nexport default EditLink;\n","// extracted by mini-css-extract-plugin\nexport var bxTextTruncateEnd = \"EditLink-module--bx--text-truncate--end--uI0cF\";\nexport var bxTextTruncateFront = \"EditLink-module--bx--text-truncate--front--HxjcS\";\nexport var link = \"EditLink-module--link--IDrl1\";\nexport var row = \"EditLink-module--row--BEmSX\";","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'gatsby';\nimport slugify from 'slugify';\nimport cx from 'classnames';\n\nimport {\n tabsContainer,\n list,\n selectedItem,\n listItem,\n link,\n} from './PageTabs.module.scss';\n\nexport default class PageTabs extends React.Component {\n render() {\n const { title, tabs, slug } = this.props;\n const currentTab = slug.split('/').filter(Boolean).slice(-1)[0];\n\n const pageTabs = tabs.map((tab) => {\n const slugifiedTab = slugify(tab, { lower: true, strict: true });\n const selected = slugifiedTab === currentTab;\n // matches with or without trailing slash: /?\n // matches with or without hash link: (#.*)?\n const currentTabRegex = new RegExp(`${currentTab}/?(#.*)?$`);\n const href = slug.replace(currentTabRegex, slugifiedTab);\n return (\n
  • \n \n {tab}\n \n
  • \n );\n });\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n\nPageTabs.propTypes = {\n tabs: PropTypes.array,\n slug: PropTypes.string,\n};\n","// extracted by mini-css-extract-plugin\nexport var bxTextTruncateEnd = \"PageTabs-module--bx--text-truncate--end--OC59x\";\nexport var bxTextTruncateFront = \"PageTabs-module--bx--text-truncate--front--5I6-L\";\nexport var link = \"PageTabs-module--link--Kz-7R\";\nexport var list = \"PageTabs-module--list--xLqxG\";\nexport var listItem = \"PageTabs-module--list-item--024o6\";\nexport var selectedItem = \"PageTabs-module--selected-item--aBB0K\";\nexport var tabsContainer = \"PageTabs-module--tabs-container--Cdfzw\";","import PageTabs from './PageTabs';\n\nexport default PageTabs;\n","import LastModifiedDate from './LastModifiedDate';\n\nexport default LastModifiedDate;\n","import React from 'react';\nimport { Row, Column } from '../Grid';\nimport * as styles from './last-modified-date.module.scss';\n\nconst LastModifiedDate = ({ date }) => {\n const options = {\n day: '2-digit',\n year: 'numeric',\n month: 'long',\n };\n\n const lastModified = new Date(date);\n\n return date ? (\n \n \n
    \n Page last updated: {lastModified.toLocaleDateString('en-GB', options)}\n {/* // https://www-03preprod.ibm.com/support/knowledgecenter/ibm_style/dates-and-times.html */}\n
    \n
    \n
    \n ) : null;\n};\nexport default LastModifiedDate;\n","// extracted by mini-css-extract-plugin\nexport var bxTextTruncateEnd = \"last-modified-date-module--bx--text-truncate--end--QgCc7\";\nexport var bxTextTruncateFront = \"last-modified-date-module--bx--text-truncate--front--kel8a\";\nexport var row = \"last-modified-date-module--row--XJoYQ\";\nexport var text = \"last-modified-date-module--text--ogPQF\";","import React from 'react';\nimport slugify from 'slugify';\nimport { useStaticQuery, graphql } from 'gatsby';\n\nimport Utils from '../components/Utils';\nimport Layout from '../components/Layout';\nimport PageHeader from '../components/PageHeader';\nimport EditLink from '../components/EditLink';\nimport NextPrevious from '../components/NextPrevious';\nimport PageTabs from '../components/PageTabs';\nimport Main from '../components/Main';\nimport useMetadata from '../util/hooks/useMetadata';\nimport LastModifiedDate from '../components/LastModifiedDate';\n\nconst Default = ({ pageContext, children, location, Title }) => {\n const { frontmatter = {}, relativePagePath, titleType } = pageContext;\n const {\n tabs,\n title,\n theme: frontmatterTheme,\n description,\n keywords,\n date,\n } = frontmatter;\n\n const { interiorTheme } = useMetadata();\n\n // get the path prefix if it exists\n const {\n site: { pathPrefix },\n } = useStaticQuery(graphql`\n query PATH_PREFIX_QUERY {\n site {\n pathPrefix\n }\n }\n `);\n\n // let gatsby handle prefixing\n const slug = pathPrefix\n ? location.pathname.replace(pathPrefix, '')\n : location.pathname;\n\n const getCurrentTab = () => {\n if (!tabs) return '';\n return (\n slug.split('/').filter(Boolean).slice(-1)[0] ||\n slugify(tabs[0], { lower: true })\n );\n };\n\n const currentTab = getCurrentTab();\n\n const theme = frontmatterTheme || interiorTheme;\n\n return (\n \n : title}\n label=\"label\"\n tabs={tabs}\n theme={theme}\n />\n {tabs && (\n \n )}\n
    \n {children}\n \n \n
    \n \n \n \n );\n};\n\nexport default Default;\n","import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nimport DefaultLayout from \"/home/travis/build/maximo-app-framework/configuration-practices-documentation/node_modules/gatsby-theme-carbon/src/templates/Default.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

    {`IBM’s Maximo Application Framework (MAF) supports the creation of Maximo Mobile and Role-based application within Manage.`}

    \n

    {`The MAF Configuration application can be used by implementers to configure IBM-provided applications (or duplicates of those applications) that are built with the MAF. Other MAS applications, such as Health and Monitor, will provide MAF applications (now or in the future) that can also be configured using the MAF Configuration application.`}

    \n

    {`In this document we provide a few examples of configuration that can be used, extended, adapted and combined to achieve the desired customization.`}

    \n

    {`The guide is separeted in two sections: `}{`Simple`}{` and `}{`Complex`}{` practices. For simple ones it is expected to get references about adding attributes in a card, updating saved queries used in a lookup. For complex section, we dissect customizations combining different lifecycle events with new methods to meet the conditions proposed in the configuration criteria.`}

    \n

    {`Simple section addresses mostly configuration, which declare new elements, add properties and modify parameters within the tags. In Complex section, we focus in practices mostly using AppCustomizations.js file and some techniques to achieve the customization.`}

    \n

    {`General tips`}

    \n

    {`Ideas`}

    \n

    {`Often times a customization won’t be possible due to limitations of the framework or maybe processes not exposed. Instead of a bug an idea should be issued through `}{`Ideas Portal`}{`.`}

    \n

    {`Order`}

    \n

    {`The order to place the XML tags is important. Although it is a markup language the build process take into consideration the order it is declared along the file.`}

    \n

    {`Logs`}

    \n

    {`One way to track progress during customization is using logs. Creating a tag prefix to use building the configurations associated with log API available in Graphite helps identify all paths the code can take.`}

    \n
    {`// Tag for log (to be add at the first line of the file)\nconst TAG = '***Custom***';\n`}
    \n

    {`Filter datasource`}

    \n

    {`There are a few ways to fetch the right amount of data to the appropriate context.`}

    \n
      \n
    • {`QBE filter (declaration or API)`}
    • \n
    • {`Where clause`}
    • \n
    • {`Saved Query`}
    • \n
    • {`Mobile QBE Filter`}
    • \n
    \n

    {`The last one is exclusive for mobile apps searching against data previously loaded.\nBasically mobile-qbe-filter is a qbe filter used by the apps when running in the mobile container. It’s only used when fetching data from the local db (on the device) and not used when fetching data from maximo/server.\nMobile only supports mobile-qbe-filter on the “top most” object.`}

    \n

    {`Considerations about translating all characteristics of a where clause into Mobile-QBE-Filter:`}

    \n
      \n
    • {`Nested properties does not work in mobile, instead an alias should be used and referenced in the QBE filter.`}
    • \n
    • {`Variables like SYSDAY are interpreted only in server, so avoid using it.`}
    • \n
    \n

    {`Saved query should be used to be the less restrictive filter. If there is additional filter criteria, then you would add to the maximo-datasource a where (for web) and mobile-qbe-filter (for mobile) to reduce the dataset.\nLookup datasources for Maximo Mobile need to use the same saved query so it’s important that you implement the filter with where & mobile-qbe-filter.`}

    \n

    {`Support`}

    \n

    {`Although it not a regular but we also offer support through `}{`L3 RBA Configuration`}{` queue.​`}

    \n

    {`This queue is intended for issues with a specific application’s behavior when performing configuration. This would include connecting to data sources, altering or creating new functions within an application, altering UI layout, page routing, adhering to maximo business rules, etc.​`}

    \n

    {`Reminder that the same support policies apply to configuration. Customers running older/non supported versions of RBA and Mobile (<8.10) will not have access to configuration support.​`}

    \n

    {`In addition, the `}{`L3 RBA Configuration`}{` queue is going to get a lot of bugs or questions reported that are eventually traced back to code customizations, which are not supported, although we will do our best to point them in the correct direction.​`}

    \n\n
    ;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"names":["title","theme","tabs","className","cx","length","id","relativePagePath","repositoryProp","repository","useStaticQuery","site","siteMetadata","baseUrl","subDirectory","href","branch","PageTabs","render","this","props","slug","currentTab","split","filter","Boolean","slice","pageTabs","map","tab","slugifiedTab","slugify","lower","strict","selected","currentTabRegex","RegExp","replace","key","Link","to","React","date","lastModified","Date","toLocaleDateString","day","year","month","pageContext","children","location","Title","frontmatter","titleType","frontmatterTheme","description","keywords","interiorTheme","useMetadata","pathPrefix","pathname","Layout","homepage","pageTitle","pageDescription","pageKeywords","label","Main","padded","NextPrevious","Utils","_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","mdxType","parentName","target","isMDXComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/debug-ui/index.html b/debug-ui/index.html index b1c521d..edf4af0 100644 --- a/debug-ui/index.html +++ b/debug-ui/index.html @@ -27,4 +27,4 @@

    From this new window move the cursor over the various HTML elements. When your cursor hovers over an element it will be highlighted on the application’s page. In our scenario we are looking for an element that is wrapping the text description of our asset.

    Step 4: Capture the “id” attribute of the element highlighted. In our case this value is “yzqaa”

    Step 5: In the configuration tool, open the TECHMOBILE application. Find the code editor section and left click anywhere within that editor. Then use the “find” command by using keybind “CTRL + F” if using windows or “Command + F” if using Mac. Paste the value of the id into the search bar. The code editor should automatically jump to that element with the correct id.

    Code Editor Example -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/index.html b/index.html index 860ee34..9722437 100644 --- a/index.html +++ b/index.html @@ -12,4 +12,4 @@ } } }) - \ No newline at end of file + \ No newline at end of file diff --git a/overview/index.html b/overview/index.html index 58f2a7d..747b9e9 100644 --- a/overview/index.html +++ b/overview/index.html @@ -12,7 +12,7 @@ } } }) -
    Skip to main contentMAF Configuration Practices

    Overview

    IBM’s Maximo Application Framework (MAF) supports the creation of Maximo Mobile and Role-based application within Manage.

    The MAF Configuration application can be used by implementers to configure IBM-provided applications (or duplicates of those applications) that are built with the MAF. Other MAS applications, such as Health and Monitor, will provide MAF applications (now or in the future) that can also be configured using the MAF Configuration application.

    In this document we provide a few examples of configuration that can be used, extended, adapted and combined to achieve the desired customization.

    The guide is separeted in two sections: Simple and Complex practices. For simple ones it is expected to get references about adding attributes in a card, updating saved queries used in a lookup. For complex section, we dissect customizations combining different lifecycle events with new methods to meet the conditions proposed in the configuration criteria.

    General tips

    Ideas

    Often times a customization won’t be possible due to limitations of the framework or maybe processes not exposed. Instead of a bug an idea should be issued through Ideas Portal.

    Order

    The order to place the XML tags is important. Although it is a markup language the build process take into consideration the order it is declared along the file.

    Logs

    One way to track progress during customization is using logs. Creating a tag prefix to use building the configurations associated with log API available in Graphite helps identify all paths the code can take.

    // Tag for log (to be add at the first line of the file)
    const TAG = '***Custom***';

    Filter datasource

    There are a few ways to fetch the right amount of data to the appropriate context.

    • QBE filter (declaration or API)
    • Where clause
    • Saved Query
    • Mobile QBE Filter

    The last one is exclusive for mobile apps searching against data previously loaded. +

    Skip to main contentMAF Configuration Practices

    Overview

    IBM’s Maximo Application Framework (MAF) supports the creation of Maximo Mobile and Role-based application within Manage.

    The MAF Configuration application can be used by implementers to configure IBM-provided applications (or duplicates of those applications) that are built with the MAF. Other MAS applications, such as Health and Monitor, will provide MAF applications (now or in the future) that can also be configured using the MAF Configuration application.

    In this document we provide a few examples of configuration that can be used, extended, adapted and combined to achieve the desired customization.

    The guide is separeted in two sections: Simple and Complex practices. For simple ones it is expected to get references about adding attributes in a card, updating saved queries used in a lookup. For complex section, we dissect customizations combining different lifecycle events with new methods to meet the conditions proposed in the configuration criteria.

    Simple section addresses mostly configuration, which declare new elements, add properties and modify parameters within the tags. In Complex section, we focus in practices mostly using AppCustomizations.js file and some techniques to achieve the customization.

    General tips

    Ideas

    Often times a customization won’t be possible due to limitations of the framework or maybe processes not exposed. Instead of a bug an idea should be issued through Ideas Portal.

    Order

    The order to place the XML tags is important. Although it is a markup language the build process take into consideration the order it is declared along the file.

    Logs

    One way to track progress during customization is using logs. Creating a tag prefix to use building the configurations associated with log API available in Graphite helps identify all paths the code can take.

    // Tag for log (to be add at the first line of the file)
    const TAG = '***Custom***';

    Filter datasource

    There are a few ways to fetch the right amount of data to the appropriate context.

    • QBE filter (declaration or API)
    • Where clause
    • Saved Query
    • Mobile QBE Filter

    The last one is exclusive for mobile apps searching against data previously loaded. Basically mobile-qbe-filter is a qbe filter used by the apps when running in the mobile container. It’s only used when fetching data from the local db (on the device) and not used when fetching data from maximo/server. Mobile only supports mobile-qbe-filter on the “top most” object.

    Considerations about translating all characteristics of a where clause into Mobile-QBE-Filter:

    • Nested properties does not work in mobile, instead an alias should be used and referenced in the QBE filter.
    • Variables like SYSDAY are interpreted only in server, so avoid using it.

    Saved query should be used to be the less restrictive filter. If there is additional filter criteria, then you would add to the maximo-datasource a where (for web) and mobile-qbe-filter (for mobile) to reduce the dataset. -Lookup datasources for Maximo Mobile need to use the same saved query so it’s important that you implement the filter with where & mobile-qbe-filter.

    Support

    Although it not a regular but we also offer support through L3 RBA Configuration queue.​

    This queue is intended for issues with a specific application’s behavior when performing configuration. This would include connecting to data sources, altering or creating new functions within an application, altering UI layout, page routing, adhering to maximo business rules, etc.​

    Reminder that the same support policies apply to configuration. Customers running older/non supported versions of RBA and Mobile (<8.10) will not have access to configuration support.​

    In addition, the L3 RBA Configuration queue is going to get a lot of bugs or questions reported that are eventually traced back to code customizations, which are not supported, although we will do our best to point them in the correct direction.​

    \ No newline at end of file +Lookup datasources for Maximo Mobile need to use the same saved query so it’s important that you implement the filter with where & mobile-qbe-filter.

    Support

    Although it not a regular but we also offer support through L3 RBA Configuration queue.​

    This queue is intended for issues with a specific application’s behavior when performing configuration. This would include connecting to data sources, altering or creating new functions within an application, altering UI layout, page routing, adhering to maximo business rules, etc.​

    Reminder that the same support policies apply to configuration. Customers running older/non supported versions of RBA and Mobile (<8.10) will not have access to configuration support.​

    In addition, the L3 RBA Configuration queue is going to get a lot of bugs or questions reported that are eventually traced back to code customizations, which are not supported, although we will do our best to point them in the correct direction.​

    \ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index 6f0987e..661ce24 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"c9ff4834b97208b423e1"} +{"webpackCompilationHash":"b9f742ea786577481354"} diff --git a/page-data/complex/disable-delete-btn-error-tx/page-data.json b/page-data/complex/disable-delete-btn-error-tx/page-data.json index cb4db73..37343fa 100644 --- a/page-data/complex/disable-delete-btn-error-tx/page-data.json +++ b/page-data/complex/disable-delete-btn-error-tx/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-complex-disable-delete-btn-error-tx-mdx","path":"/complex/disable-delete-btn-error-tx/","result":{"pageContext":{"frontmatter":{"title":"Disable delete button for errored transaction"},"relativePagePath":"/complex/disable-delete-btn-error-tx.mdx","titleType":"append","MdxNode":{"id":"860d3af5-f8d1-5a9a-b65b-206c2b1155c2","children":[],"parent":"467bcae3-bccc-512d-b615-3592cbbf9103","internal":{"content":"---\ntitle: Disable delete button for errored transaction\n---\n\n## About this task\n\nThis guide details a step-by-step approach to controlling the ability of the delete button action for errored transactions in IBM Maximo Mobile by configuring specific files and setting up a signature option (sigoption).\nThis configuration takes place at **Navigator** app\n\n## Procedure\n\n### Step 1: Define the Signature Option (Sigoption) to control the delete button, start by creating a new sigoption named WO_DELETEERROR_TRX for the mxapiwodetail object structure. \n\nFollow these steps in the Object Structures application under Configure Object Structure Security:\n\n- Open the Object Structures application from the IBM Maximo main menu.\n- Search for and select the mxapiwodetail object structure.\n- In the toolbar, click on the Action menu and select Configure Object Structure Security.\n- In the Configure Object Structure Security dialog, click New Row to add a new signature option.\n- In the Option Name field, enter WO_DELETEERROR_TRX.\n- Provide a description, such as “Control of delete button for errored transactions.”\n\n\n![configure object structure security dialog](../assets/configure-object-structure-security-dialog.png)\n\n\n### Step 2: After creating this sigoption, assign the correct permissions in the Security Groups application:\n\n- Open the Security Groups application.\n- Locate the relevant security group(s) to which this permission should be granted.\n- Under the Object Structures tab, select the mxapiwodetail object structure.\n- Find the WO_DELETEERROR_TRX sigoption and grant the appropriate access level to control of the delete button for errored transactions.\n\n![security group sigoption for mxapiwodetail](../assets/security-group-sigoption.png)\n\n\n### Step 3: Modify the App.xml File from the Navigator application. Locate the delete button (id=\"a38re\") in the App.xml file. Add a disabled attribute to the button, linked to a custom property that will control its state based on the sigoption.\n\n```xml\n \n```\n\n### Step 4: Configure the AppCustomizations.js. Use the applicationInitialized(app) event to capture the value of sigoption WO_DELETEERROR_TRX for the current application instance and store it in a class variable for later use. This will determine if the delete option is permitted.\n\n\n```js\n applicationInitialized(app) {\n // Store the delete permission for error transactions\n this.canDeleteError = this.app.checkSigOption(`${this.app.state.woOSName}.WO_DELETEERROR_TRX`);\n }\n```\n\n### Step 5: Use the onAfterLoadData event to iterate over each item in the syncTranscationDS datasource. This allows you to set the disabled attribute based on the sigoption value and transaction properties.\n\n```js\n onAfterLoadData(datasource, items, query) {\n // Check if the data source is 'syncTranscationDS'\n if (datasource.name === 'syncTranscationDS') {\n items.forEach(item => {\n // Disable delete if the transaction is from WORKORDER and deletion is not allowed\n item.disabled = item.collectionid === 'WORKORDER' && !this.canDeleteError;\n });\n }\n }\n```\n\n> The code above will disable the delete button for errored transactions from the WORKORDER collection if deletion is not allowed based on the sigoption.\nThe visibility of the delete button can be adjusted at any time by an administrator through the Security Groups application. By changing the WO_DELETEERROR_TRX sigoption setting for the relevant security group, administrators can dynamically control whether users can delete errored transactions.","type":"Mdx","contentDigest":"d649032cea7f9f4f401d211c480d4236","owner":"gatsby-plugin-mdx","counter":89},"frontmatter":{"title":"Disable delete button for errored transaction"},"exports":{},"rawBody":"---\ntitle: Disable delete button for errored transaction\n---\n\n## About this task\n\nThis guide details a step-by-step approach to controlling the ability of the delete button action for errored transactions in IBM Maximo Mobile by configuring specific files and setting up a signature option (sigoption).\nThis configuration takes place at **Navigator** app\n\n## Procedure\n\n### Step 1: Define the Signature Option (Sigoption) to control the delete button, start by creating a new sigoption named WO_DELETEERROR_TRX for the mxapiwodetail object structure. \n\nFollow these steps in the Object Structures application under Configure Object Structure Security:\n\n- Open the Object Structures application from the IBM Maximo main menu.\n- Search for and select the mxapiwodetail object structure.\n- In the toolbar, click on the Action menu and select Configure Object Structure Security.\n- In the Configure Object Structure Security dialog, click New Row to add a new signature option.\n- In the Option Name field, enter WO_DELETEERROR_TRX.\n- Provide a description, such as “Control of delete button for errored transactions.”\n\n\n![configure object structure security dialog](../assets/configure-object-structure-security-dialog.png)\n\n\n### Step 2: After creating this sigoption, assign the correct permissions in the Security Groups application:\n\n- Open the Security Groups application.\n- Locate the relevant security group(s) to which this permission should be granted.\n- Under the Object Structures tab, select the mxapiwodetail object structure.\n- Find the WO_DELETEERROR_TRX sigoption and grant the appropriate access level to control of the delete button for errored transactions.\n\n![security group sigoption for mxapiwodetail](../assets/security-group-sigoption.png)\n\n\n### Step 3: Modify the App.xml File from the Navigator application. Locate the delete button (id=\"a38re\") in the App.xml file. Add a disabled attribute to the button, linked to a custom property that will control its state based on the sigoption.\n\n```xml\n \n```\n\n### Step 4: Configure the AppCustomizations.js. Use the applicationInitialized(app) event to capture the value of sigoption WO_DELETEERROR_TRX for the current application instance and store it in a class variable for later use. This will determine if the delete option is permitted.\n\n\n```js\n applicationInitialized(app) {\n // Store the delete permission for error transactions\n this.canDeleteError = this.app.checkSigOption(`${this.app.state.woOSName}.WO_DELETEERROR_TRX`);\n }\n```\n\n### Step 5: Use the onAfterLoadData event to iterate over each item in the syncTranscationDS datasource. This allows you to set the disabled attribute based on the sigoption value and transaction properties.\n\n```js\n onAfterLoadData(datasource, items, query) {\n // Check if the data source is 'syncTranscationDS'\n if (datasource.name === 'syncTranscationDS') {\n items.forEach(item => {\n // Disable delete if the transaction is from WORKORDER and deletion is not allowed\n item.disabled = item.collectionid === 'WORKORDER' && !this.canDeleteError;\n });\n }\n }\n```\n\n> The code above will disable the delete button for errored transactions from the WORKORDER collection if deletion is not allowed based on the sigoption.\nThe visibility of the delete button can be adjusted at any time by an administrator through the Security Groups application. By changing the WO_DELETEERROR_TRX sigoption setting for the relevant security group, administrators can dynamically control whether users can delete errored transactions.","fileAbsolutePath":"/home/travis/build/maximo-app-framework/configuration-practices-documentation/src/pages/complex/disable-delete-btn-error-tx.mdx"}}},"staticQueryHashes":["1364590287","137577622","2102389209","2456312558","2746626797","3018647132","3037994772","768070550"]} \ No newline at end of file +{"componentChunkName":"component---src-pages-complex-disable-delete-btn-error-tx-mdx","path":"/complex/disable-delete-btn-error-tx/","result":{"pageContext":{"frontmatter":{"title":"Disable delete button for errored transaction"},"relativePagePath":"/complex/disable-delete-btn-error-tx.mdx","titleType":"append","MdxNode":{"id":"860d3af5-f8d1-5a9a-b65b-206c2b1155c2","children":[],"parent":"467bcae3-bccc-512d-b615-3592cbbf9103","internal":{"content":"---\ntitle: Disable delete button for errored transaction\n---\n\n## About this task\n\nThis guide details a step-by-step approach to controlling the ability of the delete button action for errored transactions in IBM Maximo Mobile by configuring specific files and setting up a signature option (sigoption).\nThis configuration takes place at **Navigator** app\n\n## Procedure\n\n### Step 1: Define the Signature Option (Sigoption) to control the delete button, start by creating a new sigoption named WO_DELETEERROR_TRX for the mxapiwodetail object structure. \n\nFollow these steps in the Object Structures application under Configure Object Structure Security:\n\n- Open the Object Structures application from the IBM Maximo main menu.\n- Search for and select the mxapiwodetail object structure.\n- In the toolbar, click on the Action menu and select Configure Object Structure Security.\n- In the Configure Object Structure Security dialog, click New Row to add a new signature option.\n- In the Option Name field, enter WO_DELETEERROR_TRX.\n- Provide a description, such as “Control of delete button for errored transactions.”\n\n\n![configure object structure security dialog](../assets/configure-object-structure-security-dialog.png)\n\n\n### Step 2: After creating this sigoption, assign the correct permissions in the Security Groups application:\n\n- Open the Security Groups application.\n- Locate the relevant security group(s) to which this permission should be granted.\n- Under the Object Structures tab, select the mxapiwodetail object structure.\n- Find the WO_DELETEERROR_TRX sigoption and grant the appropriate access level to control of the delete button for errored transactions.\n\n![security group sigoption for mxapiwodetail](../assets/security-group-sigoption.png)\n\n\n### Step 3: Modify the App.xml File from the Navigator application. Locate the delete button (id=\"a38re\") in the App.xml file. Add a disabled attribute to the button, linked to a custom property that will control its state based on the sigoption.\n\n```xml\n \n```\n\n### Step 4: Configure the AppCustomizations.js. Use the applicationInitialized(app) event to capture the value of sigoption WO_DELETEERROR_TRX for the current application instance and store it in a class variable for later use. This will determine if the delete option is permitted.\n\n\n```js\n applicationInitialized(app) {\n // Store the delete permission for error transactions\n this.canDeleteError = this.app.checkSigOption(`${this.app.state.woOSName}.WO_DELETEERROR_TRX`);\n }\n```\n\n### Step 5: Use the onAfterLoadData event to iterate over each item in the syncTranscationDS datasource. This allows you to set the disabled attribute based on the sigoption value and transaction properties.\n\n```js\n onAfterLoadData(datasource, items, query) {\n // Check if the data source is 'syncTranscationDS'\n if (datasource.name === 'syncTranscationDS') {\n items.forEach(item => {\n // Disable delete if the transaction is from WORKORDER and deletion is not allowed\n item.disabled = item.collectionid === 'WORKORDER' && !this.canDeleteError;\n });\n }\n }\n```\n\n> The code above will disable the delete button for errored transactions from the WORKORDER collection if deletion is not allowed based on the sigoption.\nThe visibility of the delete button can be adjusted at any time by an administrator through the Security Groups application. By changing the WO_DELETEERROR_TRX sigoption setting for the relevant security group, administrators can dynamically control whether users can delete errored transactions.","type":"Mdx","contentDigest":"d649032cea7f9f4f401d211c480d4236","owner":"gatsby-plugin-mdx","counter":88},"frontmatter":{"title":"Disable delete button for errored transaction"},"exports":{},"rawBody":"---\ntitle: Disable delete button for errored transaction\n---\n\n## About this task\n\nThis guide details a step-by-step approach to controlling the ability of the delete button action for errored transactions in IBM Maximo Mobile by configuring specific files and setting up a signature option (sigoption).\nThis configuration takes place at **Navigator** app\n\n## Procedure\n\n### Step 1: Define the Signature Option (Sigoption) to control the delete button, start by creating a new sigoption named WO_DELETEERROR_TRX for the mxapiwodetail object structure. \n\nFollow these steps in the Object Structures application under Configure Object Structure Security:\n\n- Open the Object Structures application from the IBM Maximo main menu.\n- Search for and select the mxapiwodetail object structure.\n- In the toolbar, click on the Action menu and select Configure Object Structure Security.\n- In the Configure Object Structure Security dialog, click New Row to add a new signature option.\n- In the Option Name field, enter WO_DELETEERROR_TRX.\n- Provide a description, such as “Control of delete button for errored transactions.”\n\n\n![configure object structure security dialog](../assets/configure-object-structure-security-dialog.png)\n\n\n### Step 2: After creating this sigoption, assign the correct permissions in the Security Groups application:\n\n- Open the Security Groups application.\n- Locate the relevant security group(s) to which this permission should be granted.\n- Under the Object Structures tab, select the mxapiwodetail object structure.\n- Find the WO_DELETEERROR_TRX sigoption and grant the appropriate access level to control of the delete button for errored transactions.\n\n![security group sigoption for mxapiwodetail](../assets/security-group-sigoption.png)\n\n\n### Step 3: Modify the App.xml File from the Navigator application. Locate the delete button (id=\"a38re\") in the App.xml file. Add a disabled attribute to the button, linked to a custom property that will control its state based on the sigoption.\n\n```xml\n \n```\n\n### Step 4: Configure the AppCustomizations.js. Use the applicationInitialized(app) event to capture the value of sigoption WO_DELETEERROR_TRX for the current application instance and store it in a class variable for later use. This will determine if the delete option is permitted.\n\n\n```js\n applicationInitialized(app) {\n // Store the delete permission for error transactions\n this.canDeleteError = this.app.checkSigOption(`${this.app.state.woOSName}.WO_DELETEERROR_TRX`);\n }\n```\n\n### Step 5: Use the onAfterLoadData event to iterate over each item in the syncTranscationDS datasource. This allows you to set the disabled attribute based on the sigoption value and transaction properties.\n\n```js\n onAfterLoadData(datasource, items, query) {\n // Check if the data source is 'syncTranscationDS'\n if (datasource.name === 'syncTranscationDS') {\n items.forEach(item => {\n // Disable delete if the transaction is from WORKORDER and deletion is not allowed\n item.disabled = item.collectionid === 'WORKORDER' && !this.canDeleteError;\n });\n }\n }\n```\n\n> The code above will disable the delete button for errored transactions from the WORKORDER collection if deletion is not allowed based on the sigoption.\nThe visibility of the delete button can be adjusted at any time by an administrator through the Security Groups application. By changing the WO_DELETEERROR_TRX sigoption setting for the relevant security group, administrators can dynamically control whether users can delete errored transactions.","fileAbsolutePath":"/home/travis/build/maximo-app-framework/configuration-practices-documentation/src/pages/complex/disable-delete-btn-error-tx.mdx"}}},"staticQueryHashes":["1364590287","137577622","2102389209","2456312558","2746626797","3018647132","3037994772","768070550"]} \ No newline at end of file diff --git a/page-data/complex/enable-wo-classification/page-data.json b/page-data/complex/enable-wo-classification/page-data.json index cdee302..46e303d 100644 --- a/page-data/complex/enable-wo-classification/page-data.json +++ b/page-data/complex/enable-wo-classification/page-data.json @@ -1 +1 @@ -{"componentChunkName":"component---src-pages-complex-enable-wo-classification-mdx","path":"/complex/enable-wo-classification/","result":{"pageContext":{"frontmatter":{"title":"Enable the use of work order classifications in Technician app"},"relativePagePath":"/complex/enable-wo-classification.mdx","titleType":"append","MdxNode":{"id":"8cfc7eca-8e5e-5cbd-a102-4671ca97f279","children":[],"parent":"de3a489b-9593-50b2-9162-61fd437a41a9","internal":{"content":"---\ntitle: Enable the use of work order classifications in Technician app\n---\n\n## About this task\n\nThis guide walks through how to include the use of Classifications when creating a new work order record in Technician application.\n\n## Procedure\n\n### Step 1: Add a new datasource referencing the mxapiclassstructure object structure. This should be defined along with the other search datasources at the top level of the application (pages). This ensures that this datasource can be used on other pages, such as the edit page. Below is a saved query called “emxwoclass” but this can be changed to anything you add to the object structure to show the appropriate classifications.\n\n```xml\n \n \n \n \n \n \n \n \n \n```\n\n### Step 2: Add a new lookup. All lookups are defined at the page level, but this is not mandatory and would not be recommended for lookups like this. We recommend adding above / the block.\n\n```xml\n \n \n \n```\n\n### Step 3: In the \"datasource\" dsCreateWo, search for id=\"dsCreateWo\" and add the following attributes.\n\n```xml\n \n \n```\n\n### Step 4: Add UI elements to display the hierarchy path and open the search page, locate the id “q55zy” and add the code below.\n\n```xml\n \n \n \n \n \n \n

    Step 3: Create a domain with the name “TRG_PRIORITY” and associate it with the datasource created “trg_WoPrioritylookupDS” in the app.xml, it must be placed before id=“synonymdomainData”. Search for id=“trg_WoPrioritylookupDS” and add the dialog.

    The order matters. The datasource referenced in the lookup should be declared before using it.

    <dialogs id="applookups">
    <lookup id="trg_woPriorityLookup" datasource="trg_WoPrioritylookupDS" lookup-attributes="{['value','description']}" search-placeholder="Search WO Priority"/>
    </dialogs>
    <smart-input label="Priority" hide-step-buttons="true" placeholder="Enter {page.state.minPriority} to {page.state.maxPriority}" value="{dsWoedit.item.wopriority}" on-blur="validateFields" min="{page.state.minPriority}" max="{page.state.maxPriority}" enable-lookup-buttongroup="true" input-kind="ALN" lookup="trg_woPriorityLookup" select-lookup-attribute="value" id="yqkzy"/>
    -
    <smart-input label="Priority" hide-step-buttons="true" placeholder="Enter {page.state.minPriority} to {page.state.maxPriority}" value="{dsCreateWo.item.wopriority}" on-blur="validateFields" min="{page.state.minPriority}" max="{page.state.maxPriority}" id="j8265" enable-lookup-buttongroup="true" input-kind="ALN" lookup="trg_woPriorityLookup" select-lookup-attribute="value"/>
    \ No newline at end of file +
    <smart-input label="Priority" hide-step-buttons="true" placeholder="Enter {page.state.minPriority} to {page.state.maxPriority}" value="{dsCreateWo.item.wopriority}" on-blur="validateFields" min="{page.state.minPriority}" max="{page.state.maxPriority}" id="j8265" enable-lookup-buttongroup="true" input-kind="ALN" lookup="trg_woPriorityLookup" select-lookup-attribute="value"/>
    \ No newline at end of file diff --git a/simple/default-record-data-options/index.html b/simple/default-record-data-options/index.html index ff579fe..401f9cd 100644 --- a/simple/default-record-data-options/index.html +++ b/simple/default-record-data-options/index.html @@ -17,4 +17,4 @@ Record Data Options page

    Procedure

    Step 1: Using the NAVIGATOR app, go to AppCustomization.js, import TaskManager module in AppCustomizations file.

    import { TaskManager } from './TaskManager.js';

    Step 2: Create varibles to define default values of each configuration. Use NAVIGATOR-APP-DOWNLOAD-STATUS event to apply the configuration.

    // Custom Application Logic
    -
    applicationInitialized(app) {
    this.app = app;
    [...]
    const lookupEnabled = true;
    const lookupDelta = true;
    const transEnabled = false;
    const taskManager = TaskManager.get();
    \ No newline at end of file +
    applicationInitialized(app) {
    this.app = app;
    [...]
    const lookupEnabled = true;
    const lookupDelta = true;
    const transEnabled = false;
    const taskManager = TaskManager.get();
    \ No newline at end of file diff --git a/simple/extended-lookup-map/index.html b/simple/extended-lookup-map/index.html index 66f320e..0ef51b3 100644 --- a/simple/extended-lookup-map/index.html +++ b/simple/extended-lookup-map/index.html @@ -13,4 +13,4 @@ } })
    Skip to main contentMAF Configuration Practices

    Create new Lookup map

    About this task

    This guide instructs on how to add new lookup map that is not part of out of the box lookups.

    Procedure

    Step 1: Insert the reference to the desired data source

    <schema id="d_693">
    [...]
    <attribute name="calnum" searchable="true" id="jnz3_">
    <lookup-map name="calnum" id="pmgg9">
    <lookup-return lookup-field="displayValue" datasource-field="description" id="gkp6r"/>
    <lookup-return lookup-field="value" datasource-field="calnum" id="rb2gqaa"/>
    </lookup-map>
    </attribute>
    [...]

    “The lookup-map element with id: ’####’ contains the lookup name: ’####’ which either doesn’t exist or match the case of the lookup name in the lookups.json file. Please fix the lookup name reference.”

    If this error is thrown during the build process than it is typically caused due to a look up that is not part of the out of the box.

    “Extended lookup found: lookups.json”

    The message above indicates the lookup map extension file was identified and processed.

    Step 2: Create a new file to extend existing lookups

    In src folder of the project, create a new file and name it as lookups.json. -The source folder is located where MAF tool was mapped, along with user and instance that MAF was connected.

    Step 3: Add the new object to be part of lookups

    {
    "calnum": {
    "objectName": "MXAPIASSET",
    "getList": "calnum",
    "attributeNames": "calnum,calendarid,description",
    "displayAttributes": "calnum,description",
    "searchAttributeNames": "calnum,description",
    "useSearchTerms": "true"
    }
    \ No newline at end of file +The source folder is located where MAF tool was mapped, along with user and instance that MAF was connected.

    Step 3: Add the new object to be part of lookups

    {
    "calnum": {
    "objectName": "MXAPIASSET",
    "getList": "calnum",
    "attributeNames": "calnum,calendarid,description",
    "displayAttributes": "calnum,description",
    "searchAttributeNames": "calnum,description",
    "useSearchTerms": "true"
    }
    \ No newline at end of file diff --git a/simple/modify-default-queries/index.html b/simple/modify-default-queries/index.html index a6e083a..1b2b200 100644 --- a/simple/modify-default-queries/index.html +++ b/simple/modify-default-queries/index.html @@ -15,4 +15,4 @@
    Skip to main contentMAF Configuration Practices

    Modify Technician app default queries

    About this task

    This guide walks you through changing the default queries for the Techmobile application.

    Procedure

    Step 1: Create and/or take the query name you would like to use

    mxapiwodetail custom query definition -

    Step 2: Associating the query name to a datasource. You can create one but typically the main list already has a main datasource and to reuse the same object structure in the same page we use maximo-datasource-override.

    <maximo-datasource-override id="closedWODS" saved-query="MYCUSTOMQUERY"/>

    Step 3: Create an item in dropdown to list the new option. To find the ‘out of the box’ queries available in the Techmobile home page dropdown menu, you can search the app.xml using ‘dropdown-item’ (see below). You can also search by the value displayed in the dropdown when you run the application, in techmobile the dropdown has ID rzvz4.

    <dropdown slot="dropdown" background-color="white" selected-item="{page.state.selectedDS}" id="rzvz4" on-change="loadWOListData" hide-unselected-placeholder="true">
    <dropdown-item value="todaywoassignedDS" text="Assigned work" id="njkmd"/>
    <dropdown-item value="pmduewolistDS" text="PMs due this week" id="jxr9k"/>
    <dropdown-item value="myworkDS" text="Work created by me" hidden="{app.device.isMaximoMobile}" id="wqadv"/>
    <dropdown-item value="myworkCreatedLocally" text="Work created on device" hidden="{!app.device.isMaximoMobile}" id="wgbb8"/>
    <dropdown-item value="myWorkOrder" sigoption="{`${app.state.woOSName}.uxtechlist`}" text="My work order" id="d3v_7"/>
    <dropdown-item value="completedCloseDS" text="Work order history" id="qebv2"/>
    <state name="selectedDS" value="closedWODS" type="string" id="py7q_"/>
    </dropdown>

    Step 4: Set the datasource with the desired default query as value of the page state. Typically that is how most of the apps work, in techmobile the id of this state is py7q_.

    <state name="selectedDS" value="closedWODS" type="string" id="py7q_"/>
    \ No newline at end of file +

    Step 2: Associating the query name to a datasource. You can create one but typically the main list already has a main datasource and to reuse the same object structure in the same page we use maximo-datasource-override.

    <maximo-datasource-override id="closedWODS" saved-query="MYCUSTOMQUERY"/>

    Step 3: Create an item in dropdown to list the new option. To find the ‘out of the box’ queries available in the Techmobile home page dropdown menu, you can search the app.xml using ‘dropdown-item’ (see below). You can also search by the value displayed in the dropdown when you run the application, in techmobile the dropdown has ID rzvz4.

    <dropdown slot="dropdown" background-color="white" selected-item="{page.state.selectedDS}" id="rzvz4" on-change="loadWOListData" hide-unselected-placeholder="true">
    <dropdown-item value="todaywoassignedDS" text="Assigned work" id="njkmd"/>
    <dropdown-item value="pmduewolistDS" text="PMs due this week" id="jxr9k"/>
    <dropdown-item value="myworkDS" text="Work created by me" hidden="{app.device.isMaximoMobile}" id="wqadv"/>
    <dropdown-item value="myworkCreatedLocally" text="Work created on device" hidden="{!app.device.isMaximoMobile}" id="wgbb8"/>
    <dropdown-item value="myWorkOrder" sigoption="{`${app.state.woOSName}.uxtechlist`}" text="My work order" id="d3v_7"/>
    <dropdown-item value="completedCloseDS" text="Work order history" id="qebv2"/>
    <state name="selectedDS" value="closedWODS" type="string" id="py7q_"/>
    </dropdown>

    Step 4: Set the datasource with the desired default query as value of the page state. Typically that is how most of the apps work, in techmobile the id of this state is py7q_.

    <state name="selectedDS" value="closedWODS" type="string" id="py7q_"/>
    \ No newline at end of file diff --git a/simple/replace-date-attribute/index.html b/simple/replace-date-attribute/index.html index 8a5d4e7..cea2958 100644 --- a/simple/replace-date-attribute/index.html +++ b/simple/replace-date-attribute/index.html @@ -12,4 +12,4 @@ } } }) -
    Skip to main contentMAF Configuration Practices

    Replace work order’s Schedule Finish Date with Target Complete Date attribute

    About this task

    Out of the box Maximo® Mobile Technician application uses and display scheduled finish(SCHEDFINISH). This exercise guides on how to substitute the attribute SCHEDFINISH for TARGCOMPDATE on Work Order List page. It also shows how to overwrite the method used on controllers that use SCHEDFINISH.

    Procedure

    Step 1: Include a new attribute “targcompdate” into the existing datasource “dswolist”, in the app.xml.

    <maximo-datasource id="dswolist" object-structure="mxapiwodetail" saved-query="uxtechnicianownerfilter" order-by="wopriority" pre-load="false" controller="ScheduleDataController" selection-mode="single" geometry-format="geojson" default="false">
    <schema id="gjw7p">
    [...]
    <attribute name="locationnum" sortable="false" id="n_pxp"/>
    <attribute name="targcompdate" sortable="false" id="trg_n83qg"/>
    </schema>
    [...]
    </maximo-datasource>

    Step 2: Replace the references in value and expression to hide the existing field in wo-card-group and to present the new attribute, in wo-card-group.xml file.

    <date-relative slot="slot4" value="{item.targcompdate}" type="date_full_month" text-prefix="Due" hidden="{item.actfinish || (item.computedIsOverDue || !item.targcompdate)}" id="qj_43"/>
    <icon fill="red" slot="slot3" icon="carbon:warning--alt--filled" hidden="{item.actfinish || (!item.computedIsOverDue || !item.targcompdate)}" id="b38em"/>
    <date-relative slot="slot4" value="{item.targcompdate}" type="date_full_month" text-prefix="Overdue since" theme="error" hidden="{item.actfinish || (!item.computedIsOverDue || !item.targcompdate)}" id="qj_467"/>

    Step 3: On AppCustomization.js file, create a computedIsOverDue method. This method already exists in the ScheduleDataController controller, so the new definition in AppCustomization overrides the existing one.

    computedIsOverDue(item) {
    if (!item.targcompdate)
    return false;
    let due = new Date(item.targcompdate);
    if (isNaN(due))
    return false;
    due.setHours(0, 0, 0, 0);
    let today = new Date().setHours(0, 0, 0, 0);
    // DO NOT USE manual calculations ; they fail in DST
    \ No newline at end of file +
    Skip to main contentMAF Configuration Practices

    Replace work order’s Schedule Finish Date with Target Complete Date attribute

    About this task

    Out of the box Maximo® Mobile Technician application uses and display scheduled finish(SCHEDFINISH). This exercise guides on how to substitute the attribute SCHEDFINISH for TARGCOMPDATE on Work Order List page. It also shows how to overwrite the method used on controllers that use SCHEDFINISH.

    Procedure

    Step 1: Include a new attribute “targcompdate” into the existing datasource “dswolist”, in the app.xml.

    <maximo-datasource id="dswolist" object-structure="mxapiwodetail" saved-query="uxtechnicianownerfilter" order-by="wopriority" pre-load="false" controller="ScheduleDataController" selection-mode="single" geometry-format="geojson" default="false">
    <schema id="gjw7p">
    [...]
    <attribute name="locationnum" sortable="false" id="n_pxp"/>
    <attribute name="targcompdate" sortable="false" id="trg_n83qg"/>
    </schema>
    [...]
    </maximo-datasource>

    Step 2: Replace the references in value and expression to hide the existing field in wo-card-group and to present the new attribute, in wo-card-group.xml file.

    <date-relative slot="slot4" value="{item.targcompdate}" type="date_full_month" text-prefix="Due" hidden="{item.actfinish || (item.computedIsOverDue || !item.targcompdate)}" id="qj_43"/>
    <icon fill="red" slot="slot3" icon="carbon:warning--alt--filled" hidden="{item.actfinish || (!item.computedIsOverDue || !item.targcompdate)}" id="b38em"/>
    <date-relative slot="slot4" value="{item.targcompdate}" type="date_full_month" text-prefix="Overdue since" theme="error" hidden="{item.actfinish || (!item.computedIsOverDue || !item.targcompdate)}" id="qj_467"/>

    Step 3: On AppCustomization.js file, create a computedIsOverDue method. This method already exists in the ScheduleDataController controller, so the new definition in AppCustomization overrides the existing one.

    computedIsOverDue(item) {
    if (!item.targcompdate)
    return false;
    let due = new Date(item.targcompdate);
    if (isNaN(due))
    return false;
    due.setHours(0, 0, 0, 0);
    let today = new Date().setHours(0, 0, 0, 0);
    // DO NOT USE manual calculations ; they fail in DST
    \ No newline at end of file diff --git a/simple/update-app-saved-query/index.html b/simple/update-app-saved-query/index.html index 11828c3..6cfdef4 100644 --- a/simple/update-app-saved-query/index.html +++ b/simple/update-app-saved-query/index.html @@ -15,4 +15,4 @@
    Skip to main contentMAF Configuration Practices

    Change or replace apps’ saved queries

    About this task

    This guide explains how to change a query and modify its structure, with the possibility of extending a query to a specific scenario

    Procedure

    Step 1: In the app.xml file, locate the datasource to be modified. In this example, we will use the Technician application. Search for the datasource which id=“dsworktype”.

    <maximo-datasource id="dsworktype" offline-immediate-download="true" selection-mode="single" saved-query="WOWORKTYPE" lookup-data="true" pre-load="true" object-structure="mxapiworktype" page-size="100">
    <schema id="b2rkz">
    <attribute name="worktype" searchable="true" unique-id="true" id="rrpez"/>
    <attribute name="wtypedesc" searchable="true" id="w5_zm"/>
    <attribute name="woclass" searchable="true" id="b8w9r"/>
    <attribute name="orgid" searchable="true" id="b_jdj"/>
    <attribute name="promptdown" id="n_5q4"/>
    <attribute name="startstatus" id="vm3ke"/>
    <attribute name="completestatus" id="a5yen"/>

    Step 2: Additionally, this datasource identifies a saved query (WOWORKTYPE) linked to the object structure named MXAPIWORKTYPE. In the object structure application, you can view/manage this query. If you change the ‘Query Definition’, this will change the work type data that is made available to the Technician application and any other application or client API that is using this saved query.

    Query definition -

    Step 3: (Optional): You can also extend a saved query by adding a ‘where=’ clause in the datasource as shown below (instead of changing the query itself, which could be used by many applications). This will ‘append’ to the saved query.

    <maximo-datasource-override id="pmduewolistDS" saved-query="PMWOLIST" where="schedfinish>=&quot;&amp;SYSDAY&amp;&quot; and schedfinish<=&quot;&amp;SYSDAY&amp;+7D&quot;" mobile-qbe-filter="{{'status_maxvalue': '!=COMP,CAN,CLOSE,WAPPR'}}" offline-immediate-download="true"/>
    \ No newline at end of file +

    Step 3: (Optional): You can also extend a saved query by adding a ‘where=’ clause in the datasource as shown below (instead of changing the query itself, which could be used by many applications). This will ‘append’ to the saved query.

    <maximo-datasource-override id="pmduewolistDS" saved-query="PMWOLIST" where="schedfinish>=&quot;&amp;SYSDAY&amp;&quot; and schedfinish<=&quot;&amp;SYSDAY&amp;+7D&quot;" mobile-qbe-filter="{{'status_maxvalue': '!=COMP,CAN,CLOSE,WAPPR'}}" offline-immediate-download="true"/>
    \ No newline at end of file diff --git a/webpack-runtime-bd278d61742c401854fd.js b/webpack-runtime-1d3512344e5486f7d33b.js similarity index 97% rename from webpack-runtime-bd278d61742c401854fd.js rename to webpack-runtime-1d3512344e5486f7d33b.js index b23fa91..77eca26 100644 --- a/webpack-runtime-bd278d61742c401854fd.js +++ b/webpack-runtime-1d3512344e5486f7d33b.js @@ -1,2 +1,2 @@ -!function(){"use strict";var e,t,n,r,o,a,c,i={},u={};function s(e){var t=u[e];if(void 0!==t)return t.exports;var n=u[e]={exports:{}};return i[e].call(n.exports,n,n.exports,s),n.exports}s.m=i,e=[],s.O=function(t,n,r,o){if(!n){var a=1/0;for(f=0;f=o)&&Object.keys(s.O).every((function(e){return s.O[e](n[i])}))?n.splice(i--,1):(c=!1,o0&&e[f-1][2]>o;f--)e[f]=e[f-1];e[f]=[n,r,o]},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);s.r(o);var a={};t=t||[null,n({}),n([]),n(n)];for(var c=2&r&&e;"object"==typeof c&&!~t.indexOf(c);c=n(c))Object.getOwnPropertyNames(c).forEach((function(t){a[t]=function(){return e[t]}}));return a.default=function(){return e},s.d(o,a),o},s.d=function(e,t){for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce((function(t,n){return s.f[n](e,t),t}),[]))},s.u=function(e){return{130:"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx",156:"component---src-pages-simple-replace-date-attribute-mdx",174:"component---src-pages-complex-restrict-complete-status-mdx",228:"component---src-pages-simple-modify-default-queries-mdx",235:"component---src-pages-simple-default-record-data-options-mdx",309:"component---src-pages-complex-enable-wo-classification-mdx",453:"component---src-pages-complex-set-default-values-new-wo-mdx",513:"component---src-pages-simple-update-app-saved-query-mdx",527:"component---src-pages-simple-extended-lookup-map-mdx",532:"styles",547:"component---src-pages-complex-disable-delete-btn-error-tx-mdx",589:"component---src-pages-simple-create-wo-priority-lookup-mdx",749:"component---src-pages-overview-mdx",762:"component---src-pages-debug-ui-mdx",809:"component---src-pages-index-mdx",883:"component---src-pages-404-js"}[e]+"-"+{130:"d4b6f18a6375f5110967",156:"655340f77fb350a79ee8",174:"9bc75583cbfd7cc690da",228:"e262b7eaa22d81dcfd4c",235:"5e37acca4bd01cb7aacc",309:"049699786875d29b2902",453:"7066463c2fe0f05e1018",513:"506c6d231ffe8ba4a3fd",527:"38ffad5552e60f7f41c8",532:"b001161f4cdceb5876a9",547:"0c1598c89037560950b2",589:"bcf0c7f9d0efaff379c0",749:"05b8570fe702505fc3d7",762:"f0eb896595561e6a2638",809:"efee3e974d631789d067",883:"6f8044898a01bc7ebed0"}[e]+".js"},s.miniCssF=function(e){return"styles.f71526870662e4df33c8.css"},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="mas-playbook:",s.l=function(e,t,n,a){if(r[e])r[e].push(t);else{var c,i;if(void 0!==n)for(var u=document.getElementsByTagName("script"),f=0;f=o)&&Object.keys(s.O).every((function(e){return s.O[e](n[i])}))?n.splice(i--,1):(c=!1,o0&&e[f-1][2]>o;f--)e[f]=e[f-1];e[f]=[n,r,o]},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);s.r(o);var a={};t=t||[null,n({}),n([]),n(n)];for(var c=2&r&&e;"object"==typeof c&&!~t.indexOf(c);c=n(c))Object.getOwnPropertyNames(c).forEach((function(t){a[t]=function(){return e[t]}}));return a.default=function(){return e},s.d(o,a),o},s.d=function(e,t){for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce((function(t,n){return s.f[n](e,t),t}),[]))},s.u=function(e){return{130:"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx",156:"component---src-pages-simple-replace-date-attribute-mdx",174:"component---src-pages-complex-restrict-complete-status-mdx",228:"component---src-pages-simple-modify-default-queries-mdx",235:"component---src-pages-simple-default-record-data-options-mdx",309:"component---src-pages-complex-enable-wo-classification-mdx",453:"component---src-pages-complex-set-default-values-new-wo-mdx",513:"component---src-pages-simple-update-app-saved-query-mdx",527:"component---src-pages-simple-extended-lookup-map-mdx",532:"styles",547:"component---src-pages-complex-disable-delete-btn-error-tx-mdx",589:"component---src-pages-simple-create-wo-priority-lookup-mdx",749:"component---src-pages-overview-mdx",762:"component---src-pages-debug-ui-mdx",809:"component---src-pages-index-mdx",883:"component---src-pages-404-js"}[e]+"-"+{130:"d4b6f18a6375f5110967",156:"655340f77fb350a79ee8",174:"9bc75583cbfd7cc690da",228:"e262b7eaa22d81dcfd4c",235:"5e37acca4bd01cb7aacc",309:"049699786875d29b2902",453:"7066463c2fe0f05e1018",513:"506c6d231ffe8ba4a3fd",527:"38ffad5552e60f7f41c8",532:"b001161f4cdceb5876a9",547:"0c1598c89037560950b2",589:"bcf0c7f9d0efaff379c0",749:"db57767646ce2878c15d",762:"f0eb896595561e6a2638",809:"efee3e974d631789d067",883:"6f8044898a01bc7ebed0"}[e]+".js"},s.miniCssF=function(e){return"styles.f71526870662e4df33c8.css"},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="mas-playbook:",s.l=function(e,t,n,a){if(r[e])r[e].push(t);else{var c,i;if(void 0!==n)for(var u=document.getElementsByTagName("script"),f=0;f 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"mas-playbook:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"130\":\"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx\",\"156\":\"component---src-pages-simple-replace-date-attribute-mdx\",\"174\":\"component---src-pages-complex-restrict-complete-status-mdx\",\"228\":\"component---src-pages-simple-modify-default-queries-mdx\",\"235\":\"component---src-pages-simple-default-record-data-options-mdx\",\"309\":\"component---src-pages-complex-enable-wo-classification-mdx\",\"453\":\"component---src-pages-complex-set-default-values-new-wo-mdx\",\"513\":\"component---src-pages-simple-update-app-saved-query-mdx\",\"527\":\"component---src-pages-simple-extended-lookup-map-mdx\",\"532\":\"styles\",\"547\":\"component---src-pages-complex-disable-delete-btn-error-tx-mdx\",\"589\":\"component---src-pages-simple-create-wo-priority-lookup-mdx\",\"749\":\"component---src-pages-overview-mdx\",\"762\":\"component---src-pages-debug-ui-mdx\",\"809\":\"component---src-pages-index-mdx\",\"883\":\"component---src-pages-404-js\"}[chunkId] + \"-\" + {\"130\":\"d4b6f18a6375f5110967\",\"156\":\"655340f77fb350a79ee8\",\"174\":\"9bc75583cbfd7cc690da\",\"228\":\"e262b7eaa22d81dcfd4c\",\"235\":\"5e37acca4bd01cb7aacc\",\"309\":\"049699786875d29b2902\",\"453\":\"7066463c2fe0f05e1018\",\"513\":\"506c6d231ffe8ba4a3fd\",\"527\":\"38ffad5552e60f7f41c8\",\"532\":\"b001161f4cdceb5876a9\",\"547\":\"0c1598c89037560950b2\",\"589\":\"bcf0c7f9d0efaff379c0\",\"749\":\"05b8570fe702505fc3d7\",\"762\":\"f0eb896595561e6a2638\",\"809\":\"efee3e974d631789d067\",\"883\":\"6f8044898a01bc7ebed0\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"f71526870662e4df33c8\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/configuration-practices-documentation/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmas_playbook\"] = self[\"webpackChunkmas_playbook\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"webpack-runtime-1d3512344e5486f7d33b.js","mappings":"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","sources":["webpack://mas-playbook/webpack/runtime/chunk loaded","webpack://mas-playbook/webpack/runtime/create fake namespace object","webpack://mas-playbook/webpack/runtime/load script","webpack://mas-playbook/webpack/runtime/css loading","webpack://mas-playbook/webpack/bootstrap","webpack://mas-playbook/webpack/runtime/compat get default export","webpack://mas-playbook/webpack/runtime/define property getters","webpack://mas-playbook/webpack/runtime/ensure chunk","webpack://mas-playbook/webpack/runtime/get javascript chunk filename","webpack://mas-playbook/webpack/runtime/get mini-css chunk filename","webpack://mas-playbook/webpack/runtime/global","webpack://mas-playbook/webpack/runtime/hasOwnProperty shorthand","webpack://mas-playbook/webpack/runtime/make namespace object","webpack://mas-playbook/webpack/runtime/publicPath","webpack://mas-playbook/webpack/runtime/jsonp chunk loading"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"mas-playbook:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"130\":\"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx\",\"156\":\"component---src-pages-simple-replace-date-attribute-mdx\",\"174\":\"component---src-pages-complex-restrict-complete-status-mdx\",\"228\":\"component---src-pages-simple-modify-default-queries-mdx\",\"235\":\"component---src-pages-simple-default-record-data-options-mdx\",\"309\":\"component---src-pages-complex-enable-wo-classification-mdx\",\"453\":\"component---src-pages-complex-set-default-values-new-wo-mdx\",\"513\":\"component---src-pages-simple-update-app-saved-query-mdx\",\"527\":\"component---src-pages-simple-extended-lookup-map-mdx\",\"532\":\"styles\",\"547\":\"component---src-pages-complex-disable-delete-btn-error-tx-mdx\",\"589\":\"component---src-pages-simple-create-wo-priority-lookup-mdx\",\"749\":\"component---src-pages-overview-mdx\",\"762\":\"component---src-pages-debug-ui-mdx\",\"809\":\"component---src-pages-index-mdx\",\"883\":\"component---src-pages-404-js\"}[chunkId] + \"-\" + {\"130\":\"d4b6f18a6375f5110967\",\"156\":\"655340f77fb350a79ee8\",\"174\":\"9bc75583cbfd7cc690da\",\"228\":\"e262b7eaa22d81dcfd4c\",\"235\":\"5e37acca4bd01cb7aacc\",\"309\":\"049699786875d29b2902\",\"453\":\"7066463c2fe0f05e1018\",\"513\":\"506c6d231ffe8ba4a3fd\",\"527\":\"38ffad5552e60f7f41c8\",\"532\":\"b001161f4cdceb5876a9\",\"547\":\"0c1598c89037560950b2\",\"589\":\"bcf0c7f9d0efaff379c0\",\"749\":\"db57767646ce2878c15d\",\"762\":\"f0eb896595561e6a2638\",\"809\":\"efee3e974d631789d067\",\"883\":\"6f8044898a01bc7ebed0\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"f71526870662e4df33c8\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/configuration-practices-documentation/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmas_playbook\"] = self[\"webpackChunkmas_playbook\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.stats.json b/webpack.stats.json index 64d6cd6..94122bb 100644 --- a/webpack.stats.json +++ b/webpack.stats.json @@ -1 +1 @@ -{"name":"build-javascript","namedChunkGroups":{"polyfill":{"name":"polyfill","assets":[{"name":"webpack-runtime-bd278d61742c401854fd.js","size":6049},{"name":"polyfill-9a192f2a2d41e90f300c.js","size":85019}],"filteredAssets":0,"assetsSize":91068,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":232338},"app":{"name":"app","assets":[{"name":"webpack-runtime-bd278d61742c401854fd.js","size":6049},{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"framework-e4c63479cd1ee2588460.js","size":128695},{"name":"cfc6b023-d7418e516f2d514a7611.js","size":623},{"name":"43a99af2-9877027d301338bc80b5.js","size":658},{"name":"fc20e1c4-4d7c8336ecbe3f337d38.js","size":4785},{"name":"c2ec1d10-ec5c461af9f30d22131f.js","size":653},{"name":"8f19d780-41fec1930d9513f06d26.js","size":2977},{"name":"5ca00d41-c5e082c43269fc8f6f3a.js","size":554},{"name":"6e92790c-77eed0c4c19f315f701c.js","size":625},{"name":"5f6bb6fb-57db9c0fb6275abc8fab.js","size":611},{"name":"ebd65826-ecab064ae3758b84af77.js","size":2677},{"name":"23420901-cfc7904f5da8dce24f55.js","size":653},{"name":"262b3caa-5fcf1086e7cc68fa8f43.js","size":1252},{"name":"0e6451da-dda8e55812a1842e8957.js","size":634},{"name":"4119064d-7aca6ac5a67a34879dca.js","size":1931},{"name":"e51a3977-d72daca29b23e321d529.js","size":1449},{"name":"439716bf-56e2acc0eaee27ee0b25.js","size":3888},{"name":"2fb713ed-2f6aaa5416c583b72b04.js","size":1566},{"name":"1c920f04-2bda4ddf8bc7022c3222.js","size":573},{"name":"app-c8bbcaf5b033ffcef894.js","size":575868}],"filteredAssets":0,"assetsSize":1420099,"filteredAuxiliaryAssets":26,"auxiliaryAssetsSize":7453297},"component---src-pages-404-js":{"name":"component---src-pages-404-js","assets":[{"name":"component---src-pages-404-js-6f8044898a01bc7ebed0.js","size":492}],"filteredAssets":0,"assetsSize":492,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":820},"component---src-pages-complex-disable-delete-btn-error-tx-mdx":{"name":"component---src-pages-complex-disable-delete-btn-error-tx-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-complex-disable-delete-btn-error-tx-mdx-0c1598c89037560950b2.js","size":12386}],"filteredAssets":0,"assetsSize":695764,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":185342},"component---src-pages-complex-enable-wo-classification-mdx":{"name":"component---src-pages-complex-enable-wo-classification-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-complex-enable-wo-classification-mdx-049699786875d29b2902.js","size":13433}],"filteredAssets":0,"assetsSize":696811,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":186366},"component---src-pages-complex-restrict-complete-status-mdx":{"name":"component---src-pages-complex-restrict-complete-status-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-complex-restrict-complete-status-mdx-9bc75583cbfd7cc690da.js","size":12011}],"filteredAssets":0,"assetsSize":695389,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":182927},"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx":{"name":"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx-d4b6f18a6375f5110967.js","size":6349}],"filteredAssets":0,"assetsSize":689727,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":176775},"component---src-pages-complex-set-default-values-new-wo-mdx":{"name":"component---src-pages-complex-set-default-values-new-wo-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-complex-set-default-values-new-wo-mdx-7066463c2fe0f05e1018.js","size":5973}],"filteredAssets":0,"assetsSize":689351,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":176450},"component---src-pages-debug-ui-mdx":{"name":"component---src-pages-debug-ui-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-debug-ui-mdx-f0eb896595561e6a2638.js","size":13835}],"filteredAssets":0,"assetsSize":697213,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":188586},"component---src-pages-index-mdx":{"name":"component---src-pages-index-mdx","assets":[{"name":"component---src-pages-index-mdx-efee3e974d631789d067.js","size":546}],"filteredAssets":0,"assetsSize":546,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":1137},"component---src-pages-overview-mdx":{"name":"component---src-pages-overview-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-overview-mdx-05b8570fe702505fc3d7.js","size":8411}],"filteredAssets":0,"assetsSize":691789,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":179087},"component---src-pages-simple-create-wo-priority-lookup-mdx":{"name":"component---src-pages-simple-create-wo-priority-lookup-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-create-wo-priority-lookup-mdx-bcf0c7f9d0efaff379c0.js","size":8984}],"filteredAssets":0,"assetsSize":692362,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":180646},"component---src-pages-simple-default-record-data-options-mdx":{"name":"component---src-pages-simple-default-record-data-options-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-default-record-data-options-mdx-5e37acca4bd01cb7aacc.js","size":7898}],"filteredAssets":0,"assetsSize":691276,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":179535},"component---src-pages-simple-extended-lookup-map-mdx":{"name":"component---src-pages-simple-extended-lookup-map-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-extended-lookup-map-mdx-38ffad5552e60f7f41c8.js","size":5813}],"filteredAssets":0,"assetsSize":689191,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":176279},"component---src-pages-simple-modify-default-queries-mdx":{"name":"component---src-pages-simple-modify-default-queries-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-modify-default-queries-mdx-e262b7eaa22d81dcfd4c.js","size":8395}],"filteredAssets":0,"assetsSize":691773,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":180109},"component---src-pages-simple-replace-date-attribute-mdx":{"name":"component---src-pages-simple-replace-date-attribute-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-replace-date-attribute-mdx-655340f77fb350a79ee8.js","size":6521}],"filteredAssets":0,"assetsSize":689899,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":177065},"component---src-pages-simple-update-app-saved-query-mdx":{"name":"component---src-pages-simple-update-app-saved-query-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-update-app-saved-query-mdx-506c6d231ffe8ba4a3fd.js","size":8314}],"filteredAssets":0,"assetsSize":691692,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":179853}},"assetsByChunkName":{"polyfill":["webpack-runtime-bd278d61742c401854fd.js","polyfill-9a192f2a2d41e90f300c.js"],"app":["webpack-runtime-bd278d61742c401854fd.js","styles.f71526870662e4df33c8.css","framework-e4c63479cd1ee2588460.js","cfc6b023-d7418e516f2d514a7611.js","43a99af2-9877027d301338bc80b5.js","fc20e1c4-4d7c8336ecbe3f337d38.js","c2ec1d10-ec5c461af9f30d22131f.js","8f19d780-41fec1930d9513f06d26.js","5ca00d41-c5e082c43269fc8f6f3a.js","6e92790c-77eed0c4c19f315f701c.js","5f6bb6fb-57db9c0fb6275abc8fab.js","ebd65826-ecab064ae3758b84af77.js","23420901-cfc7904f5da8dce24f55.js","262b3caa-5fcf1086e7cc68fa8f43.js","0e6451da-dda8e55812a1842e8957.js","4119064d-7aca6ac5a67a34879dca.js","e51a3977-d72daca29b23e321d529.js","439716bf-56e2acc0eaee27ee0b25.js","2fb713ed-2f6aaa5416c583b72b04.js","1c920f04-2bda4ddf8bc7022c3222.js","app-c8bbcaf5b033ffcef894.js"],"component---src-pages-404-js":["component---src-pages-404-js-6f8044898a01bc7ebed0.js"],"component---src-pages-complex-disable-delete-btn-error-tx-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-complex-disable-delete-btn-error-tx-mdx-0c1598c89037560950b2.js"],"component---src-pages-complex-enable-wo-classification-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-complex-enable-wo-classification-mdx-049699786875d29b2902.js"],"component---src-pages-complex-restrict-complete-status-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-complex-restrict-complete-status-mdx-9bc75583cbfd7cc690da.js"],"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx-d4b6f18a6375f5110967.js"],"component---src-pages-complex-set-default-values-new-wo-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-complex-set-default-values-new-wo-mdx-7066463c2fe0f05e1018.js"],"component---src-pages-debug-ui-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-debug-ui-mdx-f0eb896595561e6a2638.js"],"component---src-pages-index-mdx":["component---src-pages-index-mdx-efee3e974d631789d067.js"],"component---src-pages-overview-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-overview-mdx-05b8570fe702505fc3d7.js"],"component---src-pages-simple-create-wo-priority-lookup-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-create-wo-priority-lookup-mdx-bcf0c7f9d0efaff379c0.js"],"component---src-pages-simple-default-record-data-options-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-default-record-data-options-mdx-5e37acca4bd01cb7aacc.js"],"component---src-pages-simple-extended-lookup-map-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-extended-lookup-map-mdx-38ffad5552e60f7f41c8.js"],"component---src-pages-simple-modify-default-queries-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-modify-default-queries-mdx-e262b7eaa22d81dcfd4c.js"],"component---src-pages-simple-replace-date-attribute-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-replace-date-attribute-mdx-655340f77fb350a79ee8.js"],"component---src-pages-simple-update-app-saved-query-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-update-app-saved-query-mdx-506c6d231ffe8ba4a3fd.js"]},"childAssetsByChunkName":{}} \ No newline at end of file +{"name":"build-javascript","namedChunkGroups":{"polyfill":{"name":"polyfill","assets":[{"name":"webpack-runtime-1d3512344e5486f7d33b.js","size":6049},{"name":"polyfill-9a192f2a2d41e90f300c.js","size":85019}],"filteredAssets":0,"assetsSize":91068,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":232338},"app":{"name":"app","assets":[{"name":"webpack-runtime-1d3512344e5486f7d33b.js","size":6049},{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"framework-e4c63479cd1ee2588460.js","size":128695},{"name":"cfc6b023-d7418e516f2d514a7611.js","size":623},{"name":"43a99af2-9877027d301338bc80b5.js","size":658},{"name":"fc20e1c4-4d7c8336ecbe3f337d38.js","size":4785},{"name":"c2ec1d10-ec5c461af9f30d22131f.js","size":653},{"name":"8f19d780-41fec1930d9513f06d26.js","size":2977},{"name":"5ca00d41-c5e082c43269fc8f6f3a.js","size":554},{"name":"6e92790c-77eed0c4c19f315f701c.js","size":625},{"name":"5f6bb6fb-57db9c0fb6275abc8fab.js","size":611},{"name":"ebd65826-ecab064ae3758b84af77.js","size":2677},{"name":"23420901-cfc7904f5da8dce24f55.js","size":653},{"name":"262b3caa-5fcf1086e7cc68fa8f43.js","size":1252},{"name":"0e6451da-dda8e55812a1842e8957.js","size":634},{"name":"4119064d-7aca6ac5a67a34879dca.js","size":1931},{"name":"e51a3977-d72daca29b23e321d529.js","size":1449},{"name":"439716bf-56e2acc0eaee27ee0b25.js","size":3888},{"name":"2fb713ed-2f6aaa5416c583b72b04.js","size":1566},{"name":"1c920f04-2bda4ddf8bc7022c3222.js","size":573},{"name":"app-c8bbcaf5b033ffcef894.js","size":575868}],"filteredAssets":0,"assetsSize":1420099,"filteredAuxiliaryAssets":26,"auxiliaryAssetsSize":7453297},"component---src-pages-404-js":{"name":"component---src-pages-404-js","assets":[{"name":"component---src-pages-404-js-6f8044898a01bc7ebed0.js","size":492}],"filteredAssets":0,"assetsSize":492,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":820},"component---src-pages-complex-disable-delete-btn-error-tx-mdx":{"name":"component---src-pages-complex-disable-delete-btn-error-tx-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-complex-disable-delete-btn-error-tx-mdx-0c1598c89037560950b2.js","size":12386}],"filteredAssets":0,"assetsSize":695764,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":185342},"component---src-pages-complex-enable-wo-classification-mdx":{"name":"component---src-pages-complex-enable-wo-classification-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-complex-enable-wo-classification-mdx-049699786875d29b2902.js","size":13433}],"filteredAssets":0,"assetsSize":696811,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":186366},"component---src-pages-complex-restrict-complete-status-mdx":{"name":"component---src-pages-complex-restrict-complete-status-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-complex-restrict-complete-status-mdx-9bc75583cbfd7cc690da.js","size":12011}],"filteredAssets":0,"assetsSize":695389,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":182927},"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx":{"name":"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx-d4b6f18a6375f5110967.js","size":6349}],"filteredAssets":0,"assetsSize":689727,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":176775},"component---src-pages-complex-set-default-values-new-wo-mdx":{"name":"component---src-pages-complex-set-default-values-new-wo-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-complex-set-default-values-new-wo-mdx-7066463c2fe0f05e1018.js","size":5973}],"filteredAssets":0,"assetsSize":689351,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":176450},"component---src-pages-debug-ui-mdx":{"name":"component---src-pages-debug-ui-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-debug-ui-mdx-f0eb896595561e6a2638.js","size":13835}],"filteredAssets":0,"assetsSize":697213,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":188586},"component---src-pages-index-mdx":{"name":"component---src-pages-index-mdx","assets":[{"name":"component---src-pages-index-mdx-efee3e974d631789d067.js","size":546}],"filteredAssets":0,"assetsSize":546,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":1137},"component---src-pages-overview-mdx":{"name":"component---src-pages-overview-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-overview-mdx-db57767646ce2878c15d.js","size":8692}],"filteredAssets":0,"assetsSize":692070,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":179369},"component---src-pages-simple-create-wo-priority-lookup-mdx":{"name":"component---src-pages-simple-create-wo-priority-lookup-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-create-wo-priority-lookup-mdx-bcf0c7f9d0efaff379c0.js","size":8984}],"filteredAssets":0,"assetsSize":692362,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":180646},"component---src-pages-simple-default-record-data-options-mdx":{"name":"component---src-pages-simple-default-record-data-options-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-default-record-data-options-mdx-5e37acca4bd01cb7aacc.js","size":7898}],"filteredAssets":0,"assetsSize":691276,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":179535},"component---src-pages-simple-extended-lookup-map-mdx":{"name":"component---src-pages-simple-extended-lookup-map-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-extended-lookup-map-mdx-38ffad5552e60f7f41c8.js","size":5813}],"filteredAssets":0,"assetsSize":689191,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":176279},"component---src-pages-simple-modify-default-queries-mdx":{"name":"component---src-pages-simple-modify-default-queries-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-modify-default-queries-mdx-e262b7eaa22d81dcfd4c.js","size":8395}],"filteredAssets":0,"assetsSize":691773,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":180109},"component---src-pages-simple-replace-date-attribute-mdx":{"name":"component---src-pages-simple-replace-date-attribute-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-replace-date-attribute-mdx-655340f77fb350a79ee8.js","size":6521}],"filteredAssets":0,"assetsSize":689899,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":177065},"component---src-pages-simple-update-app-saved-query-mdx":{"name":"component---src-pages-simple-update-app-saved-query-mdx","assets":[{"name":"styles.f71526870662e4df33c8.css","size":683378},{"name":"component---src-pages-simple-update-app-saved-query-mdx-506c6d231ffe8ba4a3fd.js","size":8314}],"filteredAssets":0,"assetsSize":691692,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":179853}},"assetsByChunkName":{"polyfill":["webpack-runtime-1d3512344e5486f7d33b.js","polyfill-9a192f2a2d41e90f300c.js"],"app":["webpack-runtime-1d3512344e5486f7d33b.js","styles.f71526870662e4df33c8.css","framework-e4c63479cd1ee2588460.js","cfc6b023-d7418e516f2d514a7611.js","43a99af2-9877027d301338bc80b5.js","fc20e1c4-4d7c8336ecbe3f337d38.js","c2ec1d10-ec5c461af9f30d22131f.js","8f19d780-41fec1930d9513f06d26.js","5ca00d41-c5e082c43269fc8f6f3a.js","6e92790c-77eed0c4c19f315f701c.js","5f6bb6fb-57db9c0fb6275abc8fab.js","ebd65826-ecab064ae3758b84af77.js","23420901-cfc7904f5da8dce24f55.js","262b3caa-5fcf1086e7cc68fa8f43.js","0e6451da-dda8e55812a1842e8957.js","4119064d-7aca6ac5a67a34879dca.js","e51a3977-d72daca29b23e321d529.js","439716bf-56e2acc0eaee27ee0b25.js","2fb713ed-2f6aaa5416c583b72b04.js","1c920f04-2bda4ddf8bc7022c3222.js","app-c8bbcaf5b033ffcef894.js"],"component---src-pages-404-js":["component---src-pages-404-js-6f8044898a01bc7ebed0.js"],"component---src-pages-complex-disable-delete-btn-error-tx-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-complex-disable-delete-btn-error-tx-mdx-0c1598c89037560950b2.js"],"component---src-pages-complex-enable-wo-classification-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-complex-enable-wo-classification-mdx-049699786875d29b2902.js"],"component---src-pages-complex-restrict-complete-status-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-complex-restrict-complete-status-mdx-9bc75583cbfd7cc690da.js"],"component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-complex-restrict-wo-priority-based-on-work-type-mdx-d4b6f18a6375f5110967.js"],"component---src-pages-complex-set-default-values-new-wo-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-complex-set-default-values-new-wo-mdx-7066463c2fe0f05e1018.js"],"component---src-pages-debug-ui-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-debug-ui-mdx-f0eb896595561e6a2638.js"],"component---src-pages-index-mdx":["component---src-pages-index-mdx-efee3e974d631789d067.js"],"component---src-pages-overview-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-overview-mdx-db57767646ce2878c15d.js"],"component---src-pages-simple-create-wo-priority-lookup-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-create-wo-priority-lookup-mdx-bcf0c7f9d0efaff379c0.js"],"component---src-pages-simple-default-record-data-options-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-default-record-data-options-mdx-5e37acca4bd01cb7aacc.js"],"component---src-pages-simple-extended-lookup-map-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-extended-lookup-map-mdx-38ffad5552e60f7f41c8.js"],"component---src-pages-simple-modify-default-queries-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-modify-default-queries-mdx-e262b7eaa22d81dcfd4c.js"],"component---src-pages-simple-replace-date-attribute-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-replace-date-attribute-mdx-655340f77fb350a79ee8.js"],"component---src-pages-simple-update-app-saved-query-mdx":["styles.f71526870662e4df33c8.css","component---src-pages-simple-update-app-saved-query-mdx-506c6d231ffe8ba4a3fd.js"]},"childAssetsByChunkName":{}} \ No newline at end of file