diff --git a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/.gitignore b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/.gitignore index 96d33b94..b1eea681 100644 --- a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/.gitignore +++ b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/.gitignore @@ -1,10 +1,11 @@ .vscode node_modules dist +build *.db-journal package-lock.json -DatabaseUtils\bin -DatabaseUtils\obj +DatabaseUtils/bin +DatabaseUtils/obj build ./src/assets/dbUtil .vs \ No newline at end of file diff --git a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/CreateProjectParameters.ts b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/CreateProjectParameters.ts index 195420f6..dd59e515 100644 --- a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/CreateProjectParameters.ts +++ b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/CreateProjectParameters.ts @@ -1,5 +1,4 @@ -import { PluginCollection } from "./PluginCollection"; - +const fs = require("fs"); export class CreateProjectParameters { public TemplatesDirectory: string; @@ -44,7 +43,7 @@ export class CreateProjectParameters { msgPrefix: "DatabaseMustBeOneOf", args: this.AvailableDatabases[this.ORM].join(","), }; - } else if (this.Database === "InMemory" && !this.ConnectionString) { + } else if (this.Database !== "InMemory" && !this.ConnectionString) { return { isSuccess: false, msgPrefix: "ConnectionStringCantBeEmpty", @@ -56,8 +55,15 @@ export class CreateProjectParameters { }; } if (this.UseDefaultPlugins) { - const pluginCollection = PluginCollection.FromFile(this.UseDefaultPlugins); + if (!fs.existsSync(this.UseDefaultPlugins)) { + return { + isSuccess: false, + msgPrefix: "DefaultPluginsFileNotFound", + }; + } + const json = fs.readFileSync(this.UseDefaultPlugins, "utf8"); + const pluginCollection = JSON.parse(json); let isOrmExit = false; for (const orm of pluginCollection.SupportedORM) { diff --git a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/PluginCollection.ts b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/PluginCollection.ts index 07b1e617..ac41d9a5 100644 --- a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/PluginCollection.ts +++ b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/PluginCollection.ts @@ -1,15 +1,9 @@ -const fs = require("fs"); export class PluginCollection { public PrependPlugins: string[]; public AppendPlugins: string[]; public SupportedORM: string[]; - public static FromFile(path: string): PluginCollection { - const json = fs.readFileSync(path, "utf8"); - return JSON.parse(json); - } - public PluginCollection() { this.PrependPlugins = []; this.AppendPlugins = []; diff --git a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/app.component.html b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/app.component.html index d4b339c3..5ee2cea5 100644 --- a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/app.component.html +++ b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/app.component.html @@ -62,24 +62,24 @@
- - +
- - +
- - +
- - +
@@ -96,32 +96,32 @@
+ name="Database" value="MSSQL" Id="MSSQL" (ngModelChange)="changeDataBase('MSSQL')"/>
+ name="Database" value="MySQL" Id="MySQL" (ngModelChange)="changeDataBase('MySQL')"/>
+ name="Database" value="SQLite" Id="SQLite" (ngModelChange)="changeDataBase('SQLite')"/>
+ name="Database" value="PostgreSQL" Id="PostgreSQL" (ngModelChange)="changeDataBase('PostgreSQL')"/>
+ name="Database" value="InMemory" Id="InMemory" (ngModelChange)="changeDataBase('InMemory')"/>
+ name="Database" value="MongoDB" Id="MongoDB" (ngModelChange)="changeDataBase('MongoDB')" />
diff --git a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/app.component.ts b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/app.component.ts index 7e30f3f6..796191a7 100644 --- a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/app.component.ts +++ b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/app/app.component.ts @@ -23,6 +23,7 @@ export class AppComponent { public parameters: CreateProjectParameters; @Input() public enableDatabase: any; + public defaultConnetionstring: any; private language: string; private eventEmitter: MessageEmitter; private rootPath: string; @@ -31,20 +32,33 @@ export class AppComponent { constructor(public translateService: TranslateService) { this.language = app.getLocale(); this.rootPath = app.getAppPath(); - this.parameters = new CreateProjectParameters(); - this.parameters.ProjectType = "AspNetCore"; - this.parameters.ORM = "NHibernate"; - this.parameters.Database = "MSSQL"; - this.isDataBaseChecking = false; - this.eventEmitter = new MessageEmitter(); + this.enableDatabase = { MSSQL: true, MySQL: true, SQLite: true, PostgreSQL: true, - InMemory: true, - MongoDB: true, + InMemory: false, + MongoDB: false + }; + + this.defaultConnetionstring = { + MSSQL: "Server=127.0.0.1;Database=test_db;User Id=test_user;Password=123456;", + MySQL: "Server=127.0.0.1;Port=3306;Database=test_db;User Id=test_user;Password=123456;", + SQLite: "Data Source={{App_Data}}/test.db;", + PostgreSQL: "Server=127.0.0.1;Port=5432;Database=test_db;User Id=test_user;Password=123456;", + InMemory: "", + MongoDB: "mongodb://test_user:123456@127.0.0.1:27017/test_db", }; + + this.parameters = new CreateProjectParameters(); + this.parameters.ProjectName = "Hello.World"; + this.parameters.ProjectType = "AspNetCore"; + this.parameters.ORM = "NHibernate"; + this.parameters.Database = "MSSQL"; + this.parameters.ConnectionString = this.defaultConnetionstring[this.parameters.Database]; + this.isDataBaseChecking = false; + this.eventEmitter = new MessageEmitter(); } ngOnInit() { @@ -143,6 +157,14 @@ export class AppComponent { }); } + public changeDataBase(dataBase: string): void { + if (this.defaultConnetionstring[dataBase]) { + this.parameters.ConnectionString = this.defaultConnetionstring[dataBase]; + } else { + this.parameters.ConnectionString = ""; + } + } + public pluginSelect(): void { const selectFile = remote.dialog.showOpenDialog({ properties: ["openFile"] }); if (selectFile && selectFile.length > 0) { @@ -160,22 +182,22 @@ export class AppComponent { private createCommand(toolPath: string): string { let parametersStr = [ "--t=" + this.parameters.ProjectType, - "--n=" + this.parameters.ProjectName, + "--n=\"" + this.parameters.ProjectName + "\"", "--m=" + this.parameters.ORM, "--b=" + this.parameters.Database, - "--c=" + "\"this.parameters.ConnectionString" + "\"", - "--o=" + this.parameters.OutputDirectory, + "--c=\"" + this.parameters.ConnectionString + "\"", + "--o=\"" + this.parameters.OutputDirectory + "\"", ].join(" "); if (this.parameters.ProjectDescription) { - parametersStr += " " + "--d=" + this.parameters.ProjectDescription; + parametersStr += " " + "--d=\"" + this.parameters.ProjectDescription + "\""; } - if (this.parameters.ProjectDescription) { - parametersStr += " " + "--u=" + this.parameters.UseDefaultPlugins; + if (this.parameters.UseDefaultPlugins) { + parametersStr += " " + "--u=\"" + this.parameters.UseDefaultPlugins + "\""; } toolPath = path.join(toolPath, "ProjectCreator.Cmd.NetCore", "ZKWeb.Toolkits.ProjectCreator.Cmd.dll"); - return "dotnet " + toolPath + " " + parametersStr; + return "dotnet " + toolPath + " " + parametersStr; } private findTools(): string { @@ -186,5 +208,4 @@ export class AppComponent { } return ""; } - -} +} \ No newline at end of file diff --git a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/assets/i18n/en-US.json b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/assets/i18n/en-US.json index 9194a5da..44e8e80c 100644 --- a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/assets/i18n/en-US.json +++ b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/assets/i18n/en-US.json @@ -27,5 +27,6 @@ "ThisPluginCollectionOnlySupportTheseORM": "This plugin collection only support these ORM:", "dataBaseTestFail":"fail to connect dataBase", "ToolsFoderFail":"unable to find Tools foder", - "notValidConnectionString":"Invalid ConnectionString" + "notValidConnectionString":"Invalid ConnectionString", + "DefaultPluginsFileNotFound":"Plugin file not found" } \ No newline at end of file diff --git a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/assets/i18n/zh-CN.json b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/assets/i18n/zh-CN.json index 6e094737..797c9dcb 100644 --- a/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/assets/i18n/zh-CN.json +++ b/ZKWeb.Toolkits/ZKWeb.Toolkits.ProjectCreator.Crossplatform.Gui/src/assets/i18n/zh-CN.json @@ -27,5 +27,6 @@ "ThisPluginCollectionOnlySupportTheseORM": "这个插件集只支持这些ORM:" , "dataBaseTestFail":"数据库连接失败", "ToolsFoderFail":"无法探测到Tools文件夹", - "notValidConnectionString":"连接字符串错误" + "notValidConnectionString":"连接字符串错误", + "DefaultPluginsFileNotFound":"插件文件不存在" } \ No newline at end of file