@yugabytedb/perf-advisor-ui 1.0.121 → 1.0.122

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/types.d.ts CHANGED
@@ -10,6 +10,7 @@ interface Universe {
10
10
  name: string;
11
11
  ashEnabled: boolean;
12
12
  ashSupported: boolean;
13
+ pgssRpcStatsEnabled?: boolean;
13
14
  resources: Resources;
14
15
  universeConfig: UniverseConfig;
15
16
  universeDetails: any;
@@ -592,7 +593,8 @@ declare enum TabletTabs {
592
593
  TABLET_OVERVIEW = "Tablet Overview"
593
594
  }
594
595
  declare enum SqlTabs {
595
- QUERY_OVERVIEW = "Query Overview"
596
+ QUERY_OVERVIEW = "Query Overview",
597
+ EXPLAIN_PLAN = "Explain Plan"
596
598
  }
597
599
  declare enum SqlDrilldownTabs {
598
600
  PERFORMANCE_METRICS = "Performance Metrics"
@@ -754,6 +756,8 @@ interface PaFeatureRuntimeConfigs {
754
756
  showBgTasksView?: boolean;
755
757
  showSystemQueriesView?: boolean;
756
758
  showTimezoneSelector?: boolean;
759
+ showAnomalyHighlighting?: boolean;
760
+ showExplainPlan?: boolean;
757
761
  }
758
762
  interface AnomalyPossibleCauseData {
759
763
  summary: string;
@@ -765,6 +769,44 @@ interface AnomalyPossibleCauseItem {
765
769
  possibleCauseDescription: string;
766
770
  troubleshootingRecommendations: string[];
767
771
  }
772
+ interface QueryPlanId {
773
+ dbId: number;
774
+ planId: string;
775
+ queryId: string;
776
+ universeId: string;
777
+ }
778
+ interface QueryPlanEntry {
779
+ avgEstCost: number;
780
+ avgExecTime: number;
781
+ firstUsed: string;
782
+ id: QueryPlanId;
783
+ lastUsed: string;
784
+ maxExecTime: number;
785
+ maxExecTimeParams?: string;
786
+ plan: string;
787
+ version: number;
788
+ }
789
+ interface QueryPlanData {
790
+ databaseId: string;
791
+ eps: number;
792
+ events: Events[];
793
+ firstActive: string;
794
+ lastActive: string;
795
+ latencyAvg: number;
796
+ latencyP90: number;
797
+ latencyP99: number;
798
+ namespaceName: string;
799
+ plans: QueryPlanEntry[];
800
+ query: string;
801
+ queryId: string;
802
+ queryType: string;
803
+ rowsAvg: number;
804
+ rps: number;
805
+ systemQuery: boolean;
806
+ totalEpsRatio: number;
807
+ totalTime: number;
808
+ universeId: string;
809
+ }
768
810
 
769
811
  interface MetricsAnalysisEntryProps {
770
812
  universeUuid: string;
@@ -853,7 +895,12 @@ declare class ApiService {
853
895
  fetchNodeLoadStatsPage: (universeUuid: string, payload: any) => Promise<axios.AxiosResponse<GraphRequestParams[]>>;
854
896
  fetchQueriesStatsPage: (universeUuid: string, payload: any, getClusterDetails: () => any, filteredLegends: string[], showSystemQueries?: boolean) => Promise<axios.AxiosResponse<GraphRequestParams[]>>;
855
897
  fetchNamespaceSchemas: (universeUuid: string, namespaceName: string, apiUrl?: string) => Promise<string[]>;
856
- fetchQueryStats: (universeUuid: string, payload: any, apiUrl?: string) => Promise<string[]>;
898
+ fetchQueryStats: (universeUuid: string, payload: {
899
+ queryId: string;
900
+ startTime?: string;
901
+ endTime?: string;
902
+ dbId?: string;
903
+ }, apiUrl?: string) => Promise<QueryPlanData>;
857
904
  fetchTablesPage: (universeUuid: string, payload: any) => Promise<axios.AxiosResponse<any[]>>;
858
905
  fetchNamespaces: (universeUuid: string, apiUrl?: string) => Promise<string[]>;
859
906
  fetchQueriesDatabases: (universeUuid: string, apiUrl?: string) => Promise<string[]>;
@@ -982,6 +1029,29 @@ declare const ClusterRegionSelector: ({ selectedItem, primaryClusterToRegionMap,
982
1029
  type YBCheckboxFieldProps<T extends FieldValues> = UseControllerProps<T> & YBCheckboxProps;
983
1030
  declare const YBCheckboxField: <T extends FieldValues>(props: YBCheckboxFieldProps<T>) => ReactElement;
984
1031
 
1032
+ type AceMode = 'json' | 'sql' | 'pgsql' | 'text';
1033
+
1034
+ interface MetadataEntry {
1035
+ label: string;
1036
+ value: string;
1037
+ }
1038
+ interface PerfAdvisorCodeBlockProps {
1039
+ text: string;
1040
+ mode?: AceMode;
1041
+ metadata?: MetadataEntry[];
1042
+ loading?: boolean;
1043
+ showLineNumbers?: boolean;
1044
+ showCopyButton?: boolean;
1045
+ maxLines?: number;
1046
+ minLines?: number;
1047
+ fontSize?: number;
1048
+ fontFamily?: string;
1049
+ width?: string;
1050
+ height?: string;
1051
+ className?: string;
1052
+ }
1053
+ declare const PerfAdvisorCodeBlock: ({ text, mode, metadata, loading, showLineNumbers, showCopyButton, maxLines, minLines, fontSize, fontFamily, width, height, className }: PerfAdvisorCodeBlockProps) => JSX.Element;
1054
+
985
1055
  declare const IN_DEVELOPMENT_MODE: boolean;
986
1056
  declare const REACT_APP_API_URL: string;
987
1057
 
@@ -1380,6 +1450,7 @@ declare const TOOLTIP_TEXT: {
1380
1450
  ACTIVE_SESSIONS_PER_SECOND_QUERY_TOOLTIP: string;
1381
1451
  EVENTS_QUERY_TOOLTIP: string;
1382
1452
  QUERY_TEXT_TOOLTIP: string;
1453
+ QUERY_ID_TOOLTIP: string;
1383
1454
  DELETED_TABLET_TOOLTIP: string;
1384
1455
  };
1385
1456
  declare const HISTORICAL_QUERY_DATA_LABELS: {
@@ -1428,6 +1499,24 @@ declare const VISIBLE_TABLET_DRILLDOWN_METADATA_COLUMNS = "visibleTabletDrilldow
1428
1499
  declare const VISIBLE_NODE_LOAD_METADATA_COLUMNS = "visibleNodeLoadMetadataColumns";
1429
1500
  declare const CPU_TEXT = "CPU";
1430
1501
  declare const IO_TEXT = "IO";
1502
+ /** Light red fill for last anomaly instance when its interval overlaps the visible graph range. */
1503
+ declare const ANOMALY_MARK_AREA_STYLE: {
1504
+ silent: boolean;
1505
+ itemStyle: {
1506
+ color: string;
1507
+ borderColor: string;
1508
+ borderWidth: number;
1509
+ };
1510
+ label: {
1511
+ show: boolean;
1512
+ formatter: string;
1513
+ fontWeight: string;
1514
+ fontSize: number;
1515
+ position: string;
1516
+ color: string;
1517
+ };
1518
+ };
1519
+ declare const CATEGORY_DISPLAY_NAMES: Record<string, string>;
1431
1520
 
1432
1521
  declare function isDefinedNotNull(obj: any): boolean;
1433
1522
  declare function isEmptyArray(arr: any): boolean;
@@ -1451,4 +1540,4 @@ interface YBThemeWrapperProps {
1451
1540
  */
1452
1541
  declare const YBThemeWrapper: React.FC<YBThemeWrapperProps>;
1453
1542
 
1454
- export { ACTIVE_SESSION_HISOTRY_EPS_CLIENT_NODE, ACTIVE_SESSION_HISTORY_EPS_GLOBAL, ACTIVE_SESSION_HISTORY_QUERY_EVENTS, ADD_COLUMNS_BUTTON_TEXT, ALL, ALL_REGIONS, ALL_ZONES, ANOMALY_CATEGORY_LIST, ANOMALY_FILTER_DURATION_OPTIONS, ANOMALY_TAG, ANOMALY_TYPE_TO_NAME_MAP, ASH, AggregatedLineSettings, Aggregation, Anomaly, AnomalyCategory, AnomalyDetails, AnomalyDetectionStatus, AnomalyDetectionStatusText, AnomalyGroup, AnomalyInstance, AnomalyPossibleCauseData, AnomalyPossibleCauseItem, AnomalyResponse, AnomalyType, AnomalyTypeFilter, AppName, AttachUniversePayload, AuthDetails, BACKGROUND_QUERY_REQUEST_GRAPHS, BackgroundJobCategory, BackgroundTask, BackgroundTaskGroup, BackgroundTasksResponse, CATALOG_READ_REQUEST_GRAPH, CATEGORY_HEADER_DATA_MAP, COLORS, CORES, CPU_CORES, CPU_COUNT, CPU_TEXT, CQL_QUERY_REQUEST_GRAPHS, ChartType, ClusterLoadOverallTabs, ClusterLoadResponseData, ClusterLoadSubTabs, ClusterNodeInfo, ClusterNodeListMetadata, ClusterRegionSelector, Column, ConfigureUniverseMetadata, DB_CAPS_TAG, DB_TAG, DB_TYPE_TAG, DB_WAIT_EVENT_TYPE_MAPPING, DEFAULT_ERROR_MESSAGES, DEFAULT_RECORDS_PER_PAGE, ELLIPSIS, FormattedAnomalyRca, GLOBAL_RUNTIME_CONFIG, GROUP_BY_OPERATIONS, GROUP_BY_OPERATIONS_LABELS, GraphAxisData, GraphFilters, GraphMetadata, GraphRequestParams, GraphResponse, GraphSettings, GraphType, GroupEventsBy, HISTORICAL_QUERY_DATA_LABELS, IN_DEVELOPMENT_MODE, IO_TEXT, InsightsTabs, Interval, MAX_OUTLIER_NUM_NODES, METRICS_OUTLIER_DATABASES_STORAGE_KEY, METRICS_OUTLIER_TABLES_STORAGE_KEY, METRICS_SESSION_STORAGE_KEY, METRIC_DB_RESOURCES_WITH_GRAPHS, METRIC_FONT, METRIC_MEASURE_TEXT, METRIC_NAMES, METRIC_RESOURCES_WITH_GRAPHS, METRIC_TABLES_RESOURCES_WITH_GRAPHS, METRIC_TABS, METRIC_TABS_DATABASES, METRIC_TABS_TABLES, MIN_OUTLIER_NUM_NODES, MORE, MetadataFields, MetricConsts, MetricMeasure, MetricOrigin, MetricSplitSelector, MetricsAnalysisEntry, MetricsAnalysisEntryProps, NAME_COLOR_MAPPING, NodeData, NodeDataCloudInfo, NodeDataMetrics, NodeDetails, NodeInfo, NodeState, OutlierSelector, PAUrlParams, PaFeatureRuntimeConfigs, PagedStatsResponse, PerfAdvisorAPI, PerfAdvisorEntry, PrimaryDashboardViewTabs, QUERIES, QUERY_DETAILS, QUERY_KEY, QUERY_TAG, QUERY_TYPE_TAG, QueryEvents, QueryPageParams, QueryType, QueryTypeMode, QueryWaitEvents, RCAGuideline, RCA_GANT_CHART, REACT_APP_API_URL, REGION_TAG, REGION_ZONE_TAG, RUNTIME_CONFIG_KEYS, Resources, RowItemClasses$1 as RowItemClasses, RuntimeConfigData, RuntimeConfigType, RuntimeConfigs, SQL_QUERY_REQUEST_GRAPHS, SortDirection, SplitMode, SplitType, SqlDrilldownTabs, SqlTabs, TABLET_ID_TAG, TABLET_TAG, TABLE_REQUEST_GRAPHS, TABLE_TAG, TIME_FILTER_LABEL, TIME_FILTER_VALUES, TOOLTIP_TEXT, TPFeatureFlags, TYPE, TableInfo, TablePageParams, TabletResponseMetadata, TabletTabs, TransformedBackgroundTasksCategory, TransformedBackgroundTasksResponse, TransformedData, TransformedDbLoadData, TransformedNodeLoadData, TransformedTabletsData, TroubleshootingRecommendations, URL_TAB_PATH, USER_TAG, Universe, UniverseConfig, UniverseDatabaseStatsData, UniverseMetadataFields, UniverseNodeDetails, UniverseQueryData, UniverseQueryStatsData, UpdateMetadataFormFields, UpdateRuntimeConfigFormFields, UrlParams, VIEW_MORE, VISIBLE_DB_LOAD_METADATA_COLUMNS, VISIBLE_NODE_LOAD_METADATA_COLUMNS, VISIBLE_QUERY_METADATA_COLUMNS, VISIBLE_TABLETS_METADATA_COLUMNS, VISIBLE_TABLET_DRILLDOWN_METADATA_COLUMNS, WaitEventClassification, YBCheckboxField, YBErrorIndicator, YBInfinitePagination, YBInputField, YBPanelItem, YBThemeWrapper, YBToggleField, YSQL_COLUMNS, ZONE_TAG, ZoneNodeSelector, filterDurations, getCustomFooterComponent, getRowCellComponent, isDefinedNotNull, isEmptyArray, isEmptyObject, isEmptyString, isNonEmptyArray, isNonEmptyObject, isNonEmptyString, isNullOrEmpty, isValidObject, isYAxisGreaterThanThousand, metricOutlierSelectors, metricSplitSelectors, otherSplitSelectors, queryTypeSelectors, removeNullProperties, useCodeBlockStyles };
1543
+ export { ACTIVE_SESSION_HISOTRY_EPS_CLIENT_NODE, ACTIVE_SESSION_HISTORY_EPS_GLOBAL, ACTIVE_SESSION_HISTORY_QUERY_EVENTS, ADD_COLUMNS_BUTTON_TEXT, ALL, ALL_REGIONS, ALL_ZONES, ANOMALY_CATEGORY_LIST, ANOMALY_FILTER_DURATION_OPTIONS, ANOMALY_MARK_AREA_STYLE, ANOMALY_TAG, ANOMALY_TYPE_TO_NAME_MAP, ASH, AggregatedLineSettings, Aggregation, Anomaly, AnomalyCategory, AnomalyDetails, AnomalyDetectionStatus, AnomalyDetectionStatusText, AnomalyGroup, AnomalyInstance, AnomalyPossibleCauseData, AnomalyPossibleCauseItem, AnomalyResponse, AnomalyType, AnomalyTypeFilter, AppName, AttachUniversePayload, AuthDetails, BACKGROUND_QUERY_REQUEST_GRAPHS, BackgroundJobCategory, BackgroundTask, BackgroundTaskGroup, BackgroundTasksResponse, CATALOG_READ_REQUEST_GRAPH, CATEGORY_DISPLAY_NAMES, CATEGORY_HEADER_DATA_MAP, COLORS, CORES, CPU_CORES, CPU_COUNT, CPU_TEXT, CQL_QUERY_REQUEST_GRAPHS, ChartType, ClusterLoadOverallTabs, ClusterLoadResponseData, ClusterLoadSubTabs, ClusterNodeInfo, ClusterNodeListMetadata, ClusterRegionSelector, Column, ConfigureUniverseMetadata, DB_CAPS_TAG, DB_TAG, DB_TYPE_TAG, DB_WAIT_EVENT_TYPE_MAPPING, DEFAULT_ERROR_MESSAGES, DEFAULT_RECORDS_PER_PAGE, ELLIPSIS, FormattedAnomalyRca, GLOBAL_RUNTIME_CONFIG, GROUP_BY_OPERATIONS, GROUP_BY_OPERATIONS_LABELS, GraphAxisData, GraphFilters, GraphMetadata, GraphRequestParams, GraphResponse, GraphSettings, GraphType, GroupEventsBy, HISTORICAL_QUERY_DATA_LABELS, IN_DEVELOPMENT_MODE, IO_TEXT, InsightsTabs, Interval, MAX_OUTLIER_NUM_NODES, METRICS_OUTLIER_DATABASES_STORAGE_KEY, METRICS_OUTLIER_TABLES_STORAGE_KEY, METRICS_SESSION_STORAGE_KEY, METRIC_DB_RESOURCES_WITH_GRAPHS, METRIC_FONT, METRIC_MEASURE_TEXT, METRIC_NAMES, METRIC_RESOURCES_WITH_GRAPHS, METRIC_TABLES_RESOURCES_WITH_GRAPHS, METRIC_TABS, METRIC_TABS_DATABASES, METRIC_TABS_TABLES, MIN_OUTLIER_NUM_NODES, MORE, MetadataFields, MetricConsts, MetricMeasure, MetricOrigin, MetricSplitSelector, MetricsAnalysisEntry, MetricsAnalysisEntryProps, NAME_COLOR_MAPPING, NodeData, NodeDataCloudInfo, NodeDataMetrics, NodeDetails, NodeInfo, NodeState, OutlierSelector, PAUrlParams, PaFeatureRuntimeConfigs, PagedStatsResponse, PerfAdvisorAPI, PerfAdvisorCodeBlock, PerfAdvisorEntry, PrimaryDashboardViewTabs, QUERIES, QUERY_DETAILS, QUERY_KEY, QUERY_TAG, QUERY_TYPE_TAG, QueryEvents, QueryPageParams, QueryPlanData, QueryPlanEntry, QueryPlanId, QueryType, QueryTypeMode, QueryWaitEvents, RCAGuideline, RCA_GANT_CHART, REACT_APP_API_URL, REGION_TAG, REGION_ZONE_TAG, RUNTIME_CONFIG_KEYS, Resources, RowItemClasses$1 as RowItemClasses, RuntimeConfigData, RuntimeConfigType, RuntimeConfigs, SQL_QUERY_REQUEST_GRAPHS, SortDirection, SplitMode, SplitType, SqlDrilldownTabs, SqlTabs, TABLET_ID_TAG, TABLET_TAG, TABLE_REQUEST_GRAPHS, TABLE_TAG, TIME_FILTER_LABEL, TIME_FILTER_VALUES, TOOLTIP_TEXT, TPFeatureFlags, TYPE, TableInfo, TablePageParams, TabletResponseMetadata, TabletTabs, TransformedBackgroundTasksCategory, TransformedBackgroundTasksResponse, TransformedData, TransformedDbLoadData, TransformedNodeLoadData, TransformedTabletsData, TroubleshootingRecommendations, URL_TAB_PATH, USER_TAG, Universe, UniverseConfig, UniverseDatabaseStatsData, UniverseMetadataFields, UniverseNodeDetails, UniverseQueryData, UniverseQueryStatsData, UpdateMetadataFormFields, UpdateRuntimeConfigFormFields, UrlParams, VIEW_MORE, VISIBLE_DB_LOAD_METADATA_COLUMNS, VISIBLE_NODE_LOAD_METADATA_COLUMNS, VISIBLE_QUERY_METADATA_COLUMNS, VISIBLE_TABLETS_METADATA_COLUMNS, VISIBLE_TABLET_DRILLDOWN_METADATA_COLUMNS, WaitEventClassification, YBCheckboxField, YBErrorIndicator, YBInfinitePagination, YBInputField, YBPanelItem, YBThemeWrapper, YBToggleField, YSQL_COLUMNS, ZONE_TAG, ZoneNodeSelector, filterDurations, getCustomFooterComponent, getRowCellComponent, isDefinedNotNull, isEmptyArray, isEmptyObject, isEmptyString, isNonEmptyArray, isNonEmptyObject, isNonEmptyString, isNullOrEmpty, isValidObject, isYAxisGreaterThanThousand, metricOutlierSelectors, metricSplitSelectors, otherSplitSelectors, queryTypeSelectors, removeNullProperties, useCodeBlockStyles };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yugabytedb/perf-advisor-ui",
3
- "version": "1.0.121",
3
+ "version": "1.0.122",
4
4
  "main": "dist/cjs/index.js",
5
5
  "types": "dist/types.d.ts",
6
6
  "author": "Rajagopalan Madhavan",
@@ -32,7 +32,7 @@
32
32
  "@testing-library/user-event": "^13.5.0",
33
33
  "@typescript-eslint/eslint-plugin": "6.21.0",
34
34
  "@typescript-eslint/parser": "6.21.0",
35
- "@yugabyte-ui-library/core": "2.0.21",
35
+ "@yugabyte-ui-library/core": "2.0.25",
36
36
  "concurrently": "9.2.1",
37
37
  "eslint-config-prettier": "8.3.0",
38
38
  "eslint-plugin-import": "2.23.4",
@@ -56,6 +56,7 @@
56
56
  "@types/react-dom": "17.0.3",
57
57
  "@types/react-router": "3.0.24",
58
58
  "@types/react-router-dom": "5.3.3",
59
+ "ace-builds": "1.43.6",
59
60
  "axios": "0.21.3",
60
61
  "clsx": "1.1.1",
61
62
  "date-fns": "2.30.0",
@@ -64,6 +65,7 @@
64
65
  "lodash-es": "4.17.21",
65
66
  "prettier": "2.1.0",
66
67
  "react": "17.0.2",
68
+ "react-ace": "14.0.1",
67
69
  "react-dom": "17.0.2",
68
70
  "react-hook-form": "7.40.0",
69
71
  "react-query": "3.32.1",
@@ -81,7 +83,7 @@
81
83
  "@material-ui/core": "4.12.3",
82
84
  "@material-ui/icons": "4.11.2",
83
85
  "@material-ui/lab": "4.0.0-alpha.58",
84
- "@yugabyte-ui-library/core": "2.0.21",
86
+ "@yugabyte-ui-library/core": "2.0.25",
85
87
  "react": "17.0.2",
86
88
  "react-dom": "17.0.2",
87
89
  "react-query": "3.32.1",
@@ -118,4 +120,4 @@
118
120
  "publishConfig": {
119
121
  "access": "public"
120
122
  }
121
- }
123
+ }
@@ -1 +0,0 @@
1
- .ganttChart-module_ganttContainer__ZLGGU{background-color:#fff;display:flex;font-family:Inter,sans-serif;overflow:hidden}.ganttChart-module_groupPanel__oFRg3{border-right:1px dashed #d7dee4;flex-shrink:0;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.ganttChart-module_groupPanel__oFRg3::-webkit-scrollbar{display:none}.ganttChart-module_groupRow__6PPe1{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:space-between;position:relative;user-select:none}.ganttChart-module_groupRow__6PPe1:focus-visible{outline:2px solid #3884fb;outline-offset:-2px}.ganttChart-module_rowContent__gs9Uc{align-items:center;display:flex;flex:1;gap:6px;min-width:0;overflow:hidden}.ganttChart-module_rowLevel1__v2GY5{color:#0b1117;font-size:13px;font-weight:400;padding-bottom:16px;padding-top:16px}.ganttChart-module_rowLevel2__5ftBq{color:#0b1117;font-size:11.5px;font-weight:600;padding-bottom:8px;padding-top:8px}.ganttChart-module_rowLevel3__nqdSs{color:#0b1117;font-size:11px;font-weight:400;padding-bottom:8px;padding-top:8px}.ganttChart-module_expandIcon__wh0gm{flex-shrink:0;font-size:14px;line-height:1;text-align:center;width:14px}.ganttChart-module_rowLabel__-Ol3k{color:inherit;cursor:pointer;letter-spacing:.3px;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.ganttChart-module_rowLabel__-Ol3k:hover{box-shadow:inset 0 0 4px #f7f9fbcc}.ganttChart-module_rowLevel3__nqdSs .ganttChart-module_rowLabel__-Ol3k{text-decoration:underline}.ganttChart-module_leftBorder__MYP53{position:relative}.ganttChart-module_leftBorder__MYP53:before{bottom:0;content:"";left:0;position:absolute;top:0;width:2px}.ganttChart-module_leftBorderLast__68qTE{position:relative}.ganttChart-module_leftBorderLast__68qTE:before{bottom:8px;content:"";left:0;position:absolute;top:0;width:2px}.ganttChart-module_category_db__FOtWQ.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_db__FOtWQ.ganttChart-module_leftBorder__MYP53:before{background-color:#7879f1}.ganttChart-module_category_node__ntDIm.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_node__ntDIm.ganttChart-module_leftBorder__MYP53:before{background-color:#ffd383}.ganttChart-module_category_sql__FlcM9.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_sql__FlcM9.ganttChart-module_leftBorder__MYP53:before{background-color:#bb42bc}.ganttChart-module_category_app__PGCVc.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_app__PGCVc.ganttChart-module_leftBorder__MYP53:before{background-color:#2fb3ff}.ganttChart-module_category_infra__ni9Yf.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_infra__ni9Yf.ganttChart-module_leftBorder__MYP53:before{background-color:#507ce1}.ganttChart-module_category_all--background--jobs__HsSBv.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_all--background--jobs__HsSBv.ganttChart-module_leftBorder__MYP53:before{background-color:#97a5b0}.ganttChart-module_badge__fT6pf{align-items:center;border-radius:4px;box-sizing:border-box;display:inline-flex;flex-shrink:0;font-size:11.5px;font-weight:500;height:20px;justify-content:center;line-height:16px;margin-right:8px;min-width:20px;padding:0 6px}.ganttChart-module_badge_db__cfDCy{background-color:#e8e9fe;color:#30307f}.ganttChart-module_badge_node__Qk2pi{background-color:#ffeec8;color:#9d6c00}.ganttChart-module_badge_sql__88SEV{background-color:#bb42bc26;color:#7d2777}.ganttChart-module_badge_app__Sn0l1{background-color:#d7eff4;color:#2b59c3}.ganttChart-module_badge_infra__nGVhx{background-color:#c1ccec;color:#507ce1}.ganttChart-module_badge_bg-jobs__Maw0z{background-color:#e9eef2;color:#4e5f6d}.ganttChart-module_categorySeparator__I-Iud{background-color:#d7dee4;height:1px;width:100%}.ganttChart-module_timelinePanel__2SmIp{flex:1;margin-left:8px;overflow-x:auto;overflow-y:auto;scrollbar-width:none}.ganttChart-module_timelinePanel__2SmIp::-webkit-scrollbar{display:none}.ganttChart-module_timelineSvg__Cbjlv{display:block}.ganttChart-module_timeAxis__Xs2oE text{fill:#0b1117;font-family:Inter,sans-serif;font-size:11px;font-weight:400}.ganttChart-module_tickLabel__bZd9O{fill:#4e5f6d;font-family:Inter,sans-serif;font-size:11px;font-weight:400}
@@ -1 +0,0 @@
1
- .ganttChart-module_ganttContainer__ZLGGU{background-color:#fff;display:flex;font-family:Inter,sans-serif;overflow:hidden}.ganttChart-module_groupPanel__oFRg3{border-right:1px dashed #d7dee4;flex-shrink:0;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.ganttChart-module_groupPanel__oFRg3::-webkit-scrollbar{display:none}.ganttChart-module_groupRow__6PPe1{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;justify-content:space-between;position:relative;user-select:none}.ganttChart-module_groupRow__6PPe1:focus-visible{outline:2px solid #3884fb;outline-offset:-2px}.ganttChart-module_rowContent__gs9Uc{align-items:center;display:flex;flex:1;gap:6px;min-width:0;overflow:hidden}.ganttChart-module_rowLevel1__v2GY5{color:#0b1117;font-size:13px;font-weight:400;padding-bottom:16px;padding-top:16px}.ganttChart-module_rowLevel2__5ftBq{color:#0b1117;font-size:11.5px;font-weight:600;padding-bottom:8px;padding-top:8px}.ganttChart-module_rowLevel3__nqdSs{color:#0b1117;font-size:11px;font-weight:400;padding-bottom:8px;padding-top:8px}.ganttChart-module_expandIcon__wh0gm{flex-shrink:0;font-size:14px;line-height:1;text-align:center;width:14px}.ganttChart-module_rowLabel__-Ol3k{color:inherit;cursor:pointer;letter-spacing:.3px;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.ganttChart-module_rowLabel__-Ol3k:hover{box-shadow:inset 0 0 4px #f7f9fbcc}.ganttChart-module_rowLevel3__nqdSs .ganttChart-module_rowLabel__-Ol3k{text-decoration:underline}.ganttChart-module_leftBorder__MYP53{position:relative}.ganttChart-module_leftBorder__MYP53:before{bottom:0;content:"";left:0;position:absolute;top:0;width:2px}.ganttChart-module_leftBorderLast__68qTE{position:relative}.ganttChart-module_leftBorderLast__68qTE:before{bottom:8px;content:"";left:0;position:absolute;top:0;width:2px}.ganttChart-module_category_db__FOtWQ.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_db__FOtWQ.ganttChart-module_leftBorder__MYP53:before{background-color:#7879f1}.ganttChart-module_category_node__ntDIm.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_node__ntDIm.ganttChart-module_leftBorder__MYP53:before{background-color:#ffd383}.ganttChart-module_category_sql__FlcM9.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_sql__FlcM9.ganttChart-module_leftBorder__MYP53:before{background-color:#bb42bc}.ganttChart-module_category_app__PGCVc.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_app__PGCVc.ganttChart-module_leftBorder__MYP53:before{background-color:#2fb3ff}.ganttChart-module_category_infra__ni9Yf.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_infra__ni9Yf.ganttChart-module_leftBorder__MYP53:before{background-color:#507ce1}.ganttChart-module_category_all--background--jobs__HsSBv.ganttChart-module_leftBorderLast__68qTE:before,.ganttChart-module_category_all--background--jobs__HsSBv.ganttChart-module_leftBorder__MYP53:before{background-color:#97a5b0}.ganttChart-module_badge__fT6pf{align-items:center;border-radius:4px;box-sizing:border-box;display:inline-flex;flex-shrink:0;font-size:11.5px;font-weight:500;height:20px;justify-content:center;line-height:16px;margin-right:8px;min-width:20px;padding:0 6px}.ganttChart-module_badge_db__cfDCy{background-color:#e8e9fe;color:#30307f}.ganttChart-module_badge_node__Qk2pi{background-color:#ffeec8;color:#9d6c00}.ganttChart-module_badge_sql__88SEV{background-color:#bb42bc26;color:#7d2777}.ganttChart-module_badge_app__Sn0l1{background-color:#d7eff4;color:#2b59c3}.ganttChart-module_badge_infra__nGVhx{background-color:#c1ccec;color:#507ce1}.ganttChart-module_badge_bg-jobs__Maw0z{background-color:#e9eef2;color:#4e5f6d}.ganttChart-module_categorySeparator__I-Iud{background-color:#d7dee4;height:1px;width:100%}.ganttChart-module_timelinePanel__2SmIp{flex:1;margin-left:8px;overflow-x:auto;overflow-y:auto;scrollbar-width:none}.ganttChart-module_timelinePanel__2SmIp::-webkit-scrollbar{display:none}.ganttChart-module_timelineSvg__Cbjlv{display:block}.ganttChart-module_timeAxis__Xs2oE text{fill:#0b1117;font-family:Inter,sans-serif;font-size:11px;font-weight:400}.ganttChart-module_tickLabel__bZd9O{fill:#4e5f6d;font-family:Inter,sans-serif;font-size:11px;font-weight:400}