attachmentSettings.jade 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. template(name="attachmentSettings")
  2. ul#attachment-setting.setting-detail
  3. li
  4. h3 {{_ 'attachment-storage-configuration'}}
  5. .form-group
  6. label {{_ 'writable-path'}}
  7. input.wekan-form-control#filesystem-path(type="text" value="{{filesystemPath}}" readonly)
  8. small.form-text.text-muted {{_ 'filesystem-path-description'}}
  9. .form-group
  10. label {{_ 'attachments-path'}}
  11. input.wekan-form-control#attachments-path(type="text" value="{{attachmentsPath}}" readonly)
  12. small.form-text.text-muted {{_ 'attachments-path-description'}}
  13. .form-group
  14. label {{_ 'avatars-path'}}
  15. input.wekan-form-control#avatars-path(type="text" value="{{avatarsPath}}" readonly)
  16. small.form-text.text-muted {{_ 'avatars-path-description'}}
  17. li
  18. h3 {{_ 'mongodb-gridfs-storage'}}
  19. .form-group
  20. label {{_ 'gridfs-enabled'}}
  21. input.wekan-form-control#gridfs-enabled(type="checkbox" checked="{{gridfsEnabled}}" disabled)
  22. small.form-text.text-muted {{_ 'gridfs-enabled-description'}}
  23. li
  24. h3 {{_ 's3-minio-storage'}}
  25. .form-group
  26. label {{_ 's3-enabled'}}
  27. input.wekan-form-control#s3-enabled(type="checkbox" checked="{{s3Enabled}}" disabled)
  28. small.form-text.text-muted {{_ 's3-enabled-description'}}
  29. .form-group
  30. label {{_ 's3-endpoint'}}
  31. input.wekan-form-control#s3-endpoint(type="text" value="{{s3Endpoint}}" readonly)
  32. small.form-text.text-muted {{_ 's3-endpoint-description'}}
  33. .form-group
  34. label {{_ 's3-bucket'}}
  35. input.wekan-form-control#s3-bucket(type="text" value="{{s3Bucket}}" readonly)
  36. small.form-text.text-muted {{_ 's3-bucket-description'}}
  37. .form-group
  38. label {{_ 's3-region'}}
  39. input.wekan-form-control#s3-region(type="text" value="{{s3Region}}" readonly)
  40. small.form-text.text-muted {{_ 's3-region-description'}}
  41. .form-group
  42. label {{_ 's3-access-key'}}
  43. input.wekan-form-control#s3-access-key(type="text" placeholder="{{_ 's3-access-key-placeholder'}}" readonly)
  44. small.form-text.text-muted {{_ 's3-access-key-description'}}
  45. .form-group
  46. label {{_ 's3-secret-key'}}
  47. input.wekan-form-control#s3-secret-key(type="password" placeholder="{{_ 's3-secret-key-placeholder'}}")
  48. small.form-text.text-muted {{_ 's3-secret-key-description'}}
  49. .form-group
  50. label {{_ 's3-ssl-enabled'}}
  51. input.wekan-form-control#s3-ssl-enabled(type="checkbox" checked="{{s3SslEnabled}}" disabled)
  52. small.form-text.text-muted {{_ 's3-ssl-enabled-description'}}
  53. .form-group
  54. label {{_ 's3-port'}}
  55. input.wekan-form-control#s3-port(type="number" value="{{s3Port}}" readonly)
  56. small.form-text.text-muted {{_ 's3-port-description'}}
  57. .form-group
  58. button.js-test-s3-connection.btn.btn-secondary {{_ 'test-s3-connection'}}
  59. button.js-save-s3-settings.btn.btn-primary {{_ 'save-s3-settings'}}
  60. template(name="storageSettings")
  61. .storage-settings
  62. h3 {{_ 'attachment-storage-configuration'}}
  63. .storage-config-section
  64. h4 {{_ 'filesystem-storage'}}
  65. .form-group
  66. label {{_ 'writable-path'}}
  67. input.wekan-form-control#filesystem-path(type="text" value="{{filesystemPath}}" readonly)
  68. small.form-text.text-muted {{_ 'filesystem-path-description'}}
  69. .form-group
  70. label {{_ 'attachments-path'}}
  71. input.wekan-form-control#attachments-path(type="text" value="{{attachmentsPath}}" readonly)
  72. small.form-text.text-muted {{_ 'attachments-path-description'}}
  73. .form-group
  74. label {{_ 'avatars-path'}}
  75. input.wekan-form-control#avatars-path(type="text" value="{{avatarsPath}}" readonly)
  76. small.form-text.text-muted {{_ 'avatars-path-description'}}
  77. .storage-config-section
  78. h4 {{_ 'mongodb-gridfs-storage'}}
  79. .form-group
  80. label {{_ 'gridfs-enabled'}}
  81. input.wekan-form-control#gridfs-enabled(type="checkbox" checked="{{gridfsEnabled}}" disabled)
  82. small.form-text.text-muted {{_ 'gridfs-enabled-description'}}
  83. .storage-config-section
  84. h4 {{_ 's3-minio-storage'}}
  85. .form-group
  86. label {{_ 's3-enabled'}}
  87. input.wekan-form-control#s3-enabled(type="checkbox" checked="{{s3Enabled}}" disabled)
  88. small.form-text.text-muted {{_ 's3-enabled-description'}}
  89. .form-group
  90. label {{_ 's3-endpoint'}}
  91. input.wekan-form-control#s3-endpoint(type="text" value="{{s3Endpoint}}" readonly)
  92. small.form-text.text-muted {{_ 's3-endpoint-description'}}
  93. .form-group
  94. label {{_ 's3-bucket'}}
  95. input.wekan-form-control#s3-bucket(type="text" value="{{s3Bucket}}" readonly)
  96. small.form-text.text-muted {{_ 's3-bucket-description'}}
  97. .form-group
  98. label {{_ 's3-region'}}
  99. input.wekan-form-control#s3-region(type="text" value="{{s3Region}}" readonly)
  100. small.form-text.text-muted {{_ 's3-region-description'}}
  101. .form-group
  102. label {{_ 's3-access-key'}}
  103. input.wekan-form-control#s3-access-key(type="text" placeholder="{{_ 's3-access-key-placeholder'}}" readonly)
  104. small.form-text.text-muted {{_ 's3-access-key-description'}}
  105. .form-group
  106. label {{_ 's3-secret-key'}}
  107. input.wekan-form-control#s3-secret-key(type="password" placeholder="{{_ 's3-secret-key-placeholder'}}")
  108. small.form-text.text-muted {{_ 's3-secret-key-description'}}
  109. .form-group
  110. label {{_ 's3-ssl-enabled'}}
  111. input.wekan-form-control#s3-ssl-enabled(type="checkbox" checked="{{s3SslEnabled}}" disabled)
  112. small.form-text.text-muted {{_ 's3-ssl-enabled-description'}}
  113. .form-group
  114. label {{_ 's3-port'}}
  115. input.wekan-form-control#s3-port(type="number" value="{{s3Port}}" readonly)
  116. small.form-text.text-muted {{_ 's3-port-description'}}
  117. .storage-actions
  118. button.js-test-s3-connection.btn.btn-secondary {{_ 'test-s3-connection'}}
  119. button.js-save-s3-settings.btn.btn-primary {{_ 'save-s3-settings'}}
  120. template(name="attachmentMigration")
  121. .attachment-migration
  122. h3 {{_ 'attachment-migration'}}
  123. .migration-controls
  124. .form-group
  125. label {{_ 'migration-batch-size'}}
  126. input.wekan-form-control#migration-batch-size(type="number" value="{{migrationBatchSize}}" min="1" max="100")
  127. small.form-text.text-muted {{_ 'migration-batch-size-description'}}
  128. .form-group
  129. label {{_ 'migration-delay-ms'}}
  130. input.wekan-form-control#migration-delay-ms(type="number" value="{{migrationDelayMs}}" min="100" max="10000")
  131. small.form-text.text-muted {{_ 'migration-delay-ms-description'}}
  132. .form-group
  133. label {{_ 'migration-cpu-threshold'}}
  134. input.wekan-form-control#migration-cpu-threshold(type="number" value="{{migrationCpuThreshold}}" min="10" max="90")
  135. small.form-text.text-muted {{_ 'migration-cpu-threshold-description'}}
  136. .migration-actions
  137. .migration-buttons
  138. button.js-migrate-all-to-filesystem.btn.btn-primary {{_ 'migrate-all-to-filesystem'}}
  139. button.js-migrate-all-to-gridfs.btn.btn-primary {{_ 'migrate-all-to-gridfs'}}
  140. button.js-migrate-all-to-s3.btn.btn-primary {{_ 'migrate-all-to-s3'}}
  141. .migration-controls
  142. button.js-pause-migration.btn.btn-warning {{_ 'pause-migration'}}
  143. button.js-resume-migration.btn.btn-success {{_ 'resume-migration'}}
  144. button.js-stop-migration.btn.btn-danger {{_ 'stop-migration'}}
  145. .migration-progress
  146. h4 {{_ 'migration-progress'}}
  147. .progress
  148. .progress-bar(role="progressbar" style="width: {{migrationProgress}}%" aria-valuenow="{{migrationProgress}}" aria-valuemin="0" aria-valuemax="100")
  149. | {{migrationProgress}}%
  150. .migration-stats
  151. .stat-item
  152. span.label {{_ 'total-attachments'}}:
  153. span.value {{totalAttachments}}
  154. .stat-item
  155. span.label {{_ 'migrated-attachments'}}:
  156. span.value {{migratedAttachments}}
  157. .stat-item
  158. span.label {{_ 'remaining-attachments'}}:
  159. span.value {{remainingAttachments}}
  160. .stat-item
  161. span.label {{_ 'migration-status'}}:
  162. span.value {{migrationStatus}}
  163. .migration-log
  164. h4 {{_ 'migration-log'}}
  165. .log-container
  166. pre#migration-log-content {{migrationLog}}
  167. template(name="attachmentMonitoring")
  168. .attachment-monitoring
  169. h3 {{_ 'attachment-monitoring'}}
  170. .monitoring-stats
  171. .stats-grid
  172. .stat-card
  173. h5 {{_ 'total-attachments'}}
  174. .stat-value {{totalAttachments}}
  175. .stat-card
  176. h5 {{_ 'filesystem-attachments'}}
  177. .stat-value {{filesystemAttachments}}
  178. .stat-card
  179. h5 {{_ 'gridfs-attachments'}}
  180. .stat-value {{gridfsAttachments}}
  181. .stat-card
  182. h5 {{_ 's3-attachments'}}
  183. .stat-value {{s3Attachments}}
  184. .stat-card
  185. h5 {{_ 'total-size'}}
  186. .stat-value {{totalSize}}
  187. .stat-card
  188. h5 {{_ 'filesystem-size'}}
  189. .stat-value {{filesystemSize}}
  190. .stat-card
  191. h5 {{_ 'gridfs-size'}}
  192. .stat-value {{gridfsSize}}
  193. .stat-card
  194. h5 {{_ 's3-size'}}
  195. .stat-value {{s3Size}}
  196. .monitoring-charts
  197. h4 {{_ 'storage-distribution'}}
  198. .chart-container
  199. canvas#storage-distribution-chart
  200. .monitoring-actions
  201. button.js-refresh-monitoring.btn.btn-secondary {{_ 'refresh-monitoring'}}
  202. button.js-export-monitoring.btn.btn-primary {{_ 'export-monitoring'}}