mirror of
https://github.com/datahub-project/datahub.git
synced 2025-12-25 08:58:26 +00:00
feat(forms) Extend forms support to other entity types (#9801)
This commit is contained in:
parent
e0276cf123
commit
ea4a9b281b
@ -82,7 +82,8 @@ public class ChartType
|
||||
DATA_PRODUCTS_ASPECT_NAME,
|
||||
BROWSE_PATHS_V2_ASPECT_NAME,
|
||||
SUB_TYPES_ASPECT_NAME,
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME);
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME,
|
||||
FORMS_ASPECT_NAME);
|
||||
private static final Set<String> FACET_FIELDS =
|
||||
ImmutableSet.of("access", "queryType", "tool", "type");
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@ import com.linkedin.common.BrowsePathsV2;
|
||||
import com.linkedin.common.DataPlatformInstance;
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Embed;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.InputFields;
|
||||
@ -41,6 +42,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.SubTypesMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.SystemMetadataUtils;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -128,6 +130,10 @@ public class ChartMapper implements ModelMapper<EntityResponse, Chart> {
|
||||
((chart, dataMap) ->
|
||||
chart.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
return mappingHelper.getResult();
|
||||
}
|
||||
|
||||
|
||||
@ -52,7 +52,8 @@ public class ContainerType
|
||||
Constants.DOMAINS_ASPECT_NAME,
|
||||
Constants.DEPRECATION_ASPECT_NAME,
|
||||
Constants.DATA_PRODUCTS_ASPECT_NAME,
|
||||
Constants.STRUCTURED_PROPERTIES_ASPECT_NAME);
|
||||
Constants.STRUCTURED_PROPERTIES_ASPECT_NAME,
|
||||
Constants.FORMS_ASPECT_NAME);
|
||||
|
||||
private static final Set<String> FACET_FIELDS = ImmutableSet.of("origin", "platform");
|
||||
private static final String ENTITY_NAME = "container";
|
||||
|
||||
@ -4,6 +4,7 @@ import static com.linkedin.metadata.Constants.*;
|
||||
|
||||
import com.linkedin.common.DataPlatformInstance;
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.InstitutionalMemory;
|
||||
@ -26,6 +27,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.StatusMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.SubTypesMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.SystemMetadataUtils;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
import com.linkedin.datahub.graphql.types.tag.mappers.GlobalTagsMapper;
|
||||
@ -148,6 +150,12 @@ public class ContainerMapper {
|
||||
new StructuredProperties(envelopedStructuredProps.getValue().data())));
|
||||
}
|
||||
|
||||
final EnvelopedAspect envelopedForms = aspects.get(FORMS_ASPECT_NAME);
|
||||
if (envelopedForms != null) {
|
||||
result.setForms(
|
||||
FormsMapper.map(new Forms(envelopedForms.getValue().data()), entityUrn.toString()));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ package com.linkedin.datahub.graphql.types.corpgroup.mappers;
|
||||
|
||||
import static com.linkedin.metadata.Constants.*;
|
||||
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.Origin;
|
||||
import com.linkedin.common.Ownership;
|
||||
import com.linkedin.common.urn.Urn;
|
||||
@ -10,6 +11,7 @@ import com.linkedin.datahub.graphql.generated.CorpGroup;
|
||||
import com.linkedin.datahub.graphql.generated.EntityType;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.OwnershipMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
import com.linkedin.entity.EntityResponse;
|
||||
@ -52,6 +54,10 @@ public class CorpGroupMapper implements ModelMapper<EntityResponse, CorpGroup> {
|
||||
((entity, dataMap) ->
|
||||
entity.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
if (aspectMap.containsKey(ORIGIN_ASPECT_NAME)) {
|
||||
mappingHelper.mapToResult(ORIGIN_ASPECT_NAME, this::mapEntityOriginType);
|
||||
} else {
|
||||
|
||||
@ -2,6 +2,7 @@ package com.linkedin.datahub.graphql.types.corpuser.mappers;
|
||||
|
||||
import static com.linkedin.metadata.Constants.*;
|
||||
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.urn.Urn;
|
||||
import com.linkedin.data.DataMap;
|
||||
@ -15,6 +16,7 @@ import com.linkedin.datahub.graphql.generated.DataHubView;
|
||||
import com.linkedin.datahub.graphql.generated.EntityType;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.CustomPropertiesMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
import com.linkedin.datahub.graphql.types.tag.mappers.GlobalTagsMapper;
|
||||
import com.linkedin.entity.EntityResponse;
|
||||
@ -80,6 +82,10 @@ public class CorpUserMapper {
|
||||
((entity, dataMap) ->
|
||||
entity.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
|
||||
mapCorpUserSettings(
|
||||
result, aspectMap.getOrDefault(CORP_USER_SETTINGS_ASPECT_NAME, null), featureFlags);
|
||||
|
||||
@ -82,7 +82,8 @@ public class DashboardType
|
||||
EMBED_ASPECT_NAME,
|
||||
DATA_PRODUCTS_ASPECT_NAME,
|
||||
BROWSE_PATHS_V2_ASPECT_NAME,
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME);
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME,
|
||||
FORMS_ASPECT_NAME);
|
||||
private static final Set<String> FACET_FIELDS = ImmutableSet.of("access", "tool");
|
||||
|
||||
private final EntityClient _entityClient;
|
||||
|
||||
@ -6,6 +6,7 @@ import com.linkedin.common.BrowsePathsV2;
|
||||
import com.linkedin.common.DataPlatformInstance;
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Embed;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.InputFields;
|
||||
@ -39,6 +40,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.SubTypesMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.SystemMetadataUtils;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -129,6 +131,10 @@ public class DashboardMapper implements ModelMapper<EntityResponse, Dashboard> {
|
||||
((dashboard, dataMap) ->
|
||||
dashboard.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
return mappingHelper.getResult();
|
||||
}
|
||||
|
||||
|
||||
@ -77,7 +77,8 @@ public class DataFlowType
|
||||
DATA_PLATFORM_INSTANCE_ASPECT_NAME,
|
||||
DATA_PRODUCTS_ASPECT_NAME,
|
||||
BROWSE_PATHS_V2_ASPECT_NAME,
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME);
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME,
|
||||
FORMS_ASPECT_NAME);
|
||||
private static final Set<String> FACET_FIELDS = ImmutableSet.of("orchestrator", "cluster");
|
||||
private final EntityClient _entityClient;
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import static com.linkedin.metadata.Constants.*;
|
||||
import com.linkedin.common.BrowsePathsV2;
|
||||
import com.linkedin.common.DataPlatformInstance;
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.InstitutionalMemory;
|
||||
@ -28,6 +29,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.StatusMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.SystemMetadataUtils;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -106,6 +108,10 @@ public class DataFlowMapper implements ModelMapper<EntityResponse, DataFlow> {
|
||||
((entity, dataMap) ->
|
||||
entity.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
|
||||
return mappingHelper.getResult();
|
||||
}
|
||||
|
||||
@ -79,7 +79,8 @@ public class DataJobType
|
||||
DATA_PRODUCTS_ASPECT_NAME,
|
||||
BROWSE_PATHS_V2_ASPECT_NAME,
|
||||
SUB_TYPES_ASPECT_NAME,
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME);
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME,
|
||||
FORMS_ASPECT_NAME);
|
||||
private static final Set<String> FACET_FIELDS = ImmutableSet.of("flow");
|
||||
private final EntityClient _entityClient;
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.linkedin.common.BrowsePathsV2;
|
||||
import com.linkedin.common.DataPlatformInstance;
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.InstitutionalMemory;
|
||||
@ -33,6 +34,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.StatusMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.SubTypesMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.SystemMetadataUtils;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -124,6 +126,8 @@ public class DataJobMapper implements ModelMapper<EntityResponse, DataJob> {
|
||||
} else if (STRUCTURED_PROPERTIES_ASPECT_NAME.equals(name)) {
|
||||
result.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(data)));
|
||||
} else if (FORMS_ASPECT_NAME.equals(name)) {
|
||||
result.setForms(FormsMapper.map(new Forms(data), entityUrn.toString()));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package com.linkedin.datahub.graphql.types.dataproduct;
|
||||
import static com.linkedin.metadata.Constants.DATA_PRODUCT_ENTITY_NAME;
|
||||
import static com.linkedin.metadata.Constants.DATA_PRODUCT_PROPERTIES_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.DOMAINS_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.FORMS_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.GLOBAL_TAGS_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.GLOSSARY_TERMS_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.INSTITUTIONAL_MEMORY_ASPECT_NAME;
|
||||
@ -51,7 +52,8 @@ public class DataProductType
|
||||
GLOSSARY_TERMS_ASPECT_NAME,
|
||||
DOMAINS_ASPECT_NAME,
|
||||
INSTITUTIONAL_MEMORY_ASPECT_NAME,
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME);
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME,
|
||||
FORMS_ASPECT_NAME);
|
||||
private final EntityClient _entityClient;
|
||||
|
||||
@Override
|
||||
|
||||
@ -2,12 +2,14 @@ package com.linkedin.datahub.graphql.types.dataproduct.mappers;
|
||||
|
||||
import static com.linkedin.metadata.Constants.DATA_PRODUCT_PROPERTIES_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.DOMAINS_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.FORMS_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.GLOBAL_TAGS_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.GLOSSARY_TERMS_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.INSTITUTIONAL_MEMORY_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.OWNERSHIP_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.STRUCTURED_PROPERTIES_ASPECT_NAME;
|
||||
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.InstitutionalMemory;
|
||||
@ -22,6 +24,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.InstitutionalMemoryMapp
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.OwnershipMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -82,6 +85,10 @@ public class DataProductMapper implements ModelMapper<EntityResponse, DataProduc
|
||||
((entity, dataMap) ->
|
||||
entity.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
package com.linkedin.datahub.graphql.types.domain;
|
||||
|
||||
import static com.linkedin.metadata.Constants.FORMS_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.STRUCTURED_PROPERTIES_ASPECT_NAME;
|
||||
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.InstitutionalMemory;
|
||||
import com.linkedin.common.Ownership;
|
||||
import com.linkedin.common.urn.Urn;
|
||||
@ -9,6 +11,7 @@ import com.linkedin.datahub.graphql.generated.Domain;
|
||||
import com.linkedin.datahub.graphql.generated.EntityType;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.InstitutionalMemoryMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.OwnershipMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
import com.linkedin.domain.DomainProperties;
|
||||
import com.linkedin.entity.EntityResponse;
|
||||
@ -64,6 +67,12 @@ public class DomainMapper {
|
||||
new StructuredProperties(envelopedStructuredProps.getValue().data())));
|
||||
}
|
||||
|
||||
final EnvelopedAspect envelopedForms = aspects.get(FORMS_ASPECT_NAME);
|
||||
if (envelopedForms != null) {
|
||||
result.setForms(
|
||||
FormsMapper.map(new Forms(envelopedForms.getValue().data()), entityUrn.toString()));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@ -39,7 +39,8 @@ public class DomainType
|
||||
Constants.DOMAIN_PROPERTIES_ASPECT_NAME,
|
||||
Constants.OWNERSHIP_ASPECT_NAME,
|
||||
Constants.INSTITUTIONAL_MEMORY_ASPECT_NAME,
|
||||
Constants.STRUCTURED_PROPERTIES_ASPECT_NAME);
|
||||
Constants.STRUCTURED_PROPERTIES_ASPECT_NAME,
|
||||
Constants.FORMS_ASPECT_NAME);
|
||||
private final EntityClient _entityClient;
|
||||
|
||||
public DomainType(final EntityClient entityClient) {
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.linkedin.datahub.graphql.types.glossary;
|
||||
|
||||
import static com.linkedin.metadata.Constants.FORMS_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.GLOSSARY_NODE_ENTITY_NAME;
|
||||
import static com.linkedin.metadata.Constants.GLOSSARY_NODE_INFO_ASPECT_NAME;
|
||||
import static com.linkedin.metadata.Constants.GLOSSARY_NODE_KEY_ASPECT_NAME;
|
||||
@ -33,7 +34,8 @@ public class GlossaryNodeType
|
||||
GLOSSARY_NODE_KEY_ASPECT_NAME,
|
||||
GLOSSARY_NODE_INFO_ASPECT_NAME,
|
||||
OWNERSHIP_ASPECT_NAME,
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME);
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME,
|
||||
FORMS_ASPECT_NAME);
|
||||
|
||||
private final EntityClient _entityClient;
|
||||
|
||||
|
||||
@ -59,7 +59,8 @@ public class GlossaryTermType
|
||||
BROWSE_PATHS_ASPECT_NAME,
|
||||
DOMAINS_ASPECT_NAME,
|
||||
DEPRECATION_ASPECT_NAME,
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME);
|
||||
STRUCTURED_PROPERTIES_ASPECT_NAME,
|
||||
FORMS_ASPECT_NAME);
|
||||
|
||||
private final EntityClient _entityClient;
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ package com.linkedin.datahub.graphql.types.glossary.mappers;
|
||||
|
||||
import static com.linkedin.metadata.Constants.*;
|
||||
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.Ownership;
|
||||
import com.linkedin.common.urn.Urn;
|
||||
import com.linkedin.data.DataMap;
|
||||
@ -11,6 +12,7 @@ import com.linkedin.datahub.graphql.generated.GlossaryNodeProperties;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.CustomPropertiesMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.OwnershipMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
import com.linkedin.entity.EntityResponse;
|
||||
@ -51,6 +53,10 @@ public class GlossaryNodeMapper implements ModelMapper<EntityResponse, GlossaryN
|
||||
((entity, dataMap) ->
|
||||
entity.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
|
||||
return mappingHelper.getResult();
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package com.linkedin.datahub.graphql.types.glossary.mappers;
|
||||
import static com.linkedin.metadata.Constants.*;
|
||||
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.InstitutionalMemory;
|
||||
import com.linkedin.common.Ownership;
|
||||
import com.linkedin.common.urn.Urn;
|
||||
@ -15,6 +16,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.InstitutionalMemoryMapp
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.OwnershipMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.GlossaryTermUtils;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -81,6 +83,10 @@ public class GlossaryTermMapper implements ModelMapper<EntityResponse, GlossaryT
|
||||
((entity, dataMap) ->
|
||||
entity.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
|
||||
// If there's no name property, resort to the legacy name computation.
|
||||
if (result.getGlossaryTermInfo() != null && result.getGlossaryTermInfo().getName() == null) {
|
||||
|
||||
@ -5,6 +5,7 @@ import static com.linkedin.metadata.Constants.*;
|
||||
import com.linkedin.common.BrowsePathsV2;
|
||||
import com.linkedin.common.DataPlatformInstance;
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.InstitutionalMemory;
|
||||
@ -26,6 +27,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.StatusMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.SystemMetadataUtils;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -104,6 +106,10 @@ public class MLFeatureMapper implements ModelMapper<EntityResponse, MLFeature> {
|
||||
((mlFeature, dataMap) ->
|
||||
mlFeature.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
|
||||
return mappingHelper.getResult();
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import static com.linkedin.metadata.Constants.*;
|
||||
import com.linkedin.common.BrowsePathsV2;
|
||||
import com.linkedin.common.DataPlatformInstance;
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.InstitutionalMemory;
|
||||
@ -26,6 +27,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.StatusMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.SystemMetadataUtils;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -107,6 +109,10 @@ public class MLFeatureTableMapper implements ModelMapper<EntityResponse, MLFeatu
|
||||
((mlFeatureTable, dataMap) ->
|
||||
mlFeatureTable.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
|
||||
return mappingHelper.getResult();
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import static com.linkedin.metadata.Constants.*;
|
||||
import com.linkedin.common.BrowsePathsV2;
|
||||
import com.linkedin.common.DataPlatformInstance;
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.Ownership;
|
||||
@ -25,6 +26,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.StatusMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.SystemMetadataUtils;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -99,6 +101,10 @@ public class MLModelGroupMapper implements ModelMapper<EntityResponse, MLModelGr
|
||||
((mlModelGroup, dataMap) ->
|
||||
mlModelGroup.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
|
||||
return mappingHelper.getResult();
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import com.linkedin.common.BrowsePathsV2;
|
||||
import com.linkedin.common.Cost;
|
||||
import com.linkedin.common.DataPlatformInstance;
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.InstitutionalMemory;
|
||||
@ -29,6 +30,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.StatusMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.SystemMetadataUtils;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -164,6 +166,10 @@ public class MLModelMapper implements ModelMapper<EntityResponse, MLModel> {
|
||||
((dataset, dataMap) ->
|
||||
dataset.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
|
||||
return mappingHelper.getResult();
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import static com.linkedin.metadata.Constants.*;
|
||||
|
||||
import com.linkedin.common.DataPlatformInstance;
|
||||
import com.linkedin.common.Deprecation;
|
||||
import com.linkedin.common.Forms;
|
||||
import com.linkedin.common.GlobalTags;
|
||||
import com.linkedin.common.GlossaryTerms;
|
||||
import com.linkedin.common.InstitutionalMemory;
|
||||
@ -24,6 +25,7 @@ import com.linkedin.datahub.graphql.types.common.mappers.StatusMapper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.MappingHelper;
|
||||
import com.linkedin.datahub.graphql.types.common.mappers.util.SystemMetadataUtils;
|
||||
import com.linkedin.datahub.graphql.types.domain.DomainAssociationMapper;
|
||||
import com.linkedin.datahub.graphql.types.form.FormsMapper;
|
||||
import com.linkedin.datahub.graphql.types.glossary.mappers.GlossaryTermsMapper;
|
||||
import com.linkedin.datahub.graphql.types.mappers.ModelMapper;
|
||||
import com.linkedin.datahub.graphql.types.structuredproperty.StructuredPropertiesMapper;
|
||||
@ -99,6 +101,10 @@ public class MLPrimaryKeyMapper implements ModelMapper<EntityResponse, MLPrimary
|
||||
((entity, dataMap) ->
|
||||
entity.setStructuredProperties(
|
||||
StructuredPropertiesMapper.map(new StructuredProperties(dataMap)))));
|
||||
mappingHelper.mapToResult(
|
||||
FORMS_ASPECT_NAME,
|
||||
((entity, dataMap) ->
|
||||
entity.setForms(FormsMapper.map(new Forms(dataMap), entityUrn.toString()))));
|
||||
return mappingHelper.getResult();
|
||||
}
|
||||
|
||||
|
||||
@ -1988,6 +1988,11 @@ type GlossaryTerm implements Entity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -2136,6 +2141,11 @@ type GlossaryNode implements Entity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -2552,6 +2562,11 @@ type Container implements Entity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -2932,6 +2947,11 @@ type SchemaFieldEntity implements Entity {
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
|
||||
"""
|
||||
Granular API for querying edges extending from this entity
|
||||
"""
|
||||
@ -3580,6 +3600,11 @@ type CorpUser implements Entity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -3951,6 +3976,11 @@ type CorpGroup implements Entity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -5130,6 +5160,11 @@ type Dashboard implements EntityWithRelationships & Entity & BrowsableEntity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -5451,6 +5486,11 @@ type Chart implements EntityWithRelationships & Entity & BrowsableEntity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -5819,6 +5859,11 @@ type DataFlow implements EntityWithRelationships & Entity & BrowsableEntity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -6030,6 +6075,11 @@ type DataJob implements EntityWithRelationships & Entity & BrowsableEntity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -8986,6 +9036,11 @@ type MLModel implements EntityWithRelationships & Entity & BrowsableEntity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -9108,6 +9163,11 @@ type MLModelGroup implements EntityWithRelationships & Entity & BrowsableEntity
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
type MLModelGroupProperties {
|
||||
@ -9243,6 +9303,11 @@ type MLFeature implements EntityWithRelationships & Entity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
type MLHyperParam {
|
||||
@ -9423,6 +9488,11 @@ type MLPrimaryKey implements EntityWithRelationships & Entity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
type MLPrimaryKeyProperties {
|
||||
@ -9561,6 +9631,11 @@ type MLFeatureTable implements EntityWithRelationships & Entity & BrowsableEntit
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
type MLFeatureTableEditableProperties {
|
||||
@ -9963,6 +10038,11 @@ type Domain implements Entity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
@ -11356,6 +11436,11 @@ type DataProduct implements Entity {
|
||||
Structured properties about this asset
|
||||
"""
|
||||
structuredProperties: StructuredProperties
|
||||
|
||||
"""
|
||||
The forms associated with the Dataset
|
||||
"""
|
||||
forms: Forms
|
||||
}
|
||||
|
||||
"""
|
||||
|
||||
@ -7,6 +7,7 @@ import { Entity, EntityCapabilityType, IconStyleType, PreviewType } from '../Ent
|
||||
import { getDataForEntityType } from '../shared/containers/profile/utils';
|
||||
import { urlEncodeUrn } from '../shared/utils';
|
||||
import RoleEntityProfile from './RoleEntityProfile';
|
||||
import { useGetExternalRoleQuery } from '../../../graphql/accessrole.generated';
|
||||
|
||||
const PreviewTagIcon = styled(TagOutlined)`
|
||||
font-size: 20px;
|
||||
@ -50,6 +51,8 @@ export class RoleEntity implements Entity<Role> {
|
||||
|
||||
getEntityName: () => string = () => 'Role';
|
||||
|
||||
useEntityQuery = useGetExternalRoleQuery;
|
||||
|
||||
renderProfile: (urn: string) => JSX.Element = (_) => <RoleEntityProfile />;
|
||||
|
||||
renderPreview = (_: PreviewType, data: Role) => (
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import { EntityType, SearchResult } from '../../types.generated';
|
||||
import { QueryHookOptions, QueryResult } from '@apollo/client';
|
||||
import { EntityType, Exact, SearchResult } from '../../types.generated';
|
||||
import { FetchedEntity } from '../lineage/types';
|
||||
import { EntitySidebarSection, GenericEntityProperties } from './shared/types';
|
||||
|
||||
@ -181,4 +182,21 @@ export interface Entity<T> {
|
||||
* Returns the entity profile sidebar sections for an entity type. Only implemented on Datasets for now.
|
||||
*/
|
||||
getSidebarSections?: () => EntitySidebarSection[];
|
||||
|
||||
/**
|
||||
* Get the query necessary for refetching data on an entity profile page
|
||||
*/
|
||||
useEntityQuery?: (
|
||||
baseOptions: QueryHookOptions<
|
||||
any,
|
||||
Exact<{
|
||||
urn: string;
|
||||
}>
|
||||
>,
|
||||
) => QueryResult<
|
||||
any,
|
||||
Exact<{
|
||||
urn: string;
|
||||
}>
|
||||
>;
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { QueryHookOptions, QueryResult } from '@apollo/client';
|
||||
import React from 'react';
|
||||
import { Entity as EntityInterface, EntityType, SearchResult } from '../../types.generated';
|
||||
import { Entity as EntityInterface, EntityType, Exact, SearchResult } from '../../types.generated';
|
||||
import { FetchedEntity } from '../lineage/types';
|
||||
import { SearchResultProvider } from '../search/context/SearchResultContext';
|
||||
import { Entity, EntityCapabilityType, IconStyleType, PreviewType } from './Entity';
|
||||
@ -115,6 +116,25 @@ export default class EntityRegistry {
|
||||
}
|
||||
}
|
||||
|
||||
getEntityQuery(type: EntityType):
|
||||
| ((
|
||||
baseOptions: QueryHookOptions<
|
||||
any,
|
||||
Exact<{
|
||||
urn: string;
|
||||
}>
|
||||
>,
|
||||
) => QueryResult<
|
||||
any,
|
||||
Exact<{
|
||||
urn: string;
|
||||
}>
|
||||
>)
|
||||
| undefined {
|
||||
const entity = validatedGet(type, this.entityTypeToEntity);
|
||||
return entity.useEntityQuery;
|
||||
}
|
||||
|
||||
renderProfile(type: EntityType, urn: string): JSX.Element {
|
||||
const entity = validatedGet(type, this.entityTypeToEntity);
|
||||
return entity.renderProfile(urn);
|
||||
|
||||
@ -73,11 +73,35 @@ export class ChartEntity implements Entity<Chart> {
|
||||
|
||||
getCollectionName = () => 'Charts';
|
||||
|
||||
useEntityQuery = useGetChartQuery;
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
];
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
entityType={EntityType.Chart}
|
||||
useEntityQuery={useGetChartQuery}
|
||||
useEntityQuery={this.useEntityQuery}
|
||||
useUpdateQuery={useUpdateChartMutation}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
headerDropdownItems={new Set([EntityMenuItems.UPDATE_DEPRECATION])}
|
||||
@ -127,27 +151,7 @@ export class ChartEntity implements Entity<Chart> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
@ -258,7 +262,7 @@ export class ChartEntity implements Entity<Chart> {
|
||||
<EmbeddedProfile
|
||||
urn={urn}
|
||||
entityType={EntityType.Chart}
|
||||
useEntityQuery={useGetChartQuery}
|
||||
useEntityQuery={this.useEntityQuery}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
/>
|
||||
);
|
||||
|
||||
@ -63,11 +63,13 @@ export class ContainerEntity implements Entity<Container> {
|
||||
|
||||
getCollectionName = () => 'Containers';
|
||||
|
||||
useEntityQuery = useGetContainerQuery;
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
entityType={EntityType.Container}
|
||||
useEntityQuery={useGetContainerQuery}
|
||||
useEntityQuery={this.useEntityQuery}
|
||||
useUpdateQuery={undefined}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
tabs={[
|
||||
@ -84,34 +86,36 @@ export class ContainerEntity implements Entity<Container> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
// TODO: Add back once entity-level recommendations are complete.
|
||||
// {
|
||||
// component: SidebarRecommendationsSection,
|
||||
// },
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
// TODO: Add back once entity-level recommendations are complete.
|
||||
// {
|
||||
// component: SidebarRecommendationsSection,
|
||||
// },
|
||||
];
|
||||
|
||||
renderPreview = (_: PreviewType, data: Container) => {
|
||||
const genericProperties = this.getGenericEntityProperties(data);
|
||||
return (
|
||||
@ -195,7 +199,7 @@ export class ContainerEntity implements Entity<Container> {
|
||||
<EmbeddedProfile
|
||||
urn={urn}
|
||||
entityType={EntityType.Container}
|
||||
useEntityQuery={useGetContainerQuery}
|
||||
useEntityQuery={this.useEntityQuery}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
/>
|
||||
);
|
||||
|
||||
@ -77,11 +77,38 @@ export class DashboardEntity implements Entity<Dashboard> {
|
||||
|
||||
getCollectionName = () => 'Dashboards';
|
||||
|
||||
useEntityQuery = useGetDashboardQuery;
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
];
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
entityType={EntityType.Dashboard}
|
||||
useEntityQuery={useGetDashboardQuery}
|
||||
useEntityQuery={this.useEntityQuery}
|
||||
useUpdateQuery={useUpdateDashboardMutation}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
headerDropdownItems={new Set([EntityMenuItems.UPDATE_DEPRECATION])}
|
||||
@ -135,30 +162,7 @@ export class DashboardEntity implements Entity<Dashboard> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
@ -279,7 +283,7 @@ export class DashboardEntity implements Entity<Dashboard> {
|
||||
<EmbeddedProfile
|
||||
urn={urn}
|
||||
entityType={EntityType.Dashboard}
|
||||
useEntityQuery={useGetDashboardQuery}
|
||||
useEntityQuery={this.useEntityQuery}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
/>
|
||||
);
|
||||
|
||||
@ -58,11 +58,13 @@ export class DataFlowEntity implements Entity<DataFlow> {
|
||||
|
||||
getCollectionName = () => 'Pipelines';
|
||||
|
||||
useEntityQuery = useGetDataFlowQuery;
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
entityType={EntityType.DataFlow}
|
||||
useEntityQuery={useGetDataFlowQuery}
|
||||
useEntityQuery={this.useEntityQuery}
|
||||
useUpdateQuery={useUpdateDataFlowMutation}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
headerDropdownItems={new Set([EntityMenuItems.UPDATE_DEPRECATION])}
|
||||
@ -80,33 +82,35 @@ export class DataFlowEntity implements Entity<DataFlow> {
|
||||
component: DataFlowJobsTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
];
|
||||
|
||||
getOverridePropertiesFromEntity = (dataFlow?: DataFlow | null): GenericEntityProperties => {
|
||||
// TODO: Get rid of this once we have correctly formed platform coming back.
|
||||
const name = dataFlow?.properties?.name;
|
||||
|
||||
@ -69,11 +69,13 @@ export class DataJobEntity implements Entity<DataJob> {
|
||||
|
||||
getCollectionName = () => 'Tasks';
|
||||
|
||||
useEntityQuery = useGetDataJobQuery;
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
entityType={EntityType.DataJob}
|
||||
useEntityQuery={useGetDataJobQuery}
|
||||
useEntityQuery={this.useEntityQuery}
|
||||
useUpdateQuery={useUpdateDataJobMutation}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
headerDropdownItems={new Set([EntityMenuItems.UPDATE_DEPRECATION])}
|
||||
@ -103,33 +105,35 @@ export class DataJobEntity implements Entity<DataJob> {
|
||||
},
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
];
|
||||
|
||||
getOverridePropertiesFromEntity = (dataJob?: DataJob | null): GenericEntityProperties => {
|
||||
// TODO: Get rid of this once we have correctly formed platform coming back.
|
||||
const name = dataJob?.properties?.name;
|
||||
|
||||
@ -3,6 +3,7 @@ import { DatabaseOutlined } from '@ant-design/icons';
|
||||
import { DataPlatform, EntityType, SearchResult } from '../../../types.generated';
|
||||
import { Entity, IconStyleType, PreviewType } from '../Entity';
|
||||
import { GenericEntityProperties } from '../shared/types';
|
||||
import { useGetDataPlatformQuery } from '../../../graphql/dataPlatform.generated';
|
||||
|
||||
const getDisplayName = (data?: DataPlatform): string => {
|
||||
return data?.properties?.displayName || data?.name || '';
|
||||
@ -43,6 +44,8 @@ export class DataPlatformEntity implements Entity<DataPlatform> {
|
||||
// Currently unused.
|
||||
getCollectionName = () => 'Data Platforms';
|
||||
|
||||
useEntityQuery = useGetDataPlatformQuery;
|
||||
|
||||
// Currently unused.
|
||||
renderProfile = (_: string) => <></>;
|
||||
|
||||
|
||||
@ -63,6 +63,8 @@ export class DataProductEntity implements Entity<DataProduct> {
|
||||
|
||||
getCollectionName = () => 'Data Products';
|
||||
|
||||
useEntityQuery = useGetDataProductQuery;
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
@ -87,41 +89,42 @@ export class DataProductEntity implements Entity<DataProduct> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarViewDefinitionSection,
|
||||
display: {
|
||||
// to do - change when we have a GetDataProductQuery
|
||||
visible: (_, dataset: GetDatasetQuery) =>
|
||||
(dataset?.dataset?.viewProperties?.logic && true) || false,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
properties: {
|
||||
updateOnly: true,
|
||||
},
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarViewDefinitionSection,
|
||||
display: {
|
||||
// to do - change when we have a GetDataProductQuery
|
||||
visible: (_, dataset: GetDatasetQuery) => (dataset?.dataset?.viewProperties?.logic && true) || false,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
properties: {
|
||||
updateOnly: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
renderPreview = (_: PreviewType, data: DataProduct) => {
|
||||
return (
|
||||
<Preview
|
||||
|
||||
@ -86,11 +86,13 @@ export class DatasetEntity implements Entity<Dataset> {
|
||||
|
||||
getCollectionName = () => 'Datasets';
|
||||
|
||||
useEntityQuery = useGetDatasetQuery;
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
entityType={EntityType.Dataset}
|
||||
useEntityQuery={useGetDatasetQuery}
|
||||
useEntityQuery={this.useEntityQuery}
|
||||
useUpdateQuery={useUpdateDatasetMutation}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
headerDropdownItems={new Set([EntityMenuItems.UPDATE_DEPRECATION])}
|
||||
@ -364,7 +366,7 @@ export class DatasetEntity implements Entity<Dataset> {
|
||||
<EmbeddedProfile
|
||||
urn={urn}
|
||||
entityType={EntityType.Dataset}
|
||||
useEntityQuery={useGetDatasetQuery}
|
||||
useEntityQuery={this.useEntityQuery}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
/>
|
||||
);
|
||||
|
||||
@ -66,6 +66,8 @@ export class DomainEntity implements Entity<Domain> {
|
||||
|
||||
getCollectionName = () => 'Domains';
|
||||
|
||||
useEntityQuery = useGetDomainQuery;
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
@ -97,17 +99,19 @@ export class DomainEntity implements Entity<Domain> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
},
|
||||
];
|
||||
|
||||
renderPreview = (_: PreviewType, data: Domain) => {
|
||||
return (
|
||||
<Preview
|
||||
|
||||
@ -49,6 +49,8 @@ class GlossaryNodeEntity implements Entity<GlossaryNode> {
|
||||
|
||||
getEntityName = () => 'Term Group';
|
||||
|
||||
useEntityQuery = useGetGlossaryNodeQuery;
|
||||
|
||||
renderProfile = (urn: string) => {
|
||||
return (
|
||||
<EntityProfile
|
||||
@ -75,17 +77,7 @@ class GlossaryNodeEntity implements Entity<GlossaryNode> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
properties: {
|
||||
hideLinksButton: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
headerDropdownItems={
|
||||
new Set([
|
||||
EntityMenuItems.ADD_TERM_GROUP,
|
||||
@ -98,6 +90,18 @@ class GlossaryNodeEntity implements Entity<GlossaryNode> {
|
||||
);
|
||||
};
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
properties: {
|
||||
hideLinksButton: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
},
|
||||
];
|
||||
|
||||
displayName = (data: GlossaryNode) => {
|
||||
return data.properties?.name || data.urn;
|
||||
};
|
||||
|
||||
@ -57,6 +57,8 @@ export class GlossaryTermEntity implements Entity<GlossaryTerm> {
|
||||
|
||||
getEntityName = () => 'Glossary Term';
|
||||
|
||||
useEntityQuery = useGetGlossaryTermQuery;
|
||||
|
||||
renderProfile = (urn) => {
|
||||
return (
|
||||
<EntityProfile
|
||||
@ -105,25 +107,27 @@ export class GlossaryTermEntity implements Entity<GlossaryTerm> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
properties: {
|
||||
hideOwnerType: true,
|
||||
},
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
getOverrideProperties={this.getOverridePropertiesFromEntity}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
properties: {
|
||||
hideOwnerType: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
getOverridePropertiesFromEntity = (glossaryTerm?: GlossaryTerm | null): GenericEntityProperties => {
|
||||
// if dataset has subTypes filled out, pick the most specific subtype and return it
|
||||
return {
|
||||
|
||||
@ -58,6 +58,8 @@ export class MLFeatureEntity implements Entity<MlFeature> {
|
||||
|
||||
getCollectionName = () => 'Features';
|
||||
|
||||
useEntityQuery = useGetMlFeatureQuery;
|
||||
|
||||
getOverridePropertiesFromEntity = (feature?: MlFeature | null): GenericEntityProperties => {
|
||||
return {
|
||||
// eslint-disable-next-line
|
||||
@ -91,33 +93,35 @@ export class MLFeatureEntity implements Entity<MlFeature> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
];
|
||||
|
||||
renderPreview = (_: PreviewType, data: MlFeature) => {
|
||||
const genericProperties = this.getGenericEntityProperties(data);
|
||||
// eslint-disable-next-line
|
||||
|
||||
@ -63,6 +63,33 @@ export class MLFeatureTableEntity implements Entity<MlFeatureTable> {
|
||||
return {};
|
||||
};
|
||||
|
||||
useEntityQuery = useGetMlFeatureTableQuery;
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
];
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
@ -89,30 +116,7 @@ export class MLFeatureTableEntity implements Entity<MlFeatureTable> {
|
||||
component: DocumentationTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
|
||||
@ -64,6 +64,33 @@ export class MLModelEntity implements Entity<MlModel> {
|
||||
};
|
||||
};
|
||||
|
||||
useEntityQuery = useGetMlModelQuery;
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
];
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
@ -94,30 +121,7 @@ export class MLModelEntity implements Entity<MlModel> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
|
||||
@ -60,6 +60,33 @@ export class MLModelGroupEntity implements Entity<MlModelGroup> {
|
||||
return {};
|
||||
};
|
||||
|
||||
useEntityQuery = useGetMlModelGroupQuery;
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
];
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
@ -82,30 +109,7 @@ export class MLModelGroupEntity implements Entity<MlModelGroup> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
|
||||
@ -64,6 +64,8 @@ export class MLPrimaryKeyEntity implements Entity<MlPrimaryKey> {
|
||||
};
|
||||
};
|
||||
|
||||
useEntityQuery = useGetMlPrimaryKeyQuery;
|
||||
|
||||
renderProfile = (urn: string) => (
|
||||
<EntityProfile
|
||||
urn={urn}
|
||||
@ -89,33 +91,35 @@ export class MLPrimaryKeyEntity implements Entity<MlPrimaryKey> {
|
||||
component: PropertiesTab,
|
||||
},
|
||||
]}
|
||||
sidebarSections={[
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
]}
|
||||
sidebarSections={this.getSidebarSections()}
|
||||
/>
|
||||
);
|
||||
|
||||
getSidebarSections = () => [
|
||||
{
|
||||
component: SidebarAboutSection,
|
||||
},
|
||||
{
|
||||
component: SidebarOwnerSection,
|
||||
properties: {
|
||||
defaultOwnerType: OwnershipType.TechnicalOwner,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarTagsSection,
|
||||
properties: {
|
||||
hasTags: true,
|
||||
hasTerms: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
component: SidebarDomainSection,
|
||||
},
|
||||
{
|
||||
component: DataProductSection,
|
||||
},
|
||||
];
|
||||
|
||||
renderPreview = (_: PreviewType, data: MlPrimaryKey) => {
|
||||
const genericProperties = this.getGenericEntityProperties(data);
|
||||
// eslint-disable-next-line
|
||||
|
||||
@ -7,6 +7,7 @@ import { EntityAndType, GenericEntityProperties } from '../types';
|
||||
import { getFormAssociation, isFormVerificationType } from '../containers/profile/sidebar/FormInfo/utils';
|
||||
import usePrevious from '../../../shared/usePrevious';
|
||||
import { SCHEMA_FIELD_PROMPT_TYPES } from './constants';
|
||||
import { useEntityRegistry } from '../../../useEntityRegistry';
|
||||
|
||||
interface Props {
|
||||
children: React.ReactNode;
|
||||
@ -14,6 +15,7 @@ interface Props {
|
||||
}
|
||||
|
||||
export default function EntityFormContextProvider({ children, formUrn }: Props) {
|
||||
const entityRegistry = useEntityRegistry();
|
||||
const { entityData, refetch: refetchEntityProfile, loading: profileLoading } = useEntityContext();
|
||||
const formAssociation = getFormAssociation(formUrn, entityData);
|
||||
const initialPromptId =
|
||||
@ -40,11 +42,13 @@ export default function EntityFormContextProvider({ children, formUrn }: Props)
|
||||
}
|
||||
}, [formUrn, previousFormUrn, initialPromptId]);
|
||||
|
||||
const query = entityRegistry.getEntityQuery(selectedEntity.type);
|
||||
const entityQuery = query || useGetDatasetQuery;
|
||||
const {
|
||||
data: fetchedData,
|
||||
refetch,
|
||||
loading,
|
||||
} = useGetDatasetQuery({
|
||||
} = entityQuery({
|
||||
variables: { urn: selectedEntity.urn },
|
||||
});
|
||||
|
||||
|
||||
@ -15,8 +15,6 @@ import FormRequestedBy from './FormSelectionModal/FormRequestedBy';
|
||||
import useHasComponentRendered from '../../../shared/useHasComponentRendered';
|
||||
import Loading from '../../../shared/Loading';
|
||||
import { DeferredRenderComponent } from '../../../shared/DeferredRenderComponent';
|
||||
import { OnboardingTour } from '../../../onboarding/OnboardingTour';
|
||||
import { FORM_ASSET_COMPLETION } from '../../../onboarding/config/FormOnboardingConfig';
|
||||
|
||||
const TabWrapper = styled.div`
|
||||
background-color: ${ANTD_GRAY_V2[1]};
|
||||
@ -62,7 +60,6 @@ function Form({ formUrn }: Props) {
|
||||
|
||||
return (
|
||||
<TabWrapper>
|
||||
<OnboardingTour stepIds={[FORM_ASSET_COMPLETION]} />
|
||||
<HeaderWrapper>
|
||||
<IntroTitle>
|
||||
{title ? <>{title}</> : <>{entityRegistry.getEntityName(entityType)} Requirements</>}
|
||||
|
||||
@ -8,11 +8,6 @@ import EntityContext, { useEntityContext } from '../EntityContext';
|
||||
import EntityInfo from '../containers/profile/sidebar/EntityInfo/EntityInfo';
|
||||
import { useEntityFormContext } from './EntityFormContext';
|
||||
import ProgressBar from './ProgressBar';
|
||||
import { OnboardingTour } from '../../../onboarding/OnboardingTour';
|
||||
import {
|
||||
FORM_QUESTION_VIEW_BUTTON,
|
||||
WELCOME_TO_BULK_BY_ENTITY_ID,
|
||||
} from '../../../onboarding/config/FormOnboardingConfig';
|
||||
|
||||
const ContentWrapper = styled.div`
|
||||
background-color: ${ANTD_GRAY_V2[1]};
|
||||
@ -53,7 +48,6 @@ export default function FormByEntity({ formUrn }: Props) {
|
||||
refetch,
|
||||
}}
|
||||
>
|
||||
<OnboardingTour stepIds={[WELCOME_TO_BULK_BY_ENTITY_ID, FORM_QUESTION_VIEW_BUTTON]} />
|
||||
<ContentWrapper>
|
||||
<ProgressBar formUrn={formUrn} />
|
||||
<FlexWrapper>
|
||||
|
||||
@ -4,8 +4,6 @@ import { Button, Divider, message } from 'antd';
|
||||
import { useVerifyFormMutation } from '../../../../../graphql/form.generated';
|
||||
import { useEntityContext, useMutationUrn } from '../../EntityContext';
|
||||
import { PromptWrapper } from './Prompt';
|
||||
import { useUpdateEducationStepsAllowList } from '../../../../onboarding/useUpdateEducationStepsAllowList';
|
||||
import { FORM_ASSET_COMPLETION } from '../../../../onboarding/config/FormOnboardingConfig';
|
||||
|
||||
const ContentWrapper = styled.div`
|
||||
display: flex;
|
||||
@ -34,13 +32,11 @@ export default function VerificationPrompt({ formUrn, associatedUrn }: Props) {
|
||||
const urn = useMutationUrn();
|
||||
const { refetch } = useEntityContext();
|
||||
const [verifyFormMutation] = useVerifyFormMutation();
|
||||
const { addIdToAllowList } = useUpdateEducationStepsAllowList();
|
||||
|
||||
function verifyForm() {
|
||||
verifyFormMutation({ variables: { input: { entityUrn: associatedUrn || urn || '', formUrn } } })
|
||||
.then(() => {
|
||||
refetch();
|
||||
addIdToAllowList(FORM_ASSET_COMPLETION);
|
||||
})
|
||||
.catch(() => {
|
||||
message.error('Error when verifying responses on form');
|
||||
|
||||
@ -7,6 +7,7 @@ import { Entity, EntityCapabilityType, IconStyleType, PreviewType } from '../Ent
|
||||
import { getDataForEntityType } from '../shared/containers/profile/utils';
|
||||
import { urlEncodeUrn } from '../shared/utils';
|
||||
import TagProfile from './TagProfile';
|
||||
import { useGetTagQuery } from '../../../graphql/tag.generated';
|
||||
|
||||
const PreviewTagIcon = styled(TagOutlined)`
|
||||
font-size: 20px;
|
||||
@ -51,6 +52,8 @@ export class TagEntity implements Entity<Tag> {
|
||||
|
||||
getEntityName: () => string = () => 'Tag';
|
||||
|
||||
useEntityQuery = useGetTagQuery;
|
||||
|
||||
renderProfile: (urn: string) => JSX.Element = (_) => <TagProfile />;
|
||||
|
||||
renderPreview = (_: PreviewType, data: Tag) => (
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
import { BusinessGlossaryOnboardingConfig } from './config/BusinessGlossaryOnboardingConfig';
|
||||
import { DomainsOnboardingConfig } from './config/DomainsOnboardingConfig';
|
||||
import { EntityProfileOnboardingConfig } from './config/EntityProfileOnboardingConfig';
|
||||
import { FormOnboardingConfig } from './config/FormOnboardingConfig';
|
||||
import { GroupsOnboardingConfig } from './config/GroupsOnboardingConfig';
|
||||
import { HomePageOnboardingConfig } from './config/HomePageOnboardingConfig';
|
||||
import { IngestionOnboardingConfig } from './config/IngestionOnboardingConfig';
|
||||
@ -24,7 +23,6 @@ const ALL_ONBOARDING_CONFIGS: OnboardingStep[][] = [
|
||||
RolesOnboardingConfig,
|
||||
PoliciesOnboardingConfig,
|
||||
LineageGraphOnboardingConfig,
|
||||
FormOnboardingConfig,
|
||||
];
|
||||
export const OnboardingConfig: OnboardingStep[] = ALL_ONBOARDING_CONFIGS.reduce(
|
||||
(acc, config) => [...acc, ...config],
|
||||
|
||||
@ -1,178 +0,0 @@
|
||||
import { SmileOutlined } from '@ant-design/icons';
|
||||
import React from 'react';
|
||||
import { Typography } from 'antd';
|
||||
import styled from 'styled-components';
|
||||
import { OnboardingStep } from '../OnboardingStep';
|
||||
import BulkTypeComparions from '../../../images/bulk-form-type-comparison.svg';
|
||||
|
||||
const DiagramHeader = styled.div`
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin: 16px 0 4px 0;
|
||||
`;
|
||||
|
||||
const AssetCompletionHeader = styled.div`
|
||||
font-size: 20px;
|
||||
font-weight: normal;
|
||||
`;
|
||||
|
||||
const ByAssetWrapper = styled.span`
|
||||
margin-left: 10px;
|
||||
font-size: 14px;
|
||||
`;
|
||||
|
||||
const ByQuestionWrapper = styled.span`
|
||||
margin-left: 80px;
|
||||
font-size: 14px;
|
||||
`;
|
||||
|
||||
const StyledSmile = styled(SmileOutlined)`
|
||||
color: ${(props) => props.theme.styles['primary-color']};
|
||||
margin-right: 4px;
|
||||
`;
|
||||
|
||||
export const WELCOME_TO_BULK_BY_ENTITY_ID = 'welcome-to-bulk-by-entity';
|
||||
export const FORM_QUESTION_VIEW_BUTTON = 'form-question-view-button';
|
||||
export const FORM_ASSET_COMPLETION = 'form-asset-completion';
|
||||
export const WELCOME_TO_BULK_BY_QUESTION_ID = 'welcome-to-bulk-by-question';
|
||||
export const FORM_ASSETS_ASSIGNED_ID = 'form-assets-assigned';
|
||||
export const FORM_FILTER_AND_BROWSE_ID = 'form-filter-and-browse';
|
||||
export const FORM_ANSWER_IN_BULK_ID = 'form-answer-in-bulk';
|
||||
export const FORM_BULK_VERIFY_INTRO_ID = 'form-bulk-verify-intro';
|
||||
export const FORM_CHECK_RESPONSES_ID = 'form-check-responses';
|
||||
export const FORM_BULK_VERIFY_ID = 'form-bulk-verify';
|
||||
|
||||
export const FormOnboardingConfig: OnboardingStep[] = [
|
||||
{
|
||||
id: WELCOME_TO_BULK_BY_ENTITY_ID,
|
||||
selector: `#${WELCOME_TO_BULK_BY_ENTITY_ID}`,
|
||||
title: 'Let’s complete your documentation requests!',
|
||||
style: { width: '520px', maxWidth: '520px' },
|
||||
content: (
|
||||
<Typography.Paragraph>
|
||||
Here you can easily respond to all documentation requests efficiently. We’ll track your progress and
|
||||
move you seamlessly through all your requests.
|
||||
<br />
|
||||
Let’s get started completing the needs for this form.
|
||||
</Typography.Paragraph>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: FORM_QUESTION_VIEW_BUTTON,
|
||||
selector: `#${FORM_QUESTION_VIEW_BUTTON}`,
|
||||
title: "Switch to the 'Complete by Question' view.",
|
||||
style: { width: '520px', maxWidth: '520px' },
|
||||
content: (
|
||||
<Typography.Paragraph>
|
||||
If an answer fits multiple assets, this view lets you tackle questions across different assets at once,
|
||||
making documentation even faster and more efficient.
|
||||
</Typography.Paragraph>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: FORM_ASSET_COMPLETION,
|
||||
selector: `#${FORM_ASSET_COMPLETION}`,
|
||||
isActionStep: true,
|
||||
title: (
|
||||
<AssetCompletionHeader>
|
||||
<StyledSmile /> Congratulations, You’ve Completed 1 Asset!
|
||||
</AssetCompletionHeader>
|
||||
),
|
||||
style: { width: '640px', maxWidth: '640px' },
|
||||
content: (
|
||||
<Typography.Paragraph>
|
||||
Now that you’ve completed one asset, try switching to the ‘Complete by Question’ view. If an answer fits
|
||||
multiple assets, this view lets you tackle questions across different assets at once, making
|
||||
documentation even faster and more efficient.
|
||||
<DiagramHeader>
|
||||
<ByAssetWrapper>By Asset</ByAssetWrapper>
|
||||
<ByQuestionWrapper>By Question</ByQuestionWrapper>
|
||||
</DiagramHeader>
|
||||
<img src={BulkTypeComparions} alt="bulk form type comparions" style={{ width: '100%' }} />
|
||||
</Typography.Paragraph>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: WELCOME_TO_BULK_BY_QUESTION_ID,
|
||||
selector: `#${WELCOME_TO_BULK_BY_QUESTION_ID}`,
|
||||
title: "Welcome to the 'Complete by Question' view!",
|
||||
style: { width: '520px', maxWidth: '520px' },
|
||||
content: (
|
||||
<Typography.Paragraph>
|
||||
Here, you can easily provide the same response for multiple assets at once for a faster documenting
|
||||
experience.
|
||||
</Typography.Paragraph>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: FORM_ASSETS_ASSIGNED_ID,
|
||||
selector: `#${FORM_ASSETS_ASSIGNED_ID}`,
|
||||
title: 'Focus on only the assets that require your attention',
|
||||
style: { width: '520px', maxWidth: '520px' },
|
||||
content: (
|
||||
<Typography.Paragraph>
|
||||
In this view, we’ve simplified your workflow by only showing assets that require documentation from you.
|
||||
</Typography.Paragraph>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: FORM_FILTER_AND_BROWSE_ID,
|
||||
selector: `#${FORM_FILTER_AND_BROWSE_ID}`,
|
||||
title: 'Filter and Browse to Select the Specific Assets',
|
||||
style: { width: '520px', maxWidth: '520px' },
|
||||
content: (
|
||||
<Typography.Paragraph>
|
||||
Filter by type, terms, or browse by platform, database and schemas to select only the assets that you’d
|
||||
like to set the response for.
|
||||
</Typography.Paragraph>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: FORM_ANSWER_IN_BULK_ID,
|
||||
selector: `#${FORM_ANSWER_IN_BULK_ID}`,
|
||||
title: 'Answer in Bulk',
|
||||
style: { width: '520px', maxWidth: '520px' },
|
||||
content: (
|
||||
<Typography.Paragraph>
|
||||
After selecting your assets, set a collective response and start answering for groups of 1,000 assets at
|
||||
a time.
|
||||
</Typography.Paragraph>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: FORM_BULK_VERIFY_INTRO_ID,
|
||||
selector: `#${FORM_BULK_VERIFY_INTRO_ID}`,
|
||||
title: 'Streamline Verification in Bulk!',
|
||||
style: { width: '520px', maxWidth: '520px' },
|
||||
content: (
|
||||
<Typography.Paragraph>
|
||||
Here you can quickly review responses for a few datasets, ensuring accuracy. When you're ready,
|
||||
proceed to verify all assets at once, simplifying the entire verification process.
|
||||
</Typography.Paragraph>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: FORM_CHECK_RESPONSES_ID,
|
||||
selector: `#${FORM_CHECK_RESPONSES_ID}`,
|
||||
title: 'Check Responses',
|
||||
style: { width: '520px', maxWidth: '520px' },
|
||||
content: (
|
||||
<Typography.Paragraph>
|
||||
Click on "View Responses" to easily spot-check your responses before the final Verification
|
||||
step.
|
||||
</Typography.Paragraph>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: FORM_BULK_VERIFY_ID,
|
||||
selector: `#${FORM_BULK_VERIFY_ID}`,
|
||||
title: 'Bulk Verify Assets',
|
||||
style: { width: '520px', maxWidth: '520px' },
|
||||
content: (
|
||||
<Typography.Paragraph>
|
||||
Once you're confident in your responses, verify up to 1,000 assets at a time for this form with a
|
||||
click of a button.
|
||||
</Typography.Paragraph>
|
||||
),
|
||||
},
|
||||
];
|
||||
@ -111,6 +111,9 @@ query getChart($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -62,5 +62,8 @@ query getContainer($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,6 +15,9 @@ query getDashboard($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -110,6 +110,9 @@ query getDataFlow($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -14,6 +14,9 @@ query getDataJob($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -9,6 +9,9 @@ query getDataProduct($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -169,25 +169,7 @@ fragment nonSiblingDatasetFields on Dataset {
|
||||
canEditQueries
|
||||
}
|
||||
forms {
|
||||
completedForms {
|
||||
...formAssociationFields
|
||||
}
|
||||
incompleteForms {
|
||||
...formAssociationFields
|
||||
}
|
||||
verifications {
|
||||
form {
|
||||
urn
|
||||
}
|
||||
lastModified {
|
||||
time
|
||||
actor {
|
||||
urn
|
||||
type
|
||||
...entityDisplayNameFields
|
||||
}
|
||||
}
|
||||
}
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -35,6 +35,9 @@ query getDomain($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
...domainEntitiesFields
|
||||
}
|
||||
}
|
||||
|
||||
@ -1313,3 +1313,25 @@ fragment formPromptAssociationFields on FormPromptAssociation {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fragment formsFields on Forms {
|
||||
completedForms {
|
||||
...formAssociationFields
|
||||
}
|
||||
incompleteForms {
|
||||
...formAssociationFields
|
||||
}
|
||||
verifications {
|
||||
form {
|
||||
urn
|
||||
}
|
||||
lastModified {
|
||||
time
|
||||
actor {
|
||||
urn
|
||||
type
|
||||
...entityDisplayNameFields
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,6 +35,9 @@ query getGlossaryNode($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
children: relationships(
|
||||
input: {
|
||||
types: ["IsPartOf"]
|
||||
|
||||
@ -95,6 +95,9 @@ query getGlossaryTerm($urn: String!, $start: Int, $count: Int) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -32,6 +32,9 @@ query getGroup($urn: String!, $membersCount: Int!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
ownership {
|
||||
...ownershipFields
|
||||
}
|
||||
|
||||
@ -12,5 +12,8 @@ query getMLFeature($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,5 +9,8 @@ query getMLFeatureTable($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,5 +26,8 @@ query getMLModel($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -29,5 +29,8 @@ query getMLModelGroup($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,5 +12,8 @@ query getMLPrimaryKey($urn: String!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,6 +35,9 @@ query getUser($urn: String!, $groupsCount: Int!) {
|
||||
...structuredPropertiesFields
|
||||
}
|
||||
}
|
||||
forms {
|
||||
...formsFields
|
||||
}
|
||||
groups: relationships(
|
||||
input: {
|
||||
types: ["IsMemberOfGroup", "IsMemberOfNativeGroup"]
|
||||
|
||||
@ -70,6 +70,7 @@ entities:
|
||||
- dataPlatformInstance
|
||||
- browsePathsV2
|
||||
- structuredProperties
|
||||
- forms
|
||||
- subTypes
|
||||
- name: dataFlow
|
||||
category: core
|
||||
@ -89,6 +90,7 @@ entities:
|
||||
- dataPlatformInstance
|
||||
- browsePathsV2
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: dataProcess
|
||||
keyAspect: dataProcessKey
|
||||
aspects:
|
||||
@ -127,6 +129,7 @@ entities:
|
||||
- browsePathsV2
|
||||
- subTypes
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: dashboard
|
||||
keyAspect: dashboardKey
|
||||
aspects:
|
||||
@ -148,6 +151,7 @@ entities:
|
||||
- dataPlatformInstance
|
||||
- browsePathsV2
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: notebook
|
||||
doc: Notebook represents a combination of query, text, chart and etc. This is in BETA version
|
||||
keyAspect: notebookKey
|
||||
@ -181,6 +185,7 @@ entities:
|
||||
- origin
|
||||
- roleMembership
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: corpGroup
|
||||
doc: CorpGroup represents an identity of a group of users in the enterprise.
|
||||
keyAspect: corpGroupKey
|
||||
@ -193,6 +198,7 @@ entities:
|
||||
- origin
|
||||
- roleMembership
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: domain
|
||||
doc: A data domain within an organization.
|
||||
category: core
|
||||
@ -202,6 +208,7 @@ entities:
|
||||
- institutionalMemory
|
||||
- ownership
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: container
|
||||
doc: A container of related data assets.
|
||||
category: core
|
||||
@ -221,6 +228,7 @@ entities:
|
||||
- domains
|
||||
- browsePathsV2
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: tag
|
||||
category: core
|
||||
keyAspect: tagKey
|
||||
@ -243,6 +251,7 @@ entities:
|
||||
- status
|
||||
- browsePaths
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: glossaryNode
|
||||
category: core
|
||||
keyAspect: glossaryNodeKey
|
||||
@ -252,6 +261,7 @@ entities:
|
||||
- ownership
|
||||
- status
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: dataHubIngestionSource
|
||||
category: internal
|
||||
keyAspect: dataHubIngestionSourceKey
|
||||
@ -321,6 +331,7 @@ entities:
|
||||
- dataPlatformInstance
|
||||
- browsePathsV2
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: mlModelGroup
|
||||
category: core
|
||||
keyAspect: mlModelGroupKey
|
||||
@ -337,6 +348,7 @@ entities:
|
||||
- dataPlatformInstance
|
||||
- browsePathsV2
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: mlModelDeployment
|
||||
category: core
|
||||
keyAspect: mlModelDeploymentKey
|
||||
@ -364,6 +376,7 @@ entities:
|
||||
- dataPlatformInstance
|
||||
- browsePathsV2
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: mlFeature
|
||||
category: core
|
||||
keyAspect: mlFeatureKey
|
||||
@ -381,6 +394,7 @@ entities:
|
||||
- dataPlatformInstance
|
||||
- browsePathsV2
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: mlPrimaryKey
|
||||
category: core
|
||||
keyAspect: mlPrimaryKeyKey
|
||||
@ -396,6 +410,7 @@ entities:
|
||||
- globalTags
|
||||
- dataPlatformInstance
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: telemetry
|
||||
category: internal
|
||||
keyAspect: telemetryKey
|
||||
@ -428,6 +443,7 @@ entities:
|
||||
keyAspect: schemaFieldKey
|
||||
aspects:
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: globalSettings
|
||||
doc: Global settings for an the platform
|
||||
category: internal
|
||||
@ -473,6 +489,7 @@ entities:
|
||||
- institutionalMemory
|
||||
- status
|
||||
- structuredProperties
|
||||
- forms
|
||||
- name: ownershipType
|
||||
doc: Ownership Type represents a user-created ownership category for a person or group who is responsible for an asset.
|
||||
category: core
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user