The JS mock services carried MPE_TABLES.pre_edit_hook / post_edit_hook values but never acted on them, so a table configured with hooks behaved differently in the mock than in production. Add mockHookSource() to dcMockUtils (resolving a hook program name to the source of its .js counterpart on the Drive) and run the hook where the SAS backend does: - editors/getdata runs the pre-edit hook after filtering, letting it reassign visibleRows / visibleColumns (the work.OUT contract) - so an empty mirror can display the live rows of the table it points at - editors/stagedata and editors/loadfile run the post-edit hook before the MPE_SUBMIT row is written, letting it reassign libref / dsn (the call symputx contract) - so a changeset submitted against a mirror is raised against the real table Seed a demo pair in makedata (TESTDATA.DEMO_ORDERS plus an empty TESTDATA.DEMO_MIRROR with both hooks) and cover it with a Cypress spec.
6151 lines
129 KiB
JavaScript
6151 lines
129 KiB
JavaScript
const nodePath = require('path')
|
|
|
|
// Fixed libref for the mock environment
|
|
const dcLibref = 'DC_JSLIB'
|
|
|
|
// Read URL params (provided as module-scope consts by the JS runtime)
|
|
let adminGroup = 'AllUsers'
|
|
|
|
if (typeof admin !== 'undefined') adminGroup = admin
|
|
|
|
// Derive the SASjs Drive root from weboutPath
|
|
// weboutPath is <root>/sessions/<id>/webout.txt
|
|
// Drive is at <root>/drive
|
|
const sasjsRoot = nodePath.resolve(weboutPath, '..', '..', '..')
|
|
const driveRoot = nodePath.resolve(sasjsRoot, 'drive')
|
|
const appLoc = nodePath.join(..._program.split('services')[0].split('/'))
|
|
|
|
// DC data lives under <drive>/files/<appLoc>/data/<DCLIB>/ - one JSON file per table
|
|
// This is browsable in SASjs Studio and persists across service redeployes
|
|
const dataDir = nodePath.resolve(driveRoot, 'files', appLoc, 'data', dcLibref)
|
|
|
|
// Ensure the data directory exists (create parent dirs as needed)
|
|
if (!fs.existsSync(dataDir)) {
|
|
fs.mkdirSync(dataDir, { recursive: true })
|
|
}
|
|
|
|
// Build the DC database - all MPE tables with seed data
|
|
// Column definitions follow mpe_makedatamodel.sas structure
|
|
const tables = {
|
|
MPE_ALERTS: [],
|
|
MPE_AUDIT: [],
|
|
MPE_COLUMN_LEVEL_SECURITY: [
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
CLS_SCOPE: 'EDIT',
|
|
CLS_GROUP: 'AllUsers',
|
|
CLS_LIBREF: dcLibref,
|
|
CLS_TABLE: 'MPE_LOCKANYTABLE',
|
|
CLS_VARIABLE_NM: 'LOCK_STATUS_CD',
|
|
CLS_ACTIVE: 1,
|
|
CLS_HIDE: 0
|
|
}
|
|
],
|
|
MPE_CONFIG: [
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC',
|
|
var_name: 'DC_EMAIL_ALERTS',
|
|
var_value: 'NO',
|
|
var_active: 1,
|
|
var_desc: 'YES or NO to enable email alerts.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC',
|
|
var_name: 'DC_VIEWLIB_CHECK',
|
|
var_value: 'NO',
|
|
var_active: 1,
|
|
var_desc:
|
|
'Set to YES to enable library validity checking in viewLibs service.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC',
|
|
var_name: 'DC_MACROS',
|
|
var_value: dataDir + '/dc_macros',
|
|
var_active: 1,
|
|
var_desc: 'Location of underlying macros - EUC feature.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC',
|
|
var_name: 'DC_MAXOBS_WEBEDIT',
|
|
var_value: '100',
|
|
var_active: 1,
|
|
var_desc: 'Maximum observations for editing in the EDIT screen.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC',
|
|
var_name: 'DC_REQUEST_LOGS',
|
|
var_value: 'YES',
|
|
var_active: 1,
|
|
var_desc:
|
|
'Setting to NO will prevent each request being logged to MPE_REQUESTS.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC',
|
|
var_name: 'DC_RESTRICT_VIEWER',
|
|
var_value: 'NO',
|
|
var_active: 1,
|
|
var_desc: 'YES will restrict the viewer to tables in MPE_SECURITY.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC',
|
|
var_name: 'DC_RESTRICT_EDITRECORD',
|
|
var_value: 'NO',
|
|
var_active: 1,
|
|
var_desc: 'YES will prevent the EDIT RECORD dialog.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC_CATALOG',
|
|
var_name: 'DC_IGNORELIBS',
|
|
var_value: '|MAPSSAS|MAPS|',
|
|
var_active: 1,
|
|
var_desc: 'Pipe separated list of librefs to ignore in Data Catalog.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC',
|
|
var_name: 'DC_LOCALE',
|
|
var_value: 'SYSTEM',
|
|
var_active: 1,
|
|
var_desc: 'Set to a locale to override the system value.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC_REVIEW',
|
|
var_name: 'HISTORY_ROWS',
|
|
var_value: '100',
|
|
var_active: 1,
|
|
var_desc: 'Number of rows to return in the HISTORY page.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC',
|
|
var_name: 'DC_LICENCE_KEY',
|
|
var_value: ' ',
|
|
var_active: 1,
|
|
var_desc: 'Licence Key'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC',
|
|
var_name: 'DC_ACTIVATION_KEY',
|
|
var_value: ' ',
|
|
var_active: 1,
|
|
var_desc: 'Activation Key'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC_EMAIL',
|
|
var_name: 'SUBMITTED_TEMPLATE',
|
|
var_value: 'Dear user, a change has been submitted.',
|
|
var_active: 1,
|
|
var_desc: 'Template email sent after submitting a change.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC_EMAIL',
|
|
var_name: 'APPROVED_TEMPLATE',
|
|
var_value: 'Dear user, a change has been approved.',
|
|
var_active: 1,
|
|
var_desc: 'Template email sent after approving a change.'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 253717919999,
|
|
var_scope: 'DC_EMAIL',
|
|
var_name: 'REJECTED_TEMPLATE',
|
|
var_value: 'Dear user, a change has been rejected.',
|
|
var_active: 1,
|
|
var_desc: 'Template email sent after rejecting a change.'
|
|
}
|
|
],
|
|
MPE_DATACATALOG_CATS: [],
|
|
MPE_DATACATALOG_LIBS: [],
|
|
MPE_DATACATALOG_OBJS: [],
|
|
MPE_DATACATALOG_TABS: [],
|
|
MPE_DATACATALOG_VARS: [],
|
|
MPE_DATASTATUS_CATS: [],
|
|
MPE_DATASTATUS_LIBS: [],
|
|
MPE_DATASTATUS_OBJS: [],
|
|
MPE_DATASTATUS_TABS: [],
|
|
MPE_DATADICTIONARY: [
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
DD_TYPE: 'LIBRARY',
|
|
DD_SOURCE: dcLibref,
|
|
DD_SHORTDESC: 'Data Controller Control Tables',
|
|
DD_LONGDESC: '# The Data Controller Library',
|
|
DD_OWNER: 'sasdemo',
|
|
DD_RESPONSIBLE: 'sasdemo',
|
|
DD_SENSITIVITY: 'Low'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
DD_TYPE: 'TABLE',
|
|
DD_SOURCE: dcLibref + '.MPE_TABLES',
|
|
DD_SHORTDESC: 'Configuration of new tables for Data Controller',
|
|
DD_LONGDESC: '# MPE_TABLES',
|
|
DD_OWNER: 'sasdemo',
|
|
DD_RESPONSIBLE: 'sasdemo',
|
|
DD_SENSITIVITY: 'Low'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
DD_TYPE: 'COLUMN',
|
|
DD_SOURCE: dcLibref + '.MPE_TABLES.DSN',
|
|
DD_SHORTDESC: 'Dataset Name to be edited',
|
|
DD_LONGDESC: '_DSN_ - must be UPCASE',
|
|
DD_OWNER: 'sasdemo',
|
|
DD_RESPONSIBLE: 'sasdemo',
|
|
DD_SENSITIVITY: 'Low'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
DD_TYPE: 'DIRECTORY',
|
|
DD_SOURCE: '/some/directory',
|
|
DD_SHORTDESC: 'Directory for some purpose',
|
|
DD_LONGDESC: 'This directory is great.',
|
|
DD_OWNER: 'sasdemo',
|
|
DD_RESPONSIBLE: 'sasdemo',
|
|
DD_SENSITIVITY: 'Low'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
DD_TYPE: 'TABLE',
|
|
DD_SOURCE: dcLibref,
|
|
DD_SHORTDESC: 'Transaction table for capturing Data Controller users',
|
|
DD_LONGDESC: 'After a user accepts the EULA they are registered here.',
|
|
DD_OWNER: 'sasdemo',
|
|
DD_RESPONSIBLE: 'sasdemo',
|
|
DD_SENSITIVITY: 'Low'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
DD_TYPE: 'COLUMN',
|
|
DD_SOURCE: dcLibref + '.MPE_CONFIG.VAR_ACTIVE',
|
|
DD_SHORTDESC: 'Set to 1 to make an option active',
|
|
DD_LONGDESC: 'Used as a filter when querying for option settings.',
|
|
DD_OWNER: 'sasdemo',
|
|
DD_RESPONSIBLE: 'sasdemo',
|
|
DD_SENSITIVITY: 'Low'
|
|
}
|
|
],
|
|
MPE_DATALOADS: [],
|
|
MPE_EMAILS: [],
|
|
MPE_EXCEL_CONFIG: [],
|
|
MPE_FILTERANYTABLE: [],
|
|
MPE_FILTERSOURCE: [],
|
|
MPE_GROUPS: [
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
group_name: 'dc-admin',
|
|
group_desc: 'Custom Group for Data Controller Purposes',
|
|
user_name: 'allbow'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
group_name: 'dc-admin',
|
|
group_desc: 'Custom Group for Data Controller Purposes',
|
|
user_name: 'dctestuser1'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
group_name: 'dc-admin',
|
|
group_desc: 'Custom Group for Data Controller Purposes',
|
|
user_name: 'mihmed'
|
|
}
|
|
],
|
|
MPE_LINEAGE_COLS: [],
|
|
MPE_LINEAGE_TABS: [],
|
|
MPE_LOADS: [],
|
|
MPE_LOCKANYTABLE: [],
|
|
MPE_REVIEW: [],
|
|
MPE_REQUESTS: [],
|
|
MPE_ROW_LEVEL_SECURITY: [
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
RLS_RK: 1,
|
|
RLS_SCOPE: 'ALL',
|
|
RLS_GROUP: 'dc-admin',
|
|
RLS_LIBREF: dcLibref,
|
|
RLS_TABLE: 'MPE_GROUPS',
|
|
RLS_GROUP_LOGIC: 'AND',
|
|
RLS_SUBGROUP_LOGIC: 'OR',
|
|
RLS_SUBGROUP_ID: 0,
|
|
RLS_VARIABLE_NM: 'GROUP_NAME',
|
|
RLS_OPERATOR_NM: 'NE',
|
|
RLS_RAW_VALUE: "'-1'",
|
|
RLS_ACTIVE: 1
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
RLS_RK: 2,
|
|
RLS_SCOPE: 'ALL',
|
|
RLS_GROUP: 'dc-admin',
|
|
RLS_LIBREF: dcLibref,
|
|
RLS_TABLE: 'MPE_ROW_LEVEL_SECURITY',
|
|
RLS_GROUP_LOGIC: 'AND',
|
|
RLS_SUBGROUP_LOGIC: 'OR',
|
|
RLS_SUBGROUP_ID: 0,
|
|
RLS_VARIABLE_NM: 'RLS_RK',
|
|
RLS_OPERATOR_NM: '>',
|
|
RLS_RAW_VALUE: '0',
|
|
RLS_ACTIVE: 1
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
RLS_RK: 3,
|
|
RLS_SCOPE: 'ALL',
|
|
RLS_GROUP: 'DC Demo Group',
|
|
RLS_LIBREF: dcLibref,
|
|
RLS_TABLE: 'MPE_SECURITY',
|
|
RLS_GROUP_LOGIC: 'AND',
|
|
RLS_SUBGROUP_LOGIC: 'OR',
|
|
RLS_SUBGROUP_ID: 0,
|
|
RLS_VARIABLE_NM: 'ACCESS_LEVEL',
|
|
RLS_OPERATOR_NM: 'NE',
|
|
RLS_RAW_VALUE: "'N/A'",
|
|
RLS_ACTIVE: 1
|
|
}
|
|
],
|
|
MPE_SECURITY: [
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: '*ALL*',
|
|
dsn: '*ALL*',
|
|
access_level: 'APPROVE',
|
|
sas_group: 'dc-admin'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: '*ALL*',
|
|
dsn: '*ALL*',
|
|
access_level: 'EDIT',
|
|
sas_group: 'dc-admin'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: '*ALL*',
|
|
dsn: '*ALL*',
|
|
access_level: 'VIEW',
|
|
sas_group: 'AllUsers'
|
|
}
|
|
],
|
|
MPE_SELECTBOX: [
|
|
{
|
|
selectbox_rk: 1,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_LOCKANYTABLE',
|
|
base_column: 'LOCK_STATUS_CD',
|
|
selectbox_value: 'LOCKED',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 2,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_LOCKANYTABLE',
|
|
base_column: 'LOCK_STATUS_CD',
|
|
selectbox_value: 'UNLOCKED',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 3,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_SECURITY',
|
|
base_column: 'ACCESS_LEVEL',
|
|
selectbox_value: 'EDIT',
|
|
selectbox_order: 0,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 4,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_SECURITY',
|
|
base_column: 'ACCESS_LEVEL',
|
|
selectbox_value: 'APPROVE',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 5,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_SECURITY',
|
|
base_column: 'ACCESS_LEVEL',
|
|
selectbox_value: 'VIEW',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 6,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_SECURITY',
|
|
base_column: 'ACCESS_LEVEL',
|
|
selectbox_value: 'SIGNOFF',
|
|
selectbox_order: 3,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 7,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_SECURITY',
|
|
base_column: 'ACCESS_LEVEL',
|
|
selectbox_value: 'AUDIT',
|
|
selectbox_order: 4,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 8,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_TABLES',
|
|
base_column: 'LOADTYPE',
|
|
selectbox_value: 'UPDATE',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 9,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_TABLES',
|
|
base_column: 'LOADTYPE',
|
|
selectbox_value: 'REPLACE',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 10,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_TABLES',
|
|
base_column: 'LOADTYPE',
|
|
selectbox_value: 'TXTEMPORAL',
|
|
selectbox_order: 3,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 11,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_TABLES',
|
|
base_column: 'LOADTYPE',
|
|
selectbox_value: 'BITEMPORAL',
|
|
selectbox_order: 4,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 12,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_TABLES',
|
|
base_column: 'LOADTYPE',
|
|
selectbox_value: 'FORMAT_CAT',
|
|
selectbox_order: 5,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 13,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ALERTS',
|
|
base_column: 'ALERT_EVENT',
|
|
selectbox_value: '*ALL*',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 14,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ALERTS',
|
|
base_column: 'ALERT_EVENT',
|
|
selectbox_value: 'SUBMITTED',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 15,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ALERTS',
|
|
base_column: 'ALERT_EVENT',
|
|
selectbox_value: 'APPROVED',
|
|
selectbox_order: 3,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 16,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ALERTS',
|
|
base_column: 'ALERT_EVENT',
|
|
selectbox_value: 'REJECTED',
|
|
selectbox_order: 4,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 17,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_X_TEST',
|
|
base_column: 'SOME_DROPDOWN',
|
|
selectbox_value: 'Option 1',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 18,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_X_TEST',
|
|
base_column: 'SOME_DROPDOWN',
|
|
selectbox_value: 'Option 2',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 19,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_X_TEST',
|
|
base_column: 'SOME_DROPDOWN',
|
|
selectbox_value: 'Option 3',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 20,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_X_TEST',
|
|
base_column: 'SOME_DROPDOWN',
|
|
selectbox_value:
|
|
'This is a long option. This option is very long. It is optional, though.',
|
|
selectbox_order: 3,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 21,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'CASE',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 22,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'HARDSELECT',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 23,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'HARDSELECT_HOOK',
|
|
selectbox_order: 3,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 24,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'HIDDEN',
|
|
selectbox_order: 4,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 25,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'MAXVAL',
|
|
selectbox_order: 5,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 26,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'MINVAL',
|
|
selectbox_order: 6,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 27,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'NOTNULL',
|
|
selectbox_order: 7,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 28,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'NUMBER_FORMAT',
|
|
selectbox_order: 8,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 29,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'READONLY',
|
|
selectbox_order: 9,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 30,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'ROUND',
|
|
selectbox_order: 10,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 31,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'SOFTSELECT',
|
|
selectbox_order: 11,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 32,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'SOFTSELECT_HOOK',
|
|
selectbox_order: 12,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 33,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'HARDREGEX',
|
|
selectbox_order: 13,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 34,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'SOFTREGEX',
|
|
selectbox_order: 14,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 35,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'HARDFORMULA',
|
|
selectbox_order: 15,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 36,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_TYPE',
|
|
selectbox_value: 'SOFTFORMULA',
|
|
selectbox_order: 16,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 37,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_ACTIVE',
|
|
selectbox_value: '1',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 38,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_VALIDATIONS',
|
|
base_column: 'RULE_ACTIVE',
|
|
selectbox_value: '0',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 39,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_SECURITY',
|
|
base_column: 'DSN',
|
|
selectbox_value: '*ALL*',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 40,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_SECURITY',
|
|
base_column: 'LIBREF',
|
|
selectbox_value: '*ALL*',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 41,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_DATADICTIONARY',
|
|
base_column: 'DD_TYPE',
|
|
selectbox_value: 'COLUMN',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 42,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_DATADICTIONARY',
|
|
base_column: 'DD_TYPE',
|
|
selectbox_value: 'TABLE',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 43,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_DATADICTIONARY',
|
|
base_column: 'DD_TYPE',
|
|
selectbox_value: 'LIBRARY',
|
|
selectbox_order: 3,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 44,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_DATADICTIONARY',
|
|
base_column: 'DD_TYPE',
|
|
selectbox_value: 'CATALOG',
|
|
selectbox_order: 3,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 45,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_DATADICTIONARY',
|
|
base_column: 'DD_TYPE',
|
|
selectbox_value: 'FORMAT',
|
|
selectbox_order: 3,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 46,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_SCOPE',
|
|
selectbox_value: 'ALL',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 47,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_SCOPE',
|
|
selectbox_value: 'EDIT',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 48,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_SCOPE',
|
|
selectbox_value: 'VIEW',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 49,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_GROUP_LOGIC',
|
|
selectbox_value: 'AND',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 50,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_GROUP_LOGIC',
|
|
selectbox_value: 'OR',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 51,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_SUBGROUP_LOGIC',
|
|
selectbox_value: 'AND',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 52,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_SUBGROUP_LOGIC',
|
|
selectbox_value: 'OR',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 53,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_OPERATOR_NM',
|
|
selectbox_value: '=',
|
|
selectbox_order: 0,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 54,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_OPERATOR_NM',
|
|
selectbox_value: '>',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 55,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_OPERATOR_NM',
|
|
selectbox_value: '<',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 56,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_OPERATOR_NM',
|
|
selectbox_value: '<=',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 57,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_OPERATOR_NM',
|
|
selectbox_value: '>=',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 58,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_OPERATOR_NM',
|
|
selectbox_value: 'BETWEEN',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 59,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_OPERATOR_NM',
|
|
selectbox_value: 'IN',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 60,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_OPERATOR_NM',
|
|
selectbox_value: 'NOT IN',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 61,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_OPERATOR_NM',
|
|
selectbox_value: 'NE',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 62,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_OPERATOR_NM',
|
|
selectbox_value: 'CONTAINS',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 63,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_ACTIVE',
|
|
selectbox_value: '1',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 64,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_column: 'RLS_ACTIVE',
|
|
selectbox_value: '0',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 65,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_column: 'CLS_ACTIVE',
|
|
selectbox_value: '1',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 66,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_column: 'CLS_ACTIVE',
|
|
selectbox_value: '0',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 67,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_column: 'CLS_SCOPE',
|
|
selectbox_value: 'EDIT',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 68,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_column: 'CLS_SCOPE',
|
|
selectbox_value: 'VIEW',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 69,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_column: 'CLS_SCOPE',
|
|
selectbox_value: 'ALL',
|
|
selectbox_order: 3,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 70,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_column: 'CLS_HIDE',
|
|
selectbox_value: '0',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 71,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_column: 'CLS_HIDE',
|
|
selectbox_value: '1',
|
|
selectbox_order: 2,
|
|
ver_to_dttm: 127490111999
|
|
},
|
|
{
|
|
selectbox_rk: 72,
|
|
ver_from_dttm: 0,
|
|
select_lib: dcLibref,
|
|
select_ds: 'MPE_EXCEL_CONFIG',
|
|
base_column: 'XL_RULE',
|
|
selectbox_value: 'FORMULA',
|
|
selectbox_order: 1,
|
|
ver_to_dttm: 127490111999
|
|
}
|
|
],
|
|
MPE_SUBMIT: [],
|
|
MPE_TABLES: [
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO',
|
|
buskey: 'CLS_SCOPE CLS_GROUP CLS_LIBREF CLS_TABLE CLS_VARIABLE_NM',
|
|
notes: 'Column Level Security config',
|
|
post_edit_hook: 'services/hooks/mpe_column_level_security_postedit'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_XLMAP_INFO',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO',
|
|
buskey: 'XLMAP_ID',
|
|
notes: 'Excel Map Info',
|
|
post_edit_hook: 'services/hooks/mpe_xlmap_info_postedit'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_XLMAP_RULES',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO',
|
|
buskey: 'XLMAP_ID XLMAP_RANGE_ID',
|
|
notes: 'Excel Map Rules',
|
|
post_edit_hook: 'services/hooks/mpe_xlmap_rules_postedit'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_XLMAP_DATA',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'LOAD_REF XLMAP_ID XLMAP_RANGE_ID ROW_NO COL_NO',
|
|
notes: 'Excel Map Data'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_LOCKANYTABLE',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'LOCK_LIB LOCK_DS',
|
|
notes: 'Table lock management'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_TABLES',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'LIBREF DSN',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO',
|
|
notes: 'MPE Editor self-edit',
|
|
post_edit_hook: 'services/hooks/mpe_tables_postedit'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_SECURITY',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'LIBREF DSN ACCESS_LEVEL SAS_GROUP',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO',
|
|
notes: 'Group access control',
|
|
post_edit_hook: 'services/hooks/mpe_security_postedit'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_SELECTBOX',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'SELECTBOX_RK',
|
|
var_txfrom: 'VER_FROM_DTTM',
|
|
var_txto: 'VER_TO_DTTM',
|
|
notes: 'Dropdown configuration',
|
|
rk_underlying: 'SELECT_LIB SELECT_DS BASE_COLUMN SELECTBOX_VALUE'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_X_TEST',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'PRIMARY_KEY_FIELD',
|
|
notes: 'Test table for controller'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_EMAILS',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'USER_NAME',
|
|
notes: 'Primary Emails Table',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_CONFIG',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'VAR_SCOPE VAR_NAME',
|
|
notes: 'Configuration variables',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_ALERTS',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'ALERT_EVENT ALERT_LIB ALERT_DS ALERT_USER',
|
|
notes: 'Alert email events',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_GROUPS',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'GROUP_NAME USER_NAME',
|
|
notes: 'Additional DC groups',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_VALIDATIONS',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'BASE_LIB BASE_DS BASE_COL RULE_TYPE',
|
|
notes: 'Data quality rules',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO',
|
|
post_edit_hook: 'services/hooks/mpe_validations_postedit'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_DATADICTIONARY',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'DD_TYPE DD_SOURCE',
|
|
notes: 'Data dictionary',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_EXCEL_CONFIG',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'XL_LIBREF XL_TABLE XL_COLUMN',
|
|
notes: 'Excel import rules',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_ROW_LEVEL_SECURITY',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'RLS_RK',
|
|
notes: 'Row Level Security',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO',
|
|
rk_underlying:
|
|
'RLS_SCOPE RLS_GROUP RLS_LIBREF RLS_TABLE RLS_GROUP_LOGIC RLS_SUBGROUP_LOGIC RLS_SUBGROUP_ID RLS_VARIABLE_NM RLS_OPERATOR_NM RLS_RAW_VALUE',
|
|
post_edit_hook: 'services/hooks/mpe_row_level_security_postedit'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_X_CATALOG-FC',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'FORMAT_CAT',
|
|
buskey: 'TYPE FMTNAME FMTROW',
|
|
notes: 'Sample Format Catalog'
|
|
}
|
|
],
|
|
MPE_VALIDATIONS: [
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_col: 'CLS_SCOPE',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_col: 'CLS_LIBREF',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_col: 'CLS_LIBREF',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/libraries_all',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_col: 'CLS_TABLE',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_col: 'CLS_TABLE',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/tables_all',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_col: 'CLS_VARIABLE_NM',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_col: 'CLS_VARIABLE_NM',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/columns_in_libds',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_col: 'CLS_ACTIVE',
|
|
rule_type: 'MAXVAL',
|
|
rule_value: '1',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_col: 'CLS_HIDE',
|
|
rule_type: 'MAXVAL',
|
|
rule_value: '1',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_COLUMN_LEVEL_SECURITY',
|
|
base_col: 'CLS_GROUP',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/sas_groups',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'LIBREF',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'DSN',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'LIBREF',
|
|
rule_type: 'NOTNULL',
|
|
rule_value: ' ',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'DSN',
|
|
rule_type: 'NOTNULL',
|
|
rule_value: ' ',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'NUM_OF_APPROVALS_REQUIRED',
|
|
rule_type: 'MINVAL',
|
|
rule_value: '1',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'BUSKEY',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'BUSKEY',
|
|
rule_type: 'NOTNULL',
|
|
rule_value: ' ',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'VAR_TXFROM',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'VAR_TXTO',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'VAR_BUSFROM',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'VAR_BUSTO',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'VAR_PROCESSED',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'LIBREF',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/libraries_all',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'DSN',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/mpe_tables.dsn',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'VAR_TXFROM',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/columns_in_libds',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'VAR_TXTO',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/columns_in_libds',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'VAR_BUSFROM',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/columns_in_libds',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'VAR_BUSTO',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/columns_in_libds',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_TABLES',
|
|
base_col: 'VAR_PROCESSED',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/columns_in_libds',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_SECURITY',
|
|
base_col: 'LIBREF',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_SECURITY',
|
|
base_col: 'LIBREF',
|
|
rule_type: 'HARDSELECT',
|
|
rule_value: dcLibref + '.MPE_TABLES.LIBREF',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_SECURITY',
|
|
base_col: 'DSN',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_SECURITY',
|
|
base_col: 'DSN',
|
|
rule_type: 'SOFTSELECT',
|
|
rule_value: dcLibref + '.MPE_TABLES.DSN',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_SECURITY',
|
|
base_col: 'SAS_GROUP',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/sas_groups',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_VALIDATIONS',
|
|
base_col: 'BASE_LIB',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/libraries_editable',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_VALIDATIONS',
|
|
base_col: 'BASE_DS',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/tables_editable',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_VALIDATIONS',
|
|
base_col: 'BASE_COL',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/columns_in_libds',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_VALIDATIONS',
|
|
base_col: 'RULE_ACTIVE',
|
|
rule_type: 'MINVAL',
|
|
rule_value: '0',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_VALIDATIONS',
|
|
base_col: 'RULE_ACTIVE',
|
|
rule_type: 'MAXVAL',
|
|
rule_value: '1',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_EXCEL_CONFIG',
|
|
base_col: 'XL_LIBREF',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/libraries_editable',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_EXCEL_CONFIG',
|
|
base_col: 'XL_TABLE',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/tables_editable',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_EXCEL_CONFIG',
|
|
base_col: 'XL_COLUMN',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/columns_in_libds',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_EXCEL_CONFIG',
|
|
base_col: 'XL_ACTIVE',
|
|
rule_type: 'MINVAL',
|
|
rule_value: '0',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_EXCEL_CONFIG',
|
|
base_col: 'XL_ACTIVE',
|
|
rule_type: 'MAXVAL',
|
|
rule_value: '1',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_XLMAP_INFO',
|
|
base_col: 'XLMAP_ID',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_XLMAP_INFO',
|
|
base_col: 'XLMAP_ID',
|
|
rule_type: 'SOFTSELECT',
|
|
rule_value: dcLibref + '.MPE_XLMAP_RULES.XLMAP_ID',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_XLMAP_RULES',
|
|
base_col: 'XLMAP_ID',
|
|
rule_type: 'CASE',
|
|
rule_value: 'UPCASE',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_SELECTBOX',
|
|
base_col: 'SELECT_LIB',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/libraries_editable',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_SELECTBOX',
|
|
base_col: 'SELECT_DS',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/tables_editable',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_SELECTBOX',
|
|
base_col: 'BASE_COLUMN',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/columns_in_libds',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_col: 'RLS_GROUP',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/sas_groups',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_col: 'RLS_LIBREF',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/libraries_all',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_col: 'RLS_TABLE',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/tables_all',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_col: 'RLS_SUBGROUP_ID',
|
|
rule_type: 'MINVAL',
|
|
rule_value: '0',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_col: 'RLS_SUBGROUP_ID',
|
|
rule_type: 'NOTNULL',
|
|
rule_value: '0',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_ROW_LEVEL_SECURITY',
|
|
base_col: 'RLS_VARIABLE_NM',
|
|
rule_type: 'SOFTSELECT_HOOK',
|
|
rule_value: 'services/validations/columns_in_libds',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_ALERTS',
|
|
base_col: 'ALERT_LIB',
|
|
rule_type: 'HARDSELECT_HOOK',
|
|
rule_value: 'services/validations/mpe_alerts.alert_lib',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_X_TEST',
|
|
base_col: 'SOME_BESTNUM',
|
|
rule_type: 'SOFTSELECT',
|
|
rule_value: dcLibref + '.MPE_X_TEST.SOME_BESTNUM',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_X_TEST',
|
|
base_col: 'SOME_CHAR',
|
|
rule_type: 'HARDREGEX',
|
|
rule_value: '/the|data/i',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_X_TEST',
|
|
base_col: 'SOME_CHAR',
|
|
rule_type: 'SOFTREGEX',
|
|
rule_value: '/t/',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_X_TEST',
|
|
base_col: 'PRIMARY_KEY_FIELD',
|
|
rule_type: 'SOFTREGEX',
|
|
rule_value: '/^\\d+$/',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
base_lib: dcLibref,
|
|
base_ds: 'MPE_X_TEST',
|
|
base_col: 'SOME_NUM',
|
|
rule_type: 'HARDSELECT_HOOK',
|
|
rule_value: 'services/validations/mpe_x_test.some_num',
|
|
rule_active: 1,
|
|
tx_to: 127490111999
|
|
}
|
|
],
|
|
MPE_X_TEST: [
|
|
{
|
|
PRIMARY_KEY_FIELD: 0,
|
|
SOME_CHAR: 'this is dummy data',
|
|
SOME_DROPDOWN: 'Option 1',
|
|
SOME_NUM: 42,
|
|
SOME_DATE: 42,
|
|
SOME_DATETIME: 42,
|
|
SOME_TIME: 42,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 1,
|
|
SOME_CHAR: 'more dummy data',
|
|
SOME_DROPDOWN: 'Option 2',
|
|
SOME_NUM: 42,
|
|
SOME_DATE: 42,
|
|
SOME_DATETIME: 42,
|
|
SOME_TIME: 422,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 2,
|
|
SOME_CHAR: 'even more dummy data',
|
|
SOME_DROPDOWN: 'Option 3',
|
|
SOME_NUM: 42,
|
|
SOME_DATE: 42,
|
|
SOME_DATETIME: 42,
|
|
SOME_TIME: 142,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 3,
|
|
SOME_CHAR:
|
|
'It was a dark and stormy night. The wind was blowing a gale! The captain said to his mate - mate, tell us a tale. And this, is the tale he told: It was a dark and stormy night. The wind was blowing a gale! The captain said to his mate - mate, tell us a tale. And this, is the tale he told: It was a dark and stormy night. The wind was blowing a gale! The captain said to his mate - mate, tell us a tale. And this, is the tale he told:',
|
|
SOME_DROPDOWN: 'Option 2',
|
|
SOME_NUM: 1613.001,
|
|
SOME_DATE: 423,
|
|
SOME_DATETIME: 423,
|
|
SOME_TIME: 44,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 4,
|
|
SOME_CHAR: 'if you can fill the unforgiving minute',
|
|
SOME_DROPDOWN: 'Option 1',
|
|
SOME_NUM: 1613.001123456,
|
|
SOME_DATE: 4231,
|
|
SOME_DATETIME: 423123123,
|
|
SOME_TIME: 412,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 5,
|
|
SOME_CHAR: '= testing the formula situation',
|
|
SOME_DROPDOWN: 'Option 1',
|
|
SOME_NUM: 42,
|
|
SOME_DATE: 42,
|
|
SOME_DATETIME: 42,
|
|
SOME_TIME: 42,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 6,
|
|
SOME_CHAR: "'=the formula with leading apostrophe",
|
|
SOME_DROPDOWN: 'Option 1',
|
|
SOME_NUM: 42,
|
|
SOME_DATE: 42,
|
|
SOME_DATETIME: 42,
|
|
SOME_TIME: 42,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44
|
|
}
|
|
],
|
|
MPE_XLMAP_DATA: [],
|
|
MPE_XLMAP_INFO: [
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
XLMAP_ID: 'BASEL-KM1',
|
|
XLMAP_DESCRIPTION: 'Basel 3 Key Metrics report',
|
|
XLMAP_TARGETLIBDS: dcLibref + '.MPE_XLMAP_DATA'
|
|
}
|
|
],
|
|
MPE_XLMAP_RULES: [
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
xlmap_id: 'BASEL-KM1',
|
|
xlmap_range_id: 'KM1:a',
|
|
xlmap_sheet: 'KM1',
|
|
xlmap_start: 'MATCH 4 R[2]C[0]:a'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
xlmap_id: 'BASEL-KM1',
|
|
xlmap_range_id: 'KM1:b',
|
|
xlmap_sheet: 'KM1',
|
|
xlmap_start: 'MATCH 4 R[2]C[0]:b'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
xlmap_id: 'BASEL-KM1',
|
|
xlmap_range_id: 'KM1:c',
|
|
xlmap_sheet: 'KM1',
|
|
xlmap_start: 'MATCH 4 R[2]C[0]:c'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
xlmap_id: 'BASEL-KM1',
|
|
xlmap_range_id: 'KM1:d',
|
|
xlmap_sheet: 'KM1',
|
|
xlmap_start: 'MATCH 4 R[2]C[0]:d'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
xlmap_id: 'BASEL-KM1',
|
|
xlmap_range_id: 'KM1:e',
|
|
xlmap_sheet: 'KM1',
|
|
xlmap_start: 'MATCH 4 R[2]C[0]:e'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
xlmap_id: 'BASEL-KM1',
|
|
xlmap_range_id: 'KM1:f',
|
|
xlmap_sheet: 'KM1',
|
|
xlmap_start: 'MATCH 4 R[2]C[0]:f'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
xlmap_id: 'BASEL-CR2',
|
|
xlmap_range_id: 'CR2-sec1',
|
|
xlmap_sheet: 'CR2',
|
|
xlmap_start: 'ABSOLUTE D8',
|
|
xlmap_finish: 'BLANKROW'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
xlmap_id: 'BASEL-CR2',
|
|
xlmap_range_id: 'CR2-sec2',
|
|
xlmap_sheet: 'CR2',
|
|
xlmap_start: 'ABSOLUTE D18',
|
|
xlmap_finish: 'LASTDOWN'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
xlmap_id: 'SAMPLE',
|
|
xlmap_range_id: 'header',
|
|
xlmap_sheet: '/1',
|
|
xlmap_start: 'ABSOLUTE B3',
|
|
xlmap_finish: 'ABSOLUTE B8'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
xlmap_id: 'SAMPLE',
|
|
xlmap_range_id: 'data',
|
|
xlmap_sheet: '/1',
|
|
xlmap_start: 'ABSOLUTE B13',
|
|
xlmap_finish: 'ABSOLUTE E16'
|
|
}
|
|
],
|
|
MPE_X_CATALOG: [],
|
|
MPE_X_SEARCH: [],
|
|
MPE_USERS: []
|
|
}
|
|
|
|
// ─── MPE_X_SEARCH: viewer full-table-search demo table ───────────────────────
|
|
// Deterministic, obviously fictional deep-sea survey data (no real sites,
|
|
// vessels or people). Laid out site-major / vessel-minor so every count in
|
|
// the full-table-search Cypress spec can be derived by hand:
|
|
// n = rep * 50 + siteIdx * 5 + vesselIdx (0-based, 1000 rows)
|
|
// -> 20 rows per site, 100 rows per site block, 200 rows per vessel
|
|
const searchSites = [
|
|
'Nereid Trench',
|
|
'Calypso Trench',
|
|
'Halcyon Trench',
|
|
'Amphitrite Basin',
|
|
'Kraken Hollow',
|
|
'Erebus Deep',
|
|
'Thalassa Shelf',
|
|
'Oceanus Rise',
|
|
'Selkie Bank',
|
|
'Vostok Deep'
|
|
]
|
|
const searchVessels = [
|
|
'RV Pelagia',
|
|
'RV Aurora',
|
|
'RV Selkie',
|
|
'RV Cormorant',
|
|
'RV Halcyon'
|
|
]
|
|
const searchSpecies = [
|
|
'Vampire squid',
|
|
'Barreleye fish',
|
|
'Dumbo octopus',
|
|
'Yeti crab',
|
|
'Giant isopod',
|
|
'Ghost shark',
|
|
'Comb jelly',
|
|
'Sea pig',
|
|
'Glass sponge',
|
|
'Anglerfish'
|
|
]
|
|
// Rows carrying the mid-field marker in NOTES (searched as a partial string)
|
|
const siphonophoreRows = [137, 500, 862]
|
|
// Rows sharing the repeated exact SAMPLE_COUNT (searched as a number)
|
|
const sampleCountRows = [220, 780]
|
|
|
|
tables.MPE_X_SEARCH = []
|
|
for (let n = 0; n < 1000; n++) {
|
|
const rep = Math.floor(n / 50)
|
|
const siteIdx = Math.floor((n % 50) / 5)
|
|
const vesselIdx = n % 5
|
|
const site = searchSites[siteIdx]
|
|
const depth = 1000 + (n % 90) * 37
|
|
tables.MPE_X_SEARCH.push({
|
|
PRIMARY_KEY_FIELD: n + 1001,
|
|
SITE_NAME: site,
|
|
VESSEL: searchVessels[vesselIdx],
|
|
SAMPLE_COUNT: sampleCountRows.includes(n) ? 4210 : 1 + (n % 6),
|
|
DEPTH_M: depth,
|
|
SPECIES: searchSpecies[(siteIdx + vesselIdx) % searchSpecies.length],
|
|
CRUISE_DATE: 20000 + (n % 3650),
|
|
EXPEDITION_ID: 'EXP-' + String(n + 1).padStart(4, '0'),
|
|
NOTES:
|
|
'Leg ' +
|
|
(rep + 1) +
|
|
' of the ' +
|
|
site +
|
|
' survey. ' +
|
|
(siphonophoreRows.includes(n)
|
|
? 'A bioluminescent siphonophore was filmed here.'
|
|
: 'No anomalies recorded.') +
|
|
' Depth soundings logged at ' +
|
|
depth +
|
|
'm.'
|
|
})
|
|
}
|
|
|
|
// Register the demo table like any other editable table (buskey drives the
|
|
// viewer's PK detection).
|
|
tables.MPE_TABLES.push({
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: dcLibref,
|
|
dsn: 'MPE_X_SEARCH',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'PRIMARY_KEY_FIELD',
|
|
notes: 'Full table search demo table'
|
|
})
|
|
|
|
// Column metadata for each table, extracted from mpe_makedatamodel.sas
|
|
// Each entry: { name, type (N/C), length, format, label, notnull (bool) }
|
|
const schema = {
|
|
MPE_ALERTS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'ALERT_EVENT',
|
|
type: 'C',
|
|
length: 20,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'ALERT_LIB',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'ALERT_DS',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'ALERT_USER',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_AUDIT: [
|
|
{
|
|
name: 'LOAD_REF',
|
|
type: 'C',
|
|
length: 36,
|
|
format: '',
|
|
label: 'unique load reference',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Reference (8 chars)',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DSN',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'Dataset Name (32 chars)',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'KEY_HASH',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'MD5 Hash of primary key values (pipe seperated)',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TGTVAR_NM',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'Target variable name (32 chars)',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MOVE_TYPE',
|
|
type: 'C',
|
|
length: 1,
|
|
format: '',
|
|
label: 'Either (A)ppended, (D)eleted or (M)odified',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'PROCESSED_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'E8601DT26.6',
|
|
label: 'Processed at timestamp',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'IS_PK',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Is Primary Key Field? (1/0)',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'IS_DIFF',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Did value change? (1/0/-1)',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TGTVAR_TYPE',
|
|
type: 'C',
|
|
length: 1,
|
|
format: '',
|
|
label: 'Either (C)haracter or (N)umeric',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'OLDVAL_NUM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'best32.',
|
|
label: 'Old (numeric) value',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NEWVAL_NUM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'best32.',
|
|
label: 'New (numeric) value',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'OLDVAL_CHAR',
|
|
type: 'C',
|
|
length: 32765,
|
|
format: '',
|
|
label: 'Old (character) value',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NEWVAL_CHAR',
|
|
type: 'C',
|
|
length: 32765,
|
|
format: '',
|
|
label: 'New (character) value',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_COLUMN_LEVEL_SECURITY: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'CLS_SCOPE',
|
|
type: 'C',
|
|
length: 4,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'CLS_GROUP',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'CLS_LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'CLS_TABLE',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'CLS_VARIABLE_NM',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'CLS_ACTIVE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'CLS_HIDE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_CONFIG: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'VAR_SCOPE',
|
|
type: 'C',
|
|
length: 10,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'VAR_NAME',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'VAR_VALUE',
|
|
type: 'C',
|
|
length: 5000,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'VAR_ACTIVE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'VAR_DESC',
|
|
type: 'C',
|
|
length: 300,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATACATALOG_CATS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MEMNAME',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: 'Member Name',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATACATALOG_LIBS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Ref',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'ENGINE',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'Library Engine',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LIBNAME',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '$256.',
|
|
label: 'Library Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'PATHS',
|
|
type: 'C',
|
|
length: 8192,
|
|
format: '',
|
|
label: 'Library Paths',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'PERMS',
|
|
type: 'C',
|
|
length: 500,
|
|
format: '',
|
|
label: 'Library Permissions (if BASE)',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'OWNERS',
|
|
type: 'C',
|
|
length: 500,
|
|
format: '',
|
|
label: 'Library Owners (if BASE)',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SCHEMAS',
|
|
type: 'C',
|
|
length: 500,
|
|
format: '',
|
|
label: 'Library Schemas (if DB)',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LIBID',
|
|
type: 'C',
|
|
length: 17,
|
|
format: '',
|
|
label: 'LibraryId',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATACATALOG_OBJS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Name',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'MEMNAME',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: 'Member Name',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'OBJNAME',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'Object Name',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'OBJTYPE',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Object Type',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'OBJDESC',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: 'Object Description',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'ALIAS',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'Object Alias',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATACATALOG_TABS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DSN',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: 'Member Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MEMTYPE',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Member Type',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DBMS_MEMTYPE',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'DBMS Member Type',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MEMLABEL',
|
|
type: 'C',
|
|
length: 512,
|
|
format: '',
|
|
label: 'Data Set Label',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TYPEMEM',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Data Set Type',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NVAR',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Number of Variables',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'COMPRESS',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Compression Routine',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'PK_FIELDS',
|
|
type: 'C',
|
|
length: 512,
|
|
format: '',
|
|
label: 'Primary Key Fields',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATACATALOG_VARS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DSN',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: 'Table Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NAME',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: 'Column Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MEMTYPE',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Member Type',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TYPE',
|
|
type: 'C',
|
|
length: 16,
|
|
format: '',
|
|
label: 'Column Type',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LENGTH',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Column Length',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'VARNUM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Column Number in Table',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LABEL',
|
|
type: 'C',
|
|
length: 512,
|
|
format: '',
|
|
label: 'Column Label',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'FORMAT',
|
|
type: 'C',
|
|
length: 49,
|
|
format: '',
|
|
label: 'Column Format',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'IDXUSAGE',
|
|
type: 'C',
|
|
length: 9,
|
|
format: '',
|
|
label: 'Column Index Type',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NOTNULL',
|
|
type: 'C',
|
|
length: 3,
|
|
format: '',
|
|
label: 'Not NULL?',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'PK_IND',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Primary Key Indicator (1=Primary Key field)',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATASTATUS_CATS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MEMNAME',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: 'Member Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NOBJS',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Number of objects',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'CREATED',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'DATETIME.',
|
|
label: 'Date Created',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'MODIFIED',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'DATETIME.',
|
|
label: 'Date Modified',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATASTATUS_LIBS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LIBSIZE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'SIZEKMG.',
|
|
label: 'Size of library',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TABLE_CNT',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Number of Tables',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'CATALOG_CNT',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Number of Catalogs',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATASTATUS_OBJS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MEMNAME',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: 'Member Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'OBJNAME',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'Object Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'OBJTYPE',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Object Type',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'CREATED',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'DATETIME.',
|
|
label: 'Date Created',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'MODIFIED',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'DATETIME.',
|
|
label: 'Date Modified',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LEVEL',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Concatenation Level',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATASTATUS_TABS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Library Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DSN',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: 'Member Name',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'FILESIZE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'SIZEKMG.',
|
|
label: 'Size of file',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'CRDATE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'DATETIME.',
|
|
label: 'Date Created',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MODATE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'DATETIME.',
|
|
label: 'Date Modified',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NOBS',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Number of Physical Observations',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATADICTIONARY: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'DD_TYPE',
|
|
type: 'C',
|
|
length: 16,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DD_SOURCE',
|
|
type: 'C',
|
|
length: 1024,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DD_SHORTDESC',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DD_LONGDESC',
|
|
type: 'C',
|
|
length: 32767,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DD_OWNER',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DD_RESPONSIBLE',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DD_SENSITIVITY',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_DATALOADS: [
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'DSN',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'ETLSOURCE',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LOADTYPE',
|
|
type: 'C',
|
|
length: 20,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'CHANGED_RECORDS',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NEW_RECORDS',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DELETED_RECORDS',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DURATION',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'USER_NM',
|
|
type: 'C',
|
|
length: 50,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'PROCESSED_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MAC_VER',
|
|
type: 'C',
|
|
length: 5,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_EMAILS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'USER_NAME',
|
|
type: 'C',
|
|
length: 50,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'USER_DISPLAYNAME',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'USER_EMAIL',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_EXCEL_CONFIG: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XL_LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'XL_TABLE',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'XL_COLUMN',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'XL_RULE',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'XL_ACTIVE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_FILTERANYTABLE: [
|
|
{
|
|
name: 'FILTER_RK',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'FILTER_HASH',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'FILTER_TABLE',
|
|
type: 'C',
|
|
length: 41,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'PROCESSED_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_FILTERSOURCE: [
|
|
{
|
|
name: 'FILTER_HASH',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'FILTER_LINE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'GROUP_LOGIC',
|
|
type: 'C',
|
|
length: 3,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SUBGROUP_LOGIC',
|
|
type: 'C',
|
|
length: 3,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SUBGROUP_ID',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'VARIABLE_NM',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'OPERATOR_NM',
|
|
type: 'C',
|
|
length: 12,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RAW_VALUE',
|
|
type: 'C',
|
|
length: 4000,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'PROCESSED_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_GROUPS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'GROUP_NAME',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'USER_NAME',
|
|
type: 'C',
|
|
length: 50,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'GROUP_DESC',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_LINEAGE_COLS: [
|
|
{
|
|
name: 'COL_ID',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DIRECTION',
|
|
type: 'C',
|
|
length: 1,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOURCECOLURI',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MAP_TYPE',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MAP_TRANSFORM',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'JOBNAME',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOURCETABLENAME',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOURCECOLNAME',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TARGETTABLENAME',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TARGETCOLNAME',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TARGETCOLURI',
|
|
type: 'C',
|
|
length: 256,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DERIVED_RULE',
|
|
type: 'C',
|
|
length: 500,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LEVEL',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MODIFIED_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MODIFIED_BY',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_LINEAGE_TABS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'JOBID',
|
|
type: 'C',
|
|
length: 17,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SRCTABLEID',
|
|
type: 'C',
|
|
length: 17,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TGTTABLEID',
|
|
type: 'C',
|
|
length: 17,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'JOBNAME',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SRCTABLETYPE',
|
|
type: 'C',
|
|
length: 16,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SRCTABLENAME',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SRCLIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TGTTABLETYPE',
|
|
type: 'C',
|
|
length: 16,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TGTTABLENAME',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TGTLIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_LOADS: [
|
|
{
|
|
name: 'CSV_DIR',
|
|
type: 'C',
|
|
length: 255,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'USER_NM',
|
|
type: 'C',
|
|
length: 50,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'STATUS',
|
|
type: 'C',
|
|
length: 15,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DURATION',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'PROCESSED_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'REASON_TXT',
|
|
type: 'C',
|
|
length: 2048,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'APPROVALS',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_LOCKANYTABLE: [
|
|
{
|
|
name: 'LOCK_LIB',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LOCK_DS',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LOCK_STATUS_CD',
|
|
type: 'C',
|
|
length: 10,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LOCK_USER_NM',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LOCK_REF',
|
|
type: 'C',
|
|
length: 200,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LOCK_PID',
|
|
type: 'C',
|
|
length: 10,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LOCK_START_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'E8601DT26.6',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LOCK_END_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'E8601DT26.6',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_MAXKEYVALUES: [
|
|
{
|
|
name: 'KEYTABLE',
|
|
type: 'C',
|
|
length: 41,
|
|
format: '',
|
|
label: 'Base table in libref.dataset format',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'KEYCOLUMN',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '$32.',
|
|
label: 'The Surrogate / Retained key field',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'MAX_KEY',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Integer value representing current max RK or SK value',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'PROCESSED_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'E8601DT26.6',
|
|
label: 'Datetime this value was last updated',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_REQUESTS: [
|
|
{
|
|
name: 'REQUEST_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'REQUEST_USER',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'REQUEST_SERVICE',
|
|
type: 'C',
|
|
length: 64,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'REQUEST_PARAMS',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_REVIEW: [
|
|
{
|
|
name: 'TABLE_ID',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'REVIEWED_BY_NM',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'BASE_TABLE',
|
|
type: 'C',
|
|
length: 41,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'REVIEW_STATUS_ID',
|
|
type: 'C',
|
|
length: 10,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'REVIEWED_ON_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'REVIEW_REASON_TXT',
|
|
type: 'C',
|
|
length: 400,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_ROW_LEVEL_SECURITY: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_RK',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_SCOPE',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_GROUP',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_TABLE',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_GROUP_LOGIC',
|
|
type: 'C',
|
|
length: 3,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_SUBGROUP_LOGIC',
|
|
type: 'C',
|
|
length: 3,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_SUBGROUP_ID',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_VARIABLE_NM',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_OPERATOR_NM',
|
|
type: 'C',
|
|
length: 12,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_RAW_VALUE',
|
|
type: 'C',
|
|
length: 4000,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'RLS_ACTIVE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_SECURITY: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'DSN',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'ACCESS_LEVEL',
|
|
type: 'C',
|
|
length: 10,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SAS_GROUP',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_SELECTBOX: [
|
|
{
|
|
name: 'VER_FROM_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'VER_TO_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SELECTBOX_RK',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SELECT_LIB',
|
|
type: 'C',
|
|
length: 17,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SELECT_DS',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'BASE_COLUMN',
|
|
type: 'C',
|
|
length: 36,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SELECTBOX_VALUE',
|
|
type: 'C',
|
|
length: 500,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SELECTBOX_ORDER',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SELECTBOX_TYPE',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_SIGNOFFS: [
|
|
{
|
|
name: 'TECH_FROM_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TECH_TO_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SIGNOFF_TABLE',
|
|
type: 'C',
|
|
length: 50,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SIGNOFF_SECTION_RK',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SIGNOFF_VERSION_RK',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SIGNOFF_NAME',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_SUBMIT: [
|
|
{
|
|
name: 'TABLE_ID',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SUBMIT_STATUS_CD',
|
|
type: 'C',
|
|
length: 10,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'BASE_LIB',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'BASE_DS',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SUBMITTED_BY_NM',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SUBMITTED_ON_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SUBMITTED_REASON_TXT',
|
|
type: 'C',
|
|
length: 400,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'INPUT_OBS',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'INPUT_VARS',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NUM_OF_APPROVALS_REQUIRED',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'NUM_OF_APPROVALS_REMAINING',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'REVIEWED_BY_NM',
|
|
type: 'C',
|
|
length: 100,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'REVIEWED_ON_DTTM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_TABLES: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LIBREF',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'DSN',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'NUM_OF_APPROVALS_REQUIRED',
|
|
type: 'N',
|
|
length: 4,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LOADTYPE',
|
|
type: 'C',
|
|
length: 12,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'BUSKEY',
|
|
type: 'C',
|
|
length: 1000,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'VAR_TXFROM',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'VAR_TXTO',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'VAR_BUSFROM',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'VAR_BUSTO',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'VAR_PROCESSED',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'CLOSE_VARS',
|
|
type: 'C',
|
|
length: 500,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'PRE_EDIT_HOOK',
|
|
type: 'C',
|
|
length: 200,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'POST_EDIT_HOOK',
|
|
type: 'C',
|
|
length: 200,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'PRE_APPROVE_HOOK',
|
|
type: 'C',
|
|
length: 200,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'POST_APPROVE_HOOK',
|
|
type: 'C',
|
|
length: 200,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SIGNOFF_COLS',
|
|
type: 'C',
|
|
length: 500,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SIGNOFF_HOOK',
|
|
type: 'C',
|
|
length: 200,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NOTES',
|
|
type: 'C',
|
|
length: 1000,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'RK_UNDERLYING',
|
|
type: 'C',
|
|
length: 1000,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'AUDIT_LIBDS',
|
|
type: 'C',
|
|
length: 41,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_USERS: [
|
|
{
|
|
name: 'USER_ID',
|
|
type: 'C',
|
|
length: 50,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'LAST_SEEN_DT',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'date9.',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'REGISTERED_DT',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'date9.',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_VALIDATIONS: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'BASE_LIB',
|
|
type: 'C',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'BASE_DS',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'BASE_COL',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'RULE_TYPE',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'RULE_VALUE',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'RULE_ACTIVE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.3',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_X_TEST: [
|
|
{
|
|
name: 'PRIMARY_KEY_FIELD',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SOME_CHAR',
|
|
type: 'C',
|
|
length: 32767,
|
|
format: '',
|
|
label: 'Some Character Column',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_DROPDOWN',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_NUM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_DATE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'date9.',
|
|
label: 'Some Date',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_DATETIME',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: 'Some Datetime',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_TIME',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'time8.',
|
|
label: 'Some Time',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_SHORTNUM',
|
|
type: 'N',
|
|
length: 4,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_BESTNUM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'best.',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_X_SEARCH: [
|
|
{
|
|
name: 'PRIMARY_KEY_FIELD',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Primary Key',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SITE_NAME',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'Survey Site',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'VESSEL',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'Survey Vessel',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SAMPLE_COUNT',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Samples Collected',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'DEPTH_M',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Depth (metres)',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SPECIES',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: 'Species Observed',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'CRUISE_DATE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'date9.',
|
|
label: 'Cruise Date',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'EXPEDITION_ID',
|
|
type: 'C',
|
|
length: 12,
|
|
format: '',
|
|
label: 'Expedition',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NOTES',
|
|
type: 'C',
|
|
length: 512,
|
|
format: '',
|
|
label: 'Survey Notes',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_XLMAP_DATA: [
|
|
{
|
|
name: 'LOAD_REF',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XLMAP_ID',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XLMAP_RANGE_ID',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'ROW_NO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'COL_NO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'VALUE_TXT',
|
|
type: 'C',
|
|
length: 4000,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_XLMAP_INFO: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XLMAP_ID',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XLMAP_DESCRIPTION',
|
|
type: 'C',
|
|
length: 1000,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XLMAP_TARGETLIBDS',
|
|
type: 'C',
|
|
length: 41,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
}
|
|
],
|
|
MPE_XLMAP_RULES: [
|
|
{
|
|
name: 'TX_FROM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'TX_TO',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XLMAP_ID',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XLMAP_RANGE_ID',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XLMAP_SHEET',
|
|
type: 'C',
|
|
length: 32,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XLMAP_START',
|
|
type: 'C',
|
|
length: 1000,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'XLMAP_FINISH',
|
|
type: 'C',
|
|
length: 1000,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_X_CATALOG: [],
|
|
MPE_MAXKEYVALUES: []
|
|
}
|
|
|
|
// ─── TESTDATA library: demo user tables for the Cypress E2E suite ───────────
|
|
// These tables hold the DQ-rule demo columns (HARDSELECT, READONLY, HIDDEN,
|
|
// ROUND, NUMBER_FORMAT, HARDREGEX, SOFTREGEX) and the formula demo columns
|
|
// (HARDFORMULA, SOFTFORMULA, DC.* references) that the editor specs assert
|
|
// against. They live in a separate library so DC_JSLIB.MPE_X_TEST keeps
|
|
// matching the excel upload fixtures (which predate these columns), and so
|
|
// the editor/openTableFromTree flow exercises a real two-library nav tree
|
|
// (DC_JSLIB + TESTDATA), the same way a real SAS site is laid out.
|
|
const testDataLibref = 'TESTDATA'
|
|
const testDataDir = nodePath.resolve(
|
|
driveRoot,
|
|
'files',
|
|
appLoc,
|
|
'data',
|
|
testDataLibref
|
|
)
|
|
if (!fs.existsSync(testDataDir)) {
|
|
fs.mkdirSync(testDataDir, { recursive: true })
|
|
}
|
|
|
|
const testTables = {
|
|
MPE_X_NEW: [
|
|
{
|
|
PRIMARY_KEY_FIELD: 0,
|
|
SOME_CHAR: 'this is dummy data',
|
|
SOME_DROPDOWN: 'Option 1',
|
|
SOME_HARDSELECT: 'Alpha',
|
|
SOME_NUM: 0.00105564761956,
|
|
SOME_DATE: 42,
|
|
SOME_DATETIME: 42,
|
|
SOME_TIME: 42,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44,
|
|
READONLY_COL: 'Readonly default',
|
|
HIDDEN_COL: 'Hidden default',
|
|
ROUND_COL: 1.142857,
|
|
NUMFMT_COL: 1000,
|
|
REGEX_HARD_COL: 'user@example.com',
|
|
REGEX_SOFT_COL: 'SW1A 1AA',
|
|
REGEX_BOTH_COL: 'ABC-123'
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 1,
|
|
SOME_CHAR: 'more dummy data',
|
|
SOME_DROPDOWN: 'Option 2',
|
|
SOME_HARDSELECT: 'Bravo',
|
|
SOME_NUM: 0.00521895988156,
|
|
SOME_DATE: 42,
|
|
SOME_DATETIME: 42,
|
|
SOME_TIME: 422,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44,
|
|
READONLY_COL: 'Readonly default',
|
|
HIDDEN_COL: 'Hidden default',
|
|
ROUND_COL: 2.285714,
|
|
NUMFMT_COL: 1012.5,
|
|
REGEX_HARD_COL: 'user@example.com',
|
|
REGEX_SOFT_COL: 'SW1A 1AA',
|
|
REGEX_BOTH_COL: 'ABC-123'
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 2,
|
|
SOME_CHAR: 'even more dummy data',
|
|
SOME_DROPDOWN: 'Option 3',
|
|
SOME_HARDSELECT: 'Charlie',
|
|
SOME_NUM: 0.0058409725343,
|
|
SOME_DATE: 42,
|
|
SOME_DATETIME: 42,
|
|
SOME_TIME: 142,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44,
|
|
READONLY_COL: 'Readonly default',
|
|
HIDDEN_COL: 'Hidden default',
|
|
ROUND_COL: 3.428571,
|
|
NUMFMT_COL: 1025,
|
|
REGEX_HARD_COL: 'user@example.com',
|
|
REGEX_SOFT_COL: 'SW1A 1AA',
|
|
REGEX_BOTH_COL: 'ABC-123'
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 3,
|
|
SOME_CHAR:
|
|
'It was a dark and stormy night. The wind was blowing a gale! The captain said to his mate - mate, tell us a tale. And this, is the tale he told: It was a dark and stormy night. The wind was blowing a gale! The captain said to his mate - mate, tell us a tale. And this, is the tale he told: It was a dark and stormy night. The wind was blowing a gale! The captain said to his mate - mate, tell us a tale. And this, is the tale he told:',
|
|
SOME_DROPDOWN: 'Option 2',
|
|
SOME_HARDSELECT: 'Alpha',
|
|
SOME_NUM: 0.00613050395908,
|
|
SOME_DATE: 423,
|
|
SOME_DATETIME: 423,
|
|
SOME_TIME: 44,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44,
|
|
READONLY_COL: 'Readonly default',
|
|
HIDDEN_COL: 'Hidden default',
|
|
ROUND_COL: 4.571428,
|
|
NUMFMT_COL: 1037.5,
|
|
REGEX_HARD_COL: 'user@example.com',
|
|
REGEX_SOFT_COL: 'SW1A 1AA',
|
|
REGEX_BOTH_COL: 'ABC-123'
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 4,
|
|
SOME_CHAR: 'if you can fill the unforgiving minute',
|
|
SOME_DROPDOWN: 'Option 1',
|
|
SOME_HARDSELECT: 'Bravo',
|
|
SOME_NUM: 0.01305025071513,
|
|
SOME_DATE: 4231,
|
|
SOME_DATETIME: 423123123,
|
|
SOME_TIME: 412,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44,
|
|
READONLY_COL: 'Readonly default',
|
|
HIDDEN_COL: 'Hidden default',
|
|
ROUND_COL: 5.714285,
|
|
NUMFMT_COL: 1050,
|
|
REGEX_HARD_COL: 'user@example.com',
|
|
REGEX_SOFT_COL: 'SW1A 1AA',
|
|
REGEX_BOTH_COL: 'ABC-123'
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 5,
|
|
SOME_CHAR: '= testing the formula situation',
|
|
SOME_DROPDOWN: 'Option 1',
|
|
SOME_HARDSELECT: 'Charlie',
|
|
SOME_NUM: 0.01442142483518,
|
|
SOME_DATE: 42,
|
|
SOME_DATETIME: 42,
|
|
SOME_TIME: 42,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44,
|
|
READONLY_COL: 'Readonly default',
|
|
HIDDEN_COL: 'Hidden default',
|
|
ROUND_COL: 6.857142,
|
|
NUMFMT_COL: 1062.5,
|
|
REGEX_HARD_COL: 'user@example.com',
|
|
REGEX_SOFT_COL: 'SW1A 1AA',
|
|
REGEX_BOTH_COL: 'ABC-123'
|
|
},
|
|
{
|
|
PRIMARY_KEY_FIELD: 6,
|
|
SOME_CHAR: "'=the formula with leading apostrophe",
|
|
SOME_DROPDOWN: 'Option 1',
|
|
SOME_HARDSELECT: 'Alpha',
|
|
SOME_NUM: 0.02422838845487,
|
|
SOME_DATE: 42,
|
|
SOME_DATETIME: 42,
|
|
SOME_TIME: 42,
|
|
SOME_SHORTNUM: 8,
|
|
SOME_BESTNUM: 44,
|
|
READONLY_COL: 'Readonly default',
|
|
HIDDEN_COL: 'Hidden default',
|
|
ROUND_COL: 8,
|
|
NUMFMT_COL: 1075,
|
|
REGEX_HARD_COL: 'user@example.com',
|
|
REGEX_SOFT_COL: 'SW1A 1AA',
|
|
REGEX_BOTH_COL: 'ABC-123'
|
|
}
|
|
],
|
|
MPE_X_FORMULA_TEST: Array.from({ length: 10 }, (_, i) => ({
|
|
_____DELETE__THIS__RECORD_____: 'No',
|
|
PRIMARY_KEY_FIELD: i + 1,
|
|
A_COL: i + 1,
|
|
B_COL: 10,
|
|
FORMULA_HARD_COL:
|
|
i === 6 ? '7771' : i === 8 ? '9991' : i === 9 ? '1111' : '',
|
|
FORMULA_SOFT_COL:
|
|
i === 7 ? '8882' : i === 8 ? '9992' : i === 9 ? '2222' : '',
|
|
ROW_STATUS_COL: '',
|
|
USER_NAME_COL: '',
|
|
ORIG_VALUE_COL: 'orig-' + (i + 1),
|
|
CHANGE_SUMMARY_COL: 'orig-' + (i + 1),
|
|
PLAIN_TEXT_COL:
|
|
i === 4
|
|
? '=100 + B_COL'
|
|
: i === 5
|
|
? '=100 + 200'
|
|
: i === 6
|
|
? "'=genuine literal"
|
|
: 'note-' + (i + 1)
|
|
})),
|
|
MPE_X_FORMULA_PK_TEST: [
|
|
{
|
|
_____DELETE__THIS__RECORD_____: 'No',
|
|
PK_HARDFORMULA_COL: '',
|
|
PK_SOFTFORMULA_COL: '',
|
|
A_COL: 2,
|
|
B_COL: 3
|
|
},
|
|
{
|
|
_____DELETE__THIS__RECORD_____: 'No',
|
|
PK_HARDFORMULA_COL: '',
|
|
PK_SOFTFORMULA_COL: '',
|
|
A_COL: 5,
|
|
B_COL: 4
|
|
}
|
|
],
|
|
// DEMO_01 - compact rule-bearing table, eight columns so it fits a narrow
|
|
// viewport without horizontal scrolling. Used for demos and clips that need
|
|
// the rule behaviours visible on one screen.
|
|
DEMO_01: [
|
|
{
|
|
ID: 1,
|
|
AMOUNT: 120,
|
|
SCORE: 82,
|
|
GRADE: '.a',
|
|
REF: 1001,
|
|
RATING: 4,
|
|
STATUS: 1,
|
|
LAST_REVIEWED: 23390
|
|
},
|
|
// One row already carries a special missing, so a demo can show a change
|
|
// from one special missing to another (the DIFF compares them).
|
|
{
|
|
ID: 2,
|
|
AMOUNT: 95,
|
|
SCORE: 91,
|
|
GRADE: '.b',
|
|
REF: 1002,
|
|
RATING: '.a',
|
|
STATUS: 2,
|
|
LAST_REVIEWED: 23435
|
|
},
|
|
// STATUS carries the special missing that its own SOFTSELECT dropdown
|
|
// lists, which is what makes the dropdown worth demonstrating.
|
|
{
|
|
ID: 3,
|
|
AMOUNT: 430,
|
|
SCORE: 76,
|
|
GRADE: '.c',
|
|
REF: 1003,
|
|
RATING: 3,
|
|
STATUS: '.a',
|
|
LAST_REVIEWED: 23466
|
|
},
|
|
{
|
|
ID: 4,
|
|
AMOUNT: 88,
|
|
SCORE: 88,
|
|
GRADE: '.a',
|
|
REF: 1004,
|
|
RATING: 4,
|
|
STATUS: 3,
|
|
LAST_REVIEWED: 23502
|
|
},
|
|
{
|
|
ID: 5,
|
|
AMOUNT: 210,
|
|
SCORE: 95,
|
|
GRADE: '.b',
|
|
REF: 1005,
|
|
RATING: 5,
|
|
STATUS: 1,
|
|
LAST_REVIEWED: 23557
|
|
},
|
|
{
|
|
ID: 6,
|
|
AMOUNT: 65,
|
|
SCORE: 64,
|
|
GRADE: '.c',
|
|
REF: 1006,
|
|
RATING: 2,
|
|
STATUS: 3,
|
|
LAST_REVIEWED: 23561
|
|
},
|
|
{
|
|
ID: 7,
|
|
AMOUNT: 150,
|
|
SCORE: 73,
|
|
GRADE: '.a',
|
|
REF: 1007,
|
|
RATING: 3,
|
|
STATUS: 2,
|
|
LAST_REVIEWED: 23608
|
|
},
|
|
{
|
|
ID: 8,
|
|
AMOUNT: 300,
|
|
SCORE: 99,
|
|
GRADE: '.b',
|
|
REF: 1008,
|
|
RATING: 5,
|
|
STATUS: 1,
|
|
LAST_REVIEWED: 23621
|
|
}
|
|
],
|
|
// Hook demo pair: DEMO_MIRROR is an EMPTY mirror of DEMO_ORDERS, registered
|
|
// with pre/post edit hooks (services/hooks/demo_mirror_*.js). The pre-edit
|
|
// hook shows the live rows of DEMO_ORDERS; the post-edit hook routes a
|
|
// changeset submitted against the mirror to DEMO_ORDERS.
|
|
DEMO_ORDERS: [
|
|
{ ORDER_ID: 1001, CUSTOMER: 'Acme Corp', REGION: 'EU', AMOUNT: 450, STATUS: 'NEW' },
|
|
{ ORDER_ID: 1002, CUSTOMER: 'Borealis Ltd', REGION: 'EU', AMOUNT: 980.5, STATUS: 'OPEN' },
|
|
{ ORDER_ID: 1003, CUSTOMER: 'Cobalt GmbH', REGION: 'EU', AMOUNT: 620, STATUS: 'CLOSED' },
|
|
{ ORDER_ID: 1004, CUSTOMER: 'Delta Systems', REGION: 'US', AMOUNT: 4500, STATUS: 'NEW' }
|
|
],
|
|
DEMO_MIRROR: []
|
|
}
|
|
|
|
// Schemas for the TESTDATA tables, matching the old inline getdata.js payload
|
|
// that the Cypress editor specs were calibrated against.
|
|
const testSchema = {
|
|
// Hook demo pair (see DEMO_ORDERS / DEMO_MIRROR in testTables). The mirror
|
|
// has the same shape as the real table, so the pre-edit hook can hand its rows
|
|
// straight to the grid.
|
|
DEMO_ORDERS: [
|
|
{ name: 'ORDER_ID', type: 'N', length: 8, format: '', label: 'Order Id', notnull: true },
|
|
{ name: 'CUSTOMER', type: 'C', length: 20, format: '', label: 'Customer', notnull: false },
|
|
{ name: 'REGION', type: 'C', length: 8, format: '', label: 'Region', notnull: false },
|
|
{ name: 'AMOUNT', type: 'N', length: 8, format: '', label: 'Amount', notnull: false },
|
|
{ name: 'STATUS', type: 'C', length: 12, format: '', label: 'Status', notnull: false }
|
|
],
|
|
DEMO_MIRROR: [
|
|
{ name: 'ORDER_ID', type: 'N', length: 8, format: '', label: 'Order Id', notnull: true },
|
|
{ name: 'CUSTOMER', type: 'C', length: 20, format: '', label: 'Customer', notnull: false },
|
|
{ name: 'REGION', type: 'C', length: 8, format: '', label: 'Region', notnull: false },
|
|
{ name: 'AMOUNT', type: 'N', length: 8, format: '', label: 'Amount', notnull: false },
|
|
{ name: 'STATUS', type: 'C', length: 12, format: '', label: 'Status', notnull: false }
|
|
],
|
|
MPE_X_NEW: [
|
|
{
|
|
name: 'PRIMARY_KEY_FIELD',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'SOME_CHAR',
|
|
type: 'C',
|
|
length: 32767,
|
|
format: '',
|
|
label: 'Some Character Column',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_DROPDOWN',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'SOME_DROPDOWN',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_HARDSELECT',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'SOME_HARDSELECT',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_NUM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_DATE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'date9.',
|
|
label: 'Some Date',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_DATETIME',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'datetime19.',
|
|
label: 'SOME_DATETIME',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_TIME',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'time8.',
|
|
label: 'SOME_TIME',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_SHORTNUM',
|
|
type: 'N',
|
|
length: 4,
|
|
format: '',
|
|
label: 'SOME_SHORTNUM',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SOME_BESTNUM',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'best.',
|
|
label: 'SOME_BESTNUM',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'READONLY_COL',
|
|
type: 'C',
|
|
length: 200,
|
|
format: '',
|
|
label: 'READONLY_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'HIDDEN_COL',
|
|
type: 'C',
|
|
length: 200,
|
|
format: '',
|
|
label: 'HIDDEN_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'ROUND_COL',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'ROUND_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'NUMFMT_COL',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'NUMFMT_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'REGEX_HARD_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'REGEX_HARD_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'REGEX_SOFT_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'REGEX_SOFT_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'REGEX_BOTH_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'REGEX_BOTH_COL',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_X_FORMULA_TEST: [
|
|
{
|
|
name: 'PRIMARY_KEY_FIELD',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: '',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'A_COL',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'A_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'B_COL',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'B_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'FORMULA_HARD_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'FORMULA_HARD_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'FORMULA_SOFT_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'FORMULA_SOFT_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'ROW_STATUS_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'ROW_STATUS_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'USER_NAME_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'USER_NAME_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'ORIG_VALUE_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'ORIG_VALUE_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'CHANGE_SUMMARY_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'CHANGE_SUMMARY_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'PLAIN_TEXT_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'PLAIN_TEXT_COL',
|
|
notnull: false
|
|
}
|
|
],
|
|
MPE_X_FORMULA_PK_TEST: [
|
|
{
|
|
name: 'PK_HARDFORMULA_COL',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'PK_HARDFORMULA_COL',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'PK_SOFTFORMULA_COL',
|
|
type: 'C',
|
|
length: 128,
|
|
format: '',
|
|
label: 'PK_SOFTFORMULA_COL',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'A_COL',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'A_COL',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'B_COL',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'B_COL',
|
|
notnull: false
|
|
}
|
|
],
|
|
DEMO_01: [
|
|
{
|
|
name: 'ID',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'ID',
|
|
notnull: true
|
|
},
|
|
{
|
|
name: 'AMOUNT',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Amount',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'SCORE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Score',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'GRADE',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Grade',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'REF',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Reference',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'RATING',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Rating',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'STATUS',
|
|
type: 'N',
|
|
length: 8,
|
|
format: '',
|
|
label: 'Status',
|
|
notnull: false
|
|
},
|
|
{
|
|
name: 'LAST_REVIEWED',
|
|
type: 'N',
|
|
length: 8,
|
|
format: 'date9.',
|
|
label: 'Last reviewed',
|
|
notnull: false
|
|
}
|
|
]
|
|
}
|
|
|
|
// Register the TESTDATA tables in MPE_TABLES and add their DQ rules to
|
|
// MPE_VALIDATIONS, the same way mpe_makedata.sas configures a real site.
|
|
// The tests open these tables from the nav tree and edit/submit them, so
|
|
// they need MPE_TABLES registrations (buskey, loadtype) to be editable.
|
|
tables.MPE_TABLES.push(
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: testDataLibref,
|
|
dsn: 'MPE_X_NEW',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'PRIMARY_KEY_FIELD',
|
|
notes: 'DQ rule demo table'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: testDataLibref,
|
|
dsn: 'MPE_X_FORMULA_TEST',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'PRIMARY_KEY_FIELD',
|
|
notes: 'Formula demo table'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: testDataLibref,
|
|
dsn: 'MPE_X_FORMULA_PK_TEST',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'PK_HARDFORMULA_COL PK_SOFTFORMULA_COL',
|
|
notes: 'Formula PK demo table'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: testDataLibref,
|
|
dsn: 'DEMO_01',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'ID',
|
|
notes: 'Compact rule demo table (eight columns)'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: testDataLibref,
|
|
dsn: 'DEMO_ORDERS',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'ORDER_ID',
|
|
notes: 'Hook demo - the real table the mirror points at'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: testDataLibref,
|
|
dsn: 'DEMO_MIRROR',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'ORDER_ID',
|
|
notes: 'Hook demo - an empty mirror whose hooks show and route DEMO_ORDERS',
|
|
pre_edit_hook: 'services/hooks/demo_mirror_preedit',
|
|
post_edit_hook: 'services/hooks/demo_mirror_postedit'
|
|
}
|
|
)
|
|
|
|
// Grant EDIT/APPROVE access on TESTDATA tables to the admin group, mirroring
|
|
// the AllUsers VIEW + dc-admin EDIT/APPROVE rows that MPE_SECURITY carries
|
|
// for DC_JSLIB tables.
|
|
tables.MPE_SECURITY.push(
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: '*ALL*',
|
|
dsn: '*ALL*',
|
|
access_level: 'EDIT',
|
|
sas_group: adminGroup
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: '*ALL*',
|
|
dsn: '*ALL*',
|
|
access_level: 'APPROVE',
|
|
sas_group: adminGroup
|
|
}
|
|
)
|
|
|
|
// DQ rules for the TESTDATA tables. These mirror the dqrules arrays the old
|
|
// inline getdata.js emitted, which the editor specs assert against.
|
|
const testValidations = [
|
|
// MPE_X_NEW
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'PRIMARY_KEY_FIELD',
|
|
rule_type: 'NOTNULL',
|
|
rule_value: ''
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'SOME_NUM',
|
|
rule_type: 'HARDSELECT_HOOK',
|
|
rule_value: 'services/validations/mpe_x_test.some_num'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'SOME_HARDSELECT',
|
|
rule_type: 'HARDSELECT',
|
|
rule_value: ''
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'READONLY_COL',
|
|
rule_type: 'READONLY',
|
|
rule_value: 'Readonly default'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'HIDDEN_COL',
|
|
rule_type: 'HIDDEN',
|
|
rule_value: 'Hidden default'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'ROUND_COL',
|
|
rule_type: 'ROUND',
|
|
rule_value: '2'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'NUMFMT_COL',
|
|
rule_type: 'NUMBER_FORMAT',
|
|
rule_value: '{"style":"currency","currency":"EUR"}'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'REGEX_HARD_COL',
|
|
rule_type: 'HARDREGEX',
|
|
rule_value: '/[\\w.]+@[\\w]+\\.[a-z]{2,}/'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'REGEX_SOFT_COL',
|
|
rule_type: 'SOFTREGEX',
|
|
rule_value: '/[A-Z]{1,2}\\d{1,2}[A-Z]?\\s?\\d[A-Z]{2}/'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'REGEX_BOTH_COL',
|
|
rule_type: 'HARDREGEX',
|
|
rule_value: '/^[A-Z0-9_-]+$/'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_NEW',
|
|
base_col: 'REGEX_BOTH_COL',
|
|
rule_type: 'SOFTREGEX',
|
|
rule_value: '/^.{5,10}$/'
|
|
},
|
|
// MPE_X_FORMULA_TEST
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_FORMULA_TEST',
|
|
base_col: 'PRIMARY_KEY_FIELD',
|
|
rule_type: 'NOTNULL',
|
|
rule_value: ''
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_FORMULA_TEST',
|
|
base_col: 'FORMULA_HARD_COL',
|
|
rule_type: 'HARDFORMULA',
|
|
rule_value: '=A_COL * B_COL'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_FORMULA_TEST',
|
|
base_col: 'FORMULA_SOFT_COL',
|
|
rule_type: 'SOFTFORMULA',
|
|
rule_value: '=A_COL + B_COL'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_FORMULA_TEST',
|
|
base_col: 'ROW_STATUS_COL',
|
|
rule_type: 'SOFTFORMULA',
|
|
rule_value: '=DC.ROW_STATUS'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_FORMULA_TEST',
|
|
base_col: 'USER_NAME_COL',
|
|
rule_type: 'SOFTFORMULA',
|
|
rule_value: '=DC.USER_NAME'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_FORMULA_TEST',
|
|
base_col: 'ORIG_VALUE_COL',
|
|
rule_type: 'SOFTFORMULA',
|
|
rule_value: '=DC.ORIG_VALUE'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_FORMULA_TEST',
|
|
base_col: 'CHANGE_SUMMARY_COL',
|
|
rule_type: 'SOFTFORMULA',
|
|
rule_value:
|
|
'=IF( DC.ROW_STATUS ="U","unedited", DC.USER_NAME &" changed from "& DC.ORIG_VALUE )'
|
|
},
|
|
// MPE_X_FORMULA_PK_TEST
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_FORMULA_PK_TEST',
|
|
base_col: 'PK_HARDFORMULA_COL',
|
|
rule_type: 'HARDFORMULA',
|
|
rule_value: '=A_COL * B_COL'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'MPE_X_FORMULA_PK_TEST',
|
|
base_col: 'PK_SOFTFORMULA_COL',
|
|
rule_type: 'SOFTFORMULA',
|
|
rule_value: '="PK-" & A_COL'
|
|
},
|
|
// DEMO_01 - the compact rule demo table. A rule per column so each behaviour is
|
|
// visible in isolation: a numeric floor, a numeric ceiling, a floor and a
|
|
// ceiling expressed in special missings, a pattern on a numeric column, and a
|
|
// dropdown whose list is taken from the column itself (the library.member.column
|
|
// form the docs describe) so it can list the special missing that column holds.
|
|
// ID carries no rule: it is the table's buskey, and Data Controller applies NOT
|
|
// NULL to a primary key by itself.
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'DEMO_01',
|
|
base_col: 'AMOUNT',
|
|
rule_type: 'MINVAL',
|
|
rule_value: '1'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'DEMO_01',
|
|
base_col: 'SCORE',
|
|
rule_type: 'MAXVAL',
|
|
rule_value: '100'
|
|
},
|
|
// A range expressed in special missings, so it is the SAS order of the missing
|
|
// values that decides it: .A is the floor and .C the ceiling, which takes .B
|
|
// and refuses .D.
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'DEMO_01',
|
|
base_col: 'GRADE',
|
|
rule_type: 'MINVAL',
|
|
rule_value: '.A'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'DEMO_01',
|
|
base_col: 'GRADE',
|
|
rule_type: 'MAXVAL',
|
|
rule_value: '.C'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'DEMO_01',
|
|
base_col: 'REF',
|
|
rule_type: 'SOFTREGEX',
|
|
rule_value: '/^[0-9]+$/'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'DEMO_01',
|
|
base_col: 'STATUS',
|
|
rule_type: 'SOFTSELECT',
|
|
rule_value: testDataLibref + '.DEMO_01.STATUS'
|
|
},
|
|
// Hook demo: the mirror carries its OWN rule set, separate from the real
|
|
// table's - which is the whole point of routing edits through a mirror.
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'DEMO_MIRROR',
|
|
base_col: 'AMOUNT',
|
|
rule_type: 'MAXVAL',
|
|
rule_value: '2000'
|
|
},
|
|
{
|
|
base_lib: testDataLibref,
|
|
base_ds: 'DEMO_ORDERS',
|
|
base_col: 'AMOUNT',
|
|
rule_type: 'MAXVAL',
|
|
rule_value: '100000'
|
|
}
|
|
]
|
|
for (const v of testValidations) {
|
|
tables.MPE_VALIDATIONS.push({
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
...v,
|
|
rule_active: 1
|
|
})
|
|
}
|
|
|
|
// Selectbox values for the TESTDATA demo dropdowns (HARDSELECT/SOME_HARDSELECT)
|
|
const testSelectboxBase = {
|
|
select_lib: testDataLibref,
|
|
select_ds: 'MPE_X_NEW',
|
|
ver_from_dttm: 0,
|
|
ver_to_dttm: 127490111999
|
|
}
|
|
tables.MPE_SELECTBOX.push(
|
|
{
|
|
...testSelectboxBase,
|
|
selectbox_rk: 1001,
|
|
base_column: 'SOME_HARDSELECT',
|
|
selectbox_value: 'Alpha',
|
|
selectbox_order: 1
|
|
},
|
|
{
|
|
...testSelectboxBase,
|
|
selectbox_rk: 1002,
|
|
base_column: 'SOME_HARDSELECT',
|
|
selectbox_value: 'Bravo',
|
|
selectbox_order: 2
|
|
},
|
|
{
|
|
...testSelectboxBase,
|
|
selectbox_rk: 1003,
|
|
base_column: 'SOME_HARDSELECT',
|
|
selectbox_value: 'Charlie',
|
|
selectbox_order: 3
|
|
},
|
|
{
|
|
...testSelectboxBase,
|
|
selectbox_rk: 1004,
|
|
base_column: 'SOME_DROPDOWN',
|
|
selectbox_value: 'Option 1',
|
|
selectbox_order: 1
|
|
},
|
|
{
|
|
...testSelectboxBase,
|
|
selectbox_rk: 1005,
|
|
base_column: 'SOME_DROPDOWN',
|
|
selectbox_value: 'Option 2',
|
|
selectbox_order: 2
|
|
},
|
|
{
|
|
...testSelectboxBase,
|
|
selectbox_rk: 1006,
|
|
base_column: 'SOME_DROPDOWN',
|
|
selectbox_value: 'Option 3',
|
|
selectbox_order: 3
|
|
}
|
|
)
|
|
|
|
// Write one JSON file per test table with metadata + rows
|
|
for (const [tableName, rows] of Object.entries(testTables)) {
|
|
const tableFile = nodePath.resolve(
|
|
testDataDir,
|
|
tableName.toLowerCase() + '.json'
|
|
)
|
|
const tableData = {
|
|
name: tableName,
|
|
columns: testSchema[tableName] || [],
|
|
rows: rows
|
|
}
|
|
fs.writeFileSync(tableFile, JSON.stringify(tableData, null, 2))
|
|
}
|
|
console.log('TESTDATA data dir: ' + testDataDir)
|
|
|
|
// ─── DC996664 library: extra libref for the multi-load Cypress E2E fixtures ──
|
|
// The multi_load_test_1/2.xlsx fixture files have sheet names like
|
|
// DC996664.MPE_X_TEST, DC996664.MPE_TABLES, DC996664.MPE_VALIDATIONS.
|
|
// Those libref.table combos must exist in MPE_TABLES (so startupservice
|
|
// returns them in sasdatasets and the multi-load sheet matcher accepts
|
|
// them) and have their own data folder (so viewlibs lists the libref).
|
|
const multiLoadLibref = 'DC996664'
|
|
const multiLoadDataDir = nodePath.resolve(
|
|
driveRoot,
|
|
'files',
|
|
appLoc,
|
|
'data',
|
|
multiLoadLibref
|
|
)
|
|
if (!fs.existsSync(multiLoadDataDir)) {
|
|
fs.mkdirSync(multiLoadDataDir, { recursive: true })
|
|
}
|
|
tables.MPE_TABLES.push(
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: multiLoadLibref,
|
|
dsn: 'MPE_X_TEST',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'UPDATE',
|
|
buskey: 'PRIMARY_KEY_FIELD',
|
|
notes: 'Multi-load fixture table'
|
|
},
|
|
{
|
|
tx_from: 0,
|
|
tx_to: 127490111999,
|
|
libref: multiLoadLibref,
|
|
dsn: 'MPE_TABLES',
|
|
num_of_approvals_required: 1,
|
|
loadtype: 'TXTEMPORAL',
|
|
buskey: 'LIBREF DSN',
|
|
var_txfrom: 'TX_FROM',
|
|
var_txto: 'TX_TO',
|
|
notes: 'Multi-load fixture table'
|
|
}
|
|
)
|
|
console.log(multiLoadLibref + ' data dir: ' + multiLoadDataDir)
|
|
|
|
// Write one JSON file per table with metadata + rows
|
|
for (const [tableName, rows] of Object.entries(tables)) {
|
|
const tableFile = nodePath.resolve(dataDir, tableName.toLowerCase() + '.json')
|
|
const tableData = {
|
|
name: tableName,
|
|
columns: schema[tableName] || [],
|
|
rows: rows
|
|
}
|
|
fs.writeFileSync(tableFile, JSON.stringify(tableData, null, 2))
|
|
}
|
|
|
|
// Copy DC_JSLIB table files into DC996664 (same schema/rows) so the
|
|
// multi-load fixtures can fetch getdata for DC996664.MPE_X_TEST etc.
|
|
// Must run after the DC_JSLIB write loop above.
|
|
for (const tableName of ['MPE_X_TEST', 'MPE_TABLES']) {
|
|
const srcFile = nodePath.resolve(dataDir, tableName.toLowerCase() + '.json')
|
|
const dstFile = nodePath.resolve(
|
|
multiLoadDataDir,
|
|
tableName.toLowerCase() + '.json'
|
|
)
|
|
try {
|
|
const data = JSON.parse(
|
|
fs.readFileSync(srcFile, { encoding: 'utf8' }).toString()
|
|
)
|
|
fs.writeFileSync(dstFile, JSON.stringify(data, null, 2))
|
|
} catch (err) {
|
|
console.log(
|
|
'Warning: could not copy ' +
|
|
tableName +
|
|
' to ' +
|
|
multiLoadLibref +
|
|
': ' +
|
|
err.message
|
|
)
|
|
}
|
|
}
|
|
|
|
console.log('DC data dir: ' + dataDir)
|
|
console.log('DCLIB: ' + dcLibref)
|
|
console.log('ADMIN: ' + adminGroup)
|
|
|
|
// Write settings (what the real settings.sas would contain) as a JS module at
|
|
// services/settings.js, mirroring how makedata.sas writes
|
|
// services/public/settings.sas on the real backend. Services eval() it to
|
|
// pick up dc_libref, dc_admin_group, dc_staging_area and dcpath.
|
|
const settings = {
|
|
dc_libref: dcLibref,
|
|
dc_admin_group: adminGroup,
|
|
dc_staging_area: dataDir + '/dc_staging',
|
|
dc_macros: dataDir + '/dc_macros',
|
|
mpelib: dcLibref,
|
|
dcpath: dataDir
|
|
}
|
|
const settingsFile = nodePath.resolve(
|
|
driveRoot,
|
|
'files',
|
|
appLoc,
|
|
'services',
|
|
'settings.js'
|
|
)
|
|
// `var` (not const/let) so that eval'ing the file in a service's scope makes
|
|
// dcSettings visible to the reader, same as the dcMockUtils functions.
|
|
fs.writeFileSync(
|
|
settingsFile,
|
|
'var dcSettings = ' + JSON.stringify(settings, null, 2) + '\n'
|
|
)
|
|
|
|
// Delete makedata from the Drive so the frontend polling detects completion
|
|
// The frontend checks if makedata.sas is still in appLoc/services/admin/
|
|
const makedataFilePath = nodePath.resolve(
|
|
driveRoot,
|
|
'files',
|
|
appLoc,
|
|
'services',
|
|
'admin',
|
|
'makedata.sas'
|
|
)
|
|
const makedataJsPath = nodePath.resolve(
|
|
driveRoot,
|
|
'files',
|
|
appLoc,
|
|
'services',
|
|
'admin',
|
|
'makedata.js'
|
|
)
|
|
try {
|
|
if (fs.existsSync(makedataFilePath)) {
|
|
fs.unlinkSync(makedataFilePath)
|
|
console.log('makedata.sas deleted (self-destruct)')
|
|
}
|
|
if (fs.existsSync(makedataJsPath)) {
|
|
fs.unlinkSync(makedataJsPath)
|
|
console.log('makedata.js deleted (self-destruct)')
|
|
}
|
|
} catch (err) {
|
|
console.log('Warning: could not delete makedata file: ' + err.message)
|
|
}
|
|
|
|
// Return HTML response (makedata is called as a URL redirect, not via adapter)
|
|
_webout = `<h3>Data Controller Config</h3>
|
|
<p>The following items have been successfully configured:</p>
|
|
<ul><li>Library Location (${dataDir})</li>
|
|
<li>Table Creation (${dcLibref} library)</li>
|
|
<li>Data Controller Admin Group (${adminGroup})</li>
|
|
</ul>
|
|
<p>Next Steps:</p>
|
|
<ol><li><a href="/AppStream/clickme">Launch Data Controller</a></li></ol>`
|