@openforis/arena-core 2.3.41 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/node/nodes.js +12 -4
- package/dist/esm/node/nodes.js.map +1 -1
- package/dist/esm/record/_records/recordCompletion.js +3 -3
- package/dist/esm/record/_records/recordCompletion.js.map +1 -1
- package/dist/esm/record/_records/recordGetters.js +221 -143
- package/dist/esm/record/_records/recordGetters.js.map +1 -1
- package/dist/esm/record/_records/recordNodesIndexUpdater.js +6 -4
- package/dist/esm/record/_records/recordNodesIndexUpdater.js.map +1 -1
- package/dist/esm/record/_records/recordPagesValidation.js +5 -5
- package/dist/esm/record/_records/recordPagesValidation.js.map +1 -1
- package/dist/esm/record/_records/recordUpdateOptions.js.map +1 -1
- package/dist/esm/record/_records/recordUpdater.js +1 -1
- package/dist/esm/record/_records/recordUpdater.js.map +1 -1
- package/dist/esm/record/_records/recordUtils.js +3 -7
- package/dist/esm/record/_records/recordUtils.js.map +1 -1
- package/dist/esm/record/nodePointers.js +1 -1
- package/dist/esm/record/nodePointers.js.map +1 -1
- package/dist/esm/record/recordCloner.js +1 -1
- package/dist/esm/record/recordCloner.js.map +1 -1
- package/dist/esm/record/recordExpressionEvaluator/functions.js +4 -5
- package/dist/esm/record/recordExpressionEvaluator/functions.js.map +1 -1
- package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js +1 -1
- package/dist/esm/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
- package/dist/esm/record/recordExpressionEvaluator/node/identifier/nodesFinder.js +2 -2
- package/dist/esm/record/recordExpressionEvaluator/node/identifier/nodesFinder.js.map +1 -1
- package/dist/esm/record/recordExpressionEvaluator/recordExpressionEvaluator.js +1 -1
- package/dist/esm/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
- package/dist/esm/record/recordFixer.js +5 -5
- package/dist/esm/record/recordFixer.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordExpressionValueConverter.js +2 -8
- package/dist/esm/record/recordNodesUpdater/recordExpressionValueConverter.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js +7 -7
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js +1 -6
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js +3 -4
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js +3 -3
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js +4 -9
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js +2 -3
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodesDeleter.js +2 -6
- package/dist/esm/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js +2 -9
- package/dist/esm/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodesUpdater.js +1 -1
- package/dist/esm/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
- package/dist/esm/record/recordPrettyPrinter.js +14 -12
- package/dist/esm/record/recordPrettyPrinter.js.map +1 -1
- package/dist/esm/record/recordUpdater.js +2 -2
- package/dist/esm/record/recordUpdater.js.map +1 -1
- package/dist/esm/record/recordValidator/attributeKeyValidator.js +4 -4
- package/dist/esm/record/recordValidator/attributeKeyValidator.js.map +1 -1
- package/dist/esm/record/recordValidator/attributeUniqueValidator.js +1 -1
- package/dist/esm/record/recordValidator/attributeUniqueValidator.js.map +1 -1
- package/dist/esm/record/recordValidator/attributeValidator.js +8 -10
- package/dist/esm/record/recordValidator/attributeValidator.js.map +1 -1
- package/dist/esm/record/recordValidator/countVaildator.js +2 -2
- package/dist/esm/record/recordValidator/countVaildator.js.map +1 -1
- package/dist/esm/record/recordValidator/recordValidator.js +1 -2
- package/dist/esm/record/recordValidator/recordValidator.js.map +1 -1
- package/dist/esm/survey/nodeDefsFixer.js.map +1 -1
- package/dist/esm/survey/surveys/_nodeDefs/nodeDefsIndex.js +2 -2
- package/dist/esm/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/mutationOptions.js +5 -0
- package/dist/esm/utils/mutationOptions.js.map +1 -0
- package/dist/esm/validation/index.js.map +1 -1
- package/dist/esm/validation/validations.js +26 -19
- package/dist/esm/validation/validations.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/node/nodes.d.ts +10 -3
- package/dist/node/nodes.js +12 -4
- package/dist/node/nodes.js.map +1 -1
- package/dist/record/_records/recordCompletion.js +3 -3
- package/dist/record/_records/recordCompletion.js.map +1 -1
- package/dist/record/_records/recordGetters.d.ts +104 -51
- package/dist/record/_records/recordGetters.js +221 -170
- package/dist/record/_records/recordGetters.js.map +1 -1
- package/dist/record/_records/recordNodesIndexUpdater.d.ts +6 -3
- package/dist/record/_records/recordNodesIndexUpdater.js +6 -4
- package/dist/record/_records/recordNodesIndexUpdater.js.map +1 -1
- package/dist/record/_records/recordPagesValidation.js +5 -5
- package/dist/record/_records/recordPagesValidation.js.map +1 -1
- package/dist/record/_records/recordUpdateOptions.d.ts +2 -2
- package/dist/record/_records/recordUpdateOptions.js.map +1 -1
- package/dist/record/_records/recordUpdater.js +1 -1
- package/dist/record/_records/recordUpdater.js.map +1 -1
- package/dist/record/_records/recordUtils.js +3 -7
- package/dist/record/_records/recordUtils.js.map +1 -1
- package/dist/record/nodePointers.js +1 -1
- package/dist/record/nodePointers.js.map +1 -1
- package/dist/record/recordCloner.js +1 -1
- package/dist/record/recordCloner.js.map +1 -1
- package/dist/record/recordExpressionEvaluator/functions.js +4 -5
- package/dist/record/recordExpressionEvaluator/functions.js.map +1 -1
- package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js +1 -1
- package/dist/record/recordExpressionEvaluator/node/identifier/identifier.js.map +1 -1
- package/dist/record/recordExpressionEvaluator/node/identifier/nodesFinder.js +2 -2
- package/dist/record/recordExpressionEvaluator/node/identifier/nodesFinder.js.map +1 -1
- package/dist/record/recordExpressionEvaluator/recordExpressionEvaluator.js +1 -1
- package/dist/record/recordExpressionEvaluator/recordExpressionEvaluator.js.map +1 -1
- package/dist/record/recordFixer.js +5 -5
- package/dist/record/recordFixer.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordExpressionValueConverter.js +2 -8
- package/dist/record/recordNodesUpdater/recordExpressionValueConverter.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js +7 -7
- package/dist/record/recordNodesUpdater/recordNodeDependentsApplicableUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.d.ts +2 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsBooleanUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsCodeAttributesUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js +1 -6
- package/dist/record/recordNodesUpdater/recordNodeDependentsCountUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js +3 -4
- package/dist/record/recordNodesUpdater/recordNodeDependentsDefaultValuesUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsEditableUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js +3 -3
- package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratedEntitiesUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js +4 -9
- package/dist/record/recordNodesUpdater/recordNodeDependentsEnumeratingItemsUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js +2 -3
- package/dist/record/recordNodesUpdater/recordNodeDependentsFileNamesEvaluator.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js +1 -1
- package/dist/record/recordNodesUpdater/recordNodeDependentsVisibleUpdater.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodesDeleter.js +2 -6
- package/dist/record/recordNodesUpdater/recordNodesDeleter.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js +2 -9
- package/dist/record/recordNodesUpdater/recordNodesDependentsUpdaterCommons.js.map +1 -1
- package/dist/record/recordNodesUpdater/recordNodesUpdater.js +1 -1
- package/dist/record/recordNodesUpdater/recordNodesUpdater.js.map +1 -1
- package/dist/record/recordPrettyPrinter.js +14 -12
- package/dist/record/recordPrettyPrinter.js.map +1 -1
- package/dist/record/recordUpdater.js +2 -2
- package/dist/record/recordUpdater.js.map +1 -1
- package/dist/record/recordValidator/attributeKeyValidator.js +4 -4
- package/dist/record/recordValidator/attributeKeyValidator.js.map +1 -1
- package/dist/record/recordValidator/attributeUniqueValidator.js +1 -1
- package/dist/record/recordValidator/attributeUniqueValidator.js.map +1 -1
- package/dist/record/recordValidator/attributeValidator.js +8 -10
- package/dist/record/recordValidator/attributeValidator.js.map +1 -1
- package/dist/record/recordValidator/countVaildator.js +2 -2
- package/dist/record/recordValidator/countVaildator.js.map +1 -1
- package/dist/record/recordValidator/recordValidator.js +1 -2
- package/dist/record/recordValidator/recordValidator.js.map +1 -1
- package/dist/record/records.d.ts +340 -40
- package/dist/survey/nodeDefsFixer.d.ts +2 -2
- package/dist/survey/nodeDefsFixer.js.map +1 -1
- package/dist/survey/surveys/_nodeDefs/nodeDefsIndex.d.ts +3 -6
- package/dist/survey/surveys/_nodeDefs/nodeDefsIndex.js +2 -2
- package/dist/survey/surveys/_nodeDefs/nodeDefsIndex.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/mutationOptions.d.ts +14 -0
- package/dist/utils/mutationOptions.js +9 -0
- package/dist/utils/mutationOptions.js.map +1 -0
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/validations.d.ts +17 -2
- package/dist/validation/validations.js +26 -19
- package/dist/validation/validations.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["export type { AppInfo } from './app'\n\nexport { Authorizer, AuthGroupName, UserStatus, Permission, UserTitle, UserFactory, Users } from './auth'\nexport type {\n AuthGroup,\n User,\n UserAuthGroup,\n UserAuthGroupProps,\n AuthToken,\n UserAuthTokenPayload,\n UserAuthTokenService,\n UserPrefs,\n UserPrefSurveys,\n UserProps,\n UserAuthRefreshToken,\n UserAuthRefreshTokenProps,\n UserAuthRefreshTokenPayload,\n UserService,\n UserTokenPayload,\n DownloadAuthTokenPayload,\n UserGroup,\n UserGroupProps,\n UserGroupQualifier,\n UserInvitation,\n} from './auth'\n\nexport { CategoryFactory, CategoryImportColumnType, CategoryItemFactory, CategoryLevelFactory } from './category'\nexport type {\n CategoryItemProps,\n Category,\n CategoryItem,\n CategoryLevel,\n CategoryLevelProps,\n CategoryImportSummary,\n CategoryImportSummaryColumn,\n CategoryItemService,\n CategoryLevelService,\n CategoryProps,\n CategoryService,\n} from './category'\n\nexport { Categories, CategoryItems } from './category'\n\nexport { ChainFactory, ChainStatusExec, ChainNodeDefFactory } from './chain'\nexport type {\n Chain,\n ChainProps,\n ChainService,\n ChainNodeDef,\n ChainNodeDefProps,\n ChainNodeDefService,\n ChainNodeDefAggregate,\n ChainNodeDefAggregateProps,\n} from './chain'\n\nexport { TraverseMethod } from './common'\nexport type { ArenaObject, ArenaService, Dictionary, Factory, I18n } from './common'\n\nexport type { FlatDataExportOptions, ArenaExportInfoFactoryParams, ArenaExportInfo } from './dataExport'\nexport {\n FlatDataExportDefaultOptions,\n FlatDataExportOption,\n FlatDataFiles,\n FlatDataExportModel,\n FlatDataExportColumnDataType,\n ArenaExportInfoFactory,\n UniqueFileNamesGenerator,\n} from './dataExport'\n\nexport { DataQueryMode, DataQuerySummaries } from './dataQuery'\nexport type { DataQuery, DataQuerySummary, DataQuerySummaryProps } from './dataQuery'\n\nexport { SystemError } from './error'\n\nexport {\n ExpressionNodeType,\n ExpressionNodeEvaluator,\n ExpressionVariable,\n JavascriptExpressionEvaluator,\n JavascriptExpressionParser,\n} from './expression'\nexport type {\n ArrayExpression,\n BinaryExpression,\n CallExpression,\n CompoundExpression,\n ConditionalExpression,\n ExpressionContext,\n ExpressionEvaluator,\n ExpressionFunction,\n ExpressionFunctions,\n ExpressionNode,\n ExpressionNodeEvaluatorConstructor,\n MemberExpression,\n IdentifierExpression,\n LiteralExpression,\n SequenceExpression,\n ThisExpression,\n UnaryExpression,\n} from './expression'\n\nexport { ExtraPropDataType, ExtraPropsDataGenerator } from './extraProp'\nexport type { ExtraPropDef, ExtraPropDefs } from './extraProp'\n\nexport { PointFactory, Points } from './geo'\nexport type { Point } from './geo'\n\nexport { JobBase, JobEventType, JobStatus } from './job'\nexport type { Job, JobContext, JobEvent, JobSerialized } from './job'\n\nexport { LanguageCode, Languages, LanguagesISO639part2 } from './language'\nexport type { Labels } from './language'\n\nexport type { Logger } from './logger'\n\nexport type { Message } from './message'\nexport { MessageNotificationType, MessagePropsKey, MessageStatus, MessageTargetUserType, Messages } from './message'\n\nexport { NodeFactory, NodeKeys, NodeMetaKeys, Nodes, NodeValueFormatter, NodeValues } from './node'\nexport type {\n ArenaRecordNode,\n Node,\n NodeMeta,\n NodePointer,\n NodeRefData,\n NodeService,\n NodesMap,\n NodeValueCode,\n NodeValueCoordinate,\n NodeValueFile,\n NodeValueTaxon,\n} from './node'\n\nexport {\n NodeDefCountType,\n NodeDefType,\n NodeDefFactory,\n NodeDefs,\n NodeDefEntityRenderType,\n NodeDefFileType,\n NodeDefTextInputType,\n NodeDefTextRenderType,\n FormHeaderColor,\n} from './nodeDef'\n\nexport { NodeDefExpressionEvaluator, NodeDefExpressionValidator } from './nodeDefExpressionEvaluator'\nexport type { CategoryItemProvider, TaxonProvider } from './nodeDefExpressionEvaluator'\n\nexport type {\n NodeDef,\n NodeDefLayout,\n NodeDefMeta,\n NodeDefProps,\n NodeDefPropsWithLayout,\n NodeDefBoolean,\n NodeDefBooleanProps,\n NodeDefCode,\n NodeDefCodeLayout,\n NodeDefCodeProps,\n NodeDefCoordinate,\n NodeDefCoordinateProps,\n NodeDefDate,\n NodeDefDecimal,\n NodeDefDecimalProps,\n NodeDefEntity,\n NodeDefEntityChildPosition,\n NodeDefEntityLayout,\n NodeDefEntityProps,\n NodeDefPrintOrientation,\n NodeDefFile,\n NodeDefFileProps,\n NodeDefFormHeader,\n NodeDefFormHeaderProps,\n NodeDefInteger,\n NodeDefPropsAdvanced,\n NodeDefTaxon,\n NodeDefTaxonProps,\n NodeDefText,\n NodeDefTextProps,\n NodeDefTextLayout,\n NodeDefTime,\n NodeDefTimeProps,\n NodeDefExpression,\n NodeDefMap,\n NodeDefService,\n NodeDefValidations,\n} from './nodeDef'\n\nexport {\n NodePointers,\n RecordCloner,\n RecordFactory,\n RecordFixer,\n Records,\n RECORD_STEP_DEFAULT,\n RecordExpressionEvaluator,\n RecordNodesUpdater,\n RecordPrettyPrinter,\n RecordUpdater,\n RecordUpdateResult,\n RecordValidator,\n RecordValidations,\n} from './record'\nexport type {\n AttributeValidatorParams,\n AttributesValidatorParams,\n NodeCreateParams,\n NodesUpdateParams,\n ArenaRecord,\n Record,\n RecordExpressionContext,\n RecordExpressionEvaluationContext,\n RecordService,\n RecordUpdateOptions,\n RecordValidatorParams,\n SortedAttributesValidatorParams,\n} from './record'\n\nexport { ServiceRegistry, ServiceType } from './registry'\n\nexport { DEFAULT_SRS, DEFAULT_SRS_INDEX, SRSFactory } from './srs'\nexport type { SRS, SRSIndex } from './srs'\n\nexport {\n NodeDefsFixer,\n SurveyDocImages,\n SurveyDocImageFactory,\n SurveyDocPlace,\n SurveyDependencyType,\n SurveyFactory,\n SurveyFileFactory,\n SurveyFileType,\n SurveyRefDataFactory,\n SurveySecurityProp,\n Surveys,\n surveyDocImagePropKeys,\n surveySecurityDefaults,\n defaultCycle,\n} from './survey'\nexport type {\n Survey,\n SurveyCycle,\n SurveyDependency,\n SurveyDependencyGraph,\n SurveyDocImage,\n SurveyDocImageFactoryParams,\n SurveyDocImageProps,\n SurveyFile,\n SurveyFileFactoryParams,\n SurveyFileProps,\n SurveyProps,\n SurveyRefData,\n SurveySecurity,\n SurveyService,\n} from './survey'\n\nexport { Taxa, Taxonomies, TaxonomyFactory, TaxonFactory, TaxonGenerator, VernacularNameFactory } from './taxonomy'\nexport type {\n VernacularNameParams,\n TaxonomyFactoryParams,\n TaxonFactoryParams,\n Taxonomy,\n TaxonomyService,\n VernacularNameProps,\n VernacularName,\n TaxonProps,\n Taxon,\n TaxonomyProps,\n TaxonService,\n} from './taxonomy'\n\nexport { SurveyBuilder, SurveyObjectBuilders } from './tests/builder/surveyBuilder'\nexport { RecordBuilder, RecordNodeBuilders } from './tests/builder/recordBuilder'\n\nexport {\n Arrays,\n DateFormats,\n Dates,\n FileNames,\n FileProcessor,\n Numbers,\n Objects,\n Promises,\n Queue,\n RetryProcessor,\n Strings,\n UnitOfTime,\n UUIDs,\n Versions,\n} from './utils'\n\nexport type { FileProcessorConstructorArgs, ParsedVersion } from './utils'\n\nexport {\n FieldValidators,\n ValidationFactory,\n ValidationResultFactory,\n ValidationResults,\n Validations,\n ValidationSeverity,\n Validator,\n ValidatorErrorKeys,\n} from './validation'\nexport type { FieldValidator, Validation, ValidationFields, ValidationResult, ValidationCounts } from './validation'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["export type { AppInfo } from './app'\n\nexport { Authorizer, AuthGroupName, UserStatus, Permission, UserTitle, UserFactory, Users } from './auth'\nexport type {\n AuthGroup,\n User,\n UserAuthGroup,\n UserAuthGroupProps,\n AuthToken,\n UserAuthTokenPayload,\n UserAuthTokenService,\n UserPrefs,\n UserPrefSurveys,\n UserProps,\n UserAuthRefreshToken,\n UserAuthRefreshTokenProps,\n UserAuthRefreshTokenPayload,\n UserService,\n UserTokenPayload,\n DownloadAuthTokenPayload,\n UserGroup,\n UserGroupProps,\n UserGroupQualifier,\n UserInvitation,\n} from './auth'\n\nexport { CategoryFactory, CategoryImportColumnType, CategoryItemFactory, CategoryLevelFactory } from './category'\nexport type {\n CategoryItemProps,\n Category,\n CategoryItem,\n CategoryLevel,\n CategoryLevelProps,\n CategoryImportSummary,\n CategoryImportSummaryColumn,\n CategoryItemService,\n CategoryLevelService,\n CategoryProps,\n CategoryService,\n} from './category'\n\nexport { Categories, CategoryItems } from './category'\n\nexport { ChainFactory, ChainStatusExec, ChainNodeDefFactory } from './chain'\nexport type {\n Chain,\n ChainProps,\n ChainService,\n ChainNodeDef,\n ChainNodeDefProps,\n ChainNodeDefService,\n ChainNodeDefAggregate,\n ChainNodeDefAggregateProps,\n} from './chain'\n\nexport { TraverseMethod } from './common'\nexport type { ArenaObject, ArenaService, Dictionary, Factory, I18n } from './common'\n\nexport type { FlatDataExportOptions, ArenaExportInfoFactoryParams, ArenaExportInfo } from './dataExport'\nexport {\n FlatDataExportDefaultOptions,\n FlatDataExportOption,\n FlatDataFiles,\n FlatDataExportModel,\n FlatDataExportColumnDataType,\n ArenaExportInfoFactory,\n UniqueFileNamesGenerator,\n} from './dataExport'\n\nexport { DataQueryMode, DataQuerySummaries } from './dataQuery'\nexport type { DataQuery, DataQuerySummary, DataQuerySummaryProps } from './dataQuery'\n\nexport { SystemError } from './error'\n\nexport {\n ExpressionNodeType,\n ExpressionNodeEvaluator,\n ExpressionVariable,\n JavascriptExpressionEvaluator,\n JavascriptExpressionParser,\n} from './expression'\nexport type {\n ArrayExpression,\n BinaryExpression,\n CallExpression,\n CompoundExpression,\n ConditionalExpression,\n ExpressionContext,\n ExpressionEvaluator,\n ExpressionFunction,\n ExpressionFunctions,\n ExpressionNode,\n ExpressionNodeEvaluatorConstructor,\n MemberExpression,\n IdentifierExpression,\n LiteralExpression,\n SequenceExpression,\n ThisExpression,\n UnaryExpression,\n} from './expression'\n\nexport { ExtraPropDataType, ExtraPropsDataGenerator } from './extraProp'\nexport type { ExtraPropDef, ExtraPropDefs } from './extraProp'\n\nexport { PointFactory, Points } from './geo'\nexport type { Point } from './geo'\n\nexport { JobBase, JobEventType, JobStatus } from './job'\nexport type { Job, JobContext, JobEvent, JobSerialized } from './job'\n\nexport { LanguageCode, Languages, LanguagesISO639part2 } from './language'\nexport type { Labels } from './language'\n\nexport type { Logger } from './logger'\n\nexport type { Message } from './message'\nexport { MessageNotificationType, MessagePropsKey, MessageStatus, MessageTargetUserType, Messages } from './message'\n\nexport { NodeFactory, NodeKeys, NodeMetaKeys, Nodes, NodeValueFormatter, NodeValues } from './node'\nexport type {\n ArenaRecordNode,\n Node,\n NodeMeta,\n NodePointer,\n NodeRefData,\n NodeService,\n NodesMap,\n NodeValueCode,\n NodeValueCoordinate,\n NodeValueFile,\n NodeValueTaxon,\n} from './node'\n\nexport {\n NodeDefCountType,\n NodeDefType,\n NodeDefFactory,\n NodeDefs,\n NodeDefEntityRenderType,\n NodeDefFileType,\n NodeDefTextInputType,\n NodeDefTextRenderType,\n FormHeaderColor,\n} from './nodeDef'\n\nexport { NodeDefExpressionEvaluator, NodeDefExpressionValidator } from './nodeDefExpressionEvaluator'\nexport type { CategoryItemProvider, TaxonProvider } from './nodeDefExpressionEvaluator'\n\nexport type {\n NodeDef,\n NodeDefLayout,\n NodeDefMeta,\n NodeDefProps,\n NodeDefPropsWithLayout,\n NodeDefBoolean,\n NodeDefBooleanProps,\n NodeDefCode,\n NodeDefCodeLayout,\n NodeDefCodeProps,\n NodeDefCoordinate,\n NodeDefCoordinateProps,\n NodeDefDate,\n NodeDefDecimal,\n NodeDefDecimalProps,\n NodeDefEntity,\n NodeDefEntityChildPosition,\n NodeDefEntityLayout,\n NodeDefEntityProps,\n NodeDefPrintOrientation,\n NodeDefFile,\n NodeDefFileProps,\n NodeDefFormHeader,\n NodeDefFormHeaderProps,\n NodeDefInteger,\n NodeDefPropsAdvanced,\n NodeDefTaxon,\n NodeDefTaxonProps,\n NodeDefText,\n NodeDefTextProps,\n NodeDefTextLayout,\n NodeDefTime,\n NodeDefTimeProps,\n NodeDefExpression,\n NodeDefMap,\n NodeDefService,\n NodeDefValidations,\n} from './nodeDef'\n\nexport {\n NodePointers,\n RecordCloner,\n RecordFactory,\n RecordFixer,\n Records,\n RECORD_STEP_DEFAULT,\n RecordExpressionEvaluator,\n RecordNodesUpdater,\n RecordPrettyPrinter,\n RecordUpdater,\n RecordUpdateResult,\n RecordValidator,\n RecordValidations,\n} from './record'\nexport type {\n AttributeValidatorParams,\n AttributesValidatorParams,\n NodeCreateParams,\n NodesUpdateParams,\n ArenaRecord,\n Record,\n RecordExpressionContext,\n RecordExpressionEvaluationContext,\n RecordService,\n RecordUpdateOptions,\n RecordValidatorParams,\n SortedAttributesValidatorParams,\n} from './record'\n\nexport { ServiceRegistry, ServiceType } from './registry'\n\nexport { DEFAULT_SRS, DEFAULT_SRS_INDEX, SRSFactory } from './srs'\nexport type { SRS, SRSIndex } from './srs'\n\nexport {\n NodeDefsFixer,\n SurveyDocImages,\n SurveyDocImageFactory,\n SurveyDocPlace,\n SurveyDependencyType,\n SurveyFactory,\n SurveyFileFactory,\n SurveyFileType,\n SurveyRefDataFactory,\n SurveySecurityProp,\n Surveys,\n surveyDocImagePropKeys,\n surveySecurityDefaults,\n defaultCycle,\n} from './survey'\nexport type {\n Survey,\n SurveyCycle,\n SurveyDependency,\n SurveyDependencyGraph,\n SurveyDocImage,\n SurveyDocImageFactoryParams,\n SurveyDocImageProps,\n SurveyFile,\n SurveyFileFactoryParams,\n SurveyFileProps,\n SurveyProps,\n SurveyRefData,\n SurveySecurity,\n SurveyService,\n} from './survey'\n\nexport { Taxa, Taxonomies, TaxonomyFactory, TaxonFactory, TaxonGenerator, VernacularNameFactory } from './taxonomy'\nexport type {\n VernacularNameParams,\n TaxonomyFactoryParams,\n TaxonFactoryParams,\n Taxonomy,\n TaxonomyService,\n VernacularNameProps,\n VernacularName,\n TaxonProps,\n Taxon,\n TaxonomyProps,\n TaxonService,\n} from './taxonomy'\n\nexport { SurveyBuilder, SurveyObjectBuilders } from './tests/builder/surveyBuilder'\nexport { RecordBuilder, RecordNodeBuilders } from './tests/builder/recordBuilder'\n\nexport {\n Arrays,\n DateFormats,\n Dates,\n FileNames,\n FileProcessor,\n Numbers,\n Objects,\n Promises,\n Queue,\n RetryProcessor,\n Strings,\n UnitOfTime,\n UUIDs,\n Versions,\n} from './utils'\n\nexport type { FileProcessorConstructorArgs, MutationOptions, ParsedVersion } from './utils'\n\nexport {\n FieldValidators,\n ValidationFactory,\n ValidationResultFactory,\n ValidationResults,\n Validations,\n ValidationSeverity,\n Validator,\n ValidatorErrorKeys,\n} from './validation'\nexport type {\n DissocFieldValidationOptions,\n FieldValidator,\n Validation,\n ValidationFields,\n ValidationResult,\n ValidationCounts,\n} from './validation'\n"]}
|
package/dist/node/nodes.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { NodeDef, NodeDefCountType } from '../nodeDef';
|
|
2
|
+
import { MutationOptions } from '../utils/mutationOptions';
|
|
2
3
|
import { ArenaRecordNode } from './node';
|
|
3
4
|
declare const isRoot: (node: ArenaRecordNode) => boolean;
|
|
4
5
|
declare const areEqual: (nodeA: ArenaRecordNode, nodeB: ArenaRecordNode) => boolean;
|
|
@@ -64,8 +65,12 @@ declare const dissocChildApplicability: (node: ArenaRecordNode, nodeDefUuid: str
|
|
|
64
65
|
};
|
|
65
66
|
};
|
|
66
67
|
};
|
|
67
|
-
declare
|
|
68
|
-
|
|
68
|
+
declare function assocChildEditable(node: ArenaRecordNode, nodeDefUuid: string, editable: boolean, options?: MutationOptions): ArenaRecordNode;
|
|
69
|
+
/** @deprecated Pass the options object instead of the positional boolean: `{ sideEffect }` */
|
|
70
|
+
declare function assocChildEditable(node: ArenaRecordNode, nodeDefUuid: string, editable: boolean, sideEffect: boolean): ArenaRecordNode;
|
|
71
|
+
declare function assocChildVisible(node: ArenaRecordNode, nodeDefUuid: string, visible: boolean, options?: MutationOptions): ArenaRecordNode;
|
|
72
|
+
/** @deprecated Pass the options object instead of the positional boolean: `{ sideEffect }` */
|
|
73
|
+
declare function assocChildVisible(node: ArenaRecordNode, nodeDefUuid: string, visible: boolean, sideEffect: boolean): ArenaRecordNode;
|
|
69
74
|
declare const assocChildrenCount: (params: {
|
|
70
75
|
node: ArenaRecordNode;
|
|
71
76
|
nodeDefUuid: string;
|
|
@@ -86,7 +91,9 @@ declare const removeStatusFlags: ({ node, sideEffect, }: {
|
|
|
86
91
|
node: ArenaRecordNode;
|
|
87
92
|
sideEffect?: boolean;
|
|
88
93
|
}) => ArenaRecordNode;
|
|
89
|
-
declare
|
|
94
|
+
declare function assocValue(node: ArenaRecordNode, value: any, options?: MutationOptions): ArenaRecordNode;
|
|
95
|
+
/** @deprecated Pass the options object instead of the positional boolean: `{ sideEffect }` */
|
|
96
|
+
declare function assocValue(node: ArenaRecordNode, value: any, sideEffect: boolean): ArenaRecordNode;
|
|
90
97
|
export declare const Nodes: {
|
|
91
98
|
isRoot: typeof isRoot;
|
|
92
99
|
areEqual: typeof areEqual;
|
package/dist/node/nodes.js
CHANGED
|
@@ -14,6 +14,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
14
14
|
exports.Nodes = void 0;
|
|
15
15
|
const nodeDef_1 = require("../nodeDef");
|
|
16
16
|
const utils_1 = require("../utils");
|
|
17
|
+
const mutationOptions_1 = require("../utils/mutationOptions");
|
|
17
18
|
const isRoot = (node) => !node.parentUuid;
|
|
18
19
|
const areEqual = (nodeA, nodeB) => nodeA.uuid === nodeB.uuid;
|
|
19
20
|
const isChildApplicable = (node, nodeDefUuid) => {
|
|
@@ -88,8 +89,14 @@ const updateMetaDictionary = ({ node, nodeDefUuid, propName, propValue, sideEffe
|
|
|
88
89
|
nodeUpdated.dateModified = utils_1.Dates.nowFormattedForStorage();
|
|
89
90
|
return nodeUpdated;
|
|
90
91
|
};
|
|
91
|
-
|
|
92
|
-
const
|
|
92
|
+
function assocChildEditable(node, nodeDefUuid, editable, options) {
|
|
93
|
+
const { sideEffect = false } = (0, mutationOptions_1.toMutationOptions)(options);
|
|
94
|
+
return updateMetaDictionary({ node, nodeDefUuid, propName: 'cEdit', propValue: editable, sideEffect });
|
|
95
|
+
}
|
|
96
|
+
function assocChildVisible(node, nodeDefUuid, visible, options) {
|
|
97
|
+
const { sideEffect = false } = (0, mutationOptions_1.toMutationOptions)(options);
|
|
98
|
+
return updateMetaDictionary({ node, nodeDefUuid, propName: 'cVis', propValue: visible, sideEffect });
|
|
99
|
+
}
|
|
93
100
|
const assocChildrenCount = (params) => {
|
|
94
101
|
var _a, _b;
|
|
95
102
|
const { node, nodeDefUuid, count, countType } = params;
|
|
@@ -126,8 +133,9 @@ const omitStatusFlags = (node) => {
|
|
|
126
133
|
return nodeCleaned;
|
|
127
134
|
};
|
|
128
135
|
const removeStatusFlags = ({ node, sideEffect = false, }) => (sideEffect ? clearStatusFlagsInPlace(node) : omitStatusFlags(node));
|
|
129
|
-
|
|
136
|
+
function assocValue(node, value, options) {
|
|
130
137
|
var _a;
|
|
138
|
+
const { sideEffect = false } = (0, mutationOptions_1.toMutationOptions)(options);
|
|
131
139
|
const nodeUpdated = sideEffect ? node : Object.assign({}, node);
|
|
132
140
|
nodeUpdated.value = value;
|
|
133
141
|
nodeUpdated.updated = true;
|
|
@@ -139,7 +147,7 @@ const assocValue = (node, value, sideEffect = false) => {
|
|
|
139
147
|
nodeUpdated.meta = Object.assign(Object.assign({}, meta), { defaultValueApplied: false, qualifierValueApplied: false });
|
|
140
148
|
}
|
|
141
149
|
return nodeUpdated;
|
|
142
|
-
}
|
|
150
|
+
}
|
|
143
151
|
exports.Nodes = {
|
|
144
152
|
isRoot,
|
|
145
153
|
areEqual,
|
package/dist/node/nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/node/nodes.ts"],"names":[],"mappings":"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","sourcesContent":["import { Dictionary } from '../common'\nimport { NodeDef, NodeDefCountType, NodeDefs } from '../nodeDef'\nimport { Dates, Objects } from '../utils'\nimport { ArenaRecordNode } from './node'\n\nconst isRoot = (node: ArenaRecordNode): boolean => !node.parentUuid\n\nconst areEqual = (nodeA: ArenaRecordNode, nodeB: ArenaRecordNode): boolean => nodeA.uuid === nodeB.uuid\n\nconst isChildApplicable = (node: ArenaRecordNode, nodeDefUuid: string): boolean => {\n // if child applicability is not defined for a node definition, consider it applicable\n return node.meta?.childApplicability?.[nodeDefUuid] !== false\n}\n\nconst isChildEditable = (node: ArenaRecordNode, nodeDefUuid: string): boolean => {\n // if child editability is not defined for a node definition, consider it editable\n return node.meta?.cEdit?.[nodeDefUuid] !== false\n}\n\nconst isChildVisible = (node: ArenaRecordNode, nodeDefUuid: string): boolean => {\n // if child visibility is not defined for a node definition, consider it visible\n return node.meta?.cVis?.[nodeDefUuid] !== false\n}\n\nconst getChildrenMinOrMaxCount = (params: {\n parentNode: ArenaRecordNode\n nodeDef: NodeDef<any>\n countType: NodeDefCountType\n}): number => {\n const { parentNode, nodeDef, countType } = params\n const countIndex =\n countType === NodeDefCountType.max ? parentNode.meta?.childrenMaxCount : parentNode.meta?.childrenMinCount\n\n const count = countIndex?.[nodeDef.uuid]\n if (!Objects.isEmpty(count)) return count!\n\n // count can be a constant value, specified in the node def min/max count prop\n const nodeDefCount =\n countType === NodeDefCountType.max ? NodeDefs.getMaxCount(nodeDef) : NodeDefs.getMinCount(nodeDef)\n return nodeDefCount ? Number(nodeDefCount) : Number.NaN\n}\n\nconst getChildrenMaxCount = (params: { parentNode: ArenaRecordNode; nodeDef: NodeDef<any> }): number =>\n getChildrenMinOrMaxCount({ ...params, countType: NodeDefCountType.max })\n\nconst getChildrenMinCount = (params: { parentNode: ArenaRecordNode; nodeDef: NodeDef<any> }): number =>\n getChildrenMinOrMaxCount({ ...params, countType: NodeDefCountType.min })\n\nconst getHierarchy = (node: ArenaRecordNode): string[] => [...(node.meta?.h ?? [])]\n\nconst getHierarchyCode = (node: ArenaRecordNode): string[] => [...(node.meta?.hCode ?? [])]\n\nconst mergeNodes = (target: ArenaRecordNode, ...sources: ArenaRecordNode[] | object[]): ArenaRecordNode =>\n Objects.deepMerge(target, ...sources) as unknown as ArenaRecordNode\n\nconst isDefaultValueApplied = (node: ArenaRecordNode): boolean => node?.meta?.defaultValueApplied ?? false\n\nconst isQualifierValueApplied = (node: ArenaRecordNode): boolean => node?.meta?.qualifierValueApplied ?? false\n\nconst isValueBlank = (node: ArenaRecordNode): boolean => Objects.isEmpty(node.value)\n\nconst isValueNotBlank = (node: ArenaRecordNode): boolean => Objects.isNotEmpty(node.value)\n\nconst hasUserInputValue = (node: ArenaRecordNode): boolean =>\n node && !isValueBlank(node) && !isDefaultValueApplied(node) && !isQualifierValueApplied(node)\n\nconst assocChildApplicability = (node: ArenaRecordNode, nodeDefUuid: string, applicable: boolean): ArenaRecordNode => {\n const childApplicability = { ...node.meta?.childApplicability }\n if (!applicable) {\n childApplicability[nodeDefUuid] = applicable\n } else {\n delete childApplicability[nodeDefUuid]\n }\n return {\n ...node,\n meta: { ...node.meta, childApplicability },\n updated: true,\n dateModified: Dates.nowFormattedForStorage(),\n }\n}\n\nconst dissocChildApplicability = (node: ArenaRecordNode, nodeDefUuid: string) => {\n const childApplicability = { ...node.meta?.childApplicability }\n delete childApplicability[nodeDefUuid]\n return {\n ...node,\n meta: { ...node.meta, childApplicability },\n }\n}\n\ntype MetaBooleanDictionaryProp = 'childApplicability' | 'cEdit' | 'cVis'\n\nconst updateMetaDictionary = ({\n node,\n nodeDefUuid,\n propName,\n propValue,\n sideEffect,\n}: {\n node: ArenaRecordNode\n nodeDefUuid: string\n propName: MetaBooleanDictionaryProp\n propValue: any\n sideEffect: boolean\n}): ArenaRecordNode => {\n const nodeUpdated = sideEffect ? node : { ...node }\n const metaOriginal = nodeUpdated.meta ?? {}\n const meta = sideEffect ? metaOriginal : { ...metaOriginal }\n const existingDictionary: Dictionary<boolean> = meta[propName] ?? {}\n const dictionary = sideEffect ? existingDictionary : { ...existingDictionary }\n if (propValue) {\n delete dictionary[nodeDefUuid]\n } else {\n dictionary[nodeDefUuid] = propValue\n }\n meta[propName] = dictionary\n nodeUpdated.meta = meta\n nodeUpdated.updated = true\n nodeUpdated.dateModified = Dates.nowFormattedForStorage()\n return nodeUpdated\n}\n\nconst assocChildEditable = (\n node: ArenaRecordNode,\n nodeDefUuid: string,\n editable: boolean,\n sideEffect = false\n): ArenaRecordNode => updateMetaDictionary({ node, nodeDefUuid, propName: 'cEdit', propValue: editable, sideEffect })\n\nconst assocChildVisible = (\n node: ArenaRecordNode,\n nodeDefUuid: string,\n visible: boolean,\n sideEffect = false\n): ArenaRecordNode => updateMetaDictionary({ node, nodeDefUuid, propName: 'cVis', propValue: visible, sideEffect })\n\nconst assocChildrenCount = (params: {\n node: ArenaRecordNode\n nodeDefUuid: string\n count: number\n countType: NodeDefCountType\n}): ArenaRecordNode => {\n const { node, nodeDefUuid, count, countType } = params\n const countIndex = {\n ...(countType === NodeDefCountType.max ? node.meta?.childrenMaxCount : node.meta?.childrenMinCount),\n }\n if (Number.isNaN(count)) {\n delete countIndex[nodeDefUuid]\n } else {\n countIndex[nodeDefUuid] = count\n }\n const metaUpdated = { ...node.meta }\n if (countType === NodeDefCountType.max) {\n metaUpdated.childrenMaxCount = countIndex\n } else {\n metaUpdated.childrenMinCount = countIndex\n }\n return {\n ...node,\n meta: metaUpdated,\n updated: true,\n dateModified: Dates.nowFormattedForStorage(),\n }\n}\n\nconst assocChildrenMaxCount = (params: {\n node: ArenaRecordNode\n nodeDefUuid: string\n count: number\n}): ArenaRecordNode => assocChildrenCount({ ...params, countType: NodeDefCountType.max })\n\nconst assocChildrenMinCount = (params: {\n node: ArenaRecordNode\n nodeDefUuid: string\n count: number\n}): ArenaRecordNode => assocChildrenCount({ ...params, countType: NodeDefCountType.min })\n\nconst clearStatusFlagsInPlace = (node: ArenaRecordNode): ArenaRecordNode => {\n // do not use \"delete\": it would switch the node object to the (much bigger) V8 dictionary mode\n if (node.created !== undefined) node.created = undefined\n if (node.deleted !== undefined) node.deleted = undefined\n if (node.updated !== undefined) node.updated = undefined\n return node\n}\n\nconst omitStatusFlags = (node: ArenaRecordNode): ArenaRecordNode => {\n const { created: _created, deleted: _deleted, updated: _updated, ...nodeCleaned } = node\n return nodeCleaned\n}\n\nconst removeStatusFlags = ({\n node,\n sideEffect = false,\n}: {\n node: ArenaRecordNode\n sideEffect?: boolean\n}): ArenaRecordNode => (sideEffect ? clearStatusFlagsInPlace(node) : omitStatusFlags(node))\n\nconst assocValue = (node: ArenaRecordNode, value: any, sideEffect = false): ArenaRecordNode => {\n const nodeUpdated = sideEffect ? node : { ...node }\n nodeUpdated.value = value\n nodeUpdated.updated = true\n nodeUpdated.dateModified = Dates.nowFormattedForStorage()\n if (isDefaultValueApplied(nodeUpdated) || isQualifierValueApplied(nodeUpdated)) {\n // reset defaultValueApplied and qualifierValueApplied flags\n const metaOriginal = nodeUpdated.meta ?? {}\n const meta = sideEffect ? metaOriginal : { ...metaOriginal }\n nodeUpdated.meta = { ...meta, defaultValueApplied: false, qualifierValueApplied: false }\n }\n return nodeUpdated\n}\n\nexport const Nodes = {\n isRoot,\n areEqual,\n isChildApplicable,\n isChildEditable,\n isChildVisible,\n getChildrenMinOrMaxCount,\n getChildrenMaxCount,\n getChildrenMinCount,\n getHierarchy,\n getHierarchyCode,\n isDefaultValueApplied,\n isQualifierValueApplied,\n isValueBlank,\n isValueNotBlank,\n hasUserInputValue,\n // update\n assocChildApplicability,\n dissocChildApplicability,\n assocChildEditable,\n assocChildVisible,\n assocChildrenCount,\n assocChildrenMaxCount,\n assocChildrenMinCount,\n mergeNodes,\n removeStatusFlags,\n assocValue,\n}\n"]}
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/node/nodes.ts"],"names":[],"mappings":"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","sourcesContent":["import { Dictionary } from '../common'\nimport { NodeDef, NodeDefCountType, NodeDefs } from '../nodeDef'\nimport { Dates, Objects } from '../utils'\nimport { MutationOptions, toMutationOptions } from '../utils/mutationOptions'\nimport { ArenaRecordNode } from './node'\n\nconst isRoot = (node: ArenaRecordNode): boolean => !node.parentUuid\n\nconst areEqual = (nodeA: ArenaRecordNode, nodeB: ArenaRecordNode): boolean => nodeA.uuid === nodeB.uuid\n\nconst isChildApplicable = (node: ArenaRecordNode, nodeDefUuid: string): boolean => {\n // if child applicability is not defined for a node definition, consider it applicable\n return node.meta?.childApplicability?.[nodeDefUuid] !== false\n}\n\nconst isChildEditable = (node: ArenaRecordNode, nodeDefUuid: string): boolean => {\n // if child editability is not defined for a node definition, consider it editable\n return node.meta?.cEdit?.[nodeDefUuid] !== false\n}\n\nconst isChildVisible = (node: ArenaRecordNode, nodeDefUuid: string): boolean => {\n // if child visibility is not defined for a node definition, consider it visible\n return node.meta?.cVis?.[nodeDefUuid] !== false\n}\n\nconst getChildrenMinOrMaxCount = (params: {\n parentNode: ArenaRecordNode\n nodeDef: NodeDef<any>\n countType: NodeDefCountType\n}): number => {\n const { parentNode, nodeDef, countType } = params\n const countIndex =\n countType === NodeDefCountType.max ? parentNode.meta?.childrenMaxCount : parentNode.meta?.childrenMinCount\n\n const count = countIndex?.[nodeDef.uuid]\n if (!Objects.isEmpty(count)) return count!\n\n // count can be a constant value, specified in the node def min/max count prop\n const nodeDefCount =\n countType === NodeDefCountType.max ? NodeDefs.getMaxCount(nodeDef) : NodeDefs.getMinCount(nodeDef)\n return nodeDefCount ? Number(nodeDefCount) : Number.NaN\n}\n\nconst getChildrenMaxCount = (params: { parentNode: ArenaRecordNode; nodeDef: NodeDef<any> }): number =>\n getChildrenMinOrMaxCount({ ...params, countType: NodeDefCountType.max })\n\nconst getChildrenMinCount = (params: { parentNode: ArenaRecordNode; nodeDef: NodeDef<any> }): number =>\n getChildrenMinOrMaxCount({ ...params, countType: NodeDefCountType.min })\n\nconst getHierarchy = (node: ArenaRecordNode): string[] => [...(node.meta?.h ?? [])]\n\nconst getHierarchyCode = (node: ArenaRecordNode): string[] => [...(node.meta?.hCode ?? [])]\n\nconst mergeNodes = (target: ArenaRecordNode, ...sources: ArenaRecordNode[] | object[]): ArenaRecordNode =>\n Objects.deepMerge(target, ...sources) as unknown as ArenaRecordNode\n\nconst isDefaultValueApplied = (node: ArenaRecordNode): boolean => node?.meta?.defaultValueApplied ?? false\n\nconst isQualifierValueApplied = (node: ArenaRecordNode): boolean => node?.meta?.qualifierValueApplied ?? false\n\nconst isValueBlank = (node: ArenaRecordNode): boolean => Objects.isEmpty(node.value)\n\nconst isValueNotBlank = (node: ArenaRecordNode): boolean => Objects.isNotEmpty(node.value)\n\nconst hasUserInputValue = (node: ArenaRecordNode): boolean =>\n node && !isValueBlank(node) && !isDefaultValueApplied(node) && !isQualifierValueApplied(node)\n\nconst assocChildApplicability = (node: ArenaRecordNode, nodeDefUuid: string, applicable: boolean): ArenaRecordNode => {\n const childApplicability = { ...node.meta?.childApplicability }\n if (!applicable) {\n childApplicability[nodeDefUuid] = applicable\n } else {\n delete childApplicability[nodeDefUuid]\n }\n return {\n ...node,\n meta: { ...node.meta, childApplicability },\n updated: true,\n dateModified: Dates.nowFormattedForStorage(),\n }\n}\n\nconst dissocChildApplicability = (node: ArenaRecordNode, nodeDefUuid: string) => {\n const childApplicability = { ...node.meta?.childApplicability }\n delete childApplicability[nodeDefUuid]\n return {\n ...node,\n meta: { ...node.meta, childApplicability },\n }\n}\n\ntype MetaBooleanDictionaryProp = 'childApplicability' | 'cEdit' | 'cVis'\n\nconst updateMetaDictionary = ({\n node,\n nodeDefUuid,\n propName,\n propValue,\n sideEffect,\n}: {\n node: ArenaRecordNode\n nodeDefUuid: string\n propName: MetaBooleanDictionaryProp\n propValue: any\n sideEffect: boolean\n}): ArenaRecordNode => {\n const nodeUpdated = sideEffect ? node : { ...node }\n const metaOriginal = nodeUpdated.meta ?? {}\n const meta = sideEffect ? metaOriginal : { ...metaOriginal }\n const existingDictionary: Dictionary<boolean> = meta[propName] ?? {}\n const dictionary = sideEffect ? existingDictionary : { ...existingDictionary }\n if (propValue) {\n delete dictionary[nodeDefUuid]\n } else {\n dictionary[nodeDefUuid] = propValue\n }\n meta[propName] = dictionary\n nodeUpdated.meta = meta\n nodeUpdated.updated = true\n nodeUpdated.dateModified = Dates.nowFormattedForStorage()\n return nodeUpdated\n}\n\nfunction assocChildEditable(\n node: ArenaRecordNode,\n nodeDefUuid: string,\n editable: boolean,\n options?: MutationOptions\n): ArenaRecordNode\n/** @deprecated Pass the options object instead of the positional boolean: `{ sideEffect }` */\nfunction assocChildEditable(\n node: ArenaRecordNode,\n nodeDefUuid: string,\n editable: boolean,\n sideEffect: boolean\n): ArenaRecordNode\nfunction assocChildEditable(\n node: ArenaRecordNode,\n nodeDefUuid: string,\n editable: boolean,\n options?: MutationOptions | boolean\n): ArenaRecordNode {\n const { sideEffect = false } = toMutationOptions(options)\n return updateMetaDictionary({ node, nodeDefUuid, propName: 'cEdit', propValue: editable, sideEffect })\n}\n\nfunction assocChildVisible(\n node: ArenaRecordNode,\n nodeDefUuid: string,\n visible: boolean,\n options?: MutationOptions\n): ArenaRecordNode\n/** @deprecated Pass the options object instead of the positional boolean: `{ sideEffect }` */\nfunction assocChildVisible(\n node: ArenaRecordNode,\n nodeDefUuid: string,\n visible: boolean,\n sideEffect: boolean\n): ArenaRecordNode\nfunction assocChildVisible(\n node: ArenaRecordNode,\n nodeDefUuid: string,\n visible: boolean,\n options?: MutationOptions | boolean\n): ArenaRecordNode {\n const { sideEffect = false } = toMutationOptions(options)\n return updateMetaDictionary({ node, nodeDefUuid, propName: 'cVis', propValue: visible, sideEffect })\n}\n\nconst assocChildrenCount = (params: {\n node: ArenaRecordNode\n nodeDefUuid: string\n count: number\n countType: NodeDefCountType\n}): ArenaRecordNode => {\n const { node, nodeDefUuid, count, countType } = params\n const countIndex = {\n ...(countType === NodeDefCountType.max ? node.meta?.childrenMaxCount : node.meta?.childrenMinCount),\n }\n if (Number.isNaN(count)) {\n delete countIndex[nodeDefUuid]\n } else {\n countIndex[nodeDefUuid] = count\n }\n const metaUpdated = { ...node.meta }\n if (countType === NodeDefCountType.max) {\n metaUpdated.childrenMaxCount = countIndex\n } else {\n metaUpdated.childrenMinCount = countIndex\n }\n return {\n ...node,\n meta: metaUpdated,\n updated: true,\n dateModified: Dates.nowFormattedForStorage(),\n }\n}\n\nconst assocChildrenMaxCount = (params: {\n node: ArenaRecordNode\n nodeDefUuid: string\n count: number\n}): ArenaRecordNode => assocChildrenCount({ ...params, countType: NodeDefCountType.max })\n\nconst assocChildrenMinCount = (params: {\n node: ArenaRecordNode\n nodeDefUuid: string\n count: number\n}): ArenaRecordNode => assocChildrenCount({ ...params, countType: NodeDefCountType.min })\n\nconst clearStatusFlagsInPlace = (node: ArenaRecordNode): ArenaRecordNode => {\n // do not use \"delete\": it would switch the node object to the (much bigger) V8 dictionary mode\n if (node.created !== undefined) node.created = undefined\n if (node.deleted !== undefined) node.deleted = undefined\n if (node.updated !== undefined) node.updated = undefined\n return node\n}\n\nconst omitStatusFlags = (node: ArenaRecordNode): ArenaRecordNode => {\n const { created: _created, deleted: _deleted, updated: _updated, ...nodeCleaned } = node\n return nodeCleaned\n}\n\nconst removeStatusFlags = ({\n node,\n sideEffect = false,\n}: {\n node: ArenaRecordNode\n sideEffect?: boolean\n}): ArenaRecordNode => (sideEffect ? clearStatusFlagsInPlace(node) : omitStatusFlags(node))\n\nfunction assocValue(node: ArenaRecordNode, value: any, options?: MutationOptions): ArenaRecordNode\n/** @deprecated Pass the options object instead of the positional boolean: `{ sideEffect }` */\nfunction assocValue(node: ArenaRecordNode, value: any, sideEffect: boolean): ArenaRecordNode\nfunction assocValue(node: ArenaRecordNode, value: any, options?: MutationOptions | boolean): ArenaRecordNode {\n const { sideEffect = false } = toMutationOptions(options)\n const nodeUpdated = sideEffect ? node : { ...node }\n nodeUpdated.value = value\n nodeUpdated.updated = true\n nodeUpdated.dateModified = Dates.nowFormattedForStorage()\n if (isDefaultValueApplied(nodeUpdated) || isQualifierValueApplied(nodeUpdated)) {\n // reset defaultValueApplied and qualifierValueApplied flags\n const metaOriginal = nodeUpdated.meta ?? {}\n const meta = sideEffect ? metaOriginal : { ...metaOriginal }\n nodeUpdated.meta = { ...meta, defaultValueApplied: false, qualifierValueApplied: false }\n }\n return nodeUpdated\n}\n\nexport const Nodes = {\n isRoot,\n areEqual,\n isChildApplicable,\n isChildEditable,\n isChildVisible,\n getChildrenMinOrMaxCount,\n getChildrenMaxCount,\n getChildrenMinCount,\n getHierarchy,\n getHierarchyCode,\n isDefaultValueApplied,\n isQualifierValueApplied,\n isValueBlank,\n isValueNotBlank,\n hasUserInputValue,\n // update\n assocChildApplicability,\n dissocChildApplicability,\n assocChildEditable,\n assocChildVisible,\n assocChildrenCount,\n assocChildrenMaxCount,\n assocChildrenMinCount,\n mergeNodes,\n removeStatusFlags,\n assocValue,\n}\n"]}
|
|
@@ -17,17 +17,17 @@ const getAttributeCompletionStats = (params) => {
|
|
|
17
17
|
const minCount = node_1.Nodes.getChildrenMinCount({ parentNode: entity, nodeDef });
|
|
18
18
|
if (Number.isNaN(minCount) || minCount <= 0)
|
|
19
19
|
return emptyStats();
|
|
20
|
-
const filledNodesCount = (0, recordGetters_1.getChildren)(entity, nodeDef.uuid)(record).filter(node_1.Nodes.isValueNotBlank).length;
|
|
20
|
+
const filledNodesCount = (0, recordGetters_1.getChildren)({ parentNode: entity, childDefUuid: nodeDef.uuid })(record).filter(node_1.Nodes.isValueNotBlank).length;
|
|
21
21
|
return { total: minCount, filled: Math.min(filledNodesCount, minCount) };
|
|
22
22
|
}
|
|
23
23
|
if (!nodeDef_1.NodeDefs.isRequired(nodeDef) && !nodeDef_1.NodeDefs.isKey(nodeDef))
|
|
24
24
|
return emptyStats();
|
|
25
|
-
const node = (0, recordGetters_1.getChildren)(entity, nodeDef.uuid)(record)[0];
|
|
25
|
+
const node = (0, recordGetters_1.getChildren)({ parentNode: entity, childDefUuid: nodeDef.uuid })(record)[0];
|
|
26
26
|
return { total: 1, filled: node && node_1.Nodes.isValueNotBlank(node) ? 1 : 0 };
|
|
27
27
|
};
|
|
28
28
|
const getChildEntityCompletionStats = (params) => {
|
|
29
29
|
const { survey, record, parentEntity, nodeDef } = params;
|
|
30
|
-
const childEntities = (0, recordGetters_1.getChildren)(parentEntity, nodeDef.uuid)(record);
|
|
30
|
+
const childEntities = (0, recordGetters_1.getChildren)({ parentNode: parentEntity, childDefUuid: nodeDef.uuid })(record);
|
|
31
31
|
if (nodeDef_1.NodeDefs.isSingle(nodeDef)) {
|
|
32
32
|
const childEntity = childEntities[0];
|
|
33
33
|
return childEntity ? (0, exports.getEntityCompletionStats)({ survey, record, entity: childEntity }) : emptyStats();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordCompletion.js","sourceRoot":"","sources":["../../../src/record/_records/recordCompletion.ts"],"names":[],"mappings":";;;AAAA,qCAAmD;AACnD,2CAA4E;AAC5E,yCAA8C;AAC9C,uCAAqC;AAErC,mDAAsD;AAOtD,MAAM,UAAU,GAAG,GAA0B,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;AAEzE,MAAM,QAAQ,GAAG,CAAC,QAA+B,EAAE,UAAiC,EAAQ,EAAE;IAC5F,QAAQ,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAA;IAClC,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,2BAA2B,GAAG,CAAC,MAIpC,EAAyB,EAAE;IAC1B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAE1C,IAAI,kBAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,YAAK,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;QAC3E,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO,UAAU,EAAE,CAAA;QAEhE,MAAM,gBAAgB,GAAG,IAAA,2BAAW,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"recordCompletion.js","sourceRoot":"","sources":["../../../src/record/_records/recordCompletion.ts"],"names":[],"mappings":"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","sourcesContent":["import { ArenaRecordNode, Nodes } from '../../node'\nimport { NodeDef, NodeDefProps, NodeDefs, NodeDefType } from '../../nodeDef'\nimport { Survey, Surveys } from '../../survey'\nimport { Numbers } from '../../utils'\nimport { ArenaRecord } from '../record'\nimport { getChildren, getRoot } from './recordGetters'\n\nexport interface EntityCompletionStats {\n total: number\n filled: number\n}\n\nconst emptyStats = (): EntityCompletionStats => ({ total: 0, filled: 0 })\n\nconst addStats = (statsAcc: EntityCompletionStats, statsToAdd: EntityCompletionStats): void => {\n statsAcc.total += statsToAdd.total\n statsAcc.filled += statsToAdd.filled\n}\n\nconst getAttributeCompletionStats = (params: {\n record: ArenaRecord\n entity: ArenaRecordNode\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): EntityCompletionStats => {\n const { record, entity, nodeDef } = params\n\n if (NodeDefs.isMultiple(nodeDef)) {\n const minCount = Nodes.getChildrenMinCount({ parentNode: entity, nodeDef })\n if (Number.isNaN(minCount) || minCount <= 0) return emptyStats()\n\n const filledNodesCount = getChildren({ parentNode: entity, childDefUuid: nodeDef.uuid })(record).filter(\n Nodes.isValueNotBlank\n ).length\n\n return { total: minCount, filled: Math.min(filledNodesCount, minCount) }\n }\n\n if (!NodeDefs.isRequired(nodeDef) && !NodeDefs.isKey(nodeDef)) return emptyStats()\n\n const node = getChildren({ parentNode: entity, childDefUuid: nodeDef.uuid })(record)[0]\n return { total: 1, filled: node && Nodes.isValueNotBlank(node) ? 1 : 0 }\n}\n\nconst getChildEntityCompletionStats = (params: {\n survey: Survey\n record: ArenaRecord\n parentEntity: ArenaRecordNode\n nodeDef: NodeDef<NodeDefType, NodeDefProps>\n}): EntityCompletionStats => {\n const { survey, record, parentEntity, nodeDef } = params\n const childEntities = getChildren({ parentNode: parentEntity, childDefUuid: nodeDef.uuid })(record)\n\n if (NodeDefs.isSingle(nodeDef)) {\n const childEntity = childEntities[0]\n return childEntity ? getEntityCompletionStats({ survey, record, entity: childEntity }) : emptyStats()\n }\n\n const minCountRaw = Nodes.getChildrenMinCount({ parentNode: parentEntity, nodeDef })\n const minCount = Number.isNaN(minCountRaw) ? 0 : Math.max(minCountRaw, 0)\n // entities added beyond the min count are still expected to be complete\n const expectedCount = Math.max(minCount, childEntities.length)\n if (expectedCount === 0) return emptyStats()\n\n const stats = emptyStats()\n for (let index = 0; index < expectedCount; index++) {\n const childEntity = childEntities[index]\n // a missing repetition (below the min count) counts as a single incomplete unit\n addStats(\n stats,\n childEntity ? getEntityCompletionStats({ survey, record, entity: childEntity }) : { total: 1, filled: 0 }\n )\n }\n return stats\n}\n\nexport const getEntityCompletionStats = (params: {\n survey: Survey\n record: ArenaRecord\n entity: ArenaRecordNode\n includeNestedEntities?: boolean\n}): EntityCompletionStats => {\n const { survey, record, entity, includeNestedEntities = true } = params\n const entityDef = Surveys.getNodeDefByUuid({ survey, uuid: entity.nodeDefUuid })\n const childDefs = Surveys.getNodeDefChildren({ survey, nodeDef: entityDef })\n\n const stats = emptyStats()\n for (const childDef of childDefs) {\n if (!Nodes.isChildApplicable(entity, childDef.uuid)) continue\n\n if (NodeDefs.isEntity(childDef)) {\n if (!includeNestedEntities) continue\n addStats(stats, getChildEntityCompletionStats({ survey, record, parentEntity: entity, nodeDef: childDef }))\n } else {\n addStats(stats, getAttributeCompletionStats({ record, entity, nodeDef: childDef }))\n }\n }\n return stats\n}\n\nconst toCompletionPercent = (stats: EntityCompletionStats): number => {\n const { total, filled } = stats\n if (total <= 0) return 100\n return Numbers.roundToPrecision((filled / total) * 100, 2)\n}\n\n/**\n * Returns the percentage of completion of the given entity (0-100), considering every descendant recursively.\n * A required or key attribute is considered filled when it has a non empty value; multiple attributes and\n * entities are considered filled based on their min count (see Nodes.getChildrenMinCount).\n */\nexport const getEntityCompletionPercent = (params: {\n survey: Survey\n record: ArenaRecord\n entity: ArenaRecordNode\n}): number => toCompletionPercent(getEntityCompletionStats(params))\n\n/**\n * Returns the percentage of completion of the given entity (0-100), considering only its own attributes\n * (nested entities are ignored).\n */\nexport const getEntityOwnCompletionPercent = (params: {\n survey: Survey\n record: ArenaRecord\n entity: ArenaRecordNode\n}): number => toCompletionPercent(getEntityCompletionStats({ ...params, includeNestedEntities: false }))\n\n/**\n * Returns the percentage of completion of the given record (0-100), i.e. the completion of its root entity.\n */\nexport const getRecordCompletionPercent = (params: { survey: Survey; record: ArenaRecord }): number => {\n const { survey, record } = params\n const rootEntity = getRoot(record)\n return rootEntity ? getEntityCompletionPercent({ survey, record, entity: rootEntity }) : 0\n}\n"]}
|
|
@@ -3,68 +3,117 @@ import { ArenaRecordNode, NodePointer, NodesMap } from '../../node';
|
|
|
3
3
|
import { NodeDef, NodeDefCode, NodeDefCodeProps, NodeDefProps, NodeDefType } from '../../nodeDef';
|
|
4
4
|
import { Survey, SurveyDependencyType } from '../../survey/survey';
|
|
5
5
|
import { ArenaRecord } from '../record';
|
|
6
|
+
type RecordParams = {
|
|
7
|
+
record: ArenaRecord;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Record getter: takes the parameters first and the record as separate (curried) parameter: `getter(params)(record)`.
|
|
11
|
+
* The deprecated form, with the record inside the parameters (`getter({ record, ...params })`), is still supported.
|
|
12
|
+
*/
|
|
13
|
+
type RecordGetter<P extends RecordParams, R> = {
|
|
14
|
+
/** @deprecated Pass the record as separate parameter: `getter(params)(record)` */
|
|
15
|
+
(params: P): R;
|
|
16
|
+
(params: Omit<P, 'record'>): (record: ArenaRecord) => R;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Record getter (with parameters object) that also supports the deprecated form with positional parameters:
|
|
20
|
+
* `getter(arg1, arg2)(record)`.
|
|
21
|
+
*/
|
|
22
|
+
type PositionalRecordGetter<P, A extends unknown[], R> = {
|
|
23
|
+
(params: P): (record: ArenaRecord) => R;
|
|
24
|
+
/** @deprecated Pass the parameters as an object: `getter({ ...params })(record)` */
|
|
25
|
+
(...args: A): (record: ArenaRecord) => R;
|
|
26
|
+
};
|
|
6
27
|
export declare const getCycle: (record: ArenaRecord) => string;
|
|
7
28
|
export declare const getNodes: (record: ArenaRecord) => Dictionary<ArenaRecordNode>;
|
|
8
29
|
export declare const getNodesArray: (record: ArenaRecord) => ArenaRecordNode[];
|
|
9
|
-
export declare const getNodeByUuid:
|
|
10
|
-
|
|
30
|
+
export declare const getNodeByUuid: PositionalRecordGetter<{
|
|
31
|
+
uuid: string;
|
|
32
|
+
}, [uuid: string], ArenaRecordNode | undefined>;
|
|
33
|
+
export declare const getNodesByUuids: PositionalRecordGetter<{
|
|
34
|
+
uuids: string[];
|
|
35
|
+
}, [uuids: string[]], ArenaRecordNode[]>;
|
|
11
36
|
export declare const getRoot: (record: ArenaRecord) => ArenaRecordNode | undefined;
|
|
12
|
-
export declare const getChildren:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export declare const
|
|
17
|
-
|
|
37
|
+
export declare const getChildren: PositionalRecordGetter<{
|
|
38
|
+
parentNode: ArenaRecordNode;
|
|
39
|
+
childDefUuid?: string;
|
|
40
|
+
}, [parentNode: ArenaRecordNode, childDefUuid?: string | undefined], ArenaRecordNode[]>;
|
|
41
|
+
export declare const getChild: PositionalRecordGetter<{
|
|
42
|
+
parentNode: ArenaRecordNode;
|
|
43
|
+
childDefUuid: string;
|
|
44
|
+
}, [parentNode: ArenaRecordNode, childDefUuid: string], ArenaRecordNode>;
|
|
45
|
+
export declare const getParent: PositionalRecordGetter<{
|
|
18
46
|
node: ArenaRecordNode;
|
|
19
|
-
}
|
|
20
|
-
export declare const
|
|
21
|
-
|
|
47
|
+
}, [node: ArenaRecordNode], ArenaRecordNode | undefined>;
|
|
48
|
+
export declare const getNodesByDefUuid: PositionalRecordGetter<{
|
|
49
|
+
nodeDefUuid: string;
|
|
50
|
+
}, [nodeDefUuid: string], ArenaRecordNode[]>;
|
|
51
|
+
export declare const isNodeApplicable: RecordGetter<RecordParams & {
|
|
22
52
|
node: ArenaRecordNode;
|
|
23
|
-
}
|
|
24
|
-
export declare const
|
|
25
|
-
record: ArenaRecord;
|
|
53
|
+
}, boolean>;
|
|
54
|
+
export declare const isNodeEditable: RecordGetter<RecordParams & {
|
|
26
55
|
node: ArenaRecordNode;
|
|
27
|
-
}
|
|
28
|
-
export declare const
|
|
56
|
+
}, boolean>;
|
|
57
|
+
export declare const isNodeVisible: RecordGetter<RecordParams & {
|
|
58
|
+
node: ArenaRecordNode;
|
|
59
|
+
}, boolean>;
|
|
60
|
+
export declare const getDependentCodeAttributes: PositionalRecordGetter<{
|
|
61
|
+
node: ArenaRecordNode;
|
|
62
|
+
}, [node: ArenaRecordNode], ArenaRecordNode[]>;
|
|
29
63
|
export declare const getParentCodeAttribute: (params: {
|
|
30
64
|
parentNode: ArenaRecordNode;
|
|
31
65
|
nodeDef: NodeDefCode;
|
|
32
66
|
}) => (record: ArenaRecord) => ArenaRecordNode | undefined;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Visits the specified node and its ancestors, from the node up to the root: the visit stops when the visitor returns true.
|
|
69
|
+
*/
|
|
70
|
+
export declare const visitAncestorsAndSelf: PositionalRecordGetter<{
|
|
71
|
+
node: ArenaRecordNode;
|
|
72
|
+
visitor: (node: ArenaRecordNode) => boolean | void;
|
|
73
|
+
}, [node: ArenaRecordNode, visitor: (node: ArenaRecordNode) => void, stopIfFn?: (() => boolean) | undefined], void>;
|
|
74
|
+
/**
|
|
75
|
+
* Returns the first node satisfying the predicate among the specified node and its ancestors (from the node up to the root).
|
|
76
|
+
*/
|
|
77
|
+
export declare const findAncestor: (params: {
|
|
78
|
+
node: ArenaRecordNode;
|
|
79
|
+
predicate: (node: ArenaRecordNode) => boolean;
|
|
80
|
+
}) => (record: ArenaRecord) => ArenaRecordNode | undefined;
|
|
81
|
+
export declare const getAncestor: RecordGetter<{
|
|
36
82
|
record: ArenaRecord;
|
|
37
83
|
node: ArenaRecordNode;
|
|
38
84
|
ancestorDefUuid: string;
|
|
39
|
-
}
|
|
85
|
+
}, ArenaRecordNode | undefined>;
|
|
40
86
|
/**
|
|
41
87
|
* Returns the list of ancestors from the given node to the root entity
|
|
42
88
|
*/
|
|
43
|
-
export declare const getAncestorsAndSelf:
|
|
89
|
+
export declare const getAncestorsAndSelf: RecordGetter<{
|
|
44
90
|
record: ArenaRecord;
|
|
45
91
|
node: ArenaRecordNode;
|
|
46
|
-
}
|
|
47
|
-
export declare const getDescendantsOrSelf:
|
|
92
|
+
}, ArenaRecordNode[]>;
|
|
93
|
+
export declare const getDescendantsOrSelf: RecordGetter<{
|
|
48
94
|
record: ArenaRecord;
|
|
49
95
|
node: ArenaRecordNode;
|
|
50
96
|
nodeDefDescendant: NodeDef<any>;
|
|
51
|
-
}
|
|
52
|
-
export declare const getDescendant:
|
|
97
|
+
}, ArenaRecordNode[]>;
|
|
98
|
+
export declare const getDescendant: RecordGetter<{
|
|
53
99
|
record: ArenaRecord;
|
|
54
100
|
node: ArenaRecordNode;
|
|
55
101
|
nodeDefDescendant: NodeDef<any>;
|
|
56
|
-
}
|
|
102
|
+
}, ArenaRecordNode>;
|
|
57
103
|
export declare const isDescendantOf: (params: {
|
|
58
104
|
node: ArenaRecordNode;
|
|
59
105
|
ancestor: ArenaRecordNode;
|
|
60
106
|
}) => boolean;
|
|
61
|
-
export declare const visitDescendantsAndSelf:
|
|
107
|
+
export declare const visitDescendantsAndSelf: RecordGetter<{
|
|
62
108
|
record: ArenaRecord;
|
|
63
109
|
node: ArenaRecordNode;
|
|
64
110
|
visitor: (node: ArenaRecordNode) => boolean | void;
|
|
65
111
|
traverseMethod?: TraverseMethod;
|
|
66
|
-
}
|
|
67
|
-
export declare const findDescendantOrSelf: (
|
|
112
|
+
}, void>;
|
|
113
|
+
export declare const findDescendantOrSelf: (params: {
|
|
114
|
+
node: ArenaRecordNode;
|
|
115
|
+
predicate: (node: ArenaRecordNode) => boolean;
|
|
116
|
+
}) => (record: ArenaRecord) => ArenaRecordNode | undefined;
|
|
68
117
|
type EntityKeyNodesGetterParams = {
|
|
69
118
|
survey: Survey;
|
|
70
119
|
cycle?: string;
|
|
@@ -72,62 +121,66 @@ type EntityKeyNodesGetterParams = {
|
|
|
72
121
|
entity: ArenaRecordNode;
|
|
73
122
|
keyDefs?: NodeDef<NodeDefType, NodeDefProps>[];
|
|
74
123
|
};
|
|
75
|
-
export declare const getEntityKeyNodesByDefUuid:
|
|
76
|
-
export declare const getEntityKeyNodes:
|
|
77
|
-
export declare const getEntityKeyValuesByDefUuid:
|
|
78
|
-
export declare const getEntityKeyValues:
|
|
79
|
-
export declare const getEntitySiblings:
|
|
124
|
+
export declare const getEntityKeyNodesByDefUuid: RecordGetter<EntityKeyNodesGetterParams, NodesMap>;
|
|
125
|
+
export declare const getEntityKeyNodes: RecordGetter<EntityKeyNodesGetterParams, ArenaRecordNode[]>;
|
|
126
|
+
export declare const getEntityKeyValuesByDefUuid: RecordGetter<EntityKeyNodesGetterParams, Dictionary<any>>;
|
|
127
|
+
export declare const getEntityKeyValues: RecordGetter<EntityKeyNodesGetterParams, any[]>;
|
|
128
|
+
export declare const getEntitySiblings: RecordGetter<{
|
|
80
129
|
record: ArenaRecord;
|
|
81
130
|
entity: ArenaRecordNode;
|
|
82
131
|
includeSelf?: boolean;
|
|
83
|
-
}
|
|
84
|
-
export declare const getAttributeSiblings:
|
|
132
|
+
}, ArenaRecordNode[]>;
|
|
133
|
+
export declare const getAttributeSiblings: RecordGetter<{
|
|
85
134
|
record: ArenaRecord;
|
|
86
135
|
node: ArenaRecordNode;
|
|
87
136
|
nodeDef: NodeDef<NodeDefType, NodeDefProps>;
|
|
88
|
-
}
|
|
89
|
-
export declare const getNodeIndex:
|
|
137
|
+
}, ArenaRecordNode[]>;
|
|
138
|
+
export declare const getNodeIndex: RecordGetter<{
|
|
90
139
|
record: ArenaRecord;
|
|
91
140
|
node: ArenaRecordNode;
|
|
92
|
-
}
|
|
93
|
-
export declare const findEntityByKeyValues:
|
|
141
|
+
}, number>;
|
|
142
|
+
export declare const findEntityByKeyValues: RecordGetter<{
|
|
94
143
|
survey: Survey;
|
|
95
144
|
cycle: string;
|
|
96
145
|
record: ArenaRecord;
|
|
97
146
|
parentEntity: ArenaRecordNode;
|
|
98
147
|
entityDefUuid: string;
|
|
99
148
|
keyValuesByDefUuid: Dictionary<any>;
|
|
100
|
-
}
|
|
101
|
-
export declare const findEntityWithSameKeysInAnotherRecord:
|
|
149
|
+
}, ArenaRecordNode | undefined>;
|
|
150
|
+
export declare const findEntityWithSameKeysInAnotherRecord: RecordGetter<{
|
|
102
151
|
survey: Survey;
|
|
103
152
|
cycle: string;
|
|
104
153
|
entityUuid: string;
|
|
105
154
|
record: ArenaRecord;
|
|
106
155
|
recordOther: ArenaRecord;
|
|
107
|
-
}
|
|
108
|
-
export declare const getDependentNodePointers:
|
|
156
|
+
}, ArenaRecordNode | undefined>;
|
|
157
|
+
export declare const getDependentNodePointers: RecordGetter<{
|
|
109
158
|
survey: Survey;
|
|
110
159
|
record: ArenaRecord;
|
|
111
160
|
node: ArenaRecordNode;
|
|
112
161
|
dependencyType: SurveyDependencyType;
|
|
113
162
|
includeSelf?: boolean;
|
|
114
163
|
filterFn?: (nodePointer: NodePointer) => boolean;
|
|
115
|
-
}
|
|
116
|
-
export declare const getAncestorCodePath:
|
|
164
|
+
}, NodePointer[]>;
|
|
165
|
+
export declare const getAncestorCodePath: RecordGetter<{
|
|
117
166
|
survey: Survey;
|
|
118
167
|
record: ArenaRecord;
|
|
119
168
|
parentNode: ArenaRecordNode;
|
|
120
169
|
nodeDef: NodeDef<NodeDefType.code, NodeDefCodeProps>;
|
|
121
|
-
}
|
|
122
|
-
export declare const getCategoryItemUuid:
|
|
170
|
+
}, string[]>;
|
|
171
|
+
export declare const getCategoryItemUuid: RecordGetter<{
|
|
123
172
|
survey: Survey;
|
|
124
173
|
nodeDef: NodeDef<NodeDefType.code, NodeDefCodeProps>;
|
|
125
174
|
record: ArenaRecord;
|
|
126
175
|
parentNode: ArenaRecordNode;
|
|
127
176
|
code: string;
|
|
128
|
-
}
|
|
129
|
-
export declare const isNodeFilledByUser:
|
|
130
|
-
|
|
177
|
+
}, string | undefined>;
|
|
178
|
+
export declare const isNodeFilledByUser: PositionalRecordGetter<{
|
|
179
|
+
node: ArenaRecordNode;
|
|
180
|
+
}, [node: ArenaRecordNode], boolean>;
|
|
181
|
+
export declare const isNodeEmpty: PositionalRecordGetter<{
|
|
182
|
+
node: ArenaRecordNode;
|
|
183
|
+
}, [node: ArenaRecordNode], boolean>;
|
|
131
184
|
export declare const isEmpty: (record: ArenaRecord) => boolean;
|
|
132
185
|
export declare const getStep: (record: ArenaRecord) => string;
|
|
133
186
|
export declare const isInAnalysisStep: (record: ArenaRecord) => boolean;
|