added chart plugin in khanegi superadmin

This commit is contained in:
2026-10-21 11:13:10 +03:30
parent 1490adfb60
commit 3a920761fe
11 changed files with 7097 additions and 247 deletions
+4 -2
View File
@@ -10,7 +10,9 @@
"8": "LayoutVariantsEditor.vue",
"9": "khanegiLayoutVariants.ts",
"10": "ensureSchemes",
"11": "applySharedNavSample",
"11": "syncSidebarNavOrder",
"12": "syncBottomNavOrder",
"13": "normalizeMainWalletProductsValue"
"13": "normalizeMainWalletProductsValue",
"14": "ProgramSettingsPage.vue",
"15": "khanegiSystemSettingGroups.ts"
}
+1 -1
View File
@@ -1 +1 @@
{"0": "efae35c79a787c43", "1": "b53bae7b9fd8f910", "2": "04e8f5fc588d14b2", "3": "d0038b93f872317a", "4": "4fea0ed0deb11c56", "5": "8955a16d55c2d309", "6": "6bb487434d50d110", "7": "ed69a1db9d14015b", "8": "11d56d6f31d87856", "9": "6e352a6c102d2307", "10": "3c5ebd0b8e0d81a4", "11": "c1af55a063770f9c", "12": "335546da1252f755", "13": "430beeac6e7565a0"}
{"0": "efae35c79a787c43", "1": "b53bae7b9fd8f910", "2": "04e8f5fc588d14b2", "3": "d0038b93f872317a", "4": "4fea0ed0deb11c56", "5": "8955a16d55c2d309", "6": "cb09b3aea5c7f08d", "7": "ed69a1db9d14015b", "8": "11d56d6f31d87856", "9": "6e352a6c102d2307", "10": "75f8bc04f7d7b65e", "11": "beeb2aaa878e1881", "12": "335546da1252f755", "13": "430beeac6e7565a0", "14": "03912721367d5faf", "15": "013b08265f4898cc"}
@@ -0,0 +1,16 @@
{
"0": "khanegiSettingCatalog.ts",
"1": "formatValueForSave",
"2": "resolveSwitchChecked",
"3": "normalizeSettingRow",
"4": "superAdminSettingKeys.ts",
"5": "isSettingVisible",
"6": "UiConfigPage.vue",
"7": "defaultKhanegiUiConfig.ts",
"8": "LayoutVariantsEditor.vue",
"9": "khanegiLayoutVariants.ts",
"10": "ensureSchemes",
"11": "applySharedNavSample",
"12": "syncBottomNavOrder",
"13": "normalizeMainWalletProductsValue"
}
+128
View File
@@ -0,0 +1,128 @@
# Graph Report - controlpanel_user (2026-10-13)
## Corpus Check
- 60 files · ~48,609 words
- Verdict: corpus is large enough that graph structure adds value.
- Unclassified: 38 file(s) not represented in the graph (top: .ttf 16, .eot 6, .woff 6)
## Summary
- 181 nodes · 263 edges · 14 communities (12 shown, 2 thin omitted)
- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS · INFERRED: 1 edges (avg confidence: 0.85)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `f99af903`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
## Community Hubs (Navigation)
- khanegiSettingCatalog.ts
- formatValueForSave
- resolveSwitchChecked
- normalizeSettingRow
- superAdminSettingKeys.ts
- isSettingVisible
- UiConfigPage.vue
- defaultKhanegiUiConfig.ts
- LayoutVariantsEditor.vue
- khanegiLayoutVariants.ts
- ensureSchemes
- applySharedNavSample
- syncBottomNavOrder
- normalizeMainWalletProductsValue
## God Nodes (most connected - your core abstractions)
1. `touch()` - 7 edges
2. `ensureSchemes()` - 7 edges
3. `formatValueForSave()` - 7 edges
4. `getKhanegiNavSample()` - 6 edges
5. `mergeKhanegiLayoutVariants()` - 6 edges
6. `syncBottomNavOrder()` - 6 edges
7. `persistConfig()` - 6 edges
8. `applyKhanegiNavSample()` - 5 edges
9. `mergeLayoutThemes()` - 5 edges
10. `mergeLayoutElement()` - 5 edges
## Surprising Connections (you probably didn't know these)
- `applySharedNavSample()` --calls--> `syncBottomNavOrder()` [EXTRACTED]
src/pages/UiConfigPage.vue → src/pages/UiConfigPage.vue _Bridges community 12 → community 11_
- `load()` --calls--> `applySharedNavSample()` [EXTRACTED]
src/pages/UiConfigPage.vue → src/pages/UiConfigPage.vue _Bridges community 11 → community 10_
- `formatValueForSave()` --calls--> `normalizeMainWalletProductsValue()` [EXTRACTED]
src/config/khanegiSettingCatalog.ts → src/config/khanegiSettingCatalog.ts _Bridges community 1 → community 13_
- `formatValueForSave()` --calls--> `resolveSwitchChecked()` [EXTRACTED]
src/config/khanegiSettingCatalog.ts → src/config/khanegiSettingCatalog.ts _Bridges community 1 → community 2_
## Import Cycles
- None detected.
## Communities (14 total, 2 thin omitted)
### Community 0 - "khanegiSettingCatalog.ts"
Cohesion: 0.06
Nodes (25): ACTIVATE_DEACTIVATE_SWITCH_KEYS, conditionalOrderEnabledSetting, HIDDEN_LEGACY_SETTING_KEYS, KEY_HELP_FALLBACK, KEY_LABEL_FALLBACK, KEY_TYPE_FALLBACK, MAIN_WALLET_PRODUCTS_DEFAULT, PARTNER_SERVER_URLS_MAX (+17 more)
### Community 1 - "formatValueForSave"
Cohesion: 0.47
Nodes (6): formatSupportMessengers(), formatValueForSave(), isSupportMessengerType(), normalizeTimeValue(), parseSupportMessengers(), parseSupportMessengersDraft()
### Community 2 - "resolveSwitchChecked"
Cohesion: 0.29
Nodes (7): isActivateDeactivateSwitch(), isReferralRequired(), isSwitchOn(), referralRequiredToString(), resolveSwitchChecked(), switchToString(), switchValueFromChecked()
### Community 3 - "normalizeSettingRow"
Cohesion: 0.47
Nodes (6): helpText(), normalizeSettingRow(), resolveSettingCanEdit(), resolveSettingDescription(), resolveSettingFieldType(), resolveSettingTitle()
### Community 6 - "UiConfigPage.vue"
Cohesion: 0.05
Nodes (35): ref_ant_design_icons_vue, ref_api, ref_components, ref_stores, ref_theme, ref_vue_router, accentStyle, activePreviewColors (+27 more)
### Community 7 - "defaultKhanegiUiConfig.ts"
Cohesion: 0.15
Nodes (18): ref_config, applyKhanegiNavSample(), cloneJson(), createDefaultKhanegiUiConfig(), getKhanegiBottomNavChoices(), getKhanegiNavSample(), KhanegiNavItem, mapLegacyNavItems() (+10 more)
### Community 8 - "LayoutVariantsEditor.vue"
Cohesion: 0.15
Nodes (18): ref_ant_design_vue, ref_vue, addOption(), addTheme(), DraftKind, draftOf(), drafts, elementAt() (+10 more)
### Community 9 - "khanegiLayoutVariants.ts"
Cohesion: 0.23
Nodes (14): applyKhanegiLayoutVariants(), createDefaultKhanegiLayoutVariants(), defaultThemes(), element(), isLayoutVariantId(), isRecord(), KhanegiLayoutVariants, LAYOUT_OPTION_KEY (+6 more)
### Community 10 - "ensureSchemes"
Cohesion: 0.39
Nodes (8): buildSavePayload(), ensureSchemes(), load(), onColorEdit(), persistConfig(), save(), selectPreset(), syncAdvancedJson()
### Community 11 - "applySharedNavSample"
Cohesion: 0.33
Nodes (6): applyAdvancedJson(), applySharedNavSample(), onSidebarDragEnd(), onSidebarDragOver(), onSidebarDrop(), syncSidebarNavOrder()
### Community 12 - "syncBottomNavOrder"
Cohesion: 0.40
Nodes (5): onBottomDragEnd(), onBottomDragOver(), onBottomDrop(), onBottomSlotMenuChange(), syncBottomNavOrder()
### Community 13 - "normalizeMainWalletProductsValue"
Cohesion: 0.67
Nodes (3): formatMainWalletProductIds(), normalizeMainWalletProductsValue(), parseMainWalletProductIds()
## Knowledge Gaps
- **75 isolated node(s):** `props`, `OptionKind`, `DraftKind`, `groups`, `kindOptions` (+70 more)
These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 101 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **2 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `formatValueForSave()` connect `formatValueForSave` to `khanegiSettingCatalog.ts`, `resolveSwitchChecked`, `normalizeMainWalletProductsValue`?**
_High betweenness centrality (0.000) - this node is a cross-community bridge._
- **Why does `ensureSchemes()` connect `ensureSchemes` to `applySharedNavSample`, `UiConfigPage.vue`?**
_High betweenness centrality (0.000) - this node is a cross-community bridge._
- **What connects `props`, `OptionKind`, `DraftKind` to the rest of the system?**
_75 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `khanegiSettingCatalog.ts` be split into smaller, more focused modules?**
_Cohesion score 0.058823529411764705 - nodes in this community are weakly interconnected._
- **Should `UiConfigPage.vue` be split into smaller, more focused modules?**
_Cohesion score 0.046511627906976744 - nodes in this community are weakly interconnected._
- **Should `LayoutVariantsEditor.vue` be split into smaller, more focused modules?**
_Cohesion score 0.14736842105263157 - nodes in this community are weakly interconnected._
File diff suppressed because it is too large Load Diff
+380
View File
@@ -0,0 +1,380 @@
{
"package.json": {
"mtime": 1787153733.2418692,
"seen": 1791133977.6193485,
"ast_hash": "0ea185a5e1e78aadf7025665e9b39e9e",
"semantic_hash": ""
},
"src/App.vue": {
"mtime": 1786352915.1978676,
"seen": 1791133977.619354,
"ast_hash": "d87851861f641427b9beb7dab5a75980",
"semantic_hash": ""
},
"src/api/http.ts": {
"mtime": 1786352915.1980276,
"seen": 1791133977.6193569,
"ast_hash": "9dc615bf4662aa79f29b0db92134b79e",
"semantic_hash": ""
},
"src/auth/permissions.ts": {
"mtime": 1791450554.9371111,
"seen": 1791907088.6776445,
"ast_hash": "ef223950c3b0b1ad361860e1d1536019",
"semantic_hash": ""
},
"src/components/JalaliDatePicker.vue": {
"mtime": 1789554412.0846374,
"seen": 1791133977.6193602,
"ast_hash": "a9754baab2ad0987a406000a6f61fbf8",
"semantic_hash": ""
},
"src/components/KhanegiDepositPanel.vue": {
"mtime": 1788876816.247845,
"seen": 1791133977.6193616,
"ast_hash": "d1e30b30e0d99d792c6b705e2fe34991",
"semantic_hash": ""
},
"src/components/MoneyInput.vue": {
"mtime": 1788875079.255983,
"seen": 1791133977.6193628,
"ast_hash": "06eff041abd7a55e4832cf98db8e754b",
"semantic_hash": ""
},
"src/components/SettingsCatalogPanel.vue": {
"mtime": 1786986825.3334448,
"seen": 1791133977.619364,
"ast_hash": "baff7fe473f274cbaaacf87f81a5c615",
"semantic_hash": ""
},
"src/components/TenantPanelShortcuts.vue": {
"mtime": 1786352915.2116265,
"seen": 1791133977.6193655,
"ast_hash": "4829dc2470e432c360cb4f00a3b7f372",
"semantic_hash": ""
},
"src/components/VersionPageTabs.vue": {
"mtime": 1791450554.9376676,
"seen": 1791907088.677653,
"ast_hash": "08ffadd812f0cf21e03c0d3c198e4257",
"semantic_hash": ""
},
"src/components/program-settings/SettingCard.vue": {
"mtime": 1786972416.6895914,
"seen": 1791133977.6193678,
"ast_hash": "7629045273cd0b04c29473fdd562a179",
"semantic_hash": ""
},
"src/components/program-settings/SettingToggle.vue": {
"mtime": 1786972307.025287,
"seen": 1791133977.6193695,
"ast_hash": "e538c09c9a630204f5ff7a0287817ee3",
"semantic_hash": ""
},
"src/components/program-settings/SettingValueField.vue": {
"mtime": 1786972346.8159938,
"seen": 1791133977.6193707,
"ast_hash": "41c146f501265f37d643dc76fc0d7392",
"semantic_hash": ""
},
"src/config/defaultHamkarUiConfig.ts": {
"mtime": 1786352915.2118337,
"seen": 1791133977.6193721,
"ast_hash": "f3376ee71c1d8f7d68f9af6ec1db6e6b",
"semantic_hash": ""
},
"src/config/defaultKhanegiUiConfig.ts": {
"mtime": 1791887952.8677027,
"seen": 1791907088.6776571,
"ast_hash": "8b2a43f4c59be8d2eb7d4a7821359bfb",
"semantic_hash": ""
},
"src/config/hamkarEffectiveTheme.ts": {
"mtime": 1786352915.2121105,
"seen": 1791133977.6193743,
"ast_hash": "0fec3d7e57d42a3db8a76a2a78f11ea5",
"semantic_hash": ""
},
"src/config/khanegiSettingCatalog.ts": {
"mtime": 1791015842.8297806,
"seen": 1791133977.619376,
"ast_hash": "ab5c90f95d716e0172f4cfa88b8ba56d",
"semantic_hash": ""
},
"src/config/khanegiSettingRow.ts": {
"mtime": 1786972105.4408166,
"seen": 1791133977.6193771,
"ast_hash": "e231618c0266b4898b8250abd77bc8f9",
"semantic_hash": ""
},
"src/config/khanegiSystemSettingGroups.ts": {
"mtime": 1788614855.8582234,
"seen": 1791133977.6193783,
"ast_hash": "50e2e92d1428b4eacb9c21315de227ce",
"semantic_hash": ""
},
"src/config/khanegiThemePresets.ts": {
"mtime": 1786352915.2122703,
"seen": 1791133977.6193798,
"ast_hash": "40385f7f94dd9e317b2e2c46deed52ec",
"semantic_hash": ""
},
"src/config/numeric.ts": {
"mtime": 1786972105.4405568,
"seen": 1791133977.619381,
"ast_hash": "cd431f7af9e4b0d4a03be856ef78341e",
"semantic_hash": ""
},
"src/config/superAdminSettingKeys.ts": {
"mtime": 1791015842.8300276,
"seen": 1791133977.6193826,
"ast_hash": "09d0079d23d5f15fd0cc137844a18540",
"semantic_hash": ""
},
"src/layouts/AppLayout.vue": {
"mtime": 1788873083.8511343,
"seen": 1791133977.619384,
"ast_hash": "cd71c1876ad38c9bcfc15eaa31ef2151",
"semantic_hash": ""
},
"src/main.ts": {
"mtime": 1786352915.2125874,
"seen": 1791133977.6193852,
"ast_hash": "ecb1b140df8f5c8250545a335fa47c9e",
"semantic_hash": ""
},
"src/pages/AdminsPage.vue": {
"mtime": 1791450554.937965,
"seen": 1791907088.677667,
"ast_hash": "ed64c772bdbc1858dfcdcbc62bdae88a",
"semantic_hash": ""
},
"src/pages/AuditPage.vue": {
"mtime": 1786352915.2129347,
"seen": 1791133977.6193879,
"ast_hash": "26848d52a3dbb5069aa54775acab8e85",
"semantic_hash": ""
},
"src/pages/HamkarUiConfigPage.vue": {
"mtime": 1791450554.9383092,
"seen": 1791907088.6776686,
"ast_hash": "5a91e9e345749218e8329649ae90e85f",
"semantic_hash": ""
},
"src/pages/HomePage.vue": {
"mtime": 1791450554.9385748,
"seen": 1791907088.6776693,
"ast_hash": "ff62ac5575016852584536a571ce2cdb",
"semantic_hash": ""
},
"src/pages/KhanegiModularUiConfigPage.vue": {
"mtime": 1791450554.938836,
"seen": 1791907088.6776702,
"ast_hash": "b66505395be973e65713e7eae18b0f39",
"semantic_hash": ""
},
"src/pages/LoginPage.vue": {
"mtime": 1786352915.2136188,
"seen": 1791133977.6193972,
"ast_hash": "b629d53ac0df833f863c19f9d2eedc61",
"semantic_hash": ""
},
"src/pages/PluginCatalogPage.vue": {
"mtime": 1788972334.617576,
"seen": 1791133977.619398,
"ast_hash": "12f79da56c91cd3b554b3eed346f1b63",
"semantic_hash": ""
},
"src/pages/PluginPanelPage.vue": {
"mtime": 1791450554.939206,
"seen": 1791907088.6776729,
"ast_hash": "ddfce20888bf26a9a80bd6f8bc1600a5",
"semantic_hash": ""
},
"src/pages/PluginTenantPage.vue": {
"mtime": 1791450554.9396107,
"seen": 1791907088.6776738,
"ast_hash": "e564f8b13440d165160ec869e9d95012",
"semantic_hash": ""
},
"src/pages/ProductVersionsPage.vue": {
"mtime": 1791450554.939879,
"seen": 1791907088.6776745,
"ast_hash": "72642d5e710f77e557943b4ee658ca0f",
"semantic_hash": ""
},
"src/pages/ProgramSettingsPage.vue": {
"mtime": 1791450554.9401727,
"seen": 1791907088.6776752,
"ast_hash": "513c92a435288f17c8cfa89eac638854",
"semantic_hash": ""
},
"src/pages/ServerPanelPage.vue": {
"mtime": 1791450554.9403913,
"seen": 1791907088.6776757,
"ast_hash": "80022f8887ea5a12e30cc6b71f21bd4c",
"semantic_hash": ""
},
"src/pages/ServerTenantPage.vue": {
"mtime": 1791450554.9407706,
"seen": 1791907088.6776764,
"ast_hash": "322945bc4a2a8099082dd0e851581dd0",
"semantic_hash": ""
},
"src/pages/SmsPanelPage.vue": {
"mtime": 1791450554.9410007,
"seen": 1791907088.6776774,
"ast_hash": "f4e07fc92190b8bb32b5acb5ccfffd3a",
"semantic_hash": ""
},
"src/pages/SmsTenantPage.vue": {
"mtime": 1791450554.941318,
"seen": 1791907088.6776779,
"ast_hash": "cc4754dd1b2b6f22df92c8032883e5fe",
"semantic_hash": ""
},
"src/pages/SupportPanelPage.vue": {
"mtime": 1791450554.9415474,
"seen": 1791907088.6776786,
"ast_hash": "4833c3e6837b152717e9a315115eda88",
"semantic_hash": ""
},
"src/pages/SupportTenantPage.vue": {
"mtime": 1791450554.9418106,
"seen": 1791907088.6776793,
"ast_hash": "b5046d966c41e417a1135d4eb8d99169",
"semantic_hash": ""
},
"src/pages/TenantFormPage.vue": {
"mtime": 1791450554.9420915,
"seen": 1791907088.67768,
"ast_hash": "5316048ecfb83b25390837743c3eb408",
"semantic_hash": ""
},
"src/pages/UiConfigPage.vue": {
"mtime": 1791889095.6122432,
"seen": 1791907088.677681,
"ast_hash": "7d4d92fe4caaebc628fdc32148512803",
"semantic_hash": ""
},
"src/router/index.ts": {
"mtime": 1791450554.9426203,
"seen": 1791907088.6776817,
"ast_hash": "d6c177146d26dc888ef5d0f00e51079e",
"semantic_hash": ""
},
"src/stores/auth.ts": {
"mtime": 1786377085.7914898,
"seen": 1791133977.6194167,
"ast_hash": "1ba25b41a49803e021a3973a752e3d25",
"semantic_hash": ""
},
"src/theme/tokens.ts": {
"mtime": 1786352915.216459,
"seen": 1791133977.6194181,
"ast_hash": "ceecfc226cf4db2c5fe72fd57834f094",
"semantic_hash": ""
},
"src/types/vue3-persian-datetime-picker.d.ts": {
"mtime": 1786352915.2166362,
"seen": 1791133977.6194193,
"ast_hash": "d6c63254beaf8e4cba21615c737081f6",
"semantic_hash": ""
},
"src/utils/datetime.ts": {
"mtime": 1789550690.3410506,
"seen": 1791133977.6194208,
"ast_hash": "3f44d9ee7b87d32892366eafc03e89b6",
"semantic_hash": ""
},
"src/utils/money.ts": {
"mtime": 1786352915.2169576,
"seen": 1791133977.619422,
"ast_hash": "3dd9ef861fcaa479a7ce3c6c5da2c6e3",
"semantic_hash": ""
},
"src/utils/rewriteLegacyUploadUrl.ts": {
"mtime": 1788799101.6215806,
"seen": 1791133977.6194232,
"ast_hash": "da4e9d04bd43513e9644e8203cbc3819",
"semantic_hash": ""
},
"src/vite-env.d.ts": {
"mtime": 1786352915.2170582,
"seen": 1791133977.6194243,
"ast_hash": "53ef1e204e58e29f9e328d6ddb0d5ef5",
"semantic_hash": ""
},
"tsconfig.app.json": {
"mtime": 1786352915.2171595,
"seen": 1791133977.6194255,
"ast_hash": "d067e3ba63ec213fcec98b687b5e54e2",
"semantic_hash": ""
},
"tsconfig.json": {
"mtime": 1786352915.2172534,
"seen": 1791133977.6194267,
"ast_hash": "a3d39fa780ebff65444de257f291ce6c",
"semantic_hash": ""
},
"tsconfig.node.json": {
"mtime": 1787153734.3009675,
"seen": 1791133977.6194282,
"ast_hash": "308bb19a1eb06cf3481482994c5c7bd5",
"semantic_hash": ""
},
"vite.config.ts": {
"mtime": 1786973481.403445,
"seen": 1791133977.6194293,
"ast_hash": "90a02fc0c5386c89adc80703c4344995",
"semantic_hash": ""
},
"README.md": {
"mtime": 1786352915.1963446,
"seen": 1791133977.619431,
"ast_hash": "64ba9c1ddf7098960f302d6dcbd66522",
"semantic_hash": ""
},
"index.html": {
"mtime": 1786352915.196795,
"seen": 1791133977.6194324,
"ast_hash": "4a22619d085cffe0062757a639d1636e",
"semantic_hash": ""
},
"public/favicon.svg": {
"mtime": 1786352915.1975787,
"seen": 1791133977.6194336,
"ast_hash": "ddb1b57182207e652a01e2b0266df08e",
"semantic_hash": ""
},
"public/icons.svg": {
"mtime": 1786352915.1977217,
"seen": 1791133977.619435,
"ast_hash": "3b4fcfcf393eca4d264dca4a4663bc37",
"semantic_hash": ""
},
"src/components/AdminPermissionEditor.vue": {
"mtime": 1791450554.9373283,
"seen": 1791907088.6776462,
"ast_hash": "99a868f35b56f9d81abbdcabd5102678",
"semantic_hash": ""
},
"src/components/LayoutVariantsEditor.vue": {
"mtime": 1791906190.2393339,
"seen": 1791907088.6776495,
"ast_hash": "7fb71f5159fe5273cebfc49b2d528b30",
"semantic_hash": ""
},
"src/config/khanegiLayoutVariants.ts": {
"mtime": 1791889014.334302,
"seen": 1791907088.6776588,
"ast_hash": "71cd9bf5d90df01d92bfdf532ad16415",
"semantic_hash": ""
},
"src/utils/product.ts": {
"mtime": 1791450554.9429972,
"seen": 1791907088.6776867,
"ast_hash": "abd46911943cb4a3d8eb46b529610a1a",
"semantic_hash": ""
}
}
+45 -35
View File
@@ -1,17 +1,17 @@
# Graph Report - controlpanel_user (2026-10-13)
# Graph Report - controlpanel_user (2026-10-21)
## Corpus Check
- 60 files · ~48,609 words
- 60 files · ~48,153 words
- Verdict: corpus is large enough that graph structure adds value.
- Unclassified: 38 file(s) not represented in the graph (top: .ttf 16, .eot 6, .woff 6)
## Summary
- 181 nodes · 263 edges · 14 communities (12 shown, 2 thin omitted)
- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS · INFERRED: 1 edges (avg confidence: 0.85)
- 223 nodes · 325 edges · 16 communities (14 shown, 2 thin omitted)
- Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 2 edges (avg confidence: 0.85)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `f99af903`
- Built from commit: `1490adfb`
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
- Run `graphify update .` after code changes (no API cost).
@@ -27,36 +27,38 @@
- LayoutVariantsEditor.vue
- khanegiLayoutVariants.ts
- ensureSchemes
- applySharedNavSample
- syncSidebarNavOrder
- syncBottomNavOrder
- normalizeMainWalletProductsValue
- ProgramSettingsPage.vue
- khanegiSystemSettingGroups.ts
## God Nodes (most connected - your core abstractions)
1. `touch()` - 7 edges
2. `ensureSchemes()` - 7 edges
3. `formatValueForSave()` - 7 edges
4. `getKhanegiNavSample()` - 6 edges
5. `mergeKhanegiLayoutVariants()` - 6 edges
1. `formatValueForSave()` - 7 edges
2. `rowKey()` - 7 edges
3. `ensureSchemes()` - 7 edges
4. `touch()` - 7 edges
5. `persistConfig()` - 6 edges
6. `syncBottomNavOrder()` - 6 edges
7. `persistConfig()` - 6 edges
8. `applyKhanegiNavSample()` - 5 edges
9. `mergeLayoutThemes()` - 5 edges
10. `mergeLayoutElement()` - 5 edges
7. `getKhanegiNavSample()` - 6 edges
8. `mergeKhanegiLayoutVariants()` - 6 edges
9. `resolveSwitchChecked()` - 5 edges
10. `switchValueFromChecked()` - 5 edges
## Surprising Connections (you probably didn't know these)
- `applySharedNavSample()` --calls--> `syncBottomNavOrder()` [EXTRACTED]
src/pages/UiConfigPage.vue → src/pages/UiConfigPage.vue _Bridges community 12 → community 11_
- `load()` --calls--> `applySharedNavSample()` [EXTRACTED]
src/pages/UiConfigPage.vue → src/pages/UiConfigPage.vue _Bridges community 11 → community 10_
- `formatValueForSave()` --calls--> `normalizeMainWalletProductsValue()` [EXTRACTED]
src/config/khanegiSettingCatalog.ts → src/config/khanegiSettingCatalog.ts _Bridges community 1 → community 13_
src/config/khanegiSettingCatalog.ts → src/config/khanegiSettingCatalog.ts _Bridges community 13 → community 1_
- `formatValueForSave()` --calls--> `resolveSwitchChecked()` [EXTRACTED]
src/config/khanegiSettingCatalog.ts → src/config/khanegiSettingCatalog.ts _Bridges community 1 → community 2_
src/config/khanegiSettingCatalog.ts → src/config/khanegiSettingCatalog.ts _Bridges community 2 → community 1_
- `applySharedNavSample()` --calls--> `syncBottomNavOrder()` [EXTRACTED]
src/pages/UiConfigPage.vue → src/pages/UiConfigPage.vue _Bridges community 10 → community 12_
- `applySharedNavSample()` --calls--> `syncSidebarNavOrder()` [EXTRACTED]
src/pages/UiConfigPage.vue → src/pages/UiConfigPage.vue _Bridges community 10 → community 11_
## Import Cycles
- None detected.
## Communities (14 total, 2 thin omitted)
## Communities (16 total, 2 thin omitted)
### Community 0 - "khanegiSettingCatalog.ts"
Cohesion: 0.06
@@ -76,7 +78,7 @@ Nodes (6): helpText(), normalizeSettingRow(), resolveSettingCanEdit(), resolveSe
### Community 6 - "UiConfigPage.vue"
Cohesion: 0.05
Nodes (35): ref_ant_design_icons_vue, ref_api, ref_components, ref_stores, ref_theme, ref_vue_router, accentStyle, activePreviewColors (+27 more)
Nodes (30): ref_theme, accentStyle, activePreviewColors, activeTab, advancedJson, auth, bottomDragFrom, bottomNavChoices (+22 more)
### Community 7 - "defaultKhanegiUiConfig.ts"
Cohesion: 0.15
@@ -91,12 +93,12 @@ Cohesion: 0.23
Nodes (14): applyKhanegiLayoutVariants(), createDefaultKhanegiLayoutVariants(), defaultThemes(), element(), isLayoutVariantId(), isRecord(), KhanegiLayoutVariants, LAYOUT_OPTION_KEY (+6 more)
### Community 10 - "ensureSchemes"
Cohesion: 0.39
Nodes (8): buildSavePayload(), ensureSchemes(), load(), onColorEdit(), persistConfig(), save(), selectPreset(), syncAdvancedJson()
Cohesion: 0.31
Nodes (10): applyAdvancedJson(), applySharedNavSample(), buildSavePayload(), ensureSchemes(), load(), onColorEdit(), persistConfig(), save() (+2 more)
### Community 11 - "applySharedNavSample"
Cohesion: 0.33
Nodes (6): applyAdvancedJson(), applySharedNavSample(), onSidebarDragEnd(), onSidebarDragOver(), onSidebarDrop(), syncSidebarNavOrder()
### Community 11 - "syncSidebarNavOrder"
Cohesion: 0.50
Nodes (4): onSidebarDragEnd(), onSidebarDragOver(), onSidebarDrop(), syncSidebarNavOrder()
### Community 12 - "syncBottomNavOrder"
Cohesion: 0.40
@@ -106,9 +108,17 @@ Nodes (5): onBottomDragEnd(), onBottomDragOver(), onBottomDrop(), onBottomSlotMe
Cohesion: 0.67
Nodes (3): formatMainWalletProductIds(), normalizeMainWalletProductsValue(), parseMainWalletProductIds()
### Community 14 - "ProgramSettingsPage.vue"
Cohesion: 0.07
Nodes (34): ref_ant_design_icons_vue, ref_api, ref_components, ref_stores, ref_vue_router, applyItems(), asRow(), auth (+26 more)
### Community 15 - "khanegiSystemSettingGroups.ts"
Cohesion: 0.22
Nodes (3): KHANEGI_SYSTEM_SETTING_GROUPS, SettingGroupDef, SettingSubsectionDef
## Knowledge Gaps
- **75 isolated node(s):** `props`, `OptionKind`, `DraftKind`, `groups`, `kindOptions` (+70 more)
These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 101 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **95 isolated node(s):** `conditionalOrderEnabledSetting`, `priceChannelAccessSetting`, `priceProviderSetting`, `showToUsersChatSetting`, `SettingFieldType` (+90 more)
These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 124 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **2 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
@@ -116,13 +126,13 @@ _Questions this graph is uniquely positioned to answer:_
- **Why does `formatValueForSave()` connect `formatValueForSave` to `khanegiSettingCatalog.ts`, `resolveSwitchChecked`, `normalizeMainWalletProductsValue`?**
_High betweenness centrality (0.000) - this node is a cross-community bridge._
- **Why does `ensureSchemes()` connect `ensureSchemes` to `applySharedNavSample`, `UiConfigPage.vue`?**
_High betweenness centrality (0.000) - this node is a cross-community bridge._
- **What connects `props`, `OptionKind`, `DraftKind` to the rest of the system?**
_75 weakly-connected nodes found - possible documentation gaps or missing edges._
- **What connects `conditionalOrderEnabledSetting`, `priceChannelAccessSetting`, `priceProviderSetting` to the rest of the system?**
_95 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `khanegiSettingCatalog.ts` be split into smaller, more focused modules?**
_Cohesion score 0.058823529411764705 - nodes in this community are weakly interconnected._
- **Should `UiConfigPage.vue` be split into smaller, more focused modules?**
_Cohesion score 0.046511627906976744 - nodes in this community are weakly interconnected._
_Cohesion score 0.05263157894736842 - nodes in this community are weakly interconnected._
- **Should `LayoutVariantsEditor.vue` be split into smaller, more focused modules?**
_Cohesion score 0.14736842105263157 - nodes in this community are weakly interconnected._
- **Should `ProgramSettingsPage.vue` be split into smaller, more focused modules?**
_Cohesion score 0.07254623044096728 - nodes in this community are weakly interconnected._
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1384 -182
View File
File diff suppressed because it is too large Load Diff
+21 -21
View File
@@ -78,9 +78,9 @@
"semantic_hash": ""
},
"src/config/defaultHamkarUiConfig.ts": {
"mtime": 1786352915.2118337,
"seen": 1791133977.6193721,
"ast_hash": "f3376ee71c1d8f7d68f9af6ec1db6e6b",
"mtime": 1791996911.975983,
"seen": 1792568549.9087489,
"ast_hash": "c83c3933b2dc1322b05b61444a9f6b79",
"semantic_hash": ""
},
"src/config/defaultKhanegiUiConfig.ts": {
@@ -90,15 +90,15 @@
"semantic_hash": ""
},
"src/config/hamkarEffectiveTheme.ts": {
"mtime": 1786352915.2121105,
"seen": 1791133977.6193743,
"ast_hash": "0fec3d7e57d42a3db8a76a2a78f11ea5",
"mtime": 1791996911.9762073,
"seen": 1792568549.9087508,
"ast_hash": "2dd2adc1a5964985db5495fb76518efc",
"semantic_hash": ""
},
"src/config/khanegiSettingCatalog.ts": {
"mtime": 1791015842.8297806,
"seen": 1791133977.619376,
"ast_hash": "ab5c90f95d716e0172f4cfa88b8ba56d",
"mtime": 1792566338.9727924,
"seen": 1792568549.9087524,
"ast_hash": "f6cfa11066d2ba7155a38c3a1cda5dab",
"semantic_hash": ""
},
"src/config/khanegiSettingRow.ts": {
@@ -108,9 +108,9 @@
"semantic_hash": ""
},
"src/config/khanegiSystemSettingGroups.ts": {
"mtime": 1788614855.8582234,
"seen": 1791133977.6193783,
"ast_hash": "50e2e92d1428b4eacb9c21315de227ce",
"mtime": 1792566280.6755555,
"seen": 1792568549.9087539,
"ast_hash": "24571106273e65336a4bda09934e92b8",
"semantic_hash": ""
},
"src/config/khanegiThemePresets.ts": {
@@ -126,9 +126,9 @@
"semantic_hash": ""
},
"src/config/superAdminSettingKeys.ts": {
"mtime": 1791015842.8300276,
"seen": 1791133977.6193826,
"ast_hash": "09d0079d23d5f15fd0cc137844a18540",
"mtime": 1792566267.9497607,
"seen": 1792568549.9087563,
"ast_hash": "93787467a4f8733ba4f17b960687c1e0",
"semantic_hash": ""
},
"src/layouts/AppLayout.vue": {
@@ -156,9 +156,9 @@
"semantic_hash": ""
},
"src/pages/HamkarUiConfigPage.vue": {
"mtime": 1791450554.9383092,
"seen": 1791907088.6776686,
"ast_hash": "5a91e9e345749218e8329649ae90e85f",
"mtime": 1791996911.9765158,
"seen": 1792568549.9087598,
"ast_hash": "e9ce0f7df1362fc3f9e98dc995852728",
"semantic_hash": ""
},
"src/pages/HomePage.vue": {
@@ -204,9 +204,9 @@
"semantic_hash": ""
},
"src/pages/ProgramSettingsPage.vue": {
"mtime": 1791450554.9401727,
"seen": 1791907088.6776752,
"ast_hash": "513c92a435288f17c8cfa89eac638854",
"mtime": 1792566907.3456872,
"seen": 1792568549.9087665,
"ast_hash": "3b7eccc2c58d8458152c5138534474fc",
"semantic_hash": ""
},
"src/pages/ServerPanelPage.vue": {