added chart plugin in khanegi superadmin
This commit is contained in:
@@ -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 @@
|
||||
{"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"
|
||||
}
|
||||
@@ -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
@@ -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": ""
|
||||
}
|
||||
}
|
||||
@@ -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._
|
||||
_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._
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1384
-182
File diff suppressed because it is too large
Load Diff
+21
-21
@@ -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": {
|
||||
|
||||
Reference in New Issue
Block a user