| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 | 
							- template(name="cronSettings")
 
-   ul#cron-setting.setting-detail
 
-     li
 
-       h3 {{_ 'cron-migrations'}}
 
-       .form-group
 
-         label {{_ 'migration-status'}}
 
-         .status-indicator
 
-           span.status-label {{_ 'status'}}:
 
-           span.status-value {{migrationStatus}}
 
-         .progress-section
 
-           .progress
 
-             .progress-bar(role="progressbar" style="width: {{migrationProgress}}%" aria-valuenow="{{migrationProgress}}" aria-valuemin="0" aria-valuemax="100") 
 
-               | {{migrationProgress}}%
 
-           .progress-text
 
-             | {{migrationProgress}}% {{_ 'complete'}}
 
-       
 
-       .form-group
 
-         button.js-start-all-migrations.btn.btn-primary {{_ 'start-all-migrations'}}
 
-         button.js-pause-all-migrations.btn.btn-warning {{_ 'pause-all-migrations'}}
 
-         button.js-stop-all-migrations.btn.btn-danger {{_ 'stop-all-migrations'}}
 
-     
 
-     li
 
-       h3 {{_ 'board-operations'}}
 
-       .form-group
 
-         label {{_ 'scheduled-board-operations'}}
 
-         button.js-schedule-board-cleanup.btn.btn-primary {{_ 'schedule-board-cleanup'}}
 
-         button.js-schedule-board-archive.btn.btn-warning {{_ 'schedule-board-archive'}}
 
-         button.js-schedule-board-backup.btn.btn-info {{_ 'schedule-board-backup'}}
 
-     
 
-     li
 
-       h3 {{_ 'cron-jobs'}}
 
-       .form-group
 
-         label {{_ 'active-cron-jobs'}}
 
-         each cronJobs
 
-           .job-item
 
-             .job-info
 
-               .job-name {{name}}
 
-               .job-schedule {{schedule}}
 
-               .job-description {{description}}
 
-             .job-actions
 
-               button.js-pause-job.btn.btn-sm.btn-warning(data-job-id="{{_id}}") {{_ 'pause'}}
 
-               button.js-delete-job.btn.btn-sm.btn-danger(data-job-id="{{_id}}") {{_ 'delete'}}
 
-         .add-job-section
 
-           button.js-add-cron-job.btn.btn-success {{_ 'add-cron-job'}}
 
- template(name="cronMigrations")
 
-   .cron-migrations
 
-     .migration-header
 
-       h2
 
-         i.fa.fa-database
 
-         | {{_ 'database-migrations'}}
 
-       .migration-controls
 
-         button.btn.btn-primary.js-start-all-migrations
 
-           i.fa.fa-play
 
-           | {{_ 'start-all-migrations'}}
 
-         button.btn.btn-warning.js-pause-all-migrations
 
-           i.fa.fa-pause
 
-           | {{_ 'pause-all-migrations'}}
 
-         button.btn.btn-danger.js-stop-all-migrations
 
-           i.fa.fa-stop
 
-           | {{_ 'stop-all-migrations'}}
 
-     
 
-     .migration-progress
 
-       .progress-overview
 
-         .progress-bar
 
-           .progress-fill(style="width: {{migrationProgress}}%") 
 
-         .progress-text {{migrationProgress}}%
 
-         .progress-label {{_ 'overall-progress'}}
 
-       
 
-       .current-step
 
-         i.fa.fa-cog.fa-spin
 
-         | {{migrationCurrentStep}}
 
-       
 
-       .migration-status
 
-         i.fa.fa-info-circle
 
-         | {{migrationStatus}}
 
-     
 
-     .migration-steps
 
-       h3 {{_ 'migration-steps'}}
 
-       .steps-list
 
-         each migrationSteps
 
-           .migration-step(class="{{#if completed}}completed{{/if}}" class="{{#if isCurrentStep}}current{{/if}}")
 
-             .step-header
 
-               .step-icon
 
-                 if completed
 
-                   i.fa.fa-check-circle
 
-                 else if isCurrentStep
 
-                   i.fa.fa-cog.fa-spin
 
-                 else
 
-                   i.fa.fa-circle-o
 
-               .step-info
 
-                 .step-name {{name}}
 
-                 .step-description {{description}}
 
-               .step-progress
 
-                 if completed
 
-                   .progress-text 100%
 
-                 else if isCurrentStep
 
-                   .progress-text {{progress}}%
 
-                 else
 
-                   .progress-text 0%
 
-             if isCurrentStep
 
-               .step-progress-bar
 
-                 .progress-fill(style="width: {{progress}}%")
 
- template(name="cronBoardOperations")
 
-   .cron-board-operations
 
-     .board-operations-header
 
-       h2
 
-         i.fa.fa-tasks
 
-         | {{_ 'board-operations'}}
 
-       .board-operations-controls
 
-         button.btn.btn-success.js-refresh-board-operations
 
-           i.fa.fa-refresh
 
-           | {{_ 'refresh'}}
 
-         button.btn.btn-primary.js-start-test-operation
 
-           i.fa.fa-play
 
-           | {{_ 'start-test-operation'}}
 
-         button.btn.btn-info.js-force-board-scan
 
-           i.fa.fa-search
 
-           | {{_ 'force-board-scan'}}
 
-     
 
-     .board-operations-stats
 
-       .stats-grid
 
-         .stat-item
 
-           .stat-value {{operationStats.total}}
 
-           .stat-label {{_ 'total-operations'}}
 
-         .stat-item
 
-           .stat-value {{operationStats.running}}
 
-           .stat-label {{_ 'running'}}
 
-         .stat-item
 
-           .stat-value {{operationStats.completed}}
 
-           .stat-label {{_ 'completed'}}
 
-         .stat-item
 
-           .stat-value {{operationStats.error}}
 
-           .stat-label {{_ 'errors'}}
 
-         .stat-item
 
-           .stat-value {{queueStats.pending}}
 
-           .stat-label {{_ 'pending'}}
 
-         .stat-item
 
-           .stat-value {{queueStats.maxConcurrent}}
 
-           .stat-label {{_ 'max-concurrent'}}
 
-         .stat-item
 
-           .stat-value {{boardMigrationStats.unmigratedCount}}
 
-           .stat-label {{_ 'unmigrated-boards'}}
 
-         .stat-item
 
-           .stat-value {{boardMigrationStats.isScanning}}
 
-           .stat-label {{_ 'scanning-status'}}
 
-     
 
-     .system-resources
 
-       .resource-item
 
-         .resource-label {{_ 'cpu-usage'}}
 
-         .resource-bar
 
-           .resource-fill(style="width: {{systemResources.cpuUsage}}%")
 
-         .resource-value {{systemResources.cpuUsage}}%
 
-       .resource-item
 
-         .resource-label {{_ 'memory-usage'}}
 
-         .resource-bar
 
-           .resource-fill(style="width: {{systemResources.memoryUsage}}%")
 
-         .resource-value {{systemResources.memoryUsage}}%
 
-       .resource-item
 
-         .resource-label {{_ 'cpu-cores'}}
 
-         .resource-value {{systemResources.cpuCores}}
 
-     
 
-     .board-operations-search
 
-       .search-box
 
-         input.form-control.js-search-board-operations(type="text" placeholder="{{_ 'search-boards-or-operations'}}")
 
-         i.fa.fa-search.search-icon
 
-     
 
-     .board-operations-list
 
-       .operations-header
 
-         h3 {{_ 'board-operations'}} ({{pagination.total}})
 
-         .pagination-info
 
-           | {{_ 'showing'}} {{pagination.start}} - {{pagination.end}} {{_ 'of'}} {{pagination.total}}
 
-       
 
-       .operations-table
 
-         table.table.table-striped
 
-           thead
 
-             tr
 
-               th {{_ 'board-id'}}
 
-               th {{_ 'operation-type'}}
 
-               th {{_ 'status'}}
 
-               th {{_ 'progress'}}
 
-               th {{_ 'start-time'}}
 
-               th {{_ 'duration'}}
 
-               th {{_ 'actions'}}
 
-           tbody
 
-             each boardOperations
 
-               tr
 
-                 td
 
-                   .board-id {{boardId}}
 
-                 td
 
-                   .operation-type {{operationType}}
 
-                 td
 
-                   span.status-badge(class="status-{{status}}") {{status}}
 
-                 td
 
-                   .progress-container
 
-                     .progress-bar
 
-                       .progress-fill(style="width: {{progress}}%")
 
-                     .progress-text {{progress}}%
 
-                 td {{formatDateTime startTime}}
 
-                 td {{formatDuration startTime endTime}}
 
-                 td
 
-                   .btn-group
 
-                     if isRunning
 
-                       button.btn.btn-sm.btn-warning.js-pause-operation(data-operation="{{id}}")
 
-                         i.fa.fa-pause
 
-                     else
 
-                       button.btn.btn-sm.btn-success.js-resume-operation(data-operation="{{id}}")
 
-                         i.fa.fa-play
 
-                     button.btn.btn-sm.btn-danger.js-stop-operation(data-operation="{{id}}")
 
-                       i.fa.fa-stop
 
-                     button.btn.btn-sm.btn-info.js-view-details(data-operation="{{id}}")
 
-                       i.fa.fa-info-circle
 
-       
 
-       .pagination
 
-         if pagination.hasPrev
 
-           button.btn.btn-sm.btn-default.js-prev-page
 
-             i.fa.fa-chevron-left
 
-             | {{_ 'previous'}}
 
-         .page-info
 
-           | {{_ 'page'}} {{pagination.page}} {{_ 'of'}} {{pagination.totalPages}}
 
-         if pagination.hasNext
 
-           button.btn.btn-sm.btn-default.js-next-page
 
-             | {{_ 'next'}}
 
-             i.fa.fa-chevron-right
 
- template(name="cronJobs")
 
-   .cron-jobs
 
-     .jobs-header
 
-       h2
 
-         i.fa.fa-clock-o
 
-         | {{_ 'cron-jobs'}}
 
-       .jobs-controls
 
-         button.btn.btn-success.js-refresh-jobs
 
-           i.fa.fa-refresh
 
-           | {{_ 'refresh'}}
 
-     
 
-     .jobs-list
 
-       table.table.table-striped
 
-         thead
 
-           tr
 
-             th {{_ 'job-name'}}
 
-             th {{_ 'schedule'}}
 
-             th {{_ 'status'}}
 
-             th {{_ 'last-run'}}
 
-             th {{_ 'next-run'}}
 
-             th {{_ 'actions'}}
 
-         tbody
 
-           each cronJobs
 
-             tr
 
-               td {{name}}
 
-               td {{schedule}}
 
-               td
 
-                 span.status-badge(class="status-{{status}}") {{status}}
 
-               td {{formatDate lastRun}}
 
-               td {{formatDate nextRun}}
 
-               td
 
-                 .btn-group
 
-                   if isRunning
 
-                     button.btn.btn-sm.btn-warning.js-pause-job(data-job="{{name}}")
 
-                       i.fa.fa-pause
 
-                   else
 
-                     button.btn.btn-sm.btn-success.js-start-job(data-job="{{name}}")
 
-                       i.fa.fa-play
 
-                   button.btn.btn-sm.btn-danger.js-stop-job(data-job="{{name}}")
 
-                     i.fa.fa-stop
 
-                   button.btn.btn-sm.btn-danger.js-remove-job(data-job="{{name}}")
 
-                     i.fa.fa-trash
 
- template(name="cronAddJob")
 
-   .cron-add-job
 
-     .add-job-header
 
-       h2
 
-         i.fa.fa-plus
 
-         | {{_ 'add-cron-job'}}
 
-     
 
-     .add-job-form
 
-       form.js-add-cron-job-form
 
-         .form-group
 
-           label(for="job-name") {{_ 'job-name'}}
 
-           input.form-control#job-name(type="text" name="name" required)
 
-         
 
-         .form-group
 
-           label(for="job-description") {{_ 'job-description'}}
 
-           textarea.form-control#job-description(name="description" rows="3")
 
-         
 
-         .form-group
 
-           label(for="job-schedule") {{_ 'schedule'}}
 
-           select.form-control#job-schedule(name="schedule")
 
-             option(value="every 1 minute") {{_ 'every-1-minute'}}
 
-             option(value="every 5 minutes") {{_ 'every-5-minutes'}}
 
-             option(value="every 10 minutes") {{_ 'every-10-minutes'}}
 
-             option(value="every 30 minutes") {{_ 'every-30-minutes'}}
 
-             option(value="every 1 hour") {{_ 'every-1-hour'}}
 
-             option(value="every 6 hours") {{_ 'every-6-hours'}}
 
-             option(value="every 1 day") {{_ 'every-1-day'}}
 
-             option(value="once") {{_ 'run-once'}}
 
-         
 
-         .form-group
 
-           label(for="job-weight") {{_ 'weight'}}
 
-           input.form-control#job-weight(type="number" name="weight" value="1" min="1" max="10")
 
-         
 
-         .form-actions
 
-           button.btn.btn-primary(type="submit")
 
-             i.fa.fa-plus
 
-             | {{_ 'add-job'}}
 
-           button.btn.btn-default.js-cancel-add-job
 
-             i.fa.fa-times
 
-             | {{_ 'cancel'}}
 
 
  |