diff --git a/lib/backend-generate-rest.go b/lib/backend-generate-rest.go index 2027094..a46e47f 100644 --- a/lib/backend-generate-rest.go +++ b/lib/backend-generate-rest.go @@ -11,15 +11,15 @@ import ( func generateBackendRest() { - type RestStruct struct { + /*type RestStruct struct { Path string Project *structs.Project Rest *structs.Rest - } + }*/ if len(Project.Backend.Rest) > 0 { for i := range Project.Backend.Rest { - restStruct := &RestStruct{ + restStruct := &structs.RestStruct{ Project: Project, Path: i, Rest: Project.Backend.Rest[i], diff --git a/lib/frontend-angular.go b/lib/frontend-angular.go index cbd0f08..921e162 100644 --- a/lib/frontend-angular.go +++ b/lib/frontend-angular.go @@ -1,6 +1,7 @@ package lib import ( + "fmt" "log" "os" "path/filepath" @@ -113,10 +114,6 @@ func generateFrontendAngularTmpl() { FileIn: "tmpl/frontend/angular/src/app/page/user/user.component.ts.tmpl", FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "page", "user", "user.component.ts"), }, - { - FileIn: "tmpl/frontend/angular/src/app/app-routing.module.ts.tmpl", - FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "app-routing.module.ts"), - }, { FileIn: "tmpl/frontend/angular/src/app/app.component.html.tmpl", FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "app.component.html"), @@ -213,4 +210,73 @@ func generateFrontendAngularTmpl() { } } + templs := []structs.TmplInOut{ + { + FileIn: "tmpl/frontend/angular/src/app/app-routing.module.ts.tmpl", + FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "app-routing.module.ts"), + }, + } + + for _, staticTmpls := range templs { + err := templ.PrepareTmplFile(staticTmpls.FileIn, Project, staticTmpls.FileOut) + if err != nil { + log.Fatal(err) + } + } + + /*templs = []structs.TmplInOut{ + { + FileIn: "tmpl/frontend/angular/src/app/page/page.component.ts.tmpl", + FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "app-routing.module.ts"), + }, + }*/ + + for i, rest := range Project.Backend.Rest { + restStruct := structs.RestStruct{ + Path: i, + Project: Project, + Rest: rest, + } + templs := []structs.TmplInOut{ + { + FileIn: "tmpl/frontend/angular/src/app/page/page/page.component.ts.tmpl", + FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "page", templ.RemoveFirstChar(i), fmt.Sprintf("%s.component.ts", templ.AngularFilename(i))), + }, + { + FileIn: "tmpl/frontend/angular/src/app/page/page/page.component.scss.tmpl", + FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "page", templ.RemoveFirstChar(i), fmt.Sprintf("%s.component.scss", templ.AngularFilename(i))), + }, + { + FileIn: "tmpl/frontend/angular/src/app/page/page/page.component.html.tmpl", + FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "page", templ.RemoveFirstChar(i), fmt.Sprintf("%s.component.html", templ.AngularFilename(i))), + }, + } + for _, item := range templs { + if err := templ.PrepareTmplIsNotExists(item.FileIn, restStruct, item.FileOut); err != nil { + log.Fatal(err) + } + } + if rest.Editable { + templs := []structs.TmplInOut{ + { + FileIn: "tmpl/frontend/angular/src/app/page/page/form/form.component.ts.tmpl", + FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "page", templ.RemoveFirstChar(i), "form", fmt.Sprintf("%s-form.component.ts", templ.AngularFilename(i))), + }, + { + FileIn: "tmpl/frontend/angular/src/app/page/page/form/form.component.scss.tmpl", + FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "page", templ.RemoveFirstChar(i), "form", fmt.Sprintf("%s-form.component.scss", templ.AngularFilename(i))), + }, + { + FileIn: "tmpl/frontend/angular/src/app/page/page/form/form.component.html.tmpl", + FileOut: filepath.Join(AppConfig.OutdirFrontend, "src", "app", "page", templ.RemoveFirstChar(i), "form", fmt.Sprintf("%s-form.component.html", templ.AngularFilename(i))), + }, + } + for _, item := range templs { + if err := templ.PrepareTmplIsNotExists(item.FileIn, restStruct, item.FileOut); err != nil { + log.Fatal(err) + } + } + } + } + } diff --git a/lib/templ/template.go b/lib/templ/template.go index e11563d..585f2af 100644 --- a/lib/templ/template.go +++ b/lib/templ/template.go @@ -43,6 +43,11 @@ var funcMap = template.FuncMap{ "isMethod": IsMethod, "roles": Roles, + + "removeFirstChar": RemoveFirstChar, + + "angularRestName": AngularRestName, + "angularFilename": AngularFilename, } func IsMethod(arr map[string][]string, method string) bool { @@ -340,3 +345,44 @@ func MkdirIsNotExists(pathdir string) (err error) { err = nil return } + +func AngularRestName(tmp string) string { + value := tmp + value = strings.Trim(value, " ") + if value == "" { + return "Unknow" + } + + value = strings.ReplaceAll(value, "/", "_") + + value = FieldNamePrepare(value) + + /*var regexpForReplace = regexp.MustCompile(`_([a-z])`) + value = strings.ToUpper(regexpForReplace.ReplaceAllString(value, `$1`)) + asRunes := []rune(value) + + asRunes[0] = []rune(strings.ToUpper(string([]rune(value)[0])))[0] + value = string(asRunes)*/ + return value +} + +func AngularFilename(value string) string { + value = strings.Trim(value, " ") + if value == "" { + return "unknow" + } + value = strings.ReplaceAll(value, "/", "-") + if []rune(value)[0] == '-' { + value = string([]rune(value)[1:]) + } + return value +} + +func RemoveFirstChar(value string) string { + value = strings.Trim(value, " ") + if value == "" { + return "" + } + value = string([]rune(value)[1:]) + return value +} diff --git a/lib/templ/tmpl/frontend/angular/src/app/app-routing.module.ts.tmpl b/lib/templ/tmpl/frontend/angular/src/app/app-routing.module.ts.tmpl index 19bab01..725fb07 100644 --- a/lib/templ/tmpl/frontend/angular/src/app/app-routing.module.ts.tmpl +++ b/lib/templ/tmpl/frontend/angular/src/app/app-routing.module.ts.tmpl @@ -6,6 +6,13 @@ import { LoginComponent } from './page/login/login.component'; import { UsersComponent } from './page/user/user.component'; import { UserFormComponent } from './page/user/user-form/user-form.component'; +{{ range $index, $rest := .Backend.Rest }} +import { {{ angularRestName $index }}Component } from './page/{{ removeFirstChar $index }}/{{ angularFilename $index }}.component'; +{{ if $rest.Editable }} +import { {{ angularRestName $index }}FormComponent } from './page/{{ removeFirstChar $index }}/form/{{ angularFilename $index }}-form.component'; +{{ end }} +{{ end }} + const routes: Routes = [ { @@ -20,6 +27,14 @@ const routes: Routes = [ { path: 'users/new', component: UserFormComponent }, { path: 'users/:id', component: UserFormComponent }, + {{ range $index, $rest := .Backend.Rest }} + { path: '{{ removeFirstChar $index }}', component: {{ angularRestName $index }}Component }, + {{ if $rest.Editable }} + { path: '{{ removeFirstChar $index }}/new', component: {{ angularRestName $index }}FormComponent }, + { path: '{{ removeFirstChar $index }}/:id', component: {{ angularRestName $index }}FormComponent }, + {{ end }} + {{ end }} + ] } ]; diff --git a/lib/templ/tmpl/frontend/angular/src/app/page/page/form/form.component.html.tmpl b/lib/templ/tmpl/frontend/angular/src/app/page/page/form/form.component.html.tmpl new file mode 100644 index 0000000..6bd132f --- /dev/null +++ b/lib/templ/tmpl/frontend/angular/src/app/page/page/form/form.component.html.tmpl @@ -0,0 +1,13 @@ +