Skip to main content
Version: v5.0

Index entry point

index.html#

The index.html file in app/public provides the basic HTML container to mount the React application and references external scripts and style sheets. The following <div/> element is the ReferenceApp placeholder:


<body>  ...  <div id="app"></div></body>

index.jsx#

index.jsx is the entry point and top-level file for the ReferenceApp React app. As well as rendering the root component, index.jsx renders the IpaMainLayout ipa-core component.

IpaMainLayout ipa-core component#

IpaMainLayout.jsx is a component called from the ipa-core library that wraps the following ipa-core components:

  • Layout.jsx component: Renders a template main layout for your app and handles transitions
  • AppProvider.jsx component: A custom provider component that wraps your app to make data and functionality available throughout the entire component tree, such as your app's session, configuration, authorization, and error handling

Use of IpaMainLayout in index.jsx#

Within a Provider wrapper, index.jsx renders the IpaMainLayout ipa-core component and passes the following props:

  • ipaConfig: Passes the ipaConfig exported from ipaConfig.js.

    import ipaConfig from "../ipaCore/ipaConfig";
    ...
    render(  <Provider>    <IpaMainLayout      ipaConfig={ipaConfig}      onConfigLoad={onConfigLoad}    />  </Provider>,  ...);
    
  • onConfigLoad: A callback function that triggers when the config loads. The passed function sets the endPointConfig endpoint configration from app/public/config.js in the session, gets the current project and current models, and sets the style properties.

    import ipaConfig from "../ipaCore/ipaConfig";
    const onConfigLoad = async (store, userConfig, AppContext) => {  ...  //sets styles  setStyleProperties(ipaConfig);  //sets config endPointConfig from app/public/config.js as the session config  IafSession.setConfig(endPointConfig);  //checks if model is valid  const isValidModel = (model) => {    ...  };
      let selectedModel = {};  //gets current project  let selectedProj = IafProj.getCurrent();  //loads the model  let models = null;  models = await IafProj.getModels(selectedProj).catch((error) => {    console.log(error), (models = null);  });  ...}
    ...
    render(  <Provider>    <IpaMainLayout      ipaConfig={ipaConfig}      onConfigLoad={onConfigLoad}    />  </Provider>,  ...);
    

ipaConfig#

The ipaConfig is exported from app/ipaCore/ipaConfig.js and contains configurations for the following:

  • App name
  • App id
  • Config user type, in this case a digital twin platform application: ipa-dt
  • Reference app config details such as the branding and logo
  • Components