wad-lab 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/bin/index.js +104 -25
  2. package/package.json +1 -1
  3. package/templates/fullstack-springboot-vue/backend/pom.xml +42 -0
  4. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/CompanyApplication.java +11 -0
  5. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/controller/CompanyController.java +74 -0
  6. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/model/Department.java +51 -0
  7. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/model/Employee.java +73 -0
  8. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/repository/DepartmentRepository.java +12 -0
  9. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/repository/EmployeeRepository.java +12 -0
  10. package/templates/fullstack-springboot-vue/backend/src/main/java/com/example/company/service/CompanyService.java +60 -0
  11. package/templates/fullstack-springboot-vue/backend/src/main/resources/application.properties +4 -0
  12. package/templates/fullstack-springboot-vue/frontend/vue-axios-basic/index.html +12 -0
  13. package/templates/{frontend → fullstack-springboot-vue/frontend/vue-axios-basic}/package.json +6 -9
  14. package/templates/fullstack-springboot-vue/frontend/vue-axios-basic/src/App.vue +405 -0
  15. package/templates/{frontend → fullstack-springboot-vue/frontend/vue-axios-basic}/src/main.js +0 -2
  16. package/templates/fullstack-springboot-vue/frontend/vue-axios-basic/src/services/api.js +7 -0
  17. package/templates/fullstack-springboot-vue/frontend/vue-axios-basic/vite.config.js +9 -0
  18. package/templates/{frontend → fullstack-springboot-vue/frontend/vue-axios-interceptor}/index.html +2 -3
  19. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/package.json +20 -0
  20. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/src/App.vue +159 -0
  21. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/src/components/ToastNotification.vue +47 -0
  22. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/src/main.js +7 -0
  23. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/src/services/api.js +32 -0
  24. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/src/stores/toastStore.js +23 -0
  25. package/templates/fullstack-springboot-vue/frontend/vue-axios-interceptor/vite.config.js +6 -0
  26. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/index.html +12 -0
  27. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/package.json +20 -0
  28. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/src/App.vue +427 -0
  29. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/src/main.js +5 -0
  30. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/src/services/api.js +7 -0
  31. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/src/stores/companyStore.js +96 -0
  32. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia/vite.config.js +9 -0
  33. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/index.html +12 -0
  34. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/package.json +20 -0
  35. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/App.vue +69 -0
  36. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/components/DepartmentSection.vue +152 -0
  37. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/components/EmployeeSection.vue +181 -0
  38. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/main.js +5 -0
  39. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/services/api.js +7 -0
  40. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/src/stores/companyStore.js +35 -0
  41. package/templates/fullstack-springboot-vue/frontend/vue-axios-pinia-props/vite.config.js +6 -0
  42. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/index.html +12 -0
  43. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/package.json +19 -0
  44. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/App.vue +167 -0
  45. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/components/DepartmentForm.vue +98 -0
  46. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/components/DepartmentList.vue +91 -0
  47. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/components/EmployeeForm.vue +128 -0
  48. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/components/EmployeeList.vue +94 -0
  49. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/main.js +4 -0
  50. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/src/services/api.js +7 -0
  51. package/templates/fullstack-springboot-vue/frontend/vue-axios-props-emits/vite.config.js +9 -0
  52. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/index.html +12 -0
  53. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/package.json +20 -0
  54. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/App.vue +90 -0
  55. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/main.js +5 -0
  56. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/router/index.js +19 -0
  57. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/services/api.js +7 -0
  58. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/views/AddEmployeeView.vue +247 -0
  59. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/views/DepartmentView.vue +273 -0
  60. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/views/EmployeeView.vue +196 -0
  61. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/src/views/HomeDashboardView.vue +263 -0
  62. package/templates/fullstack-springboot-vue/frontend/vue-axios-router/vite.config.js +6 -0
  63. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/index.html +12 -0
  64. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/package.json +20 -0
  65. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/App.vue +20 -0
  66. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/main.js +5 -0
  67. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/router/index.js +42 -0
  68. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/services/api.js +7 -0
  69. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/views/CompanyLayout.vue +75 -0
  70. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/views/CompanyOverview.vue +109 -0
  71. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/views/DepartmentListView.vue +231 -0
  72. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/views/EmployeeDetailView.vue +159 -0
  73. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/src/views/EmployeeListView.vue +295 -0
  74. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-children/vite.config.js +6 -0
  75. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/index.html +12 -0
  76. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/package.json +21 -0
  77. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/App.vue +92 -0
  78. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/main.js +9 -0
  79. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/router/index.js +17 -0
  80. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/services/api.js +7 -0
  81. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/stores/companyStore.js +70 -0
  82. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/views/DashboardView.vue +77 -0
  83. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/views/DepartmentView.vue +209 -0
  84. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/src/views/EmployeeView.vue +237 -0
  85. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia/vite.config.js +6 -0
  86. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/index.html +12 -0
  87. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/package.json +21 -0
  88. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/App.vue +67 -0
  89. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/components/EntityForm.vue +101 -0
  90. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/components/EntityTable.vue +92 -0
  91. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/components/SummaryBadge.vue +43 -0
  92. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/main.js +9 -0
  93. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/router/index.js +29 -0
  94. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/services/api.js +29 -0
  95. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/stores/companyStore.js +84 -0
  96. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/views/ManageDepartmentsView.vue +64 -0
  97. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/views/ManageEmployeesView.vue +67 -0
  98. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/src/views/OverviewView.vue +38 -0
  99. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-pinia-props/vite.config.js +6 -0
  100. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/index.html +12 -0
  101. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/package.json +20 -0
  102. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/App.vue +59 -0
  103. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/components/DataCard.vue +53 -0
  104. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/components/EntryForm.vue +117 -0
  105. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/main.js +7 -0
  106. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/router/index.js +23 -0
  107. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/services/api.js +7 -0
  108. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/views/DepartmentPage.vue +77 -0
  109. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/src/views/EmployeePage.vue +116 -0
  110. package/templates/fullstack-springboot-vue/frontend/vue-axios-router-props/vite.config.js +6 -0
  111. package/templates/springboot-2model-1controller-api/.mvn/wrapper/maven-wrapper.properties +3 -0
  112. package/templates/springboot-2model-1controller-api/mvnw +295 -0
  113. package/templates/springboot-2model-1controller-api/mvnw.cmd +189 -0
  114. package/templates/springboot-2model-1controller-api/pom.xml +42 -0
  115. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/CompanyApplication.java +11 -0
  116. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/controller/CompanyController.java +74 -0
  117. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/model/Department.java +51 -0
  118. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/model/Employee.java +73 -0
  119. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/repository/DepartmentRepository.java +12 -0
  120. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/repository/EmployeeRepository.java +12 -0
  121. package/templates/springboot-2model-1controller-api/src/main/java/com/example/company/service/CompanyService.java +60 -0
  122. package/templates/springboot-2model-1controller-api/src/main/resources/application.properties +4 -0
  123. package/templates/vue-axios-basic/index.html +12 -0
  124. package/templates/vue-axios-basic/package.json +19 -0
  125. package/templates/vue-axios-basic/src/App.vue +405 -0
  126. package/templates/vue-axios-basic/src/main.js +4 -0
  127. package/templates/vue-axios-basic/src/services/api.js +7 -0
  128. package/templates/vue-axios-basic/vite.config.js +9 -0
  129. package/templates/vue-axios-interceptor/index.html +12 -0
  130. package/templates/vue-axios-interceptor/package.json +20 -0
  131. package/templates/vue-axios-interceptor/src/App.vue +159 -0
  132. package/templates/vue-axios-interceptor/src/components/ToastNotification.vue +47 -0
  133. package/templates/vue-axios-interceptor/src/main.js +7 -0
  134. package/templates/vue-axios-interceptor/src/services/api.js +32 -0
  135. package/templates/vue-axios-interceptor/src/stores/toastStore.js +23 -0
  136. package/templates/vue-axios-interceptor/vite.config.js +6 -0
  137. package/templates/vue-axios-pinia/index.html +12 -0
  138. package/templates/vue-axios-pinia/package.json +20 -0
  139. package/templates/vue-axios-pinia/src/App.vue +427 -0
  140. package/templates/vue-axios-pinia/src/main.js +5 -0
  141. package/templates/vue-axios-pinia/src/services/api.js +7 -0
  142. package/templates/vue-axios-pinia/src/stores/companyStore.js +96 -0
  143. package/templates/vue-axios-pinia/vite.config.js +9 -0
  144. package/templates/vue-axios-pinia-props/index.html +12 -0
  145. package/templates/vue-axios-pinia-props/package.json +20 -0
  146. package/templates/vue-axios-pinia-props/src/App.vue +69 -0
  147. package/templates/vue-axios-pinia-props/src/components/DepartmentSection.vue +152 -0
  148. package/templates/vue-axios-pinia-props/src/components/EmployeeSection.vue +181 -0
  149. package/templates/vue-axios-pinia-props/src/main.js +5 -0
  150. package/templates/vue-axios-pinia-props/src/services/api.js +7 -0
  151. package/templates/vue-axios-pinia-props/src/stores/companyStore.js +35 -0
  152. package/templates/vue-axios-pinia-props/vite.config.js +6 -0
  153. package/templates/vue-axios-props-emits/index.html +12 -0
  154. package/templates/vue-axios-props-emits/package.json +19 -0
  155. package/templates/vue-axios-props-emits/src/App.vue +167 -0
  156. package/templates/vue-axios-props-emits/src/components/DepartmentForm.vue +98 -0
  157. package/templates/vue-axios-props-emits/src/components/DepartmentList.vue +91 -0
  158. package/templates/vue-axios-props-emits/src/components/EmployeeForm.vue +128 -0
  159. package/templates/vue-axios-props-emits/src/components/EmployeeList.vue +94 -0
  160. package/templates/vue-axios-props-emits/src/main.js +4 -0
  161. package/templates/vue-axios-props-emits/src/services/api.js +7 -0
  162. package/templates/vue-axios-props-emits/vite.config.js +9 -0
  163. package/templates/vue-axios-router/index.html +12 -0
  164. package/templates/vue-axios-router/package.json +20 -0
  165. package/templates/vue-axios-router/src/App.vue +90 -0
  166. package/templates/vue-axios-router/src/main.js +5 -0
  167. package/templates/vue-axios-router/src/router/index.js +19 -0
  168. package/templates/vue-axios-router/src/services/api.js +7 -0
  169. package/templates/vue-axios-router/src/views/AddEmployeeView.vue +247 -0
  170. package/templates/vue-axios-router/src/views/DepartmentView.vue +273 -0
  171. package/templates/vue-axios-router/src/views/EmployeeView.vue +196 -0
  172. package/templates/vue-axios-router/src/views/HomeDashboardView.vue +263 -0
  173. package/templates/vue-axios-router/vite.config.js +6 -0
  174. package/templates/vue-axios-router-children/index.html +12 -0
  175. package/templates/vue-axios-router-children/package.json +20 -0
  176. package/templates/vue-axios-router-children/src/App.vue +20 -0
  177. package/templates/vue-axios-router-children/src/main.js +5 -0
  178. package/templates/vue-axios-router-children/src/router/index.js +42 -0
  179. package/templates/vue-axios-router-children/src/services/api.js +7 -0
  180. package/templates/vue-axios-router-children/src/views/CompanyLayout.vue +75 -0
  181. package/templates/vue-axios-router-children/src/views/CompanyOverview.vue +109 -0
  182. package/templates/vue-axios-router-children/src/views/DepartmentListView.vue +231 -0
  183. package/templates/vue-axios-router-children/src/views/EmployeeDetailView.vue +159 -0
  184. package/templates/vue-axios-router-children/src/views/EmployeeListView.vue +295 -0
  185. package/templates/vue-axios-router-children/vite.config.js +6 -0
  186. package/templates/vue-axios-router-pinia/index.html +12 -0
  187. package/templates/vue-axios-router-pinia/package.json +21 -0
  188. package/templates/vue-axios-router-pinia/src/App.vue +92 -0
  189. package/templates/vue-axios-router-pinia/src/main.js +9 -0
  190. package/templates/vue-axios-router-pinia/src/router/index.js +17 -0
  191. package/templates/vue-axios-router-pinia/src/services/api.js +7 -0
  192. package/templates/vue-axios-router-pinia/src/stores/companyStore.js +70 -0
  193. package/templates/vue-axios-router-pinia/src/views/DashboardView.vue +77 -0
  194. package/templates/vue-axios-router-pinia/src/views/DepartmentView.vue +209 -0
  195. package/templates/vue-axios-router-pinia/src/views/EmployeeView.vue +237 -0
  196. package/templates/vue-axios-router-pinia/vite.config.js +6 -0
  197. package/templates/vue-axios-router-pinia-props/index.html +12 -0
  198. package/templates/vue-axios-router-pinia-props/package.json +21 -0
  199. package/templates/vue-axios-router-pinia-props/src/App.vue +67 -0
  200. package/templates/vue-axios-router-pinia-props/src/components/EntityForm.vue +101 -0
  201. package/templates/vue-axios-router-pinia-props/src/components/EntityTable.vue +92 -0
  202. package/templates/vue-axios-router-pinia-props/src/components/SummaryBadge.vue +43 -0
  203. package/templates/vue-axios-router-pinia-props/src/main.js +9 -0
  204. package/templates/vue-axios-router-pinia-props/src/router/index.js +29 -0
  205. package/templates/vue-axios-router-pinia-props/src/services/api.js +29 -0
  206. package/templates/vue-axios-router-pinia-props/src/stores/companyStore.js +84 -0
  207. package/templates/vue-axios-router-pinia-props/src/views/ManageDepartmentsView.vue +64 -0
  208. package/templates/vue-axios-router-pinia-props/src/views/ManageEmployeesView.vue +67 -0
  209. package/templates/vue-axios-router-pinia-props/src/views/OverviewView.vue +38 -0
  210. package/templates/vue-axios-router-pinia-props/vite.config.js +6 -0
  211. package/templates/vue-axios-router-props/index.html +12 -0
  212. package/templates/vue-axios-router-props/package.json +20 -0
  213. package/templates/vue-axios-router-props/src/App.vue +59 -0
  214. package/templates/vue-axios-router-props/src/components/DataCard.vue +53 -0
  215. package/templates/vue-axios-router-props/src/components/EntryForm.vue +117 -0
  216. package/templates/vue-axios-router-props/src/main.js +7 -0
  217. package/templates/vue-axios-router-props/src/router/index.js +23 -0
  218. package/templates/vue-axios-router-props/src/services/api.js +7 -0
  219. package/templates/vue-axios-router-props/src/views/DepartmentPage.vue +77 -0
  220. package/templates/vue-axios-router-props/src/views/EmployeePage.vue +116 -0
  221. package/templates/vue-axios-router-props/vite.config.js +6 -0
  222. package/templates/backend/.gitattributes +0 -2
  223. package/templates/backend/.idea/compiler.xml +0 -21
  224. package/templates/backend/.idea/encodings.xml +0 -6
  225. package/templates/backend/.idea/jarRepositories.xml +0 -20
  226. package/templates/backend/.idea/misc.xml +0 -12
  227. package/templates/backend/.idea/vcs.xml +0 -6
  228. package/templates/backend/pom.xml +0 -104
  229. package/templates/backend/src/main/java/com/example/crud/CrudApplication.java +0 -13
  230. package/templates/backend/src/main/java/com/example/crud/controller/ItemController.java +0 -42
  231. package/templates/backend/src/main/java/com/example/crud/model/Item.java +0 -20
  232. package/templates/backend/src/main/java/com/example/crud/repository/ItemRepository.java +0 -9
  233. package/templates/backend/src/main/java/com/example/crud/service/ItemService.java +0 -37
  234. package/templates/backend/src/main/resources/application.properties +0 -4
  235. package/templates/backend/src/test/java/com/example/crud/CrudApplicationTests.java +0 -13
  236. package/templates/frontend/.vscode/extensions.json +0 -3
  237. package/templates/frontend/README.md +0 -38
  238. package/templates/frontend/jsconfig.json +0 -8
  239. package/templates/frontend/public/favicon.ico +0 -0
  240. package/templates/frontend/src/App.vue +0 -50
  241. package/templates/frontend/src/assets/base.css +0 -86
  242. package/templates/frontend/src/assets/logo.svg +0 -1
  243. package/templates/frontend/src/assets/main.css +0 -35
  244. package/templates/frontend/src/components/HelloWorld.vue +0 -44
  245. package/templates/frontend/src/components/TheWelcome.vue +0 -95
  246. package/templates/frontend/src/components/WelcomeItem.vue +0 -87
  247. package/templates/frontend/src/components/icons/IconCommunity.vue +0 -7
  248. package/templates/frontend/src/components/icons/IconDocumentation.vue +0 -7
  249. package/templates/frontend/src/components/icons/IconEcosystem.vue +0 -7
  250. package/templates/frontend/src/components/icons/IconSupport.vue +0 -7
  251. package/templates/frontend/src/components/icons/IconTooling.vue +0 -19
  252. package/templates/frontend/src/services/ItemService.js +0 -21
  253. package/templates/frontend/vite.config.js +0 -18
  254. /package/templates/{backend → fullstack-springboot-vue/backend}/.mvn/wrapper/maven-wrapper.properties +0 -0
  255. /package/templates/{backend → fullstack-springboot-vue/backend}/mvnw +0 -0
  256. /package/templates/{backend → fullstack-springboot-vue/backend}/mvnw.cmd +0 -0
@@ -0,0 +1,237 @@
1
+ <template>
2
+ <div class="employee-view">
3
+ <h2>Employees Management</h2>
4
+
5
+ <section class="card">
6
+ <h3>Add Employee</h3>
7
+ <form @submit.prevent="handleSubmit" class="form">
8
+ <div class="form-group">
9
+ <label for="emp-name">Full Name</label>
10
+ <input
11
+ id="emp-name"
12
+ v-model="form.name"
13
+ type="text"
14
+ required
15
+ placeholder="e.g. Jane Doe"
16
+ />
17
+ </div>
18
+ <div class="form-group">
19
+ <label for="emp-email">Email Address</label>
20
+ <input
21
+ id="emp-email"
22
+ v-model="form.email"
23
+ type="email"
24
+ required
25
+ placeholder="e.g. jane@example.com"
26
+ />
27
+ </div>
28
+ <div class="form-group">
29
+ <label for="emp-dept">Department</label>
30
+ <select id="emp-dept" v-model="form.departmentId" required>
31
+ <option value="" disabled>Select Department</option>
32
+ <option v-for="dept in companyStore.departments" :key="dept.id" :value="dept.id">
33
+ {{ dept.name }} ({{ dept.code }})
34
+ </option>
35
+ </select>
36
+ </div>
37
+ <div class="form-group">
38
+ <label for="emp-salary">Salary</label>
39
+ <input
40
+ id="emp-salary"
41
+ v-model.number="form.salary"
42
+ type="number"
43
+ min="0"
44
+ step="any"
45
+ required
46
+ placeholder="e.g. 75000"
47
+ />
48
+ </div>
49
+ <button type="submit" class="btn btn-primary">Add Employee</button>
50
+ </form>
51
+ </section>
52
+
53
+ <section class="card table-card">
54
+ <h3>Employee List</h3>
55
+ <div class="table-wrapper">
56
+ <table>
57
+ <thead>
58
+ <tr>
59
+ <th>ID</th>
60
+ <th>Name</th>
61
+ <th>Email</th>
62
+ <th>Department</th>
63
+ <th>Salary</th>
64
+ <th>Action</th>
65
+ </tr>
66
+ </thead>
67
+ <tbody>
68
+ <tr v-if="companyStore.employees.length === 0">
69
+ <td colspan="6" class="empty">No employees found</td>
70
+ </tr>
71
+ <tr v-for="emp in companyStore.employees" :key="emp.id">
72
+ <td>{{ emp.id }}</td>
73
+ <td>{{ emp.name }}</td>
74
+ <td>{{ emp.email }}</td>
75
+ <td>{{ companyStore.getDepartmentName(emp.departmentId) }}</td>
76
+ <td>${{ Number(emp.salary).toLocaleString() }}</td>
77
+ <td>
78
+ <button @click="handleDelete(emp.id)" class="btn btn-danger">Delete</button>
79
+ </td>
80
+ </tr>
81
+ </tbody>
82
+ </table>
83
+ </div>
84
+ </section>
85
+ </div>
86
+ </template>
87
+
88
+ <script setup>
89
+ import { reactive, onMounted } from 'vue'
90
+ import { useCompanyStore } from '../stores/companyStore'
91
+
92
+ const companyStore = useCompanyStore()
93
+
94
+ const form = reactive({
95
+ name: '',
96
+ email: '',
97
+ departmentId: '',
98
+ salary: ''
99
+ })
100
+
101
+ const handleSubmit = async () => {
102
+ await companyStore.addEmployee({
103
+ name: form.name,
104
+ email: form.email,
105
+ departmentId: Number(form.departmentId),
106
+ salary: Number(form.salary)
107
+ })
108
+ form.name = ''
109
+ form.email = ''
110
+ form.departmentId = ''
111
+ form.salary = ''
112
+ }
113
+
114
+ const handleDelete = async (id) => {
115
+ await companyStore.deleteEmployee(id)
116
+ }
117
+
118
+ onMounted(() => {
119
+ companyStore.fetchEmployees()
120
+ companyStore.fetchDepartments()
121
+ })
122
+ </script>
123
+
124
+ <style scoped>
125
+ .employee-view h2 {
126
+ font-size: 22px;
127
+ margin-bottom: 20px;
128
+ color: #1a1a1a;
129
+ }
130
+
131
+ .card {
132
+ background: #ffffff;
133
+ border: 1px solid #e1e4e8;
134
+ border-radius: 8px;
135
+ padding: 20px;
136
+ margin-bottom: 24px;
137
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
138
+ }
139
+
140
+ .card h3 {
141
+ font-size: 16px;
142
+ margin-bottom: 16px;
143
+ color: #333333;
144
+ }
145
+
146
+ .form {
147
+ display: flex;
148
+ flex-direction: column;
149
+ gap: 12px;
150
+ max-width: 400px;
151
+ }
152
+
153
+ .form-group {
154
+ display: flex;
155
+ flex-direction: column;
156
+ gap: 4px;
157
+ }
158
+
159
+ .form-group label {
160
+ font-size: 13px;
161
+ font-weight: 600;
162
+ color: #444444;
163
+ }
164
+
165
+ .form-group input,
166
+ .form-group select {
167
+ padding: 8px 10px;
168
+ border: 1px solid #cccccc;
169
+ border-radius: 4px;
170
+ font-size: 14px;
171
+ background-color: #ffffff;
172
+ }
173
+
174
+ .form-group input:focus,
175
+ .form-group select:focus {
176
+ outline: none;
177
+ border-color: #0066cc;
178
+ }
179
+
180
+ .btn {
181
+ padding: 8px 14px;
182
+ border: none;
183
+ border-radius: 4px;
184
+ cursor: pointer;
185
+ font-size: 13px;
186
+ font-weight: 600;
187
+ }
188
+
189
+ .btn-primary {
190
+ background-color: #0066cc;
191
+ color: #ffffff;
192
+ align-self: flex-start;
193
+ }
194
+
195
+ .btn-primary:hover {
196
+ background-color: #0052a3;
197
+ }
198
+
199
+ .btn-danger {
200
+ background-color: #d9383a;
201
+ color: #ffffff;
202
+ padding: 4px 8px;
203
+ font-size: 12px;
204
+ }
205
+
206
+ .btn-danger:hover {
207
+ background-color: #b8282a;
208
+ }
209
+
210
+ .table-wrapper {
211
+ overflow-x: auto;
212
+ }
213
+
214
+ table {
215
+ width: 100%;
216
+ border-collapse: collapse;
217
+ font-size: 13px;
218
+ }
219
+
220
+ th, td {
221
+ text-align: left;
222
+ padding: 8px 10px;
223
+ border-bottom: 1px solid #eeeeee;
224
+ }
225
+
226
+ th {
227
+ background-color: #fafbfc;
228
+ color: #555555;
229
+ font-weight: 600;
230
+ }
231
+
232
+ .empty {
233
+ text-align: center;
234
+ color: #888888;
235
+ padding: 16px;
236
+ }
237
+ </style>
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from 'vite'
2
+ import vue from '@vitejs/plugin-vue'
3
+
4
+ export default defineConfig({
5
+ plugins: [vue()]
6
+ })
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Company Management Portal</title>
7
+ </head>
8
+ <body>
9
+ <div id="app"></div>
10
+ <script type="module" src="/src/main.js"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "vue-axios-router-pinia-props",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "preview": "vite preview"
10
+ },
11
+ "dependencies": {
12
+ "axios": "^1.7.7",
13
+ "pinia": "^4.1.0",
14
+ "vue": "^3.5.44",
15
+ "vue-router": "^5.4.0"
16
+ },
17
+ "devDependencies": {
18
+ "@vitejs/plugin-vue": "^6.0.10",
19
+ "vite": "^8.3.4"
20
+ }
21
+ }
@@ -0,0 +1,67 @@
1
+ <script setup>
2
+ </script>
3
+
4
+ <template>
5
+ <div class="app-container">
6
+ <header class="header">
7
+ <h1 class="logo">CompanyHub</h1>
8
+ <nav class="nav-links">
9
+ <router-link to="/">Overview</router-link>
10
+ <router-link to="/manage-departments">Manage Departments</router-link>
11
+ <router-link to="/manage-employees">Manage Employees</router-link>
12
+ </nav>
13
+ </header>
14
+ <main class="main-content">
15
+ <router-view />
16
+ </main>
17
+ </div>
18
+ </template>
19
+
20
+ <style>
21
+ * {
22
+ box-sizing: border-box;
23
+ margin: 0;
24
+ padding: 0;
25
+ }
26
+ body {
27
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
28
+ color: #24292f;
29
+ background-color: #ffffff;
30
+ }
31
+ .app-container {
32
+ max-width: 900px;
33
+ margin: 0 auto;
34
+ padding: 24px 16px;
35
+ }
36
+ .header {
37
+ display: flex;
38
+ justify-content: space-between;
39
+ align-items: center;
40
+ border-bottom: 2px solid #eaeef2;
41
+ padding-bottom: 16px;
42
+ margin-bottom: 24px;
43
+ }
44
+ .logo {
45
+ font-size: 1.5rem;
46
+ color: #0969da;
47
+ }
48
+ .nav-links {
49
+ display: flex;
50
+ gap: 16px;
51
+ }
52
+ .nav-links a {
53
+ text-decoration: none;
54
+ color: #57606a;
55
+ font-weight: 500;
56
+ padding: 6px 12px;
57
+ border-radius: 6px;
58
+ }
59
+ .nav-links a.router-link-active {
60
+ color: #0969da;
61
+ background-color: #f0f4f8;
62
+ font-weight: 600;
63
+ }
64
+ .main-content {
65
+ padding: 8px 0;
66
+ }
67
+ </style>
@@ -0,0 +1,101 @@
1
+ <script setup>
2
+ import { reactive, watch } from 'vue'
3
+
4
+ const props = defineProps({
5
+ fields: {
6
+ type: Array,
7
+ required: true
8
+ },
9
+ title: {
10
+ type: String,
11
+ default: ''
12
+ }
13
+ })
14
+
15
+ const emit = defineEmits(['submit-form'])
16
+
17
+ const formData = reactive({})
18
+
19
+ const initForm = () => {
20
+ for (const key of Object.keys(formData)) {
21
+ delete formData[key]
22
+ }
23
+ props.fields.forEach(field => {
24
+ formData[field.key] = ''
25
+ })
26
+ }
27
+
28
+ watch(() => props.fields, initForm, { immediate: true })
29
+
30
+ const handleSubmit = () => {
31
+ emit('submit-form', { ...formData })
32
+ initForm()
33
+ }
34
+ </script>
35
+
36
+ <template>
37
+ <div class="entity-form-container">
38
+ <h3 v-if="title" class="form-title">{{ title }}</h3>
39
+ <form @submit.prevent="handleSubmit" class="entity-form">
40
+ <div v-for="field in fields" :key="field.key" class="form-group">
41
+ <label :for="field.key">{{ field.label }}</label>
42
+ <input
43
+ :id="field.key"
44
+ v-model="formData[field.key]"
45
+ :type="field.type || 'text'"
46
+ :placeholder="field.placeholder || ''"
47
+ required
48
+ />
49
+ </div>
50
+ <button type="submit" class="btn-submit">Submit</button>
51
+ </form>
52
+ </div>
53
+ </template>
54
+
55
+ <style scoped>
56
+ .entity-form-container {
57
+ background-color: #f6f8fa;
58
+ border: 1px solid #d0d7de;
59
+ border-radius: 6px;
60
+ padding: 16px;
61
+ margin-bottom: 24px;
62
+ }
63
+ .form-title {
64
+ margin-bottom: 12px;
65
+ font-size: 1.1rem;
66
+ }
67
+ .entity-form {
68
+ display: flex;
69
+ flex-direction: column;
70
+ gap: 12px;
71
+ }
72
+ .form-group {
73
+ display: flex;
74
+ flex-direction: column;
75
+ gap: 4px;
76
+ }
77
+ .form-group label {
78
+ font-weight: 600;
79
+ font-size: 0.9rem;
80
+ }
81
+ .form-group input {
82
+ padding: 8px 10px;
83
+ border: 1px solid #d0d7de;
84
+ border-radius: 4px;
85
+ font-size: 0.95rem;
86
+ }
87
+ .btn-submit {
88
+ align-self: flex-start;
89
+ background-color: #1f883d;
90
+ color: #ffffff;
91
+ border: none;
92
+ padding: 8px 16px;
93
+ border-radius: 4px;
94
+ cursor: pointer;
95
+ font-weight: 600;
96
+ font-size: 0.9rem;
97
+ }
98
+ .btn-submit:hover {
99
+ background-color: #1a7f37;
100
+ }
101
+ </style>
@@ -0,0 +1,92 @@
1
+ <script setup>
2
+ defineProps({
3
+ items: {
4
+ type: Array,
5
+ default: () => []
6
+ },
7
+ columns: {
8
+ type: Array,
9
+ default: () => []
10
+ },
11
+ title: {
12
+ type: String,
13
+ default: ''
14
+ }
15
+ })
16
+
17
+ const emit = defineEmits(['delete-item'])
18
+
19
+ const getColKey = (col) => (typeof col === 'object' && col.key ? col.key : col)
20
+ const getColLabel = (col) => (typeof col === 'object' && col.label ? col.label : col)
21
+
22
+ const handleDelete = (id) => {
23
+ emit('delete-item', id)
24
+ }
25
+ </script>
26
+
27
+ <template>
28
+ <div class="entity-table-container">
29
+ <h3 v-if="title" class="table-title">{{ title }}</h3>
30
+ <table v-if="items && items.length > 0" class="entity-table">
31
+ <thead>
32
+ <tr>
33
+ <th v-for="col in columns" :key="getColKey(col)">
34
+ {{ getColLabel(col) }}
35
+ </th>
36
+ <th>Actions</th>
37
+ </tr>
38
+ </thead>
39
+ <tbody>
40
+ <tr v-for="item in items" :key="item.id">
41
+ <td v-for="col in columns" :key="getColKey(col)">
42
+ {{ item[getColKey(col)] }}
43
+ </td>
44
+ <td>
45
+ <button class="btn-delete" @click="handleDelete(item.id)">Delete</button>
46
+ </td>
47
+ </tr>
48
+ </tbody>
49
+ </table>
50
+ <p v-else class="empty-msg">No records found.</p>
51
+ </div>
52
+ </template>
53
+
54
+ <style scoped>
55
+ .entity-table-container {
56
+ margin-top: 16px;
57
+ }
58
+ .table-title {
59
+ margin-bottom: 12px;
60
+ font-size: 1.2rem;
61
+ }
62
+ .entity-table {
63
+ width: 100%;
64
+ border-collapse: collapse;
65
+ }
66
+ .entity-table th,
67
+ .entity-table td {
68
+ border: 1px solid #d0d7de;
69
+ padding: 10px 12px;
70
+ text-align: left;
71
+ }
72
+ .entity-table th {
73
+ background-color: #f6f8fa;
74
+ font-weight: 600;
75
+ }
76
+ .btn-delete {
77
+ background-color: #cf222e;
78
+ color: #ffffff;
79
+ border: none;
80
+ padding: 6px 12px;
81
+ border-radius: 4px;
82
+ cursor: pointer;
83
+ font-size: 0.85rem;
84
+ }
85
+ .btn-delete:hover {
86
+ background-color: #a40e26;
87
+ }
88
+ .empty-msg {
89
+ color: #57606a;
90
+ padding: 12px 0;
91
+ }
92
+ </style>
@@ -0,0 +1,43 @@
1
+ <script setup>
2
+ defineProps({
3
+ count: {
4
+ type: [Number, String],
5
+ required: true
6
+ },
7
+ label: {
8
+ type: String,
9
+ required: true
10
+ }
11
+ })
12
+ </script>
13
+
14
+ <template>
15
+ <div class="summary-badge">
16
+ <span class="count">{{ count }}</span>
17
+ <span class="label">{{ label }}</span>
18
+ </div>
19
+ </template>
20
+
21
+ <style scoped>
22
+ .summary-badge {
23
+ display: inline-flex;
24
+ flex-direction: column;
25
+ align-items: center;
26
+ justify-content: center;
27
+ background-color: #f0f4f8;
28
+ border: 1px solid #d0d7de;
29
+ border-radius: 8px;
30
+ padding: 16px 24px;
31
+ min-width: 140px;
32
+ }
33
+ .count {
34
+ font-size: 2rem;
35
+ font-weight: bold;
36
+ color: #0969da;
37
+ }
38
+ .label {
39
+ font-size: 0.9rem;
40
+ color: #57606a;
41
+ margin-top: 4px;
42
+ }
43
+ </style>
@@ -0,0 +1,9 @@
1
+ import { createApp } from 'vue'
2
+ import { createPinia } from 'pinia'
3
+ import App from './App.vue'
4
+ import router from './router'
5
+
6
+ const app = createApp(App)
7
+ app.use(createPinia())
8
+ app.use(router)
9
+ app.mount('#app')
@@ -0,0 +1,29 @@
1
+ import { createRouter, createWebHistory } from 'vue-router'
2
+ import OverviewView from '../views/OverviewView.vue'
3
+ import ManageDepartmentsView from '../views/ManageDepartmentsView.vue'
4
+ import ManageEmployeesView from '../views/ManageEmployeesView.vue'
5
+
6
+ const routes = [
7
+ {
8
+ path: '/',
9
+ name: 'Overview',
10
+ component: OverviewView
11
+ },
12
+ {
13
+ path: '/manage-departments',
14
+ name: 'ManageDepartments',
15
+ component: ManageDepartmentsView
16
+ },
17
+ {
18
+ path: '/manage-employees',
19
+ name: 'ManageEmployees',
20
+ component: ManageEmployeesView
21
+ }
22
+ ]
23
+
24
+ const router = createRouter({
25
+ history: createWebHistory(),
26
+ routes
27
+ })
28
+
29
+ export default router
@@ -0,0 +1,29 @@
1
+ import axios from 'axios'
2
+
3
+ const apiClient = axios.create({
4
+ baseURL: 'http://localhost:8080/api',
5
+ headers: {
6
+ 'Content-Type': 'application/json'
7
+ }
8
+ })
9
+
10
+ export default {
11
+ getDepartments() {
12
+ return apiClient.get('/departments')
13
+ },
14
+ createDepartment(data) {
15
+ return apiClient.post('/departments', data)
16
+ },
17
+ deleteDepartment(id) {
18
+ return apiClient.delete(`/departments/${id}`)
19
+ },
20
+ getEmployees() {
21
+ return apiClient.get('/employees')
22
+ },
23
+ createEmployee(data) {
24
+ return apiClient.post('/employees', data)
25
+ },
26
+ deleteEmployee(id) {
27
+ return apiClient.delete(`/employees/${id}`)
28
+ }
29
+ }