├── .gitignore ├── .husky └── pre-commit ├── CHANGELOG.md ├── LICENSE ├── README.md ├── composer.json ├── composer.lock ├── config.yaml ├── craft ├── craft.bat ├── doc ├── build_cmd.md ├── data.md ├── deploy_dirs.md ├── env_req.md ├── source_arch.md ├── tips.md └── todo.md ├── resource ├── backend │ ├── thinkphp │ │ └── src │ │ │ ├── LICENSE.txt │ │ │ ├── README.md │ │ │ ├── app │ │ │ ├── .htaccess │ │ │ ├── AppService.php │ │ │ ├── BaseController.php │ │ │ ├── ExceptionHandle.php │ │ │ ├── Request.php │ │ │ ├── common.php │ │ │ ├── controller │ │ │ │ └── Index.php │ │ │ ├── event.php │ │ │ ├── middleware.php │ │ │ ├── provider.php │ │ │ └── service.php │ │ │ ├── composer.json │ │ │ ├── config │ │ │ ├── app.php │ │ │ ├── cache.php │ │ │ ├── console.php │ │ │ ├── cookie.php │ │ │ ├── database.php │ │ │ ├── filesystem.php │ │ │ ├── lang.php │ │ │ ├── log.php │ │ │ ├── middleware.php │ │ │ ├── route.php │ │ │ ├── session.php │ │ │ └── view.php │ │ │ ├── extend │ │ │ └── .gitignore │ │ │ ├── public │ │ │ ├── .htaccess │ │ │ ├── favicon.ico │ │ │ ├── index.php │ │ │ ├── robots.txt │ │ │ ├── router.php │ │ │ └── static │ │ │ │ └── .gitignore │ │ │ ├── route │ │ │ └── app.php │ │ │ ├── runtime │ │ │ └── .gitignore │ │ │ ├── think │ │ │ ├── vendor │ │ │ └── .gitignore │ │ │ └── view │ │ │ └── README.md │ └── webman │ │ ├── rule.yaml │ │ └── src │ │ ├── .github │ │ └── FUNDING.yml │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── app │ │ ├── controller │ │ │ └── Index.php │ │ ├── functions.php │ │ ├── middleware │ │ │ └── StaticFile.php │ │ ├── model │ │ │ └── Test.php │ │ └── view │ │ │ └── index │ │ │ └── view.html │ │ ├── composer.json │ │ ├── composer.lock │ │ ├── config │ │ ├── app.php │ │ ├── autoload.php │ │ ├── bootstrap.php │ │ ├── container.php │ │ ├── database.php │ │ ├── dependence.php │ │ ├── exception.php │ │ ├── log.php │ │ ├── middleware.php │ │ ├── process.php │ │ ├── redis.php │ │ ├── route.php │ │ ├── server.php │ │ ├── session.php │ │ ├── static.php │ │ ├── translation.php │ │ └── view.php │ │ ├── process │ │ └── Monitor.php │ │ ├── public │ │ ├── 404.html │ │ └── favicon.ico │ │ ├── runtime │ │ ├── .gitignore │ │ ├── logs │ │ │ └── .gitignore │ │ └── views │ │ │ └── .gitignore │ │ ├── start.php │ │ ├── support │ │ ├── Plugin.php │ │ ├── Request.php │ │ ├── Response.php │ │ ├── bootstrap.php │ │ └── helpers.php │ │ ├── windows.bat │ │ └── windows.php ├── document │ ├── mdbook │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── vuepress │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ └── zola │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ └── .gitkeep │ │ └── tmpl │ │ └── .gitkeep ├── frontend │ └── react-antd-umi │ │ ├── rule.yaml │ │ └── src │ │ ├── .editorconfig │ │ ├── .eslintignore │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .prettierignore │ │ ├── .prettierrc.js │ │ ├── .stylelintrc.js │ │ ├── README.md │ │ ├── config │ │ ├── config.dev.ts │ │ ├── config.ts │ │ ├── defaultSettings.ts │ │ ├── oneapi.json │ │ ├── proxy.ts │ │ └── routes.ts │ │ ├── jest.config.js │ │ ├── jsconfig.json │ │ ├── mock │ │ ├── listTableList.ts │ │ ├── notices.ts │ │ ├── route.ts │ │ └── user.ts │ │ ├── package.json │ │ ├── public │ │ ├── CNAME │ │ ├── favicon.ico │ │ ├── icons │ │ │ ├── icon-128x128.png │ │ │ ├── icon-192x192.png │ │ │ └── icon-512x512.png │ │ ├── logo.svg │ │ └── pro_icon.svg │ │ ├── src │ │ ├── access.ts │ │ ├── app.tsx │ │ ├── components │ │ │ ├── Footer │ │ │ │ └── index.tsx │ │ │ ├── HeaderDropdown │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── HeaderSearch │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── NoticeIcon │ │ │ │ ├── NoticeIcon.tsx │ │ │ │ ├── NoticeList.less │ │ │ │ ├── NoticeList.tsx │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ ├── RightContent │ │ │ │ ├── AvatarDropdown.tsx │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ └── index.md │ │ ├── e2e │ │ │ └── baseLayout.e2e.js │ │ ├── global.less │ │ ├── global.tsx │ │ ├── locales │ │ │ ├── bn-BD.ts │ │ │ ├── bn-BD │ │ │ │ ├── component.ts │ │ │ │ ├── globalHeader.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── pages.ts │ │ │ │ ├── pwa.ts │ │ │ │ ├── settingDrawer.ts │ │ │ │ └── settings.ts │ │ │ ├── en-US.ts │ │ │ ├── en-US │ │ │ │ ├── component.ts │ │ │ │ ├── globalHeader.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── pages.ts │ │ │ │ ├── pwa.ts │ │ │ │ ├── settingDrawer.ts │ │ │ │ └── settings.ts │ │ │ ├── fa-IR.ts │ │ │ ├── fa-IR │ │ │ │ ├── component.ts │ │ │ │ ├── globalHeader.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── pages.ts │ │ │ │ ├── pwa.ts │ │ │ │ ├── settingDrawer.ts │ │ │ │ └── settings.ts │ │ │ ├── id-ID.ts │ │ │ ├── id-ID │ │ │ │ ├── component.ts │ │ │ │ ├── globalHeader.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── pages.ts │ │ │ │ ├── pwa.ts │ │ │ │ ├── settingDrawer.ts │ │ │ │ └── settings.ts │ │ │ ├── ja-JP.ts │ │ │ ├── ja-JP │ │ │ │ ├── component.ts │ │ │ │ ├── globalHeader.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── pages.ts │ │ │ │ ├── pwa.ts │ │ │ │ ├── settingDrawer.ts │ │ │ │ └── settings.ts │ │ │ ├── pt-BR.ts │ │ │ ├── pt-BR │ │ │ │ ├── component.ts │ │ │ │ ├── globalHeader.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── pages.ts │ │ │ │ ├── pwa.ts │ │ │ │ ├── settingDrawer.ts │ │ │ │ └── settings.ts │ │ │ ├── zh-CN.ts │ │ │ ├── zh-CN │ │ │ │ ├── component.ts │ │ │ │ ├── globalHeader.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── pages.ts │ │ │ │ ├── pwa.ts │ │ │ │ ├── settingDrawer.ts │ │ │ │ └── settings.ts │ │ │ ├── zh-TW.ts │ │ │ └── zh-TW │ │ │ │ ├── component.ts │ │ │ │ ├── globalHeader.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── pwa.ts │ │ │ │ ├── settingDrawer.ts │ │ │ │ └── settings.ts │ │ ├── manifest.json │ │ ├── pages │ │ │ ├── 404.tsx │ │ │ ├── Admin.tsx │ │ │ ├── TableList │ │ │ │ ├── components │ │ │ │ │ └── UpdateForm.tsx │ │ │ │ └── index.tsx │ │ │ ├── Welcome.less │ │ │ ├── Welcome.tsx │ │ │ ├── account │ │ │ │ ├── center │ │ │ │ │ ├── Center.less │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── components │ │ │ │ │ │ ├── Applications │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ArticleListContent │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Articles │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── AvatarList │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── Projects │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── service.ts │ │ │ │ └── settings │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── components │ │ │ │ │ ├── BaseView.less │ │ │ │ │ ├── PhoneView.tsx │ │ │ │ │ ├── base.tsx │ │ │ │ │ ├── binding.tsx │ │ │ │ │ ├── notification.tsx │ │ │ │ │ └── security.tsx │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── geographic │ │ │ │ │ ├── city.json │ │ │ │ │ └── province.json │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ └── style.less │ │ │ ├── dashboard │ │ │ │ ├── analysis │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── components │ │ │ │ │ │ ├── Charts │ │ │ │ │ │ │ ├── Bar │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── ChartCard │ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Field │ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Gauge │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── MiniArea │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── MiniBar │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── MiniProgress │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Pie │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── TagCloud │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── TimelineChart │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── WaterWave │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── autoHeight.tsx │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── IntroduceRow.tsx │ │ │ │ │ │ ├── NumberInfo │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── OfflineData.tsx │ │ │ │ │ │ ├── PageLoading │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── ProportionSales.tsx │ │ │ │ │ │ ├── SalesCard.tsx │ │ │ │ │ │ ├── TopSearch.tsx │ │ │ │ │ │ └── Trend │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ ├── style.less │ │ │ │ │ └── utils │ │ │ │ │ │ ├── Yuan.tsx │ │ │ │ │ │ ├── utils.less │ │ │ │ │ │ └── utils.ts │ │ │ │ ├── monitor │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── components │ │ │ │ │ │ ├── ActiveChart │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Charts │ │ │ │ │ │ │ ├── Gauge │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── MiniArea │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Pie │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── TagCloud │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── WaterWave │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── autoHeight.tsx │ │ │ │ │ │ └── Map │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ └── style.less │ │ │ │ └── workplace │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── components │ │ │ │ │ ├── EditableLinkGroup │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── Radar │ │ │ │ │ │ ├── autoHeight.tsx │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ └── style.less │ │ │ ├── document.ejs │ │ │ ├── editor │ │ │ │ ├── flow │ │ │ │ │ ├── common │ │ │ │ │ │ └── IconFont │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── components │ │ │ │ │ │ ├── EditorContextMenu │ │ │ │ │ │ │ ├── FlowContextMenu.tsx │ │ │ │ │ │ │ ├── KoniContextMenu.tsx │ │ │ │ │ │ │ ├── MenuItem.tsx │ │ │ │ │ │ │ ├── MindContextMenu.tsx │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── EditorDetailPanel │ │ │ │ │ │ │ ├── DetailForm.tsx │ │ │ │ │ │ │ ├── FlowDetailPanel.tsx │ │ │ │ │ │ │ ├── KoniDetailPanel.tsx │ │ │ │ │ │ │ ├── MindDetailPanel.tsx │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── EditorItemPanel │ │ │ │ │ │ │ ├── FlowItemPanel.tsx │ │ │ │ │ │ │ ├── KoniItemPanel.tsx │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── EditorMinimap │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── EditorToolbar │ │ │ │ │ │ │ ├── FlowToolbar.tsx │ │ │ │ │ │ │ ├── KoniToolbar.tsx │ │ │ │ │ │ │ ├── MindToolbar.tsx │ │ │ │ │ │ │ ├── ToolbarButton.tsx │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ ├── koni │ │ │ │ │ ├── common │ │ │ │ │ │ └── IconFont │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── components │ │ │ │ │ │ ├── EditorContextMenu │ │ │ │ │ │ │ ├── FlowContextMenu.tsx │ │ │ │ │ │ │ ├── KoniContextMenu.tsx │ │ │ │ │ │ │ ├── MenuItem.tsx │ │ │ │ │ │ │ ├── MindContextMenu.tsx │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── EditorDetailPanel │ │ │ │ │ │ │ ├── DetailForm.tsx │ │ │ │ │ │ │ ├── FlowDetailPanel.tsx │ │ │ │ │ │ │ ├── KoniDetailPanel.tsx │ │ │ │ │ │ │ ├── MindDetailPanel.tsx │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── EditorItemPanel │ │ │ │ │ │ │ ├── FlowItemPanel.tsx │ │ │ │ │ │ │ ├── KoniItemPanel.tsx │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── EditorMinimap │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── EditorToolbar │ │ │ │ │ │ │ ├── FlowToolbar.tsx │ │ │ │ │ │ │ ├── KoniToolbar.tsx │ │ │ │ │ │ │ ├── MindToolbar.tsx │ │ │ │ │ │ │ ├── ToolbarButton.tsx │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ └── mind │ │ │ │ │ ├── common │ │ │ │ │ └── IconFont │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── components │ │ │ │ │ ├── EditorContextMenu │ │ │ │ │ │ ├── FlowContextMenu.tsx │ │ │ │ │ │ ├── KoniContextMenu.tsx │ │ │ │ │ │ ├── MenuItem.tsx │ │ │ │ │ │ ├── MindContextMenu.tsx │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── EditorDetailPanel │ │ │ │ │ │ ├── DetailForm.tsx │ │ │ │ │ │ ├── FlowDetailPanel.tsx │ │ │ │ │ │ ├── KoniDetailPanel.tsx │ │ │ │ │ │ ├── MindDetailPanel.tsx │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── EditorItemPanel │ │ │ │ │ │ ├── FlowItemPanel.tsx │ │ │ │ │ │ ├── KoniItemPanel.tsx │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── EditorMinimap │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── EditorToolbar │ │ │ │ │ │ ├── FlowToolbar.tsx │ │ │ │ │ │ ├── KoniToolbar.tsx │ │ │ │ │ │ ├── MindToolbar.tsx │ │ │ │ │ │ ├── ToolbarButton.tsx │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── index.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── worldCup2018.json │ │ │ ├── exception │ │ │ │ ├── 403 │ │ │ │ │ └── index.tsx │ │ │ │ ├── 404 │ │ │ │ │ └── index.tsx │ │ │ │ └── 500 │ │ │ │ │ └── index.tsx │ │ │ ├── form │ │ │ │ ├── advanced-form │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── components │ │ │ │ │ │ └── TableForm.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ └── style.less │ │ │ │ ├── basic-form │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ └── style.less │ │ │ │ └── step-form │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ └── style.less │ │ │ ├── list │ │ │ │ ├── basic-list │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── components │ │ │ │ │ │ └── OperationModal.tsx │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ ├── style.less │ │ │ │ │ └── utils │ │ │ │ │ │ └── utils.less │ │ │ │ ├── card-list │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ ├── style.less │ │ │ │ │ └── utils │ │ │ │ │ │ └── utils.less │ │ │ │ ├── search │ │ │ │ │ ├── applications │ │ │ │ │ │ ├── _mock.ts │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── StandardFormRow │ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── TagSelect │ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── data.d.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── service.ts │ │ │ │ │ │ ├── style.less │ │ │ │ │ │ └── utils │ │ │ │ │ │ │ └── utils.less │ │ │ │ │ ├── articles │ │ │ │ │ │ ├── _mock.ts │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── ArticleListContent │ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── StandardFormRow │ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ └── TagSelect │ │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── data.d.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── service.ts │ │ │ │ │ │ └── style.less │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── projects │ │ │ │ │ │ ├── _mock.ts │ │ │ │ │ │ ├── components │ │ │ │ │ │ ├── AvatarList │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── StandardFormRow │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── TagSelect │ │ │ │ │ │ │ ├── index.less │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── data.d.ts │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── service.ts │ │ │ │ │ │ ├── style.less │ │ │ │ │ │ └── utils │ │ │ │ │ │ └── utils.less │ │ │ │ └── table-list │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── components │ │ │ │ │ ├── CreateForm.tsx │ │ │ │ │ └── UpdateForm.tsx │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── service.ts │ │ │ ├── profile │ │ │ │ ├── advanced │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ └── style.less │ │ │ │ └── basic │ │ │ │ │ ├── _mock.ts │ │ │ │ │ ├── data.d.ts │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── service.ts │ │ │ │ │ └── style.less │ │ │ ├── result │ │ │ │ ├── fail │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ │ └── success │ │ │ │ │ ├── index.less │ │ │ │ │ └── index.tsx │ │ │ └── user │ │ │ │ ├── Login │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ │ ├── register-result │ │ │ │ ├── index.tsx │ │ │ │ └── style.less │ │ │ │ └── register │ │ │ │ ├── _mock.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── service.ts │ │ │ │ └── style.less │ │ ├── service-worker.js │ │ ├── services │ │ │ ├── ant-design-pro │ │ │ │ ├── api.ts │ │ │ │ ├── index.ts │ │ │ │ ├── login.ts │ │ │ │ └── typings.d.ts │ │ │ └── swagger │ │ │ │ ├── index.ts │ │ │ │ ├── pet.ts │ │ │ │ ├── store.ts │ │ │ │ ├── typings.d.ts │ │ │ │ └── user.ts │ │ └── typings.d.ts │ │ ├── tests │ │ ├── PuppeteerEnvironment.js │ │ ├── beforeTest.js │ │ ├── getBrowser.js │ │ ├── run-tests.js │ │ └── setupTests.js │ │ └── tsconfig.json ├── migration │ ├── mariadb │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── mysql │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── postgresql │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── prometheus │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── redis │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── sqlite │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── tdengine │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ └── tidb │ │ ├── src │ │ └── .gitkeep │ │ └── tmpl │ │ └── .gitkeep └── operation │ ├── auth │ └── casdoor │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ └── .gitkeep │ │ └── tmpl │ │ └── .gitkeep │ ├── container │ ├── containerd │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── cri-o │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── docker │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── hanlder │ │ │ └── .gitkeep │ │ ├── resource │ │ │ └── .gitkeep │ │ └── template │ │ │ └── .gitkeep │ └── katacontainer2 │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── hanlder │ │ └── .gitkeep │ │ ├── resource │ │ └── .gitkeep │ │ └── template │ │ └── .gitkeep │ ├── database │ ├── dgraph │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── etcd │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── mariadb │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ ├── .gitkeep │ │ │ └── ddl.sql │ │ └── tmpl │ │ │ └── .gitkeep │ ├── memgraph │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── mysql │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── postgresql │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ └── tidb │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ └── .gitkeep │ │ └── tmpl │ │ └── .gitkeep │ ├── dns │ ├── bind │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ └── coredns │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ └── .gitkeep │ │ └── tmpl │ │ └── .gitkeep │ ├── http │ ├── apache │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── h2o │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── http4k │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── nginx │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ └── traefik │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ └── .gitkeep │ │ └── tmpl │ │ └── .gitkeep │ ├── mesh │ ├── k3s │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── k8s │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── kubecube │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ └── kubeedge │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ └── .gitkeep │ │ └── tmpl │ │ └── .gitkeep │ ├── mq │ ├── emq │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── nats │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ ├── rabbitmq │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ │ └── .gitkeep │ │ └── tmpl │ │ │ └── .gitkeep │ └── vernemq │ │ ├── README.md │ │ ├── README_cn.md │ │ ├── src │ │ └── .gitkeep │ │ └── tmpl │ │ └── .gitkeep │ └── storage │ └── minio │ ├── README.md │ ├── README_cn.md │ ├── src │ └── .gitkeep │ └── tmpl │ └── .gitkeep ├── src ├── autoload.php └── generator │ ├── Cache.php │ ├── Context.php │ ├── Generator.php │ ├── helper │ ├── ClassHelper.php │ ├── FileHelper.php │ └── TemplateHelper.php │ ├── http │ ├── Request.php │ ├── RequestBody.php │ ├── RequestBodyType.php │ ├── RequestMethodType.php │ ├── Response.php │ └── ResponseType.php │ ├── parser │ ├── Apifox.php │ ├── Database.php │ ├── Openapi.php │ ├── Parser.php │ ├── ParserFactory.php │ ├── ParserType.php │ ├── Sql.php │ ├── Yaoapp.php │ ├── component │ │ ├── Info.php │ │ ├── Method.php │ │ ├── Parameter.php │ │ ├── Path.php │ │ ├── Property.php │ │ ├── Response.php │ │ ├── Schema.php │ │ └── Tag.php │ └── legacy │ │ ├── Action.php │ │ ├── Application.php │ │ ├── Controller.php │ │ ├── Field.php │ │ ├── Helper.php │ │ ├── Model.php │ │ ├── Module.php │ │ ├── Node.php │ │ ├── Project.php │ │ ├── Relation.php │ │ ├── Schema.php │ │ ├── Traits.php │ │ ├── Validate.php │ │ └── View.php │ ├── resource │ ├── Backend.php │ ├── Commandline.php │ ├── Document.php │ ├── Frontend.php │ ├── Migration.php │ ├── Operation.php │ ├── Resource.php │ ├── ResourceFactory.php │ └── ResourceType.php │ ├── task │ ├── CopyFiles.php │ ├── GenerateCode.php │ ├── Task.php │ ├── TaskLevel.php │ └── TaskManager.php │ └── template │ ├── Route.php │ ├── StereoType.php │ ├── StereotypeFactory.php │ ├── Template.php │ ├── TemplateFactory.php │ ├── TemplateType.php │ └── php │ ├── StereotypeClass.php │ ├── StereotypeConfig.php │ ├── StereotypeEnum.php │ ├── StereotypeFunction.php │ └── StereotypeTrait.php ├── template └── php │ ├── class.mustache │ ├── config.mustache │ ├── enum.mustache │ ├── function.mustache │ └── trait.mustache └── usecase ├── FMCS-PHASE2.openapi.json ├── cms.yaml ├── craft.php ├── fmcs-phase2.openapi.json ├── fmcs.yaml ├── rbac.php └── sample.php /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | /.idea/ 3 | /deploy/ 4 | /composer.lock 5 | /test.php 6 | /usr/ 7 | .config.yaml -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | . "$(dirname -- "$0")/_/husky.sh" 3 | 4 | phpcbf --standard=psr12 ./src && git add . 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # fmcs/phase2/generator -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wa-craft/generator-php", 3 | "description": "a cli tool to build applications for thinkphp v6", 4 | "type": "project", 5 | "license": "MIT", 6 | "authors": [ 7 | { 8 | "name": "bison", 9 | "email": "bison@bitseed.cn" 10 | } 11 | ], 12 | "repositories": { 13 | "packagist": { 14 | "type": "composer", 15 | "url": "https://mirrors.aliyun.com/composer/" 16 | } 17 | }, 18 | "minimum-stability": "dev", 19 | "autoload": { 20 | "psr-4": { 21 | "generator\\": "src\\generator" 22 | } 23 | }, 24 | "require": { 25 | "php": ">= 8.1.0", 26 | "nategood/commando": "dev-master", 27 | "mustache/mustache": "dev-main", 28 | "ext-yaml": "*" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /config.yaml: -------------------------------------------------------------------------------- 1 | #生成代码的目标路径 2 | target_path: "./deploy" -------------------------------------------------------------------------------- /craft.bat: -------------------------------------------------------------------------------- 1 | php ./build %* -------------------------------------------------------------------------------- /doc/build_cmd.md: -------------------------------------------------------------------------------- 1 | ## builder 命令行参数 2 | ### `-c|--config` 3 | 指定配置文件的路径,默认为 './src/config.php' 4 | 5 | ### `-d|--data` 6 | 指定项目数据文件的路径 7 | 8 | ### `-t|--target` 9 | 指定文件生成的目标路径,默认为 './deploy' -------------------------------------------------------------------------------- /doc/data.md: -------------------------------------------------------------------------------- 1 | # 数据文件编写规范 2 | 3 | * 节点的数据类型必须是如下之一: 4 | 5 | `project, application, module, model, view, validate, field, controller` 6 | 7 | * 字节点的命名方式是子节点类型后面加's',例如:'models' -------------------------------------------------------------------------------- /doc/source_arch.md: -------------------------------------------------------------------------------- 1 | # Source Architecture 2 | 3 | ## generator 4 | 生成器入口程序,用于执行生成过程 5 | 6 | ## helper 7 | 与业务无关的工具程序 8 | 9 | ## parser 10 | 数据文件分析程序,生成包装后的数据对象 11 | 12 | ## resource 13 | 资源管理程序,用于管理资源、资源规则和对资源进行操作 14 | 15 | ## template 16 | 模板对象,对应模板资源目录进行包装,并进行模板操作 -------------------------------------------------------------------------------- /doc/tips.md: -------------------------------------------------------------------------------- 1 | # 未整理到文档的说明tips 2 | 3 | - 什么时候使用factory,什么时候直接new对象: 4 | 当需要从配置文件等输入的信息创建对象的时候,预先并不知道对象具体类型,首选工厂方法, 5 | 其他时候可以直接使用new的方式创建对象 6 | - -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/app/.htaccess: -------------------------------------------------------------------------------- 1 | deny from all -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/app/AppService.php: -------------------------------------------------------------------------------- 1 | [ 5 | ], 6 | 7 | 'listen' => [ 8 | 'AppInit' => [], 9 | 'HttpRun' => [], 10 | 'HttpEnd' => [], 11 | 'LogLevel' => [], 12 | 'LogWrite' => [], 13 | ], 14 | 15 | 'subscribe' => [ 16 | ], 17 | ]; 18 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/app/middleware.php: -------------------------------------------------------------------------------- 1 | Request::class, 8 | 'think\exception\Handle' => ExceptionHandle::class, 9 | ]; 10 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/app/service.php: -------------------------------------------------------------------------------- 1 | env('application.host', ''), 9 | // 应用的命名空间 10 | 'app_namespace' => '', 11 | // 是否启用路由 12 | 'with_route' => true, 13 | // 默认应用 14 | 'default_app' => 'index', 15 | // 默认时区 16 | 'default_timezone' => 'Asia/Shanghai', 17 | 18 | // 应用映射(自动多应用模式有效) 19 | 'app_map' => [], 20 | // 域名绑定(自动多应用模式有效) 21 | 'domain_bind' => [], 22 | // 禁止URL访问的应用列表(自动多应用模式有效) 23 | 'deny_app_list' => [], 24 | 25 | // 异常页面的模板文件 26 | 'exception_tmpl' => app()->getThinkPath() . 'tpl/think_exception.tpl', 27 | 28 | // 错误显示信息,非调试模式有效 29 | 'error_message' => '页面错误!请稍后再试~', 30 | // 显示错误信息 31 | 'show_error_msg' => false, 32 | ]; 33 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/config/cache.php: -------------------------------------------------------------------------------- 1 | env('cache.driver', 'file'), 10 | 11 | // 缓存连接方式配置 12 | 'stores' => [ 13 | 'file' => [ 14 | // 驱动方式 15 | 'type' => 'File', 16 | // 缓存保存目录 17 | 'path' => '', 18 | // 缓存前缀 19 | 'prefix' => '', 20 | // 缓存有效期 0表示永久缓存 21 | 'expire' => 0, 22 | // 缓存标签前缀 23 | 'tag_prefix' => 'tag:', 24 | // 序列化机制 例如 ['serialize', 'unserialize'] 25 | 'serialize' => [], 26 | ], 27 | // 更多的缓存连接 28 | ], 29 | ]; 30 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/config/console.php: -------------------------------------------------------------------------------- 1 | [ 8 | ], 9 | ]; 10 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/config/cookie.php: -------------------------------------------------------------------------------- 1 | 0, 8 | // cookie 保存路径 9 | 'path' => '/', 10 | // cookie 有效域名 11 | 'domain' => '', 12 | // cookie 启用安全传输 13 | 'secure' => false, 14 | // httponly设置 15 | 'httponly' => false, 16 | // 是否使用 setcookie 17 | 'setcookie' => true, 18 | // samesite 设置,支持 'strict' 'lax' 19 | 'samesite' => '', 20 | ]; 21 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/config/filesystem.php: -------------------------------------------------------------------------------- 1 | env('filesystem.driver', 'local'), 6 | // 磁盘列表 7 | 'disks' => [ 8 | 'local' => [ 9 | 'type' => 'local', 10 | 'root' => app()->getRuntimePath() . 'storage', 11 | ], 12 | 'public' => [ 13 | // 磁盘类型 14 | 'type' => 'local', 15 | // 磁盘路径 16 | 'root' => app()->getRootPath() . 'public/storage', 17 | // 磁盘路径对应的外部URL路径 18 | 'url' => '/storage', 19 | // 可见性 20 | 'visibility' => 'public', 21 | ], 22 | // 更多的磁盘配置信息 23 | ], 24 | ]; 25 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/config/lang.php: -------------------------------------------------------------------------------- 1 | env('lang.default_lang', 'zh-cn'), 9 | // 允许的语言列表 10 | 'allow_lang_list' => [], 11 | // 多语言自动侦测变量名 12 | 'detect_var' => 'lang', 13 | // 是否使用Cookie记录 14 | 'use_cookie' => true, 15 | // 多语言cookie变量 16 | 'cookie_var' => 'think_lang', 17 | // 多语言header变量 18 | 'header_var' => 'think-lang', 19 | // 扩展语言包 20 | 'extend_list' => [], 21 | // Accept-Language转义为对应语言包名称 22 | 'accept_language' => [ 23 | 'zh-hans-cn' => 'zh-cn', 24 | ], 25 | // 是否支持语言分组 26 | 'allow_group' => false, 27 | ]; 28 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/config/middleware.php: -------------------------------------------------------------------------------- 1 | [], 6 | // 优先级设置,此数组中的中间件会按照数组中的顺序优先执行 7 | 'priority' => [], 8 | ]; 9 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/config/session.php: -------------------------------------------------------------------------------- 1 | 'PHPSESSID', 9 | // SESSION_ID的提交变量,解决flash上传跨域 10 | 'var_session_id' => '', 11 | // 驱动方式 支持file cache 12 | 'type' => 'file', 13 | // 存储连接标识 当type使用cache的时候有效 14 | 'store' => null, 15 | // 过期时间 16 | 'expire' => 1440, 17 | // 前缀 18 | 'prefix' => '', 19 | ]; 20 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/config/view.php: -------------------------------------------------------------------------------- 1 | 'Think', 9 | // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法 10 | 'auto_rule' => 1, 11 | // 模板目录名 12 | 'view_dir_name' => 'view', 13 | // 模板后缀 14 | 'view_suffix' => 'html', 15 | // 模板文件名分隔符 16 | 'view_depr' => DIRECTORY_SEPARATOR, 17 | // 模板引擎普通标签开始标记 18 | 'tpl_begin' => '{', 19 | // 模板引擎普通标签结束标记 20 | 'tpl_end' => '}', 21 | // 标签库标签开始标记 22 | 'taglib_begin' => '{', 23 | // 标签库标签结束标记 24 | 'taglib_end' => '}', 25 | ]; 26 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/extend/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | Options +FollowSymlinks -Multiviews 3 | RewriteEngine On 4 | 5 | RewriteCond %{REQUEST_FILENAME} !-d 6 | RewriteCond %{REQUEST_FILENAME} !-f 7 | RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] 8 | 9 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/backend/thinkphp/src/public/favicon.ico -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/public/index.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | 12 | // [ 应用入口文件 ] 13 | namespace think; 14 | 15 | require __DIR__ . '/../vendor/autoload.php'; 16 | 17 | // 执行HTTP应用并响应 18 | $http = (new App())->http; 19 | 20 | $response = $http->run(); 21 | 22 | $response->send(); 23 | 24 | $http->end($response); 25 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/public/router.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | // $Id$ 12 | 13 | if (is_file($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) { 14 | return false; 15 | } else { 16 | $_SERVER["SCRIPT_FILENAME"] = __DIR__ . '/index.php'; 17 | 18 | require __DIR__ . "/index.php"; 19 | } 20 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/public/static/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/route/app.php: -------------------------------------------------------------------------------- 1 | 10 | // +---------------------------------------------------------------------- 11 | use think\facade\Route; 12 | 13 | Route::get('think', function () { 14 | return 'hello,ThinkPHP6!'; 15 | }); 16 | 17 | Route::get('hello/:name', 'index/hello'); 18 | -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/runtime/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/think: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | console->run(); -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/vendor/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /resource/backend/thinkphp/src/view/README.md: -------------------------------------------------------------------------------- 1 | 如果不使用模板,可以删除该目录 -------------------------------------------------------------------------------- /resource/backend/webman/src/.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | open_collective: walkor 4 | patreon: walkor 5 | -------------------------------------------------------------------------------- /resource/backend/webman/src/.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | /.vscode 3 | /vendor 4 | *.log 5 | .env 6 | /tests/tmp 7 | /tests/.phpunit.result.cache 8 | -------------------------------------------------------------------------------- /resource/backend/webman/src/README.md: -------------------------------------------------------------------------------- 1 | # webman 2 | 3 | High performance HTTP Service Framework for PHP based on [Workerman](https://github.com/walkor/workerman). 4 | 5 | # Manual 6 | 7 | https://www.workerman.net/doc/webman 8 | 9 | # Benchmarks 10 | 11 | https://www.techempower.com/benchmarks/#section=test&runid=9716e3cd-9e53-433c-b6c5-d2c48c9593c1&hw=ph&test=db&l=zg24n3-1r&a=2 12 | ![image](https://user-images.githubusercontent.com/6073368/96447814-120fc980-1245-11eb-938d-6ea408716c72.png) 13 | 14 | ## LICENSE 15 | 16 | MIT 17 | -------------------------------------------------------------------------------- /resource/backend/webman/src/app/controller/Index.php: -------------------------------------------------------------------------------- 1 | 'webman']); 17 | } 18 | 19 | public function json(Request $request) 20 | { 21 | return json(['code' => 0, 'msg' => 'ok']); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /resource/backend/webman/src/app/functions.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | webman 9 | 10 | 11 | 12 | hello 13 | 14 | 15 | -------------------------------------------------------------------------------- /resource/backend/webman/src/config/app.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | use support\Request; 16 | 17 | return [ 18 | 'debug' => true, 19 | 'default_timezone' => 'Asia/Shanghai', 20 | 'request_class' => Request::class, 21 | 'public_path' => base_path() . DIRECTORY_SEPARATOR . 'public', 22 | 'runtime_path' => base_path(false) . DIRECTORY_SEPARATOR . 'runtime', 23 | 'controller_suffix' => '', 24 | ]; 25 | -------------------------------------------------------------------------------- /resource/backend/webman/src/config/autoload.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | return [ 16 | 'files' => [ 17 | base_path() . '/app/functions.php', 18 | base_path() . '/support/Request.php', 19 | base_path() . '/support/Response.php', 20 | ] 21 | ]; 22 | -------------------------------------------------------------------------------- /resource/backend/webman/src/config/bootstrap.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | return [ 16 | support\bootstrap\Session::class, 17 | support\bootstrap\LaravelDb::class, 18 | ]; 19 | -------------------------------------------------------------------------------- /resource/backend/webman/src/config/container.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | return new Webman\Container; -------------------------------------------------------------------------------- /resource/backend/webman/src/config/database.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | return []; 16 | -------------------------------------------------------------------------------- /resource/backend/webman/src/config/dependence.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | return []; -------------------------------------------------------------------------------- /resource/backend/webman/src/config/exception.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | return [ 16 | '' => support\exception\Handler::class, 17 | ]; -------------------------------------------------------------------------------- /resource/backend/webman/src/config/middleware.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | return []; -------------------------------------------------------------------------------- /resource/backend/webman/src/config/redis.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | return [ 16 | 'default' => [ 17 | 'host' => '127.0.0.1', 18 | 'password' => null, 19 | 'port' => 6379, 20 | 'database' => 0, 21 | ], 22 | ]; 23 | -------------------------------------------------------------------------------- /resource/backend/webman/src/config/route.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | use Webman\Route; 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /resource/backend/webman/src/config/static.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | /** 16 | * Static file settings 17 | */ 18 | return [ 19 | 'enable' => true, 20 | 'middleware' => [ // Static file Middleware 21 | //app\middleware\StaticFile::class, 22 | ], 23 | ]; -------------------------------------------------------------------------------- /resource/backend/webman/src/config/translation.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | /** 16 | * Multilingual configuration 17 | */ 18 | return [ 19 | // Default language 20 | 'locale' => 'zh_CN', 21 | // Fallback language 22 | 'fallback_locale' => ['zh_CN', 'en'], 23 | // Folder where language files are stored 24 | 'path' => base_path() . '/resource/translations', 25 | ]; -------------------------------------------------------------------------------- /resource/backend/webman/src/config/view.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | use support\view\Raw; 16 | use support\view\Twig; 17 | use support\view\Blade; 18 | use support\view\ThinkPHP; 19 | 20 | return [ 21 | 'handler' => Raw::class 22 | ]; 23 | -------------------------------------------------------------------------------- /resource/backend/webman/src/public/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 404 Not Found - webman 4 | 5 | 6 |
7 |

404 Not Found

8 |
9 |
10 |
webman
11 | 12 | 13 | -------------------------------------------------------------------------------- /resource/backend/webman/src/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/backend/webman/src/public/favicon.ico -------------------------------------------------------------------------------- /resource/backend/webman/src/runtime/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !logs 3 | !views 4 | !.gitignore 5 | -------------------------------------------------------------------------------- /resource/backend/webman/src/runtime/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /resource/backend/webman/src/runtime/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /resource/backend/webman/src/support/Request.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | namespace support; 16 | 17 | /** 18 | * Class Request 19 | * @package support 20 | */ 21 | class Request extends \Webman\Http\Request 22 | { 23 | 24 | } -------------------------------------------------------------------------------- /resource/backend/webman/src/support/Response.php: -------------------------------------------------------------------------------- 1 | 10 | * @copyright walkor 11 | * @link http://www.workerman.net/ 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | 15 | namespace support; 16 | 17 | /** 18 | * Class Response 19 | * @package support 20 | */ 21 | class Response extends \Webman\Http\Response 22 | { 23 | 24 | } -------------------------------------------------------------------------------- /resource/backend/webman/src/windows.bat: -------------------------------------------------------------------------------- 1 | CHCP 65001 2 | php windows.php 3 | pause -------------------------------------------------------------------------------- /resource/document/mdbook/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/mdbook/README.md -------------------------------------------------------------------------------- /resource/document/mdbook/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/mdbook/README_cn.md -------------------------------------------------------------------------------- /resource/document/mdbook/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/mdbook/src/.gitkeep -------------------------------------------------------------------------------- /resource/document/mdbook/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/mdbook/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/document/vuepress/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/vuepress/README.md -------------------------------------------------------------------------------- /resource/document/vuepress/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/vuepress/README_cn.md -------------------------------------------------------------------------------- /resource/document/vuepress/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/vuepress/src/.gitkeep -------------------------------------------------------------------------------- /resource/document/vuepress/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/vuepress/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/document/zola/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/zola/README.md -------------------------------------------------------------------------------- /resource/document/zola/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/zola/README_cn.md -------------------------------------------------------------------------------- /resource/document/zola/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/zola/src/.gitkeep -------------------------------------------------------------------------------- /resource/document/zola/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/document/zola/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/rule.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | rules: 3 | - name: test -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | 15 | [Makefile] 16 | indent_style = tab 17 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/.eslintignore: -------------------------------------------------------------------------------- 1 | /lambda/ 2 | /scripts 3 | /config 4 | .history 5 | public 6 | dist 7 | .umi 8 | mock -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: [require.resolve('@umijs/fabric/dist/eslint')], 3 | globals: { 4 | ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: true, 5 | page: true, 6 | REACT_APP_ENV: true, 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | **/node_modules 5 | # roadhog-api-doc ignore 6 | /src/utils/request-temp.js 7 | _roadhog-api-doc 8 | 9 | # production 10 | /dist 11 | /.vscode 12 | 13 | # misc 14 | .DS_Store 15 | npm-debug.log* 16 | yarn-error.log 17 | 18 | /coverage 19 | .idea 20 | yarn.lock 21 | package-lock.json 22 | *bak 23 | .vscode 24 | 25 | # visual studio code 26 | .history 27 | *.log 28 | functions/* 29 | .temp/** 30 | 31 | # umi 32 | .umi 33 | .umi-production 34 | 35 | # screenshot 36 | screenshot 37 | .firebase 38 | .eslintcache 39 | 40 | build 41 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/.prettierignore: -------------------------------------------------------------------------------- 1 | **/*.svg 2 | package.json 3 | .umi 4 | .umi-production 5 | /dist 6 | .dockerignore 7 | .DS_Store 8 | .eslintignore 9 | *.png 10 | *.toml 11 | docker 12 | .editorconfig 13 | Dockerfile* 14 | .gitignore 15 | .prettierignore 16 | LICENSE 17 | .eslintcache 18 | *.lock 19 | yarn-error.log 20 | .history 21 | CNAME 22 | /build 23 | /public -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/.prettierrc.js: -------------------------------------------------------------------------------- 1 | const fabric = require('@umijs/fabric'); 2 | 3 | module.exports = { 4 | ...fabric.prettier, 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/.stylelintrc.js: -------------------------------------------------------------------------------- 1 | const fabric = require('@umijs/fabric'); 2 | 3 | module.exports = { 4 | ...fabric.stylelint, 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/config/config.dev.ts: -------------------------------------------------------------------------------- 1 | // https://umijs.org/config/ 2 | import { defineConfig } from 'umi'; 3 | 4 | export default defineConfig({ 5 | plugins: [ 6 | // https://github.com/zthxxx/react-dev-inspector 7 | 'react-dev-inspector/plugins/umi/react-inspector', 8 | ], 9 | // https://github.com/zthxxx/react-dev-inspector#inspector-loader-props 10 | inspectorConfig: { 11 | exclude: [], 12 | babelPlugins: [], 13 | babelOptions: {}, 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/config/defaultSettings.ts: -------------------------------------------------------------------------------- 1 | import { Settings as LayoutSettings } from '@ant-design/pro-layout'; 2 | 3 | const Settings: LayoutSettings & { 4 | pwa?: boolean; 5 | logo?: string; 6 | } = { 7 | navTheme: 'light', 8 | // 拂晓蓝 9 | primaryColor: '#1890ff', 10 | layout: 'mix', 11 | contentWidth: 'Fluid', 12 | fixedHeader: false, 13 | fixSiderbar: true, 14 | colorWeak: false, 15 | title: 'Ant Design Pro', 16 | pwa: false, 17 | logo: 'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg', 18 | iconfontUrl: '', 19 | }; 20 | 21 | export default Settings; 22 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/config/proxy.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 在生产环境 代理是无法生效的,所以这里没有生产环境的配置 3 | * ------------------------------- 4 | * The agent cannot take effect in the production environment 5 | * so there is no configuration of the production environment 6 | * For details, please see 7 | * https://pro.ant.design/docs/deploy 8 | */ 9 | export default { 10 | dev: { 11 | '/api/': { 12 | target: 'https://preview.pro.ant.design', 13 | changeOrigin: true, 14 | pathRewrite: { '^': '' }, 15 | }, 16 | }, 17 | test: { 18 | '/api/': { 19 | target: 'https://preview.pro.ant.design', 20 | changeOrigin: true, 21 | pathRewrite: { '^': '' }, 22 | }, 23 | }, 24 | pre: { 25 | '/api/': { 26 | target: 'your pre url', 27 | changeOrigin: true, 28 | pathRewrite: { '^': '' }, 29 | }, 30 | }, 31 | }; 32 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | testURL: 'http://localhost:8000', 3 | testEnvironment: './tests/PuppeteerEnvironment', 4 | verbose: false, 5 | extraSetupFiles: ['./tests/setupTests.js'], 6 | globals: { 7 | ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: false, 8 | localStorage: null, 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "emitDecoratorMetadata": true, 4 | "experimentalDecorators": true, 5 | "baseUrl": ".", 6 | "paths": { 7 | "@/*": ["./src/*"] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/mock/route.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | '/api/auth_routes': { 3 | '/form/advanced-form': { authority: ['admin', 'user'] }, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/public/CNAME: -------------------------------------------------------------------------------- 1 | preview.pro.ant.design -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/frontend/react-antd-umi/src/public/favicon.ico -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/public/icons/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/frontend/react-antd-umi/src/public/icons/icon-128x128.png -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/public/icons/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/frontend/react-antd-umi/src/public/icons/icon-192x192.png -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/public/icons/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/frontend/react-antd-umi/src/public/icons/icon-512x512.png -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/public/pro_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/access.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @see https://umijs.org/zh-CN/plugins/plugin-access 3 | * */ 4 | export default function access(initialState: { currentUser?: API.CurrentUser | undefined }) { 5 | const { currentUser } = initialState || {}; 6 | return { 7 | canAdmin: currentUser && currentUser.access === 'admin', 8 | }; 9 | } 10 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/components/HeaderDropdown/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .container > * { 4 | background-color: @popover-bg; 5 | border-radius: 4px; 6 | box-shadow: @shadow-1-down; 7 | } 8 | 9 | @media screen and (max-width: @screen-xs) { 10 | .container { 11 | width: 100% !important; 12 | } 13 | .container > * { 14 | border-radius: 0 !important; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/components/HeaderDropdown/index.tsx: -------------------------------------------------------------------------------- 1 | import type { DropDownProps } from 'antd/es/dropdown'; 2 | import { Dropdown } from 'antd'; 3 | import React from 'react'; 4 | import classNames from 'classnames'; 5 | import styles from './index.less'; 6 | 7 | export type HeaderDropdownProps = { 8 | overlayClassName?: string; 9 | overlay: React.ReactNode | (() => React.ReactNode) | any; 10 | placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight' | 'bottomCenter'; 11 | } & Omit; 12 | 13 | const HeaderDropdown: React.FC = ({ overlayClassName: cls, ...restProps }) => ( 14 | 15 | ); 16 | 17 | export default HeaderDropdown; 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/components/HeaderSearch/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .headerSearch { 4 | display: inline-flex; 5 | align-items: center; 6 | .input { 7 | width: 0; 8 | min-width: 0; 9 | overflow: hidden; 10 | background: transparent; 11 | border-radius: 0; 12 | transition: width 0.3s, margin-left 0.3s; 13 | :global(.ant-select-selection) { 14 | background: transparent; 15 | } 16 | input { 17 | box-shadow: none !important; 18 | } 19 | 20 | &.show { 21 | width: 210px; 22 | margin-left: 8px; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/components/NoticeIcon/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .popover { 4 | position: relative; 5 | width: 336px; 6 | } 7 | 8 | .noticeButton { 9 | display: inline-block; 10 | cursor: pointer; 11 | transition: all 0.3s; 12 | } 13 | .icon { 14 | padding: 4px; 15 | vertical-align: middle; 16 | } 17 | 18 | .badge { 19 | font-size: 16px; 20 | } 21 | 22 | .tabs { 23 | :global { 24 | .ant-tabs-nav-list { 25 | margin: auto; 26 | } 27 | 28 | .ant-tabs-nav-scroll { 29 | text-align: center; 30 | } 31 | .ant-tabs-bar { 32 | margin-bottom: 0; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/bn-BD.ts: -------------------------------------------------------------------------------- 1 | import component from './bn-BD/component'; 2 | import globalHeader from './bn-BD/globalHeader'; 3 | import menu from './bn-BD/menu'; 4 | import pages from './bn-BD/pages'; 5 | import pwa from './bn-BD/pwa'; 6 | import settingDrawer from './bn-BD/settingDrawer'; 7 | import settings from './bn-BD/settings'; 8 | 9 | export default { 10 | 'navBar.lang': 'ভাষা', 11 | 'layout.user.link.help': 'সহায়তা', 12 | 'layout.user.link.privacy': 'গোপনীয়তা', 13 | 'layout.user.link.terms': 'শর্তাদি', 14 | 'app.copyright.produced': 'প্রযোজনা করেছেন অ্যান্ট ফিনান্সিয়াল এক্সপেরিয়েন্স ডিপার্টমেন্ট', 15 | 'app.preview.down.block': 'আপনার স্থানীয় প্রকল্পে এই পৃষ্ঠাটি ডাউনলোড করুন', 16 | 'app.welcome.link.fetch-blocks': 'সমস্ত ব্লক পান', 17 | 'app.welcome.link.block-list': 18 | '`block` ডেভেলপমেন্ট এর উপর ভিত্তি করে দ্রুত স্ট্যান্ডার্ড, পৃষ্ঠাসমূহ তৈরি করুন।', 19 | ...globalHeader, 20 | ...menu, 21 | ...settingDrawer, 22 | ...settings, 23 | ...pwa, 24 | ...component, 25 | ...pages, 26 | }; 27 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/bn-BD/component.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.tagSelect.expand': 'বিস্তৃত', 3 | 'component.tagSelect.collapse': 'সঙ্কুচিত', 4 | 'component.tagSelect.all': 'সব', 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/bn-BD/globalHeader.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.globalHeader.search': 'অনুসন্ধান করুন', 3 | 'component.globalHeader.search.example1': 'অনুসন্ধান উদাহরণ ১', 4 | 'component.globalHeader.search.example2': 'অনুসন্ধান উদাহরণ ২', 5 | 'component.globalHeader.search.example3': 'অনুসন্ধান উদাহরণ ৩', 6 | 'component.globalHeader.help': 'সহায়তা', 7 | 'component.globalHeader.notification': 'বিজ্ঞপ্তি', 8 | 'component.globalHeader.notification.empty': 'আপনি সমস্ত বিজ্ঞপ্তি দেখেছেন।', 9 | 'component.globalHeader.message': 'বার্তা', 10 | 'component.globalHeader.message.empty': 'আপনি সমস্ত বার্তা দেখেছেন।', 11 | 'component.globalHeader.event': 'ঘটনা', 12 | 'component.globalHeader.event.empty': 'আপনি সমস্ত ইভেন্ট দেখেছেন।', 13 | 'component.noticeIcon.clear': 'সাফ', 14 | 'component.noticeIcon.cleared': 'সাফ করা হয়েছে', 15 | 'component.noticeIcon.empty': 'বিজ্ঞপ্তি নেই', 16 | 'component.noticeIcon.view-more': 'আরো দেখুন', 17 | }; 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/bn-BD/pwa.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.pwa.offline': 'আপনি এখন অফলাইন', 3 | 'app.pwa.serviceworker.updated': 'নতুন সামগ্রী উপলব্ধ', 4 | 'app.pwa.serviceworker.updated.hint': 5 | 'বর্তমান পৃষ্ঠাটি পুনরায় লোড করতে দয়া করে "রিফ্রেশ" বোতাম টিপুন', 6 | 'app.pwa.serviceworker.updated.ok': 'রিফ্রেশ', 7 | }; 8 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/en-US.ts: -------------------------------------------------------------------------------- 1 | import component from './en-US/component'; 2 | import globalHeader from './en-US/globalHeader'; 3 | import menu from './en-US/menu'; 4 | import pages from './en-US/pages'; 5 | import pwa from './en-US/pwa'; 6 | import settingDrawer from './en-US/settingDrawer'; 7 | import settings from './en-US/settings'; 8 | 9 | export default { 10 | 'navBar.lang': 'Languages', 11 | 'layout.user.link.help': 'Help', 12 | 'layout.user.link.privacy': 'Privacy', 13 | 'layout.user.link.terms': 'Terms', 14 | 'app.copyright.produced': 'Produced by Ant Financial Experience Department', 15 | 'app.preview.down.block': 'Download this page to your local project', 16 | 'app.welcome.link.fetch-blocks': 'Get all block', 17 | 'app.welcome.link.block-list': 'Quickly build standard, pages based on `block` development', 18 | ...globalHeader, 19 | ...menu, 20 | ...settingDrawer, 21 | ...settings, 22 | ...pwa, 23 | ...component, 24 | ...pages, 25 | }; 26 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/en-US/component.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.tagSelect.expand': 'Expand', 3 | 'component.tagSelect.collapse': 'Collapse', 4 | 'component.tagSelect.all': 'All', 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/en-US/globalHeader.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.globalHeader.search': 'Search', 3 | 'component.globalHeader.search.example1': 'Search example 1', 4 | 'component.globalHeader.search.example2': 'Search example 2', 5 | 'component.globalHeader.search.example3': 'Search example 3', 6 | 'component.globalHeader.help': 'Help', 7 | 'component.globalHeader.notification': 'Notification', 8 | 'component.globalHeader.notification.empty': 'You have viewed all notifications.', 9 | 'component.globalHeader.message': 'Message', 10 | 'component.globalHeader.message.empty': 'You have viewed all messsages.', 11 | 'component.globalHeader.event': 'Event', 12 | 'component.globalHeader.event.empty': 'You have viewed all events.', 13 | 'component.noticeIcon.clear': 'Clear', 14 | 'component.noticeIcon.cleared': 'Cleared', 15 | 'component.noticeIcon.empty': 'No notifications', 16 | 'component.noticeIcon.view-more': 'View more', 17 | }; 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/en-US/pwa.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.pwa.offline': 'You are offline now', 3 | 'app.pwa.serviceworker.updated': 'New content is available', 4 | 'app.pwa.serviceworker.updated.hint': 'Please press the "Refresh" button to reload current page', 5 | 'app.pwa.serviceworker.updated.ok': 'Refresh', 6 | }; 7 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/fa-IR.ts: -------------------------------------------------------------------------------- 1 | import component from './fa-IR/component'; 2 | import globalHeader from './fa-IR/globalHeader'; 3 | import menu from './fa-IR/menu'; 4 | import pwa from './fa-IR/pwa'; 5 | import settingDrawer from './fa-IR/settingDrawer'; 6 | import settings from './fa-IR/settings'; 7 | import pages from './fa-IR/pages'; 8 | 9 | export default { 10 | 'navBar.lang': 'زبان ها ', 11 | 'layout.user.link.help': 'کمک', 12 | 'layout.user.link.privacy': 'حریم خصوصی', 13 | 'layout.user.link.terms': 'مقررات', 14 | 'app.preview.down.block': 'این صفحه را در پروژه محلی خود بارگیری کنید', 15 | 'app.welcome.link.fetch-blocks': 'دریافت تمام بلوک', 16 | 'app.welcome.link.block-list': 'به سرعت صفحات استاندارد مبتنی بر توسعه "بلوک" را بسازید', 17 | ...globalHeader, 18 | ...menu, 19 | ...settingDrawer, 20 | ...settings, 21 | ...pwa, 22 | ...component, 23 | ...pages, 24 | }; 25 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/fa-IR/component.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.tagSelect.expand': 'باز', 3 | 'component.tagSelect.collapse': 'بسته ', 4 | 'component.tagSelect.all': 'همه', 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/fa-IR/globalHeader.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.globalHeader.search': 'جستجو ', 3 | 'component.globalHeader.search.example1': 'مثال 1 را جستجو کنید', 4 | 'component.globalHeader.search.example2': 'مثال 2 را جستجو کنید', 5 | 'component.globalHeader.search.example3': 'مثال 3 را جستجو کنید', 6 | 'component.globalHeader.help': 'کمک', 7 | 'component.globalHeader.notification': 'اعلان', 8 | 'component.globalHeader.notification.empty': 'شما همه اعلان ها را مشاهده کرده اید.', 9 | 'component.globalHeader.message': 'پیام', 10 | 'component.globalHeader.message.empty': 'شما همه پیام ها را مشاهده کرده اید.', 11 | 'component.globalHeader.event': 'رویداد', 12 | 'component.globalHeader.event.empty': 'شما همه رویدادها را مشاهده کرده اید.', 13 | 'component.noticeIcon.clear': 'پاک کردن', 14 | 'component.noticeIcon.cleared': 'پاک شد', 15 | 'component.noticeIcon.empty': 'بدون اعلان', 16 | 'component.noticeIcon.view-more': 'نمایش بیشتر', 17 | }; 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/fa-IR/pwa.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.pwa.offline': 'شما اکنون آفلاین هستید', 3 | 'app.pwa.serviceworker.updated': 'مطالب جدید در دسترس است', 4 | 'app.pwa.serviceworker.updated.hint': 5 | 'لطفاً برای بارگیری مجدد صفحه فعلی ، دکمه "تازه سازی" را فشار دهید', 6 | 'app.pwa.serviceworker.updated.ok': 'تازه سازی', 7 | }; 8 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/id-ID.ts: -------------------------------------------------------------------------------- 1 | import component from './id-ID/component'; 2 | import globalHeader from './id-ID/globalHeader'; 3 | import menu from './id-ID/menu'; 4 | import pwa from './id-ID/pwa'; 5 | import settingDrawer from './id-ID/settingDrawer'; 6 | import settings from './id-ID/settings'; 7 | import pages from './id-ID/pages'; 8 | 9 | export default { 10 | 'navbar.lang': 'Bahasa', 11 | 'layout.user.link.help': 'Bantuan', 12 | 'layout.user.link.privacy': 'Privasi', 13 | 'layout.user.link.terms': 'Ketentuan', 14 | 'app.preview.down.block': 'Unduh halaman ini dalam projek lokal anda', 15 | 'app.welcome.link.fetch-blocks': 'Dapatkan semua blok', 16 | 'app.welcome.link.block-list': 17 | 'Buat standar dengan cepat, halaman-halaman berdasarkan pengembangan `block`', 18 | ...globalHeader, 19 | ...menu, 20 | ...settingDrawer, 21 | ...settings, 22 | ...pwa, 23 | ...component, 24 | ...pages, 25 | }; 26 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/id-ID/component.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.tagSelect.expand': 'Perluas', 3 | 'component.tagSelect.collapse': 'Lipat', 4 | 'component.tagSelect.all': 'Semua', 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/id-ID/globalHeader.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.globalHeader.search': 'Pencarian', 3 | 'component.globalHeader.search.example1': 'Contoh 1 Pencarian', 4 | 'component.globalHeader.search.example2': 'Contoh 2 Pencarian', 5 | 'component.globalHeader.search.example3': 'Contoh 3 Pencarian', 6 | 'component.globalHeader.help': 'Bantuan', 7 | 'component.globalHeader.notification': 'Notifikasi', 8 | 'component.globalHeader.notification.empty': 'Anda telah membaca semua notifikasi', 9 | 'component.globalHeader.message': 'Pesan', 10 | 'component.globalHeader.message.empty': 'Anda telah membaca semua pesan.', 11 | 'component.globalHeader.event': 'Acara', 12 | 'component.globalHeader.event.empty': 'Anda telah melihat semua acara.', 13 | 'component.noticeIcon.clear': 'Kosongkan', 14 | 'component.noticeIcon.cleared': 'Berhasil dikosongkan', 15 | 'component.noticeIcon.empty': 'Tidak ada pemberitahuan', 16 | 'component.noticeIcon.view-more': 'Melihat lebih', 17 | }; 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/id-ID/pwa.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.pwa.offline': 'Koneksi anda terputus', 3 | 'app.pwa.serviceworker.updated': 'Konten baru sudah tersedia', 4 | 'app.pwa.serviceworker.updated.hint': 5 | 'Silahkan klik tombol "Refresh" untuk memuat ulang halaman ini', 6 | 'app.pwa.serviceworker.updated.ok': 'Memuat ulang', 7 | }; 8 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/ja-JP.ts: -------------------------------------------------------------------------------- 1 | import globalHeader from './ja-JP/globalHeader'; 2 | import menu from './ja-JP/menu'; 3 | import settingDrawer from './ja-JP/settingDrawer'; 4 | import settings from './ja-JP/settings'; 5 | import pwa from './ja-JP/pwa'; 6 | import component from './ja-JP/component'; 7 | import pages from './ja-JP/pages'; 8 | 9 | export default { 10 | 'navBar.lang': '言語', 11 | 'layout.user.link.help': 'ヘルプ', 12 | 'layout.user.link.privacy': 'プライバシー', 13 | 'layout.user.link.terms': '利用規約', 14 | 'app.preview.down.block': 'このページをローカルプロジェクトにダウンロードしてください', 15 | 'app.welcome.link.fetch-blocks': '', 16 | 'app.welcome.link.block-list': '', 17 | ...globalHeader, 18 | ...menu, 19 | ...settingDrawer, 20 | ...settings, 21 | ...pwa, 22 | ...component, 23 | ...pages, 24 | }; 25 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/ja-JP/component.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.tagSelect.expand': '展開', 3 | 'component.tagSelect.collapse': '折りたたむ', 4 | 'component.tagSelect.all': 'すべて', 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/ja-JP/globalHeader.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.globalHeader.search': '検索', 3 | 'component.globalHeader.search.example1': '検索例1', 4 | 'component.globalHeader.search.example2': '検索例2', 5 | 'component.globalHeader.search.example3': '検索例3', 6 | 'component.globalHeader.help': 'ヘルプ', 7 | 'component.globalHeader.notification': '通知', 8 | 'component.globalHeader.notification.empty': 'すべての通知を表示しました。', 9 | 'component.globalHeader.message': 'メッセージ', 10 | 'component.globalHeader.message.empty': 'すべてのメッセージを表示しました。', 11 | 'component.globalHeader.event': 'イベント', 12 | 'component.globalHeader.event.empty': 'すべてのイベントを表示しました。', 13 | 'component.noticeIcon.clear': 'クリア', 14 | 'component.noticeIcon.cleared': 'クリア済み', 15 | 'component.noticeIcon.empty': '通知なし', 16 | 'component.noticeIcon.view-more': 'もっと見る', 17 | }; 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/ja-JP/pwa.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.pwa.offline': 'あなたは今オフラインです', 3 | 'app.pwa.serviceworker.updated': '新しいコンテンツが利用可能です', 4 | 'app.pwa.serviceworker.updated.hint': 5 | '現在のページをリロードするには、「更新」ボタンを押してください', 6 | 'app.pwa.serviceworker.updated.ok': 'リフレッシュ', 7 | }; 8 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/pt-BR.ts: -------------------------------------------------------------------------------- 1 | import component from './pt-BR/component'; 2 | import globalHeader from './pt-BR/globalHeader'; 3 | import menu from './pt-BR/menu'; 4 | import pwa from './pt-BR/pwa'; 5 | import settingDrawer from './pt-BR/settingDrawer'; 6 | import settings from './pt-BR/settings'; 7 | import pages from './pt-BR/pages'; 8 | 9 | export default { 10 | 'navBar.lang': 'Idiomas', 11 | 'layout.user.link.help': 'ajuda', 12 | 'layout.user.link.privacy': 'política de privacidade', 13 | 'layout.user.link.terms': 'termos de serviços', 14 | 'app.preview.down.block': 'Download this page to your local project', 15 | ...globalHeader, 16 | ...menu, 17 | ...settingDrawer, 18 | ...settings, 19 | ...pwa, 20 | ...component, 21 | ...pages, 22 | }; 23 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/pt-BR/component.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.tagSelect.expand': 'Expandir', 3 | 'component.tagSelect.collapse': 'Diminuir', 4 | 'component.tagSelect.all': 'Todas', 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/pt-BR/globalHeader.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.globalHeader.search': 'Busca', 3 | 'component.globalHeader.search.example1': 'Exemplo de busca 1', 4 | 'component.globalHeader.search.example2': 'Exemplo de busca 2', 5 | 'component.globalHeader.search.example3': 'Exemplo de busca 3', 6 | 'component.globalHeader.help': 'Ajuda', 7 | 'component.globalHeader.notification': 'Notificação', 8 | 'component.globalHeader.notification.empty': 'Você visualizou todas as notificações.', 9 | 'component.globalHeader.message': 'Mensagem', 10 | 'component.globalHeader.message.empty': 'Você visualizou todas as mensagens.', 11 | 'component.globalHeader.event': 'Evento', 12 | 'component.globalHeader.event.empty': 'Você visualizou todos os eventos.', 13 | 'component.noticeIcon.clear': 'Limpar', 14 | 'component.noticeIcon.cleared': 'Limpo', 15 | 'component.noticeIcon.empty': 'Sem notificações', 16 | 'component.noticeIcon.loaded': 'Carregado', 17 | 'component.noticeIcon.view-more': 'Veja mais', 18 | }; 19 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/pt-BR/pwa.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.pwa.offline': 'Você está offline agora', 3 | 'app.pwa.serviceworker.updated': 'Novo conteúdo está disponível', 4 | 'app.pwa.serviceworker.updated.hint': 5 | 'Por favor, pressione o botão "Atualizar" para recarregar a página atual', 6 | 'app.pwa.serviceworker.updated.ok': 'Atualizar', 7 | }; 8 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/zh-CN.ts: -------------------------------------------------------------------------------- 1 | import component from './zh-CN/component'; 2 | import globalHeader from './zh-CN/globalHeader'; 3 | import menu from './zh-CN/menu'; 4 | import pwa from './zh-CN/pwa'; 5 | import settingDrawer from './zh-CN/settingDrawer'; 6 | import settings from './zh-CN/settings'; 7 | import pages from './zh-CN/pages'; 8 | 9 | export default { 10 | 'navBar.lang': '语言', 11 | 'layout.user.link.help': '帮助', 12 | 'layout.user.link.privacy': '隐私', 13 | 'layout.user.link.terms': '条款', 14 | 'app.copyright.produced': '蚂蚁集团体验技术部出品', 15 | 'app.preview.down.block': '下载此页面到本地项目', 16 | 'app.welcome.link.fetch-blocks': '获取全部区块', 17 | 'app.welcome.link.block-list': '基于 block 开发,快速构建标准页面', 18 | ...pages, 19 | ...globalHeader, 20 | ...menu, 21 | ...settingDrawer, 22 | ...settings, 23 | ...pwa, 24 | ...component, 25 | }; 26 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/zh-CN/component.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.tagSelect.expand': '展开', 3 | 'component.tagSelect.collapse': '收起', 4 | 'component.tagSelect.all': '全部', 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/zh-CN/globalHeader.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.globalHeader.search': '站内搜索', 3 | 'component.globalHeader.search.example1': '搜索提示一', 4 | 'component.globalHeader.search.example2': '搜索提示二', 5 | 'component.globalHeader.search.example3': '搜索提示三', 6 | 'component.globalHeader.help': '使用文档', 7 | 'component.globalHeader.notification': '通知', 8 | 'component.globalHeader.notification.empty': '你已查看所有通知', 9 | 'component.globalHeader.message': '消息', 10 | 'component.globalHeader.message.empty': '您已读完所有消息', 11 | 'component.globalHeader.event': '待办', 12 | 'component.globalHeader.event.empty': '你已完成所有待办', 13 | 'component.noticeIcon.clear': '清空', 14 | 'component.noticeIcon.cleared': '清空了', 15 | 'component.noticeIcon.empty': '暂无数据', 16 | 'component.noticeIcon.view-more': '查看更多', 17 | }; 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/zh-CN/pwa.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.pwa.offline': '当前处于离线状态', 3 | 'app.pwa.serviceworker.updated': '有新内容', 4 | 'app.pwa.serviceworker.updated.hint': '请点击“刷新”按钮或者手动刷新页面', 5 | 'app.pwa.serviceworker.updated.ok': '刷新', 6 | }; 7 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/zh-TW.ts: -------------------------------------------------------------------------------- 1 | import component from './zh-TW/component'; 2 | import globalHeader from './zh-TW/globalHeader'; 3 | import menu from './zh-TW/menu'; 4 | import pwa from './zh-TW/pwa'; 5 | import settingDrawer from './zh-TW/settingDrawer'; 6 | import settings from './zh-TW/settings'; 7 | 8 | export default { 9 | 'navBar.lang': '語言', 10 | 'layout.user.link.help': '幫助', 11 | 'layout.user.link.privacy': '隱私', 12 | 'layout.user.link.terms': '條款', 13 | 'app.preview.down.block': '下載此頁面到本地項目', 14 | ...globalHeader, 15 | ...menu, 16 | ...settingDrawer, 17 | ...settings, 18 | ...pwa, 19 | ...component, 20 | }; 21 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/zh-TW/component.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.tagSelect.expand': '展開', 3 | 'component.tagSelect.collapse': '收起', 4 | 'component.tagSelect.all': '全部', 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/zh-TW/globalHeader.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'component.globalHeader.search': '站內搜索', 3 | 'component.globalHeader.search.example1': '搜索提示壹', 4 | 'component.globalHeader.search.example2': '搜索提示二', 5 | 'component.globalHeader.search.example3': '搜索提示三', 6 | 'component.globalHeader.help': '使用手冊', 7 | 'component.globalHeader.notification': '通知', 8 | 'component.globalHeader.notification.empty': '妳已查看所有通知', 9 | 'component.globalHeader.message': '消息', 10 | 'component.globalHeader.message.empty': '您已讀完所有消息', 11 | 'component.globalHeader.event': '待辦', 12 | 'component.globalHeader.event.empty': '妳已完成所有待辦', 13 | 'component.noticeIcon.clear': '清空', 14 | 'component.noticeIcon.cleared': '清空了', 15 | 'component.noticeIcon.empty': '暫無資料', 16 | 'component.noticeIcon.view-more': '查看更多', 17 | }; 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/locales/zh-TW/pwa.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | 'app.pwa.offline': '當前處於離線狀態', 3 | 'app.pwa.serviceworker.updated': '有新內容', 4 | 'app.pwa.serviceworker.updated.hint': '請點擊“刷新”按鈕或者手動刷新頁面', 5 | 'app.pwa.serviceworker.updated.ok': '刷新', 6 | }; 7 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Ant Design Pro", 3 | "short_name": "Ant Design Pro", 4 | "display": "standalone", 5 | "start_url": "./?utm_source=homescreen", 6 | "theme_color": "#002140", 7 | "background_color": "#001529", 8 | "icons": [ 9 | { 10 | "src": "icons/icon-192x192.png", 11 | "sizes": "192x192" 12 | }, 13 | { 14 | "src": "icons/icon-128x128.png", 15 | "sizes": "128x128" 16 | }, 17 | { 18 | "src": "icons/icon-512x512.png", 19 | "sizes": "512x512" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/404.tsx: -------------------------------------------------------------------------------- 1 | import { Button, Result } from 'antd'; 2 | import React from 'react'; 3 | import { history } from 'umi'; 4 | 5 | const NoFoundPage: React.FC = () => ( 6 | history.push('/')}> 12 | Back Home 13 | 14 | } 15 | /> 16 | ); 17 | 18 | export default NoFoundPage; 19 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/Welcome.less: -------------------------------------------------------------------------------- 1 | @import '~antd/lib/style/themes/default.less'; 2 | 3 | .pre { 4 | margin: 12px 0; 5 | padding: 12px 20px; 6 | background: @input-bg; 7 | box-shadow: @card-shadow; 8 | } 9 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/account/center/components/ArticleListContent/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .listContent { 4 | .description { 5 | max-width: 720px; 6 | line-height: 22px; 7 | } 8 | .extra { 9 | margin-top: 16px; 10 | color: @text-color-secondary; 11 | line-height: 22px; 12 | & > :global(.ant-avatar) { 13 | position: relative; 14 | top: 1px; 15 | width: 20px; 16 | height: 20px; 17 | margin-right: 8px; 18 | vertical-align: top; 19 | } 20 | & > em { 21 | margin-left: 16px; 22 | color: @disabled-color; 23 | font-style: normal; 24 | } 25 | } 26 | } 27 | 28 | @media screen and (max-width: @screen-xs) { 29 | .listContent { 30 | .extra { 31 | & > em { 32 | display: block; 33 | margin-top: 8px; 34 | margin-left: 0; 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/account/center/components/ArticleListContent/index.tsx: -------------------------------------------------------------------------------- 1 | import { Avatar } from 'antd'; 2 | import React from 'react'; 3 | import moment from 'moment'; 4 | import styles from './index.less'; 5 | 6 | export type ApplicationsProps = { 7 | data: { 8 | content?: string; 9 | updatedAt?: any; 10 | avatar?: string; 11 | owner?: string; 12 | href?: string; 13 | }; 14 | }; 15 | const ArticleListContent: React.FC = ({ 16 | data: { content, updatedAt, avatar, owner, href }, 17 | }) => ( 18 |
19 |
{content}
20 |
21 | 22 | {owner} 发布在 {href} 23 | {moment(updatedAt).format('YYYY-MM-DD HH:mm')} 24 |
25 |
26 | ); 27 | 28 | export default ArticleListContent; 29 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/account/center/components/Articles/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .articleList { 4 | :global { 5 | .ant-list-item:first-child { 6 | padding-top: 0; 7 | } 8 | } 9 | } 10 | a.listItemMetaTitle { 11 | color: @heading-color; 12 | } 13 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/account/center/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | import type { CurrentUser, ListItemDataType } from './data.d'; 3 | 4 | export async function queryCurrent(): Promise<{ data: CurrentUser }> { 5 | return request('/api/currentUserDetail'); 6 | } 7 | 8 | export async function queryFakeList(params: { 9 | count: number; 10 | }): Promise<{ data: { list: ListItemDataType[] } }> { 11 | return request('/api/fake_list_Detail', { 12 | params, 13 | }); 14 | } 15 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/account/settings/data.d.ts: -------------------------------------------------------------------------------- 1 | export type TagType = { 2 | key: string; 3 | label: string; 4 | }; 5 | 6 | export type GeographicItemType = { 7 | name: string; 8 | id: string; 9 | }; 10 | 11 | export type GeographicType = { 12 | province: GeographicItemType; 13 | city: GeographicItemType; 14 | }; 15 | 16 | export type NoticeType = { 17 | id: string; 18 | title: string; 19 | logo: string; 20 | description: string; 21 | updatedAt: string; 22 | member: string; 23 | href: string; 24 | memberLink: string; 25 | }; 26 | 27 | export type CurrentUser = { 28 | name: string; 29 | avatar: string; 30 | userid: string; 31 | notice: NoticeType[]; 32 | email: string; 33 | signature: string; 34 | title: string; 35 | group: string; 36 | tags: TagType[]; 37 | notifyCount: number; 38 | unreadCount: number; 39 | country: string; 40 | geographic: GeographicType; 41 | address: string; 42 | phone: string; 43 | }; 44 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/account/settings/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | import type { CurrentUser, GeographicItemType } from './data'; 3 | 4 | export async function queryCurrent(): Promise<{ data: CurrentUser }> { 5 | return request('/api/accountSettingCurrentUser'); 6 | } 7 | 8 | export async function queryProvince(): Promise<{ data: GeographicItemType[] }> { 9 | return request('/api/geographic/province'); 10 | } 11 | 12 | export async function queryCity(province: string): Promise<{ data: GeographicItemType[] }> { 13 | return request(`/api/geographic/city/${province}`); 14 | } 15 | 16 | export async function query() { 17 | return request('/api/users'); 18 | } 19 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/analysis/components/Charts/Field/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .field { 4 | margin: 0; 5 | overflow: hidden; 6 | white-space: nowrap; 7 | text-overflow: ellipsis; 8 | .label, 9 | .number { 10 | font-size: @font-size-base; 11 | line-height: 22px; 12 | } 13 | .number { 14 | margin-left: 8px; 15 | color: @heading-color; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/analysis/components/Charts/Field/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import styles from './index.less'; 3 | 4 | export type FieldProps = { 5 | label: React.ReactNode; 6 | value: React.ReactNode; 7 | style?: React.CSSProperties; 8 | }; 9 | 10 | const Field: React.FC = ({ label, value, ...rest }) => ( 11 |
12 | {label} 13 | {value} 14 |
15 | ); 16 | 17 | export default Field; 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/analysis/components/Charts/index.less: -------------------------------------------------------------------------------- 1 | .miniChart { 2 | position: relative; 3 | width: 100%; 4 | .chartContent { 5 | position: absolute; 6 | bottom: -28px; 7 | width: 100%; 8 | > div { 9 | margin: 0 -5px; 10 | overflow: hidden; 11 | } 12 | } 13 | .chartLoading { 14 | position: absolute; 15 | top: 16px; 16 | left: 50%; 17 | margin-left: -7px; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/analysis/components/Charts/index.tsx: -------------------------------------------------------------------------------- 1 | import numeral from 'numeral'; 2 | import ChartCard from './ChartCard'; 3 | import Field from './Field'; 4 | 5 | const yuan = (val: number | string) => `¥ ${numeral(val).format('0,0')}`; 6 | 7 | const Charts = { 8 | yuan, 9 | ChartCard, 10 | Field, 11 | }; 12 | 13 | export { Charts as default, yuan, ChartCard, Field }; 14 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/analysis/components/PageLoading/index.tsx: -------------------------------------------------------------------------------- 1 | import { Spin } from 'antd'; 2 | 3 | // loading components from code split 4 | // https://umijs.org/plugin/umi-plugin-react.html#dynamicimport 5 | export default () => ( 6 |
7 | 8 |
9 | ); 10 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/analysis/components/Trend/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .trendItem { 4 | display: inline-block; 5 | font-size: @font-size-base; 6 | line-height: 22px; 7 | 8 | .up, 9 | .down { 10 | position: relative; 11 | top: 1px; 12 | margin-left: 4px; 13 | span { 14 | font-size: 12px; 15 | transform: scale(0.83); 16 | } 17 | } 18 | .up { 19 | color: @red-6; 20 | } 21 | .down { 22 | top: -1px; 23 | color: @green-6; 24 | } 25 | 26 | &.trendItemGrey .up, 27 | &.trendItemGrey .down { 28 | color: @text-color; 29 | } 30 | 31 | &.reverseColor .up { 32 | color: @green-6; 33 | } 34 | &.reverseColor .down { 35 | color: @red-6; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/analysis/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | import type { AnalysisData } from './data'; 3 | 4 | export async function fakeChartData(): Promise<{ data: AnalysisData }> { 5 | return request('/api/fake_analysis_chart_data'); 6 | } 7 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/analysis/utils/Yuan.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { yuan } from '../components/Charts'; 3 | /** 减少使用 dangerouslySetInnerHTML */ 4 | export default class Yuan extends React.Component<{ 5 | children: React.ReactText; 6 | }> { 7 | main: HTMLSpanElement | undefined | null = null; 8 | 9 | componentDidMount() { 10 | this.renderToHtml(); 11 | } 12 | 13 | componentDidUpdate() { 14 | this.renderToHtml(); 15 | } 16 | 17 | renderToHtml = () => { 18 | const { children } = this.props; 19 | if (this.main) { 20 | this.main.innerHTML = yuan(children); 21 | } 22 | }; 23 | 24 | render() { 25 | return ( 26 | { 28 | this.main = ref; 29 | }} 30 | /> 31 | ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/monitor/_mock.ts: -------------------------------------------------------------------------------- 1 | import mockjs from 'mockjs'; 2 | import type { Request, Response } from 'express'; 3 | 4 | const getTags = (_: Request, res: Response) => { 5 | return res.json({ 6 | data: mockjs.mock({ 7 | 'list|100': [{ name: '@city', 'value|1-100': 150, 'type|0-2': 1 }], 8 | }), 9 | }); 10 | }; 11 | 12 | export default { 13 | 'GET /api/tags': getTags, 14 | }; 15 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/monitor/data.d.ts: -------------------------------------------------------------------------------- 1 | export type TagType = { 2 | name: string; 3 | value: number; 4 | type: string; 5 | }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/monitor/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | import type { TagType } from './data'; 3 | 4 | export async function queryTags(): Promise<{ data: { list: TagType[] } }> { 5 | return request('/api/tags'); 6 | } 7 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/monitor/style.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .mapChart { 4 | height: 452px; 5 | padding-top: 24px; 6 | img { 7 | display: inline-block; 8 | max-width: 100%; 9 | max-height: 437px; 10 | } 11 | } 12 | 13 | .pieCard :global(.pie-stat) { 14 | font-size: 24px !important; 15 | } 16 | 17 | @media screen and (max-width: @screen-lg) { 18 | .mapChart { 19 | height: auto; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/workplace/components/EditableLinkGroup/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .linkGroup { 4 | padding: 20px 0 8px 24px; 5 | font-size: 0; 6 | & > a { 7 | display: inline-block; 8 | width: 25%; 9 | margin-bottom: 13px; 10 | color: @text-color; 11 | font-size: @font-size-base; 12 | &:hover { 13 | color: @primary-color; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/dashboard/workplace/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | import type { NoticeType, ActivitiesType, AnalysisData } from './data'; 3 | 4 | export async function queryProjectNotice(): Promise<{ data: NoticeType[] }> { 5 | return request('/api/project/notice'); 6 | } 7 | 8 | export async function queryActivities(): Promise<{ data: ActivitiesType[] }> { 9 | return request('/api/activities'); 10 | } 11 | 12 | export async function fakeChartData(): Promise<{ data: AnalysisData }> { 13 | return request('/api/fake_workplace_chart_data'); 14 | } 15 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/common/IconFont/index.ts: -------------------------------------------------------------------------------- 1 | import { createFromIconfontCN } from '@ant-design/icons'; 2 | 3 | const IconFont = createFromIconfontCN({ 4 | scriptUrl: 'https://at.alicdn.com/t/font_1101588_01zniftxm9yp.js', 5 | }); 6 | 7 | export default IconFont; 8 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorContextMenu/KoniContextMenu.tsx: -------------------------------------------------------------------------------- 1 | import FlowContextMenu from './FlowContextMenu'; 2 | 3 | export default FlowContextMenu; 4 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorContextMenu/MenuItem.tsx: -------------------------------------------------------------------------------- 1 | import { Command } from 'gg-editor'; 2 | import React from 'react'; 3 | import IconFont from '../../common/IconFont'; 4 | import styles from './index.less'; 5 | 6 | const upperFirst = (str: string) => 7 | str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); 8 | 9 | type MenuItemProps = { 10 | command: string; 11 | icon?: string; 12 | text?: string; 13 | }; 14 | const MenuItem: React.FC = (props) => { 15 | const { command, icon, text } = props; 16 | 17 | return ( 18 | 19 |
20 | 21 | {text || upperFirst(command)} 22 |
23 |
24 | ); 25 | }; 26 | 27 | export default MenuItem; 28 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorContextMenu/MindContextMenu.tsx: -------------------------------------------------------------------------------- 1 | import { CanvasMenu, ContextMenu, NodeMenu } from 'gg-editor'; 2 | 3 | import MenuItem from './MenuItem'; 4 | import styles from './index.less'; 5 | 6 | const MindContextMenu = () => ( 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | ); 21 | 22 | export default MindContextMenu; 23 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorContextMenu/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .contextMenu { 4 | display: none; 5 | overflow: hidden; 6 | background: @component-background; 7 | border-radius: 4px; 8 | box-shadow: @box-shadow-base; 9 | 10 | .item { 11 | display: flex; 12 | align-items: center; 13 | padding: 5px 12px; 14 | cursor: pointer; 15 | transition: all 0.3s; 16 | user-select: none; 17 | 18 | &:hover { 19 | background: @select-item-selected-bg; 20 | } 21 | 22 | span.anticon { 23 | margin-right: 8px; 24 | } 25 | } 26 | 27 | :global { 28 | .disable { 29 | :local { 30 | .item { 31 | color: @disabled-color; 32 | cursor: auto; 33 | 34 | &:hover { 35 | background: @item-hover-bg; 36 | } 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorContextMenu/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowContextMenu from './FlowContextMenu'; 2 | import KoniContextMenu from './KoniContextMenu'; 3 | import MindContextMenu from './MindContextMenu'; 4 | 5 | export { FlowContextMenu, MindContextMenu, KoniContextMenu }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorDetailPanel/FlowDetailPanel.tsx: -------------------------------------------------------------------------------- 1 | import { CanvasPanel, DetailPanel, EdgePanel, GroupPanel, MultiPanel, NodePanel } from 'gg-editor'; 2 | 3 | import { Card } from 'antd'; 4 | import DetailForm from './DetailForm'; 5 | import styles from './index.less'; 6 | 7 | const FlowDetailPanel = () => ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | ); 26 | 27 | export default FlowDetailPanel; 28 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorDetailPanel/KoniDetailPanel.tsx: -------------------------------------------------------------------------------- 1 | import FlowDetailPanel from './FlowDetailPanel'; 2 | 3 | export default FlowDetailPanel; 4 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorDetailPanel/MindDetailPanel.tsx: -------------------------------------------------------------------------------- 1 | import { CanvasPanel, DetailPanel, NodePanel } from 'gg-editor'; 2 | 3 | import { Card } from 'antd'; 4 | import DetailForm from './DetailForm'; 5 | import styles from './index.less'; 6 | 7 | const MindDetailPanel = () => ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ); 17 | 18 | export default MindDetailPanel; 19 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorDetailPanel/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .detailPanel { 4 | flex: 1; 5 | background-color: @component-background; 6 | } 7 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorDetailPanel/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowDetailPanel from './FlowDetailPanel'; 2 | import KoniDetailPanel from './KoniDetailPanel'; 3 | import MindDetailPanel from './MindDetailPanel'; 4 | 5 | export { FlowDetailPanel, MindDetailPanel, KoniDetailPanel }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorItemPanel/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .itemPanel { 4 | flex: 1; 5 | 6 | :global { 7 | .ant-card { 8 | height: 100%; 9 | } 10 | .ant-card-body { 11 | display: flex; 12 | flex-direction: column; 13 | align-items: center; 14 | > div { 15 | margin-bottom: 16px; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorItemPanel/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowItemPanel from './FlowItemPanel'; 2 | import KoniItemPanel from './KoniItemPanel'; 3 | 4 | export { FlowItemPanel, KoniItemPanel }; 5 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorMinimap/index.tsx: -------------------------------------------------------------------------------- 1 | import { Card } from 'antd'; 2 | import { Minimap } from 'gg-editor'; 3 | 4 | const EditorMinimap = () => ( 5 | 6 | 7 | 8 | ); 9 | 10 | export default EditorMinimap; 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorToolbar/KoniToolbar.tsx: -------------------------------------------------------------------------------- 1 | import FlowToolbar from './FlowToolbar'; 2 | 3 | export default FlowToolbar; 4 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorToolbar/ToolbarButton.tsx: -------------------------------------------------------------------------------- 1 | import { Command } from 'gg-editor'; 2 | import React from 'react'; 3 | import { Tooltip } from 'antd'; 4 | import IconFont from '../../common/IconFont'; 5 | import styles from './index.less'; 6 | 7 | const upperFirst = (str: string) => 8 | str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); 9 | 10 | type ToolbarButtonProps = { 11 | command: string; 12 | icon?: string; 13 | text?: string; 14 | }; 15 | const ToolbarButton: React.FC = (props) => { 16 | const { command, icon, text } = props; 17 | 18 | return ( 19 | 20 | 25 | 26 | 27 | 28 | ); 29 | }; 30 | 31 | export default ToolbarButton; 32 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorToolbar/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .toolbar { 4 | display: flex; 5 | align-items: center; 6 | 7 | :global { 8 | .command .anticon { 9 | display: inline-block; 10 | width: 27px; 11 | height: 27px; 12 | margin: 0 6px; 13 | padding-top: 6px; 14 | text-align: center; 15 | cursor: pointer; 16 | 17 | &:hover { 18 | border: 1px solid @item-active-bg; 19 | } 20 | } 21 | 22 | .disable .anticon { 23 | color: @text-color-secondary; 24 | cursor: auto; 25 | 26 | &:hover { 27 | border: 1px solid @border-color-base; 28 | } 29 | } 30 | } 31 | } 32 | 33 | .tooltip { 34 | :global { 35 | .ant-tooltip-inner { 36 | font-size: 12px; 37 | border-radius: 0; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/components/EditorToolbar/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowToolbar from './FlowToolbar'; 2 | import KoniToolbar from './KoniToolbar'; 3 | import MindToolbar from './MindToolbar'; 4 | 5 | export { FlowToolbar, MindToolbar, KoniToolbar }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/flow/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .editor { 4 | display: flex; 5 | flex: 1; 6 | flex-direction: column; 7 | width: 100%; 8 | height: calc(100vh - 250px); 9 | background: @component-background; 10 | } 11 | 12 | .editorHd { 13 | padding: 8px; 14 | background: @descriptions-bg; 15 | border: 1px solid @item-active-bg; 16 | } 17 | 18 | .editorBd { 19 | flex: 1; 20 | } 21 | 22 | .editorSidebar, 23 | .editorContent { 24 | display: flex; 25 | flex-direction: column; 26 | } 27 | 28 | .editorSidebar { 29 | background: @descriptions-bg; 30 | :global { 31 | .g6-editor-minimap-container { 32 | background: none !important ; 33 | } 34 | } 35 | &:first-child { 36 | border-right: 1px solid @item-active-bg; 37 | } 38 | 39 | &:last-child { 40 | border-left: 1px solid @item-active-bg; 41 | } 42 | } 43 | 44 | .flow, 45 | .mind, 46 | .koni { 47 | flex: 1; 48 | } 49 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/common/IconFont/index.ts: -------------------------------------------------------------------------------- 1 | import { createFromIconfontCN } from '@ant-design/icons'; 2 | 3 | const IconFont = createFromIconfontCN({ 4 | scriptUrl: 'https://at.alicdn.com/t/font_1101588_01zniftxm9yp.js', 5 | }); 6 | 7 | export default IconFont; 8 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorContextMenu/KoniContextMenu.tsx: -------------------------------------------------------------------------------- 1 | import FlowContextMenu from './FlowContextMenu'; 2 | 3 | export default FlowContextMenu; 4 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorContextMenu/MenuItem.tsx: -------------------------------------------------------------------------------- 1 | import { Command } from 'gg-editor'; 2 | import React from 'react'; 3 | import IconFont from '../../common/IconFont'; 4 | import styles from './index.less'; 5 | 6 | const upperFirst = (str: string) => 7 | str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); 8 | 9 | type MenuItemProps = { 10 | command: string; 11 | icon?: string; 12 | text?: string; 13 | }; 14 | const MenuItem: React.FC = (props) => { 15 | const { command, icon, text } = props; 16 | 17 | return ( 18 | 19 |
20 | 21 | {text || upperFirst(command)} 22 |
23 |
24 | ); 25 | }; 26 | 27 | export default MenuItem; 28 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorContextMenu/MindContextMenu.tsx: -------------------------------------------------------------------------------- 1 | import { CanvasMenu, ContextMenu, NodeMenu } from 'gg-editor'; 2 | 3 | import MenuItem from './MenuItem'; 4 | import styles from './index.less'; 5 | 6 | const MindContextMenu = () => ( 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | ); 21 | 22 | export default MindContextMenu; 23 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorContextMenu/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .contextMenu { 4 | display: none; 5 | overflow: hidden; 6 | background: @component-background; 7 | border-radius: 4px; 8 | box-shadow: @box-shadow-base; 9 | .item { 10 | display: flex; 11 | align-items: center; 12 | padding: 5px 12px; 13 | cursor: pointer; 14 | transition: all 0.3s; 15 | user-select: none; 16 | 17 | &:hover { 18 | background: @select-item-selected-bg; 19 | } 20 | 21 | .anticon { 22 | margin-right: 8px; 23 | } 24 | } 25 | 26 | :global { 27 | .disable { 28 | :local { 29 | .item { 30 | color: @disabled-color; 31 | cursor: auto; 32 | 33 | &:hover { 34 | background: @item-hover-bg; 35 | } 36 | } 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorContextMenu/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowContextMenu from './FlowContextMenu'; 2 | import KoniContextMenu from './KoniContextMenu'; 3 | import MindContextMenu from './MindContextMenu'; 4 | 5 | export { FlowContextMenu, MindContextMenu, KoniContextMenu }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorDetailPanel/FlowDetailPanel.tsx: -------------------------------------------------------------------------------- 1 | import { CanvasPanel, DetailPanel, EdgePanel, GroupPanel, MultiPanel, NodePanel } from 'gg-editor'; 2 | 3 | import { Card } from 'antd'; 4 | import DetailForm from './DetailForm'; 5 | import styles from './index.less'; 6 | 7 | const FlowDetailPanel = () => ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | ); 26 | 27 | export default FlowDetailPanel; 28 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorDetailPanel/KoniDetailPanel.tsx: -------------------------------------------------------------------------------- 1 | import FlowDetailPanel from './FlowDetailPanel'; 2 | 3 | export default FlowDetailPanel; 4 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorDetailPanel/MindDetailPanel.tsx: -------------------------------------------------------------------------------- 1 | import { CanvasPanel, DetailPanel, NodePanel } from 'gg-editor'; 2 | 3 | import { Card } from 'antd'; 4 | import DetailForm from './DetailForm'; 5 | import styles from './index.less'; 6 | 7 | const MindDetailPanel = () => ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ); 17 | 18 | export default MindDetailPanel; 19 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorDetailPanel/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .detailPanel { 4 | flex: 1; 5 | background-color: @component-background; 6 | } 7 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorDetailPanel/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowDetailPanel from './FlowDetailPanel'; 2 | import KoniDetailPanel from './KoniDetailPanel'; 3 | import MindDetailPanel from './MindDetailPanel'; 4 | 5 | export { FlowDetailPanel, MindDetailPanel, KoniDetailPanel }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorItemPanel/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .itemPanel { 4 | flex: 1; 5 | 6 | :global { 7 | .ant-card { 8 | height: 100%; 9 | } 10 | .ant-card-body { 11 | display: flex; 12 | flex-direction: column; 13 | align-items: center; 14 | > div { 15 | margin-bottom: 16px; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorItemPanel/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowItemPanel from './FlowItemPanel'; 2 | import KoniItemPanel from './KoniItemPanel'; 3 | 4 | export { FlowItemPanel, KoniItemPanel }; 5 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorMinimap/index.tsx: -------------------------------------------------------------------------------- 1 | import { Card } from 'antd'; 2 | import { Minimap } from 'gg-editor'; 3 | 4 | const EditorMinimap = () => ( 5 | 6 | 7 | 8 | ); 9 | 10 | export default EditorMinimap; 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorToolbar/KoniToolbar.tsx: -------------------------------------------------------------------------------- 1 | import FlowToolbar from './FlowToolbar'; 2 | 3 | export default FlowToolbar; 4 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorToolbar/ToolbarButton.tsx: -------------------------------------------------------------------------------- 1 | import { Command } from 'gg-editor'; 2 | import React from 'react'; 3 | import { Tooltip } from 'antd'; 4 | import IconFont from '../../common/IconFont'; 5 | import styles from './index.less'; 6 | 7 | const upperFirst = (str: string) => 8 | str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); 9 | 10 | type ToolbarButtonProps = { 11 | command: string; 12 | icon?: string; 13 | text?: string; 14 | }; 15 | const ToolbarButton: React.FC = (props) => { 16 | const { command, icon, text } = props; 17 | 18 | return ( 19 | 20 | 25 | 26 | 27 | 28 | ); 29 | }; 30 | 31 | export default ToolbarButton; 32 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorToolbar/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .toolbar { 4 | display: flex; 5 | align-items: center; 6 | :global { 7 | .command .anticon { 8 | display: inline-block; 9 | width: 27px; 10 | height: 27px; 11 | margin: 0 6px; 12 | padding-top: 6px; 13 | text-align: center; 14 | cursor: pointer; 15 | 16 | &:hover { 17 | border: 1px solid @item-active-bg; 18 | } 19 | } 20 | 21 | .disable .anticon { 22 | color: @text-color-secondary; 23 | cursor: auto; 24 | 25 | &:hover { 26 | border: 1px solid @border-color-base; 27 | } 28 | } 29 | } 30 | } 31 | 32 | .tooltip { 33 | :global { 34 | .ant-tooltip-inner { 35 | font-size: 12px; 36 | border-radius: 0; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/koni/components/EditorToolbar/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowToolbar from './FlowToolbar'; 2 | import KoniToolbar from './KoniToolbar'; 3 | import MindToolbar from './MindToolbar'; 4 | 5 | export { FlowToolbar, MindToolbar, KoniToolbar }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/common/IconFont/index.ts: -------------------------------------------------------------------------------- 1 | import { createFromIconfontCN } from '@ant-design/icons'; 2 | 3 | const IconFont = createFromIconfontCN({ 4 | scriptUrl: 'https://at.alicdn.com/t/font_1101588_01zniftxm9yp.js', 5 | }); 6 | 7 | export default IconFont; 8 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorContextMenu/KoniContextMenu.tsx: -------------------------------------------------------------------------------- 1 | import FlowContextMenu from './FlowContextMenu'; 2 | 3 | export default FlowContextMenu; 4 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorContextMenu/MenuItem.tsx: -------------------------------------------------------------------------------- 1 | import { Command } from 'gg-editor'; 2 | import React from 'react'; 3 | import IconFont from '../../common/IconFont'; 4 | import styles from './index.less'; 5 | 6 | const upperFirst = (str: string) => 7 | str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); 8 | 9 | type MenuItemProps = { 10 | command: string; 11 | icon?: string; 12 | text?: string; 13 | }; 14 | const MenuItem: React.FC = (props) => { 15 | const { command, icon, text } = props; 16 | 17 | return ( 18 | 19 |
20 | 21 | {text || upperFirst(command)} 22 |
23 |
24 | ); 25 | }; 26 | 27 | export default MenuItem; 28 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorContextMenu/MindContextMenu.tsx: -------------------------------------------------------------------------------- 1 | import { CanvasMenu, ContextMenu, NodeMenu } from 'gg-editor'; 2 | 3 | import MenuItem from './MenuItem'; 4 | import styles from './index.less'; 5 | 6 | const MindContextMenu = () => ( 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | ); 21 | 22 | export default MindContextMenu; 23 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorContextMenu/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .contextMenu { 4 | display: none; 5 | overflow: hidden; 6 | background: @component-background; 7 | border-radius: 4px; 8 | box-shadow: @box-shadow-base; 9 | .item { 10 | display: flex; 11 | align-items: center; 12 | padding: 5px 12px; 13 | cursor: pointer; 14 | transition: all 0.3s; 15 | user-select: none; 16 | 17 | &:hover { 18 | background: @select-item-selected-bg; 19 | } 20 | 21 | .anticon { 22 | margin-right: 8px; 23 | } 24 | } 25 | 26 | :global { 27 | .disable { 28 | :local { 29 | .item { 30 | color: @disabled-color; 31 | cursor: auto; 32 | 33 | &:hover { 34 | background: @item-hover-bg; 35 | } 36 | } 37 | } 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorContextMenu/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowContextMenu from './FlowContextMenu'; 2 | import KoniContextMenu from './KoniContextMenu'; 3 | import MindContextMenu from './MindContextMenu'; 4 | 5 | export { FlowContextMenu, MindContextMenu, KoniContextMenu }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorDetailPanel/FlowDetailPanel.tsx: -------------------------------------------------------------------------------- 1 | import { CanvasPanel, DetailPanel, EdgePanel, GroupPanel, MultiPanel, NodePanel } from 'gg-editor'; 2 | 3 | import { Card } from 'antd'; 4 | import DetailForm from './DetailForm'; 5 | import styles from './index.less'; 6 | 7 | const FlowDetailPanel = () => ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | ); 26 | 27 | export default FlowDetailPanel; 28 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorDetailPanel/KoniDetailPanel.tsx: -------------------------------------------------------------------------------- 1 | import FlowDetailPanel from './FlowDetailPanel'; 2 | 3 | export default FlowDetailPanel; 4 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorDetailPanel/MindDetailPanel.tsx: -------------------------------------------------------------------------------- 1 | import { CanvasPanel, DetailPanel, NodePanel } from 'gg-editor'; 2 | 3 | import { Card } from 'antd'; 4 | import DetailForm from './DetailForm'; 5 | import styles from './index.less'; 6 | 7 | const MindDetailPanel = () => ( 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ); 17 | 18 | export default MindDetailPanel; 19 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorDetailPanel/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .detailPanel { 4 | flex: 1; 5 | background-color: @component-background; 6 | } 7 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorDetailPanel/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowDetailPanel from './FlowDetailPanel'; 2 | import KoniDetailPanel from './KoniDetailPanel'; 3 | import MindDetailPanel from './MindDetailPanel'; 4 | 5 | export { FlowDetailPanel, MindDetailPanel, KoniDetailPanel }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorItemPanel/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .itemPanel { 4 | flex: 1; 5 | 6 | :global { 7 | .ant-card { 8 | height: 100%; 9 | } 10 | .ant-card-body { 11 | display: flex; 12 | flex-direction: column; 13 | align-items: center; 14 | > div { 15 | margin-bottom: 16px; 16 | } 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorItemPanel/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowItemPanel from './FlowItemPanel'; 2 | import KoniItemPanel from './KoniItemPanel'; 3 | 4 | export { FlowItemPanel, KoniItemPanel }; 5 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorMinimap/index.tsx: -------------------------------------------------------------------------------- 1 | import { Card } from 'antd'; 2 | import { Minimap } from 'gg-editor'; 3 | 4 | const EditorMinimap = () => ( 5 | 6 | 7 | 8 | ); 9 | 10 | export default EditorMinimap; 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorToolbar/KoniToolbar.tsx: -------------------------------------------------------------------------------- 1 | import FlowToolbar from './FlowToolbar'; 2 | 3 | export default FlowToolbar; 4 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorToolbar/ToolbarButton.tsx: -------------------------------------------------------------------------------- 1 | import { Command } from 'gg-editor'; 2 | import React from 'react'; 3 | import { Tooltip } from 'antd'; 4 | import IconFont from '../../common/IconFont'; 5 | import styles from './index.less'; 6 | 7 | const upperFirst = (str: string) => 8 | str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); 9 | 10 | type ToolbarButtonProps = { 11 | command: string; 12 | icon?: string; 13 | text?: string; 14 | }; 15 | const ToolbarButton: React.FC = (props) => { 16 | const { command, icon, text } = props; 17 | 18 | return ( 19 | 20 | 25 | 26 | 27 | 28 | ); 29 | }; 30 | 31 | export default ToolbarButton; 32 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorToolbar/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .toolbar { 4 | display: flex; 5 | align-items: center; 6 | 7 | :global { 8 | .command .anticon { 9 | display: inline-block; 10 | width: 27px; 11 | height: 27px; 12 | margin: 0 6px; 13 | padding-top: 6px; 14 | text-align: center; 15 | cursor: pointer; 16 | 17 | &:hover { 18 | border: 1px solid @item-active-bg; 19 | } 20 | } 21 | 22 | .disable .anticon { 23 | color: @text-color-secondary; 24 | cursor: auto; 25 | 26 | &:hover { 27 | border: 1px solid @border-color-base; 28 | } 29 | } 30 | } 31 | } 32 | 33 | .tooltip { 34 | :global { 35 | .ant-tooltip-inner { 36 | font-size: 12px; 37 | border-radius: 0; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/editor/mind/components/EditorToolbar/index.tsx: -------------------------------------------------------------------------------- 1 | import FlowToolbar from './FlowToolbar'; 2 | import KoniToolbar from './KoniToolbar'; 3 | import MindToolbar from './MindToolbar'; 4 | 5 | export { FlowToolbar, MindToolbar, KoniToolbar }; 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/exception/403/index.tsx: -------------------------------------------------------------------------------- 1 | import { Link } from 'umi'; 2 | import { Result, Button } from 'antd'; 3 | 4 | export default () => ( 5 | 14 | 15 | 16 | } 17 | /> 18 | ); 19 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/exception/404/index.tsx: -------------------------------------------------------------------------------- 1 | import { Link } from 'umi'; 2 | import { Result, Button } from 'antd'; 3 | 4 | export default () => ( 5 | 14 | 15 | 16 | } 17 | /> 18 | ); 19 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/exception/500/index.tsx: -------------------------------------------------------------------------------- 1 | import { Link } from 'umi'; 2 | import { Result, Button } from 'antd'; 3 | 4 | export default () => ( 5 | 14 | 15 | 16 | } 17 | /> 18 | ); 19 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/form/advanced-form/_mock.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-extraneous-dependencies 2 | import type { Request, Response } from 'express'; 3 | 4 | export default { 5 | 'POST /api/advancedForm': (_: Request, res: Response) => { 6 | res.send({ data: { message: 'Ok' } }); 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/form/advanced-form/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | 3 | export async function fakeSubmitForm(params: any) { 4 | return request('/api/advancedForm', { 5 | method: 'POST', 6 | data: params, 7 | }); 8 | } 9 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/form/basic-form/_mock.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-extraneous-dependencies 2 | import type { Request, Response } from 'express'; 3 | 4 | export default { 5 | 'POST /api/basicForm': (_: Request, res: Response) => { 6 | res.send({ data: { message: 'Ok' } }); 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/form/basic-form/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | 3 | export async function fakeSubmitForm(params: any) { 4 | return request('/api/basicForm', { 5 | method: 'POST', 6 | data: params, 7 | }); 8 | } 9 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/form/basic-form/style.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .optional { 4 | color: @text-color-secondary; 5 | font-style: normal; 6 | } 7 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/form/step-form/_mock.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-extraneous-dependencies 2 | import type { Request, Response } from 'express'; 3 | 4 | export default { 5 | 'POST /api/stepForm': (_: Request, res: Response) => { 6 | res.send({ data: { message: 'Ok' } }); 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/form/step-form/data.d.ts: -------------------------------------------------------------------------------- 1 | export interface StepDataType { 2 | payAccount: string; 3 | receiverAccount: string; 4 | receiverName: string; 5 | amount: string; 6 | receiverMode: string; 7 | } 8 | 9 | export type CurrentTypes = 'base' | 'confirm' | 'result'; 10 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/form/step-form/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | 3 | export async function fakeSubmitForm(params: any) { 4 | return request('/api/stepForm', { 5 | method: 'POST', 6 | data: params, 7 | }); 8 | } 9 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/form/step-form/style.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .card { 4 | margin-bottom: 24px; 5 | } 6 | 7 | .result { 8 | max-width: 560px; 9 | margin: 0 auto; 10 | padding: 24px 0 8px; 11 | } 12 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/basic-list/data.d.ts: -------------------------------------------------------------------------------- 1 | export type Member = { 2 | avatar: string; 3 | name: string; 4 | id: string; 5 | }; 6 | 7 | export type BasicListItemDataType = { 8 | id: string; 9 | owner: string; 10 | title: string; 11 | avatar: string; 12 | cover: string; 13 | status: 'normal' | 'exception' | 'active' | 'success'; 14 | percent: number; 15 | logo: string; 16 | href: string; 17 | body?: any; 18 | updatedAt: number; 19 | createdAt: number; 20 | subDescription: string; 21 | description: string; 22 | activeUser: number; 23 | newUser: number; 24 | star: number; 25 | like: number; 26 | message: number; 27 | content: string; 28 | members: Member[]; 29 | }; 30 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/card-list/data.d.ts: -------------------------------------------------------------------------------- 1 | export type Member = { 2 | avatar: string; 3 | name: string; 4 | id: string; 5 | }; 6 | 7 | export type CardListItemDataType = { 8 | id: string; 9 | owner: string; 10 | title: string; 11 | avatar: string; 12 | cover: string; 13 | status: 'normal' | 'exception' | 'active' | 'success'; 14 | percent: number; 15 | logo: string; 16 | href: string; 17 | body?: any; 18 | updatedAt: number; 19 | createdAt: number; 20 | subDescription: string; 21 | description: string; 22 | activeUser: number; 23 | newUser: number; 24 | star: number; 25 | like: number; 26 | message: number; 27 | content: string; 28 | members: Member[]; 29 | }; 30 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/card-list/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | import type { CardListItemDataType } from './data.d'; 3 | 4 | export async function queryFakeList(params: { 5 | count: number; 6 | }): Promise<{ data: { list: CardListItemDataType[] } }> { 7 | return request('/api/card_fake_list', { 8 | params, 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/applications/components/TagSelect/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .tagSelect { 4 | position: relative; 5 | max-height: 32px; 6 | margin-left: -8px; 7 | overflow: hidden; 8 | line-height: 32px; 9 | transition: all 0.3s; 10 | user-select: none; 11 | :global { 12 | .ant-tag { 13 | margin-right: 24px; 14 | padding: 0 8px; 15 | font-size: @font-size-base; 16 | } 17 | } 18 | &.expanded { 19 | max-height: 200px; 20 | transition: all 0.3s; 21 | } 22 | .trigger { 23 | position: absolute; 24 | top: 0; 25 | right: 0; 26 | 27 | span.anticon { 28 | font-size: 12px; 29 | } 30 | } 31 | &.hasExpandTag { 32 | padding-right: 50px; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/applications/data.d.ts: -------------------------------------------------------------------------------- 1 | export type Member = { 2 | avatar: string; 3 | name: string; 4 | id: string; 5 | }; 6 | 7 | export interface Params { 8 | count: number; 9 | } 10 | 11 | export interface ListItemDataType { 12 | id: string; 13 | owner: string; 14 | title: string; 15 | avatar: string; 16 | cover: string; 17 | status: 'normal' | 'exception' | 'active' | 'success'; 18 | percent: number; 19 | logo: string; 20 | href: string; 21 | body?: any; 22 | updatedAt: number; 23 | createdAt: number; 24 | subDescription: string; 25 | description: string; 26 | activeUser: number; 27 | newUser: number; 28 | star: number; 29 | like: number; 30 | message: number; 31 | content: string; 32 | members: Member[]; 33 | } 34 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/applications/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | import type { Params, ListItemDataType } from './data.d'; 3 | 4 | export async function queryFakeList( 5 | params: Params, 6 | ): Promise<{ data: { list: ListItemDataType[] } }> { 7 | return request('/api/fake_list', { 8 | params, 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/articles/components/ArticleListContent/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .listContent { 4 | .description { 5 | max-width: 720px; 6 | line-height: 22px; 7 | } 8 | .extra { 9 | margin-top: 16px; 10 | color: @text-color-secondary; 11 | line-height: 22px; 12 | & > :global(.ant-avatar) { 13 | position: relative; 14 | top: 1px; 15 | width: 20px; 16 | height: 20px; 17 | margin-right: 8px; 18 | vertical-align: top; 19 | } 20 | & > em { 21 | margin-left: 16px; 22 | color: @disabled-color; 23 | font-style: normal; 24 | } 25 | } 26 | } 27 | 28 | @media screen and (max-width: @screen-xs) { 29 | .listContent { 30 | .extra { 31 | & > em { 32 | display: block; 33 | margin-top: 8px; 34 | margin-left: 0; 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/articles/components/ArticleListContent/index.tsx: -------------------------------------------------------------------------------- 1 | import { Avatar } from 'antd'; 2 | import React from 'react'; 3 | import moment from 'moment'; 4 | import styles from './index.less'; 5 | 6 | type ArticleListContentProps = { 7 | data: { 8 | content: React.ReactNode; 9 | updatedAt: number; 10 | avatar: string; 11 | owner: string; 12 | href: string; 13 | }; 14 | }; 15 | 16 | const ArticleListContent: React.FC = ({ 17 | data: { content, updatedAt, avatar, owner, href }, 18 | }) => ( 19 |
20 |
{content}
21 |
22 | 23 | {owner} 发布在 {href} 24 | {moment(updatedAt).format('YYYY-MM-DD HH:mm')} 25 |
26 |
27 | ); 28 | 29 | export default ArticleListContent; 30 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/articles/components/StandardFormRow/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import classNames from 'classnames'; 3 | import styles from './index.less'; 4 | 5 | type StandardFormRowProps = { 6 | title?: string; 7 | last?: boolean; 8 | block?: boolean; 9 | grid?: boolean; 10 | style?: React.CSSProperties; 11 | }; 12 | 13 | const StandardFormRow: React.FC = ({ 14 | title, 15 | children, 16 | last, 17 | block, 18 | grid, 19 | ...rest 20 | }) => { 21 | const cls = classNames(styles.standardFormRow, { 22 | [styles.standardFormRowBlock]: block, 23 | [styles.standardFormRowLast]: last, 24 | [styles.standardFormRowGrid]: grid, 25 | }); 26 | 27 | return ( 28 |
29 | {title && ( 30 |
31 | {title} 32 |
33 | )} 34 |
{children}
35 |
36 | ); 37 | }; 38 | 39 | export default StandardFormRow; 40 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/articles/components/TagSelect/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .tagSelect { 4 | position: relative; 5 | max-height: 32px; 6 | margin-left: -8px; 7 | overflow: hidden; 8 | line-height: 32px; 9 | transition: all 0.3s; 10 | user-select: none; 11 | :global { 12 | .ant-tag { 13 | margin-right: 24px; 14 | padding: 0 8px; 15 | font-size: @font-size-base; 16 | } 17 | } 18 | &.expanded { 19 | max-height: 200px; 20 | transition: all 0.3s; 21 | } 22 | .trigger { 23 | position: absolute; 24 | top: 0; 25 | right: 0; 26 | span.anticon { 27 | font-size: 12px; 28 | } 29 | } 30 | &.hasExpandTag { 31 | padding-right: 50px; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/articles/data.d.ts: -------------------------------------------------------------------------------- 1 | export type Member = { 2 | avatar: string; 3 | name: string; 4 | id: string; 5 | }; 6 | 7 | export interface Params { 8 | count: number; 9 | } 10 | export interface ListItemDataType { 11 | id: string; 12 | owner: string; 13 | title: string; 14 | avatar: string; 15 | cover: string; 16 | status: 'normal' | 'exception' | 'active' | 'success'; 17 | percent: number; 18 | logo: string; 19 | href: string; 20 | body?: any; 21 | updatedAt: number; 22 | createdAt: number; 23 | subDescription: string; 24 | description: string; 25 | activeUser: number; 26 | newUser: number; 27 | star: number; 28 | like: number; 29 | message: number; 30 | content: string; 31 | members: Member[]; 32 | } 33 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/articles/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | import type { Params, ListItemDataType } from './data.d'; 3 | 4 | export async function queryFakeList( 5 | params: Params, 6 | ): Promise<{ data: { list: ListItemDataType[] } }> { 7 | return request('/api/fake_list', { 8 | params, 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/articles/style.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | a.listItemMetaTitle { 4 | color: @heading-color; 5 | } 6 | .listItemExtra { 7 | width: 272px; 8 | height: 1px; 9 | } 10 | .selfTrigger { 11 | margin-left: 12px; 12 | } 13 | 14 | @media screen and (max-width: @screen-xs) { 15 | .selfTrigger { 16 | display: block; 17 | margin-left: 0; 18 | } 19 | } 20 | @media screen and (max-width: @screen-md) { 21 | .selfTrigger { 22 | display: block; 23 | margin-left: 0; 24 | } 25 | } 26 | @media screen and (max-width: @screen-lg) { 27 | .listItemExtra { 28 | width: 0; 29 | height: 1px; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/projects/components/TagSelect/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .tagSelect { 4 | position: relative; 5 | max-height: 32px; 6 | margin-left: -8px; 7 | overflow: hidden; 8 | line-height: 32px; 9 | transition: all 0.3s; 10 | user-select: none; 11 | :global { 12 | .ant-tag { 13 | margin-right: 24px; 14 | padding: 0 8px; 15 | font-size: @font-size-base; 16 | } 17 | } 18 | &.expanded { 19 | max-height: 200px; 20 | transition: all 0.3s; 21 | } 22 | .trigger { 23 | position: absolute; 24 | top: 0; 25 | right: 0; 26 | span.anticon { 27 | font-size: 12px; 28 | } 29 | } 30 | &.hasExpandTag { 31 | padding-right: 50px; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/projects/data.d.ts: -------------------------------------------------------------------------------- 1 | export type Member = { 2 | avatar: string; 3 | name: string; 4 | id: string; 5 | }; 6 | 7 | export interface Params { 8 | count: number; 9 | } 10 | export interface ListItemDataType { 11 | id: string; 12 | owner: string; 13 | title: string; 14 | avatar: string; 15 | cover: string; 16 | status: 'normal' | 'exception' | 'active' | 'success'; 17 | percent: number; 18 | logo: string; 19 | href: string; 20 | body?: any; 21 | updatedAt: number; 22 | createdAt: number; 23 | subDescription: string; 24 | description: string; 25 | activeUser: number; 26 | newUser: number; 27 | star: number; 28 | like: number; 29 | message: number; 30 | content: string; 31 | members: Member[]; 32 | } 33 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/search/projects/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | import type { Params, ListItemDataType } from './data'; 3 | 4 | export async function queryFakeList( 5 | params: Params, 6 | ): Promise<{ data: { list: ListItemDataType[] } }> { 7 | return request('/api/fake_list', { 8 | params, 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/table-list/components/CreateForm.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Modal } from 'antd'; 3 | 4 | type CreateFormProps = { 5 | modalVisible: boolean; 6 | onCancel: () => void; 7 | }; 8 | 9 | const CreateForm: React.FC = (props) => { 10 | const { modalVisible, onCancel } = props; 11 | 12 | return ( 13 | onCancel()} 18 | footer={null} 19 | > 20 | {props.children} 21 | 22 | ); 23 | }; 24 | 25 | export default CreateForm; 26 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/list/table-list/data.d.ts: -------------------------------------------------------------------------------- 1 | export type TableListItem = { 2 | key: number; 3 | disabled?: boolean; 4 | href: string; 5 | avatar: string; 6 | name: string; 7 | owner: string; 8 | desc: string; 9 | callNo: number; 10 | status: string; 11 | updatedAt: Date; 12 | createdAt: Date; 13 | progress: number; 14 | }; 15 | 16 | export type TableListPagination = { 17 | total: number; 18 | pageSize: number; 19 | current: number; 20 | }; 21 | 22 | export type TableListData = { 23 | list: TableListItem[]; 24 | pagination: Partial; 25 | }; 26 | 27 | export type TableListParams = { 28 | status?: string; 29 | name?: string; 30 | desc?: string; 31 | key?: number; 32 | pageSize?: number; 33 | currentPage?: number; 34 | filter?: Record; 35 | sorter?: Record; 36 | }; 37 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/profile/advanced/data.d.ts: -------------------------------------------------------------------------------- 1 | export type AdvancedOperation1 = { 2 | key: string; 3 | type: string; 4 | name: string; 5 | status: string; 6 | updatedAt: string; 7 | memo: string; 8 | }; 9 | 10 | export type AdvancedOperation2 = { 11 | key: string; 12 | type: string; 13 | name: string; 14 | status: string; 15 | updatedAt: string; 16 | memo: string; 17 | }; 18 | 19 | export type AdvancedOperation3 = { 20 | key: string; 21 | type: string; 22 | name: string; 23 | status: string; 24 | updatedAt: string; 25 | memo: string; 26 | }; 27 | 28 | export interface AdvancedProfileData { 29 | advancedOperation1?: AdvancedOperation1[]; 30 | advancedOperation2?: AdvancedOperation2[]; 31 | advancedOperation3?: AdvancedOperation3[]; 32 | } 33 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/profile/advanced/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | 3 | export async function queryAdvancedProfile() { 4 | return request('/api/profile/advanced'); 5 | } 6 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/profile/basic/data.d.ts: -------------------------------------------------------------------------------- 1 | export type BasicGood = { 2 | id: string; 3 | name?: string; 4 | barcode?: string; 5 | price?: string; 6 | num?: string | number; 7 | amount?: string | number; 8 | }; 9 | 10 | export type BasicProgress = { 11 | key: string; 12 | time: string; 13 | rate: string; 14 | status: string; 15 | operator: string; 16 | cost: string; 17 | }; 18 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/profile/basic/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | import type { BasicGood, BasicProgress } from './data.d'; 3 | 4 | export async function queryBasicProfile(): Promise<{ 5 | data: { 6 | basicProgress: BasicProgress[]; 7 | basicGoods: BasicGood[]; 8 | }; 9 | }> { 10 | return request('/api/profile/basic'); 11 | } 12 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/profile/basic/style.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .title { 4 | margin-bottom: 16px; 5 | color: @heading-color; 6 | font-weight: 500; 7 | font-size: 16px; 8 | } 9 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/result/fail/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .error_icon { 4 | color: @highlight-color; 5 | } 6 | .title { 7 | margin-bottom: 16px; 8 | color: @heading-color; 9 | font-weight: 500; 10 | font-size: 16px; 11 | } 12 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/result/success/index.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .title { 4 | position: relative; 5 | color: @text-color; 6 | font-size: 12px; 7 | text-align: center; 8 | } 9 | 10 | .head-title { 11 | margin-bottom: 20px; 12 | color: @heading-color; 13 | font-weight: 500px; 14 | font-size: 16px; 15 | } 16 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/user/register-result/style.less: -------------------------------------------------------------------------------- 1 | .registerResult { 2 | width: 800px; 3 | min-height: 400px; 4 | margin: auto; 5 | padding: 80px; 6 | background: none; 7 | :global { 8 | .anticon { 9 | font-size: 64px; 10 | } 11 | } 12 | .title { 13 | margin-top: 32px; 14 | font-size: 20px; 15 | line-height: 28px; 16 | } 17 | .actions { 18 | margin-top: 40px; 19 | a + a { 20 | margin-left: 8px; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/user/register/_mock.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line import/no-extraneous-dependencies 2 | import type { Request, Response } from 'express'; 3 | 4 | export default { 5 | 'POST /api/register': (_: Request, res: Response) => { 6 | res.send({ 7 | data: { status: 'ok', currentAuthority: 'user' }, 8 | }); 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/user/register/service.ts: -------------------------------------------------------------------------------- 1 | import { request } from 'umi'; 2 | 3 | export interface StateType { 4 | status?: 'ok' | 'error'; 5 | currentAuthority?: 'user' | 'guest' | 'admin'; 6 | } 7 | 8 | export interface UserRegisterParams { 9 | mail: string; 10 | password: string; 11 | confirm: string; 12 | mobile: string; 13 | captcha: string; 14 | prefix: string; 15 | } 16 | 17 | export async function fakeRegister(params: UserRegisterParams) { 18 | return request('/api/register', { 19 | method: 'POST', 20 | data: params, 21 | }); 22 | } 23 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/pages/user/register/style.less: -------------------------------------------------------------------------------- 1 | @import '~antd/es/style/themes/default.less'; 2 | 3 | .main { 4 | width: 368px; 5 | margin: 0 auto; 6 | 7 | h3 { 8 | margin-bottom: 20px; 9 | font-size: 16px; 10 | } 11 | 12 | .password { 13 | margin-bottom: 24px; 14 | :global { 15 | .ant-form-item-explain { 16 | display: none; 17 | } 18 | } 19 | } 20 | 21 | .getCaptcha { 22 | display: block; 23 | width: 100%; 24 | } 25 | 26 | .submit { 27 | width: 50%; 28 | } 29 | 30 | .login { 31 | float: right; 32 | line-height: @btn-height-lg; 33 | } 34 | } 35 | 36 | .success, 37 | .warning, 38 | .error { 39 | transition: color 0.3s; 40 | } 41 | 42 | .success { 43 | color: @success-color; 44 | } 45 | 46 | .warning { 47 | color: @warning-color; 48 | } 49 | 50 | .error { 51 | color: @error-color; 52 | } 53 | 54 | .progress-pass > .progress { 55 | :global { 56 | .ant-progress-bg { 57 | background-color: @warning-color; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/services/ant-design-pro/index.ts: -------------------------------------------------------------------------------- 1 | // @ts-ignore 2 | /* eslint-disable */ 3 | // API 更新时间: 4 | // API 唯一标识: 5 | import * as api from './api'; 6 | import * as login from './login'; 7 | export default { 8 | api, 9 | login, 10 | }; 11 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/services/ant-design-pro/login.ts: -------------------------------------------------------------------------------- 1 | // @ts-ignore 2 | /* eslint-disable */ 3 | import { request } from 'umi'; 4 | 5 | /** 发送验证码 POST /api/login/captcha */ 6 | export async function getFakeCaptcha( 7 | params: { 8 | // query 9 | /** 手机号 */ 10 | phone?: string; 11 | }, 12 | options?: { [key: string]: any }, 13 | ) { 14 | return request('/api/login/captcha', { 15 | method: 'GET', 16 | params: { 17 | ...params, 18 | }, 19 | ...(options || {}), 20 | }); 21 | } 22 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/services/swagger/index.ts: -------------------------------------------------------------------------------- 1 | // @ts-ignore 2 | /* eslint-disable */ 3 | // API 更新时间: 4 | // API 唯一标识: 5 | import * as pet from './pet'; 6 | import * as store from './store'; 7 | import * as user from './user'; 8 | export default { 9 | pet, 10 | store, 11 | user, 12 | }; 13 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'slash2'; 2 | declare module '*.css'; 3 | declare module '*.less'; 4 | declare module '*.scss'; 5 | declare module '*.sass'; 6 | declare module '*.svg'; 7 | declare module '*.png'; 8 | declare module '*.jpg'; 9 | declare module '*.jpeg'; 10 | declare module '*.gif'; 11 | declare module '*.bmp'; 12 | declare module '*.tiff'; 13 | declare module 'omit.js'; 14 | declare module 'numeral'; 15 | declare module '@antv/data-set'; 16 | declare module 'mockjs'; 17 | declare module 'react-fittext'; 18 | declare module 'bizcharts-plugin-slider'; 19 | 20 | // preview.pro.ant.design only do not use in your production ; 21 | // preview.pro.ant.design Dedicated environment variable, please do not use it in your project. 22 | declare let ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: 'site' | undefined; 23 | 24 | declare const REACT_APP_ENV: 'test' | 'dev' | 'pre' | false; 25 | -------------------------------------------------------------------------------- /resource/frontend/react-antd-umi/src/tests/setupTests.js: -------------------------------------------------------------------------------- 1 | // do some test init 2 | 3 | const localStorageMock = { 4 | getItem: jest.fn(), 5 | setItem: jest.fn(), 6 | removeItem: jest.fn(), 7 | clear: jest.fn(), 8 | }; 9 | 10 | global.localStorage = localStorageMock; 11 | -------------------------------------------------------------------------------- /resource/migration/mariadb/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/mariadb/src/.gitkeep -------------------------------------------------------------------------------- /resource/migration/mariadb/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/mariadb/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/migration/mysql/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/mysql/src/.gitkeep -------------------------------------------------------------------------------- /resource/migration/mysql/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/mysql/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/migration/postgresql/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/postgresql/src/.gitkeep -------------------------------------------------------------------------------- /resource/migration/postgresql/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/postgresql/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/migration/prometheus/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/prometheus/src/.gitkeep -------------------------------------------------------------------------------- /resource/migration/prometheus/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/prometheus/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/migration/redis/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/redis/src/.gitkeep -------------------------------------------------------------------------------- /resource/migration/redis/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/redis/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/migration/sqlite/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/sqlite/src/.gitkeep -------------------------------------------------------------------------------- /resource/migration/sqlite/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/sqlite/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/migration/tdengine/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/tdengine/src/.gitkeep -------------------------------------------------------------------------------- /resource/migration/tdengine/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/tdengine/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/migration/tidb/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/tidb/src/.gitkeep -------------------------------------------------------------------------------- /resource/migration/tidb/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/migration/tidb/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/auth/casdoor/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/auth/casdoor/README.md -------------------------------------------------------------------------------- /resource/operation/auth/casdoor/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/auth/casdoor/README_cn.md -------------------------------------------------------------------------------- /resource/operation/auth/casdoor/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/auth/casdoor/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/auth/casdoor/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/auth/casdoor/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/container/containerd/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/containerd/README.md -------------------------------------------------------------------------------- /resource/operation/container/containerd/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/containerd/README_cn.md -------------------------------------------------------------------------------- /resource/operation/container/containerd/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/containerd/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/container/containerd/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/containerd/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/container/cri-o/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/cri-o/README.md -------------------------------------------------------------------------------- /resource/operation/container/cri-o/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/cri-o/README_cn.md -------------------------------------------------------------------------------- /resource/operation/container/cri-o/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/cri-o/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/container/cri-o/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/cri-o/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/container/docker/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/docker/README.md -------------------------------------------------------------------------------- /resource/operation/container/docker/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/docker/README_cn.md -------------------------------------------------------------------------------- /resource/operation/container/docker/hanlder/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/docker/hanlder/.gitkeep -------------------------------------------------------------------------------- /resource/operation/container/docker/resource/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/docker/resource/.gitkeep -------------------------------------------------------------------------------- /resource/operation/container/docker/template/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/docker/template/.gitkeep -------------------------------------------------------------------------------- /resource/operation/container/katacontainer2/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/katacontainer2/README.md -------------------------------------------------------------------------------- /resource/operation/container/katacontainer2/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/katacontainer2/README_cn.md -------------------------------------------------------------------------------- /resource/operation/container/katacontainer2/hanlder/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/katacontainer2/hanlder/.gitkeep -------------------------------------------------------------------------------- /resource/operation/container/katacontainer2/resource/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/katacontainer2/resource/.gitkeep -------------------------------------------------------------------------------- /resource/operation/container/katacontainer2/template/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/container/katacontainer2/template/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/dgraph/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/dgraph/README.md -------------------------------------------------------------------------------- /resource/operation/database/dgraph/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/dgraph/README_cn.md -------------------------------------------------------------------------------- /resource/operation/database/dgraph/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/dgraph/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/dgraph/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/dgraph/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/etcd/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/etcd/README.md -------------------------------------------------------------------------------- /resource/operation/database/etcd/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/etcd/README_cn.md -------------------------------------------------------------------------------- /resource/operation/database/etcd/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/etcd/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/etcd/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/etcd/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/mariadb/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/mariadb/README.md -------------------------------------------------------------------------------- /resource/operation/database/mariadb/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/mariadb/README_cn.md -------------------------------------------------------------------------------- /resource/operation/database/mariadb/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/mariadb/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/mariadb/src/ddl.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/mariadb/src/ddl.sql -------------------------------------------------------------------------------- /resource/operation/database/mariadb/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/mariadb/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/memgraph/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/memgraph/README.md -------------------------------------------------------------------------------- /resource/operation/database/memgraph/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/memgraph/README_cn.md -------------------------------------------------------------------------------- /resource/operation/database/memgraph/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/memgraph/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/memgraph/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/memgraph/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/mysql/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/mysql/README.md -------------------------------------------------------------------------------- /resource/operation/database/mysql/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/mysql/README_cn.md -------------------------------------------------------------------------------- /resource/operation/database/mysql/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/mysql/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/mysql/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/mysql/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/postgresql/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/postgresql/README.md -------------------------------------------------------------------------------- /resource/operation/database/postgresql/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/postgresql/README_cn.md -------------------------------------------------------------------------------- /resource/operation/database/postgresql/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/postgresql/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/postgresql/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/postgresql/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/tidb/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/tidb/README.md -------------------------------------------------------------------------------- /resource/operation/database/tidb/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/tidb/README_cn.md -------------------------------------------------------------------------------- /resource/operation/database/tidb/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/tidb/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/database/tidb/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/database/tidb/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/dns/bind/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/dns/bind/README.md -------------------------------------------------------------------------------- /resource/operation/dns/bind/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/dns/bind/README_cn.md -------------------------------------------------------------------------------- /resource/operation/dns/bind/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/dns/bind/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/dns/bind/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/dns/bind/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/dns/coredns/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/dns/coredns/README.md -------------------------------------------------------------------------------- /resource/operation/dns/coredns/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/dns/coredns/README_cn.md -------------------------------------------------------------------------------- /resource/operation/dns/coredns/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/dns/coredns/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/dns/coredns/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/dns/coredns/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/http/apache/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/apache/README.md -------------------------------------------------------------------------------- /resource/operation/http/apache/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/apache/README_cn.md -------------------------------------------------------------------------------- /resource/operation/http/apache/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/apache/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/http/apache/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/apache/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/http/h2o/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/h2o/README.md -------------------------------------------------------------------------------- /resource/operation/http/h2o/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/h2o/README_cn.md -------------------------------------------------------------------------------- /resource/operation/http/h2o/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/h2o/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/http/h2o/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/h2o/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/http/http4k/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/http4k/README.md -------------------------------------------------------------------------------- /resource/operation/http/http4k/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/http4k/README_cn.md -------------------------------------------------------------------------------- /resource/operation/http/http4k/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/http4k/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/http/http4k/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/http4k/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/http/nginx/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/nginx/README.md -------------------------------------------------------------------------------- /resource/operation/http/nginx/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/nginx/README_cn.md -------------------------------------------------------------------------------- /resource/operation/http/nginx/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/nginx/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/http/nginx/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/nginx/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/http/traefik/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/traefik/README.md -------------------------------------------------------------------------------- /resource/operation/http/traefik/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/traefik/README_cn.md -------------------------------------------------------------------------------- /resource/operation/http/traefik/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/traefik/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/http/traefik/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/http/traefik/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mesh/k3s/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/k3s/README.md -------------------------------------------------------------------------------- /resource/operation/mesh/k3s/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/k3s/README_cn.md -------------------------------------------------------------------------------- /resource/operation/mesh/k3s/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/k3s/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mesh/k3s/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/k3s/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mesh/k8s/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/k8s/README.md -------------------------------------------------------------------------------- /resource/operation/mesh/k8s/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/k8s/README_cn.md -------------------------------------------------------------------------------- /resource/operation/mesh/k8s/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/k8s/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mesh/k8s/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/k8s/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mesh/kubecube/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/kubecube/README.md -------------------------------------------------------------------------------- /resource/operation/mesh/kubecube/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/kubecube/README_cn.md -------------------------------------------------------------------------------- /resource/operation/mesh/kubecube/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/kubecube/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mesh/kubecube/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/kubecube/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mesh/kubeedge/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/kubeedge/README.md -------------------------------------------------------------------------------- /resource/operation/mesh/kubeedge/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/kubeedge/README_cn.md -------------------------------------------------------------------------------- /resource/operation/mesh/kubeedge/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/kubeedge/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mesh/kubeedge/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mesh/kubeedge/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mq/emq/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/emq/README.md -------------------------------------------------------------------------------- /resource/operation/mq/emq/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/emq/README_cn.md -------------------------------------------------------------------------------- /resource/operation/mq/emq/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/emq/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mq/emq/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/emq/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mq/nats/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/nats/README.md -------------------------------------------------------------------------------- /resource/operation/mq/nats/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/nats/README_cn.md -------------------------------------------------------------------------------- /resource/operation/mq/nats/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/nats/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mq/nats/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/nats/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mq/rabbitmq/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/rabbitmq/README.md -------------------------------------------------------------------------------- /resource/operation/mq/rabbitmq/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/rabbitmq/README_cn.md -------------------------------------------------------------------------------- /resource/operation/mq/rabbitmq/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/rabbitmq/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mq/rabbitmq/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/rabbitmq/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mq/vernemq/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/vernemq/README.md -------------------------------------------------------------------------------- /resource/operation/mq/vernemq/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/vernemq/README_cn.md -------------------------------------------------------------------------------- /resource/operation/mq/vernemq/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/vernemq/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/mq/vernemq/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/mq/vernemq/tmpl/.gitkeep -------------------------------------------------------------------------------- /resource/operation/storage/minio/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/storage/minio/README.md -------------------------------------------------------------------------------- /resource/operation/storage/minio/README_cn.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/storage/minio/README_cn.md -------------------------------------------------------------------------------- /resource/operation/storage/minio/src/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/storage/minio/src/.gitkeep -------------------------------------------------------------------------------- /resource/operation/storage/minio/tmpl/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wa-craft/generator-php/9446dc08d8bda89628c3a55b554f515b048fc437/resource/operation/storage/minio/tmpl/.gitkeep -------------------------------------------------------------------------------- /src/generator/http/Request.php: -------------------------------------------------------------------------------- 1 | data_files as $f) { 16 | $data = FileHelper::readDataFromFile(ROOT_PATH . '/' . $f) ?: []; 17 | $project = Node::create('Project', ['data' => $data]); 18 | if (!empty($project)) { 19 | var_dump($data); 20 | //$project->process(); 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/generator/parser/Database.php: -------------------------------------------------------------------------------- 1 | get('project'))['data'] ?: []; 24 | if (!is_array($project_data_files)) { 25 | $project_data_files = [$project_data_files]; 26 | } 27 | $this->data_files = $project_data_files; 28 | } 29 | 30 | /** 31 | * 对数据文件进行分析,设置路由和模型数组 32 | * @return void 33 | */ 34 | abstract public function parse(): void; 35 | } 36 | -------------------------------------------------------------------------------- /src/generator/parser/ParserType.php: -------------------------------------------------------------------------------- 1 | namespace = $this->parent_namespace; 26 | echo "n: " . $this->namespace; 27 | $this->data['namespace'] = $this->namespace; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/generator/parser/legacy/Relation.php: -------------------------------------------------------------------------------- 1 | path); 23 | Driver::load('php\\Traits', [ 24 | 'path' => $this->path, 25 | 'file_name' => $this->name . '.php', 26 | 'template' => TemplateHelper::fetchTemplate('traits'), 27 | 'data' => $this->data 28 | ])->execute()->writeToFile(); 29 | } 30 | 31 | public function setNameSpace() 32 | { 33 | $this->namespace = $this->parent_namespace . '\\traits'; 34 | $this->data['namespace'] = $this->namespace; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/generator/parser/legacy/Validate.php: -------------------------------------------------------------------------------- 1 | path); 23 | Driver::load('php\\Validate', [ 24 | 'path' => $this->path, 25 | 'file_name' => $this->name . '.php', 26 | 'template' => TemplateHelper::fetchTemplate('validate'), 27 | 'data' => $this->data 28 | ])->execute()->writeToFile(); 29 | } 30 | 31 | public function setNameSpace() 32 | { 33 | $this->namespace = $this->parent_namespace . '\validate'; 34 | $this->data['namespace'] = $this->namespace; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/generator/resource/Backend.php: -------------------------------------------------------------------------------- 1 | res !== null and $this->res instanceof Resource) { 13 | $this->res->clone(); 14 | 15 | foreach ($this->res->getTemplates() as $k => $template) { 16 | echo $k . PHP_EOL; 17 | $template->writeToFile(); 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/generator/resource/Commandline.php: -------------------------------------------------------------------------------- 1 | stereoType = $params['stereoType'] ?: null; 20 | $this->schema = $params['schema'] ?: []; 21 | } 22 | 23 | public function execute() 24 | { 25 | //读取模板 26 | $context = Context::getInstance(); 27 | $tmpl_file = TEMPLATE_PATH . '/' . $this->stereoType->lang . '/' . $this->stereoType->name . '.mustache'; 28 | $content = file_get_contents($tmpl_file); 29 | $me = new \Mustache_Engine(); 30 | $new_content = $me->render($content, $this->schema); 31 | 32 | var_dump($new_content); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/generator/task/Task.php: -------------------------------------------------------------------------------- 1 | name, $params); 14 | return ($obj instanceof StereoType) ? $obj : null; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/generator/template/Template.php: -------------------------------------------------------------------------------- 1 | path = $path; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/generator/template/TemplateFactory.php: -------------------------------------------------------------------------------- 1 | name = $type; 18 | $obj->lang = $lang; 19 | if (!empty($params)) { 20 | } 21 | return ($obj instanceof StereoType) ? $obj : null; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/generator/template/TemplateType.php: -------------------------------------------------------------------------------- 1 | {{value}}, 14 | {{/configs}} 15 | ]; 16 | -------------------------------------------------------------------------------- /template/php/enum.mustache: -------------------------------------------------------------------------------- 1 | 'rbac', 7 | 'domain' => 'rbac.vm', 8 | 'applications' => [ 9 | [ 10 | 'name' => 'application', 11 | 'namespace' => 'app', 12 | 'portal' => 'index', 13 | 'comment' => '', 14 | 'modules' => [ 15 | 'rbac' 16 | ] 17 | ] 18 | ] 19 | ]; 20 | --------------------------------------------------------------------------------