dbdoc_engine 0.1.0

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 (198) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +331 -0
  3. data/Rakefile +8 -0
  4. data/app/assets/builds/dbdoc_engine/application.css +5 -0
  5. data/app/assets/images/dbdoc_engine/arrowdown.svg +3 -0
  6. data/app/assets/images/dbdoc_engine/arrowhorizontal.svg +3 -0
  7. data/app/assets/images/dbdoc_engine/arrowleft.svg +3 -0
  8. data/app/assets/images/dbdoc_engine/changelog.svg +3 -0
  9. data/app/assets/images/dbdoc_engine/column_stats_dbdocs.svg +23 -0
  10. data/app/assets/images/dbdoc_engine/diagram.svg +3 -0
  11. data/app/assets/images/dbdoc_engine/double_arrow.svg +4 -0
  12. data/app/assets/images/dbdoc_engine/group_bu.svg +3 -0
  13. data/app/assets/images/dbdoc_engine/japan_circle.png +0 -0
  14. data/app/assets/images/dbdoc_engine/log_in_image.png +0 -0
  15. data/app/assets/images/dbdoc_engine/logo.svg +12 -0
  16. data/app/assets/images/dbdoc_engine/orange_changelog.svg +3 -0
  17. data/app/assets/images/dbdoc_engine/orange_fields.svg +23 -0
  18. data/app/assets/images/dbdoc_engine/orange_logo.svg +12 -0
  19. data/app/assets/images/dbdoc_engine/orange_table.svg +21 -0
  20. data/app/assets/images/dbdoc_engine/orange_updates.svg +43 -0
  21. data/app/assets/images/dbdoc_engine/orange_wiki.svg +3 -0
  22. data/app/assets/images/dbdoc_engine/search.svg +3 -0
  23. data/app/assets/images/dbdoc_engine/setting.svg +3 -0
  24. data/app/assets/images/dbdoc_engine/table_dbdocs.svg +21 -0
  25. data/app/assets/images/dbdoc_engine/uk_circle_transparent.png +0 -0
  26. data/app/assets/images/dbdoc_engine/update_stats_dbdocs.svg +43 -0
  27. data/app/assets/images/dbdoc_engine/wiki.svg +3 -0
  28. data/app/assets/stylesheets/dbdoc_engine/admin.css +176 -0
  29. data/app/assets/stylesheets/dbdoc_engine/admin_header.css +179 -0
  30. data/app/assets/stylesheets/dbdoc_engine/application.scss +1 -0
  31. data/app/assets/stylesheets/dbdoc_engine/changelog.css +173 -0
  32. data/app/assets/stylesheets/dbdoc_engine/dashboard.css +513 -0
  33. data/app/assets/stylesheets/dbdoc_engine/dbdoc_application.css +117 -0
  34. data/app/assets/stylesheets/dbdoc_engine/ecommerce.css +253 -0
  35. data/app/assets/stylesheets/dbdoc_engine/group_details.css +178 -0
  36. data/app/assets/stylesheets/dbdoc_engine/header.css +212 -0
  37. data/app/assets/stylesheets/dbdoc_engine/loading_spinner.css +127 -0
  38. data/app/assets/stylesheets/dbdoc_engine/login.css +213 -0
  39. data/app/assets/stylesheets/dbdoc_engine/schema_diagram.css +149 -0
  40. data/app/assets/stylesheets/dbdoc_engine/sidebar.css +296 -0
  41. data/app/assets/stylesheets/dbdoc_engine/table_details.css +417 -0
  42. data/app/controllers/dbdoc_engine/admin/base_controller.rb +23 -0
  43. data/app/controllers/dbdoc_engine/admin/dashboard_controller.rb +16 -0
  44. data/app/controllers/dbdoc_engine/admin/data_transfer_controller.rb +63 -0
  45. data/app/controllers/dbdoc_engine/admin/db_design_dynamic_tables_controller.rb +198 -0
  46. data/app/controllers/dbdoc_engine/admin/db_design_table_groups_controller.rb +107 -0
  47. data/app/controllers/dbdoc_engine/application_controller.rb +65 -0
  48. data/app/controllers/dbdoc_engine/concerns/internationalization.rb +57 -0
  49. data/app/controllers/dbdoc_engine/db_doc_sessions_controller.rb +33 -0
  50. data/app/controllers/dbdoc_engine/home_controller.rb +79 -0
  51. data/app/controllers/dbdoc_engine/schema_diagram_controller.rb +293 -0
  52. data/app/helper/dbdoc_engine/application_helper.rb +35 -0
  53. data/app/helpers/dbdoc_engine/application_helper.rb +4 -0
  54. data/app/helpers/dbdoc_engine/changelogs_helper.rb +27 -0
  55. data/app/helpers/dbdoc_engine/column_helper.rb +30 -0
  56. data/app/helpers/dbdoc_engine/db_design_dynamic_tables_helper.rb +15 -0
  57. data/app/helpers/dbdoc_engine/home_helper.rb +75 -0
  58. data/app/javascript/dbdoc_engine/application.js +12 -0
  59. data/app/javascript/dbdoc_engine/controllers/application.js +29 -0
  60. data/app/javascript/dbdoc_engine/controllers/auto_submit_controller.js +17 -0
  61. data/app/javascript/dbdoc_engine/controllers/chart_controller.js +58 -0
  62. data/app/javascript/dbdoc_engine/controllers/column-type_controller.js +149 -0
  63. data/app/javascript/dbdoc_engine/controllers/column_controller.js +362 -0
  64. data/app/javascript/dbdoc_engine/controllers/column_search_controller.js +42 -0
  65. data/app/javascript/dbdoc_engine/controllers/dbdoc_accordion_controller.js +42 -0
  66. data/app/javascript/dbdoc_engine/controllers/ecommerce_controller.js +73 -0
  67. data/app/javascript/dbdoc_engine/controllers/group_details_controller.js +88 -0
  68. data/app/javascript/dbdoc_engine/controllers/import_export_controller.js +200 -0
  69. data/app/javascript/dbdoc_engine/controllers/index.js +9 -0
  70. data/app/javascript/dbdoc_engine/controllers/language_controller.js +100 -0
  71. data/app/javascript/dbdoc_engine/controllers/loading_spinner_controller.js +48 -0
  72. data/app/javascript/dbdoc_engine/controllers/login_controller.js +75 -0
  73. data/app/javascript/dbdoc_engine/controllers/notification_controller.js +15 -0
  74. data/app/javascript/dbdoc_engine/controllers/schema_diagram_controller.js +1129 -0
  75. data/app/javascript/dbdoc_engine/controllers/select2_controller.js +67 -0
  76. data/app/javascript/dbdoc_engine/controllers/sidebar_controller.js +943 -0
  77. data/app/javascript/dbdoc_engine/controllers/table_details_controller.js +245 -0
  78. data/app/javascript/dbdoc_engine/controllers/table_group_validation_controller.js +148 -0
  79. data/app/javascript/dbdoc_engine/controllers/table_validation_controller.js +423 -0
  80. data/app/jobs/dbdoc_engine/application_job.rb +4 -0
  81. data/app/mailers/dbdoc_engine/application_mailer.rb +6 -0
  82. data/app/models/dbdoc_engine/application_record.rb +6 -0
  83. data/app/models/dbdoc_engine/concerns/soft_deletable.rb +30 -0
  84. data/app/models/dbdoc_engine/db_design_changelog.rb +44 -0
  85. data/app/models/dbdoc_engine/db_design_dynamic_column.rb +211 -0
  86. data/app/models/dbdoc_engine/db_design_dynamic_table.rb +124 -0
  87. data/app/models/dbdoc_engine/db_design_table_group.rb +88 -0
  88. data/app/models/dbdoc_engine/user.rb +21 -0
  89. data/app/queries/dbdoc_engine/admin_dashboard_queries.rb +71 -0
  90. data/app/queries/dbdoc_engine/db_design_changelog_queries.rb +68 -0
  91. data/app/queries/dbdoc_engine/db_design_dynamic_column_queries.rb +37 -0
  92. data/app/queries/dbdoc_engine/db_design_dynamic_table_commands.rb +106 -0
  93. data/app/queries/dbdoc_engine/db_design_dynamic_table_queries.rb +194 -0
  94. data/app/queries/dbdoc_engine/db_design_table_group_queries.rb +154 -0
  95. data/app/services/dbdoc_engine/db_design_dynamic_table_export_service.rb +38 -0
  96. data/app/services/dbdoc_engine/db_design_dynamic_table_handler_service.rb +49 -0
  97. data/app/services/dbdoc_engine/db_design_dynamic_tables_service.rb +21 -0
  98. data/app/services/dbdoc_engine/error_handler_service.rb +43 -0
  99. data/app/services/dbdoc_engine/schema_rb_import_service.rb +194 -0
  100. data/app/services/dbdoc_engine/schema_rb_parser_service.rb +339 -0
  101. data/app/services/dbdoc_engine/table_filter_service.rb +35 -0
  102. data/app/services/dbdoc_engine/table_groups_service.rb +199 -0
  103. data/app/services/dbdoc_engine/table_management_service.rb +192 -0
  104. data/app/views/dbdoc_engine/admin/dashboard/_action_badge.html.erb +11 -0
  105. data/app/views/dbdoc_engine/admin/dashboard/_changelog_rows.html.erb +22 -0
  106. data/app/views/dbdoc_engine/admin/dashboard/_changelog_table_headers.html.erb +8 -0
  107. data/app/views/dbdoc_engine/admin/dashboard/_filter_fields.html.erb +43 -0
  108. data/app/views/dbdoc_engine/admin/dashboard/index.html.erb +159 -0
  109. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/_column_fields.html.erb +225 -0
  110. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/_deleted_table_index.html.erb +110 -0
  111. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/_foreign_key_fields.html.erb +51 -0
  112. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/_form.html.erb +75 -0
  113. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/_recent_activity.html.erb +39 -0
  114. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/_table_columns.html.erb +127 -0
  115. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/_table_index.html.erb +109 -0
  116. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/_table_information.html.erb +99 -0
  117. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/deleted_tables.html.erb +95 -0
  118. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/edit.html.erb +23 -0
  119. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/export_all_to_excel.xlsx.axlsx +240 -0
  120. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/export_to_excel.xlsx.axlsx +135 -0
  121. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/index.html.erb +109 -0
  122. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/new.html.erb +25 -0
  123. data/app/views/dbdoc_engine/admin/db_design_dynamic_tables/show_table_info.html.erb +125 -0
  124. data/app/views/dbdoc_engine/admin/db_design_table_groups/_deleted_table_groups_list.html.erb +75 -0
  125. data/app/views/dbdoc_engine/admin/db_design_table_groups/_form.html.erb +88 -0
  126. data/app/views/dbdoc_engine/admin/db_design_table_groups/_table_groups_list.html.erb +82 -0
  127. data/app/views/dbdoc_engine/admin/db_design_table_groups/deleted_groups.html.erb +60 -0
  128. data/app/views/dbdoc_engine/admin/db_design_table_groups/edit.html.erb +25 -0
  129. data/app/views/dbdoc_engine/admin/db_design_table_groups/index.html.erb +85 -0
  130. data/app/views/dbdoc_engine/admin/db_design_table_groups/new.html.erb +26 -0
  131. data/app/views/dbdoc_engine/db_doc_sessions/new.html.erb +59 -0
  132. data/app/views/dbdoc_engine/home/changelog_details.html.erb +80 -0
  133. data/app/views/dbdoc_engine/home/changelogs.html.erb +20 -0
  134. data/app/views/dbdoc_engine/home/group_details.html.erb +94 -0
  135. data/app/views/dbdoc_engine/home/index.html.erb +11 -0
  136. data/app/views/dbdoc_engine/home/partials/_action_badge.html.erb +11 -0
  137. data/app/views/dbdoc_engine/home/partials/_breadcrumb_navigation.html.erb +30 -0
  138. data/app/views/dbdoc_engine/home/partials/_changelog_rows.html.erb +35 -0
  139. data/app/views/dbdoc_engine/home/partials/_changelog_table_headers.html.erb +16 -0
  140. data/app/views/dbdoc_engine/home/partials/_column_headers.html.erb +23 -0
  141. data/app/views/dbdoc_engine/home/partials/_column_row.html.erb +157 -0
  142. data/app/views/dbdoc_engine/home/partials/_filter_form.html.erb +47 -0
  143. data/app/views/dbdoc_engine/home/partials/_group_section.html.erb +84 -0
  144. data/app/views/dbdoc_engine/home/partials/_pagination.html.erb +5 -0
  145. data/app/views/dbdoc_engine/home/partials/_stats_container.html.erb +46 -0
  146. data/app/views/dbdoc_engine/home/partials/_table_groups.html.erb +7 -0
  147. data/app/views/dbdoc_engine/home/partials/_table_information_section.html.erb +50 -0
  148. data/app/views/dbdoc_engine/home/partials/_table_section.html.erb +48 -0
  149. data/app/views/dbdoc_engine/home/table_details.html.erb +9 -0
  150. data/app/views/dbdoc_engine/schema_diagram/index.html.erb +102 -0
  151. data/app/views/dbdoc_engine/shared/_admin_header.html.erb +78 -0
  152. data/app/views/dbdoc_engine/shared/_header.html.erb +94 -0
  153. data/app/views/dbdoc_engine/shared/_js_translations.html.erb +3 -0
  154. data/app/views/dbdoc_engine/shared/_language_button.html.erb +14 -0
  155. data/app/views/dbdoc_engine/shared/_sidebar.html.erb +128 -0
  156. data/app/views/kaminari/dbdoc_engine/_first_page.html.erb +3 -0
  157. data/app/views/kaminari/dbdoc_engine/_gap.html.erb +3 -0
  158. data/app/views/kaminari/dbdoc_engine/_last_page.html.erb +3 -0
  159. data/app/views/kaminari/dbdoc_engine/_next_page.html.erb +3 -0
  160. data/app/views/kaminari/dbdoc_engine/_page.html.erb +9 -0
  161. data/app/views/kaminari/dbdoc_engine/_paginator.html.erb +17 -0
  162. data/app/views/kaminari/dbdoc_engine/_prev_page.html.erb +3 -0
  163. data/app/views/layouts/dbdoc_engine/application.html.erb +107 -0
  164. data/app/views/layouts/dbdoc_engine/header.html.erb +108 -0
  165. data/config/importmap.rb +11 -0
  166. data/config/locales/en.yml +307 -0
  167. data/config/locales/ja.yml +306 -0
  168. data/config/routes.rb +73 -0
  169. data/db/migrate/rails7/20250227060610_create_db_design_table_groups.rb +15 -0
  170. data/db/migrate/rails7/20250227094626_create_db_design_dynamic_tables.rb +19 -0
  171. data/db/migrate/rails7/20250228022732_create_db_design_dynamic_columns.rb +34 -0
  172. data/db/migrate/rails7/20250401051453_create_db_design_changelogs.rb +26 -0
  173. data/db/migrate/rails7/20250411040822_create_users.rb +14 -0
  174. data/db/migrate/rails7/20250421080851_add_missing_indexes_to_dbdoc_tables.rb +23 -0
  175. data/db/migrate/rails8/20250227060610_create_db_design_table_groups.rb +15 -0
  176. data/db/migrate/rails8/20250227094626_create_db_design_dynamic_tables.rb +19 -0
  177. data/db/migrate/rails8/20250228022732_create_db_design_dynamic_columns.rb +34 -0
  178. data/db/migrate/rails8/20250401051453_create_db_design_changelogs.rb +26 -0
  179. data/db/migrate/rails8/20250411040822_create_users.rb +14 -0
  180. data/db/migrate/rails8/20250421080851_add_missing_indexes_to_dbdoc_tables.rb +23 -0
  181. data/db/seeds.rb +28 -0
  182. data/lib/dbdoc_engine/engine.rb +57 -0
  183. data/lib/dbdoc_engine/version.rb +3 -0
  184. data/lib/dbdoc_engine.rb +9 -0
  185. data/lib/generators/dbdoc_engine/install/install_generator.rb +245 -0
  186. data/lib/generators/dbdoc_engine/uninstall/uninstall_generator.rb +196 -0
  187. data/lib/tasks/dbdoc_engine_tasks.rake +44 -0
  188. data/public/dbdoc_engine_assets/images/camel_chess_head.png +0 -0
  189. data/public/dbdoc_engine_assets/images/dblogo.svg +4 -0
  190. data/public/dbdoc_engine_assets/images/japan_circle.png +0 -0
  191. data/public/dbdoc_engine_assets/images/king_chess_head.png +0 -0
  192. data/public/dbdoc_engine_assets/images/login-bg.svg +44 -0
  193. data/public/dbdoc_engine_assets/images/logo.png +0 -0
  194. data/public/dbdoc_engine_assets/images/logo.svg +12 -0
  195. data/public/dbdoc_engine_assets/images/queen_chess_head.png +0 -0
  196. data/public/dbdoc_engine_assets/images/soldier_chess_headd.png +0 -0
  197. data/public/dbdoc_engine_assets/images/uk_circle_transparent.png +0 -0
  198. metadata +415 -0
@@ -0,0 +1,127 @@
1
+ .loading-spinner {
2
+ position: fixed;
3
+ top: 0;
4
+ left: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ background-color: rgba(255, 255, 255, 0.95);
8
+ display: flex;
9
+ flex-direction: column;
10
+ justify-content: center;
11
+ align-items: center;
12
+ z-index: 9999;
13
+ transition: opacity 0.3s ease, visibility 0.3s ease;
14
+ }
15
+
16
+ .loading-spinner[data-loading-spinner-visible="true"] {
17
+ opacity: 1;
18
+ visibility: visible;
19
+ }
20
+
21
+ .loading-spinner[data-loading-spinner-visible="false"] {
22
+ opacity: 0;
23
+ visibility: hidden;
24
+ pointer-events: none;
25
+ }
26
+
27
+ .spinner-content {
28
+ text-align: center;
29
+ }
30
+
31
+ .spinner {
32
+ width: 60px;
33
+ height: 60px;
34
+ border: 6px solid #f3f3f3;
35
+ border-top: 6px solid #3498db;
36
+ border-radius: 50%;
37
+ animation: spin 1s linear infinite;
38
+ margin-bottom: 15px;
39
+ }
40
+
41
+ .spinner-content p {
42
+ font-size: 18px;
43
+ color: #333;
44
+ font-weight: 500;
45
+ margin-top: 15px;
46
+ }
47
+
48
+ @keyframes spin {
49
+ 0% { transform: rotate(0deg); }
50
+ 100% { transform: rotate(360deg); }
51
+ }
52
+
53
+ .sidebar-tooltip {
54
+ pointer-events: none !important;
55
+ }
56
+ .spinner-content {
57
+ display: flex;
58
+ text-align: center;
59
+ flex-direction: column;
60
+ justify-content: space-between;
61
+ align-items: center;
62
+ }
63
+ /* SVG Loader Styles */
64
+ .pl {
65
+ width: 5em;
66
+ height: 5em;
67
+ margin-bottom: 15px;
68
+ }
69
+
70
+ .pl circle {
71
+ transform-box: fill-box;
72
+ transform-origin: 50% 50%;
73
+ }
74
+
75
+ .pl__ring1 { animation: ring1 4s 0s ease-in-out infinite; }
76
+ .pl__ring2 { animation: ring2 4s 0.04s ease-in-out infinite; }
77
+ .pl__ring3 { animation: ring3 4s 0.08s ease-in-out infinite; }
78
+ .pl__ring4 { animation: ring4 4s 0.12s ease-in-out infinite; }
79
+ .pl__ring5 { animation: ring5 4s 0.16s ease-in-out infinite; }
80
+ .pl__ring6 { animation: ring6 4s 0.2s ease-in-out infinite; }
81
+
82
+ /* Animations for each ring */
83
+ @keyframes ring1 {
84
+ from { stroke-dashoffset: -376.237; transform: rotate(-0.25turn); animation-timing-function: ease-in; }
85
+ 23% { stroke-dashoffset: -94.2478; transform: rotate(1turn); animation-timing-function: ease-out; }
86
+ 46%, 50% { stroke-dashoffset: -376.237; transform: rotate(2.25turn); animation-timing-function: ease-in; }
87
+ 73% { stroke-dashoffset: -94.2478; transform: rotate(3.5turn); animation-timing-function: ease-out; }
88
+ 96%, to { stroke-dashoffset: -376.237; transform: rotate(4.75turn);}
89
+ }
90
+ @keyframes ring2 {
91
+ from { stroke-dashoffset: -329.207; transform: rotate(-0.25turn); animation-timing-function: ease-in; }
92
+ 23% { stroke-dashoffset: -82.4668; transform: rotate(1turn); animation-timing-function: ease-out; }
93
+ 46%, 50% { stroke-dashoffset: -329.207; transform: rotate(2.25turn); animation-timing-function: ease-in; }
94
+ 73% { stroke-dashoffset: -82.4668; transform: rotate(3.5turn); animation-timing-function: ease-out; }
95
+ 96%, to { stroke-dashoffset: -329.207; transform: rotate(4.75turn);}
96
+ }
97
+ @keyframes ring3 {
98
+ from { stroke-dashoffset: -288.448; transform: rotate(-0.25turn); animation-timing-function: ease-in; }
99
+ 23% { stroke-dashoffset: -72.2566; transform: rotate(1turn); animation-timing-function: ease-out; }
100
+ 46%, 50% { stroke-dashoffset: -288.448; transform: rotate(2.25turn); animation-timing-function: ease-in; }
101
+ 73% { stroke-dashoffset: -72.2566; transform: rotate(3.5turn); animation-timing-function: ease-out; }
102
+ 96%, to { stroke-dashoffset: -288.448; transform: rotate(4.75turn);}
103
+ }
104
+ @keyframes ring4 {
105
+ from { stroke-dashoffset: -253.960; transform: rotate(-0.25turn); animation-timing-function: ease-in; }
106
+ 23% { stroke-dashoffset: -63.6173; transform: rotate(1turn); animation-timing-function: ease-out; }
107
+ 46%, 50% { stroke-dashoffset: -253.960; transform: rotate(2.25turn); animation-timing-function: ease-in; }
108
+ 73% { stroke-dashoffset: -63.6173; transform: rotate(3.5turn); animation-timing-function: ease-out; }
109
+ 96%, to { stroke-dashoffset: -253.960; transform: rotate(4.75turn);}
110
+ }
111
+ @keyframes ring5 {
112
+ from { stroke-dashoffset: -225.742; transform: rotate(-0.25turn); animation-timing-function: ease-in; }
113
+ 23% { stroke-dashoffset: -56.5487; transform: rotate(1turn); animation-timing-function: ease-out; }
114
+ 46%, 50% { stroke-dashoffset: -225.742; transform: rotate(2.25turn); animation-timing-function: ease-in; }
115
+ 73% { stroke-dashoffset: -56.5487; transform: rotate(3.5turn); animation-timing-function: ease-out; }
116
+ 96%, to { stroke-dashoffset: -225.742; transform: rotate(4.75turn);}
117
+ }
118
+ @keyframes ring6 {
119
+ from { stroke-dashoffset: -203.795; transform: rotate(-0.25turn); animation-timing-function: ease-in; }
120
+ 23% { stroke-dashoffset: -51.0509; transform: rotate(1turn); animation-timing-function: ease-out; }
121
+ 46%, 50% { stroke-dashoffset: -203.795; transform: rotate(2.25turn); animation-timing-function: ease-in; }
122
+ 73% { stroke-dashoffset: -51.0509; transform: rotate(3.5turn); animation-timing-function: ease-out; }
123
+ 96%, to { stroke-dashoffset: -203.795; transform: rotate(4.75turn);}
124
+ }
125
+ .spinner {
126
+ display: none !important;
127
+ }
@@ -0,0 +1,213 @@
1
+ body {
2
+ background: #fff;
3
+ margin: 0;
4
+ padding: 0;
5
+ }
6
+
7
+ .login-bg {
8
+ min-height: 100vh;
9
+ width: 100vw;
10
+ background: url('/dbdoc_engine_assets/images/login-bg.svg') no-repeat center center fixed;
11
+ background-size: cover;
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ }
16
+
17
+ .login-card-container {
18
+ width: 900px;
19
+ height: 520px;
20
+ display: flex;
21
+ border-radius: 32px;
22
+ overflow: hidden;
23
+ box-shadow: 0 8px 40px rgba(54, 67, 128, 0.15);
24
+ background: transparent;
25
+ }
26
+
27
+ .login-left {
28
+ width: 50%;
29
+ background: #fff;
30
+ display: flex;
31
+ flex-direction: column;
32
+ align-items: center;
33
+ justify-content: center;
34
+ padding: 40px 24px 40px 24px;
35
+ border-top-left-radius: 32px;
36
+ border-bottom-left-radius: 32px;
37
+ }
38
+
39
+ .login-illustration {
40
+ width: 210px;
41
+ margin-bottom: 24px;
42
+ }
43
+
44
+ .login-title {
45
+ font-size: 24px;
46
+ font-weight: bold;
47
+ color: #5366A0;
48
+ margin-bottom: 10px;
49
+ letter-spacing: 1px;
50
+ text-align: center;
51
+ }
52
+
53
+ .login-desc {
54
+ color: #666C79;
55
+ font-size: 14px;
56
+ text-align: center;
57
+ font-weight: 500;
58
+ }
59
+
60
+ .login-right {
61
+ width: 50%;
62
+ background: rgb(246 248 252 / 83%);
63
+ display: flex;
64
+ flex-direction: column;
65
+ align-items: center;
66
+ justify-content: center;
67
+ border-top-right-radius: 32px;
68
+ border-bottom-right-radius: 32px;
69
+ padding: 40px 36px;
70
+ }
71
+
72
+ .login-logo-row {
73
+ display: flex;
74
+ align-items: center;
75
+ margin-bottom: 32px;
76
+ }
77
+
78
+ .login-logo {
79
+ width: 38px;
80
+ height: 38px;
81
+ margin-right: 12px;
82
+ vertical-align: middle;
83
+ }
84
+
85
+ .login-logo-text {
86
+ font-size: 24px;
87
+ font-weight: bold;
88
+ color: #5366A0;
89
+ letter-spacing: 1px;
90
+ }
91
+
92
+ .login-form {
93
+ width: 100%;
94
+ max-width: 320px;
95
+ display: flex;
96
+ flex-direction: column;
97
+ gap: 18px;
98
+ }
99
+
100
+ .login-field {
101
+ display: flex;
102
+ flex-direction: column;
103
+ gap: 6px;
104
+ }
105
+
106
+ .login-label {
107
+ color: #666C79;
108
+ font-size: 14px;
109
+ font-weight: 600;
110
+ }
111
+
112
+ .login-input {
113
+ border: 1.5px solid #E7E8EA;
114
+ border-radius: 8px;
115
+ padding: 9px 14px;
116
+ font-size: 15px;
117
+ color: #5366A0;
118
+ background: #fff;
119
+ outline: none;
120
+ transition: border 0.2s;
121
+ }
122
+
123
+ .login-input:focus {
124
+ border-color: #5366A0;
125
+ }
126
+
127
+ .login-btn-row {
128
+ margin-top: 10px;
129
+ }
130
+
131
+ .login-btn {
132
+ width: 100%;
133
+ padding: 11px 0;
134
+ border: none;
135
+ border-radius: 8px;
136
+ font-size: 14px;
137
+ font-weight: bold;
138
+ color: #fff;
139
+ background: linear-gradient(90deg, #5366A0 0%, #364380 100%);
140
+ box-shadow: 0 2px 10px rgba(54, 67, 128, 0.10);
141
+ cursor: pointer;
142
+ transition: background 0.2s, box-shadow 0.2s;
143
+ }
144
+
145
+ .login-btn:hover {
146
+ background: linear-gradient(90deg, #364380 0%, #5366A0 100%);
147
+ box-shadow: 0 4px 16px rgba(54, 67, 128, 0.16);
148
+ }
149
+ .login-form-lang-btn {
150
+ position: absolute;
151
+ top: 18px;
152
+ right: 24px;
153
+ z-index: 10;
154
+ }
155
+
156
+ .login-right {
157
+ position: relative;
158
+ }
159
+
160
+ .login-form-btn-row {
161
+ position: absolute;
162
+ top: 18px;
163
+ right: 24px;
164
+ z-index: 10;
165
+ display: flex;
166
+ align-items: center;
167
+ gap: 8px;
168
+ }
169
+
170
+ .back-main-btn {
171
+ height: 28px;
172
+ padding: 0 18px;
173
+ background: #E7E8EA;
174
+ color: #364380;
175
+ border-radius: 14px;
176
+ font-size: 13px;
177
+ transition: background 0.2s, color 0.2s;
178
+ text-decoration: none;
179
+ box-shadow: 0 1px 4px rgba(54, 67, 128, 0.07);
180
+ letter-spacing: 0.02em;
181
+ border: none;
182
+ margin-right: 8px;
183
+ }
184
+ .back-main-btn:hover {
185
+ background: #364380;
186
+ color: #fff;
187
+ text-decoration: none;
188
+ }
189
+
190
+ @media (max-width: 990px) {
191
+ .login-card-container {
192
+ flex-direction: column;
193
+ width: 95vw;
194
+ height: auto;
195
+ min-height: 600px;
196
+ }
197
+ .login-left, .login-right {
198
+ width: 100%;
199
+ border-radius: 0;
200
+ border-top-left-radius: 32px;
201
+ border-top-right-radius: 32px;
202
+ border-bottom-left-radius: 0;
203
+ border-bottom-right-radius: 32px;
204
+ min-height: 320px;
205
+ }
206
+ .login-right {
207
+ border-top-left-radius: 0;
208
+ border-top-right-radius: 0;
209
+ border-bottom-left-radius: 32px;
210
+ border-bottom-right-radius: 32px;
211
+ }
212
+ }
213
+
@@ -0,0 +1,149 @@
1
+ /* app/assets/stylesheets/dbdoc_engine/schema_diagram.css */
2
+
3
+ .mermaid-diagram-container {
4
+ width: 100%;
5
+ min-height: 500px;
6
+ background: white;
7
+ }
8
+
9
+ .mermaid-diagram-container svg {
10
+ display: block;
11
+ margin: 0 auto;
12
+ max-width: 100%;
13
+ height: auto;
14
+ }
15
+
16
+ .er.entityLabel {
17
+ font-size: 10px !important;
18
+ fill: #474444 !important;
19
+ }
20
+
21
+ /* Tooltip Styling */
22
+ #column-tooltip {
23
+ background: white !important;
24
+ color: #5366A0 !important;
25
+ border: 1px solid #5366A0 !important;
26
+ box-shadow: 0 4px 8px rgba(0, 102, 204, 0.2) !important;
27
+ border-radius: 6px !important;
28
+ font-size: 12px !important;
29
+ line-height: 1.4 !important;
30
+ max-width: 300px !important;
31
+ z-index: 1000 !important;
32
+ pointer-events: none !important;
33
+ }
34
+
35
+ /* Style the tooltip content */
36
+ #column-tooltip .fw-bold {
37
+ color: #004499 !important;
38
+ border-bottom: 1px solid #e6f2ff;
39
+ padding-bottom: 4px;
40
+ margin-bottom: 8px;
41
+ }
42
+
43
+ #column-tooltip strong {
44
+ color: #004499 !important;
45
+ }
46
+
47
+ #column-tooltip .fst-italic {
48
+ color: #5366A0 !important;
49
+ opacity: 0.8;
50
+ }
51
+ .head-schema{
52
+ background-color: transparent;
53
+ border-bottom: none;
54
+ font-size: 16px;
55
+ color: #5366A0;
56
+ }
57
+ .dropdown-schema{
58
+ font-size: 13px !important;
59
+ color: #666C79 !important;
60
+ width: 61%;
61
+ }
62
+ .lable-schema{
63
+ font-size: 14px;
64
+ color: #5366A0;
65
+ font-weight: bold;
66
+ }
67
+ .bottom-schema{
68
+ background-color: transparent;
69
+ border-bottom: none;
70
+ font-size: 14px;
71
+ color: #666C79;
72
+ }
73
+ .diagram-btn {
74
+ background-color: #E7E8EA;
75
+ color: #5366A0;
76
+ border: none;
77
+ width: 40px;
78
+ height: 40px;
79
+ display: flex;
80
+ align-items: center;
81
+ justify-content: center;
82
+ transition: background-color 0.15s, color 0.15s;
83
+ }
84
+
85
+ .diagram-btn:hover {
86
+ background-color: #5366A0;
87
+ color: white;
88
+ }
89
+
90
+ /* Highlight edge and arrow on hover */
91
+ .edge.highlighted path,
92
+ .edge.highlighted polygon,
93
+ .edge.highlighted polyline {
94
+ stroke-width: 2.5 !important;
95
+ filter: url(#glow);
96
+ }
97
+
98
+ /* Animate "blood vessel" effect on the edge */
99
+ .animated path,
100
+ .animated polyline {
101
+ stroke-dasharray: 12 8;
102
+ stroke-dashoffset: 0;
103
+ animation: blood-flow 2.2s linear infinite;
104
+ }
105
+
106
+ @keyframes blood-flow {
107
+ to {
108
+ stroke-dashoffset: -40;
109
+ }
110
+ }
111
+
112
+ /* Highlight column row */
113
+ .column-highlight {
114
+ transition: fill 0.2s, filter 0.2s;
115
+ fill: #e6f2ff !important;
116
+ filter: drop-shadow(0 0 6px #6ec6ff);
117
+ }
118
+ /* Bold border for hovered table */
119
+ .table-hover-highlight > table {
120
+ border-width: 4px !important;
121
+ border-style: solid !important;
122
+ box-shadow: none !important;
123
+ }
124
+ /* Table hover highlighting - bold border with same color */
125
+ .table-hover-highlight > rect,
126
+ .table-hover-highlight > polygon {
127
+ stroke-width: 3px !important;
128
+ transition: stroke-width 0.2s ease !important;
129
+ }
130
+
131
+ /* For HTML table elements within SVG */
132
+ .table-hover-highlight table {
133
+ border-width: 3px !important;
134
+ transition: border-width 0.2s ease !important;
135
+ }
136
+
137
+ /* Alternative approach - target the main table border specifically */
138
+ g.node.table-hover-highlight > polygon,
139
+ g.node.table-hover-highlight > rect {
140
+ stroke-width: 4px !important;
141
+ transition: stroke-width 0.2s ease !important;
142
+ }
143
+ #schema-diagram svg {
144
+ width: 100%;
145
+ max-height: 75vh; /* or whatever max height you want */
146
+ height: auto;
147
+ overflow: visible;
148
+ }
149
+