django-cfg 1.4.88__py3-none-any.whl → 1.4.89__py3-none-any.whl
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.
Potentially problematic release.
This version of django-cfg might be problematic. Click here for more details.
- django_cfg/__init__.py +1 -1
- django_cfg/apps/centrifugo/views/__init__.py +0 -2
- django_cfg/apps/dashboard/services/__init__.py +2 -0
- django_cfg/apps/dashboard/services/overview_service.py +205 -0
- django_cfg/apps/frontend/test_routing.py +134 -0
- django_cfg/apps/frontend/views.py +69 -28
- django_cfg/apps/urls.py +0 -1
- django_cfg/core/builders/apps_builder.py +0 -58
- django_cfg/modules/django_unfold/__init__.py +5 -24
- django_cfg/modules/django_unfold/models/__init__.py +0 -23
- django_cfg/modules/django_unfold/models/config.py +11 -65
- django_cfg/modules/django_unfold/{dashboard.py → navigation.py} +21 -152
- django_cfg/modules/django_unfold/tailwind.py +2 -4
- django_cfg/pyproject.toml +1 -1
- django_cfg/registry/third_party.py +0 -9
- django_cfg/routing/callbacks.py +1 -43
- django_cfg/static/frontend/admin/404/index.html +1 -1
- django_cfg/static/frontend/admin/404.html +1 -1
- django_cfg/static/frontend/admin/500/index.html +1 -1
- django_cfg/static/frontend/admin/_next/static/{D_d9HRw5Yn7BRHAX5q89_ → 0sN9ktsgXH48ygtGSrhfu}/_buildManifest.js +1 -1
- django_cfg/static/frontend/admin/_next/static/chunks/50314-9443faa6df24aebf.js +1 -0
- django_cfg/static/frontend/admin/_next/static/chunks/pages/{_app-1c0fff0f59a6d683.js → _app-c7dcd3aa616fab68.js} +1 -1
- django_cfg/static/frontend/admin/_next/static/chunks/pages/private/{centrifugo-44a8313fa040e9ad.js → centrifugo-f9ecbc3ae0052a03.js} +1 -1
- django_cfg/static/frontend/admin/auth/index.html +1 -1
- django_cfg/static/frontend/admin/index.html +1 -1
- django_cfg/static/frontend/admin/legal/cookies/index.html +1 -1
- django_cfg/static/frontend/admin/legal/privacy/index.html +1 -1
- django_cfg/static/frontend/admin/legal/security/index.html +1 -1
- django_cfg/static/frontend/admin/legal/terms/index.html +1 -1
- django_cfg/static/frontend/admin/private/centrifugo/index.html +1 -1
- django_cfg/static/frontend/admin/private/index.html +1 -1
- django_cfg/static/frontend/admin/private/profile/index.html +1 -1
- django_cfg/static/frontend/admin/private/ui/index.html +2 -2
- {django_cfg-1.4.88.dist-info → django_cfg-1.4.89.dist-info}/METADATA +1 -1
- {django_cfg-1.4.88.dist-info → django_cfg-1.4.89.dist-info}/RECORD +39 -143
- django_cfg/apps/centrifugo/static/django_cfg_centrifugo/css/dashboard.css +0 -260
- django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/live_channels.mjs +0 -313
- django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/live_testing.mjs +0 -803
- django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/main.mjs +0 -341
- django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/overview.mjs +0 -432
- django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/testing.mjs +0 -33
- django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/websocket.mjs +0 -210
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/channels_content.html +0 -46
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/live_channels_content.html +0 -123
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/overview_content.html +0 -45
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/publishes_content.html +0 -84
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/stat_cards.html +0 -53
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/system_status.html +0 -91
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/tab_navigation.html +0 -29
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/testing_tools.html +0 -415
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/layout/base.html +0 -61
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/pages/dashboard.html +0 -58
- django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/tags/connection_script.html +0 -48
- django_cfg/apps/centrifugo/templatetags/__init__.py +0 -1
- django_cfg/apps/centrifugo/templatetags/centrifugo_tags.py +0 -81
- django_cfg/apps/centrifugo/urls_admin.py +0 -20
- django_cfg/apps/centrifugo/views/dashboard.py +0 -28
- django_cfg/modules/django_dashboard/__init__.py +0 -23
- django_cfg/modules/django_dashboard/components.py +0 -312
- django_cfg/modules/django_dashboard/debug.py +0 -174
- django_cfg/modules/django_dashboard/management/__init__.py +0 -0
- django_cfg/modules/django_dashboard/management/commands/__init__.py +0 -0
- django_cfg/modules/django_dashboard/management/commands/debug_dashboard.py +0 -109
- django_cfg/modules/django_dashboard/sections/__init__.py +0 -1
- django_cfg/modules/django_dashboard/sections/base.py +0 -129
- django_cfg/modules/django_dashboard/sections/commands.py +0 -33
- django_cfg/modules/django_dashboard/sections/documentation.py +0 -393
- django_cfg/modules/django_dashboard/sections/overview.py +0 -398
- django_cfg/modules/django_dashboard/sections/stats.py +0 -48
- django_cfg/modules/django_dashboard/sections/system.py +0 -74
- django_cfg/modules/django_dashboard/sections/widgets.py +0 -222
- django_cfg/modules/django_unfold/callbacks/__init__.py +0 -9
- django_cfg/modules/django_unfold/callbacks/actions.py +0 -51
- django_cfg/modules/django_unfold/callbacks/apizones.py +0 -122
- django_cfg/modules/django_unfold/callbacks/base.py +0 -290
- django_cfg/modules/django_unfold/callbacks/charts.py +0 -223
- django_cfg/modules/django_unfold/callbacks/commands.py +0 -40
- django_cfg/modules/django_unfold/callbacks/main.py +0 -322
- django_cfg/modules/django_unfold/callbacks/statistics.py +0 -240
- django_cfg/modules/django_unfold/callbacks/system.py +0 -180
- django_cfg/modules/django_unfold/callbacks/users.py +0 -65
- django_cfg/modules/django_unfold/models/dashboard.py +0 -207
- django_cfg/modules/django_unfold/models/tabs.py +0 -26
- django_cfg/modules/django_unfold/models.py +0 -98
- django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +0 -102
- django_cfg/static/frontend/admin/_next/static/chunks/50314-5ec79b293c2283dd.js +0 -1
- django_cfg/templates/admin/sections/commands_section.html +0 -5
- django_cfg/templates/admin/sections/documentation_section.html +0 -5
- django_cfg/templates/admin/sections/overview_section.html +0 -5
- django_cfg/templates/admin/sections/stats_section.html +0 -5
- django_cfg/templates/admin/sections/system_section.html +0 -5
- django_cfg/templates/admin/sections/widgets_section.html +0 -11
- django_cfg/templates/admin_old/components/action_grid.html +0 -49
- django_cfg/templates/admin_old/components/card.html +0 -50
- django_cfg/templates/admin_old/components/data_table.html +0 -67
- django_cfg/templates/admin_old/components/metric_card.html +0 -39
- django_cfg/templates/admin_old/components/modal.html +0 -58
- django_cfg/templates/admin_old/components/progress_bar.html +0 -20
- django_cfg/templates/admin_old/components/section_header.html +0 -26
- django_cfg/templates/admin_old/components/stat_item.html +0 -32
- django_cfg/templates/admin_old/components/stats_grid.html +0 -72
- django_cfg/templates/admin_old/components/status_badge.html +0 -28
- django_cfg/templates/admin_old/components/user_avatar.html +0 -27
- django_cfg/templates/admin_old/constance/change_list.html +0 -74
- django_cfg/templates/admin_old/constance/includes/default_value.html +0 -24
- django_cfg/templates/admin_old/constance/includes/fieldset_header.html +0 -15
- django_cfg/templates/admin_old/constance/includes/results_list.html +0 -16
- django_cfg/templates/admin_old/constance/includes/setting_row.html +0 -50
- django_cfg/templates/admin_old/constance/includes/table_headers.html +0 -10
- django_cfg/templates/admin_old/examples/component_class_example.html +0 -156
- django_cfg/templates/admin_old/import_export/change_list_export.html +0 -24
- django_cfg/templates/admin_old/import_export/change_list_import.html +0 -24
- django_cfg/templates/admin_old/import_export/change_list_import_export.html +0 -34
- django_cfg/templates/admin_old/index.html +0 -80
- django_cfg/templates/admin_old/index_new.html +0 -119
- django_cfg/templates/admin_old/layouts/base_dashboard.html +0 -62
- django_cfg/templates/admin_old/layouts/dashboard_with_tabs.html +0 -176
- django_cfg/templates/admin_old/sections/commands_section.html +0 -549
- django_cfg/templates/admin_old/sections/documentation_section.html +0 -152
- django_cfg/templates/admin_old/sections/overview_section.html +0 -112
- django_cfg/templates/admin_old/sections/stats_section.html +0 -35
- django_cfg/templates/admin_old/sections/system_section.html +0 -99
- django_cfg/templates/admin_old/sections/widgets_section.html +0 -129
- django_cfg/templates/admin_old/snippets/components/activity_tracker.html +0 -70
- django_cfg/templates/admin_old/snippets/components/charts_section.html +0 -113
- django_cfg/templates/admin_old/snippets/components/django_commands.html +0 -270
- django_cfg/templates/admin_old/snippets/components/quick_actions.html +0 -66
- django_cfg/templates/admin_old/snippets/components/recent_activity_improved.html +0 -25
- django_cfg/templates/admin_old/snippets/components/recent_users_table.html +0 -102
- django_cfg/templates/admin_old/snippets/components/stats_cards.html +0 -4
- django_cfg/templates/admin_old/snippets/components/stats_tiles.html +0 -92
- django_cfg/templates/admin_old/snippets/components/system_health.html +0 -22
- django_cfg/templates/admin_old/snippets/components/system_metrics.html +0 -199
- django_cfg/templates/admin_old/snippets/components/user_permissions.html +0 -57
- django_cfg/templates/admin_old/snippets/tabs/app_stats_tab.html +0 -201
- django_cfg/templates/admin_old/snippets/tabs/commands_tab.html +0 -114
- django_cfg/templates/admin_old/snippets/tabs/documentation_tab.html +0 -42
- django_cfg/templates/admin_old/snippets/tabs/overview_tab.html +0 -116
- django_cfg/templates/admin_old/snippets/tabs/stats_tab.html +0 -89
- django_cfg/templates/admin_old/snippets/tabs/users_tab.html +0 -51
- django_cfg/templates/admin_old/snippets/tabs/widgets_tab.html +0 -38
- django_cfg/templates/admin_old/snippets/zones/zones_table.html +0 -176
- /django_cfg/static/frontend/admin/_next/static/{D_d9HRw5Yn7BRHAX5q89_ → 0sN9ktsgXH48ygtGSrhfu}/_ssgManifest.js +0 -0
- {django_cfg-1.4.88.dist-info → django_cfg-1.4.89.dist-info}/WHEEL +0 -0
- {django_cfg-1.4.88.dist-info → django_cfg-1.4.89.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.4.88.dist-info → django_cfg-1.4.89.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
<!-- Channels Stats Tab -->
|
|
2
|
-
<div id="channels-tab" class="tab-panel hidden">
|
|
3
|
-
<div class="bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700">
|
|
4
|
-
<!-- Table -->
|
|
5
|
-
<div class="overflow-x-auto">
|
|
6
|
-
<table class="w-full">
|
|
7
|
-
<thead class="bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600">
|
|
8
|
-
<tr>
|
|
9
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
10
|
-
Channel
|
|
11
|
-
</th>
|
|
12
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
13
|
-
Total Publishes
|
|
14
|
-
</th>
|
|
15
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
16
|
-
Success Rate
|
|
17
|
-
</th>
|
|
18
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
19
|
-
Avg Duration
|
|
20
|
-
</th>
|
|
21
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
22
|
-
Avg ACKs
|
|
23
|
-
</th>
|
|
24
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
25
|
-
Last Activity
|
|
26
|
-
</th>
|
|
27
|
-
</tr>
|
|
28
|
-
</thead>
|
|
29
|
-
<tbody id="channels-table-body" class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">
|
|
30
|
-
<tr>
|
|
31
|
-
<td colspan="6" class="px-4 py-8 text-center text-gray-500 dark:text-gray-400">
|
|
32
|
-
Loading...
|
|
33
|
-
</td>
|
|
34
|
-
</tr>
|
|
35
|
-
</tbody>
|
|
36
|
-
</table>
|
|
37
|
-
</div>
|
|
38
|
-
|
|
39
|
-
<!-- Footer -->
|
|
40
|
-
<div class="p-4 border-t border-gray-200 dark:border-gray-700">
|
|
41
|
-
<div class="text-sm text-gray-600 dark:text-gray-400">
|
|
42
|
-
Showing statistics for the last 24 hours
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/live_channels_content.html
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
<!-- Live Channels Tab (from Centrifugo Server) -->
|
|
2
|
-
<div id="live-channels-tab" class="tab-panel hidden">
|
|
3
|
-
<!-- Header with Controls -->
|
|
4
|
-
<div class="bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 p-4 mb-4">
|
|
5
|
-
<div class="flex items-center justify-between flex-wrap gap-4">
|
|
6
|
-
<div class="flex items-center gap-3">
|
|
7
|
-
<span class="material-icons text-purple-600 dark:text-purple-400">live_tv</span>
|
|
8
|
-
<div>
|
|
9
|
-
<h3 class="text-lg font-semibold text-gray-900 dark:text-white">Active Channels</h3>
|
|
10
|
-
<p class="text-sm text-gray-600 dark:text-gray-400">Real-time data from Centrifugo server</p>
|
|
11
|
-
</div>
|
|
12
|
-
</div>
|
|
13
|
-
<div class="flex items-center gap-3">
|
|
14
|
-
<input type="text"
|
|
15
|
-
id="live-channel-pattern"
|
|
16
|
-
placeholder="Filter pattern (e.g., user:*)"
|
|
17
|
-
class="px-3 py-2 bg-gray-50 dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-lg text-sm text-gray-900 dark:text-white focus:ring-2 focus:ring-purple-500 dark:focus:ring-purple-400">
|
|
18
|
-
<button onclick="window.centrifugoDashboard.liveChannelsModule.loadLiveChannels()"
|
|
19
|
-
class="px-4 py-2 bg-purple-600 hover:bg-purple-700 text-white rounded-lg text-sm font-medium flex items-center gap-2">
|
|
20
|
-
<span class="material-icons text-base">refresh</span>
|
|
21
|
-
Refresh
|
|
22
|
-
</button>
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
<!-- Channels Grid -->
|
|
28
|
-
<div id="live-channels-grid" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mb-4">
|
|
29
|
-
<!-- Channel cards will be dynamically inserted here -->
|
|
30
|
-
</div>
|
|
31
|
-
|
|
32
|
-
<!-- Empty State -->
|
|
33
|
-
<div id="live-channels-empty" class="bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 p-8 text-center hidden">
|
|
34
|
-
<span class="material-icons text-6xl text-gray-300 dark:text-gray-600 mb-4">inbox</span>
|
|
35
|
-
<h3 class="text-lg font-medium text-gray-900 dark:text-white mb-2">No Active Channels</h3>
|
|
36
|
-
<p class="text-sm text-gray-600 dark:text-gray-400">There are currently no active channels on the Centrifugo server.</p>
|
|
37
|
-
</div>
|
|
38
|
-
|
|
39
|
-
<!-- Detailed View Modal (for presence) -->
|
|
40
|
-
<div id="channel-details-modal" class="hidden fixed inset-0 bg-black bg-opacity-50 z-50 flex items-center justify-center p-4">
|
|
41
|
-
<div class="bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 max-w-4xl w-full max-h-[90vh] overflow-hidden flex flex-col">
|
|
42
|
-
<!-- Modal Header -->
|
|
43
|
-
<div class="p-6 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between">
|
|
44
|
-
<div>
|
|
45
|
-
<h3 class="text-xl font-bold text-gray-900 dark:text-white" id="modal-channel-name">Channel Details</h3>
|
|
46
|
-
<p class="text-sm text-gray-600 dark:text-gray-400 mt-1">Live presence and channel information</p>
|
|
47
|
-
</div>
|
|
48
|
-
<button onclick="window.centrifugoDashboard.liveChannelsModule.closeModal()"
|
|
49
|
-
class="text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200">
|
|
50
|
-
<span class="material-icons">close</span>
|
|
51
|
-
</button>
|
|
52
|
-
</div>
|
|
53
|
-
|
|
54
|
-
<!-- Modal Content -->
|
|
55
|
-
<div class="p-6 overflow-y-auto flex-1">
|
|
56
|
-
<!-- Channel Stats -->
|
|
57
|
-
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 mb-6">
|
|
58
|
-
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-4">
|
|
59
|
-
<p class="text-xs text-gray-600 dark:text-gray-400 mb-1">Clients</p>
|
|
60
|
-
<p class="text-2xl font-bold text-gray-900 dark:text-white" id="modal-clients-count">-</p>
|
|
61
|
-
</div>
|
|
62
|
-
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-4">
|
|
63
|
-
<p class="text-xs text-gray-600 dark:text-gray-400 mb-1">Unique Users</p>
|
|
64
|
-
<p class="text-2xl font-bold text-gray-900 dark:text-white" id="modal-users-count">-</p>
|
|
65
|
-
</div>
|
|
66
|
-
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-4">
|
|
67
|
-
<p class="text-xs text-gray-600 dark:text-gray-400 mb-1">History Items</p>
|
|
68
|
-
<p class="text-2xl font-bold text-gray-900 dark:text-white" id="modal-history-count">-</p>
|
|
69
|
-
</div>
|
|
70
|
-
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-4">
|
|
71
|
-
<p class="text-xs text-gray-600 dark:text-gray-400 mb-1">Status</p>
|
|
72
|
-
<p class="text-sm font-medium text-green-600 dark:text-green-400" id="modal-status">Active</p>
|
|
73
|
-
</div>
|
|
74
|
-
</div>
|
|
75
|
-
|
|
76
|
-
<!-- Presence List -->
|
|
77
|
-
<div class="mb-6">
|
|
78
|
-
<h4 class="text-lg font-semibold text-gray-900 dark:text-white mb-3 flex items-center gap-2">
|
|
79
|
-
<span class="material-icons text-xl">people</span>
|
|
80
|
-
Connected Clients
|
|
81
|
-
</h4>
|
|
82
|
-
<div class="overflow-x-auto">
|
|
83
|
-
<table class="w-full">
|
|
84
|
-
<thead class="bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600">
|
|
85
|
-
<tr>
|
|
86
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase">User ID</th>
|
|
87
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase">Client ID</th>
|
|
88
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase">Connection Info</th>
|
|
89
|
-
</tr>
|
|
90
|
-
</thead>
|
|
91
|
-
<tbody id="modal-presence-list" class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">
|
|
92
|
-
<tr>
|
|
93
|
-
<td colspan="3" class="px-4 py-8 text-center text-gray-500 dark:text-gray-400">
|
|
94
|
-
Loading...
|
|
95
|
-
</td>
|
|
96
|
-
</tr>
|
|
97
|
-
</tbody>
|
|
98
|
-
</table>
|
|
99
|
-
</div>
|
|
100
|
-
</div>
|
|
101
|
-
|
|
102
|
-
<!-- Recent History -->
|
|
103
|
-
<div>
|
|
104
|
-
<h4 class="text-lg font-semibold text-gray-900 dark:text-white mb-3 flex items-center gap-2">
|
|
105
|
-
<span class="material-icons text-xl">history</span>
|
|
106
|
-
Recent Messages
|
|
107
|
-
</h4>
|
|
108
|
-
<div class="space-y-3" id="modal-history-list">
|
|
109
|
-
<p class="text-sm text-gray-500 dark:text-gray-400 text-center py-4">Loading...</p>
|
|
110
|
-
</div>
|
|
111
|
-
</div>
|
|
112
|
-
</div>
|
|
113
|
-
|
|
114
|
-
<!-- Modal Footer -->
|
|
115
|
-
<div class="p-4 border-t border-gray-200 dark:border-gray-700 flex justify-end gap-3">
|
|
116
|
-
<button onclick="window.centrifugoDashboard.liveChannelsModule.closeModal()"
|
|
117
|
-
class="px-4 py-2 bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300 rounded-lg text-sm font-medium hover:bg-gray-200 dark:hover:bg-gray-600">
|
|
118
|
-
Close
|
|
119
|
-
</button>
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
122
|
-
</div>
|
|
123
|
-
</div>
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
<!-- Overview Tab (Active by default) -->
|
|
2
|
-
<div id="overview-tab" class="tab-panel">
|
|
3
|
-
<!-- Charts Row -->
|
|
4
|
-
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-6">
|
|
5
|
-
<!-- Publish Timeline Chart -->
|
|
6
|
-
<div class="bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700">
|
|
7
|
-
<h3 class="text-lg font-bold text-gray-900 dark:text-white mb-4 flex items-center">
|
|
8
|
-
<span class="material-icons mr-2 text-purple-500">timeline</span>
|
|
9
|
-
Publish Timeline (24h)
|
|
10
|
-
</h3>
|
|
11
|
-
<canvas id="publish-timeline-chart" height="200"></canvas>
|
|
12
|
-
</div>
|
|
13
|
-
|
|
14
|
-
<!-- Success/Failure Breakdown -->
|
|
15
|
-
<div class="bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700">
|
|
16
|
-
<h3 class="text-lg font-bold text-gray-900 dark:text-white mb-4 flex items-center">
|
|
17
|
-
<span class="material-icons mr-2 text-purple-500">pie_chart</span>
|
|
18
|
-
Success/Failure Breakdown
|
|
19
|
-
</h3>
|
|
20
|
-
<canvas id="status-breakdown-chart" height="200"></canvas>
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
|
|
24
|
-
<!-- ACK Statistics -->
|
|
25
|
-
<div class="bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700">
|
|
26
|
-
<h3 class="text-lg font-bold text-gray-900 dark:text-white mb-4 flex items-center">
|
|
27
|
-
<span class="material-icons mr-2 text-purple-500">verified</span>
|
|
28
|
-
ACK Statistics
|
|
29
|
-
</h3>
|
|
30
|
-
<div id="ack-stats-content" class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
|
31
|
-
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-4">
|
|
32
|
-
<div class="text-sm text-gray-600 dark:text-gray-400 mb-1">Total ACKs Received</div>
|
|
33
|
-
<div class="text-2xl font-bold text-gray-900 dark:text-white" id="total-acks">0</div>
|
|
34
|
-
</div>
|
|
35
|
-
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-4">
|
|
36
|
-
<div class="text-sm text-gray-600 dark:text-gray-400 mb-1">Avg ACKs per Publish</div>
|
|
37
|
-
<div class="text-2xl font-bold text-gray-900 dark:text-white" id="avg-acks">0.0</div>
|
|
38
|
-
</div>
|
|
39
|
-
<div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-4">
|
|
40
|
-
<div class="text-sm text-gray-600 dark:text-gray-400 mb-1">ACK Tracking Rate</div>
|
|
41
|
-
<div class="text-2xl font-bold text-gray-900 dark:text-white"><span id="ack-rate">0</span>%</div>
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/publishes_content.html
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
<!-- Recent Publishes Tab -->
|
|
2
|
-
<div id="publishes-tab" class="tab-panel hidden">
|
|
3
|
-
<div class="bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700">
|
|
4
|
-
<!-- Filters -->
|
|
5
|
-
<div class="p-4 border-b border-gray-200 dark:border-gray-700">
|
|
6
|
-
<div class="flex flex-wrap gap-4">
|
|
7
|
-
<div class="flex-1 min-w-[200px]">
|
|
8
|
-
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
|
|
9
|
-
Filter by Channel
|
|
10
|
-
</label>
|
|
11
|
-
<select id="publish-channel-filter" class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:ring-purple-500 focus:border-purple-500">
|
|
12
|
-
<option value="">All Channels</option>
|
|
13
|
-
</select>
|
|
14
|
-
</div>
|
|
15
|
-
<div class="flex-1 min-w-[200px]">
|
|
16
|
-
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
|
|
17
|
-
Filter by Status
|
|
18
|
-
</label>
|
|
19
|
-
<select id="publish-status-filter" class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:ring-purple-500 focus:border-purple-500">
|
|
20
|
-
<option value="">All Statuses</option>
|
|
21
|
-
<option value="success">Success</option>
|
|
22
|
-
<option value="failed">Failed</option>
|
|
23
|
-
<option value="timeout">Timeout</option>
|
|
24
|
-
</select>
|
|
25
|
-
</div>
|
|
26
|
-
<div class="flex items-end">
|
|
27
|
-
<button id="apply-publish-filters" class="px-4 py-2 bg-purple-600 hover:bg-purple-700 text-white rounded-md font-medium transition-colors">
|
|
28
|
-
Apply Filters
|
|
29
|
-
</button>
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
<!-- Table -->
|
|
35
|
-
<div class="overflow-x-auto">
|
|
36
|
-
<table class="w-full">
|
|
37
|
-
<thead class="bg-gray-50 dark:bg-gray-700 border-b border-gray-200 dark:border-gray-600">
|
|
38
|
-
<tr>
|
|
39
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
40
|
-
Timestamp
|
|
41
|
-
</th>
|
|
42
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
43
|
-
Message ID
|
|
44
|
-
</th>
|
|
45
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
46
|
-
Channel
|
|
47
|
-
</th>
|
|
48
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
49
|
-
Status
|
|
50
|
-
</th>
|
|
51
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
52
|
-
ACKs
|
|
53
|
-
</th>
|
|
54
|
-
<th class="px-4 py-3 text-left text-xs font-medium text-gray-600 dark:text-gray-300 uppercase tracking-wider">
|
|
55
|
-
Duration
|
|
56
|
-
</th>
|
|
57
|
-
</tr>
|
|
58
|
-
</thead>
|
|
59
|
-
<tbody id="publishes-table-body" class="bg-white dark:bg-gray-800 divide-y divide-gray-200 dark:divide-gray-700">
|
|
60
|
-
<tr>
|
|
61
|
-
<td colspan="6" class="px-4 py-8 text-center text-gray-500 dark:text-gray-400">
|
|
62
|
-
Loading...
|
|
63
|
-
</td>
|
|
64
|
-
</tr>
|
|
65
|
-
</tbody>
|
|
66
|
-
</table>
|
|
67
|
-
</div>
|
|
68
|
-
|
|
69
|
-
<!-- Pagination -->
|
|
70
|
-
<div class="p-4 border-t border-gray-200 dark:border-gray-700 flex justify-between items-center">
|
|
71
|
-
<div class="text-sm text-gray-600 dark:text-gray-400">
|
|
72
|
-
Showing <span id="publishes-showing">0</span> publishes
|
|
73
|
-
</div>
|
|
74
|
-
<div class="flex gap-2">
|
|
75
|
-
<button id="publishes-prev-page" class="px-3 py-1 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 rounded hover:bg-gray-300 dark:hover:bg-gray-600 disabled:opacity-50" disabled>
|
|
76
|
-
Previous
|
|
77
|
-
</button>
|
|
78
|
-
<button id="publishes-next-page" class="px-3 py-1 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-gray-300 rounded hover:bg-gray-300 dark:hover:bg-gray-600 disabled:opacity-50" disabled>
|
|
79
|
-
Next
|
|
80
|
-
</button>
|
|
81
|
-
</div>
|
|
82
|
-
</div>
|
|
83
|
-
</div>
|
|
84
|
-
</div>
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
<!-- Overview Stats Cards -->
|
|
2
|
-
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
|
|
3
|
-
<!-- Total Publishes -->
|
|
4
|
-
<div class="stat-card bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700">
|
|
5
|
-
<div class="flex items-center justify-between mb-4">
|
|
6
|
-
<span class="material-icons text-4xl text-purple-500 dark:text-purple-400">publish</span>
|
|
7
|
-
<span class="text-xs text-gray-600 dark:text-gray-400">Today</span>
|
|
8
|
-
</div>
|
|
9
|
-
<h3 class="text-2xl font-bold text-gray-900 dark:text-white mb-1" id="total-publishes">
|
|
10
|
-
0
|
|
11
|
-
</h3>
|
|
12
|
-
<p class="text-sm text-gray-600 dark:text-gray-400">Total Publishes</p>
|
|
13
|
-
<div class="mt-2 flex items-center text-xs">
|
|
14
|
-
<span id="publish-trend" class="text-green-600 dark:text-green-400"></span>
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<!-- Success Rate -->
|
|
19
|
-
<div class="stat-card bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700">
|
|
20
|
-
<div class="flex items-center justify-between mb-4">
|
|
21
|
-
<span class="material-icons text-4xl text-green-500 dark:text-green-400">check_circle</span>
|
|
22
|
-
<span class="text-xs text-gray-600 dark:text-gray-400">Rate</span>
|
|
23
|
-
</div>
|
|
24
|
-
<h3 class="text-2xl font-bold mb-1" id="success-rate-value">
|
|
25
|
-
<span class="text-gray-900 dark:text-white">0</span><span class="text-lg text-gray-600 dark:text-gray-400">%</span>
|
|
26
|
-
</h3>
|
|
27
|
-
<p class="text-sm text-gray-600 dark:text-gray-400">Success Rate</p>
|
|
28
|
-
</div>
|
|
29
|
-
|
|
30
|
-
<!-- Average Duration -->
|
|
31
|
-
<div class="stat-card bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700">
|
|
32
|
-
<div class="flex items-center justify-between mb-4">
|
|
33
|
-
<span class="material-icons text-4xl text-yellow-500 dark:text-yellow-400">timer</span>
|
|
34
|
-
<span class="text-xs text-gray-600 dark:text-gray-400">Average</span>
|
|
35
|
-
</div>
|
|
36
|
-
<h3 class="text-2xl font-bold text-gray-900 dark:text-white mb-1">
|
|
37
|
-
<span id="avg-duration">0</span><span class="text-lg text-gray-600 dark:text-gray-400">ms</span>
|
|
38
|
-
</h3>
|
|
39
|
-
<p class="text-sm text-gray-600 dark:text-gray-400">Avg Duration</p>
|
|
40
|
-
</div>
|
|
41
|
-
|
|
42
|
-
<!-- Failed/Timeout -->
|
|
43
|
-
<div class="stat-card bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700">
|
|
44
|
-
<div class="flex items-center justify-between mb-4">
|
|
45
|
-
<span class="material-icons text-4xl text-red-500 dark:text-red-400">error</span>
|
|
46
|
-
<span class="text-xs text-gray-600 dark:text-gray-400">Issues</span>
|
|
47
|
-
</div>
|
|
48
|
-
<h3 class="text-2xl font-bold text-gray-900 dark:text-white mb-1" id="failed-count">
|
|
49
|
-
0
|
|
50
|
-
</h3>
|
|
51
|
-
<p class="text-sm text-gray-600 dark:text-gray-400">Failed/Timeout</p>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
<!-- System Status -->
|
|
2
|
-
<div class="bg-white dark:bg-gray-800 rounded-lg p-6 border border-gray-200 dark:border-gray-700 mb-8">
|
|
3
|
-
<h2 class="text-xl font-bold text-gray-900 dark:text-white mb-4 flex items-center">
|
|
4
|
-
<span class="material-icons mr-2">health_and_safety</span>
|
|
5
|
-
System Status
|
|
6
|
-
<button onclick="window.centrifugoDashboard.loadServerInfo()"
|
|
7
|
-
class="ml-auto text-sm text-purple-600 dark:text-purple-400 hover:text-purple-700 dark:hover:text-purple-300 flex items-center gap-1">
|
|
8
|
-
<span class="material-icons text-base">refresh</span>
|
|
9
|
-
Refresh
|
|
10
|
-
</button>
|
|
11
|
-
</h2>
|
|
12
|
-
|
|
13
|
-
<!-- Live Server Stats Grid -->
|
|
14
|
-
<div id="server-status-grid" class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-4">
|
|
15
|
-
<!-- Centrifugo Server -->
|
|
16
|
-
<div class="flex items-start gap-3">
|
|
17
|
-
<span class="material-icons flex-shrink-0 text-2xl text-gray-500" id="server-status-icon">
|
|
18
|
-
dns
|
|
19
|
-
</span>
|
|
20
|
-
<div class="min-w-0 flex-1">
|
|
21
|
-
<p class="text-sm font-medium text-gray-900 dark:text-white">Centrifugo Server</p>
|
|
22
|
-
<p class="text-xs text-gray-600 dark:text-gray-400" id="server-version-text">
|
|
23
|
-
Checking...
|
|
24
|
-
</p>
|
|
25
|
-
<p class="text-xs text-purple-600 dark:text-purple-400 font-mono" id="server-uptime-text">
|
|
26
|
-
</p>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
|
|
30
|
-
<!-- Connected Clients -->
|
|
31
|
-
<div class="flex items-start gap-3">
|
|
32
|
-
<span class="material-icons flex-shrink-0 text-2xl text-green-500">
|
|
33
|
-
people
|
|
34
|
-
</span>
|
|
35
|
-
<div class="min-w-0 flex-1">
|
|
36
|
-
<p class="text-sm font-medium text-gray-900 dark:text-white">Live Connections</p>
|
|
37
|
-
<p class="text-2xl font-bold text-green-600 dark:text-green-400" id="live-clients-count">
|
|
38
|
-
-
|
|
39
|
-
</p>
|
|
40
|
-
<p class="text-xs text-gray-600 dark:text-gray-400">
|
|
41
|
-
<span id="live-users-count">-</span> unique users
|
|
42
|
-
</p>
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
<!-- Active Channels -->
|
|
47
|
-
<div class="flex items-start gap-3">
|
|
48
|
-
<span class="material-icons flex-shrink-0 text-2xl text-blue-500">
|
|
49
|
-
streaming
|
|
50
|
-
</span>
|
|
51
|
-
<div class="min-w-0 flex-1">
|
|
52
|
-
<p class="text-sm font-medium text-gray-900 dark:text-white">Active Channels</p>
|
|
53
|
-
<p class="text-2xl font-bold text-blue-600 dark:text-blue-400" id="live-channels-count">
|
|
54
|
-
-
|
|
55
|
-
</p>
|
|
56
|
-
<p class="text-xs text-gray-600 dark:text-gray-400">
|
|
57
|
-
<span id="live-subs-count">-</span> subscriptions
|
|
58
|
-
</p>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
|
|
63
|
-
<!-- Wrapper Configuration -->
|
|
64
|
-
<div id="system-status" class="grid grid-cols-1 md:grid-cols-2 gap-4 pt-4 border-t border-gray-200 dark:border-gray-700">
|
|
65
|
-
<!-- Wrapper Status -->
|
|
66
|
-
<div class="flex items-start gap-3">
|
|
67
|
-
<span class="material-icons flex-shrink-0 text-2xl text-gray-500" id="wrapper-status-icon">
|
|
68
|
-
link
|
|
69
|
-
</span>
|
|
70
|
-
<div class="min-w-0">
|
|
71
|
-
<p class="text-sm font-medium text-gray-900 dark:text-white">Python Wrapper</p>
|
|
72
|
-
<p class="text-xs text-gray-600 dark:text-gray-400 break-all" id="wrapper-status-text">
|
|
73
|
-
Checking...
|
|
74
|
-
</p>
|
|
75
|
-
</div>
|
|
76
|
-
</div>
|
|
77
|
-
|
|
78
|
-
<!-- Configuration Status -->
|
|
79
|
-
<div class="flex items-start gap-3">
|
|
80
|
-
<span class="material-icons flex-shrink-0 text-2xl text-gray-500" id="config-status-icon">
|
|
81
|
-
vpn_key
|
|
82
|
-
</span>
|
|
83
|
-
<div class="min-w-0">
|
|
84
|
-
<p class="text-sm font-medium text-gray-900 dark:text-white">Configuration</p>
|
|
85
|
-
<p class="text-xs text-gray-600 dark:text-gray-400" id="config-status-text">
|
|
86
|
-
Checking...
|
|
87
|
-
</p>
|
|
88
|
-
</div>
|
|
89
|
-
</div>
|
|
90
|
-
</div>
|
|
91
|
-
</div>
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
<!-- Tabs Navigation -->
|
|
2
|
-
<div class="border-b border-gray-200 dark:border-gray-700 mb-6">
|
|
3
|
-
<nav class="flex space-x-4">
|
|
4
|
-
<button class="tab-button active px-4 py-2 text-purple-600 dark:text-purple-400 border-b-2 border-purple-600 dark:border-purple-400 font-medium flex items-center gap-2" data-tab="overview">
|
|
5
|
-
<span class="material-icons text-sm">dashboard</span>
|
|
6
|
-
<span>Overview</span>
|
|
7
|
-
<span class="badge rounded-full bg-purple-100 dark:bg-purple-900 text-purple-800 dark:text-purple-200 px-2 py-1 text-xs" id="overview-count-badge">0</span>
|
|
8
|
-
</button>
|
|
9
|
-
<button class="tab-button px-4 py-2 text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-300 border-b-2 border-transparent font-medium flex items-center gap-2" data-tab="publishes">
|
|
10
|
-
<span class="material-icons text-sm">list</span>
|
|
11
|
-
<span>Recent Publishes</span>
|
|
12
|
-
<span class="badge rounded-full bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-200 px-2 py-1 text-xs" id="publishes-count-badge">0</span>
|
|
13
|
-
</button>
|
|
14
|
-
<button class="tab-button px-4 py-2 text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-300 border-b-2 border-transparent font-medium flex items-center gap-2" data-tab="channels">
|
|
15
|
-
<span class="material-icons text-sm">storage</span>
|
|
16
|
-
<span>Channels</span>
|
|
17
|
-
<span class="badge rounded-full bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-200 px-2 py-1 text-xs" id="channels-count-badge">0</span>
|
|
18
|
-
</button>
|
|
19
|
-
<button class="tab-button px-4 py-2 text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-300 border-b-2 border-transparent font-medium flex items-center gap-2" data-tab="live-channels">
|
|
20
|
-
<span class="material-icons text-sm">live_tv</span>
|
|
21
|
-
<span>Live Channels</span>
|
|
22
|
-
<span class="badge rounded-full bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-200 px-2 py-1 text-xs" id="live-channels-count-badge">0</span>
|
|
23
|
-
</button>
|
|
24
|
-
<button class="tab-button px-4 py-2 text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-300 border-b-2 border-transparent font-medium flex items-center gap-2" data-tab="usage-guide">
|
|
25
|
-
<span class="material-icons text-sm">science</span>
|
|
26
|
-
<span>Live Testing</span>
|
|
27
|
-
</button>
|
|
28
|
-
</nav>
|
|
29
|
-
</div>
|