@yinuo-ngm/server 1.0.15 → 1.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/app.js +3 -15
- package/lib/common/editor.js +2 -2
- package/lib/env.d.ts +1 -0
- package/lib/env.js +1 -0
- package/lib/plugins/error-handler.plugin.d.ts +2 -2
- package/lib/plugins/error-handler.plugin.js +97 -88
- package/lib/plugins/ws/topics/nginx.ws.js +2 -1
- package/lib/plugins/ws/topics/svn.ws.d.ts +2 -1
- package/lib/plugins/ws/topics/svn.ws.js +3 -2
- package/lib/plugins/ws/topics/syslog.ws.d.ts +1 -1
- package/lib/plugins/ws/topics/task.ws.d.ts +2 -1
- package/lib/plugins/ws/topics/task.ws.js +2 -1
- package/lib/plugins/ws/ws.context.d.ts +1 -1
- package/lib/plugins/ws/ws.plugin.js +4 -3
- package/lib/plugins/ws/ws.router.d.ts +2 -2
- package/lib/plugins/ws/ws.router.js +8 -7
- package/lib/routes/api-client/collection.routes.js +8 -6
- package/lib/routes/api-client/env.routes.js +4 -3
- package/lib/routes/api-client/history.routes.js +3 -2
- package/lib/routes/api-client/hub-token.routes.js +32 -10
- package/lib/routes/api-client/request.routes.js +7 -6
- package/lib/routes/api-client/send.routes.js +3 -2
- package/lib/routes/config.routes.js +5 -5
- package/lib/routes/hub.routes.js +10 -10
- package/lib/routes/index.js +2 -0
- package/lib/routes/nginx/nginx-lifecycle.routes.js +4 -0
- package/lib/routes/nginx/nginx-route.context.js +23 -7
- package/lib/routes/nginx/nginx-server.routes.js +158 -6
- package/lib/routes/node-version.routes.d.ts +2 -0
- package/lib/routes/node-version.routes.js +56 -0
- package/lib/routes/project.routes.js +14 -9
- package/lib/routes/rss.routes.js +3 -3
- package/lib/routes/sprite-browse.routes.js +21 -6
- package/lib/routes/sprite.routes.js +18 -12
- package/lib/routes/static-files.routes.js +21 -5
- package/lib/routes/svn.routes.js +5 -3
- package/lib/routes/system.routes.js +20 -1
- package/lib/routes/task.routes.js +10 -3
- package/package.json +13 -6
- package/www/3rdpartylicenses.txt +66 -118
- package/www/browser/chunk-2L7NUOMX.js +2 -0
- package/www/browser/chunk-2NZJ7CN2.js +20 -0
- package/www/browser/chunk-3CM4SKDO.js +15 -0
- package/www/browser/chunk-3I7BQCXS.js +1 -0
- package/www/browser/chunk-3M56F2S2.js +1 -0
- package/www/browser/chunk-3OHBKMAA.js +1 -0
- package/www/browser/chunk-3XNNQFWR.js +1 -0
- package/www/browser/chunk-4BRW6LCZ.js +4 -0
- package/www/browser/chunk-4LBSLURA.js +1 -0
- package/www/browser/chunk-4X42HB6N.js +2 -0
- package/www/browser/chunk-5DYX4DUX.js +11 -0
- package/www/browser/chunk-6SYVDN5L.js +1 -0
- package/www/browser/chunk-6YYNHZ2A.js +1 -0
- package/www/browser/chunk-75W3GVSO.js +1 -0
- package/www/browser/chunk-7U44RF5F.js +63 -0
- package/www/browser/chunk-AELTP6YN.js +1 -0
- package/www/browser/chunk-AMXRL4GR.js +1 -0
- package/www/browser/chunk-AV2ZODEH.js +1 -0
- package/www/browser/chunk-AZ6SIMYH.js +1 -0
- package/www/browser/chunk-B3C35ET3.js +2 -0
- package/www/browser/chunk-BTQIUVTQ.js +1 -0
- package/www/browser/chunk-CN5J4WNO.js +1 -0
- package/www/browser/chunk-D2ODDESN.js +1 -0
- package/www/browser/chunk-DE6E23ET.js +1 -0
- package/www/browser/chunk-DIJPUYIA.js +1 -0
- package/www/browser/chunk-DLGJD6YU.js +4 -0
- package/www/browser/chunk-EEDA5U4V.js +1 -0
- package/www/browser/chunk-FK6Z4HLL.js +1 -0
- package/www/browser/chunk-FL6GDGHW.js +1 -0
- package/www/browser/chunk-FXCG34QS.js +1 -0
- package/www/browser/chunk-H2USFIYR.js +1 -0
- package/www/browser/chunk-H5HGMOE6.js +1 -0
- package/www/browser/chunk-HB3HECPD.js +1 -0
- package/www/browser/chunk-HDNG236Q.js +1 -0
- package/www/browser/chunk-HFZLJHYR.js +1 -0
- package/www/browser/chunk-HJTXXSMC.js +1 -0
- package/www/browser/chunk-HUMCWAKJ.js +3 -0
- package/www/browser/chunk-IKB3EQCP.js +2 -0
- package/www/browser/chunk-K7PESFPY.js +1 -0
- package/www/browser/chunk-KRYMOHYF.js +2 -0
- package/www/browser/chunk-M4QRBV3K.js +1 -0
- package/www/browser/chunk-N2PELLMM.js +30 -0
- package/www/browser/chunk-ONXBYGIG.js +1 -0
- package/www/browser/chunk-OSBDR36P.js +1 -0
- package/www/browser/chunk-OZCK4XVV.js +1 -0
- package/www/browser/chunk-QJP5F735.js +1 -0
- package/www/browser/chunk-RGOYDY7H.js +1 -0
- package/www/browser/chunk-UJKK4A7Y.js +1 -0
- package/www/browser/chunk-WD2EKZQC.js +1 -0
- package/www/browser/chunk-WUA5JFDD.js +1 -0
- package/www/browser/chunk-XLFHB7RS.js +3 -0
- package/www/browser/chunk-YNW4HEJO.js +37 -0
- package/www/browser/chunk-ZTDLWBW5.js +1 -0
- package/www/browser/dark.css +1 -30433
- package/www/browser/default.css +1 -30149
- package/www/browser/index.html +3 -3
- package/www/browser/main-N64WJCHX.js +34 -0
- package/www/browser/scripts-U25HCVEI.js +6 -0
- package/www/browser/styles-ROAHD7MY.css +1 -0
- package/www/browser/add-widget-drawer.component.css.map +0 -7
- package/www/browser/advanced-editor.component.css.map +0 -7
- package/www/browser/api-client.component.css.map +0 -7
- package/www/browser/api-history-drawer.component.css.map +0 -7
- package/www/browser/app.css.map +0 -7
- package/www/browser/attachment-viewer.component.css.map +0 -7
- package/www/browser/auth-editor.component.css.map +0 -7
- package/www/browser/body-editor.component.css.map +0 -7
- package/www/browser/chunk-2YSUXBGC.js +0 -627
- package/www/browser/chunk-2YSUXBGC.js.map +0 -1
- package/www/browser/chunk-3G2GEOPV.js +0 -456
- package/www/browser/chunk-3G2GEOPV.js.map +0 -1
- package/www/browser/chunk-3L72DF3R.js +0 -1683
- package/www/browser/chunk-3L72DF3R.js.map +0 -1
- package/www/browser/chunk-3MCIETCQ.js +0 -8279
- package/www/browser/chunk-3MCIETCQ.js.map +0 -1
- package/www/browser/chunk-665WC4RU.js +0 -5383
- package/www/browser/chunk-665WC4RU.js.map +0 -1
- package/www/browser/chunk-6QMSEZPT.js +0 -10044
- package/www/browser/chunk-6QMSEZPT.js.map +0 -1
- package/www/browser/chunk-6TBQERYX.js +0 -280
- package/www/browser/chunk-6TBQERYX.js.map +0 -1
- package/www/browser/chunk-6UW4MRJZ.js +0 -43
- package/www/browser/chunk-6UW4MRJZ.js.map +0 -7
- package/www/browser/chunk-6XUMIL3W.js +0 -5495
- package/www/browser/chunk-6XUMIL3W.js.map +0 -1
- package/www/browser/chunk-724YOJI3.js +0 -903
- package/www/browser/chunk-724YOJI3.js.map +0 -1
- package/www/browser/chunk-766T7YES.js +0 -437
- package/www/browser/chunk-766T7YES.js.map +0 -1
- package/www/browser/chunk-7FC7DN65.js +0 -728
- package/www/browser/chunk-7FC7DN65.js.map +0 -1
- package/www/browser/chunk-APGQRYWX.js +0 -156
- package/www/browser/chunk-APGQRYWX.js.map +0 -7
- package/www/browser/chunk-AQHSGTHS.js +0 -1960
- package/www/browser/chunk-AQHSGTHS.js.map +0 -1
- package/www/browser/chunk-CTOEAJQK.js +0 -40
- package/www/browser/chunk-CTOEAJQK.js.map +0 -7
- package/www/browser/chunk-DEGQJKKZ.js +0 -409
- package/www/browser/chunk-DEGQJKKZ.js.map +0 -1
- package/www/browser/chunk-DIJX2663.js +0 -1166
- package/www/browser/chunk-DIJX2663.js.map +0 -1
- package/www/browser/chunk-E4XD4GLT.js +0 -427
- package/www/browser/chunk-E4XD4GLT.js.map +0 -1
- package/www/browser/chunk-EQOY6A3M.js +0 -212
- package/www/browser/chunk-EQOY6A3M.js.map +0 -1
- package/www/browser/chunk-ETTBRXVA.js +0 -2643
- package/www/browser/chunk-ETTBRXVA.js.map +0 -1
- package/www/browser/chunk-FLSUSPBD.js +0 -5569
- package/www/browser/chunk-FLSUSPBD.js.map +0 -1
- package/www/browser/chunk-FZNHBEAZ.js +0 -102
- package/www/browser/chunk-FZNHBEAZ.js.map +0 -1
- package/www/browser/chunk-GJC7CZIJ.js +0 -361
- package/www/browser/chunk-GJC7CZIJ.js.map +0 -7
- package/www/browser/chunk-GMCNMOTD.js +0 -844
- package/www/browser/chunk-GMCNMOTD.js.map +0 -7
- package/www/browser/chunk-H43HGCRW.js +0 -198
- package/www/browser/chunk-H43HGCRW.js.map +0 -7
- package/www/browser/chunk-J447GBHM.js +0 -160
- package/www/browser/chunk-J447GBHM.js.map +0 -1
- package/www/browser/chunk-JN3VOWP7.js +0 -384
- package/www/browser/chunk-JN3VOWP7.js.map +0 -1
- package/www/browser/chunk-KSHAGY2M.js +0 -399
- package/www/browser/chunk-KSHAGY2M.js.map +0 -7
- package/www/browser/chunk-KV72AKOD.js +0 -59
- package/www/browser/chunk-KV72AKOD.js.map +0 -7
- package/www/browser/chunk-LAVMY2SJ.js +0 -26
- package/www/browser/chunk-LAVMY2SJ.js.map +0 -7
- package/www/browser/chunk-LLRVGHG5.js +0 -73
- package/www/browser/chunk-LLRVGHG5.js.map +0 -7
- package/www/browser/chunk-LPME4AJ3.js +0 -196
- package/www/browser/chunk-LPME4AJ3.js.map +0 -1
- package/www/browser/chunk-LVPSURVU.js +0 -4615
- package/www/browser/chunk-LVPSURVU.js.map +0 -1
- package/www/browser/chunk-MMPO7QLO.js +0 -4146
- package/www/browser/chunk-MMPO7QLO.js.map +0 -7
- package/www/browser/chunk-O7LB6VFM.js +0 -1953
- package/www/browser/chunk-O7LB6VFM.js.map +0 -1
- package/www/browser/chunk-P5CWA4FO.js +0 -685
- package/www/browser/chunk-P5CWA4FO.js.map +0 -1
- package/www/browser/chunk-RBWIWNTL.js +0 -203
- package/www/browser/chunk-RBWIWNTL.js.map +0 -7
- package/www/browser/chunk-RUXJCM3V.js +0 -26199
- package/www/browser/chunk-RUXJCM3V.js.map +0 -1
- package/www/browser/chunk-S77VVYUZ.js +0 -168
- package/www/browser/chunk-S77VVYUZ.js.map +0 -1
- package/www/browser/chunk-SCXPYFOB.js +0 -4316
- package/www/browser/chunk-SCXPYFOB.js.map +0 -1
- package/www/browser/chunk-SS73S33S.js +0 -471
- package/www/browser/chunk-SS73S33S.js.map +0 -7
- package/www/browser/chunk-T6UAOWNP.js +0 -600
- package/www/browser/chunk-T6UAOWNP.js.map +0 -1
- package/www/browser/chunk-TEW4MY4J.js +0 -148
- package/www/browser/chunk-TEW4MY4J.js.map +0 -7
- package/www/browser/chunk-TVORF3SF.js +0 -82
- package/www/browser/chunk-TVORF3SF.js.map +0 -7
- package/www/browser/chunk-UAN42EUZ.js +0 -2147
- package/www/browser/chunk-UAN42EUZ.js.map +0 -1
- package/www/browser/chunk-ULOHDK7Y.js +0 -1
- package/www/browser/chunk-ULOHDK7Y.js.map +0 -7
- package/www/browser/chunk-UYJ3FVRV.js +0 -3978
- package/www/browser/chunk-UYJ3FVRV.js.map +0 -1
- package/www/browser/chunk-VXHZMSDM.js +0 -5509
- package/www/browser/chunk-VXHZMSDM.js.map +0 -1
- package/www/browser/chunk-VYNQPZQO.js +0 -281
- package/www/browser/chunk-VYNQPZQO.js.map +0 -1
- package/www/browser/chunk-W3J23PZI.js +0 -9213
- package/www/browser/chunk-W3J23PZI.js.map +0 -1
- package/www/browser/chunk-W5HGHCQT.js +0 -1642
- package/www/browser/chunk-W5HGHCQT.js.map +0 -7
- package/www/browser/chunk-XF5H7E4L.js +0 -4723
- package/www/browser/chunk-XF5H7E4L.js.map +0 -1
- package/www/browser/chunk-XNFNEBMY.js +0 -398
- package/www/browser/chunk-XNFNEBMY.js.map +0 -7
- package/www/browser/chunk-XQY5SPGI.js +0 -30811
- package/www/browser/chunk-XQY5SPGI.js.map +0 -1
- package/www/browser/chunk-Y7JBZHNK.js +0 -514
- package/www/browser/chunk-Y7JBZHNK.js.map +0 -1
- package/www/browser/chunk-YWHRP4X3.js +0 -406
- package/www/browser/chunk-YWHRP4X3.js.map +0 -1
- package/www/browser/chunk-Z7FJIV62.js +0 -95
- package/www/browser/chunk-Z7FJIV62.js.map +0 -7
- package/www/browser/chunk-ZBZHXS46.js +0 -1674
- package/www/browser/chunk-ZBZHXS46.js.map +0 -1
- package/www/browser/chunk-ZZA5NVAI.js +0 -735
- package/www/browser/chunk-ZZA5NVAI.js.map +0 -1
- package/www/browser/collection-modal.component.css.map +0 -7
- package/www/browser/collection-tree-item.component.css.map +0 -7
- package/www/browser/collection-tree.component.css.map +0 -7
- package/www/browser/config-change-bar-component.css.map +0 -7
- package/www/browser/config-item-component.css.map +0 -7
- package/www/browser/config-nav-component.css.map +0 -7
- package/www/browser/config-section-component.css.map +0 -7
- package/www/browser/create-summary-aside.component.css.map +0 -7
- package/www/browser/curl-actions.component.css.map +0 -7
- package/www/browser/dark.css.map +0 -7
- package/www/browser/dashboard-canvas.component.css.map +0 -7
- package/www/browser/dashboard.component.css.map +0 -7
- package/www/browser/default.css.map +0 -7
- package/www/browser/detail-item-card.component.css.map +0 -7
- package/www/browser/ellipsis-text.component.css.map +0 -7
- package/www/browser/env-modal.component.css.map +0 -7
- package/www/browser/env-picker.component.css.map +0 -7
- package/www/browser/feedback.component.css.map +0 -7
- package/www/browser/fs-explorer.component.css.map +0 -7
- package/www/browser/git-import-modal.component.css.map +0 -7
- package/www/browser/hub-v2-personal-token-modal.component.css.map +0 -7
- package/www/browser/issue-action-area.component.css.map +0 -7
- package/www/browser/issue-add-participants-dialog.component.css.map +0 -7
- package/www/browser/issue-assign-dialog.component.css.map +0 -7
- package/www/browser/issue-attachment-area.component.css.map +0 -7
- package/www/browser/issue-base-info-area.component.css.map +0 -7
- package/www/browser/issue-branches.component.css.map +0 -7
- package/www/browser/issue-close-dialog.component.css.map +0 -7
- package/www/browser/issue-collaborators-panel.component.css.map +0 -7
- package/www/browser/issue-comment-editor.component.css.map +0 -7
- package/www/browser/issue-create-branch-dialog.component.css.map +0 -7
- package/www/browser/issue-description-area.component.css.map +0 -7
- package/www/browser/issue-detail.component.css.map +0 -7
- package/www/browser/issue-resolve-dialog.component.css.map +0 -7
- package/www/browser/issue-start-own-branch-dialog.component.css.map +0 -7
- package/www/browser/issues-list-table.component.css.map +0 -7
- package/www/browser/issues.component.css.map +0 -7
- package/www/browser/kill-port-widget.component.css.map +0 -7
- package/www/browser/kv-table.component.css.map +0 -7
- package/www/browser/layout-footer.component.css.map +0 -7
- package/www/browser/layout-header.component.css.map +0 -7
- package/www/browser/layout-menu.component.css.map +0 -7
- package/www/browser/layout-project-nav.component.css.map +0 -7
- package/www/browser/layout-sidebar.component.css.map +0 -7
- package/www/browser/layout.component.css.map +0 -7
- package/www/browser/less-viewport-component.css.map +0 -7
- package/www/browser/main.js +0 -1872
- package/www/browser/main.js.map +0 -1
- package/www/browser/markdown-viewer.component.css.map +0 -7
- package/www/browser/news-feed-widget.component.css.map +0 -7
- package/www/browser/ng-devtool.component.css.map +0 -7
- package/www/browser/nginx-config-editor.component.css.map +0 -7
- package/www/browser/nginx-log-viewer.component.css.map +0 -7
- package/www/browser/nginx-secondary-logs-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-perf-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-settings-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-ssl-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-test-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-traffic-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-upstream-tab.component.css.map +0 -7
- package/www/browser/nginx-section-card.component.css.map +0 -7
- package/www/browser/nginx-server-drawer.component.css.map +0 -7
- package/www/browser/nginx-server-list.component.css.map +0 -7
- package/www/browser/nginx-stat-card.component.css.map +0 -7
- package/www/browser/nginx.component.css.map +0 -7
- package/www/browser/page-layout.component.css.map +0 -7
- package/www/browser/pick-workspace-modal.component.css.map +0 -7
- package/www/browser/polyfills.js +0 -26584
- package/www/browser/polyfills.js.map +0 -7
- package/www/browser/project-conf.component.css.map +0 -7
- package/www/browser/project-create-modal.component.css.map +0 -7
- package/www/browser/project-create.component.css.map +0 -7
- package/www/browser/project-deps.component.css.map +0 -7
- package/www/browser/project-edit-modal.component.css.map +0 -7
- package/www/browser/project-import.component.css.map +0 -7
- package/www/browser/project-item-popover.component.css.map +0 -7
- package/www/browser/project-item.component.css.map +0 -7
- package/www/browser/project-list.component.css.map +0 -7
- package/www/browser/projects.component.css.map +0 -7
- package/www/browser/quick-task-widget.component.css.map +0 -7
- package/www/browser/rd-action-area.component.css.map +0 -7
- package/www/browser/rd-advance-stage-dialog.component.css.map +0 -7
- package/www/browser/rd-block-dialog.component.css.map +0 -7
- package/www/browser/rd-create-dialog.component.css.map +0 -7
- package/www/browser/rd-detail.component.css.map +0 -7
- package/www/browser/rd-item-card.component.css.map +0 -7
- package/www/browser/rd-list-board.component.css.map +0 -7
- package/www/browser/rd-list-table.component.css.map +0 -7
- package/www/browser/rd.component.css.map +0 -7
- package/www/browser/request-collections.component.css.map +0 -7
- package/www/browser/request-editor.component.css.map +0 -7
- package/www/browser/request-list-item.component.css.map +0 -7
- package/www/browser/request-list.component.css.map +0 -7
- package/www/browser/request-tabs-bar.component.css.map +0 -7
- package/www/browser/request-tabs.component.css.map +0 -7
- package/www/browser/request-urlbar.component.css.map +0 -7
- package/www/browser/response-viewer.component.css.map +0 -7
- package/www/browser/scripts.js +0 -245
- package/www/browser/scripts.js.map +0 -7
- package/www/browser/setting.component.css.map +0 -7
- package/www/browser/sprite-conf-modal.component.css.map +0 -7
- package/www/browser/sprite-icons-panel-component.css.map +0 -7
- package/www/browser/sprite-images-panel-component.css.map +0 -7
- package/www/browser/sprite-result-tabs.component.css.map +0 -7
- package/www/browser/sprite-viewport-component.css.map +0 -7
- package/www/browser/sprite.component.css.map +0 -7
- package/www/browser/step-advance.component.css.map +0 -7
- package/www/browser/step-basic.component.css.map +0 -7
- package/www/browser/step-config.component.css.map +0 -7
- package/www/browser/step-features.component.css.map +0 -7
- package/www/browser/step-preset.component.css.map +0 -7
- package/www/browser/step-summary-aside.component.css.map +0 -7
- package/www/browser/styles.css +0 -258
- package/www/browser/styles.css.map +0 -7
- package/www/browser/system-log.component.css.map +0 -7
- package/www/browser/task-actions.component.css.map +0 -7
- package/www/browser/task-console.component.css.map +0 -7
- package/www/browser/task-header.component.css.map +0 -7
- package/www/browser/task-list.component.css.map +0 -7
- package/www/browser/tasks.component.css.map +0 -7
- package/www/browser/terminal-view.component.css.map +0 -7
- package/www/browser/welcome-widget.component.css.map +0 -7
- package/www/browser/widget-base.component.css.map +0 -7
- package/www/browser/widget-host.component.css.map +0 -7
|
@@ -1,1642 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
NzStepsModule
|
|
3
|
-
} from "./chunk-3G2GEOPV.js";
|
|
4
|
-
import "./chunk-T6UAOWNP.js";
|
|
5
|
-
import {
|
|
6
|
-
NzTabsModule
|
|
7
|
-
} from "./chunk-O7LB6VFM.js";
|
|
8
|
-
import {
|
|
9
|
-
NzFormModule
|
|
10
|
-
} from "./chunk-P5CWA4FO.js";
|
|
11
|
-
import {
|
|
12
|
-
FsExplorerApiService,
|
|
13
|
-
FsExplorerComponent,
|
|
14
|
-
FsExplorerService,
|
|
15
|
-
ProjectApiService,
|
|
16
|
-
ProjectStateService
|
|
17
|
-
} from "./chunk-GMCNMOTD.js";
|
|
18
|
-
import {
|
|
19
|
-
NzSwitchModule
|
|
20
|
-
} from "./chunk-6TBQERYX.js";
|
|
21
|
-
import {
|
|
22
|
-
NzDrawerModule
|
|
23
|
-
} from "./chunk-7FC7DN65.js";
|
|
24
|
-
import {
|
|
25
|
-
NZ_MODAL_DATA,
|
|
26
|
-
NzModalModule,
|
|
27
|
-
NzModalRef,
|
|
28
|
-
NzModalService
|
|
29
|
-
} from "./chunk-FLSUSPBD.js";
|
|
30
|
-
import {
|
|
31
|
-
Clipboard
|
|
32
|
-
} from "./chunk-LPME4AJ3.js";
|
|
33
|
-
import {
|
|
34
|
-
NzRadioModule
|
|
35
|
-
} from "./chunk-JN3VOWP7.js";
|
|
36
|
-
import {
|
|
37
|
-
NzCheckboxModule
|
|
38
|
-
} from "./chunk-766T7YES.js";
|
|
39
|
-
import "./chunk-S77VVYUZ.js";
|
|
40
|
-
import "./chunk-ULOHDK7Y.js";
|
|
41
|
-
import {
|
|
42
|
-
NzSpinModule
|
|
43
|
-
} from "./chunk-EQOY6A3M.js";
|
|
44
|
-
import {
|
|
45
|
-
NzTagModule
|
|
46
|
-
} from "./chunk-J447GBHM.js";
|
|
47
|
-
import "./chunk-ZBZHXS46.js";
|
|
48
|
-
import "./chunk-KSHAGY2M.js";
|
|
49
|
-
import "./chunk-VXHZMSDM.js";
|
|
50
|
-
import {
|
|
51
|
-
TaskStateService,
|
|
52
|
-
TaskStreamService
|
|
53
|
-
} from "./chunk-SS73S33S.js";
|
|
54
|
-
import {
|
|
55
|
-
NzCardModule
|
|
56
|
-
} from "./chunk-ZZA5NVAI.js";
|
|
57
|
-
import {
|
|
58
|
-
NzEmptyModule,
|
|
59
|
-
NzSelectModule
|
|
60
|
-
} from "./chunk-ETTBRXVA.js";
|
|
61
|
-
import {
|
|
62
|
-
NzGridModule,
|
|
63
|
-
NzPopoverModule,
|
|
64
|
-
TerminalViewComponent
|
|
65
|
-
} from "./chunk-6QMSEZPT.js";
|
|
66
|
-
import {
|
|
67
|
-
TaskRuntimeStore
|
|
68
|
-
} from "./chunk-RBWIWNTL.js";
|
|
69
|
-
import {
|
|
70
|
-
NzBadgeModule
|
|
71
|
-
} from "./chunk-DEGQJKKZ.js";
|
|
72
|
-
import "./chunk-TEW4MY4J.js";
|
|
73
|
-
import "./chunk-APGQRYWX.js";
|
|
74
|
-
import {
|
|
75
|
-
UiNotifierService
|
|
76
|
-
} from "./chunk-2YSUXBGC.js";
|
|
77
|
-
import {
|
|
78
|
-
FormsModule,
|
|
79
|
-
NzButtonModule,
|
|
80
|
-
NzIconModule,
|
|
81
|
-
NzInputModule,
|
|
82
|
-
NzSpaceModule,
|
|
83
|
-
NzTooltipDirective,
|
|
84
|
-
NzTooltipModule
|
|
85
|
-
} from "./chunk-RUXJCM3V.js";
|
|
86
|
-
import "./chunk-VYNQPZQO.js";
|
|
87
|
-
import {
|
|
88
|
-
Router,
|
|
89
|
-
RouterModule
|
|
90
|
-
} from "./chunk-665WC4RU.js";
|
|
91
|
-
import {
|
|
92
|
-
CommonModule
|
|
93
|
-
} from "./chunk-3MCIETCQ.js";
|
|
94
|
-
import {
|
|
95
|
-
ChangeDetectionStrategy,
|
|
96
|
-
Component,
|
|
97
|
-
EventEmitter,
|
|
98
|
-
Injectable,
|
|
99
|
-
Input,
|
|
100
|
-
NgModule,
|
|
101
|
-
Output,
|
|
102
|
-
Subject,
|
|
103
|
-
Subscription,
|
|
104
|
-
ViewChild,
|
|
105
|
-
__decorate,
|
|
106
|
-
__spreadProps,
|
|
107
|
-
__spreadValues,
|
|
108
|
-
computed,
|
|
109
|
-
debounceTime,
|
|
110
|
-
distinctUntilChanged,
|
|
111
|
-
effect,
|
|
112
|
-
filter,
|
|
113
|
-
first,
|
|
114
|
-
firstValueFrom,
|
|
115
|
-
inject,
|
|
116
|
-
model,
|
|
117
|
-
of,
|
|
118
|
-
signal,
|
|
119
|
-
switchMap,
|
|
120
|
-
takeUntil,
|
|
121
|
-
timeout
|
|
122
|
-
} from "./chunk-XQY5SPGI.js";
|
|
123
|
-
|
|
124
|
-
// angular:jit:style:inline:src\app\pages\projects\projects.component.ts;CiAgICAucGFnZXsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGhlaWdodDoxMDAlOyB9CiAgICAuaGVhZGVyewogICAgICBkaXNwbGF5OmZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOmNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OmNlbnRlcjsKICAgICAgZmxleDowIDAgYXV0bzsKICAgICAgcGFkZGluZzoxNnB4IDA7CiAgICAgIGgyewogICAgICAgIG1hcmdpbjowOwogICAgICB9CiAgICB9CiAgICBuei10YWJzLnRhYnMtY29udGFpbmVyewogICAgICBmbGV4OjEgMSBhdXRvOwogICAgICBoZWlnaHQ6MDsKICAgICAgJjo6bmctZGVlcCAuYW50LXRhYnMtY29udGVudHsKICAgICAgICAgIGhlaWdodDoxMDAlOwogICAgICAgICAgLmFudC10YWJzLXRhYnBhbmV7CiAgICAgICAgICAgIGhlaWdodDoxMDAlOwogICAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAudG9vbGJhciBpbnB1dHsgZmxleDoxOyB9CiAgICAuY3VycmVudHsgbWFyZ2luOjEwcHggMDsgb3BhY2l0eTouNzU7IH0KICA=
|
|
125
|
-
var projects_component_default = "/* angular:styles/component:less;c888d95f0f1c03d48acbd77e7a69222f632f71519933c044ef57049f59437e4f;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\projects.component.ts */\n.page {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.header {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n padding: 16px 0;\n}\n.header h2 {\n margin: 0;\n}\nnz-tabs.tabs-container {\n flex: 1 1 auto;\n height: 0;\n}\nnz-tabs.tabs-container::ng-deep .ant-tabs-content {\n height: 100%;\n}\nnz-tabs.tabs-container::ng-deep .ant-tabs-content .ant-tabs-tabpane {\n height: 100%;\n}\n.toolbar input {\n flex: 1;\n}\n.current {\n margin: 10px 0;\n opacity: 0.75;\n}\n/*# sourceMappingURL=projects.component.css.map */\n";
|
|
126
|
-
|
|
127
|
-
// angular:jit:style:inline:src\app\pages\projects\project-create\project-create.component.ts;CiAgICAucGFnZSB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIC5leHBsb3Jlci1jb250YWluZXIgewogICAgICAgIGZsZXg6IDEgMSBhdXRvOwogICAgICAgIGhlaWdodDogMDsKICAgICAgfQogICAgICAuYWN0aW9ucy1iYXIgewogICAgICAgIGZsZXg6IDAgMCBhdXRvOwogICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CiAgICB9CiAgICA=
|
|
128
|
-
var project_create_component_default = "/* angular:styles/component:less;003575e58b854dd1fdaf850e4326fd39c8526898617c02cd1a264a93e9dd8880;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\project-create\\project-create.component.ts */\n.page {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.page .explorer-container {\n flex: 1 1 auto;\n height: 0;\n}\n.page .actions-bar {\n flex: 0 0 auto;\n padding: 16px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n/*# sourceMappingURL=project-create.component.css.map */\n";
|
|
129
|
-
|
|
130
|
-
// angular:jit:style:inline:src\app\pages\projects\project-create\project-create-modal.component.ts;Ci5jb250ZW50IHsKICBkaXNwbGF5OiBncmlkOwogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDM2MHB4OwogIGdhcDogMTZweDsKICBtYXJnaW4tdG9wOiAxNnB4Owp9CgoubWFpbiB7CiAgbWluLWhlaWdodDogNDIwcHg7Cn0KCi5hY3Rpb25zIHsKICBkaXNwbGF5OiBmbGV4OwogIGdhcDogOHB4OwogIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgbWFyZ2luLXRvcDogMThweDsKfQoKLmFzaWRlIHsKICBwb3NpdGlvbjogc3RpY2t5OwogIHRvcDogMTZweDsKICBoZWlnaHQ6IGZpdC1jb250ZW50Owp9CiAgICA=
|
|
131
|
-
var project_create_modal_component_default = "/* angular:styles/component:less;b740667e2965cfbb9a634af2a88325b1f382881a4d1d8f0cbbcd4fc192f0d251;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\project-create\\project-create-modal.component.ts */\n.content {\n display: grid;\n grid-template-columns: 1fr 360px;\n gap: 16px;\n margin-top: 16px;\n}\n.main {\n min-height: 420px;\n}\n.actions {\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n margin-top: 18px;\n}\n.aside {\n position: sticky;\n top: 16px;\n height: fit-content;\n}\n/*# sourceMappingURL=project-create-modal.component.css.map */\n";
|
|
132
|
-
|
|
133
|
-
// angular:jit:style:inline:src\app\pages\projects\components\create-summary-aside.component.ts;CiAgICAuaXRlbSB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IGdhcDogMTBweDsgcGFkZGluZzogNnB4IDA7YWxpZ24taXRlbXM6IGNlbnRlcjsgfQogICAgLmsgeyBvcGFjaXR5OiAuNzsgd2lkdGg6IDkwcHg7Zm9udC1zaXplOiAxNHB4OyB9CiAgICAudiB7IHRleHQtYWxpZ246IHJpZ2h0OyBmbGV4OiAxO292ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CiAgICAubW9ubyB7IGZvbnQtZmFtaWx5OiB1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkxpYmVyYXRpb24gTW9ubyIsIG1vbm9zcGFjZTsgd29yZC1icmVhazogYnJlYWstYWxsOyB9CiAgICAuc2VwIHsgaGVpZ2h0OiAxcHg7IGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjA2KTsgbWFyZ2luOiAxMHB4IDA7IH0KICAgIC50YWcgeyBtYXJnaW4tdG9wOiA4cHg7IHRleHQtYWxpZ246IHJpZ2h0OyB9CiAgICAud2FybiB7IG1hcmdpbi10b3A6IDEwcHg7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICNkNDZiMDg7IH0KICA=
|
|
134
|
-
var create_summary_aside_component_default = '/* angular:styles/component:less;b9ffde9aa18883857097dda339cdf9d1c94b1bdcae063459df7d83fbab96d96c;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\components\\create-summary-aside.component.ts */\n.item {\n display: flex;\n justify-content: space-between;\n gap: 10px;\n padding: 6px 0;\n align-items: center;\n}\n.k {\n opacity: 0.7;\n width: 90px;\n font-size: 14px;\n}\n.v {\n text-align: right;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.mono {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n monospace;\n word-break: break-all;\n}\n.sep {\n height: 1px;\n background: rgba(0, 0, 0, 0.06);\n margin: 10px 0;\n}\n.tag {\n margin-top: 8px;\n text-align: right;\n}\n.warn {\n margin-top: 10px;\n font-size: 12px;\n color: #d46b08;\n}\n/*# sourceMappingURL=create-summary-aside.component.css.map */\n';
|
|
135
|
-
|
|
136
|
-
// src/app/pages/projects/components/create-summary-aside.component.ts
|
|
137
|
-
var CreateSummaryAsideComponent = class CreateSummaryAsideComponent2 {
|
|
138
|
-
draft;
|
|
139
|
-
chunk = "";
|
|
140
|
-
clipboard = inject(Clipboard);
|
|
141
|
-
term;
|
|
142
|
-
isDrawerOpen = false;
|
|
143
|
-
isCreating = model(false);
|
|
144
|
-
copyied = false;
|
|
145
|
-
ngOnChanges(changes) {
|
|
146
|
-
if (changes["chunk"] && changes["chunk"].currentValue && this.term) {
|
|
147
|
-
this.term.write(this.chunk);
|
|
148
|
-
}
|
|
149
|
-
if (changes["isCreating"] && changes["isCreating"].currentValue === true) {
|
|
150
|
-
this.isDrawerOpen = true;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
copy() {
|
|
154
|
-
const text = this.draft.repoUrl || "";
|
|
155
|
-
this.clipboard.copy(text);
|
|
156
|
-
this.copyied = true;
|
|
157
|
-
setTimeout(() => {
|
|
158
|
-
this.copyied = false;
|
|
159
|
-
}, 2e3);
|
|
160
|
-
}
|
|
161
|
-
static propDecorators = {
|
|
162
|
-
draft: [{ type: Input, args: [{ required: true }] }],
|
|
163
|
-
chunk: [{ type: Input }],
|
|
164
|
-
term: [{ type: ViewChild, args: [TerminalViewComponent] }],
|
|
165
|
-
isCreating: [{ type: Input, args: [{ isSignal: true, alias: "isCreating", required: false }] }, { type: Output, args: ["isCreatingChange"] }]
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
CreateSummaryAsideComponent = __decorate([
|
|
169
|
-
Component({
|
|
170
|
-
standalone: true,
|
|
171
|
-
selector: "app-create-summary-aside",
|
|
172
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
173
|
-
imports: [CommonModule, NzCardModule, NzTagModule, NzTooltipModule, NzIconModule, NzButtonModule, TerminalViewComponent, NzDrawerModule],
|
|
174
|
-
template: `
|
|
175
|
-
<!--[nzExtra]="isCreating() ? logActions : undefined"-->
|
|
176
|
-
<nz-card nzTitle="\u6458\u8981" nzSize="small" [nzExtra]="logActions">
|
|
177
|
-
<div class="item"><span class="k">\u540D\u79F0</span><span class="v">{{draft.name || '-'}}</span></div>
|
|
178
|
-
<div class="item"><span class="k">\u8DEF\u5F84</span><span class="v mono">{{draft.rootPath || '-'}}</span></div>
|
|
179
|
-
<div class="item"><span class="k">\u5305\u7BA1\u7406\u5668</span><span class="v">{{draft.packageManager}}</span></div>
|
|
180
|
-
<div class="item">
|
|
181
|
-
<span class="k">Git \u8FDC\u7A0B\u4ED3\u5E93</span>
|
|
182
|
-
<span class="v" [nz-tooltip]="draft.repoUrl||''">{{draft.repoUrl || '-'}}</span>
|
|
183
|
-
@if(draft.repoUrl){
|
|
184
|
-
<button nz-button nzType="text" nzSize="small" (click)="copy()" [nz-tooltip]="copyied ? '\u5DF2\u590D\u5236' : '\u590D\u5236'">
|
|
185
|
-
<nz-icon nzType="copy" nzTheme="outline" />
|
|
186
|
-
</button>
|
|
187
|
-
}
|
|
188
|
-
</div>
|
|
189
|
-
|
|
190
|
-
<div class="sep"></div>
|
|
191
|
-
|
|
192
|
-
<div class="item"><span class="k">\u6846\u67B6</span><span class="v">{{draft.detected?.framework || '-'}}</span></div>
|
|
193
|
-
<div class="item"><span class="k">\u811A\u672C\u547D\u4EE4</span><span class="v">{{draft.detected?.scriptsCount ?? '-'}}</span></div>
|
|
194
|
-
<div class="item"><span class="k">Git</span><span class="v">{{draft.detected?.hasGit ? 'Yes' : 'No'}}</span></div>
|
|
195
|
-
|
|
196
|
-
@if(draft.detected?.recommendedScript){
|
|
197
|
-
<div class="tag">
|
|
198
|
-
<nz-tag nzColor="blue">\u63A8\u8350\uFF1A{{draft.detected?.recommendedScript}}</nz-tag>
|
|
199
|
-
</div>
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
@if( draft.overwriteIfExists){
|
|
203
|
-
<div class="warn" >
|
|
204
|
-
\u26A0\uFE0F \u8986\u76D6\u5DF2\u5B58\u5728\u76EE\u5F55
|
|
205
|
-
</div>
|
|
206
|
-
}
|
|
207
|
-
</nz-card>
|
|
208
|
-
<ng-template #logActions>
|
|
209
|
-
<button nz-button nzType="text" nzSize="small" (click)="isDrawerOpen = !isDrawerOpen">
|
|
210
|
-
<nz-icon nzType="desktop" nzTheme="outline"></nz-icon>
|
|
211
|
-
\u65E5\u5FD7\u8F93\u51FA
|
|
212
|
-
</button>
|
|
213
|
-
</ng-template>
|
|
214
|
-
|
|
215
|
-
<nz-drawer
|
|
216
|
-
[nzVisible]="isDrawerOpen"
|
|
217
|
-
(nzOnClose)="isDrawerOpen = false"
|
|
218
|
-
nzTitle="\u65E5\u5FD7"
|
|
219
|
-
[nzWidth]="720"
|
|
220
|
-
nzPlacement="right"
|
|
221
|
-
[nzBodyStyle]="{'padding': '8px'}"
|
|
222
|
-
>
|
|
223
|
-
<ng-container *nzDrawerContent>
|
|
224
|
-
<app-terminal-view [style.height.%]="100"></app-terminal-view>
|
|
225
|
-
</ng-container>
|
|
226
|
-
</nz-drawer>
|
|
227
|
-
`,
|
|
228
|
-
styles: [create_summary_aside_component_default]
|
|
229
|
-
})
|
|
230
|
-
], CreateSummaryAsideComponent);
|
|
231
|
-
|
|
232
|
-
// angular:jit:style:inline:src\app\pages\projects\components\pick-workspace-modal.component.ts;CiAgICAud3JhcCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTJweDsgfQogICAgLmhpbnQgeyBvcGFjaXR5OiAuODU7IH0KICAgIC50b29sYmFyIHsgbWFyZ2luLXRvcDogNHB4OyB9CiAgICBuei1yYWRpby1ncm91cCB7IHdpZHRoOiAxMDAlOyB9CiAgICAubGlzdCB7CiAgICAgIGhlaWdodDogMjQwcHg7CiAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIGJvcmRlcjogdmFyKC0tYXBwLWJvcmRlci1jb2xvcik7CiAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgIH0KICAgIC5pdGVtIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiA4cHg7CiAgICAgIHBhZGRpbmc6IDEycHggMTJweDsKICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICBtYXJnaW46IDBweDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICY6aG92ZXJ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXBwLXByaW1hcnktMyk7CiAgICAgIH0KICAgICAgOjpuZy1kZWVwIC5hbnQtcmFkaW8rc3BhbnsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGZsZXg6IDEgMSBhdXRvOwogICAgICAgIHdpZHRoOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KICAgIH0KICAgIC5wYXRoe2Rpc3BsYXk6ZmxleDtnYXA6MTJweDsgZmxleDogMSAxIGF1dG87IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB3aWR0aDogMDsgb3ZlcmZsb3c6IGhpZGRlbjt9CiAgICAucGF0aCAudmFsdWV7IAogICAgICBmb250LWZhbWlseTogdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICJMaWJlcmF0aW9uIE1vbm8iLCAiQ291cmllciBOZXciLCBtb25vc3BhY2U7IAogICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgZmxleDogMSAxIGF1dG87CiAgICAgIHdpZHRoOiAwOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogIH0KICAgIC5hY3Rpb25zIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgZ2FwOiA4cHg7IG1hcmdpbi10b3A6IDRweDsgfQogIA==
|
|
233
|
-
var pick_workspace_modal_component_default = '/* angular:styles/component:less;5287ea1b90ad59306d455dd89d080622f8924bfeb0b3ea39e3c696973b2c2deb;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\components\\pick-workspace-modal.component.ts */\n.wrap {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.hint {\n opacity: 0.85;\n}\n.toolbar {\n margin-top: 4px;\n}\nnz-radio-group {\n width: 100%;\n}\n.list {\n height: 240px;\n overflow: auto;\n padding: 8px;\n border: var(--app-border-color);\n border-radius: 8px;\n}\n.item {\n display: flex;\n gap: 8px;\n padding: 12px 12px;\n border-radius: 8px;\n margin: 0px;\n width: 100%;\n}\n.item:hover {\n background-color: var(--app-primary-3);\n}\n.item ::ng-deep .ant-radio + span {\n display: flex;\n gap: 12px;\n align-items: center;\n flex: 1 1 auto;\n width: 0;\n padding: 0;\n}\n.path {\n display: flex;\n gap: 12px;\n flex: 1 1 auto;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: 0;\n overflow: hidden;\n}\n.path .value {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n "Courier New",\n monospace;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1 1 auto;\n width: 0;\n overflow: hidden;\n}\n.actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 4px;\n}\n/*# sourceMappingURL=pick-workspace-modal.component.css.map */\n';
|
|
234
|
-
|
|
235
|
-
// src/app/pages/projects/components/pick-workspace-modal.component.ts
|
|
236
|
-
var PickWorkspaceModalComponent = class PickWorkspaceModalComponent2 {
|
|
237
|
-
modalRef;
|
|
238
|
-
data = inject(NZ_MODAL_DATA);
|
|
239
|
-
keyword = signal("");
|
|
240
|
-
selectedPath = signal(null);
|
|
241
|
-
constructor(modalRef) {
|
|
242
|
-
this.modalRef = modalRef;
|
|
243
|
-
}
|
|
244
|
-
ngOnInit() {
|
|
245
|
-
const { candidates, defaultPicked } = this.data;
|
|
246
|
-
const first2 = defaultPicked && candidates.includes(defaultPicked) ? defaultPicked : candidates[0] ?? "";
|
|
247
|
-
this.selectedPath.set(first2?.path ?? null);
|
|
248
|
-
}
|
|
249
|
-
filtered = computed(() => {
|
|
250
|
-
const kw = (this.keyword() || "").trim().toLowerCase();
|
|
251
|
-
const list = this.data.candidates ?? [];
|
|
252
|
-
if (!kw)
|
|
253
|
-
return list;
|
|
254
|
-
return list.filter((p) => p.path.toLowerCase().includes(kw));
|
|
255
|
-
});
|
|
256
|
-
cancel() {
|
|
257
|
-
this.modalRef.close(null);
|
|
258
|
-
}
|
|
259
|
-
ok() {
|
|
260
|
-
const picked = this.selectedPath();
|
|
261
|
-
if (!picked)
|
|
262
|
-
return;
|
|
263
|
-
this.modalRef.close({ pickedRoot: picked });
|
|
264
|
-
}
|
|
265
|
-
static ctorParameters = () => [
|
|
266
|
-
{ type: NzModalRef }
|
|
267
|
-
];
|
|
268
|
-
};
|
|
269
|
-
PickWorkspaceModalComponent = __decorate([
|
|
270
|
-
Component({
|
|
271
|
-
selector: "app-pick-workspace-modal",
|
|
272
|
-
standalone: true,
|
|
273
|
-
imports: [
|
|
274
|
-
CommonModule,
|
|
275
|
-
FormsModule,
|
|
276
|
-
NzModalModule,
|
|
277
|
-
NzInputModule,
|
|
278
|
-
NzRadioModule,
|
|
279
|
-
NzButtonModule,
|
|
280
|
-
NzIconModule,
|
|
281
|
-
NzEmptyModule,
|
|
282
|
-
NzTagModule,
|
|
283
|
-
NzTooltipModule
|
|
284
|
-
],
|
|
285
|
-
template: `
|
|
286
|
-
<div class="wrap">
|
|
287
|
-
<div class="hint">
|
|
288
|
-
\u68C0\u6D4B\u5230\u8BE5\u4ED3\u5E93\u53EF\u80FD\u5305\u542B\u591A\u4E2A\u524D\u7AEF\u5DE5\u4F5C\u533A\uFF08Angular / Vue \u7B49\uFF09\u3002\u8BF7\u9009\u62E9\u4E00\u4E2A\u76EE\u5F55\u7EE7\u7EED\u5BFC\u5165\uFF1A
|
|
289
|
-
</div>
|
|
290
|
-
|
|
291
|
-
<div class="toolbar">
|
|
292
|
-
<nz-input-wrapper>
|
|
293
|
-
<input nz-input placeholder="\u8FC7\u6EE4\u8DEF\u5F84\uFF08\u5173\u952E\u5B57\uFF09" [(ngModel)]="keyword" />
|
|
294
|
-
<nz-icon nzType="search" nzTheme="outline" nzSuffix />
|
|
295
|
-
</nz-input-wrapper>
|
|
296
|
-
</div>
|
|
297
|
-
|
|
298
|
-
<div class="list">
|
|
299
|
-
@if (filtered().length === 0) {
|
|
300
|
-
<nz-empty nzNotFoundContent="\u6CA1\u6709\u5339\u914D\u7684\u76EE\u5F55"></nz-empty>
|
|
301
|
-
} @else {
|
|
302
|
-
<nz-radio-group [(ngModel)]="selectedPath" nzSize="large">
|
|
303
|
-
@for (p of filtered(); track p) {
|
|
304
|
-
<div nz-radio [nzValue]="p.path" class="item">
|
|
305
|
-
<div class="path">
|
|
306
|
-
<div class="value" [nz-tooltip]="p.path" nzTooltipPlacement="top">{{ p.path }}</div>
|
|
307
|
-
@let kind = p.kind;
|
|
308
|
-
@if(kind) {
|
|
309
|
-
<nz-tag [nzColor]="kind==='angular' ? '#dd0031' : kind==='vue' ? '#42b883' : '#108ee9'" nzMode="default">
|
|
310
|
-
{{ p.kind | titlecase }}
|
|
311
|
-
</nz-tag>
|
|
312
|
-
}
|
|
313
|
-
</div>
|
|
314
|
-
</div>
|
|
315
|
-
}
|
|
316
|
-
</nz-radio-group>
|
|
317
|
-
}
|
|
318
|
-
</div>
|
|
319
|
-
|
|
320
|
-
<div class="actions">
|
|
321
|
-
<button nz-button (click)="cancel()">
|
|
322
|
-
<nz-icon nzType="close" nzTheme="outline" />
|
|
323
|
-
\u53D6\u6D88
|
|
324
|
-
</button>
|
|
325
|
-
|
|
326
|
-
<button
|
|
327
|
-
nz-button
|
|
328
|
-
nzType="primary"
|
|
329
|
-
[disabled]="!selectedPath()"
|
|
330
|
-
(click)="ok()"
|
|
331
|
-
>
|
|
332
|
-
<nz-icon nzType="check" nzTheme="outline" />
|
|
333
|
-
\u9009\u4E2D\u5E76\u7EE7\u7EED
|
|
334
|
-
</button>
|
|
335
|
-
</div>
|
|
336
|
-
</div>
|
|
337
|
-
`,
|
|
338
|
-
styles: [pick_workspace_modal_component_default]
|
|
339
|
-
})
|
|
340
|
-
], PickWorkspaceModalComponent);
|
|
341
|
-
|
|
342
|
-
// angular:jit:style:inline:src\app\pages\projects\components\step-basic.component.ts;CiAgICAuaGludCB7IG1hcmdpbi10b3A6IDZweDsgZm9udC1zaXplOiAxMnB4OyBvcGFjaXR5OiAuNzsgfQogICAgLnN3aXRjaC1yb3cgeyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IHBhZGRpbmctYm90dG9tOiAgNHB4OyBzcGFue2ZvbnQtc2l6ZToxNHB4O30gfQogICAgLmVtaXQgeyBtYXJnaW4tdG9wOiA4cHg7IH0KICA=
|
|
343
|
-
var step_basic_component_default = "/* angular:styles/component:less;7757dd15c89a8cad7a6825fbe9a49cf4c9a152d611cf55cbb9706b80f692f9d3;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\components\\step-basic.component.ts */\n.hint {\n margin-top: 6px;\n font-size: 12px;\n opacity: 0.7;\n}\n.switch-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-bottom: 4px;\n}\n.switch-row span {\n font-size: 14px;\n}\n.emit {\n margin-top: 8px;\n}\n/*# sourceMappingURL=step-basic.component.css.map */\n";
|
|
344
|
-
|
|
345
|
-
// src/app/pages/projects/components/step-basic.component.ts
|
|
346
|
-
var StepBasicComponent = class StepBasicComponent2 {
|
|
347
|
-
draft;
|
|
348
|
-
draftChange = new EventEmitter();
|
|
349
|
-
pathCheck$ = new Subject();
|
|
350
|
-
pathExists = false;
|
|
351
|
-
fsApi = inject(FsExplorerApiService);
|
|
352
|
-
ngOnInit() {
|
|
353
|
-
this.computeRootPath();
|
|
354
|
-
this.pathCheck$.pipe(debounceTime(200), distinctUntilChanged(), switchMap((p) => p ? this.fsApi.pathExists(p) : of(false))).subscribe((exists) => {
|
|
355
|
-
this.emit();
|
|
356
|
-
this.pathExists = exists;
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
recalcRoot() {
|
|
360
|
-
this.computeRootPath();
|
|
361
|
-
this.pathCheck$.next(this.draft.rootPath);
|
|
362
|
-
}
|
|
363
|
-
computeRootPath() {
|
|
364
|
-
const parent = (this.draft.parentDir ?? "").replace(/[\\/]+$/, "");
|
|
365
|
-
const name = (this.draft.name ?? "").trim();
|
|
366
|
-
this.draft.rootPath = parent && name ? `${parent}/${name}`.replaceAll("\\", "/") : parent;
|
|
367
|
-
}
|
|
368
|
-
emit() {
|
|
369
|
-
this.draftChange.emit(__spreadValues({}, this.draft));
|
|
370
|
-
}
|
|
371
|
-
static propDecorators = {
|
|
372
|
-
draft: [{ type: Input, args: [{ required: true }] }],
|
|
373
|
-
draftChange: [{ type: Output }]
|
|
374
|
-
};
|
|
375
|
-
};
|
|
376
|
-
StepBasicComponent = __decorate([
|
|
377
|
-
Component({
|
|
378
|
-
standalone: true,
|
|
379
|
-
selector: "app-step-basic",
|
|
380
|
-
imports: [
|
|
381
|
-
CommonModule,
|
|
382
|
-
FormsModule,
|
|
383
|
-
NzFormModule,
|
|
384
|
-
NzInputModule,
|
|
385
|
-
NzButtonModule,
|
|
386
|
-
NzSelectModule,
|
|
387
|
-
NzSwitchModule,
|
|
388
|
-
NzCardModule,
|
|
389
|
-
NzTooltipModule,
|
|
390
|
-
NzIconModule,
|
|
391
|
-
NzModalModule
|
|
392
|
-
],
|
|
393
|
-
template: `
|
|
394
|
-
<nz-card nzTitle="\u57FA\u7840\u8BBE\u7F6E">
|
|
395
|
-
<form nz-form nzLayout="vertical">
|
|
396
|
-
<nz-form-item>
|
|
397
|
-
<nz-form-label>\u9879\u76EE\u6587\u4EF6\u5939</nz-form-label>
|
|
398
|
-
<nz-form-control>
|
|
399
|
-
<input nz-input [(ngModel)]="draft.name" name="name" placeholder="\u8F93\u5165\u9879\u76EE\u540D" (ngModelChange)="recalcRoot()"/>
|
|
400
|
-
<div class="hint">
|
|
401
|
-
{{draft.rootPath}}
|
|
402
|
-
@if(pathExists){ <span style="margin-left:8px;color:#ff4d4f;">\u8BE5\u8DEF\u5F84\u5DF2\u5B58\u5728</span> }
|
|
403
|
-
</div>
|
|
404
|
-
</nz-form-control>
|
|
405
|
-
</nz-form-item>
|
|
406
|
-
<nz-form-item>
|
|
407
|
-
<nz-form-label>\u5305\u7BA1\u7406\u5668</nz-form-label>
|
|
408
|
-
<nz-form-control>
|
|
409
|
-
<nz-select [(ngModel)]="draft.packageManager" name="pm">
|
|
410
|
-
<nz-option nzValue="auto" nzLabel="\u9ED8\u8BA4"></nz-option>
|
|
411
|
-
<nz-option nzValue="npm" nzLabel="npm"></nz-option>
|
|
412
|
-
<nz-option nzValue="pnpm" nzLabel="pnpm"></nz-option>
|
|
413
|
-
<nz-option nzValue="yarn" nzLabel="yarn"></nz-option>
|
|
414
|
-
</nz-select>
|
|
415
|
-
</nz-form-control>
|
|
416
|
-
</nz-form-item>
|
|
417
|
-
<nz-form-item>
|
|
418
|
-
<nz-form-label>\u66F4\u591A\u9009\u9879</nz-form-label>
|
|
419
|
-
<nz-form-control>
|
|
420
|
-
<div class="switch-row">
|
|
421
|
-
<span>\u82E5\u76EE\u6807\u6587\u4EF6\u5939\u5DF2\u5B58\u5728\u5219\u8986\u76D6</span>
|
|
422
|
-
<nz-switch [(ngModel)]="draft.overwriteIfExists" (ngModelChange)="emit()" name="overwrite"></nz-switch>
|
|
423
|
-
</div>
|
|
424
|
-
<div class="switch-row">
|
|
425
|
-
<span>\u65E0\u65B0\u624B\u6307\u5F15\u7684\u811A\u624B\u67B6\u9879\u76EE</span>
|
|
426
|
-
<nz-switch [(ngModel)]="draft.skipOnboarding" name="skip"></nz-switch>
|
|
427
|
-
</div>
|
|
428
|
-
</nz-form-control>
|
|
429
|
-
</nz-form-item>
|
|
430
|
-
<nz-form-item>
|
|
431
|
-
<nz-form-label>Git</nz-form-label>
|
|
432
|
-
<nz-form-control>
|
|
433
|
-
<div class="switch-row">
|
|
434
|
-
<span>\u521D\u59CB\u5316 git \u4ED3\u5E93\uFF08\u5EFA\u8BAE\uFF09</span>
|
|
435
|
-
<nz-switch [(ngModel)]="draft.initGit" name="initGit"></nz-switch>
|
|
436
|
-
</div>
|
|
437
|
-
@if(draft.initGit){
|
|
438
|
-
<input nz-input [(ngModel)]="draft.initialCommitMessage" name="msg" placeholder="\u8986\u76D6\u63D0\u4EA4\u4FE1\u606F(\u9009\u586B)"/>
|
|
439
|
-
}
|
|
440
|
-
</nz-form-control>
|
|
441
|
-
</nz-form-item>
|
|
442
|
-
</form>
|
|
443
|
-
</nz-card>
|
|
444
|
-
`,
|
|
445
|
-
styles: [step_basic_component_default]
|
|
446
|
-
})
|
|
447
|
-
], StepBasicComponent);
|
|
448
|
-
|
|
449
|
-
// angular:jit:style:inline:src\app\pages\projects\components\step-config.component.ts;CiAgICAucm93IHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOiAxMHB4IDA7IH0KICAgIC5yb3cuY29sIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogOHB4OyB9CiAgICAubGFiZWwgeyBmb250LXdlaWdodDogNTAwOyB9CiAgICAuaGludCB7IGZvbnQtc2l6ZTogMTJweDsgb3BhY2l0eTogLjc7IH0KICA=
|
|
450
|
-
var step_config_component_default = "/* angular:styles/component:less;472cec399461669211a54f75e5af0c1eb2faa78b6043c99572b2f0efb6cb4526;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\components\\step-config.component.ts */\n.row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 0;\n}\n.row.col {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n}\n.label {\n font-weight: 500;\n}\n.hint {\n font-size: 12px;\n opacity: 0.7;\n}\n/*# sourceMappingURL=step-config.component.css.map */\n";
|
|
451
|
-
|
|
452
|
-
// src/app/pages/projects/components/step-config.component.ts
|
|
453
|
-
var StepConfigComponent = class StepConfigComponent2 {
|
|
454
|
-
draft;
|
|
455
|
-
draftChange = new EventEmitter();
|
|
456
|
-
emit() {
|
|
457
|
-
this.draftChange.emit(__spreadValues({}, this.draft));
|
|
458
|
-
}
|
|
459
|
-
static propDecorators = {
|
|
460
|
-
draft: [{ type: Input, args: [{ required: true }] }],
|
|
461
|
-
draftChange: [{ type: Output }]
|
|
462
|
-
};
|
|
463
|
-
};
|
|
464
|
-
StepConfigComponent = __decorate([
|
|
465
|
-
Component({
|
|
466
|
-
standalone: true,
|
|
467
|
-
selector: "app-step-config",
|
|
468
|
-
imports: [CommonModule, FormsModule, NzCardModule, NzRadioModule, NzSwitchModule, NzInputModule],
|
|
469
|
-
template: `
|
|
470
|
-
<nz-card nzTitle="\u521B\u5EFA\u540E\u9ED8\u8BA4\u884C\u4E3A">
|
|
471
|
-
<div class="row">
|
|
472
|
-
<div class="label">\u7F6E\u9876\u6536\u85CF</div>
|
|
473
|
-
<nz-switch [(ngModel)]="draft.pinFavorite" (ngModelChange)="emit()"></nz-switch>
|
|
474
|
-
</div>
|
|
475
|
-
|
|
476
|
-
<div class="row col">
|
|
477
|
-
<!-- <div class="label">\u521B\u5EFA\u540E\u9ED8\u8BA4\u6253\u5F00</div>
|
|
478
|
-
<nz-radio-group [(ngModel)]="draft.openAfterCreate" (ngModelChange)="emit()">
|
|
479
|
-
<label nz-radio nzValue="tasks">Tasks</label>
|
|
480
|
-
<label nz-radio nzValue="home">Home</label>
|
|
481
|
-
</nz-radio-group> -->
|
|
482
|
-
</div>
|
|
483
|
-
|
|
484
|
-
<div class="row col">
|
|
485
|
-
<div class="label">\u9ED8\u8BA4\u4EFB\u52A1\uFF08\u53EF\u9009\uFF09</div>
|
|
486
|
-
<input nz-input [(ngModel)]="draft.defaultTaskName" (ngModelChange)="emit()" placeholder="\u4F8B\u5982\uFF1Adev / start"/>
|
|
487
|
-
<div class="hint">\u5EFA\u8BAE\u586B\u8BC6\u522B\u5230\u7684 dev \u6216 start</div>
|
|
488
|
-
</div>
|
|
489
|
-
</nz-card>
|
|
490
|
-
`,
|
|
491
|
-
styles: [step_config_component_default]
|
|
492
|
-
})
|
|
493
|
-
], StepConfigComponent);
|
|
494
|
-
|
|
495
|
-
// angular:jit:style:inline:src\app\pages\projects\components\step-features.component.ts;CiAgICAucm93IHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOiAxMHB4IDA7IH0KICAgIC5sYWJlbCB7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KICA=
|
|
496
|
-
var step_features_component_default = "/* angular:styles/component:less;a1e2162d0f20406735a955e67a37165b79f76a169f5b06c9f7656fa71c71dc6d;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\components\\step-features.component.ts */\n.row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 0;\n}\n.label {\n font-weight: 500;\n}\n/*# sourceMappingURL=step-features.component.css.map */\n";
|
|
497
|
-
|
|
498
|
-
// src/app/pages/projects/components/step-features.component.ts
|
|
499
|
-
var StepFeaturesComponent = class StepFeaturesComponent2 {
|
|
500
|
-
draft;
|
|
501
|
-
draftChange = new EventEmitter();
|
|
502
|
-
emit() {
|
|
503
|
-
this.draftChange.emit(__spreadValues({}, this.draft));
|
|
504
|
-
}
|
|
505
|
-
static propDecorators = {
|
|
506
|
-
draft: [{ type: Input, args: [{ required: true }] }],
|
|
507
|
-
draftChange: [{ type: Output }]
|
|
508
|
-
};
|
|
509
|
-
};
|
|
510
|
-
StepFeaturesComponent = __decorate([
|
|
511
|
-
Component({
|
|
512
|
-
standalone: true,
|
|
513
|
-
selector: "app-step-features",
|
|
514
|
-
imports: [CommonModule, FormsModule, NzCardModule, NzSwitchModule],
|
|
515
|
-
template: `
|
|
516
|
-
<nz-card nzTitle="\u529F\u80FD\u5F00\u5173\uFF08Project Scope\uFF09">
|
|
517
|
-
<!-- <div class="row">
|
|
518
|
-
<div class="label">Tasks\uFF08\u5FC5\u9009\uFF09</div>
|
|
519
|
-
<nz-switch [(ngModel)]="draft.featureTasks" [ngModelOptions]="{standalone:true}" [nzDisabled]="true"></nz-switch>
|
|
520
|
-
</div>
|
|
521
|
-
|
|
522
|
-
<div class="row">
|
|
523
|
-
<div class="label">Processes</div>
|
|
524
|
-
<nz-switch [(ngModel)]="draft.featureProcesses" (ngModelChange)="emit()"></nz-switch>
|
|
525
|
-
</div>
|
|
526
|
-
|
|
527
|
-
<div class="row">
|
|
528
|
-
<div class="label">Logs</div>
|
|
529
|
-
<nz-switch [(ngModel)]="draft.featureLogs" (ngModelChange)="emit()"></nz-switch>
|
|
530
|
-
</div>
|
|
531
|
-
|
|
532
|
-
<div class="row">
|
|
533
|
-
<div class="label">Terminal\uFF08\u540E\u7EED\uFF09</div>
|
|
534
|
-
<nz-switch [(ngModel)]="draft.featureTerminal" (ngModelChange)="emit()" [nzDisabled]="true"></nz-switch>
|
|
535
|
-
</div> -->
|
|
536
|
-
</nz-card>
|
|
537
|
-
`,
|
|
538
|
-
styles: [step_features_component_default]
|
|
539
|
-
})
|
|
540
|
-
], StepFeaturesComponent);
|
|
541
|
-
|
|
542
|
-
// angular:jit:style:inline:src\app\pages\projects\components\step-preset.component.ts;CiAgICAua3YgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IGdhcDogOHB4IDEycHg7IH0KICAgIC5rIHsgb3BhY2l0eTogLjc7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDogMTIwcHg7IH0KICAgIC5vcHQgeyBtYXJnaW4tdG9wOiAxMHB4OyB9CiAgICBuei1yYWRpby1ncm91cCB7IHdpZHRoOiAxMDAlOyB9CiAgICBbbnotcmFkaW9dIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiAxMnB4IDEycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbjowOwogICAgICAgICY6aG92ZXJ7CiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hcHAtcHJpbWFyeS0zKTsKICAgICAgICB9CiAgICB9CiAgICAuaGludCB7CiAgICAgIG1hcmdpbi1sZWZ0OiAyNHB4OwogICAgICBmb250LXNpemU6IDEycHg7CiAgICAgIG9wYWNpdHk6IC43NTsKICAgIH0KICA=
|
|
543
|
-
var step_preset_component_default = "/* angular:styles/component:less;d9d68b139b2e21f242c0a3ef4b2427dba36969f779de06467711c14f5184d970;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\components\\step-preset.component.ts */\n.kv {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px 12px;\n}\n.k {\n opacity: 0.7;\n display: inline-block;\n width: 120px;\n}\n.opt {\n margin-top: 10px;\n}\nnz-radio-group {\n width: 100%;\n}\n[nz-radio] {\n display: block;\n padding: 12px 12px;\n border-radius: 8px;\n width: 100%;\n margin: 0;\n}\n[nz-radio]:hover {\n background-color: var(--app-primary-3);\n}\n.hint {\n margin-left: 24px;\n font-size: 12px;\n opacity: 0.75;\n}\n/*# sourceMappingURL=step-preset.component.css.map */\n";
|
|
544
|
-
|
|
545
|
-
// angular:jit:style:inline:src\app\pages\projects\components\git-import-modal.component.ts;CiAgICAgIC5oaW50IHsgbWFyZ2luLXRvcDogNnB4OyBmb250LXNpemU6IDEycHg7IG9wYWNpdHk6IC43OyB9CiAgICA=
|
|
546
|
-
var git_import_modal_component_default = "/* angular:styles/component:less;fdd001241c9b4eb1495030a95eaea3273462ba812393c82625f1814e80fca531;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\components\\git-import-modal.component.ts */\n.hint {\n margin-top: 6px;\n font-size: 12px;\n opacity: 0.7;\n}\n/*# sourceMappingURL=git-import-modal.component.css.map */\n";
|
|
547
|
-
|
|
548
|
-
// src/app/pages/projects/components/git-import-modal.component.ts
|
|
549
|
-
var GitImportModalComponent = class GitImportModalComponent2 {
|
|
550
|
-
nzModalData = inject(NZ_MODAL_DATA);
|
|
551
|
-
isModalVisible = false;
|
|
552
|
-
isSaving = false;
|
|
553
|
-
};
|
|
554
|
-
GitImportModalComponent = __decorate([
|
|
555
|
-
Component({
|
|
556
|
-
selector: "app-git-import-modal-component",
|
|
557
|
-
imports: [
|
|
558
|
-
CommonModule,
|
|
559
|
-
FormsModule,
|
|
560
|
-
NzIconModule,
|
|
561
|
-
NzModalModule,
|
|
562
|
-
NzInputModule,
|
|
563
|
-
NzSelectModule,
|
|
564
|
-
NzButtonModule
|
|
565
|
-
],
|
|
566
|
-
template: `
|
|
567
|
-
<div class="modal-body">
|
|
568
|
-
<label class="label">URL</label>
|
|
569
|
-
<nz-input-wrapper >
|
|
570
|
-
<input
|
|
571
|
-
nz-input
|
|
572
|
-
[(ngModel)]="nzModalData.cloneUrl"
|
|
573
|
-
placeholder="\u8BF7\u8F93\u5165Git\u4ED3\u5E93\u5730\u5740"
|
|
574
|
-
autofocus
|
|
575
|
-
/>
|
|
576
|
-
<nz-icon nzInputPrefix nzType="github" nzTheme="outline" />
|
|
577
|
-
</nz-input-wrapper>
|
|
578
|
-
<div class="hint">
|
|
579
|
-
Git \u4ED3\u5E93\u5730\u5740, \u5982 'username/repo'. \u53EF\u4EE5\u4F7F\u7528\u524D\u7F00\u5982 'gitlab:' \u6216 'bitbucket:'.
|
|
580
|
-
</div>
|
|
581
|
-
</div>
|
|
582
|
-
`,
|
|
583
|
-
styles: [git_import_modal_component_default]
|
|
584
|
-
})
|
|
585
|
-
], GitImportModalComponent);
|
|
586
|
-
|
|
587
|
-
// src/app/pages/projects/components/step-preset.component.ts
|
|
588
|
-
var StepPresetComponent = class StepPresetComponent2 {
|
|
589
|
-
draft;
|
|
590
|
-
draftChange = new EventEmitter();
|
|
591
|
-
requestDetect = new EventEmitter();
|
|
592
|
-
modal = inject(NzModalService);
|
|
593
|
-
emit() {
|
|
594
|
-
this.draftChange.emit(__spreadValues({}, this.draft));
|
|
595
|
-
}
|
|
596
|
-
presetChange(preset) {
|
|
597
|
-
this.draft.preset = preset;
|
|
598
|
-
if (preset === "git") {
|
|
599
|
-
this.openImportGitModal();
|
|
600
|
-
return;
|
|
601
|
-
} else {
|
|
602
|
-
this.draft.repoUrl = void 0;
|
|
603
|
-
this.emit();
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
openImportGitModal() {
|
|
607
|
-
const modal = this.modal.create({
|
|
608
|
-
nzTitle: "\u4ECE Git \u4ED3\u5E93\u5BFC\u5165\u9879\u76EE",
|
|
609
|
-
nzMaskClosable: false,
|
|
610
|
-
nzContent: GitImportModalComponent,
|
|
611
|
-
nzCentered: true,
|
|
612
|
-
nzWidth: "580px",
|
|
613
|
-
nzClosable: false,
|
|
614
|
-
nzData: {
|
|
615
|
-
cloneUrl: "",
|
|
616
|
-
isSaving: false
|
|
617
|
-
},
|
|
618
|
-
nzFooter: [
|
|
619
|
-
{
|
|
620
|
-
label: "\u53D6\u6D88",
|
|
621
|
-
type: "default",
|
|
622
|
-
onClick: () => {
|
|
623
|
-
modal.close();
|
|
624
|
-
this.draft.repoUrl = void 0;
|
|
625
|
-
this.draft.preset = "angular";
|
|
626
|
-
this.emit();
|
|
627
|
-
}
|
|
628
|
-
},
|
|
629
|
-
{
|
|
630
|
-
label: "\u5BFC\u5165",
|
|
631
|
-
type: "primary",
|
|
632
|
-
onClick: (comp) => {
|
|
633
|
-
const url = comp.nzModalData.cloneUrl;
|
|
634
|
-
const isSaving = comp.nzModalData.isSaving;
|
|
635
|
-
if (!url || !url.trim() || isSaving) {
|
|
636
|
-
return;
|
|
637
|
-
}
|
|
638
|
-
comp.nzModalData.isSaving = true;
|
|
639
|
-
this.draft.repoUrl = url.trim();
|
|
640
|
-
comp.nzModalData.isSaving = false;
|
|
641
|
-
this.emit();
|
|
642
|
-
modal.close();
|
|
643
|
-
},
|
|
644
|
-
disabled: (comp) => {
|
|
645
|
-
const url = comp?.nzModalData.cloneUrl;
|
|
646
|
-
return !url || !url.trim();
|
|
647
|
-
},
|
|
648
|
-
loading: (comp) => {
|
|
649
|
-
const isSaving = comp?.nzModalData.isSaving;
|
|
650
|
-
return isSaving === true;
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
]
|
|
654
|
-
});
|
|
655
|
-
}
|
|
656
|
-
static propDecorators = {
|
|
657
|
-
draft: [{ type: Input, args: [{ required: true }] }],
|
|
658
|
-
draftChange: [{ type: Output }],
|
|
659
|
-
requestDetect: [{ type: Output }]
|
|
660
|
-
};
|
|
661
|
-
};
|
|
662
|
-
StepPresetComponent = __decorate([
|
|
663
|
-
Component({
|
|
664
|
-
standalone: true,
|
|
665
|
-
selector: "app-step-preset",
|
|
666
|
-
imports: [CommonModule, FormsModule, NzCardModule, NzCheckboxModule, NzButtonModule, NzTagModule, NzIconModule, NzRadioModule],
|
|
667
|
-
template: `
|
|
668
|
-
<nz-card nzTitle="\u9009\u62E9\u4E00\u5957\u9884\u8BBE" [nzExtra]="reloadExtraTpl">
|
|
669
|
-
<ng-template #reloadExtraTpl>
|
|
670
|
-
<button nz-button nzType="text" nzSize="small" (click)="requestDetect.emit()">
|
|
671
|
-
<nz-icon nzType="reload" nzTheme="outline" />
|
|
672
|
-
</button>
|
|
673
|
-
</ng-template>
|
|
674
|
-
<nz-radio-group [(ngModel)]="draft.preset" (ngModelChange)="presetChange($event)" nzSize="large">
|
|
675
|
-
<div nz-radio nzValue="angular">
|
|
676
|
-
<label for="angular">Angular</label>
|
|
677
|
-
<div class="hint">
|
|
678
|
-
\u9002\u7528\u4E8E\u4F7F\u7528 Angular \u6846\u67B6\u5F00\u53D1\u7684\u9879\u76EE\uFF0C\u652F\u6301 Angular CLI \u76F8\u5173\u4EFB\u52A1\u548C\u914D\u7F6E\u3002
|
|
679
|
-
</div>
|
|
680
|
-
</div>
|
|
681
|
-
<div nz-radio nzValue="vue3">
|
|
682
|
-
<label for="vue3">Vue 3</label>
|
|
683
|
-
<div class="hint">
|
|
684
|
-
\u9002\u7528\u4E8E\u4F7F\u7528 Vue 3 \u6846\u67B6\u5F00\u53D1\u7684\u9879\u76EE\uFF0C\u652F\u6301 Vite \u548C Vue CLI \u76F8\u5173\u4EFB\u52A1\u548C\u914D\u7F6E\u3002
|
|
685
|
-
</div>
|
|
686
|
-
</div>
|
|
687
|
-
<!-- <div nz-radio nzValue="manual">
|
|
688
|
-
<label for="manual">\u624B\u52A8</label>
|
|
689
|
-
<div class="hint">
|
|
690
|
-
\u4E0D\u4F7F\u7528\u4EFB\u4F55\u9884\u8BBE\uFF0C\u624B\u52A8\u914D\u7F6E\u9879\u76EE\u529F\u80FD\u548C\u4EFB\u52A1\u3002
|
|
691
|
-
</div>
|
|
692
|
-
</div> -->
|
|
693
|
-
<div nz-radio nzValue="git">
|
|
694
|
-
<label for="git">Git\u5BFC\u5165</label>
|
|
695
|
-
<div class="hint">
|
|
696
|
-
\u4ECE\u73B0\u6709\u7684 Git \u4ED3\u5E93\u5BFC\u5165\u9879\u76EE\uFF0C\u81EA\u52A8\u8BC6\u522B\u9879\u76EE\u7ED3\u6784\u548C\u914D\u7F6E\u3002
|
|
697
|
-
</div>
|
|
698
|
-
</div>
|
|
699
|
-
</nz-radio-group>
|
|
700
|
-
</nz-card>
|
|
701
|
-
<!-- <nz-card nzTitle="\u8BC6\u522B\u7ED3\u679C" [nzExtra]="extraTpl">
|
|
702
|
-
<ng-template #extraTpl>
|
|
703
|
-
<button nz-button nzSize="small" (click)="requestDetect.emit()">\u91CD\u65B0\u8BC6\u522B</button>
|
|
704
|
-
</ng-template>
|
|
705
|
-
|
|
706
|
-
<div class="kv">
|
|
707
|
-
<div><span class="k">Framework</span><span class="v">{{draft.detected?.framework || 'unknown'}}</span></div>
|
|
708
|
-
<div><span class="k">package.json</span><span class="v">{{draft.detected?.hasPackageJson ? 'Yes' : 'No'}}</span></div>
|
|
709
|
-
<div><span class="k">scripts</span><span class="v">{{draft.detected?.scriptsCount ?? 0}}</span></div>
|
|
710
|
-
<div><span class="k">lockfile</span><span class="v">{{draft.detected?.lockFile || 'none'}}</span></div>
|
|
711
|
-
<div><span class="k">git</span><span class="v">{{draft.detected?.hasGit ? 'Yes' : 'No'}}</span></div>
|
|
712
|
-
@if(draft.detected?.recommendedScript){
|
|
713
|
-
<div>
|
|
714
|
-
<span class="k">\u63A8\u8350\u8FD0\u884C</span>
|
|
715
|
-
<span class="v"><nz-tag nzColor="blue">{{draft.detected?.recommendedScript}}</nz-tag></span>
|
|
716
|
-
</div>
|
|
717
|
-
}
|
|
718
|
-
</div>
|
|
719
|
-
</nz-card> -->
|
|
720
|
-
|
|
721
|
-
<!-- <nz-card nzTitle="\u5BFC\u5165\u5185\u5BB9" style="margin-top:12px;">
|
|
722
|
-
<label nz-checkbox [(ngModel)]="draft.importScriptsAsTasks" (ngModelChange)="emit()">
|
|
723
|
-
\u5BFC\u5165 package.json scripts \u751F\u6210 Tasks\uFF08\u63A8\u8350\uFF09
|
|
724
|
-
</label>
|
|
725
|
-
@if(draft.detected?.hasMakefile){
|
|
726
|
-
<div class="opt">
|
|
727
|
-
<label nz-checkbox [(ngModel)]="draft.importMakefileTasks" (ngModelChange)="emit()">
|
|
728
|
-
\u5BFC\u5165 Makefile \u4EFB\u52A1\uFF08\u53EF\u9009\uFF09
|
|
729
|
-
</label>
|
|
730
|
-
</div>
|
|
731
|
-
}
|
|
732
|
-
@if(draft.detected?.hasDockerCompose){
|
|
733
|
-
<div class="opt" >
|
|
734
|
-
<label nz-checkbox [(ngModel)]="draft.importDockerComposeTasks" (ngModelChange)="emit()">
|
|
735
|
-
\u5BFC\u5165 docker-compose \u4EFB\u52A1\uFF08\u53EF\u9009\uFF09
|
|
736
|
-
</label>
|
|
737
|
-
</div>
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
<div class="opt">
|
|
742
|
-
<label nz-checkbox [(ngModel)]="draft.generateCommonTasks" (ngModelChange)="emit()">
|
|
743
|
-
\u751F\u6210\u901A\u7528\u4EFB\u52A1\u6A21\u677F\uFF08install / open / clean\uFF09
|
|
744
|
-
</label>
|
|
745
|
-
</div>
|
|
746
|
-
</nz-card> -->
|
|
747
|
-
`,
|
|
748
|
-
styles: [step_preset_component_default]
|
|
749
|
-
})
|
|
750
|
-
], StepPresetComponent);
|
|
751
|
-
|
|
752
|
-
// src/app/pages/projects/models/project-draft.ts
|
|
753
|
-
function createEmptyDraft() {
|
|
754
|
-
return {
|
|
755
|
-
preset: "angular",
|
|
756
|
-
// 默认预设
|
|
757
|
-
name: "",
|
|
758
|
-
parentDir: "",
|
|
759
|
-
rootPath: "",
|
|
760
|
-
packageManager: "auto",
|
|
761
|
-
overwriteIfExists: false,
|
|
762
|
-
skipOnboarding: true,
|
|
763
|
-
initGit: true,
|
|
764
|
-
initialCommitMessage: "",
|
|
765
|
-
importScriptsAsTasks: true,
|
|
766
|
-
importMakefileTasks: false,
|
|
767
|
-
importDockerComposeTasks: false,
|
|
768
|
-
generateCommonTasks: true,
|
|
769
|
-
pinFavorite: false,
|
|
770
|
-
defaultTaskName: "",
|
|
771
|
-
cliFramework: "angular",
|
|
772
|
-
cliTool: "@angular/cli",
|
|
773
|
-
cliArgs: []
|
|
774
|
-
};
|
|
775
|
-
}
|
|
776
|
-
|
|
777
|
-
// src/app/pages/projects/project-create/project-create-modal.component.ts
|
|
778
|
-
var ProjectCreateModal = class ProjectCreateModal2 {
|
|
779
|
-
step = signal(0);
|
|
780
|
-
draft = signal(createEmptyDraft());
|
|
781
|
-
creating = signal(false);
|
|
782
|
-
output = signal("");
|
|
783
|
-
isDrawerOpen = signal(false);
|
|
784
|
-
fs = inject(FsExplorerService);
|
|
785
|
-
parentDir = this.fs.currentPath();
|
|
786
|
-
modalRef = inject(NzModalRef);
|
|
787
|
-
api = inject(ProjectApiService);
|
|
788
|
-
modal = inject(NzModalService);
|
|
789
|
-
notify = inject(UiNotifierService);
|
|
790
|
-
taskStream = inject(TaskStreamService);
|
|
791
|
-
projectState = inject(ProjectStateService);
|
|
792
|
-
router = inject(Router);
|
|
793
|
-
sub = new Subscription();
|
|
794
|
-
ngOnInit() {
|
|
795
|
-
const d = this.draft();
|
|
796
|
-
const parentDir = this.parentDir;
|
|
797
|
-
this.draft.set(__spreadProps(__spreadValues({}, d), { rootPath: "", parentDir, name: "" }));
|
|
798
|
-
}
|
|
799
|
-
detectNow() {
|
|
800
|
-
const d = this.draft();
|
|
801
|
-
if (!d.rootPath?.trim())
|
|
802
|
-
return;
|
|
803
|
-
this.api.detect(d.rootPath).subscribe((r) => {
|
|
804
|
-
const scripts = r.scripts ?? [];
|
|
805
|
-
const detected = {
|
|
806
|
-
framework: r.framework ?? "unknown",
|
|
807
|
-
hasPackageJson: !!r.hasPackageJson,
|
|
808
|
-
scriptsCount: scripts.length,
|
|
809
|
-
hasGit: !!r.hasGit,
|
|
810
|
-
lockFile: r.lockFile ?? "unknown",
|
|
811
|
-
recommendedScript: scripts.includes("dev") ? "dev" : scripts.includes("start") ? "start" : "",
|
|
812
|
-
hasMakefile: !!r.hasMakefile,
|
|
813
|
-
hasDockerCompose: !!r.hasDockerCompose
|
|
814
|
-
};
|
|
815
|
-
const importScriptsAsTasks = scripts.length > 0;
|
|
816
|
-
const importMakefileTasks = !!r.hasMakefile;
|
|
817
|
-
const importDockerComposeTasks = !!r.hasDockerCompose;
|
|
818
|
-
this.draft.set(__spreadProps(__spreadValues({}, d), {
|
|
819
|
-
detected,
|
|
820
|
-
importScriptsAsTasks,
|
|
821
|
-
importMakefileTasks: importMakefileTasks && d.importMakefileTasks,
|
|
822
|
-
// 默认不强开
|
|
823
|
-
importDockerComposeTasks: importDockerComposeTasks && d.importDockerComposeTasks,
|
|
824
|
-
defaultTaskName: detected.recommendedScript || d.defaultTaskName
|
|
825
|
-
}));
|
|
826
|
-
});
|
|
827
|
-
}
|
|
828
|
-
async create() {
|
|
829
|
-
const d = this.draft();
|
|
830
|
-
if (!d.rootPath?.trim() || !d.name?.trim()) {
|
|
831
|
-
this.notify.error("\u8BF7\u5148\u5B8C\u5584\u9879\u76EE\u4FE1\u606F");
|
|
832
|
-
return;
|
|
833
|
-
}
|
|
834
|
-
if (this.creating())
|
|
835
|
-
return;
|
|
836
|
-
let nzTitle = "\u786E\u8BA4\u521B\u5EFA\u9879\u76EE\uFF1F", nzContent = `\u8BF7\u786E\u8BA4\u76EE\u6807\u8DEF\u5F84 ${d.rootPath}\uFF0C\u786E\u5B9A\u8981\u521B\u5EFA\u8BE5\u9879\u76EE\u5417\uFF1F`, nzOkText = "\u786E\u8BA4\u521B\u5EFA", nzOkDanger = false;
|
|
837
|
-
if (d.overwriteIfExists) {
|
|
838
|
-
nzTitle = "\u786E\u8BA4\u8986\u76D6\u5DF2\u5B58\u5728\u7684\u9879\u76EE\uFF1F";
|
|
839
|
-
nzContent = `\u8BF7\u786E\u8BA4\u76EE\u6807\u8DEF\u5F84 ${d.rootPath}\uFF0C\u521B\u5EFA\u65F6\u4F1A\u8986\u76D6\u539F\u6709\u6570\u636E\uFF0C\u4E14\u4E0D\u53EF\u6062\u590D\uFF0C\u786E\u5B9A\u8981\u7EE7\u7EED\u5417\uFF1F`;
|
|
840
|
-
nzOkText = "\u786E\u8BA4\u8986\u76D6";
|
|
841
|
-
nzOkDanger = true;
|
|
842
|
-
}
|
|
843
|
-
const modalRef = this.modal.confirm({
|
|
844
|
-
nzTitle,
|
|
845
|
-
nzContent,
|
|
846
|
-
nzOkText,
|
|
847
|
-
nzCancelText: "\u53D6\u6D88",
|
|
848
|
-
nzOkDanger,
|
|
849
|
-
nzCentered: true,
|
|
850
|
-
nzOnOk: async () => {
|
|
851
|
-
this.doCreate(d);
|
|
852
|
-
modalRef.close();
|
|
853
|
-
}
|
|
854
|
-
});
|
|
855
|
-
}
|
|
856
|
-
async doCreate(d) {
|
|
857
|
-
this.creating.set(true);
|
|
858
|
-
this.taskStream.ensureConnected();
|
|
859
|
-
const destroy$ = new Subject();
|
|
860
|
-
try {
|
|
861
|
-
const bootstrap$ = d.preset === "git" ? this.api.bootstrapByGit(d) : this.api.bootstrapByCli(d);
|
|
862
|
-
const { taskId } = await firstValueFrom(bootstrap$);
|
|
863
|
-
this.taskStream.subscribeTask(taskId, 3e3);
|
|
864
|
-
this.sub.add(this.taskStream.output$(taskId).subscribe((m) => {
|
|
865
|
-
const chunk = m.payload.text ?? "";
|
|
866
|
-
this.output.set(chunk);
|
|
867
|
-
}));
|
|
868
|
-
const firstEvt = await this.waitForTaskEvent(taskId, [
|
|
869
|
-
"bootstrapDone",
|
|
870
|
-
"bootstrapFailed",
|
|
871
|
-
"bootstrapNeedPickRoot"
|
|
872
|
-
], 10 * 60 * 1e3, destroy$);
|
|
873
|
-
if (firstEvt.type === "bootstrapDone") {
|
|
874
|
-
const payload = firstEvt.payload;
|
|
875
|
-
this.notify.success("\u9879\u76EE\u521B\u5EFA\u5B8C\u6210");
|
|
876
|
-
this.projectState.getProjects(payload.projectId);
|
|
877
|
-
this.modalRef.close({ ok: true });
|
|
878
|
-
this.router.navigate(["/dashboard"]);
|
|
879
|
-
return;
|
|
880
|
-
}
|
|
881
|
-
if (firstEvt.type === "bootstrapFailed") {
|
|
882
|
-
const payload = firstEvt.payload;
|
|
883
|
-
this.notify.error(`\u9879\u76EE\u521B\u5EFA\u5931\u8D25\uFF1A${payload?.reason ?? "unknown error"}`);
|
|
884
|
-
return;
|
|
885
|
-
}
|
|
886
|
-
const pickPayload = firstEvt.payload;
|
|
887
|
-
const candidates = pickPayload?.candidates ?? [];
|
|
888
|
-
if (!candidates.length) {
|
|
889
|
-
this.notify.error("\u9879\u76EE\u5BFC\u5165\u5931\u8D25\uFF1A\u672A\u627E\u5230\u53EF\u5BFC\u5165\u7684\u5DE5\u4F5C\u533A\u76EE\u5F55");
|
|
890
|
-
return;
|
|
891
|
-
}
|
|
892
|
-
const pickedRoot = await this.pickWorkspaceRootByModal(candidates);
|
|
893
|
-
if (!pickedRoot) {
|
|
894
|
-
this.modal.info({
|
|
895
|
-
nzTitle: "\u63D0\u793A",
|
|
896
|
-
nzContent: "\u60A8\u672A\u9009\u62E9\u4EFB\u4F55\u76EE\u5F55\uFF0C\u9879\u76EE\u5BFC\u5165\u5DF2\u53D6\u6D88\u3002\u53EF\u901A\u8FC7\u201C\u5BFC\u5165\u201D\u529F\u80FD\u91CD\u65B0\u624B\u52A8\u5BFC\u5165\u3002",
|
|
897
|
-
nzCancelText: null,
|
|
898
|
-
nzOkText: "\u6211\u77E5\u9053\u4E86",
|
|
899
|
-
nzOnOk: () => {
|
|
900
|
-
this.modalRef.close();
|
|
901
|
-
}
|
|
902
|
-
});
|
|
903
|
-
return;
|
|
904
|
-
}
|
|
905
|
-
const pickResult = await firstValueFrom(this.api.bootstrapPickRoot({ taskId, pickedRoot }).pipe(timeout(60 * 1e3), takeUntil(destroy$)));
|
|
906
|
-
if (!pickResult.ok) {
|
|
907
|
-
this.notify.error(pickResult.reason ?? "\u9879\u76EE\u5BFC\u5165\u5931\u8D25");
|
|
908
|
-
return;
|
|
909
|
-
}
|
|
910
|
-
this.notify.success("\u9879\u76EE\u5BFC\u5165\u5B8C\u6210");
|
|
911
|
-
this.projectState.getProjects(pickResult.projectId);
|
|
912
|
-
this.modalRef.close({ ok: true });
|
|
913
|
-
this.router.navigate(["/dashboard"]);
|
|
914
|
-
} catch (err) {
|
|
915
|
-
const msg = err?.name === "TimeoutError" ? "\u521B\u5EFA\u8D85\u65F6\uFF1A\u811A\u624B\u67B6/\u514B\u9686\u53EF\u80FD\u5361\u4F4F\u4E86\uFF0C\u8BF7\u67E5\u770B\u4EFB\u52A1\u65E5\u5FD7" : err?.error?.message || err?.message || "\u521B\u5EFA\u5931\u8D25";
|
|
916
|
-
console.error("\u521B\u5EFA\u9879\u76EE\u5931\u8D25", err);
|
|
917
|
-
this.notify.error(msg);
|
|
918
|
-
} finally {
|
|
919
|
-
destroy$.next();
|
|
920
|
-
destroy$.complete();
|
|
921
|
-
this.creating.set(false);
|
|
922
|
-
}
|
|
923
|
-
}
|
|
924
|
-
/**
|
|
925
|
-
* 等待指定 taskId 的某些事件类型之一出现(每次调用都会创建新订阅,避免 first() 复用导致丢事件)
|
|
926
|
-
*/
|
|
927
|
-
async waitForTaskEvent(taskId, types, timeoutMs, destroy$) {
|
|
928
|
-
const typeSet = new Set(types);
|
|
929
|
-
return await firstValueFrom(this.taskStream.events$().pipe(filter((e) => e?.payload?.taskId === taskId), filter((e) => typeSet.has(e.type)), first(), timeout(timeoutMs), takeUntil(destroy$)));
|
|
930
|
-
}
|
|
931
|
-
setDraft(d) {
|
|
932
|
-
this.draft.set(d);
|
|
933
|
-
}
|
|
934
|
-
canNext() {
|
|
935
|
-
const s = this.step();
|
|
936
|
-
const d = this.draft();
|
|
937
|
-
if (s === 0) {
|
|
938
|
-
if (!d.name?.trim())
|
|
939
|
-
return false;
|
|
940
|
-
if (!d.parentDir?.trim())
|
|
941
|
-
return false;
|
|
942
|
-
if (!d.rootPath?.trim())
|
|
943
|
-
return false;
|
|
944
|
-
return true;
|
|
945
|
-
}
|
|
946
|
-
if (s === 1) {
|
|
947
|
-
return !!d.rootPath?.trim();
|
|
948
|
-
}
|
|
949
|
-
return true;
|
|
950
|
-
}
|
|
951
|
-
async next() {
|
|
952
|
-
const s = this.step();
|
|
953
|
-
if (s === 0) {
|
|
954
|
-
const exists = await this.api.checkPathExists(this.draft().rootPath);
|
|
955
|
-
if (exists && !this.draft().overwriteIfExists) {
|
|
956
|
-
this.notify.error("\u8BE5\u8DEF\u5F84\u4E0D\u53EF\u7528\u6216\u5DF2\u5B58\u5728\u91CD\u590D\u9879\u76EE");
|
|
957
|
-
return;
|
|
958
|
-
}
|
|
959
|
-
}
|
|
960
|
-
const ns = Math.min(3, s + 1);
|
|
961
|
-
this.step.set(ns);
|
|
962
|
-
}
|
|
963
|
-
prev() {
|
|
964
|
-
this.step.set(Math.max(0, this.step() - 1));
|
|
965
|
-
}
|
|
966
|
-
canGoNext() {
|
|
967
|
-
const s = this.step();
|
|
968
|
-
if (s === 0)
|
|
969
|
-
return true;
|
|
970
|
-
if (s === 1)
|
|
971
|
-
return this.isManual();
|
|
972
|
-
if (s === 2)
|
|
973
|
-
return true;
|
|
974
|
-
return false;
|
|
975
|
-
}
|
|
976
|
-
isManual() {
|
|
977
|
-
return this.draft().preset === "manual";
|
|
978
|
-
}
|
|
979
|
-
canCreateHere() {
|
|
980
|
-
const s = this.step();
|
|
981
|
-
return this.isManual() && s === 3 || !this.isManual() && s === 1;
|
|
982
|
-
}
|
|
983
|
-
cancel() {
|
|
984
|
-
this.modal.confirm({
|
|
985
|
-
nzTitle: "\u53D6\u6D88\u521B\u5EFA\u9879\u76EE",
|
|
986
|
-
nzContent: "\u786E\u5B9A\u8981\u53D6\u6D88\u521B\u5EFA\u5417",
|
|
987
|
-
nzOkDanger: true,
|
|
988
|
-
nzOkText: "\u53D6\u6D88\u521B\u5EFA",
|
|
989
|
-
nzCancelText: "\u4E0D",
|
|
990
|
-
nzCentered: true,
|
|
991
|
-
nzOnOk: () => {
|
|
992
|
-
this.modalRef.close();
|
|
993
|
-
}
|
|
994
|
-
});
|
|
995
|
-
}
|
|
996
|
-
async pickWorkspaceRootByModal(candidates) {
|
|
997
|
-
const modal = this.modal.create({
|
|
998
|
-
nzTitle: "\u9009\u62E9\u8981\u5BFC\u5165\u7684\u5DE5\u4F5C\u533A\u76EE\u5F55",
|
|
999
|
-
nzContent: PickWorkspaceModalComponent,
|
|
1000
|
-
nzData: {
|
|
1001
|
-
candidates,
|
|
1002
|
-
defaultPicked: candidates[0]
|
|
1003
|
-
},
|
|
1004
|
-
nzFooter: null,
|
|
1005
|
-
nzCentered: true,
|
|
1006
|
-
nzMaskClosable: false,
|
|
1007
|
-
nzClosable: true,
|
|
1008
|
-
nzWidth: 720
|
|
1009
|
-
});
|
|
1010
|
-
const result = await firstValueFrom(modal.afterClose);
|
|
1011
|
-
return result?.pickedRoot ?? null;
|
|
1012
|
-
}
|
|
1013
|
-
};
|
|
1014
|
-
ProjectCreateModal = __decorate([
|
|
1015
|
-
Component({
|
|
1016
|
-
selector: "app-project-create-modal",
|
|
1017
|
-
imports: [
|
|
1018
|
-
CommonModule,
|
|
1019
|
-
FormsModule,
|
|
1020
|
-
NzModalModule,
|
|
1021
|
-
NzCardModule,
|
|
1022
|
-
NzGridModule,
|
|
1023
|
-
NzStepsModule,
|
|
1024
|
-
NzButtonModule,
|
|
1025
|
-
NzInputModule,
|
|
1026
|
-
NzIconModule,
|
|
1027
|
-
NzSpinModule,
|
|
1028
|
-
StepBasicComponent,
|
|
1029
|
-
StepPresetComponent,
|
|
1030
|
-
StepFeaturesComponent,
|
|
1031
|
-
StepConfigComponent,
|
|
1032
|
-
CreateSummaryAsideComponent
|
|
1033
|
-
],
|
|
1034
|
-
template: `
|
|
1035
|
-
<div nz-row nzJustify="start">
|
|
1036
|
-
<div nz-col nzSpan="24">
|
|
1037
|
-
<nz-steps [nzCurrent]="step()" >
|
|
1038
|
-
<nz-step nzTitle="\u8BE6\u60C5"></nz-step>
|
|
1039
|
-
<nz-step nzTitle="\u9884\u8BBE"></nz-step>
|
|
1040
|
-
<nz-step nzTitle="\u529F\u80FD"></nz-step>
|
|
1041
|
-
<nz-step nzTitle="\u914D\u7F6E"></nz-step>
|
|
1042
|
-
</nz-steps>
|
|
1043
|
-
<div class="content">
|
|
1044
|
-
<nz-spin [nzSpinning]="creating()" nzTip="\u6B63\u5728\u521B\u5EFA\u9879\u76EE...">
|
|
1045
|
-
<div class="main">
|
|
1046
|
-
@switch(step()){ @case(0){
|
|
1047
|
-
<app-step-basic [draft]="draft()" (draftChange)="setDraft($event)" />
|
|
1048
|
-
} @case(1){
|
|
1049
|
-
<app-step-preset
|
|
1050
|
-
[draft]="draft()"
|
|
1051
|
-
(draftChange)="setDraft($event)"
|
|
1052
|
-
(requestDetect)="detectNow()"
|
|
1053
|
-
/>
|
|
1054
|
-
} @case(2){
|
|
1055
|
-
<app-step-features [draft]="draft()" (draftChange)="setDraft($event)" />
|
|
1056
|
-
} @case(3){
|
|
1057
|
-
<app-step-config [draft]="draft()" (draftChange)="setDraft($event)" />
|
|
1058
|
-
} }
|
|
1059
|
-
<div class="actions">
|
|
1060
|
-
@if(step()===0){
|
|
1061
|
-
<button nz-button (click)="cancel()">
|
|
1062
|
-
<nz-icon nzType="close" nzTheme="outline" />
|
|
1063
|
-
\u53D6\u6D88
|
|
1064
|
-
</button>
|
|
1065
|
-
}
|
|
1066
|
-
|
|
1067
|
-
@if(step() > 0){
|
|
1068
|
-
<button nz-button (click)="prev()">
|
|
1069
|
-
<nz-icon nzType="arrow-left" nzTheme="outline" />
|
|
1070
|
-
\u4E0A\u4E00\u6B65
|
|
1071
|
-
</button>
|
|
1072
|
-
}
|
|
1073
|
-
|
|
1074
|
-
@if(canCreateHere()){
|
|
1075
|
-
<button nz-button nzType="primary" (click)="create()" [disabled]="creating()">
|
|
1076
|
-
<nz-icon nzType="check" nzTheme="outline" />
|
|
1077
|
-
\u521B\u5EFA\u9879\u76EE
|
|
1078
|
-
</button>
|
|
1079
|
-
} @else {
|
|
1080
|
-
<button nz-button nzType="primary" (click)="next()" [disabled]="!canNext() || !canGoNext()">
|
|
1081
|
-
\u4E0B\u4E00\u6B65
|
|
1082
|
-
<nz-icon nzType="arrow-right" nzTheme="outline" />
|
|
1083
|
-
</button>
|
|
1084
|
-
}
|
|
1085
|
-
</div>
|
|
1086
|
-
</div>
|
|
1087
|
-
</nz-spin>
|
|
1088
|
-
<div class="aside">
|
|
1089
|
-
<app-create-summary-aside [draft]="draft()" [(isCreating)]="creating" [chunk]="output()" />
|
|
1090
|
-
</div>
|
|
1091
|
-
</div>
|
|
1092
|
-
|
|
1093
|
-
</div>
|
|
1094
|
-
</div>
|
|
1095
|
-
`,
|
|
1096
|
-
styles: [project_create_modal_component_default]
|
|
1097
|
-
})
|
|
1098
|
-
], ProjectCreateModal);
|
|
1099
|
-
|
|
1100
|
-
// src/app/pages/projects/project-create/project-create.component.ts
|
|
1101
|
-
var ProjectCreateComponent = class ProjectCreateComponent2 {
|
|
1102
|
-
modal;
|
|
1103
|
-
constructor(modal) {
|
|
1104
|
-
this.modal = modal;
|
|
1105
|
-
}
|
|
1106
|
-
goCreate() {
|
|
1107
|
-
const modal = this.modal.create({
|
|
1108
|
-
nzTitle: "\u521B\u5EFA\u65B0\u9879\u76EE",
|
|
1109
|
-
nzFooter: null,
|
|
1110
|
-
nzMaskClosable: false,
|
|
1111
|
-
nzClosable: false,
|
|
1112
|
-
nzContent: ProjectCreateModal,
|
|
1113
|
-
nzWidth: "1020px",
|
|
1114
|
-
nzCentered: true
|
|
1115
|
-
});
|
|
1116
|
-
const instance = modal.getContentComponent();
|
|
1117
|
-
modal.afterClose.subscribe((data) => {
|
|
1118
|
-
if (data?.ok) {
|
|
1119
|
-
}
|
|
1120
|
-
});
|
|
1121
|
-
}
|
|
1122
|
-
static ctorParameters = () => [
|
|
1123
|
-
{ type: NzModalService }
|
|
1124
|
-
];
|
|
1125
|
-
};
|
|
1126
|
-
ProjectCreateComponent = __decorate([
|
|
1127
|
-
Component({
|
|
1128
|
-
selector: "app-project-create",
|
|
1129
|
-
imports: [
|
|
1130
|
-
CommonModule,
|
|
1131
|
-
NzButtonModule,
|
|
1132
|
-
NzGridModule,
|
|
1133
|
-
FsExplorerComponent,
|
|
1134
|
-
NzIconModule
|
|
1135
|
-
],
|
|
1136
|
-
template: `
|
|
1137
|
-
<div nz-row class="page">
|
|
1138
|
-
<div nz-col nzSpan="16" nzOffset="4" class="explorer-container">
|
|
1139
|
-
<app-fs-explorer></app-fs-explorer>
|
|
1140
|
-
</div>
|
|
1141
|
-
<div class="actions-bar">
|
|
1142
|
-
<button nz-button nzType="primary" nzSize="large" (click)="goCreate()">
|
|
1143
|
-
<nz-icon nzType="plus" nzTheme="outline" />
|
|
1144
|
-
\u5728\u6B64\u521B\u5EFA\u65B0\u9879\u76EE
|
|
1145
|
-
</button>
|
|
1146
|
-
</div>
|
|
1147
|
-
</div>
|
|
1148
|
-
`,
|
|
1149
|
-
styles: [project_create_component_default]
|
|
1150
|
-
})
|
|
1151
|
-
], ProjectCreateComponent);
|
|
1152
|
-
|
|
1153
|
-
// angular:jit:style:inline:src\app\pages\projects\project-import\project-import.component.ts;CiAgICAucGFnZSB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CgogICAgICAuZXhwbG9yZXItY29udGFpbmVyIHsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5hY3Rpb25zLWJhciB7CiAgICAgICAgZmxleDogMCAwIGF1dG87CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KICAgIH0KICA=
|
|
1154
|
-
var project_import_component_default = "/* angular:styles/component:less;c4f558d877aae693b48ead1419972780fc56160bf7e1b24f85914fbb0acd5b9a;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\project-import\\project-import.component.ts */\n.page {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.page .explorer-container {\n flex: 1 1 auto;\n height: 0;\n}\n.page .actions-bar {\n flex: 0 0 auto;\n padding: 16px;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n/*# sourceMappingURL=project-import.component.css.map */\n";
|
|
1155
|
-
|
|
1156
|
-
// src/app/pages/projects/services/project-import.state.service.ts
|
|
1157
|
-
var ProjectImportState = class ProjectImportState2 {
|
|
1158
|
-
fs = inject(FsExplorerService);
|
|
1159
|
-
projectApi = inject(ProjectApiService);
|
|
1160
|
-
projectState = inject(ProjectStateService);
|
|
1161
|
-
/** 是否处于 import 页面 */
|
|
1162
|
-
active = signal(false);
|
|
1163
|
-
checking = signal(false);
|
|
1164
|
-
result = signal(null);
|
|
1165
|
-
canImport = computed(() => this.result()?.ok === true);
|
|
1166
|
-
warnings = computed(() => this.result()?.warnings ?? []);
|
|
1167
|
-
reason = computed(() => this.result()?.reason ?? "");
|
|
1168
|
-
currentPath = computed(() => this.fs.currentPath() || this.fs.path());
|
|
1169
|
-
_seq = 0;
|
|
1170
|
-
notify = inject(UiNotifierService);
|
|
1171
|
-
constructor() {
|
|
1172
|
-
effect(() => {
|
|
1173
|
-
if (!this.active())
|
|
1174
|
-
return;
|
|
1175
|
-
const root = this.currentPath();
|
|
1176
|
-
if (!root)
|
|
1177
|
-
return;
|
|
1178
|
-
this.check(root);
|
|
1179
|
-
});
|
|
1180
|
-
}
|
|
1181
|
-
enter() {
|
|
1182
|
-
this.active.set(true);
|
|
1183
|
-
}
|
|
1184
|
-
leave() {
|
|
1185
|
-
this.active.set(false);
|
|
1186
|
-
this.result.set(null);
|
|
1187
|
-
}
|
|
1188
|
-
check(root) {
|
|
1189
|
-
const seq = ++this._seq;
|
|
1190
|
-
this.checking.set(true);
|
|
1191
|
-
this.result.set(null);
|
|
1192
|
-
this.projectApi.checkImport(root).subscribe({
|
|
1193
|
-
next: (res) => {
|
|
1194
|
-
if (seq !== this._seq)
|
|
1195
|
-
return;
|
|
1196
|
-
this.result.set(res);
|
|
1197
|
-
},
|
|
1198
|
-
error: (e) => {
|
|
1199
|
-
if (seq !== this._seq)
|
|
1200
|
-
return;
|
|
1201
|
-
this.result.set({
|
|
1202
|
-
ok: false,
|
|
1203
|
-
root,
|
|
1204
|
-
reason: e?.message || "check failed"
|
|
1205
|
-
});
|
|
1206
|
-
},
|
|
1207
|
-
complete: () => {
|
|
1208
|
-
if (seq !== this._seq)
|
|
1209
|
-
return;
|
|
1210
|
-
this.checking.set(false);
|
|
1211
|
-
}
|
|
1212
|
-
});
|
|
1213
|
-
}
|
|
1214
|
-
import(name) {
|
|
1215
|
-
const root = this.currentPath();
|
|
1216
|
-
if (!root || !this.canImport())
|
|
1217
|
-
return;
|
|
1218
|
-
const defaultName = root.replace(/[\\\/]+$/, "").split(/[\\\/]/).pop() || "New Project";
|
|
1219
|
-
this.projectApi.importByPath({
|
|
1220
|
-
root,
|
|
1221
|
-
name: name || defaultName,
|
|
1222
|
-
syncTasks: true
|
|
1223
|
-
}).subscribe({
|
|
1224
|
-
next: (res) => {
|
|
1225
|
-
this.projectState.getProjects();
|
|
1226
|
-
this.projectState.setCurrentProjectById(res.id);
|
|
1227
|
-
this.check(root);
|
|
1228
|
-
this.notify.success(`\u9879\u76EE\u5BFC\u5165\u6210\u529F`);
|
|
1229
|
-
}
|
|
1230
|
-
});
|
|
1231
|
-
}
|
|
1232
|
-
static ctorParameters = () => [];
|
|
1233
|
-
};
|
|
1234
|
-
ProjectImportState = __decorate([
|
|
1235
|
-
Injectable({ providedIn: "root" })
|
|
1236
|
-
], ProjectImportState);
|
|
1237
|
-
|
|
1238
|
-
// src/app/pages/projects/project-import/project-import.component.ts
|
|
1239
|
-
var ProjectImportComponent = class ProjectImportComponent2 {
|
|
1240
|
-
importState = inject(ProjectImportState);
|
|
1241
|
-
};
|
|
1242
|
-
ProjectImportComponent = __decorate([
|
|
1243
|
-
Component({
|
|
1244
|
-
selector: "app-project-import",
|
|
1245
|
-
imports: [
|
|
1246
|
-
CommonModule,
|
|
1247
|
-
FormsModule,
|
|
1248
|
-
NzGridModule,
|
|
1249
|
-
NzButtonModule,
|
|
1250
|
-
NzIconModule,
|
|
1251
|
-
FsExplorerComponent
|
|
1252
|
-
],
|
|
1253
|
-
template: `
|
|
1254
|
-
<div nz-row class="page">
|
|
1255
|
-
<div nz-col nzSpan="16" nzOffset="4" class="explorer-container">
|
|
1256
|
-
<app-fs-explorer></app-fs-explorer>
|
|
1257
|
-
</div>
|
|
1258
|
-
<div class="actions-bar center">
|
|
1259
|
-
<button nz-button nzSize="large" nzType="primary" (click)="importState.import()" [disabled]="importState.checking() || !importState.canImport()">
|
|
1260
|
-
<nz-icon nzType="import" nzTheme="outline" />
|
|
1261
|
-
\u5BFC\u5165\u8FD9\u4E2A\u6587\u4EF6\u5939
|
|
1262
|
-
</button>
|
|
1263
|
-
</div>
|
|
1264
|
-
</div>
|
|
1265
|
-
`,
|
|
1266
|
-
styles: [project_import_component_default]
|
|
1267
|
-
})
|
|
1268
|
-
], ProjectImportComponent);
|
|
1269
|
-
|
|
1270
|
-
// angular:jit:style:inline:src\app\pages\projects\project-list\project-list.component.ts;CiAgOmhvc3R7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGhlaWdodDogMTAwJTsKICAgIG92ZXJmbG93OmhpZGRlbjsKICB9CiAgICAucGFnZSB7CiAgICAgIGhlaWdodDoxMDAlOwogICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAudG9wYmFyewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICBuei1pbnB1dC13cmFwcGVyewogICAgICAgICAgd2lkdGg6MjUlOwogICAgICAgICAgbWluLXdpZHRoOjIwMHB4OwogICAgICAgIH0KICAgICAgfQogICAgICAuY29sewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQogICAgfQogICAgLmhlYWRlciB7CiAgICAgIHBhZGRpbmc6IDEycHggMDsKICAgICAgaDJ7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KICAgIH0gIAogIA==
|
|
1271
|
-
var project_list_component_default = "/* angular:styles/component:less;a6e237ce29db8f9aeec1a97922a209791ce9c1f3ebef1fb61cff62893bb07135;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\project-list\\project-list.component.ts */\n:host {\n display: block;\n height: 100%;\n overflow: hidden;\n}\n.page {\n height: 100%;\n overflow-y: auto;\n}\n.page .topbar {\n width: 100%;\n display: flex;\n justify-content: center;\n margin-bottom: 12px;\n}\n.page .topbar nz-input-wrapper {\n width: 25%;\n min-width: 200px;\n}\n.page .col {\n display: flex;\n flex-direction: column;\n}\n.header {\n padding: 12px 0;\n}\n.header h2 {\n margin: 0;\n font-weight: 600;\n}\n/*# sourceMappingURL=project-list.component.css.map */\n";
|
|
1272
|
-
|
|
1273
|
-
// angular:jit:style:inline:src\app\pages\projects\project-list\project-item.component.ts;CiAgICAucHJvamVjdC1pdGVtewogICAgICBib3JkZXItcmFkaXVzOjRweDsKICAgICAgcGFkZGluZzowOwogICAgICBtYXJnaW46OHB4IDA7CiAgICAgIHRyYW5zaXRpb246YWxsIC4zczsKICAgICAgY3Vyc29yOnBvaW50ZXI7CiAgICAgICYub3BlbiwgJjpob3ZlcnsKICAgICAgICBib3gtc2hhZG93OjAgNHB4IDEycHggcmdiYSgwLDAsMCwuMSk7CiAgICAgICAgYmFja2dyb3VuZDp2YXIoLS1hcHAtcHJpbWFyeS0zKTsKICAgICAgfQogICAgICAuY29udGVudHsKICAgICAgICAgIHBhZGRpbmc6IDE2cHg7CiAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmciBhdXRvOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvOwogICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczogImljb24gaW5mbyBhY3Rpb25zIjsKICAgICAgICAgIGdyaWQtZ2FwOiAxNnB4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKCiAgICAgICAgLmZhdm9yaXRlewogICAgICAgICAgZ3JpZC1hcmVhOiBpY29uOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLmluZm97CiAgICAgICAgICBncmlkLWFyZWE6IGluZm87CiAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAgIC5saXN0LWl0ZW0taW5mbyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgICAgIC5uYW1lewogICAgICAgICAgICAgIGZsZXg6IGF1dG8gMCAwOwogICAgICAgICAgICAgIC50YXNrLXBvcG92ZXItdHJpZ2dlcnsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgICAgICBuei1iYWRnZSB7CiAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZToxOHB4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAucm9vdC1wYXRoewogICAgICAgICAgICAgIGZsZXg6YXV0byAwIDA7CiAgICAgICAgICAgICAgb3BhY2l0eTowLjc7CiAgICAgICAgICAgICAgZm9udC1zaXplOjE0cHg7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgfQogICAg
|
|
1274
|
-
var project_item_component_default = '/* angular:styles/component:less;8c34310a0e14da96f4fd592557a86c32d709cf19b5d88f7932b178fae2cf6ea8;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\project-list\\project-item.component.ts */\n.project-item {\n border-radius: 4px;\n padding: 0;\n margin: 8px 0;\n transition: all 0.3s;\n cursor: pointer;\n}\n.project-item.open,\n.project-item:hover {\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n background: var(--app-primary-3);\n}\n.project-item .content {\n padding: 16px;\n display: grid;\n grid-template-columns: auto 1fr auto;\n grid-template-rows: auto;\n grid-template-areas: "icon info actions";\n grid-gap: 16px;\n align-items: center;\n}\n.project-item .content .favorite {\n grid-area: icon;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.project-item .content .info {\n grid-area: info;\n -webkit-user-select: none;\n user-select: none;\n}\n.project-item .content .info .list-item-info {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: center;\n gap: 4px;\n}\n.project-item .content .info .list-item-info .name {\n flex: auto 0 0;\n}\n.project-item .content .info .list-item-info .name .task-popover-trigger {\n display: inline-block;\n margin-left: 8px;\n cursor: pointer;\n}\n.project-item .content .info .list-item-info .name .task-popover-trigger nz-badge {\n font-size: 18px;\n}\n.project-item .content .info .list-item-info .root-path {\n flex: auto 0 0;\n opacity: 0.7;\n font-size: 14px;\n}\n/*# sourceMappingURL=project-item.component.css.map */\n';
|
|
1275
|
-
|
|
1276
|
-
// angular:jit:style:inline:src\app\pages\projects\project-list\project-item-popover.component.ts;CiAgICAuZHJvcGRvd24tY29udGVudHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgLnBhbmUtdG9vbGJhcnsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBwYWRkaW5nOiA2cHggNnB4IDZweCAxNnB4OwogICAgICAgICY+KnsKICAgICAgICAgIGZsZXg6IGF1dG8gMCAwOwogICAgICAgIH0KICAgICAgICAuaWNvbnsKICAgICAgICAgIGZvbnQtc2l6ZToxOHB4OwogICAgICAgICAgbWFyZ2luLXJpZ2h0OjZweDsKICAgICAgICB9CiAgICAgICAgLnRpdGxlewogICAgICAgICAgZmxleDogMTAwJSAxIDE7CiAgICAgICAgICB3aWR0aDogMDsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAtbXMtdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQogICAgICB9CiAgICAgIC50YXNrc3sKICAgICAgICB3aWR0aDozMjBweDsKICAgICAgICBtYXgtaGVpZ2h0OjM2MHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW4gYXV0bzsKICAgICAgICAudGFzay1pdGVtewogICAgICAgICAgcGFkZGluZzoxNnB4OwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgJjpob3ZlcnsKICAgICAgICAgICAgYmFja2dyb3VuZDojZjVmNWY1OwogICAgICAgICAgfQogICAgICAgICAgLml0ZW0tY29udGVudHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZmxleDogMTAwJSAxIDE7CiAgICAgICAgICAgIHdpZHRoOiAwOwogICAgICAgICAgICBnYXA6MTZweDsKICAgICAgICAgICAgY3Vyc29yOnBvaW50ZXI7CiAgICAgICAgICB9CiAgICAgICAgICAuaXRlbS1sb2dvewogICAgICAgICAgICBmb250LXNpemU6NDJweDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OjE2cHg7CiAgICAgICAgICAgIGZsZXg6IGF1dG8gMCAwOwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIH0KICAgICAgICAgIC5saXN0LWl0ZW0taW5mbyB7CiAgICAgICAgICAgIGZsZXg6IDEwMCUgMSAxOwogICAgICAgICAgICB3aWR0aDogMDsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICAuZGVzY3JpcHRpb257CiAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBidXR0b257CiAgICAgICAgICAgIGZsZXg6IGF1dG8gMCAwOwogICAgICAgICAgICBuei1pY29uewogICAgICAgICAgICAgIGZvbnQtc2l6ZToyNHB4OwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIA==
|
|
1277
|
-
var project_item_popover_component_default = "/* angular:styles/component:less;a3e12c60aee6315c488faab00515e2b272f207c0582a4e588555f216037cd542;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\project-list\\project-item-popover.component.ts */\n.dropdown-content {\n display: flex;\n flex-direction: column;\n}\n.dropdown-content .pane-toolbar {\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 6px 6px 6px 16px;\n}\n.dropdown-content .pane-toolbar > * {\n flex: auto 0 0;\n}\n.dropdown-content .pane-toolbar .icon {\n font-size: 18px;\n margin-right: 6px;\n}\n.dropdown-content .pane-toolbar .title {\n flex: 100% 1 1;\n width: 0;\n overflow: hidden;\n -ms-text-overflow: ellipsis;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.dropdown-content .tasks {\n width: 320px;\n max-height: 360px;\n overflow: hidden auto;\n}\n.dropdown-content .tasks .task-item {\n padding: 16px;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n.dropdown-content .tasks .task-item:hover {\n background: #f5f5f5;\n}\n.dropdown-content .tasks .task-item .item-content {\n display: flex;\n flex-direction: row;\n align-items: center;\n flex: 100% 1 1;\n width: 0;\n gap: 16px;\n cursor: pointer;\n}\n.dropdown-content .tasks .task-item .item-logo {\n font-size: 42px;\n margin-right: 16px;\n flex: auto 0 0;\n display: inline-flex;\n align-items: center;\n}\n.dropdown-content .tasks .task-item .list-item-info {\n flex: 100% 1 1;\n width: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n justify-content: center;\n}\n.dropdown-content .tasks .task-item .list-item-info .description {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.dropdown-content .tasks .task-item button {\n flex: auto 0 0;\n}\n.dropdown-content .tasks .task-item button nz-icon {\n font-size: 24px;\n}\n/*# sourceMappingURL=project-item-popover.component.css.map */\n";
|
|
1278
|
-
|
|
1279
|
-
// src/app/pages/projects/project-list/project-item-popover.component.ts
|
|
1280
|
-
var ProjectItemPopoverComponent = class ProjectItemPopoverComponent2 {
|
|
1281
|
-
projectId;
|
|
1282
|
-
projectState = inject(ProjectStateService);
|
|
1283
|
-
router = inject(Router);
|
|
1284
|
-
state = inject(TaskStateService);
|
|
1285
|
-
tasks = computed(() => {
|
|
1286
|
-
if (!this.projectId)
|
|
1287
|
-
return [];
|
|
1288
|
-
return this.state.rowsViewOf(this.projectId)();
|
|
1289
|
-
});
|
|
1290
|
-
async ngOnChanges() {
|
|
1291
|
-
if (this.projectId) {
|
|
1292
|
-
await this.state.ensureProjectLoaded(this.projectId);
|
|
1293
|
-
}
|
|
1294
|
-
}
|
|
1295
|
-
toggleTask(task) {
|
|
1296
|
-
if (task.runtime?.status === "running") {
|
|
1297
|
-
this.state.stopSelected();
|
|
1298
|
-
} else {
|
|
1299
|
-
this.state.startSelected();
|
|
1300
|
-
}
|
|
1301
|
-
this.openTask(task);
|
|
1302
|
-
}
|
|
1303
|
-
async openTask(task) {
|
|
1304
|
-
this.state.select(task.spec.id);
|
|
1305
|
-
await this.router.navigate(["/tasks"]);
|
|
1306
|
-
this.projectState.setCurrentProjectById(task.spec.projectId);
|
|
1307
|
-
}
|
|
1308
|
-
getTaskName(task) {
|
|
1309
|
-
return task.spec.name || task.spec.id;
|
|
1310
|
-
}
|
|
1311
|
-
getTaskDescription(task) {
|
|
1312
|
-
const st = task.runtime?.status;
|
|
1313
|
-
return task.runtime ? this.computedStatusText(st) : task.spec.description || "";
|
|
1314
|
-
}
|
|
1315
|
-
getTaskActionIcon(task) {
|
|
1316
|
-
const st = task.runtime?.status;
|
|
1317
|
-
return st === "running" || st === "stopping" ? "pause-circle" : "play-circle";
|
|
1318
|
-
}
|
|
1319
|
-
computedStatusText(status) {
|
|
1320
|
-
switch (status) {
|
|
1321
|
-
case "running":
|
|
1322
|
-
return "\u8FD0\u884C\u4E2D";
|
|
1323
|
-
case "stopping":
|
|
1324
|
-
return "\u505C\u6B62\u4E2D";
|
|
1325
|
-
case "success":
|
|
1326
|
-
return "\u6210\u529F";
|
|
1327
|
-
case "failed":
|
|
1328
|
-
return "\u9519\u8BEF";
|
|
1329
|
-
case "stopped":
|
|
1330
|
-
return "\u5DF2\u505C\u6B62";
|
|
1331
|
-
default:
|
|
1332
|
-
return "\u7A7A\u95F2";
|
|
1333
|
-
}
|
|
1334
|
-
}
|
|
1335
|
-
static propDecorators = {
|
|
1336
|
-
projectId: [{ type: Input }]
|
|
1337
|
-
};
|
|
1338
|
-
};
|
|
1339
|
-
ProjectItemPopoverComponent = __decorate([
|
|
1340
|
-
Component({
|
|
1341
|
-
selector: "app-project-item-popover",
|
|
1342
|
-
imports: [CommonModule, NzIconModule, NzButtonModule, NzTooltipModule, RouterModule],
|
|
1343
|
-
template: `
|
|
1344
|
-
<div class="dropdown-content">
|
|
1345
|
-
<div class="pane-toolbar">
|
|
1346
|
-
<div class="icon">
|
|
1347
|
-
<nz-icon nzType="inbox" nzTheme="outline" />
|
|
1348
|
-
</div>
|
|
1349
|
-
<div class="title">\u4EFB\u52A1</div>
|
|
1350
|
-
<button nz-button type="button" nzType="text">
|
|
1351
|
-
<nz-icon nzType="close" nzTheme="outline" />
|
|
1352
|
-
</button>
|
|
1353
|
-
</div>
|
|
1354
|
-
<div class="tasks">
|
|
1355
|
-
@for( task of tasks();track task.spec.id){
|
|
1356
|
-
<div class="task-item" nz-tooltip [nzTooltipTitle]="getTaskDescription(task)" nzTooltipPlacement="right">
|
|
1357
|
-
<div class="item-content" (click)="openTask(task)">
|
|
1358
|
-
<div class="item-logo">
|
|
1359
|
-
<nz-icon nzType="code" nzTheme="outline" />
|
|
1360
|
-
</div>
|
|
1361
|
-
<div class="list-item-info">
|
|
1362
|
-
<div class="name">
|
|
1363
|
-
<span>{{task.spec.name}}</span>
|
|
1364
|
-
</div>
|
|
1365
|
-
<div class="description">
|
|
1366
|
-
<span>{{ getTaskDescription(task) }}</span>
|
|
1367
|
-
</div>
|
|
1368
|
-
</div>
|
|
1369
|
-
</div>
|
|
1370
|
-
<button nz-button nzType="text" type="button" (click)="$event.stopPropagation(); toggleTask(task)">
|
|
1371
|
-
<nz-icon [nzType]="getTaskActionIcon(task)" nzTheme="outline" />
|
|
1372
|
-
</button>
|
|
1373
|
-
</div>
|
|
1374
|
-
}
|
|
1375
|
-
</div>
|
|
1376
|
-
</div>
|
|
1377
|
-
`,
|
|
1378
|
-
styles: [project_item_popover_component_default]
|
|
1379
|
-
})
|
|
1380
|
-
], ProjectItemPopoverComponent);
|
|
1381
|
-
|
|
1382
|
-
// src/app/pages/projects/project-list/project-item.component.ts
|
|
1383
|
-
var ProjectItem = class ProjectItem2 {
|
|
1384
|
-
taskRuntime = inject(TaskRuntimeStore);
|
|
1385
|
-
notify = inject(UiNotifierService);
|
|
1386
|
-
project = null;
|
|
1387
|
-
open = false;
|
|
1388
|
-
selectProject = new EventEmitter();
|
|
1389
|
-
toggleFavorite = new EventEmitter();
|
|
1390
|
-
editProject = new EventEmitter();
|
|
1391
|
-
openInEditor = new EventEmitter();
|
|
1392
|
-
deleteProject = new EventEmitter();
|
|
1393
|
-
/** 运行中任务数(running/stopping) */
|
|
1394
|
-
tasksRunningCount = computed(() => {
|
|
1395
|
-
const pid = this.project?.id?.trim();
|
|
1396
|
-
if (!pid)
|
|
1397
|
-
return 0;
|
|
1398
|
-
return this.taskRuntime.runningCountSignal(pid)();
|
|
1399
|
-
});
|
|
1400
|
-
/** 是否有任务占用中 */
|
|
1401
|
-
hasTasksRunning = computed(() => {
|
|
1402
|
-
return this.tasksRunningCount() > 0;
|
|
1403
|
-
});
|
|
1404
|
-
/** tooltip 文案 */
|
|
1405
|
-
taskBadgeTip = computed(() => {
|
|
1406
|
-
const n = this.tasksRunningCount();
|
|
1407
|
-
return n > 0 ? `${n} \u4E2A\u4EFB\u52A1\u6B63\u5728\u8FD0\u884C` : "\u4EFB\u52A1";
|
|
1408
|
-
});
|
|
1409
|
-
del() {
|
|
1410
|
-
if (this.hasTasksRunning()) {
|
|
1411
|
-
this.notify.warn("\u5F53\u524D\u9879\u76EE\u6709\u4EFB\u52A1\u6B63\u5728\u8FD0\u884C\uFF0C\u8BF7\u5148\u505C\u6B62\u8FD9\u4E9B\u4EFB\u52A1\u540E\u518D\u5220\u9664\u9879\u76EE\u3002");
|
|
1412
|
-
return;
|
|
1413
|
-
}
|
|
1414
|
-
this.deleteProject.emit();
|
|
1415
|
-
}
|
|
1416
|
-
openPageUrl(url) {
|
|
1417
|
-
if (url) {
|
|
1418
|
-
window.open(url, "_blank");
|
|
1419
|
-
}
|
|
1420
|
-
}
|
|
1421
|
-
static propDecorators = {
|
|
1422
|
-
project: [{ type: Input }],
|
|
1423
|
-
open: [{ type: Input }],
|
|
1424
|
-
selectProject: [{ type: Output }],
|
|
1425
|
-
toggleFavorite: [{ type: Output }],
|
|
1426
|
-
editProject: [{ type: Output }],
|
|
1427
|
-
openInEditor: [{ type: Output }],
|
|
1428
|
-
deleteProject: [{ type: Output }]
|
|
1429
|
-
};
|
|
1430
|
-
};
|
|
1431
|
-
ProjectItem = __decorate([
|
|
1432
|
-
Component({
|
|
1433
|
-
selector: "app-project-item",
|
|
1434
|
-
imports: [CommonModule, FormsModule, NzGridModule, NzButtonModule, NzIconModule, NzPopoverModule, NzBadgeModule, NzSpaceModule, ProjectItemPopoverComponent, NzTooltipDirective],
|
|
1435
|
-
template: `
|
|
1436
|
-
<div nz-row class="project-item" [class.open]="open">
|
|
1437
|
-
<div nz-col nzSpan="24" class="content">
|
|
1438
|
-
<div class="favorite">
|
|
1439
|
-
<button nz-button nzType="primary" (click)="$event.stopPropagation();toggleFavorite.emit()">
|
|
1440
|
-
<nz-icon nzType="star" [nzTheme]="project?.isFavorite ? 'fill' : 'outline'"></nz-icon>
|
|
1441
|
-
</button>
|
|
1442
|
-
</div>
|
|
1443
|
-
<div class="info" (click)="selectProject.emit()">
|
|
1444
|
-
<div class="list-item-info">
|
|
1445
|
-
<div class="name">
|
|
1446
|
-
<span>{{ project?.name }}</span>
|
|
1447
|
-
<span
|
|
1448
|
-
class="task-popover-trigger"
|
|
1449
|
-
(click)="$event.stopPropagation()"
|
|
1450
|
-
nz-popover
|
|
1451
|
-
nzPopoverTrigger="click"
|
|
1452
|
-
[nzPopoverContent]="contentTemplate"
|
|
1453
|
-
nzPopoverPlacement="right"
|
|
1454
|
-
[nzPopoverOverlayClassName]="'project-item-popover'"
|
|
1455
|
-
>
|
|
1456
|
-
<nz-badge
|
|
1457
|
-
[nzStatus]="hasTasksRunning() ? 'processing' : 'default'"
|
|
1458
|
-
[nz-tooltip]="taskBadgeTip()">
|
|
1459
|
-
</nz-badge>
|
|
1460
|
-
</span>
|
|
1461
|
-
</div>
|
|
1462
|
-
<div class="root-path">
|
|
1463
|
-
<span>{{ project?.root }}</span>
|
|
1464
|
-
</div>
|
|
1465
|
-
</div>
|
|
1466
|
-
</div>
|
|
1467
|
-
<div class="actions">
|
|
1468
|
-
<nz-space nzSize="large">
|
|
1469
|
-
<button nz-button nzType="primary" (click)="openInEditor.emit()">
|
|
1470
|
-
<nz-icon nzType="code" nzTheme="outline"/>
|
|
1471
|
-
<span>\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00</span>
|
|
1472
|
-
</button>
|
|
1473
|
-
<button nz-button nzType="primary" (click)="editProject.emit()" nz-tooltip="\u7F16\u8F91">
|
|
1474
|
-
<nz-icon nzType="edit" nzTheme="outline"/>
|
|
1475
|
-
</button>
|
|
1476
|
-
@if(project?.repoPageUrl){
|
|
1477
|
-
<button nz-button nzType="primary" (click)="openPageUrl(project?.repoPageUrl)" nz-tooltip="\u6253\u5F00\u4ED3\u5E93\u5730\u5740">
|
|
1478
|
-
<nz-icon nzType="global" nzTheme="outline"/>
|
|
1479
|
-
</button>
|
|
1480
|
-
}
|
|
1481
|
-
<button nz-button nzType="primary" (click)="del()" nz-tooltip="\u5220\u9664">
|
|
1482
|
-
<nz-icon nzType="delete" nzTheme="outline"/>
|
|
1483
|
-
</button>
|
|
1484
|
-
</nz-space>
|
|
1485
|
-
</div>
|
|
1486
|
-
</div>
|
|
1487
|
-
</div>
|
|
1488
|
-
|
|
1489
|
-
<ng-template #contentTemplate>
|
|
1490
|
-
<app-project-item-popover [projectId]="project?.id"></app-project-item-popover>
|
|
1491
|
-
</ng-template>
|
|
1492
|
-
`,
|
|
1493
|
-
styles: [project_item_component_default]
|
|
1494
|
-
})
|
|
1495
|
-
], ProjectItem);
|
|
1496
|
-
|
|
1497
|
-
// src/app/pages/projects/project-list/project-list.component.ts
|
|
1498
|
-
var ProjectListComponent = class ProjectListComponent2 {
|
|
1499
|
-
projectState = inject(ProjectStateService);
|
|
1500
|
-
};
|
|
1501
|
-
ProjectListComponent = __decorate([
|
|
1502
|
-
Component({
|
|
1503
|
-
selector: "app-project-list",
|
|
1504
|
-
imports: [CommonModule, FormsModule, NzCardModule, NzGridModule, ProjectItem, NzEmptyModule, NzInputModule, NzIconModule],
|
|
1505
|
-
template: `
|
|
1506
|
-
<div nz-row class="page">
|
|
1507
|
-
<div nz-col nzSpan="16" nzOffset="4" class="col">
|
|
1508
|
-
<div nz-col class="topbar">
|
|
1509
|
-
<nz-input-wrapper>
|
|
1510
|
-
<nz-icon class="search-icon" nzInputPrefix nzType="search" />
|
|
1511
|
-
<input
|
|
1512
|
-
nz-input
|
|
1513
|
-
placeholder="\u641C\u7D22\u9879\u76EE"
|
|
1514
|
-
[ngModel]="projectState.keyword()"
|
|
1515
|
-
(ngModelChange)="projectState.keyword.set($event)"
|
|
1516
|
-
/>
|
|
1517
|
-
</nz-input-wrapper>
|
|
1518
|
-
</div>
|
|
1519
|
-
@if(projectState.favoriteProjects().length > 0){
|
|
1520
|
-
<div class="header">
|
|
1521
|
-
<h2>\u6536\u85CF\u7684\u9879\u76EE</h2>
|
|
1522
|
-
</div>
|
|
1523
|
-
<ng-container *ngTemplateOutlet="itemsTpl; context: { $implicit: projectState.favoriteProjects()}"></ng-container>
|
|
1524
|
-
}
|
|
1525
|
-
@if(projectState.favoriteProjects().length > 0){
|
|
1526
|
-
<div class="header">
|
|
1527
|
-
<h2>\u66F4\u591A\u9879\u76EE</h2>
|
|
1528
|
-
</div>
|
|
1529
|
-
}
|
|
1530
|
-
<ng-container *ngTemplateOutlet="itemsTpl; context: { $implicit: projectState.moreProjects()}"></ng-container>
|
|
1531
|
-
@if(projectState.projects().length === 0){
|
|
1532
|
-
<div class="no-projects">
|
|
1533
|
-
<nz-empty nzNotFoundImage="simple" nzNotFoundContent="\u6682\u65E0\u9879\u76EE\uFF0C\u5FEB\u53BB\u521B\u5EFA\u6216\u5BFC\u5165\u7B2C\u4E00\u4E2A\u9879\u76EE\u5427\uFF01"></nz-empty>
|
|
1534
|
-
</div>
|
|
1535
|
-
}
|
|
1536
|
-
</div>
|
|
1537
|
-
<ng-template #itemsTpl let-projects>
|
|
1538
|
-
<div class="content">
|
|
1539
|
-
@for (project of projects; track project.id) {
|
|
1540
|
-
<app-project-item
|
|
1541
|
-
[project] ="project"
|
|
1542
|
-
(selectProject)="projectState.selectProject(project)"
|
|
1543
|
-
(toggleFavorite)="projectState.toggleFavorite(project.id)"
|
|
1544
|
-
(openInEditor)="projectState.openInEditor(project.id)"
|
|
1545
|
-
(editProject)="projectState.openEditModal(project)"
|
|
1546
|
-
(deleteProject)="projectState.deleteProject(project.id)"
|
|
1547
|
-
[project]="project"
|
|
1548
|
-
[open]="projectState.isOpen(project)">
|
|
1549
|
-
</app-project-item>
|
|
1550
|
-
}
|
|
1551
|
-
</div>
|
|
1552
|
-
</ng-template>
|
|
1553
|
-
</div>`,
|
|
1554
|
-
styles: [project_list_component_default]
|
|
1555
|
-
})
|
|
1556
|
-
], ProjectListComponent);
|
|
1557
|
-
|
|
1558
|
-
// src/app/pages/projects/projects.component.ts
|
|
1559
|
-
var ProjectsComponent = class ProjectsComponent2 {
|
|
1560
|
-
importState = inject(ProjectImportState);
|
|
1561
|
-
selectedIndex = 0;
|
|
1562
|
-
tabIndexChange(index) {
|
|
1563
|
-
if (index === 2) {
|
|
1564
|
-
this.importState.active.set(true);
|
|
1565
|
-
} else {
|
|
1566
|
-
this.importState.active.set(false);
|
|
1567
|
-
}
|
|
1568
|
-
}
|
|
1569
|
-
};
|
|
1570
|
-
ProjectsComponent = __decorate([
|
|
1571
|
-
Component({
|
|
1572
|
-
selector: "app-projects",
|
|
1573
|
-
imports: [CommonModule, NzTabsModule, NzIconModule, ProjectListComponent, ProjectCreateComponent, ProjectImportComponent],
|
|
1574
|
-
template: `
|
|
1575
|
-
<div class="page">
|
|
1576
|
-
<div class="header">
|
|
1577
|
-
<h2>\u9879\u76EE\u7BA1\u7406</h2>
|
|
1578
|
-
</div>
|
|
1579
|
-
<nz-tabs nzCentered class="tabs-container" [(nzSelectedIndex)]="selectedIndex" (nzSelectedIndexChange)="tabIndexChange($event)">
|
|
1580
|
-
<nz-tab [nzTitle]="projectTitleTemplate">
|
|
1581
|
-
<ng-template #projectTitleTemplate>
|
|
1582
|
-
<nz-icon nzType="unordered-list" nzTheme="outline" />
|
|
1583
|
-
\u9879\u76EE
|
|
1584
|
-
</ng-template>
|
|
1585
|
-
<ng-template nz-tab>
|
|
1586
|
-
<app-project-list></app-project-list>
|
|
1587
|
-
</ng-template>
|
|
1588
|
-
</nz-tab>
|
|
1589
|
-
<nz-tab [nzTitle]="addTitleTemplate">
|
|
1590
|
-
<ng-template #addTitleTemplate>
|
|
1591
|
-
<nz-icon nzType="plus-square" nzTheme="outline" />
|
|
1592
|
-
\u521B\u5EFA
|
|
1593
|
-
</ng-template>
|
|
1594
|
-
<ng-template nz-tab>
|
|
1595
|
-
<app-project-create></app-project-create>
|
|
1596
|
-
</ng-template>
|
|
1597
|
-
</nz-tab>
|
|
1598
|
-
<nz-tab [nzTitle]="importTitleTemplate">
|
|
1599
|
-
<ng-template #importTitleTemplate>
|
|
1600
|
-
<nz-icon nzType="import" nzTheme="outline" />
|
|
1601
|
-
\u5BFC\u5165
|
|
1602
|
-
</ng-template>
|
|
1603
|
-
<ng-template nz-tab>
|
|
1604
|
-
<app-project-import></app-project-import>
|
|
1605
|
-
</ng-template>
|
|
1606
|
-
</nz-tab>
|
|
1607
|
-
</nz-tabs>
|
|
1608
|
-
</div>
|
|
1609
|
-
`,
|
|
1610
|
-
styles: [projects_component_default]
|
|
1611
|
-
})
|
|
1612
|
-
], ProjectsComponent);
|
|
1613
|
-
|
|
1614
|
-
// src/app/pages/projects/projects-routing-module.ts
|
|
1615
|
-
var routes = [
|
|
1616
|
-
{ path: "", component: ProjectsComponent }
|
|
1617
|
-
];
|
|
1618
|
-
var ProjectsRoutingModule = class ProjectsRoutingModule2 {
|
|
1619
|
-
};
|
|
1620
|
-
ProjectsRoutingModule = __decorate([
|
|
1621
|
-
NgModule({
|
|
1622
|
-
imports: [RouterModule.forChild(routes)],
|
|
1623
|
-
exports: [RouterModule]
|
|
1624
|
-
})
|
|
1625
|
-
], ProjectsRoutingModule);
|
|
1626
|
-
|
|
1627
|
-
// src/app/pages/projects/projects-module.ts
|
|
1628
|
-
var ProjectsModule = class ProjectsModule2 {
|
|
1629
|
-
};
|
|
1630
|
-
ProjectsModule = __decorate([
|
|
1631
|
-
NgModule({
|
|
1632
|
-
declarations: [],
|
|
1633
|
-
imports: [
|
|
1634
|
-
CommonModule,
|
|
1635
|
-
ProjectsRoutingModule
|
|
1636
|
-
]
|
|
1637
|
-
})
|
|
1638
|
-
], ProjectsModule);
|
|
1639
|
-
export {
|
|
1640
|
-
ProjectsModule
|
|
1641
|
-
};
|
|
1642
|
-
//# sourceMappingURL=chunk-W5HGHCQT.js.map
|