Looks like they are importing a shared slider. Not sure how to do that in AppStudio.
This mashes all the layouts, events, DataViews, rules etc into the same App from a AppStudio user perspective. Nearly impossible to untangle the events etc in AppStudio to see how to replicate shared app reuse.
Here is just the init events json, a small portion of what that slider is doing.
MetaUI\Shared\imports\lib\SelectSerialNumbers\events\Initialization.events.jsonc
{
"$schema": "https://schemas.developer.epicor.com/schemas/v5.0/events.json",
"contentVersion": "5.0",
"imports": [],
"events": [
{
"id": "SelectSerial_AfterInitialize",
"actions": [
{
"type": "dataview-filter-set",
"param": {
"dataview": "SerialNumberSelection",
"filter": ""
}
},
{
"type": "data-clear",
"param": {
"type": "table",
"value": "SerialNumberSelection"
}
},
{
"type": "event-column-disable",
"dataTable": "snf"
},
{
"type": "row-update",
"param": [
{
"columns": [
{
"epBinding": "TransView.SkipRowSelectedUpdate",
"value": "{sysVariable.SkipRowSelectedUpdate}"
},
{
"epBinding": "TransView.ClearSelectSerialNumbersParams",
"value": "{sysVariable.ClearSelectSerialNumbersParams}"
},
{
"epBinding": "TransView.SelectedSerialNumbersViewName",
"value": "{sysVariable.SelectedSerialNumbersViewName}"
},
{
"epBinding": "snf.Company",
"value": "{Constant.CompanyID}"
},
{
"epBinding": "snf.ScanSerialNumber",
"value": ""
},
{
"epBinding": "snf.StartSerialNumber",
"value": ""
},
{
"epBinding": "snf.EndSerialNumber",
"value": ""
},
{
"epBinding": "snf.AddSerialNumber",
"value": ""
},
{
"epBinding": "snf.QtyCreated",
"value": 0
},
{
"epBinding": "snf.StartAtQty",
"value": ""
},
{
"epBinding": "snf.CreateConditon",
"value": ""
},
{
"epBinding": "snf.QtySelected",
"value": 0
},
{
"epBinding": "snf.SysRowID",
"value": "00000000-0000-0000-0000-000000000000"
},
{
"epBinding": "snf.ShowSelectedOnly",
"value": false
},
{
"epBinding": "snf.RowMod",
"value": "A"
}
]
}
]
},
{
"type": "condition",
"param": {
"expression": "'{TransView.SelectedSerialNumbersViewName}' === '' || '{TransView.SelectedSerialNumbersViewName}' === 'undefined'",
"onSuccess": [
{
"type": "row-update",
"param": [
{
"columns": [
{
"epBinding": "TransView.SelectedSerialNumbersViewName",
"value": "SelectedSerialNumbers"
}
]
}
]
}
]
}
},
{
"type": "event-next",
"value": "SelectSerial_SerialNumberSelectionFilter"
},
{
"type": "rest-erp",
"param": {
"svc": "Erp.BO.SelectedSerialNumbersSvc",
"svcPath": "GetSerialNumFormat",
"requestMethod": "POST",
"erpRequestMethod": "ErpPostWithDataViewProcessing",
"methodParameters": [
{
"field": "partNum",
"value": "{SelectSerialNumbersParams.partNum}"
},
{
"field": "xrefPartNum",
"value": "{SelectSerialNumbersParams.xrefPartNum}"
},
{
"field": "xrefPartType",
"value": "{SelectSerialNumbersParams.xrefPartType}"
},
{
"field": "xrefCustNum",
"value": "{SelectSerialNumbersParams.xrefCustNum}"
},
{
"field": "plantID",
"value": "{SelectSerialNumbersParams.plant}"
}
],
"erpRestPostArgs": {
"requestParamArgs": [
{
"viewName": "SNFormat",
"paramName": "SNFormat"
}
]
}
}
},
{
"type": "condition",
"param": {
"expression": "'{SNFormat.SNBaseDataType}' === 'CHARACTER' || ('{SNFormat.SNBaseDataType}' === 'MASK' && {SNFormat.SerialMaskMaskType} === 0)",
"onSuccess": [
{
"type": "row-update",
"param": [
{
"columns": [
{
"epBinding": "snf.CreateConditon",
"value": "NEW"
}
]
}
]
}
],
"onFailure": [
{
"type": "row-update",
"param": [
{
"columns": [
{
"epBinding": "snf.CreateConditon",
"value": "RANGE"
}
]
}
]
}
]
}
},
{
"type": "event-column-enable",
"dataTable": "snf"
},
{
"type": "event-column-disable",
"dataTable": "SerialNumberSelection"
},
{
"type": "event-next",
"value": "SelectSerial_CopySelected"
},
{
"type": "event-next",
"value": "SelectSerial_SetSelectedCount"
},
{
"type": "event-column-enable",
"dataTable": "SerialNumberSelection"
},
{
"type": "dataview-filter-set",
"param": {
"dataview": "SerialNumberSelection",
"filter": "{TransView.SelectSerial_SerialNumberSelectionFilter}"
}
},
{
"type": "event-next",
"value": "SelectSerial_GetNextSerialNumber"
}
]
},
{
"id": "SelectSerial_CopySelected",
"actions": [
{
"type": "dataview-condition",
"param": {
"expression": "Company = '{Constant.CompanyID}'",
"dataview": "{TransView.SelectedSerialNumbersViewName}",
"result": "SelectedSerialNumbersCopy_matches",
"iterativeEvent": "SelectSerial_CopySelectedSerialNumbers"
}
},
{
"type": "data-commit",
"param": {
"dataview": "SerialNumberSelection"
}
}
]
},
{
"id": "SelectSerial_SerialNumberSelectionFilter",
"description": "This event can be overridden if a UI needs to filter on something else i.e. TimeEntry",
"actions": [
{
"type": "row-update",
"param": [
{
"columns": [
{
"epBinding": "TransView.SelectSerial_SerialNumberSelectionFilter",
"value": "SourceRowID = '{SelectSerialNumbersParams.sourceRowID}' and PartNum = '{SelectSerialNumbersParams.partNum}' and AttributeSetID = {SelectSerialNumbersParams.attributeSetID}"
}
]
}
]
}
]
},
{
"id": "SelectSerial_CopySelectedSerialNumbers",
"actions": [
{
"type": "row-add",
"param": {
"dataview": "SerialNumberSelection",
"values": {
"Company": "{SelectedSerialNumbersCopy_matches.Company}",
"Deselected": "{SelectedSerialNumbersCopy_matches.Deselected}",
"KBLbrAction": "{SelectedSerialNumbersCopy_matches.KBLbrAction}",
"KBLbrActionDesc": "{SelectedSerialNumbersCopy_matches.KBLbrActionDesc}",
"KitWhseList": "{SelectedSerialNumbersCopy_matches.KitWhseList}",
"NotSavedToDB": "{SelectedSerialNumbersCopy_matches.NotSavedToDB}",
"PartNum": "{SelectedSerialNumbersCopy_matches.PartNum}",
"AttributeSetID": "{SelectedSerialNumbersCopy_matches.AttributeSetID}",
"PassedInspection": "{SelectedSerialNumbersCopy_matches.PassedInspection}",
"poLinkValues": "{SelectedSerialNumbersCopy_matches.poLinkValues}",
"PreDeselected": "{SelectedSerialNumbersCopy_matches.PreDeselected}",
"PreventDeselect": "{SelectedSerialNumbersCopy_matches.PreventDeselect}",
"RawSerialNum": "{SelectedSerialNumbersCopy_matches.RawSerialNum}",
"ReasonCodeDesc": "{SelectedSerialNumbersCopy_matches.ReasonCodeDesc}",
"ReasonCodeType": "{SelectedSerialNumbersCopy_matches.ReasonCodeType}",
"Reference": "{SelectedSerialNumbersCopy_matches.Reference}",
"RowSelected": "{SelectedSerialNumbersCopy_matches.RowSelected}",
"RowMod": "{SelectedSerialNumbersCopy_matches.RowMod}",
"Scrapped": "{SelectedSerialNumbersCopy_matches.Scrapped}",
"ScrappedReasonCode": "{SelectedSerialNumbersCopy_matches.ScrappedReasonCode}",
"SerialNumber": "{SelectedSerialNumbersCopy_matches.SerialNumber}",
"SNBaseNumber": "{SelectedSerialNumbersCopy_matches.SNBaseNumber}",
"SNMask": "{SelectedSerialNumbersCopy_matches.SNMask}",
"SNPrefix": "{SelectedSerialNumbersCopy_matches.SNPrefix}",
"SourceRowID": "{SelectedSerialNumbersCopy_matches.SourceRowID}",
"SysRowID": "{SelectedSerialNumbersCopy_matches.SysRowID}",
"TransType": "{SelectedSerialNumbersCopy_matches.TransType}",
"Voided": "{SelectedSerialNumbersCopy_matches.Voided}",
"XRefPartNum": "{SelectedSerialNumbersCopy_matches.XRefPartNum}",
"XRefPartType": "{SelectedSerialNumbersCopy_matches.XRefPartType}"
}
}
},
{
"type": "condition",
"param": {
"expression": "'{TransView.SkipRowSelectedUpdate}' === 'false'",
"onSuccess": [
{
"type": "condition",
"param": {
"expression": "({SelectedSerialNumbersCopy_matches.Deselected} === false && {SelectedSerialNumbersCopy_matches.NotSavedToDB} === false) || {SelectedSerialNumbersCopy_matches.RowSelected} === true",
"onSuccess": [
{
"type": "row-update",
"param": [
{
"columns": [
{
"epBinding": "SerialNumberSelection.RowSelected",
"value": true
}
]
}
]
}
]
}
}
]
}
}
]
}
]
}
Ps- @josecgomez is iit possible to get better json highlighting on here?