Created
August 3, 2022 13:05
-
-
Save pauldambra/758e8a84dbbf2af246cdc3679e1bb88c to your computer and use it in GitHub Desktop.
Generate mermaid tree from file imports
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import dataclasses | |
import re | |
from typing import List, Optional | |
file_links: List[str] = [ | |
# laziness here - regenerate with `grep '(import.*insight.*)' ./frontend/src -Er --include="*.ts*" --exclude="*test.ts*" --exclude="*type.ts" --exclude="*stories.tsx"` | |
"./frontend/src/scenes/insights/filters/FunnelExclusionsFilter.tsx:import { ActionFilter } from 'scenes/insights/filters/ActionFilter/ActionFilter'", | |
"./frontend/src/scenes/insights/filters/FunnelExclusionsFilter.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/filters/FunnelExclusionsFilter.tsx:import { MathAvailability } from 'scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow'", | |
"./frontend/src/scenes/insights/filters/PathCleaningFilter.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/filters/ActionFilter/RenameModal.tsx:import { entityFilterLogic } from 'scenes/insights/filters/ActionFilter/entityFilterLogic'", | |
"./frontend/src/scenes/insights/filters/ActionFilter/RenameModal.tsx:import { getDisplayNameFromEntityFilter } from 'scenes/insights/utils'", | |
"./frontend/src/scenes/insights/filters/ActionFilter/RenameModal.tsx:import { renameModalLogic } from 'scenes/insights/filters/ActionFilter/renameModalLogic'", | |
"./frontend/src/scenes/insights/filters/ActionFilter/ActionFilter.tsx:import { RenameModal } from 'scenes/insights/filters/ActionFilter/RenameModal'", | |
"./frontend/src/scenes/insights/filters/ActionFilter/renameModalLogic.ts:import { getDisplayNameFromEntityFilter } from 'scenes/insights/utils'", | |
"./frontend/src/scenes/insights/filters/ActionFilter/renameModalLogic.ts:import { entityFilterLogic } from 'scenes/insights/filters/ActionFilter/entityFilterLogic'", | |
"./frontend/src/scenes/insights/filters/ReferencePicker.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/filters/BreakdownFilter/TaxonomicBreakdownFilter.tsx:import { TaxonomicBreakdownButton } from 'scenes/insights/filters/BreakdownFilter/TaxonomicBreakdownButton'", | |
"./frontend/src/scenes/insights/filters/BreakdownFilter/TaxonomicBreakdownButton.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/filters/FunnelStepReferencePicker.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/filters/InsightDateFilter/InsightDateFilter.tsx:import { insightDateFilterLogic } from './insightDateFilterLogic'", | |
"./frontend/src/scenes/insights/filters/InsightDateFilter/InsightDateFilter.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/filters/InsightDateFilter/insightDateFilterLogic.ts:import type { insightDateFilterLogicType } from './insightDateFilterLogicType'", | |
"./frontend/src/scenes/insights/filters/InsightDateFilter/insightDateFilterLogic.ts:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/filters/InsightDateFilter/insightDateFilterLogic.ts:import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/scenes/insights/insightSceneLogic.tsx:import type { insightSceneLogicType } from './insightSceneLogicType'", | |
"./frontend/src/scenes/insights/insightSceneLogic.tsx:import { insightLogicType } from 'scenes/insights/insightLogicType'", | |
"./frontend/src/scenes/insights/insightSceneLogic.tsx:import { createEmptyInsight, insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/insightSceneLogic.tsx:import { cleanFilters } from 'scenes/insights/utils/cleanFilters'", | |
"./frontend/src/scenes/insights/ComputationTimeWithRefresh.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/InsightsTable/insightsTableLogicType.ts:import type { CalcColumnState } from './insightsTableLogic'", | |
"./frontend/src/scenes/insights/EditorFilters/EditorFilters.tsx:import { TrendsSteps } from 'scenes/insights/EditorFilters/TrendsSteps'", | |
"./frontend/src/scenes/insights/EditorFilters/EditorFilters.tsx:import { TrendsGlobalAndOrFilters } from 'scenes/insights/EditorFilters/TrendsGlobalAndOrFilters'", | |
"./frontend/src/scenes/insights/EditorFilters/EditorFilters.tsx:import { TrendsFormula } from 'scenes/insights/EditorFilters/TrendsFormula'", | |
"./frontend/src/scenes/insights/EditorFilters/EditorFilters.tsx:import { TrendsBreakdown } from 'scenes/insights/EditorFilters/TrendsBreakdown'", | |
"./frontend/src/scenes/insights/EditorFilters/EditorFilters.tsx:import { LifecycleToggles } from 'scenes/insights/EditorFilters/LifecycleToggles'", | |
"./frontend/src/scenes/insights/EditorFilters/EditorFilters.tsx:import { LifecycleGlobalFilters } from 'scenes/insights/EditorFilters/LifecycleGlobalFilters'", | |
"./frontend/src/scenes/insights/EditorFilters/EditorFilters.tsx:import { insightLogic } from '../insightLogic'", | |
"./frontend/src/scenes/insights/EditorFilters/RetentionSummary.tsx:import { AggregationSelect } from 'scenes/insights/filters/AggregationSelect'", | |
"./frontend/src/scenes/insights/EditorFilters/InsightTypeSelector.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/EditorFilters/InsightTypeSelector.tsx:import { INSIGHT_TYPES_METADATA } from 'scenes/saved-insights/SavedInsights'", | |
"./frontend/src/scenes/insights/EditorFilters/TrendsBreakdown.tsx:import { BreakdownFilter } from 'scenes/insights/filters/BreakdownFilter'", | |
"./frontend/src/scenes/insights/EditorFilters/FunnelsQuerySteps.tsx:import { MathAvailability } from 'scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow'", | |
"./frontend/src/scenes/insights/EditorFilters/TrendsGlobalAndOrFilters.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/EditorFilters/TrendsSteps.tsx:import { ActionFilter } from 'scenes/insights/filters/ActionFilter/ActionFilter'", | |
"./frontend/src/scenes/insights/EditorFilters/TrendsSteps.tsx:import { MathAvailability } from 'scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow'", | |
"./frontend/src/scenes/insights/EditorFilters/LifecycleGlobalFilters.tsx:import { TestAccountFilter } from 'scenes/insights/filters/TestAccountFilter'", | |
"./frontend/src/scenes/insights/utils.ts:import { savedInsightsLogic } from 'scenes/saved-insights/savedInsightsLogic'", | |
"./frontend/src/scenes/insights/utils.ts:import { insightLogic } from './insightLogic'", | |
"./frontend/src/scenes/insights/InsightScene.tsx:import { insightSceneLogic } from 'scenes/insights/insightSceneLogic'", | |
"./frontend/src/scenes/insights/InsightScene.tsx:import { Insight } from 'scenes/insights/Insight'", | |
"./frontend/src/scenes/insights/InsightScene.tsx:import { InsightSkeleton } from 'scenes/insights/InsightSkeleton'", | |
"./frontend/src/scenes/insights/utils/cleanFilters.ts:import { defaultFilterTestAccounts } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/utils/cleanFilters.ts:import { isTrendsInsight } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/scenes/insights/insightCommandLogic.ts:import type { insightCommandLogicType } from './insightCommandLogicType'", | |
"./frontend/src/scenes/insights/insightCommandLogic.ts:import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/scenes/insights/insightCommandLogic.ts:import { insightDateFilterLogic } from 'scenes/insights/filters/InsightDateFilter/insightDateFilterLogic'", | |
"./frontend/src/scenes/insights/EmptyStates/EmptyStates.tsx:import { entityFilterLogic } from 'scenes/insights/filters/ActionFilter/entityFilterLogic'", | |
"./frontend/src/scenes/insights/EmptyStates/EmptyStates.tsx:import { savedInsightsLogic } from 'scenes/saved-insights/savedInsightsLogic'", | |
"./frontend/src/scenes/insights/EmptyStates/EmptyStates.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/RetentionDatePicker.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/insightLogic.ts:import type { insightLogicType } from './insightLogicType'", | |
"./frontend/src/scenes/insights/insightLogic.ts:import { filterTrendsClientSideParams, keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/scenes/insights/insightLogic.ts:import { cleanFilters } from 'scenes/insights/utils/cleanFilters'", | |
"./frontend/src/scenes/insights/insightLogic.ts:import { savedInsightsLogic } from 'scenes/saved-insights/savedInsightsLogic'", | |
"./frontend/src/scenes/insights/insightLogic.ts:import { insightSceneLogic } from 'scenes/insights/insightSceneLogic'", | |
"./frontend/src/scenes/insights/insightLogic.ts:import { mergeWithDashboardTile } from 'scenes/insights/utils/dashboardTiles'", | |
"./frontend/src/scenes/insights/InsightContainer.tsx:import { InsightDisplayConfig } from 'scenes/insights/InsightDisplayConfig'", | |
"./frontend/src/scenes/insights/InsightContainer.tsx:import { ComputationTimeWithRefresh } from 'scenes/insights/ComputationTimeWithRefresh'", | |
"./frontend/src/scenes/insights/InsightContainer.tsx:import { InsightsTable } from 'scenes/insights/views/InsightsTable'", | |
"./frontend/src/scenes/insights/InsightContainer.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/InsightContainer.tsx:import { insightSceneLogic } from 'scenes/insights/insightSceneLogic'", | |
"./frontend/src/scenes/insights/LineGraph/lineGraphLogicType.ts:import type { SeriesDatum } from '../InsightTooltip/insightTooltipUtils'", | |
"./frontend/src/scenes/insights/Insight.tsx:import { insightSceneLogic } from 'scenes/insights/insightSceneLogic'", | |
"./frontend/src/scenes/insights/Insight.tsx:import { insightLogic } from './insightLogic'", | |
"./frontend/src/scenes/insights/Insight.tsx:import { insightCommandLogic } from './insightCommandLogic'", | |
"./frontend/src/scenes/insights/Insight.tsx:import { InsightContainer } from 'scenes/insights/InsightContainer'", | |
"./frontend/src/scenes/insights/Insight.tsx:import { InsightSkeleton } from 'scenes/insights/InsightSkeleton'", | |
"./frontend/src/scenes/insights/Insight.tsx:import { savedInsightsLogic } from 'scenes/saved-insights/savedInsightsLogic'", | |
"./frontend/src/scenes/insights/InsightsNav.tsx:import { insightLogic } from './insightLogic'", | |
"./frontend/src/scenes/insights/InsightsNav.tsx:import { INSIGHT_TYPES_METADATA } from 'scenes/saved-insights/SavedInsights'", | |
"./frontend/src/scenes/insights/InsightDisplayConfig.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/insightSceneLogicType.ts:import type { insightLogicType } from './insightLogicType'", | |
"./frontend/src/scenes/insights/views/InsightsTable/insightsTableLogicType.ts:import type { CalcColumnState } from './insightsTableLogic'", | |
"./frontend/src/scenes/insights/views/InsightsTable/InsightsTable.tsx:import { CalcColumnState, insightsTableLogic } from './insightsTableLogic'", | |
"./frontend/src/scenes/insights/views/InsightsTable/InsightsTable.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/InsightsTable/InsightsTable.tsx:import { formatBreakdownLabel } from 'scenes/insights/utils'", | |
"./frontend/src/scenes/insights/views/InsightsTable/insightsTableLogic.ts:import type { insightsTableLogicType } from './insightsTableLogicType'", | |
"./frontend/src/scenes/insights/views/Paths/PathStepPicker.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Trends/funnelsCueLogic.tsx:import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/scenes/insights/views/Trends/funnelsCueLogic.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Trends/FunnelsCue.tsx:import { funnelsCueLogic } from 'scenes/insights/views/Trends/funnelsCueLogic'", | |
"./frontend/src/scenes/insights/views/Trends/FunnelsCue.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/LineGraph/LineGraph.tsx:import { InsightTooltip } from 'scenes/insights/InsightTooltip/InsightTooltip'", | |
"./frontend/src/scenes/insights/views/LineGraph/LineGraph.tsx:import { lineGraphLogic } from 'scenes/insights/views/LineGraph/lineGraphLogic'", | |
"./frontend/src/scenes/insights/views/LineGraph/LineGraph.tsx:import { TooltipConfig } from 'scenes/insights/InsightTooltip/insightTooltipUtils'", | |
"./frontend/src/scenes/insights/views/LineGraph/LineGraph.tsx:import { formatAggregationAxisValue, AggregationAxisFormat } from 'scenes/insights/aggregationAxisFormat'", | |
"./frontend/src/scenes/insights/views/LineGraph/lineGraphLogicType.ts:import type { SeriesDatum } from '../../InsightTooltip/insightTooltipUtils'", | |
"./frontend/src/scenes/insights/views/LineGraph/lineGraphLogic.ts:import { SeriesDatum } from 'scenes/insights/InsightTooltip/insightTooltipUtils'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelStepsTable.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelStepsTable.tsx:import { formatBreakdownLabel } from 'scenes/insights/utils'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelInsight.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelStepOrderPicker.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelCorrelation.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelCorrelationTable.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/ToggleButtonChartFilter.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelDisplayLayoutPicker.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelConversionWindowFilter.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelPropertyCorrelationTable.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelStepsPicker.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/CorrelationMatrix.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/Funnels/FunnelBinsPicker.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/WorldMap/worldMapLogic.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/WorldMap/WorldMap.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/insights/views/WorldMap/WorldMap.tsx:import { InsightTooltip } from 'scenes/insights/InsightTooltip/InsightTooltip'", | |
"./frontend/src/scenes/insights/views/WorldMap/WorldMap.tsx:import { SeriesDatum } from '../../InsightTooltip/insightTooltipUtils'", | |
"./frontend/src/scenes/insights/views/Histogram/histogramLogic.ts:import { getConfig, HistogramConfig } from 'scenes/insights/views/Histogram/histogramUtils'", | |
"./frontend/src/scenes/insights/views/Histogram/Histogram.tsx:import { histogramLogic } from 'scenes/insights/views/Histogram/histogramLogic'", | |
"./frontend/src/scenes/insights/views/Histogram/histogramUtils.ts:import { HistogramDatum } from 'scenes/insights/views/Histogram/Histogram'", | |
"./frontend/src/scenes/appScenes.ts: [Scene.Insight]: () => import('./insights/InsightScene'),", | |
"./frontend/src/scenes/appScenes.ts: [Scene.SavedInsights]: () => import('./saved-insights/SavedInsights'),", | |
"./frontend/src/scenes/retention/RetentionLineGraph.tsx:import { LineGraph } from '../insights/views/LineGraph/LineGraph'", | |
"./frontend/src/scenes/retention/RetentionLineGraph.tsx:import { InsightEmptyState } from '../insights/EmptyStates'", | |
"./frontend/src/scenes/retention/RetentionLineGraph.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/retention/retentionTableLogic.ts:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/retention/retentionTableLogic.ts:import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/scenes/retention/retentionTableLogic.ts:import { cleanFilters } from 'scenes/insights/utils/cleanFilters'", | |
"./frontend/src/scenes/retention/RetentionTable.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/experiments/experimentLogic.tsx:import { cleanFilters } from 'scenes/insights/utils/cleanFilters'", | |
"./frontend/src/scenes/experiments/secondaryMetricsLogic.ts:import { cleanFilters } from 'scenes/insights/utils/cleanFilters'", | |
"./frontend/src/scenes/experiments/Experiment.tsx:import { ActionFilter } from 'scenes/insights/filters/ActionFilter/ActionFilter'", | |
"./frontend/src/scenes/experiments/Experiment.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/experiments/Experiment.tsx:import { InsightContainer } from 'scenes/insights/InsightContainer'", | |
"./frontend/src/scenes/experiments/Experiment.tsx:import { MathAvailability } from 'scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow'", | |
"./frontend/src/scenes/experiments/SecondaryMetrics.tsx:import { ActionFilter } from 'scenes/insights/filters/ActionFilter/ActionFilter'", | |
"./frontend/src/scenes/experiments/SecondaryMetrics.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/experiments/SecondaryMetrics.tsx:import { InsightContainer } from 'scenes/insights/InsightContainer'", | |
"./frontend/src/scenes/experiments/SecondaryMetrics.tsx:import { MathAvailability } from 'scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow'", | |
"./frontend/src/scenes/paths/Paths.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/paths/Paths.tsx:import { InsightEmptyState } from 'scenes/insights/EmptyStates'", | |
"./frontend/src/scenes/paths/PathsLabel.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/paths/pathsLogic.ts:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/paths/pathsLogic.ts:import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/scenes/paths/pathsLogic.ts:import { cleanFilters } from 'scenes/insights/utils/cleanFilters'", | |
"./frontend/src/scenes/project-homepage/RecentInsights.tsx:import { InsightIcon } from 'scenes/saved-insights/SavedInsights'", | |
"./frontend/src/scenes/dashboard/DashboardItems.tsx:import { insightsModel } from '~/models/insightsModel'", | |
"./frontend/src/scenes/dashboard/Dashboard.tsx:import { InsightErrorState } from 'scenes/insights/EmptyStates'", | |
"./frontend/src/scenes/dashboard/dashboardLogic.ts:import { insightsModel } from '~/models/insightsModel'", | |
"./frontend/src/scenes/dashboard/dashboardLogic.ts:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/dashboard/dashboardLogic.ts:import { mergeWithDashboardTile } from 'scenes/insights/utils/dashboardTiles'", | |
"./frontend/src/scenes/trends/PersonsModal.tsx:import { countryCodeToFlag, countryCodeToName } from 'scenes/insights/views/WorldMap/countryCodes'", | |
"./frontend/src/scenes/trends/personsModalLogic.ts:import { cleanFilters } from 'scenes/insights/utils/cleanFilters'", | |
"./frontend/src/scenes/trends/personsModalLogic.ts:import { filterTrendsClientSideParams } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/scenes/trends/viz/ActionsLineGraph.tsx:import { LineGraph } from '../../insights/views/LineGraph/LineGraph'", | |
"./frontend/src/scenes/trends/viz/ActionsLineGraph.tsx:import { InsightEmptyState } from '../../insights/EmptyStates'", | |
"./frontend/src/scenes/trends/viz/ActionsLineGraph.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/trends/viz/ActionsPie.tsx:import { LineGraph } from '../../insights/views/LineGraph/LineGraph'", | |
"./frontend/src/scenes/trends/viz/ActionsPie.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/trends/viz/ActionsHorizontalBar.tsx:import { LineGraph } from '../../insights/views/LineGraph/LineGraph'", | |
"./frontend/src/scenes/trends/viz/ActionsHorizontalBar.tsx:import { InsightEmptyState } from '../../insights/EmptyStates'", | |
"./frontend/src/scenes/trends/viz/ActionsHorizontalBar.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/trends/trendsLogic.ts:import { insightLogic } from '../insights/insightLogic'", | |
"./frontend/src/scenes/trends/trendsLogic.ts:import { isTrendsInsight, keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/scenes/trends/Trends.tsx:import { InsightsTable } from 'scenes/insights/views/InsightsTable'", | |
"./frontend/src/scenes/trends/Trends.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/trends/Trends.tsx:import { insightSceneLogic } from 'scenes/insights/insightSceneLogic'", | |
"./frontend/src/scenes/trends/Trends.tsx:import { WorldMap } from 'scenes/insights/views/WorldMap'", | |
"./frontend/src/scenes/session-recordings/SessionRecordingsTable.tsx:import { ActionFilter } from 'scenes/insights/filters/ActionFilter/ActionFilter'", | |
"./frontend/src/scenes/session-recordings/SessionRecordingsTable.tsx:import { MathAvailability } from 'scenes/insights/filters/ActionFilter/ActionFilterRow/ActionFilterRow'", | |
"./frontend/src/scenes/saved-insights/SavedInsights.tsx:import { SavedInsightsEmptyState } from 'scenes/insights/EmptyStates'", | |
"./frontend/src/scenes/saved-insights/SavedInsights.tsx:import { summarizeInsightFilters } from 'scenes/insights/utils'", | |
"./frontend/src/scenes/saved-insights/SavedInsights.tsx:import { insightActivityDescriber } from 'scenes/saved-insights/activityDescriptions'", | |
"./frontend/src/scenes/saved-insights/savedInsightsLogic.ts:import { insightsModel } from '~/models/insightsModel'", | |
"./frontend/src/scenes/funnels/FunnelCanvasLabel.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/funnels/FunnelCanvasLabel.tsx:import { FunnelStepsPicker } from 'scenes/insights/views/Funnels/FunnelStepsPicker'", | |
"./frontend/src/scenes/funnels/Funnel.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/funnels/useFunnelTooltip.tsx:import { getActionFilterFromFunnelStep } from 'scenes/insights/views/Funnels/funnelStepTableUtils'", | |
"./frontend/src/scenes/funnels/useFunnelTooltip.tsx:import { ensureTooltipElement } from 'scenes/insights/views/LineGraph/LineGraph'", | |
"./frontend/src/scenes/funnels/useFunnelTooltip.tsx:import { ClickToInspectActors } from 'scenes/insights/InsightTooltip/InsightTooltip'", | |
"./frontend/src/scenes/funnels/useFunnelTooltip.tsx:import { formatBreakdownLabel } from 'scenes/insights/utils'", | |
"./frontend/src/scenes/funnels/FunnelBarGraph.tsx:import { LEGACY_InsightTooltip } from 'scenes/insights/InsightTooltip/LEGACY_InsightTooltip'", | |
"./frontend/src/scenes/funnels/FunnelBarGraph.tsx:import { getActionFilterFromFunnelStep } from 'scenes/insights/views/Funnels/funnelStepTableUtils'", | |
"./frontend/src/scenes/funnels/FunnelLineGraph.tsx:import { LineGraph } from 'scenes/insights/views/LineGraph/LineGraph'", | |
"./frontend/src/scenes/funnels/FunnelLineGraph.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/funnels/FunnelLineGraph.tsx:import { getFormattedDate } from 'scenes/insights/InsightTooltip/insightTooltipUtils'", | |
"./frontend/src/scenes/funnels/FunnelBarChart.tsx:import { getActionFilterFromFunnelStep } from 'scenes/insights/views/Funnels/funnelStepTableUtils'", | |
"./frontend/src/scenes/funnels/FunnelHistogram.tsx:import { Histogram } from 'scenes/insights/views/Histogram'", | |
"./frontend/src/scenes/funnels/FunnelHistogram.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/funnels/funnelLogic.ts:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/scenes/funnels/funnelLogic.ts:import { cleanFilters } from 'scenes/insights/utils/cleanFilters'", | |
"./frontend/src/scenes/funnels/funnelLogic.ts:import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/scenes/funnels/FunnelStepMore.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/models/insightsModel.tsx:import type { insightsModelType } from './insightsModelType'", | |
"./frontend/src/types.ts:import { AggregationAxisFormat } from 'scenes/insights/aggregationAxisFormat'", | |
"./frontend/src/lib/utils/d3Utils.ts:import { INITIAL_CONFIG } from 'scenes/insights/views/Histogram/histogramUtils'", | |
"./frontend/src/lib/components/PropertyGroupFilters/PropertyGroupFilters.tsx:import { GlobalFiltersTitle } from 'scenes/insights/common'", | |
"./frontend/src/lib/components/PropertyGroupFilters/PropertyGroupFilters.tsx:import { TestAccountFilter } from 'scenes/insights/filters/TestAccountFilter'", | |
"./frontend/src/lib/components/Sharing/sharingLogic.ts:import { getInsightId } from 'scenes/insights/utils'", | |
"./frontend/src/lib/components/ChartFilter/chartFilterLogic.ts:import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/lib/components/ChartFilter/chartFilterLogic.ts:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/ChartFilter/ChartFilter.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/ChartFilter/ChartFilter.tsx:import { toLocalFilters } from 'scenes/insights/filters/ActionFilter/entityFilterLogic'", | |
"./frontend/src/lib/components/InsightLegend/InsightLegend.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/InsightLegend/InsightLegend.tsx:import { formatCompareLabel } from 'scenes/insights/views/InsightsTable/InsightsTable'", | |
"./frontend/src/lib/components/EntityFilterInfo.tsx:import { getDisplayNameFromEntityFilter } from 'scenes/insights/utils'", | |
"./frontend/src/lib/components/CompareFilter/compareFilterLogic.ts:import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/lib/components/CompareFilter/compareFilterLogic.ts:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/CompareFilter/CompareFilter.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/Subscriptions/subscriptionsLogic.ts:import { getInsightId } from 'scenes/insights/utils'", | |
"./frontend/src/lib/components/Subscriptions/subscriptionLogic.ts:import { getInsightId } from 'scenes/insights/utils'", | |
"./frontend/src/lib/components/AdHocInsight/AdHocInsight.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/InsightSubscription/insightSubscriptionLogicType.ts:import type { InsightSubscriptionLogicProps } from './insightSubscriptionLogic'", | |
"./frontend/src/lib/components/InsightSubscription/insightSubscriptionsLogicType.ts:import type { InsightSubscriptionLogicProps } from './insightSubscriptionsLogic'", | |
"./frontend/src/lib/components/IntervalFilter/intervalFilterLogic.ts:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/IntervalFilter/intervalFilterLogic.ts:import { keyForInsightLogicProps } from 'scenes/insights/sharedUtils'", | |
"./frontend/src/lib/components/IntervalFilter/IntervalFilter.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/AddToDashboard/AddToDashboardModal.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/AddToDashboard/addToDashboardModalLogic.ts:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/SmoothingFilter/SmoothingFilter.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/InsightCard/InsightCard.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/lib/components/InsightCard/InsightCard.tsx:import { INSIGHT_TYPES_METADATA } from 'scenes/saved-insights/SavedInsights'", | |
"./frontend/src/lib/components/InsightCard/InsightCard.tsx:import { DashboardInsightsTable } from 'scenes/insights/views/InsightsTable/InsightsTable'", | |
"./frontend/src/lib/components/InsightCard/InsightCard.tsx:import { summarizeInsightFilters } from 'scenes/insights/utils'", | |
"./frontend/src/lib/components/InsightCard/InsightCard.tsx:import { WorldMap } from 'scenes/insights/views/WorldMap'", | |
"./frontend/src/lib/components/InsightCard/InsightDetails.tsx:import { LocalFilter, toLocalFilters } from 'scenes/insights/filters/ActionFilter/entityFilterLogic'", | |
"./frontend/src/lib/components/InsightCard/InsightDetails.tsx:import { BreakdownFilter } from 'scenes/insights/filters/BreakdownFilter'", | |
"./frontend/src/lib/components/InsightCard/InsightDetails.tsx:import { humanizePathsEventTypes } from 'scenes/insights/utils'", | |
"./frontend/src/exporter/ExportedInsight/ExportedInsight.tsx:import { insightLogic } from 'scenes/insights/insightLogic'", | |
"./frontend/src/exporter/ExportedInsight/ExportedInsight.tsx:import { INSIGHT_TYPES_METADATA } from 'scenes/saved-insights/SavedInsights'", | |
] | |
@dataclasses.dataclass | |
class Leaf: | |
name: str | |
@dataclasses.dataclass | |
class Node: | |
name: str | |
children: List["Node"] | |
depends_on: List["Node"] | |
def get_child(self, s: str) -> Optional["Node"]: | |
matches = [c for c in self.children if c.name == s] | |
if matches: | |
return matches[0] | |
else: | |
return None | |
def add_child(self, n: "Node") -> None: | |
self.children.append(n) | |
def add_dependency(self, other: "Node") -> None: | |
matches = [c for c in self.depends_on if c.name == other.name] | |
if not matches: | |
self.depends_on.append(other) | |
def draw_graph_structure(self, spaces: int = 0) -> None: | |
padding = " " * spaces | |
is_subgraph = False | |
if self.name == "root": | |
print(padding + "flowchart TB \n") | |
elif self.name.endswith(".ts"): | |
print(padding + " " + self.name.strip(".ts") + "\n") | |
elif self.name.endswith(".tsx"): | |
print(padding + " " + self.name.strip(".tsx") + "\n") | |
else: | |
is_subgraph = True | |
print(padding + "subgraph " + self.name + "\n") | |
print(padding + " " + "direction TB\n") | |
for child in self.children: | |
child.draw_graph_structure(spaces + 2) | |
if is_subgraph: | |
print(padding + "end\n") | |
def draw_dependencies(self) -> None: | |
for child in self.depends_on: | |
print(child.name + "-->" + self.name + "\n") | |
for child in self.children: | |
child.draw_dependencies() | |
root = Node("root", [], []) | |
for file_link in file_links: | |
parts = file_link.split(":") | |
try: | |
left = parts[0].split("/")[3:] | |
if left[-1].endswith("Type.ts"): | |
continue | |
right = parts[1].split("from")[1].strip().strip("'").split("/") | |
left_container = root | |
for section in left: | |
name = section.strip() | |
child_container = left_container.get_child(name) | |
if not child_container: | |
child_container = Node(name, [], []) | |
left_container.add_child(child_container) | |
left_container = child_container | |
right_container = root | |
for section in right: | |
name = section.strip() | |
if not name.endswith(".ts") and not name.endswith(".tsx"): | |
child_container = right_container.get_child(name) | |
if not child_container: | |
child_container = Node(name, [], []) | |
right_container.add_child(child_container) | |
right_container = child_container | |
left_container.add_dependency(right_container) | |
print(left_container.name.strip(".ts").strip(".tsx") + "-->" + right_container.name) | |
except Exception as e: | |
print("could not process part") | |
print(parts) | |
print(e) | |
# root.draw_graph_structure() | |
# root.draw_dependencies() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment