blob: 9dd4ace1157e0bfc4e56b25881afd5685cd53d4f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import moment from "moment";
import { invert } from "./Helper";
export const addOnEntities = ["_ALL_ENTITY_TYPES"];
export const addOnClassification = [
"_ALL_CLASSIFICATION_TYPES",
"_CLASSIFIED",
"_NOT_CLASSIFIED"
];
export const customFilters = [
"Advanced Search",
"Basic Search",
"Relationship Search"
];
export const globalSessionData: any = {};
export const entityStateReadOnly: any = {
ACTIVE: false,
DELETED: true,
STATUS_ACTIVE: false,
STATUS_DELETED: true
};
export const AdvanceSearchQueries = [
{
type: "Single Query",
queries: `DB where name="Reporting" select name, owner`
},
{
type: "GROUPBY",
queries: `select count(CustomerID), Country from Customers group by Country`
},
{
type: "ORDERBY",
queries: `DB where name="Reporting" select name, owner orderby name limit 10 offset 5`
},
{
type: "LIMIT",
queries: `DB where name="Reporting" select name, owner limit 10 offset 0`
}
];
export const isEntityPurged: { [key: string]: boolean } = {
PURGED: true
};
export const category: { [key: string]: string } = {
PRIMITIVE: "Primitive",
OBJECT_ID_TYPE: "Object Id type",
ENUM: "Enum",
STRUCT: "Struct",
CLASSIFICATION: "Classification",
ENTITY: "Entity",
ARRAY: "Array",
MAP: "Map",
RELATIONSHIP: "Relationship",
BUSINESS_METADATA: "Business Metadata",
PURGE: "Purge Entities",
IMPORT: "Import Entities",
EXPORT: "Export Entities",
AUTO_PURGE : "Auto Purged Entities"
};
export const auditAction: { [key: string]: string } = {
ENTITY_CREATE: "Entity Created",
ENTITY_UPDATE: "Entity Updated",
ENTITY_DELETE: "Entity Deleted",
CLASSIFICATION_ADD: "Classification Added",
CLASSIFICATION_DELETE: "Classification Deleted",
CLASSIFICATION_UPDATE: "Classification Updated",
PROPAGATED_CLASSIFICATION_ADD: "Propagated Classification Added",
PROPAGATED_CLASSIFICATION_DELETE: "Propagated Classification Deleted",
PROPAGATED_CLASSIFICATION_UPDATE: "Propagated Classification Updated",
ENTITY_IMPORT_CREATE: "Entity Created by import",
ENTITY_IMPORT_UPDATE: "Entity Updated by import",
ENTITY_IMPORT_DELETE: "Entity Deleted by import",
TERM_ADD: "Term Added",
TERM_DELETE: "Term Deleted",
LABEL_ADD: "Label(s) Added",
LABEL_DELETE: "Label(s) Deleted",
ENTITY_PURGE: "Entity Purged",
BUSINESS_ATTRIBUTE_ADD: "Business Attribute(s) Added",
BUSINESS_ATTRIBUTE_UPDATE: "Business Attribute(s) Updated",
BUSINESS_ATTRIBUTE_DELETE: "Business Attribute(s) Deleted",
CUSTOM_ATTRIBUTE_UPDATE: "User-defined Attribute(s) Updated",
TYPE_DEF_UPDATE: "Type Updated",
TYPE_DEF_CREATE: "Type Created",
TYPE_DEF_DELETE: "Type Deleted",
IMPORT: "Import",
EXPORT: "Export",
AUTO_PURGE : "Auto Purged Entities"
};
export const stats: any = {
generalData: {
collectionTime: "day"
},
Server: {
startTimeStamp: "day",
activeTimeStamp: "day",
upTime: "none"
},
ConnectionStatus: {
statusBackendStore: "status-html",
statusIndexStore: "status-html"
},
Notification: {
currentDay: "number",
currentDayAvgTime: "number",
currentDayEntityCreates: "number",
currentDayEntityDeletes: "number",
currentDayEntityUpdates: "number",
currentDayFailed: "number",
currentDayStartTime: "day",
currentHour: "number",
currentHourAvgTime: "millisecond",
currentHourEntityCreates: "number",
currentHourEntityDeletes: "number",
currentHourEntityUpdates: "number",
currentHourFailed: "number",
currentHourStartTime: "day",
lastMessageProcessedTime: "day",
offsetCurrent: "number",
offsetStart: "number",
previousDay: "number",
previousDayAvgTime: "millisecond",
previousDayEntityCreates: "number",
previousDayEntityDeletes: "number",
previousDayEntityUpdates: "number",
previousDayFailed: "number",
previousHour: "number",
previousHourAvgTime: "millisecond",
previousHourEntityCreates: "number",
previousHourEntityDeletes: "number",
previousHourEntityUpdates: "number",
previousHourFailed: "number",
total: "number",
totalAvgTime: "millisecond",
totalCreates: "number",
totalDeletes: "number",
totalFailed: "number",
totalUpdates: "number",
processedMessageCount: "number",
failedMessageCount: "number"
}
};
const getTermRelationAttributes = () => {
return {
description: null,
expression: null,
steward: null,
source: null
};
};
export const termRelationAttributeList = {
seeAlso: getTermRelationAttributes(),
synonyms: getTermRelationAttributes(),
antonyms: getTermRelationAttributes(),
preferredTerms: getTermRelationAttributes(),
preferredToTerms: getTermRelationAttributes(),
replacementTerms: getTermRelationAttributes(),
replacedBy: getTermRelationAttributes(),
translationTerms: getTermRelationAttributes(),
translatedTerms: getTermRelationAttributes(),
isA: getTermRelationAttributes(),
classifies: getTermRelationAttributes(),
validValues: getTermRelationAttributes(),
validValuesFor: getTermRelationAttributes()
};
export const defaultDataType = [
"string",
"boolean",
"byte",
"short",
"int",
"float",
"double",
"array<string>"
];
export const dataTypes = [
"string",
"boolean",
"byte",
"short",
"int",
"float",
"double",
"long",
"date",
"enumeration"
];
export const searchWeight = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
export const attributeObj = {
description: "",
expression: "",
steward: "",
source: ""
};
export const systemAttributes: Record<string, string> = {
__classificationNames: "Classification(s)",
__createdBy: "Created By User",
__customAttributes: "User-defined Properties",
__guid: "Guid",
__isIncomplete: "IsIncomplete",
__labels: "Label(s)",
__modificationTimestamp: "Last Modified Timestamp",
__modifiedBy: "Last Modified User",
__propagatedClassificationNames: "Propagated Classification(s)",
__state: "Status",
__entityStatus: "Entity Status",
__timestamp: "Created Timestamp",
__typeName: "Type Name"
};
export const regex = {
RANGE_CHECK: {
byte: {
min: -128,
max: 127
},
short: {
min: -32768,
max: 32767
},
int: {
min: -2147483648,
max: 2147483647
},
long: {
min: -9223372036854775808,
max: 9223372036854775807
},
float: {
min: -3.4028235e38,
max: 3.4028235e38
},
double: {
min: -1.7976931348623157e308,
max: 1.7976931348623157e308
}
}
};
export const dateRangesMap = {
Today: [moment(), moment()],
Yesterday: [moment().subtract(1, "days"), moment().subtract(1, "days")],
"Last 7 Days": [moment().subtract(6, "days"), moment()],
"Last 30 Days": [moment().subtract(29, "days"), moment()],
"This Month": [moment().startOf("month"), moment().endOf("month")],
"Last Month": [
moment().subtract(1, "month").startOf("month"),
moment().subtract(1, "month").endOf("month")
],
"Last 3 Months": [
moment().subtract(3, "month").startOf("month"),
moment().subtract(1, "month").endOf("month")
],
"Last 6 Months": [
moment().subtract(6, "month").startOf("month"),
moment().subtract(1, "month").endOf("month")
],
"Last 12 Months": [
moment().subtract(12, "month").startOf("month"),
moment().subtract(1, "month").endOf("month")
],
"This Quarter": [moment().startOf("quarter"), moment().endOf("quarter")],
"Last Quarter": [
moment().subtract(1, "quarter").startOf("quarter"),
moment().subtract(1, "quarter").endOf("quarter")
],
"This Year": [moment().startOf("year"), moment().endOf("year")],
"Last Year": [
moment().subtract(1, "year").startOf("year"),
moment().subtract(1, "year").endOf("year")
]
};
export const queryBuilderUIOperatorToAPI = {
"=": "eq",
"!=": "neq",
"<": "lt",
"<=": "lte",
">": "gt",
">=": "gte",
begins_with: "startsWith",
ends_with: "endsWith",
not_null: "notNull",
is_null: "isNull",
TIME_RANGE: "timerange"
};
export const queryBuilderApiOperatorToUI = invert(queryBuilderUIOperatorToAPI);
export const queryBuilderDateRangeUIValueToAPI: Record<string, string> = {
Today: "TODAY",
Yesterday: "YESTERDAY",
"Last 7 Days": "LAST_7_DAYS",
"Last 30 Days": "LAST_30_DAYS",
"This Month": "THIS_MONTH",
"Last Month": "LAST_MONTH",
"This Quarter": "THIS_QUARTER",
"Last Quarter": "LAST_QUARTER",
"This Year": "THIS_YEAR",
"Last Year": "LAST_YEAR",
"Last 3 Months": "LAST_3_MONTHS",
"Last 6 Months": "LAST_6_MONTHS",
"Last 12 Months": "LAST_12_MONTHS"
};
export const queryBuilderDateRangeAPIValueToUI = invert(
queryBuilderDateRangeUIValueToAPI
);
export const graphIcon = {
// hive_db: { icon: "fa-database", textContent: "\uf1c0" },
// hive_column: { icon: "fa-columns", textContent: "\uf0db" },
// hive_table: { icon: "fa-table", textContent: "\uf0ce" },
};
export const defaultAttrObj = {
name: "",
typeName: "string",
searchWeight: 5,
multiValueSelect: false,
options: {
maxStrLength: 50,
applicableEntityTypes: null
},
isOptional: true,
cardinality: "SINGLE",
valuesMinCount: 0,
valuesMaxCount: 1,
isUnique: false,
isIndexable: true
};
export const filterQueryValue: any = {};
export const extractFromUrlForSearch = {
searchParameters: {
pageLimit: "limit",
type: "typeName",
relationshipName: "relationshipName",
tag: "classification",
query: "query",
pageOffset: "offset",
includeDE: "excludeDeletedEntities",
excludeST: "includeSubTypes",
excludeSC: "includeSubClassifications",
tagFilters: "tagFilters",
entityFilters: "entityFilters",
relationshipFilters: "relationshipFilters",
attributes: "attributes",
term: "termName"
},
uiParameters: "uiParameters"
};
export const timeRangeOptions = [
{ label: "Today", value: "Today" },
{ label: "Yesterday", value: "Yesterday" },
{ label: "Last 7 days", value: "LAST_7_DAYS" },
{ label: "Last 30 days", value: "LAST_30_DAYS" },
{ label: "This Month", value: "THIS_MONTH" },
{ label: "Last 3 Months", value: "LAST_3_MONTHS" },
{ label: "Last 6 Months", value: "LAST_6_MONTHS" },
{ label: "Last 12 Months", value: "LAST_12_MONTHS" },
{ label: "This Quarter", value: "THIS_QUARTER" },
{ label: "Last Quarter", value: "LAST_QUARTER" },
{ label: "This Year", value: "THIS_YEAR" },
{ label: "Last Year", value: "LAST_YEAR" },
{ label: "Custom Range", value: "CUSTOM_RANGE" }
];
export const statsDateRangesMap: Record<string, any> = {
Today: moment(),
"1d": [moment().subtract(1, "days"), moment()],
"7d": [moment().subtract(6, "days"), moment()],
"14d": [moment().subtract(13, "days"), moment()],
"30d": [moment().subtract(29, "days"), moment()],
"This Month": [moment().startOf("month"), moment().endOf("month")],
"Last Month": [
moment().subtract(1, "month").startOf("month"),
moment().subtract(1, "month").endOf("month")
],
"Last 3 Months": [
moment().subtract(3, "month").startOf("month"),
moment().subtract(1, "month").endOf("month")
],
"Last 6 Months": [
moment().subtract(6, "month").startOf("month"),
moment().subtract(1, "month").endOf("month")
],
"Last 12 Months": [
moment().subtract(12, "month").startOf("month"),
moment().subtract(1, "month").endOf("month")
],
"This Quarter": [moment().startOf("quarter"), moment().endOf("quarter")],
"Last Quarter": [
moment().subtract(1, "quarter").startOf("quarter"),
moment().subtract(1, "quarter").endOf("quarter")
],
"This Year": [moment().startOf("year"), moment().endOf("year")],
"Last Year": [
moment().subtract(1, "year").startOf("year"),
moment().subtract(1, "year").endOf("year")
]
};
export const serviceTypeMap: any = {};
export const lineageDepth = 3;
export const PathAssociateWithModule = {
EntityDetails: ["/detailPage/:guid"],
ClassificationDetails: ["/tag/tagAttribute/:tagName"],
GLossaryDetails: ["/glossary/:guid"],
Administratior: ["/administrator"],
BusinessMetadataDetails: ["/administrator/businessMetadata/:bmguid"],
RelationshipDetails: ["/relationshipDetailPage/:guid"],
DebugMetrics: ["/debugMetrics"],
Dashboard: ["/search"],
LandingPage: ["/"],
SearchResult: ["/search/searchResult"],
RelationShipSearch: ["/relationship/relationshipSearchResult"],
DataNotFound: ["/dataNotFound"],
PageNotFound: ["/pageNotFound"],
Forbidden: ["/forbidden"]
};
export const defaultType = [
"string",
"boolean",
"byte",
"short",
"int",
"float",
"double",
"long",
"date",
"array<string>",
"array<boolean>",
"array<byte>",
"array<short>",
"array<int>",
"array<float>",
"array<double>",
"array<long>",
"array<date>"
];
export const optionsVal = [
"25",
"50",
"100",
"150",
"200",
"250",
"300",
"350",
"400",
"450",
"500"
];
export const pageSizeOptions = optionsVal.map((x: string) => ({
label: x
}));