diff --git a/package.json b/package.json
index a22400d..382a13f 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,6 @@
"@arco-design/web-react": "^2.32.2",
"@arco-themes/react-arco-pro": "^0.0.7",
"@loadable/component": "^5.13.2",
- "@tinyflow-ai/react": "^1.1.0",
"@turf/turf": "^6.5.0",
"@xyflow/react": "^12.8.2",
"axios": "^0.24.0",
@@ -37,7 +36,6 @@
"redux": "^4.1.2"
},
"devDependencies": {
- "@arco-design/web-react": "^2.0.0",
"@svgr/webpack": "^5.5.0",
"@types/node": "16.11.7",
"@types/react": "17.0.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a3e498b..e5d29fa 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -23,9 +23,6 @@ importers:
'@loadable/component':
specifier: ^5.13.2
version: 5.16.7(react@17.0.2)
- '@tinyflow-ai/react':
- specifier: ^1.1.0
- version: 1.1.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(svelte@5.38.1)
'@turf/turf':
specifier: ^6.5.0
version: 6.5.0
@@ -815,15 +812,6 @@ packages:
resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==}
engines: {node: ^10.12.0 || >=12.0.0}
- '@floating-ui/core@1.7.3':
- resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
-
- '@floating-ui/dom@1.7.3':
- resolution: {integrity: sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag==}
-
- '@floating-ui/utils@0.2.10':
- resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
-
'@hapi/accept@5.0.2':
resolution: {integrity: sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw==}
@@ -850,9 +838,6 @@ packages:
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
- '@jridgewell/remapping@2.3.5':
- resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
-
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
@@ -989,16 +974,6 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@svelte-put/shortcut@4.1.0':
- resolution: {integrity: sha512-wImNEIkbxAIWFqlfuhcbC+jRPDeRa/uJGIXHMEVVD+jqL9xCwWNnkGQJ6Qb2XVszuRLHlb8SGZDL3Io/h3vs8w==}
- peerDependencies:
- svelte: ^5.1.0
-
- '@sveltejs/acorn-typescript@1.0.5':
- resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==}
- peerDependencies:
- acorn: ^8.9.0
-
'@svgr/babel-plugin-add-jsx-attribute@5.4.0':
resolution: {integrity: sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==}
engines: {node: '>=10'}
@@ -1055,15 +1030,6 @@ packages:
resolution: {integrity: sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==}
engines: {node: '>=10'}
- '@tinyflow-ai/react@1.1.0':
- resolution: {integrity: sha512-Dj7iW9f+BVNhaEQ+6Sft293qP7XPCZyQjR5i6oGtE+MyaHknyXz4M6HocXxToiQYK5GGdZOh5K8C1w1WsyxzvA==}
- peerDependencies:
- react: ^18.2.0
- react-dom: ^18.2.0
-
- '@tinyflow-ai/ui@1.1.0':
- resolution: {integrity: sha512-FOnyzO/7VGTO7BvAhryDqf0irqlQMGqOPgTZ8t3kCUPDlZ/iNk3sHl0zeLCM1jbZZTlEovw0TraClaWxJGyJ0g==}
-
'@turf/along@6.5.0':
resolution: {integrity: sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==}
@@ -1574,11 +1540,6 @@ packages:
react: '>=17'
react-dom: '>=17'
- '@xyflow/svelte@1.2.3':
- resolution: {integrity: sha512-Fglx+QQATKd/k55PBQMESNtokj7y+LXRFsukVr3DwlIsemJ4W7cF7gTKP2+TIfnviXIlBtzFPx6iJATV+dx0Iw==}
- peerDependencies:
- svelte: ^5.25.0
-
'@xyflow/system@0.0.67':
resolution: {integrity: sha512-hYsmbj+8JDei0jmupBmxNLaeJEcf9kKmMl6IziGe02i0TOCsHwjIdP+qz+f4rI1/FR2CQiCZJrw4dkHOLC6tEQ==}
@@ -1672,10 +1633,6 @@ packages:
argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
- aria-query@5.3.2:
- resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
- engines: {node: '>= 0.4'}
-
array-buffer-byte-length@1.0.2:
resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
engines: {node: '>= 0.4'}
@@ -1737,10 +1694,6 @@ packages:
axios@0.24.0:
resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==}
- axobject-query@4.1.0:
- resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
- engines: {node: '>= 0.4'}
-
b-tween@0.3.3:
resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==}
@@ -1934,10 +1887,6 @@ packages:
resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
engines: {node: '>=6'}
- clsx@2.1.1:
- resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
- engines: {node: '>=6'}
-
coa@2.0.2:
resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==}
engines: {node: '>= 4.0'}
@@ -2483,9 +2432,6 @@ packages:
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
hasBin: true
- esm-env@1.2.2:
- resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==}
-
espree@7.3.1:
resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -2499,9 +2445,6 @@ packages:
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
engines: {node: '>=0.10'}
- esrap@2.1.0:
- resolution: {integrity: sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==}
-
esrecurse@4.3.0:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
@@ -2965,9 +2908,6 @@ packages:
resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
engines: {node: '>=0.10.0'}
- is-reference@3.0.3:
- resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
-
is-regex@1.1.4:
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
engines: {node: '>= 0.4'}
@@ -3145,9 +3085,6 @@ packages:
resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==}
engines: {node: '>=8.9.0'}
- locate-character@3.0.0:
- resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
-
locate-path@5.0.0:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
@@ -3185,9 +3122,6 @@ packages:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
- magic-string@0.30.17:
- resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
-
make-dir@2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
engines: {node: '>=6'}
@@ -4213,10 +4147,6 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- svelte@5.38.1:
- resolution: {integrity: sha512-fO6CLDfJYWHgfo6lQwkQU2vhCiHc2MBl6s3vEhK+sSZru17YL4R5s1v14ndRpqKAIkq8nCz6MTk1yZbESZWeyQ==}
- engines: {node: '>=18'}
-
svg-parser@2.0.4:
resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==}
@@ -4570,9 +4500,6 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- zimmerframe@1.1.2:
- resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==}
-
zustand@4.5.7:
resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==}
engines: {node: '>=12.7.0'}
@@ -5548,17 +5475,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@floating-ui/core@1.7.3':
- dependencies:
- '@floating-ui/utils': 0.2.10
-
- '@floating-ui/dom@1.7.3':
- dependencies:
- '@floating-ui/core': 1.7.3
- '@floating-ui/utils': 0.2.10
-
- '@floating-ui/utils@0.2.10': {}
-
'@hapi/accept@5.0.2':
dependencies:
'@hapi/boom': 9.1.4
@@ -5589,11 +5505,6 @@ snapshots:
'@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.30
- '@jridgewell/remapping@2.3.5':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.30
-
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/source-map@0.3.11':
@@ -5700,14 +5611,6 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.19.1
- '@svelte-put/shortcut@4.1.0(svelte@5.38.1)':
- dependencies:
- svelte: 5.38.1
-
- '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)':
- dependencies:
- acorn: 8.15.0
-
'@svgr/babel-plugin-add-jsx-attribute@5.4.0': {}
'@svgr/babel-plugin-remove-jsx-attribute@5.4.0': {}
@@ -5775,21 +5678,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@tinyflow-ai/react@1.1.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2)(svelte@5.38.1)':
- dependencies:
- '@tinyflow-ai/ui': 1.1.0(svelte@5.38.1)
- react: 17.0.2
- react-dom: 17.0.2(react@17.0.2)
- transitivePeerDependencies:
- - svelte
-
- '@tinyflow-ai/ui@1.1.0(svelte@5.38.1)':
- dependencies:
- '@floating-ui/dom': 1.7.3
- '@xyflow/svelte': 1.2.3(svelte@5.38.1)
- transitivePeerDependencies:
- - svelte
-
'@turf/along@6.5.0':
dependencies:
'@turf/bearing': 6.5.0
@@ -6857,12 +6745,6 @@ snapshots:
- '@types/react'
- immer
- '@xyflow/svelte@1.2.3(svelte@5.38.1)':
- dependencies:
- '@svelte-put/shortcut': 4.1.0(svelte@5.38.1)
- '@xyflow/system': 0.0.67
- svelte: 5.38.1
-
'@xyflow/system@0.0.67':
dependencies:
'@types/d3-drag': 3.0.7
@@ -6949,8 +6831,6 @@ snapshots:
dependencies:
sprintf-js: 1.0.3
- aria-query@5.3.2: {}
-
array-buffer-byte-length@1.0.2:
dependencies:
call-bound: 1.0.4
@@ -7050,8 +6930,6 @@ snapshots:
transitivePeerDependencies:
- debug
- axobject-query@4.1.0: {}
-
b-tween@0.3.3: {}
b-validate@1.5.3: {}
@@ -7305,8 +7183,6 @@ snapshots:
kind-of: 6.0.3
shallow-clone: 3.0.1
- clsx@2.1.1: {}
-
coa@2.0.2:
dependencies:
'@types/q': 1.5.8
@@ -7988,8 +7864,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- esm-env@1.2.2: {}
-
espree@7.3.1:
dependencies:
acorn: 7.4.1
@@ -8002,10 +7876,6 @@ snapshots:
dependencies:
estraverse: 5.3.0
- esrap@2.1.0:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
-
esrecurse@4.3.0:
dependencies:
estraverse: 5.3.0
@@ -8468,10 +8338,6 @@ snapshots:
is-plain-object@5.0.0: {}
- is-reference@3.0.3:
- dependencies:
- '@types/estree': 1.0.8
-
is-regex@1.1.4:
dependencies:
call-bind: 1.0.8
@@ -8646,8 +8512,6 @@ snapshots:
emojis-list: 3.0.0
json5: 2.2.3
- locate-character@3.0.0: {}
-
locate-path@5.0.0:
dependencies:
p-locate: 4.1.0
@@ -8678,10 +8542,6 @@ snapshots:
dependencies:
yallist: 4.0.0
- magic-string@0.30.17:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
-
make-dir@2.1.0:
dependencies:
pify: 4.0.1
@@ -9874,23 +9734,6 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- svelte@5.38.1:
- dependencies:
- '@jridgewell/remapping': 2.3.5
- '@jridgewell/sourcemap-codec': 1.5.5
- '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0)
- '@types/estree': 1.0.8
- acorn: 8.15.0
- aria-query: 5.3.2
- axobject-query: 4.1.0
- clsx: 2.1.1
- esm-env: 1.2.2
- esrap: 2.1.0
- is-reference: 3.0.3
- locate-character: 3.0.0
- magic-string: 0.30.17
- zimmerframe: 1.1.2
-
svg-parser@2.0.4: {}
svg-tags@1.0.0: {}
@@ -10295,8 +10138,6 @@ snapshots:
yocto-queue@0.1.0: {}
- zimmerframe@1.1.2: {}
-
zustand@4.5.7(@types/react@17.0.2)(react@17.0.2):
dependencies:
use-sync-external-store: 1.5.0(react@17.0.2)
diff --git a/src/locale/index.ts b/src/locale/index.ts
index 4d5dd51..9572fef 100644
--- a/src/locale/index.ts
+++ b/src/locale/index.ts
@@ -28,6 +28,13 @@ const i18n = {
'menu.user.role.admin': 'Admin',
'menu.user.role.user': 'General User',
'menu.dashboard.workplace': 'Workplace',
+ 'menu.scene': 'All Engineering',
+ 'menu.application': 'All Applications',
+ 'menu.instance': 'Application Instance',
+ 'menu.componentDevelopment': 'Component Development',
+ 'menu.componentLibrary': 'Component Library',
+ 'menu.compositeCompLibrary': 'Composite Component Library',
+ 'menu.componentMarket': 'Component Market',
'navbar.logout': 'Logout',
'settings.title': 'Settings',
'settings.themeColor': 'Theme Color',
@@ -56,7 +63,7 @@ const i18n = {
'message.empty': 'Empty',
'message.empty.tips': 'No Content',
'message.lang.tips': 'Language switch to ',
- 'navbar.search.placeholder': 'Please search',
+ 'navbar.search.placeholder': 'Please search'
},
'zh-CN': {
'menu.dashboard': '仪表盘',
@@ -86,6 +93,13 @@ const i18n = {
'menu.user.role.admin': '管理员',
'menu.user.role.user': '普通用户',
'menu.dashboard.workplace': '工作台',
+ 'menu.scene': '所有工程',
+ 'menu.application': '所有应用',
+ 'menu.instance': '应用实例',
+ 'menu.componentDevelopment': '组件开发',
+ 'menu.componentLibrary': '组件库',
+ 'menu.compositeCompLibrary': '复合组件库',
+ 'menu.componentMarket': '组件市场',
'navbar.logout': '退出登录',
'settings.title': '页面配置',
'settings.themeColor': '主题色',
@@ -114,8 +128,8 @@ const i18n = {
'message.empty': '清空',
'message.empty.tips': '暂无内容',
'message.lang.tips': '语言切换至 ',
- 'navbar.search.placeholder': '输入内容查询',
- },
+ 'navbar.search.placeholder': '输入内容查询'
+ }
};
export default i18n;
diff --git a/src/pages/application/index.tsx b/src/pages/application/index.tsx
new file mode 100644
index 0000000..e130e11
--- /dev/null
+++ b/src/pages/application/index.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+
+function Application() {
+ return (
+ <>
+
+ 所有应用
+
+ >
+ );
+}
+
+export default Application;
\ No newline at end of file
diff --git a/src/pages/componentDevelopment/index.tsx b/src/pages/componentDevelopment/index.tsx
new file mode 100644
index 0000000..c75fcb2
--- /dev/null
+++ b/src/pages/componentDevelopment/index.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+
+function ComponentDevelopment() {
+ return (
+ <>
+
+ 组件开发
+
+ >
+ );
+}
+
+export default ComponentDevelopment;
\ No newline at end of file
diff --git a/src/pages/componentLibrary/index.tsx b/src/pages/componentLibrary/index.tsx
new file mode 100644
index 0000000..141df1c
--- /dev/null
+++ b/src/pages/componentLibrary/index.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+
+function ComponentLibrary() {
+ return (
+ <>
+
+ 组件库
+
+ >
+ );
+}
+
+export default ComponentLibrary;
\ No newline at end of file
diff --git a/src/pages/componentMarket/index.tsx b/src/pages/componentMarket/index.tsx
new file mode 100644
index 0000000..e6e1d67
--- /dev/null
+++ b/src/pages/componentMarket/index.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+
+function ComponentMarket() {
+ return (
+ <>
+
+ 组件市场
+
+ >
+ );
+}
+
+export default ComponentMarket;
\ No newline at end of file
diff --git a/src/pages/compositeCompLibrary/index.tsx b/src/pages/compositeCompLibrary/index.tsx
new file mode 100644
index 0000000..ccc6cf2
--- /dev/null
+++ b/src/pages/compositeCompLibrary/index.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+
+function CompositeCompLibrary() {
+ return (
+ <>
+
+ 复合组件库
+
+ >
+ );
+}
+
+export default CompositeCompLibrary;
\ No newline at end of file
diff --git a/src/pages/dashboard/monitor/chat-panel.tsx b/src/pages/dashboard/monitor/chat-panel.tsx
deleted file mode 100644
index 15c1c3b..0000000
--- a/src/pages/dashboard/monitor/chat-panel.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-import React, { useEffect, useState } from 'react';
-import {
- Space,
- Select,
- Input,
- Button,
- Typography,
- Spin,
-} from '@arco-design/web-react';
-import { IconDownload, IconFaceSmileFill } from '@arco-design/web-react/icon';
-import axios from 'axios';
-import useLocale from '@/utils/useLocale';
-import locale from './locale';
-import MessageList from './message-list';
-import styles from './style/index.module.less';
-
-export default function ChatPanel() {
- const t = useLocale(locale);
- const [messageList, setMessageList] = useState([]);
- const [loading, setLoading] = useState(false);
-
- function fetchMessageList() {
- setLoading(true);
- axios
- .get('/api/chatList')
- .then((res) => {
- setMessageList(res.data || []);
- })
- .finally(() => {
- setLoading(false);
- });
- }
-
- useEffect(() => {
- fetchMessageList();
- }, []);
-
- return (
-
-
-
- {t['monitor.title.chatPanel']}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- } />
-
-
-
-
- );
-}
diff --git a/src/pages/dashboard/monitor/data-statistic-list.tsx b/src/pages/dashboard/monitor/data-statistic-list.tsx
deleted file mode 100644
index 5ec4459..0000000
--- a/src/pages/dashboard/monitor/data-statistic-list.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import { Table, Tag, Typography } from '@arco-design/web-react';
-import React from 'react';
-import useLocale from '@/utils/useLocale';
-import locale from './locale';
-import styles from './style/index.module.less';
-
-export default function QuickOperation() {
- const t = useLocale(locale);
- const columns = [
- {
- title: t['monitor.list.title.order'],
- render: (_col, _record, index) => {index + 1},
- },
- {
- title: t['monitor.list.title.cover'],
- dataIndex: 'cover',
- render: (_col, record) => (
-
-

- {record.status === -1 && (
-
- {t['monitor.list.tag.auditFailed']}
-
- )}
-
- ),
- },
- {
- title: t['monitor.list.title.name'],
- dataIndex: 'name',
- },
- {
- dataIndex: 'duration',
- title: t['monitor.list.title.duration'],
- },
- {
- dataIndex: 'id',
- title: t['monitor.list.title.id'],
- },
- ];
- const data = [
- {
- cover:
- 'http://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/c788fc704d32cf3b1136c7d45afc2669.png~tplv-uwbnlip3yd-webp.webp',
- name: '视频直播',
- duration: '00:05:19',
- id: '54e23ade',
- status: -1,
- },
- ];
- return (
-
-
-
- {t['monitor.list.tip.rotations']}
- {data.length}
- {t['monitor.list.tip.rest']}
-
-
- );
-}
diff --git a/src/pages/dashboard/monitor/data-statistic.tsx b/src/pages/dashboard/monitor/data-statistic.tsx
deleted file mode 100644
index 5d90336..0000000
--- a/src/pages/dashboard/monitor/data-statistic.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-import { Button, Card, Radio, Tabs } from '@arco-design/web-react';
-import React from 'react';
-import useLocale from '@/utils/useLocale';
-import locale from './locale';
-import DataStatisticList from './data-statistic-list';
-import styles from './style/index.module.less';
-
-export default function DataStatistic() {
- const t = useLocale(locale);
- return (
-
-
-
-
-
-
-
- {t['monitor.liveMethod.normal']}
- {t['monitor.liveMethod.flowControl']}
- {t['monitor.liveMethod.video']}
- {t['monitor.liveMethod.web']}
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/pages/dashboard/monitor/index.tsx b/src/pages/dashboard/monitor/index.tsx
deleted file mode 100644
index 9ab3095..0000000
--- a/src/pages/dashboard/monitor/index.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import { Space } from '@arco-design/web-react';
-import React from 'react';
-import { useSelector } from 'react-redux';
-import ChatPanel from './chat-panel';
-import Studio from './studio';
-import DataStatistic from './data-statistic';
-import StudioStatus from './studio-status';
-import QuickOperation from './quick-operation';
-import StudioInformation from './studio-information';
-import styles from './style/index.module.less';
-import './mock';
-
-export default function Monitor() {
- const userInfo = useSelector((state: any) => state.userInfo);
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/pages/dashboard/monitor/locale/index.ts b/src/pages/dashboard/monitor/locale/index.ts
deleted file mode 100644
index 8de29b5..0000000
--- a/src/pages/dashboard/monitor/locale/index.ts
+++ /dev/null
@@ -1,99 +0,0 @@
-const i18n = {
- 'en-US': {
- 'menu.dashboard': 'Dashboard',
- 'monitor.title.chatPanel': 'Chat Window',
- 'monitor.title.quickOperation': 'Quick Operation',
- 'monitor.title.studioInfo': 'Studio Information',
- 'monitor.title.studioPreview': 'Studio Preview',
- 'monitor.chat.options.all': 'All',
- 'monitor.chat.placeholder.searchCategory': 'Search Category',
- 'monitor.chat.update': 'Update',
- 'monitor.list.title.order': 'Order',
- 'monitor.list.title.cover': 'Cover',
- 'monitor.list.title.name': 'Name',
- 'monitor.list.title.duration': 'Duration',
- 'monitor.list.title.id': 'ID',
- 'monitor.list.tip.rotations': 'Rotations ',
- 'monitor.list.tip.rest': ', The program list is not visible to viewers',
- 'monitor.list.tag.auditFailed': 'Audit Failed',
- 'monitor.tab.title.liveMethod': 'Live Method',
- 'monitor.tab.title.onlineUsers': 'Online Users',
- 'monitor.liveMethod.normal': 'Normal Live',
- 'monitor.liveMethod.flowControl': 'Flow Control Live',
- 'monitor.liveMethod.video': 'Video Live',
- 'monitor.liveMethod.web': 'Web Live',
- 'monitor.editCarousel': 'Edit',
- 'monitor.startCarousel': 'Start',
- 'monitor.quickOperation.changeClarity': 'Change the Clarity',
- 'monitor.quickOperation.switchStream': 'Switch Stream',
- 'monitor.quickOperation.removeClarity': 'Remove the Clarity',
- 'monitor.quickOperation.pushFlowGasket': 'Push Flow Gasket',
- 'monitor.studioInfo.label.studioTitle': 'Studio Title',
- 'monitor.studioInfo.label.onlineNotification': 'Online Notification',
- 'monitor.studioInfo.label.studioCategory': 'Studio Category',
- 'monitor.studioInfo.placeholder.studioTitle': "'s Studio",
- 'monitor.studioStatus.title.studioStatus': 'Studio Status',
- 'monitor.studioStatus.title.pictureInfo': 'Picture Information',
- 'monitor.studioStatus.smooth': 'Smooth',
- 'monitor.studioStatus.frameRate': 'Frame',
- 'monitor.studioStatus.bitRate': 'Bit',
- 'monitor.studioStatus.mainstream': 'Main',
- 'monitor.studioStatus.hotStandby': 'Hot',
- 'monitor.studioStatus.coldStandby': 'Cold',
- 'monitor.studioStatus.line': 'Line',
- 'monitor.studioStatus.play': 'Format',
- 'monitor.studioStatus.pictureQuality': 'Quality',
- 'monitor.studioPreview.studio': 'Studio',
- 'monitor.studioPreview.watching': 'watching',
- },
- 'zh-CN': {
- 'menu.dashboard': '仪表盘',
- 'menu.dashboard.monitor': '实时监控',
- 'monitor.title.chatPanel': '聊天窗口',
- 'monitor.title.quickOperation': '快捷操作',
- 'monitor.title.studioInfo': '直播信息',
- 'monitor.title.studioPreview': '直播预览',
- 'monitor.chat.options.all': '全部',
- 'monitor.chat.placeholder.searchCategory': '搜索类目',
- 'monitor.chat.update': '更新',
- 'monitor.list.title.order': '序号',
- 'monitor.list.title.cover': '封面',
- 'monitor.list.title.name': '名称',
- 'monitor.list.title.duration': '视频时长',
- 'monitor.list.title.id': '视频Id',
- 'monitor.list.tip.rotations': '轮播次数',
- 'monitor.list.tip.rest': ',节目单观众不可见',
- 'monitor.list.tag.auditFailed': '审核未通过',
- 'monitor.tab.title.liveMethod': '直播方式',
- 'monitor.tab.title.onlineUsers': '在线人数',
- 'monitor.liveMethod.normal': '普通直播',
- 'monitor.liveMethod.flowControl': '控流直播',
- 'monitor.liveMethod.video': '视频直播',
- 'monitor.liveMethod.web': '网页开播',
- 'monitor.editCarousel': '编辑轮播',
- 'monitor.startCarousel': '开始轮播',
- 'monitor.quickOperation.changeClarity': '切换清晰度',
- 'monitor.quickOperation.switchStream': '主备流切换',
- 'monitor.quickOperation.removeClarity': '摘除清晰度',
- 'monitor.quickOperation.pushFlowGasket': '推流垫片',
- 'monitor.studioInfo.label.studioTitle': '直播标题',
- 'monitor.studioInfo.label.onlineNotification': '上线通知',
- 'monitor.studioInfo.label.studioCategory': '直播类目',
- 'monitor.studioInfo.placeholder.studioTitle': '的直播间',
- 'monitor.studioStatus.title.studioStatus': '直播状态',
- 'monitor.studioStatus.title.pictureInfo': '画面信息',
- 'monitor.studioStatus.smooth': '流畅',
- 'monitor.studioStatus.frameRate': '帧率',
- 'monitor.studioStatus.bitRate': '码率',
- 'monitor.studioStatus.mainstream': '主流',
- 'monitor.studioStatus.hotStandby': '热备',
- 'monitor.studioStatus.coldStandby': '冷备',
- 'monitor.studioStatus.line': '线路',
- 'monitor.studioStatus.play': '播放格式',
- 'monitor.studioStatus.pictureQuality': '画质',
- 'monitor.studioPreview.studio': '直播间',
- 'monitor.studioPreview.watching': '在看',
- },
-};
-
-export default i18n;
diff --git a/src/pages/dashboard/monitor/message-list/index.tsx b/src/pages/dashboard/monitor/message-list/index.tsx
deleted file mode 100644
index 18a48c6..0000000
--- a/src/pages/dashboard/monitor/message-list/index.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react';
-import { Result } from '@arco-design/web-react';
-import MessageItem, { Message } from './item';
-import styles from './style/index.module.less';
-
-interface MessageListProps {
- data: Message[];
-}
-
-function MessageList(props: MessageListProps) {
- const { data = [] } = props;
- return (
-
- {data.map((item) => (
-
- ))}
- {!data.length && }
-
- );
-}
-
-export default MessageList;
diff --git a/src/pages/dashboard/monitor/message-list/item.tsx b/src/pages/dashboard/monitor/message-list/item.tsx
deleted file mode 100644
index 3e62f73..0000000
--- a/src/pages/dashboard/monitor/message-list/item.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import React from 'react';
-import { Space, Typography } from '@arco-design/web-react';
-import { IconCommand, IconStar } from '@arco-design/web-react/icon';
-import cs from 'classnames';
-import styles from './style/index.module.less';
-
-export interface Message {
- id?: string;
- username?: string;
- content?: string;
- time?: string;
- isCollect?: boolean;
-}
-
-export interface MessageItemProps {
- data: Message;
-}
-
-function MessageItem(props: MessageItemProps) {
- const { data = {} } = props;
- const classNames = cs(styles['message-item'], {
- [styles['message-item-collected']]: data.isCollect,
- });
- return (
-
-
- {data.username}
- {data.content}
-
-
-
- );
-}
-
-export default MessageItem;
diff --git a/src/pages/dashboard/monitor/message-list/style/index.module.less b/src/pages/dashboard/monitor/message-list/style/index.module.less
deleted file mode 100644
index afa0316..0000000
--- a/src/pages/dashboard/monitor/message-list/style/index.module.less
+++ /dev/null
@@ -1,52 +0,0 @@
-.message-item {
- font-size: 12px;
- line-height: 20px;
- padding: 8px;
- border-radius: 2px;
-
- &-footer {
- display: flex;
- justify-content: space-between;
- align-items: center;
- }
-
- &-actions {
- display: flex;
- opacity: 0;
-
- &-item {
- margin-right: 4px;
- font-size: 14px;
- color: var(--color-text-3);
- width: 20px;
- height: 20px;
- border-radius: 50%;
- display: flex;
- justify-content: center;
- align-items: center;
- cursor: pointer;
-
- &:hover {
- background-color: rgb(var(--gray-3));
- }
-
- &:last-child {
- margin-right: 0;
- }
- }
- }
-
- &-collected {
- .message-item-actions-collect {
- color: rgb(var(--gold-6));
- }
- }
-
- &:hover {
- background-color: rgb(var(--gray-2));
-
- .message-item-actions {
- opacity: 1;
- }
- }
-}
diff --git a/src/pages/dashboard/monitor/mock/index.ts b/src/pages/dashboard/monitor/mock/index.ts
deleted file mode 100644
index f0f6415..0000000
--- a/src/pages/dashboard/monitor/mock/index.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import Mock from 'mockjs';
-import setupMock from '@/utils/setupMock';
-
-setupMock({
- setup: () => {
- Mock.mock(new RegExp('/api/chatList'), () => {
- const data = Mock.mock({
- 'data|4-6': [
- {
- 'id|+1': 1,
- username: '用户7352772',
- content: '马上就开始了,好激动!',
- time: '13:09:12',
- 'isCollect|2': true,
- },
- ],
- });
- return data.data;
- });
- },
-});
diff --git a/src/pages/dashboard/monitor/quick-operation.tsx b/src/pages/dashboard/monitor/quick-operation.tsx
deleted file mode 100644
index 8997c5c..0000000
--- a/src/pages/dashboard/monitor/quick-operation.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-import React from 'react';
-import { Button, Card, Typography, Space } from '@arco-design/web-react';
-import {
- IconArrowRight,
- IconStop,
- IconSwap,
- IconTags,
-} from '@arco-design/web-react/icon';
-import useLocale from '@/utils/useLocale';
-import locale from './locale';
-
-export default function QuickOperation() {
- const t = useLocale(locale);
- return (
-
-
- {t['monitor.title.quickOperation']}
-
-
- }>
- {t['monitor.quickOperation.changeClarity']}
-
- }>
- {t['monitor.quickOperation.switchStream']}
-
- }>
- {t['monitor.quickOperation.removeClarity']}
-
- }>
- {t['monitor.quickOperation.pushFlowGasket']}
-
-
-
- );
-}
diff --git a/src/pages/dashboard/monitor/studio-information.tsx b/src/pages/dashboard/monitor/studio-information.tsx
deleted file mode 100644
index 86eb541..0000000
--- a/src/pages/dashboard/monitor/studio-information.tsx
+++ /dev/null
@@ -1,41 +0,0 @@
-import { Card, Typography, Form, Input, Button } from '@arco-design/web-react';
-import React from 'react';
-import useLocale from '@/utils/useLocale';
-import locale from './locale';
-
-export default function StudioInformation() {
- const t = useLocale(locale);
- return (
-
-
- {t['monitor.title.studioInfo']}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/src/pages/dashboard/monitor/studio-status.tsx b/src/pages/dashboard/monitor/studio-status.tsx
deleted file mode 100644
index b919c85..0000000
--- a/src/pages/dashboard/monitor/studio-status.tsx
+++ /dev/null
@@ -1,108 +0,0 @@
-import React from 'react';
-import {
- Card,
- Typography,
- Tag,
- Space,
- Descriptions,
-} from '@arco-design/web-react';
-import useLocale from '@/utils/useLocale';
-import locale from './locale';
-
-export default function StudioStatus() {
- const t = useLocale(locale);
- const dataStatus = [
- {
- label: (
-
-
- {t['monitor.studioStatus.mainstream']}
-
- {t['monitor.studioStatus.bitRate']}
-
- ),
- value: '6 Mbps',
- },
- {
- label: t['monitor.studioStatus.frameRate'],
- value: '60',
- },
- {
- label: (
-
-
- {t['monitor.studioStatus.hotStandby']}
-
- {t['monitor.studioStatus.bitRate']}
-
- ),
- value: '6 Mbps',
- },
- {
- label: t['monitor.studioStatus.frameRate'],
- value: '60',
- },
- {
- label: (
-
-
- {t['monitor.studioStatus.coldStandby']}
-
- {t['monitor.studioStatus.bitRate']}
-
- ),
- value: '6 Mbps',
- },
- {
- label: t['monitor.studioStatus.frameRate'],
- value: '60',
- },
- ];
- const dataPicture = [
- {
- label: t['monitor.studioStatus.line'],
- value: '热备',
- },
- {
- label: 'CDN',
- value: 'KS',
- },
- {
- label: t['monitor.studioStatus.play'],
- value: 'FLV',
- },
- {
- label: t['monitor.studioStatus.pictureQuality'],
- value: '原画',
- },
- ];
-
- return (
-
-
-
- {t['monitor.studioStatus.title.studioStatus']}
-
- {t['monitor.studioStatus.smooth']}
-
-
-
- {t['monitor.studioStatus.title.pictureInfo']}
-
-
-
- );
-}
diff --git a/src/pages/dashboard/monitor/studio.tsx b/src/pages/dashboard/monitor/studio.tsx
deleted file mode 100644
index f05239c..0000000
--- a/src/pages/dashboard/monitor/studio.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import { Card, Typography, Avatar, Space, Grid } from '@arco-design/web-react';
-import { IconMore } from '@arco-design/web-react/icon';
-import React from 'react';
-import useLocale from '@/utils/useLocale';
-import locale from './locale';
-import styles from './style/index.module.less';
-
-interface StudioProps {
- userInfo: {
- name?: string;
- avatar?: string;
- };
-}
-
-export default function Studio(props: StudioProps) {
- const t = useLocale(locale);
- const { userInfo } = props;
- return (
-
-
-
-
- {t['monitor.title.studioPreview']}
-
-
-
-
-
-
-
-

-
- {userInfo && (
-
-
-
-
-
-
- {userInfo.name}
- {t['monitor.studioPreview.studio']}
-
-
-
- )}
-
- 3,6000 {t['monitor.studioPreview.watching']}
-
-
-
-
- );
-}
diff --git a/src/pages/dashboard/monitor/style/index.module.less b/src/pages/dashboard/monitor/style/index.module.less
deleted file mode 100644
index d9ede36..0000000
--- a/src/pages/dashboard/monitor/style/index.module.less
+++ /dev/null
@@ -1,94 +0,0 @@
-.layout {
- display: flex;
-
- &-left-side {
- flex-basis: 300px;
- }
-
- &-content {
- flex: 1;
- padding: 0 16px;
- }
-
- &-right-side {
- flex-basis: 280px;
- }
-}
-
-.chat-panel {
- height: 100%;
- background-color: var(--color-bg-2);
- padding: 20px;
- box-sizing: border-box;
- display: flex;
- flex-direction: column;
- border-radius: 4px;
-
- &-content {
- flex: 1;
- margin: 20px 0;
- box-sizing: border-box;
- }
-}
-
-.data-statistic {
- &-content {
- padding: 20px 0;
- }
-
- &-list {
- &-header {
- margin-top: 16px;
- display: flex;
- justify-content: space-between;
- }
-
- &-content {
- margin-top: 16px;
- }
-
- &-cover {
- &-wrapper {
- height: 68px;
- position: relative;
-
- img {
- height: 100%;
- }
- }
-
- &-tag {
- position: absolute;
- top: 6px;
- left: 6px;
- }
- }
-
- &-tip {
- display: block;
- margin-top: 16px;
- text-align: center;
- }
- }
-}
-
-.studio {
- &-wrapper {
- :global(.arco-card-body) {
- padding-top: 0 !important;
- }
- }
-
- &-preview {
- width: 100%;
- max-width: 600px;
- display: block;
- margin: 0 auto;
- }
-
- &-bar {
- margin-top: 16px;
- display: flex;
- justify-content: space-between;
- }
-}
diff --git a/src/pages/dashboard/tinyFlowTest/index.tsx b/src/pages/dashboard/tinyFlowTest/index.tsx
deleted file mode 100644
index e182bbb..0000000
--- a/src/pages/dashboard/tinyFlowTest/index.tsx
+++ /dev/null
@@ -1,111 +0,0 @@
-import React, { useRef } from 'react';
-import { Tinyflow, TinyflowHandle } from '@tinyflow-ai/react';
-import '@tinyflow-ai/react/dist/index.css';
-
-const App = () => {
- const tinyflowRef = useRef(null);
-
- const handleGetData = () => {
- if (tinyflowRef.current) {
- const data = tinyflowRef.current.getData();
- console.log('Flow Data:', data);
- }
- };
-
- const customNodes = {
- 'custom-node': {
- title: '自定义节点',
- description: '这是一个测试的自定义节点',
- icon: '',
- sortNo: 2,
- render: (parent, node, flowInstance) => {
- parent.innerHTML = ``;
-
- parent.querySelector('select')
- ?.addEventListener('change', (e) => {
- console.log('select change: ', e);
- flowInstance.updateNodeData(node.id, {
- test: e.target.value
- });
- })
- ;
-
- console.log('render: ', node, flowInstance);
- },
- onUpdate: (parent, node) => {
- console.log('onUpdate: ', node);
- }
-
- },
-
- 'test-node': {
- title: '测试节点',
- description: '这是一个测试的自定义节点',
- icon: '',
- sortNo: 310,
- group: 'tools',
- forms: [
- {
- type: 'heading',
- label: '测试节点'
- },
- {
- type: 'input',
- name: 'test',
- label: '测试',
- placeholder: '请输入测试内容'
- },
- {
- type: 'select',
- name: 'test2',
- label: '测试2',
- placeholder: '请选择测试内容',
- defaultValue: '1',
- options: [
- {
- label: '选项1',
- value: '1'
- },
- {
- label: '选项2',
- value: '2'
- },
- {
- label: '选项3',
- value: '3'
- }
- ]
- }
- ]
- }
- };
-
- return (
-
-
Tinyflow React Example
-
-
-
- );
-};
-
-export default App;
\ No newline at end of file
diff --git a/src/pages/instance/index.tsx b/src/pages/instance/index.tsx
new file mode 100644
index 0000000..55f5307
--- /dev/null
+++ b/src/pages/instance/index.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+
+function Instance() {
+ return (
+ <>
+
+ 应用实例
+
+ >
+ );
+}
+
+export default Instance;
\ No newline at end of file
diff --git a/src/pages/layout.tsx b/src/pages/layout.tsx
index 0cef5c2..8ba44cf 100644
--- a/src/pages/layout.tsx
+++ b/src/pages/layout.tsx
@@ -2,16 +2,16 @@ import React, { useState, ReactNode, useRef, useEffect } from 'react';
import { Layout, Menu, Breadcrumb, Spin } from '@arco-design/web-react';
import cs from 'classnames';
import {
- IconDashboard,
- IconList,
- IconSettings,
- IconFile,
IconApps,
- IconCheckCircle,
- IconExclamationCircle,
- IconUser,
IconMenuFold,
- IconMenuUnfold
+ IconMenuUnfold,
+ IconArchive,
+ IconUnorderedList,
+ IconMindMapping,
+ IconCommon,
+ IconCode,
+ IconHome,
+ IconStorage
} from '@arco-design/web-react/icon';
import { useSelector } from 'react-redux';
import { useRouter } from 'next/router';
@@ -34,22 +34,22 @@ const Content = Layout.Content;
function getIconFromKey(key) {
switch (key) {
- case 'dashboard':
- return ;
- case 'list':
- return ;
- case 'form':
- return ;
- case 'profile':
- return ;
- case 'visualization':
+ case 'dashboard/workplace':
+ return ;
+ case 'scene':
+ return ;
+ case 'application':
return ;
- case 'result':
- return ;
- case 'exception':
- return ;
- case 'user':
- return ;
+ case 'instance':
+ return ;
+ case 'componentDevelopment':
+ return ;
+ case 'componentLibrary':
+ return ;
+ case 'compositeCompLibrary':
+ return ;
+ case 'componentMarket':
+ return ;
default:
return ;
}
diff --git a/src/pages/scene/index.tsx b/src/pages/scene/index.tsx
new file mode 100644
index 0000000..0da8716
--- /dev/null
+++ b/src/pages/scene/index.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+
+function Scene() {
+ return (
+ <>
+
+ 所有应用
+
+ >
+ );
+}
+
+export default Scene;
\ No newline at end of file
diff --git a/src/pages/visualization/data-analysis/index.tsx b/src/pages/visualization/data-analysis/index.tsx
deleted file mode 100644
index 36bcc82..0000000
--- a/src/pages/visualization/data-analysis/index.tsx
+++ /dev/null
@@ -1,118 +0,0 @@
-import React, { useEffect, useMemo, useState } from 'react';
-import { Card, Grid, Table, Space, Typography } from '@arco-design/web-react';
-import useLocale from '@/utils/useLocale';
-import axios from 'axios';
-import locale from './locale';
-import PublicOpinion from './public-opinion';
-import MultiInterval from '@/components/Chart/multi-stack-interval';
-import PeriodLine from '@/components/Chart/period-legend-line';
-import './mock';
-
-const { Row, Col } = Grid;
-
-function DataAnalysis() {
- const t = useLocale(locale);
- const [loading, setLoading] = useState(false);
- const [tableLoading, setTableLoading] = useState(false);
-
- const [chartData, setChartData] = useState([]);
- const [tableData, setTableData] = useState([]);
-
- const getChartData = async () => {
- setLoading(true);
- const { data } = await axios
- .get('/api/data-analysis/content-publishing')
- .finally(() => setLoading(false));
- setChartData(data);
- };
-
- const getTableData = async () => {
- setTableLoading(true);
- const { data } = await axios
- .get('/api/data-analysis/author-list')
- .finally(() => setTableLoading(false));
- setTableData(data.list);
- };
-
- useEffect(() => {
- getChartData();
- getTableData();
- }, []);
-
- const columns = useMemo(() => {
- return [
- {
- title: t['dataAnalysis.authorTable.rank'],
- dataIndex: 'id',
- },
- {
- title: t['dataAnalysis.authorTable.author'],
- dataIndex: 'author',
- },
- {
- title: t['dataAnalysis.authorTable.content'],
- dataIndex: 'contentCount',
- sorter: (a, b) => a.contentCount - b.contentCount,
- render(x) {
- return Number(x).toLocaleString();
- },
- },
- {
- title: t['dataAnalysis.authorTable.click'],
- dataIndex: 'clickCount',
- sorter: (a, b) => a.clickCount - b.clickCount,
- render(x) {
- return Number(x).toLocaleString();
- },
- },
- ];
- }, [t]);
-
- return (
-
-
-
- {t['dataAnalysis.title.publicOpinion']}
-
-
-
-
-
-
-
- {t['dataAnalysis.title.publishingRate']}
-
-
-
-
-
-
-
- {t['dataAnalysis.title.authorsList']}
-
-
-
-
-
-
-
-
-
- {t['dataAnalysis.title.publishingTiming']}
-
-
-
-
-
-
- );
-}
-export default DataAnalysis;
diff --git a/src/pages/visualization/data-analysis/locale/index.ts b/src/pages/visualization/data-analysis/locale/index.ts
deleted file mode 100644
index f50054d..0000000
--- a/src/pages/visualization/data-analysis/locale/index.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-const i18n = {
- 'en-US': {
- 'menu.visualization': 'Data Visualization',
- 'menu.visualization.analysis': 'Analysis',
- 'dataAnalysis.yesterday': 'Yesterday',
- 'dataAnalysis.title.publicOpinion': 'Public Opinion Analysis',
- 'dataAnalysis.publicOpinion.visitor': 'Total visitors',
- 'dataAnalysis.publicOpinion.content': 'Total content publishing',
- 'dataAnalysis.publicOpinion.comment': 'Total comments',
- 'dataAnalysis.publicOpinion.share': 'Total share',
- 'dataAnalysis.title.publishingRate': 'Content publishing rate',
- 'dataAnalysis.title.publishingTiming': 'Content period analysis',
- 'dataAnalysis.title.authorsList': 'Top authors list',
- 'dataAnalysis.authorTable.rank': 'Rank ',
- 'dataAnalysis.authorTable.author': 'Author',
- 'dataAnalysis.authorTable.content': 'Interval volume',
- 'dataAnalysis.authorTable.click': 'Click volume',
- },
- 'zh-CN': {
- 'menu.visualization': '数据可视化',
- 'menu.visualization.analysis': '分析页',
- 'dataAnalysis.yesterday': '较昨日',
- 'dataAnalysis.title.publicOpinion': '舆情分析',
- 'dataAnalysis.publicOpinion.visitor': '访问总人数',
- 'dataAnalysis.publicOpinion.content': '内容发布量',
- 'dataAnalysis.publicOpinion.comment': '评论总量',
- 'dataAnalysis.publicOpinion.share': '分享总量',
- 'dataAnalysis.title.publishingRate': '内容发布比例',
- 'dataAnalysis.title.publishingTiming': '内容时段分析',
- 'dataAnalysis.title.authorsList': '热门作者榜单',
- 'dataAnalysis.authorTable.rank': '排名',
- 'dataAnalysis.authorTable.author': '作者',
- 'dataAnalysis.authorTable.content': '内容量',
- 'dataAnalysis.authorTable.click': '点击量',
- },
-};
-
-export default i18n;
diff --git a/src/pages/visualization/data-analysis/mock/index.ts b/src/pages/visualization/data-analysis/mock/index.ts
deleted file mode 100644
index 1bef339..0000000
--- a/src/pages/visualization/data-analysis/mock/index.ts
+++ /dev/null
@@ -1,91 +0,0 @@
-import Mock from 'mockjs';
-import qs from 'query-string';
-import setupMock from '@/utils/setupMock';
-
-const mockLine = (name) => {
- const result = new Array(12).fill(0).map(() => ({
- y: Mock.Random.natural(20, 100),
- }));
- return result.map((item, index) => ({
- ...item,
- x: index,
- name,
- }));
-};
-
-const mockPie = () => {
- return new Array(3).fill(0).map((_, index) => ({
- name: ['纯文本', '图文类', '视频类'][index],
- count: Mock.Random.natural(20, 100),
- }));
-};
-
-setupMock({
- setup: () => {
- Mock.mock(new RegExp('/api/data-analysis/overview'), (params) => {
- const { type } = qs.parseUrl(params.url).query;
- return Mock.mock({
- count: () => Mock.Random.natural(1000, 10000),
- increment: () => Mock.Random.boolean(),
- diff: () => Mock.Random.natural(100, 1000),
- chartType: type,
- chartData: () => {
- if (type === 'pie') {
- return mockPie();
- } else if (type === 'line') {
- return [...mockLine('类目1'), ...mockLine('类目2')];
- }
- return mockLine('类目1');
- },
- });
- });
-
- const getTimeLine = (name) => {
- const timeArr = new Array(12).fill(0).map((_, index) => {
- const time = index * 2;
- return time < 9 ? `0${time}:00` : `${time}:00`;
- });
- return new Array(12).fill(0).map((_, index) => ({
- name,
- time: timeArr[index],
- count: Mock.Random.natural(1000, 5000),
- rate: Mock.Random.natural(0, 100),
- }));
- };
-
- Mock.mock(new RegExp('/api/data-analysis/content-publishing'), () => {
- return [
- ...getTimeLine('纯文本'),
- ...getTimeLine('视频类'),
- ...getTimeLine('图文类'),
- ];
- });
-
- Mock.mock(new RegExp('/api/data-analysis/author-list'), () => {
- return Mock.mock({
- 'list|8': [
- {
- 'id|+1': 1,
- author: () =>
- Mock.Random.pick([
- '用魔法打败魔法',
- '王多鱼',
- 'Christopher',
- '叫我小李好了',
- '陈皮话梅糖',
- '碳烤小肥羊',
- ]),
- time: function () {
- return new Array(12).fill(0).map((_, index) => {
- const time = index * 2;
- return time < 9 ? `0${time}:00` : `${time}:00`;
- })[this.id % 12];
- },
- contentCount: () => Mock.Random.natural(1000, 5000),
- clickCount: () => Mock.Random.natural(5000, 30000),
- },
- ],
- });
- });
- },
-});
diff --git a/src/pages/visualization/data-analysis/public-opinion/card.tsx b/src/pages/visualization/data-analysis/public-opinion/card.tsx
deleted file mode 100644
index c66ba30..0000000
--- a/src/pages/visualization/data-analysis/public-opinion/card.tsx
+++ /dev/null
@@ -1,187 +0,0 @@
-import React from 'react';
-import { Skeleton, Statistic, Typography } from '@arco-design/web-react';
-import cs from 'classnames';
-import {
- Chart,
- Line,
- Interval,
- Coordinate,
- Interaction,
- Tooltip,
- G2,
- Legend,
-} from 'bizcharts';
-
-import { IconArrowRise, IconArrowFall } from '@arco-design/web-react/icon';
-import styles from '../style/public-opinion.module.less';
-
-const { Title, Text } = Typography;
-const basicChartProps = {
- pure: true,
- autoFit: true,
- height: 80,
- padding: [10, 10, 0, 10],
-};
-
-export interface PublicOpinionCardProps {
- key: string;
- title: string;
- chartData?: any[];
- chartType: 'line' | 'interval' | 'pie';
- count?: number;
- increment?: boolean;
- diff?: number;
- compareTime?: string;
- loading?: boolean;
-}
-
-function SimpleLine(props: { chartData: any[] }) {
- const { chartData } = props;
- return (
-
- {
- if (name === '类目2') {
- return { lineDash: [8, 10] };
- }
- return {};
- },
- }}
- />
-
- );
-}
-
-function SimpleInterval(props: { chartData: any[] }) {
- const { chartData } = props;
-
- G2.registerShape('interval', 'border-radius', {
- draw(cfg, container) {
- const points = cfg.points as unknown as { x: string; y: number };
- let path = [];
- path.push(['M', points[0].x, points[0].y]);
- path.push(['L', points[1].x, points[1].y]);
- path.push(['L', points[2].x, points[2].y]);
- path.push(['L', points[3].x, points[3].y]);
- path.push('Z');
- path = this.parsePath(path); // 将 0 - 1 转化为画布坐标
-
- const group = container.addGroup();
- group.addShape('rect', {
- attrs: {
- x: path[1][1], // 矩形起始点为左上角
- y: path[1][2],
- width: path[2][1] - path[1][1],
- height: path[0][2] - path[1][2],
- fill: cfg.color,
- radius: (path[2][1] - path[1][1]) / 2,
- },
- });
- return group;
- },
- });
-
- return (
-
- {
- if (Number(xVal) % 2 === 0) {
- return '#2CAB40';
- }
- return '#86DF6C';
- },
- ]}
- shape="border-radius"
- />
-
- );
-}
-
-function SimplePie(props: { chartData: any[] }) {
- const { chartData } = props;
-
- return (
-
-
-
-
-
-
-
- );
-}
-
-function PublicOpinionCard(props: PublicOpinionCardProps) {
- const { chartType, title, count, increment, diff, chartData, loading } =
- props;
- const className = cs(styles.card, styles[`card-${chartType}`]);
-
- return (
-
-
-
- {title}
-
- }
- loading={loading}
- value={count}
- groupSeparator
- />
-
-
- {props.compareTime}
-
-
- {loading ? (
-
- ) : (
- <>
- {diff}
- {increment ? : }
- >
- )}
-
-
-
-
- {loading ? (
-
- ) : (
- <>
- {chartType === 'interval' && (
-
- )}
- {chartType === 'line' && }
- {chartType === 'pie' && }
- >
- )}
-
-
- );
-}
-
-export default PublicOpinionCard;
diff --git a/src/pages/visualization/data-analysis/public-opinion/index.tsx b/src/pages/visualization/data-analysis/public-opinion/index.tsx
deleted file mode 100644
index 148a6fa..0000000
--- a/src/pages/visualization/data-analysis/public-opinion/index.tsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import React, { useState, useEffect, useMemo } from 'react';
-import PublicOpinionCard, { PublicOpinionCardProps } from './card';
-import axios from 'axios';
-import { Grid } from '@arco-design/web-react';
-import useLocale from '@/utils/useLocale';
-import locale from '../locale';
-
-const { Row, Col } = Grid;
-
-const cardInfo = [
- {
- key: 'visitor',
- type: 'line',
- },
- {
- key: 'content',
- type: 'interval',
- },
- {
- key: 'comment',
- type: 'line',
- },
- {
- key: 'share',
- type: 'pie',
- },
-];
-
-function PublicOpinion() {
- const t = useLocale(locale);
- const [loading, setLoading] = useState(true);
- const [data, setData] = useState(
- cardInfo.map((item) => ({
- ...item,
- chartType: item.type as 'line' | 'pie' | 'interval',
- title: t[`dataAnalysis.publicOpinion.${item.key}`],
- }))
- );
-
- const getData = async () => {
- const requestList = cardInfo.map(async (info) => {
- const { data } = await axios
- .get(`/api/data-analysis/overview?type=${info.type}`)
- .catch(() => ({ data: {} }));
- return {
- ...data,
- key: info.key,
- chartType: info.type,
- };
- });
- const result = await Promise.all(requestList).finally(() =>
- setLoading(false)
- );
- setData(result);
- };
-
- useEffect(() => {
- getData();
- }, []);
-
- const formatData = useMemo(() => {
- return data.map((item) => ({
- ...item,
- title: t[`dataAnalysis.publicOpinion.${item.key}`],
- }));
- }, [t, data]);
-
- return (
-
-
- {formatData.map((item, index) => (
-
-
-
- ))}
-
-
- );
-}
-
-export default PublicOpinion;
diff --git a/src/pages/visualization/data-analysis/style/public-opinion.module.less b/src/pages/visualization/data-analysis/style/public-opinion.module.less
deleted file mode 100644
index 9277d1c..0000000
--- a/src/pages/visualization/data-analysis/style/public-opinion.module.less
+++ /dev/null
@@ -1,96 +0,0 @@
-@line-card-bg: linear-gradient(180deg, rgb(242 249 254) 0%, #e6f4fe 100%);
-
-@interval-card-bg: linear-gradient(
- 180deg,
- rgb(245 254 242) 0%,
- rgb(230 254 238) 100%
-);
-
-@pie-card-bg: linear-gradient(
- 180deg,
- rgb(247 247 255) 0%,
- rgb(236 236 255) 100%
-);
-
-@line-card-dark-bg: linear-gradient(180deg, #284991 0%, #122b62 100%);
-@interval-card-dark-bg: linear-gradient(180deg, #3d492e 0%, #263827 100%);
-@pie-card-dark-bg: linear-gradient(180deg, #312565 0%, #201936 100%);
-
-.card {
- display: flex;
- padding: 20px;
- padding-top: 16px;
- border-radius: 4px;
- min-height: 100px;
-
- &-line {
- background: @line-card-bg;
- }
-
- &-interval {
- background: @interval-card-bg;
- }
-
- &-pie {
- background: @pie-card-bg;
- }
-
- .statistic {
- white-space: nowrap;
- }
-
- .chart {
- flex: auto;
- display: flex;
- flex-direction: column-reverse;
- margin-left: 16px;
- }
-
- .title {
- margin: 0;
- }
-
- :global(.arco-statistic-content) {
- margin-top: 24px;
- margin-bottom: 4px;
-
- :global(.arco-statistic-value) {
- font-size: 24px;
- line-height: 28px;
- }
- }
-
- .compare-yesterday {
- &-text {
- font-size: 12px;
- font-weight: 400;
- color: var(--color-text-2);
- }
- }
-
- .diff {
- margin-left: 8px;
- line-height: 20px;
- color: rgb(var(--red-6));
- }
-
- .diff-increment {
- color: rgb(var(--green-6));
- }
-}
-
-body[arco-theme='dark'] {
- .card {
- &-line {
- background: @line-card-dark-bg;
- }
-
- &-pie {
- background: @pie-card-dark-bg;
- }
-
- &-interval {
- background: @interval-card-dark-bg;
- }
- }
-}
diff --git a/src/pages/visualization/multi-dimension-data-analysis/card-list.tsx b/src/pages/visualization/multi-dimension-data-analysis/card-list.tsx
deleted file mode 100644
index e0cb682..0000000
--- a/src/pages/visualization/multi-dimension-data-analysis/card-list.tsx
+++ /dev/null
@@ -1,208 +0,0 @@
-import React, { useEffect, useState, useMemo } from 'react';
-import {
- Statistic,
- Typography,
- Spin,
- Grid,
- Card,
- Skeleton,
-} from '@arco-design/web-react';
-import cs from 'classnames';
-import { Chart, Line, Interval, Tooltip, Interaction } from 'bizcharts';
-import axios from 'axios';
-import useLocale from '@/utils/useLocale';
-import locale from './locale';
-
-import { IconArrowRise, IconArrowFall } from '@arco-design/web-react/icon';
-import styles from './style/card-block.module.less';
-
-const { Row, Col } = Grid;
-const { Title, Text } = Typography;
-const basicChartProps = {
- pure: true,
- autoFit: true,
- height: 80,
- padding: [0, 10, 0, 10],
-};
-
-export interface CardProps {
- key: string;
- title?: string;
- chartData?: any[];
- chartType: string;
- count?: number;
- increment?: boolean;
- diff?: number;
- loading?: boolean;
-}
-
-function CustomTooltip(props: { items: any[] }) {
- const { items } = props;
- return (
-
- {items.map((item, index) => (
-
- {Number(item.data.y).toLocaleString()}
-
- ))}
-
- );
-}
-function SimpleLine(props: { chartData: any[] }) {
- const { chartData } = props;
- return (
-
-
-
- {(_, items) => }
-
-
- );
-}
-
-function SimpleInterval(props: { chartData: any[] }) {
- const { chartData } = props;
- return (
-
- {
- if (Number(xVal) % 2 === 0) {
- return '#86DF6C';
- }
- return '#468DFF';
- },
- ]}
- />
-
- {(_, items) => }
-
-
-
- );
-}
-
-function CardBlock(props: CardProps) {
- const { chartType, title, count, increment, diff, chartData, loading } =
- props;
-
- return (
-
-
-
- {title}
-
- }
- loading={loading}
- value={count}
- extra={
-
- {loading ? (
-
- ) : (
-
- {diff}
- {increment ? : }
-
- )}
-
- }
- groupSeparator
- />
-
-
-
- {chartType === 'interval' && }
- {chartType === 'line' && }
-
-
-
- );
-}
-
-const cardInfo = [
- {
- key: 'userRetentionTrend',
- type: 'line',
- },
- {
- key: 'userRetention',
- type: 'interval',
- },
- {
- key: 'contentConsumptionTrend',
- type: 'line',
- },
- {
- key: 'contentConsumption',
- type: 'interval',
- },
-];
-function CardList() {
- const t = useLocale(locale);
- const [loading, setLoading] = useState(false);
- const [data, setData] = useState(
- cardInfo.map((item) => ({
- ...item,
- chartType: item.type,
- }))
- );
-
- const getData = async () => {
- const requestList = cardInfo.map(async (info) => {
- const { data } = await axios
- .get(`/api/multi-dimension/card?type=${info.type}`)
- .catch(() => ({ data: {} }));
- return {
- ...data,
- key: info.key,
- chartType: info.type,
- };
- });
-
- setLoading(true);
- const result = await Promise.all(requestList).finally(() =>
- setLoading(false)
- );
- setData(result);
- };
-
- useEffect(() => {
- getData();
- }, []);
-
- const formatData = useMemo(() => {
- return data.map((item) => ({
- ...item,
- title: t[`multiDAnalysis.cardList.${item.key}`],
- }));
- }, [t, data]);
-
- return (
-
- {formatData.map((item, index) => (
-
-
-
- ))}
-
- );
-}
-
-export default CardList;
diff --git a/src/pages/visualization/multi-dimension-data-analysis/data-overview.tsx b/src/pages/visualization/multi-dimension-data-analysis/data-overview.tsx
deleted file mode 100644
index f3b584b..0000000
--- a/src/pages/visualization/multi-dimension-data-analysis/data-overview.tsx
+++ /dev/null
@@ -1,108 +0,0 @@
-// 数据总览
-import React, { useEffect, useState, useMemo } from 'react';
-import {
- Card,
- Typography,
- Grid,
- Statistic,
- Skeleton,
-} from '@arco-design/web-react';
-import axios from 'axios';
-import {
- IconUser,
- IconEdit,
- IconHeart,
- IconThumbUp,
-} from '@arco-design/web-react/icon';
-import useLocale from '@/utils/useLocale';
-import locale from './locale';
-import styles from './style/data-overview.module.less';
-import MultiAreaLine from '@/components/Chart/multi-area-line';
-
-const { Title } = Typography;
-export default () => {
- const t = useLocale(locale);
- const [overview, setOverview] = useState([]);
- const [lineData, setLineData] = useState([]);
- const [loading, setLoading] = useState(false);
-
- const getData = async () => {
- setLoading(true);
- const { data } = await axios
- .get('/api/multi-dimension/overview')
- .finally(() => setLoading(false));
-
- const { overviewData, chartData } = data;
- setLineData(chartData);
- setOverview(overviewData);
- };
-
- useEffect(() => {
- getData();
- }, []);
-
- const formatedData = useMemo(() => {
- return [
- {
- title: t['multiDAnalysis.dataOverview.contentProduction'],
- icon: ,
- value: overview[0],
- background: 'rgb(var(--orange-2))',
- color: 'rgb(var(--orange-6))',
- },
- {
- title: t['multiDAnalysis.dataOverview.contentClicks'],
- icon: ,
- value: overview[1],
- background: 'rgb(var(--cyan-2))',
- color: 'rgb(var(--cyan-6))',
- },
- {
- title: t['multiDAnalysis.dataOverview.contextExposure'],
- value: overview[2],
- icon: ,
- background: 'rgb(var(--arcoblue-1))',
- color: 'rgb(var(--arcoblue-6))',
- },
- {
- title: t['multiDAnalysis.dataOverview.activeUsers'],
- value: overview[3],
- icon: ,
- background: 'rgb(var(--purple-1))',
- color: 'rgb(var(--purple-6))',
- },
- ];
- }, [t, overview]);
-
- return (
-
- {formatedData.map((item, index) => (
-
-
- {item.title}
-
-
- {item.icon}
-
- {loading ? (
-
- ) : (
-
- )}
-
-
-
- ))}
-
-
-
-
- );
-};
diff --git a/src/pages/visualization/multi-dimension-data-analysis/index.tsx b/src/pages/visualization/multi-dimension-data-analysis/index.tsx
deleted file mode 100644
index 1bd02fb..0000000
--- a/src/pages/visualization/multi-dimension-data-analysis/index.tsx
+++ /dev/null
@@ -1,119 +0,0 @@
-import React, { useState, useEffect } from 'react';
-import { Typography, Card, Grid, Space } from '@arco-design/web-react';
-import axios from 'axios';
-import useLocale from '@/utils/useLocale';
-import HorizontalInterval from '@/components/Chart/horizontal-interval';
-import AreaPolar from '@/components/Chart/area-polar';
-import FactMultiPie from '@/components/Chart/fact-multi-pie';
-import locale from './locale';
-import DataOverview from './data-overview';
-import CardList from './card-list';
-
-import './mock';
-
-const { Row, Col } = Grid;
-const { Title } = Typography;
-
-function DataAnalysis() {
- const t = useLocale(locale);
- const [loading, setLoading] = useState(false);
- const [interval, setInterval] = useState([]);
- const [polarLoading, setPolarLoading] = useState(false);
- const [polar, setPolar] = useState({ list: [], fields: [] });
- const [multiPieLoading, setMultiPieLoading] = useState(false);
- const [multiPie, setMultiPie] = useState([]);
-
- const getInterval = async () => {
- setLoading(true);
- const { data } = await axios
- .get('/api/multi-dimension/activity')
- .finally(() => {
- setLoading(false);
- });
- setInterval(data);
- };
-
- const getPolar = async () => {
- setPolarLoading(true);
- const { data } = await axios
- .get('/api/multi-dimension/polar')
- .finally(() => setPolarLoading(false));
-
- setPolar(data);
- };
-
- const getMultiPie = async () => {
- setMultiPieLoading(true);
- const { data } = await axios
- .get('/api/multi-dimension/content-source')
- .finally(() => {
- setMultiPieLoading(false);
- });
-
- setMultiPie(data);
- };
-
- useEffect(() => {
- getInterval();
- getPolar();
- getMultiPie();
- }, []);
-
- return (
-
-
-
-
-
- {t['multiDAnalysis.card.title.dataOverview']}
-
-
-
-
-
-
-
- {t['multiDAnalysis.card.title.todayActivity']}
-
-
-
-
-
- {t['multiDAnalysis.card.title.contentTheme']}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {t['multiDAnalysis.card.title.contentSource']}
-
-
-
-
-
-
- );
-}
-export default DataAnalysis;
diff --git a/src/pages/visualization/multi-dimension-data-analysis/locale/index.ts b/src/pages/visualization/multi-dimension-data-analysis/locale/index.ts
deleted file mode 100644
index 23b8c80..0000000
--- a/src/pages/visualization/multi-dimension-data-analysis/locale/index.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-const i18n = {
- 'en-US': {
- 'menu.visualization': 'Data Visualization',
- 'menu.visualization.multiDimensionDataAnalysis': 'Multi-D Analysis',
- 'multiDAnalysis.card.title.activeContributors': 'Active Contributors',
- 'multiDAnalysis.unit': 'times',
- 'multiDAnalysis.card.title.officeVisitors': 'Office Visitors',
- 'multiDAnalysis.card.title.downloads': 'Downloads',
- 'multiDAnalysis.card.title.dataOverview': 'Overview',
- 'multiDAnalysis.card.title.todayActivity':
- 'Today\'s Likes and Comments Statistics',
- 'multiDAnalysis.card.title.contentTheme': 'Content theme distribution',
- 'multiDAnalysis.card.title.contentSource': 'Content publishing source',
- 'multiDAnalysis.dataOverview.contentProduction': 'Content production',
- 'multiDAnalysis.dataOverview.contentClicks': 'Content clicks',
- 'multiDAnalysis.dataOverview.contextExposure': 'Content exposure',
- 'multiDAnalysis.dataOverview.activeUsers': 'Active users',
- 'multiDAnalysis.cardList.userRetentionTrend': 'User retention trends',
- 'multiDAnalysis.cardList.userRetention': 'User retention',
- 'multiDAnalysis.cardList.contentConsumptionTrend':
- 'Content consumption trends',
- 'multiDAnalysis.cardList.contentConsumption': 'Content consumption',
- },
- 'zh-CN': {
- 'menu.visualization': '数据可视化',
- 'menu.visualization.multiDimensionDataAnalysis': '多维数据分析',
- 'multiDAnalysis.card.title.officeVisitors': '官网访问量',
- 'multiDAnalysis.card.title.downloads': '下载量',
- 'multiDAnalysis.card.title.dataOverview': '数据总览',
- 'multiDAnalysis.card.title.todayActivity': '今日转赞评统计',
- 'multiDAnalysis.card.title.contentTheme': '内容题材分布',
- 'multiDAnalysis.card.title.contentSource': '内容发布来源',
- 'multiDAnalysis.dataOverview.contentProduction': '内容生产量',
- 'multiDAnalysis.dataOverview.contentClicks': '内容点击量',
- 'multiDAnalysis.dataOverview.contextExposure': '内容曝光量',
- 'multiDAnalysis.dataOverview.activeUsers': '活跃用户数',
- 'multiDAnalysis.cardList.userRetentionTrend': '用户留存趋势',
- 'multiDAnalysis.cardList.userRetention': '用户留存量',
- 'multiDAnalysis.cardList.contentConsumptionTrend': '内容消费趋势',
- 'multiDAnalysis.cardList.contentConsumption': '内容消费量',
- },
-};
-
-export default i18n;
diff --git a/src/pages/visualization/multi-dimension-data-analysis/mock/index.ts b/src/pages/visualization/multi-dimension-data-analysis/mock/index.ts
deleted file mode 100644
index 571949d..0000000
--- a/src/pages/visualization/multi-dimension-data-analysis/mock/index.ts
+++ /dev/null
@@ -1,134 +0,0 @@
-import Mock from 'mockjs';
-import dayjs from 'dayjs';
-import qs from 'query-string';
-import setupMock from '@/utils/setupMock';
-
-const legend = ['活跃用户数', '内容生产量', '内容点击量', '内容曝光量'];
-const count = [0, 600, 1000, 2000, 4000];
-const category = ['纯文本', '图文类', '视频类'];
-const getLineData = (name, index) => {
- const { list } = Mock.mock({
- 'list|10': [
- {
- 'id|+1': 1,
- time: function () {
- return dayjs().subtract(this.id, 'days').format('MM-DD');
- },
- count: () => Mock.Random.natural(count[index], count[index + 1]),
- name: name,
- },
- ],
- });
- return list.map((item) => {
- delete item.id;
- return item;
- });
-};
-
-const mockLine = (name) => {
- const result = new Array(12).fill(0).map(() => ({
- y: Mock.Random.natural(1000, 10000),
- }));
- return result
- .sort((a, b) => a.y - b.y)
- .map((item, index) => ({
- ...item,
- x: index,
- name,
- }));
-};
-
-const getContentSource = (name) => {
- const typeList = ['UGC原创', '国外网站', '转载文章', '行业报告', '其他'];
- const result = [];
- typeList.forEach((type) => {
- result.push({
- type,
- value: Mock.Random.natural(100, 10000),
- name,
- });
- });
- const total = result.reduce((a, b) => a + b.value, 0);
- return result.map((item) => ({
- ...item,
- value: Number((item.value / total).toFixed(2)),
- }));
-};
-
-setupMock({
- setup: () => {
- Mock.mock(new RegExp('/api/multi-dimension/overview'), () => {
- const { array: overviewData } = Mock.mock({
- 'array|4': [
- function () {
- return Mock.Random.natural(0, 10000);
- },
- ],
- });
- let list = [];
- legend.forEach(
- (name, index) => (list = list.concat(getLineData(name, index)))
- );
- return {
- overviewData,
- chartData: list,
- };
- });
-
- Mock.mock(new RegExp('/api/multi-dimension/activity'), () => {
- const { list } = Mock.mock({
- 'list|3': [
- {
- 'name|+1': ['分享量', '评论量', '点赞量'],
- count: () => Mock.Random.natural(1000, 10000),
- },
- ],
- });
- return list;
- });
-
- Mock.mock(new RegExp('/api/multi-dimension/polar'), () => {
- const items = ['国际', '娱乐', '体育', '财经', '科技', '其他'];
-
- const getCategoryCount = () => {
- const result = {};
- category.forEach((name) => {
- result[name] = Mock.Random.natural(0, 100);
- });
-
- return result;
- };
-
- return {
- list: items.map((item) => ({
- item,
- ...getCategoryCount(),
- })),
- fields: category,
- };
- });
-
- Mock.mock(new RegExp('/api/multi-dimension/card'), (params) => {
- const { type } = qs.parseUrl(params.url).query;
- return Mock.mock({
- count: () => Mock.Random.natural(1000, 10000),
- increment: () => Mock.Random.boolean(),
- diff: () => Mock.Random.natural(100, 1000),
- chartType: type,
- chartData: () => {
- return mockLine('类目1');
- },
- });
- });
-
- Mock.mock(new RegExp('/api/multi-dimension/content-source'), () => {
- const allList = category.map((name) => {
- return getContentSource(name).map((item) => ({
- ...item,
- category: name,
- }));
- });
- return allList.flat();
- });
- },
-});
diff --git a/src/pages/visualization/multi-dimension-data-analysis/style/card-block.module.less b/src/pages/visualization/multi-dimension-data-analysis/style/card-block.module.less
deleted file mode 100644
index 04060fc..0000000
--- a/src/pages/visualization/multi-dimension-data-analysis/style/card-block.module.less
+++ /dev/null
@@ -1,43 +0,0 @@
-.card {
- .statistic {
- display: flex;
- }
-
- .title {
- margin: 0;
- }
-
- :global(.arco-statistic-content) {
- margin-top: 12px;
- margin-bottom: 4px;
- display: flex;
-
- :global(.arco-statistic-value) {
- font-size: 24px;
- line-height: 28px;
- }
- }
-
- .diff {
- margin-left: 12px;
- line-height: 20px;
- color: rgb(var(--red-6));
- }
-
- .diff-increment {
- color: rgb(var(--green-6));
- }
-
- .tooltip {
- color: var(--color-text-1);
- padding: 10px 0px;
- background: var(--color-bg-5);
- }
-
- :global(.bizcharts-tooltip) {
- background: var(--color-bg-5) !important;
- color: var(--color-text-1) !important;
- box-shadow: 2px 2px 5px rgba(19, 78, 196, 0.1) !important;
- opacity: 1 !important;
- }
-}
diff --git a/src/pages/visualization/multi-dimension-data-analysis/style/data-overview.module.less b/src/pages/visualization/multi-dimension-data-analysis/style/data-overview.module.less
deleted file mode 100644
index e909603..0000000
--- a/src/pages/visualization/multi-dimension-data-analysis/style/data-overview.module.less
+++ /dev/null
@@ -1,39 +0,0 @@
-.card {
- :global(.arco-spin) {
- width: 100%;
- }
-
- :global(.arco-card-body) {
- padding-top: 6px;
- }
-
- h6 {
- font-size: 12px;
- margin-bottom: 8px;
- }
-
- .content {
- display: flex;
- line-height: 32px;
-
- &-icon {
- width: 32px;
- height: 32px;
- line-height: 32px;
- border-radius: 6px;
- margin-right: 8px;
- text-align: center;
- font-size: 18px;
- }
-
- :global(.arco-statistic) {
- line-height: normal;
- }
- }
-}
-
-.skeleton {
- :global(.arco-skeleton-text-row) {
- height: 32px;
- }
-}
diff --git a/src/pages/visualization/multi-dimension-data-analysis/utils/map.ts b/src/pages/visualization/multi-dimension-data-analysis/utils/map.ts
deleted file mode 100644
index 6711a8b..0000000
--- a/src/pages/visualization/multi-dimension-data-analysis/utils/map.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import * as turf from '@turf/turf';
-
-export function keepMapRatio(mapData, c) {
- if (mapData && turf) {
- // 获取数据外接矩形,计算宽高比
- const bbox = turf.bbox(mapData);
- const width = bbox[2] - bbox[0];
- const height = bbox[3] - bbox[1];
- const ratio = height / width;
-
- const cWidth = c.width;
- const cHeight = c.height;
- const cRatio = cHeight / cWidth;
-
- let scale: {
- x: {
- range: number[];
- };
- y: {
- range: number[];
- };
- };
-
- if (cRatio >= ratio) {
- const halfDisRatio = (cRatio - ratio) / 2 / cRatio;
- scale = {
- x: {
- range: [0, 1],
- },
- y: {
- range: [halfDisRatio, 1 - halfDisRatio],
- },
- };
- } else {
- const halfDisRatio = ((1 / cRatio - 1 / ratio) / 2) * cRatio;
- scale = {
- y: {
- range: [0, 1],
- },
- x: {
- range: [halfDisRatio, 1 - halfDisRatio],
- },
- };
- }
- const curScaleXRange = c.getScaleByField('x').range;
- const curScaleYRange = c.getScaleByField('y').range;
-
- if (
- curScaleXRange[0] !== scale.x.range[0] ||
- curScaleXRange[1] !== scale.x.range[1] ||
- curScaleYRange[0] !== scale.y.range[0] ||
- curScaleYRange[1] !== scale.y.range[1]
- ) {
- setTimeout(() => {
- c.scale(scale);
- c.render(true);
- }, 1);
- }
- }
-}
diff --git a/src/pages/welcome/code-block.tsx b/src/pages/welcome/code-block.tsx
deleted file mode 100644
index 279689f..0000000
--- a/src/pages/welcome/code-block.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Button, Tooltip, Message } from '@arco-design/web-react';
-import { IconCopy } from '@arco-design/web-react/icon';
-import clipboard from '@/utils/clipboard';
-import styles from './style/code-block.module.less';
-
-interface CodeBlockProps {
- code: string;
-}
-
-export default function CodeBlock(props: CodeBlockProps) {
- const { code } = props;
- return (
-
- {code}
-
- }
- onClick={() => {
- clipboard(code);
- Message.success('复制成功');
- }}
- />
-
-
- );
-}
diff --git a/src/pages/welcome/index.tsx b/src/pages/welcome/index.tsx
deleted file mode 100644
index 8a7257e..0000000
--- a/src/pages/welcome/index.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-import React from 'react';
-import { Alert, Card, Link, Typography, Tag } from '@arco-design/web-react';
-import { IconDoubleRight } from '@arco-design/web-react/icon';
-import { useSelector } from 'react-redux';
-import useLocale from '@/utils/useLocale';
-import locale from './locale';
-import CodeBlock from './code-block';
-import styles from './style/index.module.less';
-
-export default function Welcome() {
- const t = useLocale(locale);
- const userInfo = useSelector((state: any) => state.userInfo) || {};
- return (
-
-
-
- {t['welcome.title.welcome']}
-
-
- {userInfo.name}, {userInfo.email}
-
-
-
-
-
-
- 1. {t['welcome.step.title.pickup']}
-
-
- {t['welcome.step.content.pickup']}
-
- @arco-design/pro-pages-workplace
-
-
-
-
- 2. {t['welcome.step.title.install']}
-
- {t['welcome.step.content.install']}
-
-
-
- 3. {t['welcome.step.title.result']}
-
- {t['welcome.step.content.result']}
-
-
- {t['welcome.title.material']}
-
-
- {t['welcome.link.material-pro']}
-
-
-
-
- {t['welcome.link.material-all']}
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/src/pages/welcome/locale/index.ts b/src/pages/welcome/locale/index.ts
deleted file mode 100644
index b3a79b7..0000000
--- a/src/pages/welcome/locale/index.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-const i18n = {
- 'en-US': {
- 'welcome.title.welcome': 'Welcome',
- 'welcome.invite':
- 'Arco Cli commands can be used to install materials from the material market, and we sincerely invite you to experience it.',
- 'welcome.usage': 'Usage',
- 'welcome.step.title.pickup': 'Select materials from the material market',
- 'welcome.step.title.install': 'Install',
- 'welcome.step.title.result': 'Result',
- 'welcome.step.content.pickup':
- 'For example, if you want the workplace page of pro, you can get the package name of the material from the material details',
- 'welcome.step.content.install':
- 'After getting the package name, you can install the material through the following command.',
- 'welcome.step.content.result': 'Then, you get a workplace page easily.',
- 'welcome.title.material':
- 'For more materials, please check the following link',
- 'welcome.link.material-pro': 'Arco Design Pro material collection',
- 'welcome.link.material-all': 'All materials',
- },
- 'zh-CN': {
- 'welcome.title.welcome': '欢迎',
- 'welcome.invite': '通过 Arco Cli 命令可以安装物料市场的物料,诚邀您体验。',
- 'welcome.usage': '使用方式',
- 'welcome.step.title.pickup': '从物料市场选择物料',
- 'welcome.step.title.install': '安装物料',
- 'welcome.step.title.result': '成果',
- 'welcome.step.content.pickup':
- '例如您看中了 pro 的 workplace 页面,可以从物料详情中获得该物料的包名',
- 'welcome.step.content.install':
- '得到包名后,您就可以通过如下命令安装该物料',
- 'welcome.step.content.result': '这样您就能轻松获得一个 workplace 页面',
- 'welcome.title.material': '更多物料请查看以下链接',
- 'welcome.link.material-pro': 'Arco Design Pro 物料合集',
- 'welcome.link.material-all': '所有物料',
- },
-};
-
-export default i18n;
diff --git a/src/pages/welcome/style/code-block.module.less b/src/pages/welcome/style/code-block.module.less
deleted file mode 100644
index 91a2f23..0000000
--- a/src/pages/welcome/style/code-block.module.less
+++ /dev/null
@@ -1,14 +0,0 @@
-.code-block {
- color: var(--color-text-2);
- padding: 8px;
- background-color: var(--color-fill-1);
- width: fit-content;
-
- &-content {
- display: inline-block;
- }
-
- &-copy-btn {
- margin-left: 8px;
- }
-}
diff --git a/src/pages/welcome/style/index.module.less b/src/pages/welcome/style/index.module.less
deleted file mode 100644
index 3e09cba..0000000
--- a/src/pages/welcome/style/index.module.less
+++ /dev/null
@@ -1,4 +0,0 @@
-.header {
- background: var(--color-bg-2);
- padding: 20px;
-}
diff --git a/src/routes.ts b/src/routes.ts
index 17d36b4..5b9569c 100644
--- a/src/routes.ts
+++ b/src/routes.ts
@@ -1,5 +1,6 @@
import auth, { AuthParams } from '@/utils/authentication';
import { useEffect, useMemo, useState } from 'react';
+import Instance from '@/pages/instance';
export type IRoute = AuthParams & {
name: string;
@@ -13,151 +14,37 @@ export type IRoute = AuthParams & {
export const routes: IRoute[] = [
{
- name: 'menu.dashboard',
- key: 'dashboard',
- children: [
- {
- name: 'menu.dashboard.workplace',
- key: 'dashboard/workplace',
- },
- {
- name: 'tinyFlowTest',
- key: 'dashboard/tinyFlowTest',
- },
- {
- name: 'reactFlowTest',
- key: 'dashboard/reactFlowTest',
- },
- {
- name: 'menu.dashboard.monitor',
- key: 'dashboard/monitor',
- requiredPermissions: [
- { resource: 'menu.dashboard.monitor', actions: ['write'] },
- ],
- },
- ],
+ name: 'menu.dashboard.workplace',
+ key: 'dashboard/workplace'
},
{
- name: 'menu.visualization',
- key: 'visualization',
- children: [
- {
- name: 'menu.visualization.dataAnalysis',
- key: 'visualization/data-analysis',
- requiredPermissions: [
- { resource: 'menu.visualization.dataAnalysis', actions: ['read'] },
- ],
- },
- {
- name: 'menu.visualization.multiDimensionDataAnalysis',
- key: 'visualization/multi-dimension-data-analysis',
- requiredPermissions: [
- {
- resource: 'menu.visualization.dataAnalysis',
- actions: ['read', 'write'],
- },
- {
- resource: 'menu.visualization.multiDimensionDataAnalysis',
- actions: ['write'],
- },
- ],
- oneOfPerm: true,
- },
- ],
+ name: 'menu.scene',
+ key: 'scene'
},
{
- name: 'menu.list',
- key: 'list',
- children: [
- {
- name: 'menu.list.searchTable',
- key: 'list/search-table',
- },
- {
- name: 'menu.list.cardList',
- key: 'list/card',
- },
- ],
+ name: 'menu.application',
+ key: 'application'
},
{
- name: 'menu.form',
- key: 'form',
- children: [
- {
- name: 'menu.form.group',
- key: 'form/group',
- requiredPermissions: [
- { resource: 'menu.form.group', actions: ['read', 'write'] },
- ],
- },
- {
- name: 'menu.form.step',
- key: 'form/step',
- requiredPermissions: [
- { resource: 'menu.form.step', actions: ['read'] },
- ],
- },
- ],
+ name: 'menu.instance',
+ key: 'instance'
},
{
- name: 'menu.profile',
- key: 'profile',
- children: [
- {
- name: 'menu.profile.basic',
- key: 'profile/basic',
- },
- ],
+ name: 'menu.componentDevelopment',
+ key: 'componentDevelopment'
},
-
{
- name: 'menu.result',
- key: 'result',
- children: [
- {
- name: 'menu.result.success',
- key: 'result/success',
- breadcrumb: false,
- },
- {
- name: 'menu.result.error',
- key: 'result/error',
- breadcrumb: false,
- },
- ],
+ name: 'menu.componentLibrary',
+ key: 'componentLibrary'
},
{
- name: 'menu.exception',
- key: 'exception',
- children: [
- {
- name: 'menu.exception.403',
- key: 'exception/403',
- },
- {
- name: 'menu.exception.404',
- key: 'exception/404',
- },
- {
- name: 'menu.exception.500',
- key: 'exception/500',
- },
- ],
+ name: 'menu.compositeCompLibrary',
+ key: 'compositeCompLibrary'
},
{
- name: 'menu.user',
- key: 'user',
- children: [
- {
- name: 'menu.user.info',
- key: 'user/info',
- },
- {
- name: 'menu.user.setting',
- key: 'user/setting',
- },
- ],
- },
+ name: 'menu.componentMarket',
+ key: 'componentMarket'
+ }
];
export const getName = (path: string, routes) => {