Skip to content

Instantly share code, notes, and snippets.

@pauldambra
Created August 3, 2022 13:05
Show Gist options
  • Save pauldambra/758e8a84dbbf2af246cdc3679e1bb88c to your computer and use it in GitHub Desktop.
Save pauldambra/758e8a84dbbf2af246cdc3679e1bb88c to your computer and use it in GitHub Desktop.
Generate mermaid tree from file imports
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