const DEFAULT_NETWORK_QUALITY = {
label: '\u672a\u77e5',
statusIconClass: 'fas fa-question-circle text-gray-400',
statusTextClass: 'text-gray-400',
headerIconClass: 'fas fa-signal text-gray-400',
indicatorClass: 'w-2 h-2 bg-green-500 rounded-full animate-pulse',
connectionTextClass: 'text-gray-400'
};
const NETWORK_QUALITY_DISPLAY = {
excellent: {
label: '\u4f18\u79c0',
statusIconClass: 'fas fa-check-circle text-green-400',
statusTextClass: 'text-green-400',
headerIconClass: 'fas fa-signal text-green-400',
indicatorClass: 'w-2 h-2 bg-green-500 rounded-full animate-pulse',
connectionTextClass: 'text-green-400'
},
good: {
label: '\u826f\u597d',
statusIconClass: 'fas fa-signal text-blue-400',
statusTextClass: 'text-blue-400',
headerIconClass: 'fas fa-signal text-green-500',
indicatorClass: 'w-2 h-2 bg-green-500 rounded-full animate-pulse',
connectionTextClass: 'text-blue-400'
},
fair: {
label: '\u4e00\u822c',
statusIconClass: 'fas fa-exclamation-circle text-yellow-500',
statusTextClass: 'text-yellow-500',
headerIconClass: 'fas fa-signal text-yellow-400',
indicatorClass: 'w-2 h-2 bg-green-500 rounded-full animate-pulse',
connectionTextClass: 'text-yellow-500'
},
poor: {
label: '\u8f83\u5dee',
statusIconClass: 'fas fa-exclamation-triangle text-red-500',
statusTextClass: 'text-red-500',
headerIconClass: 'fas fa-signal text-red-400',
indicatorClass: 'w-2 h-2 bg-green-500 rounded-full animate-pulse',
connectionTextClass: 'text-red-500'
},
no_signal: {
label: '\u65e0\u4fe1\u53f7',
statusIconClass: 'fas fa-times-circle text-gray-500',
statusTextClass: 'text-gray-500',
headerIconClass: 'fas fa-signal text-gray-400',
indicatorClass: 'w-2 h-2 bg-gray-500 rounded-full',
connectionTextClass: 'text-gray-500'
}
};
function getRoleTagMarkup(user, role) {
if (role === 'local') {
return user.isHost
? '\u4e3b\u6301\u4eba'
: '\u53c2\u4e0e\u8005';
}
if (role === 'participant') {
return '\u53c2\u4e0e\u8005';
}
return '\u4e3b\u6301\u4eba';
}
function getDatasetUserId(role, id) {
switch (role) {
case 'local':
return 'local';
case 'remote':
return 'remote';
case 'host':
return `host_${id}`;
case 'participant':
return `participant_${id}`;
default:
return role;
}
}
function getAvatarMarkup(user, role) {
if (role === 'local') {
return ``;
}
return `