chore(admin-dashboard): add tooltips for mini rank/share names
This commit is contained in:
@@ -196,6 +196,8 @@
|
|||||||
name.className = 'adm-mini-rank-name';
|
name.className = 'adm-mini-rank-name';
|
||||||
var mname = (p && p.name) ? String(p.name) : ('#' + (idx + 1));
|
var mname = (p && p.name) ? String(p.name) : ('#' + (idx + 1));
|
||||||
name.textContent = mname;
|
name.textContent = mname;
|
||||||
|
// tooltip:显示完整名称(避免 ellipsis 后看不到)
|
||||||
|
name.title = mname;
|
||||||
|
|
||||||
var wrap = document.createElement('div');
|
var wrap = document.createElement('div');
|
||||||
wrap.className = 'adm-mini-rank-bar-wrap';
|
wrap.className = 'adm-mini-rank-bar-wrap';
|
||||||
@@ -210,7 +212,8 @@
|
|||||||
val.className = 'adm-mini-rank-value';
|
val.className = 'adm-mini-rank-value';
|
||||||
val.textContent = '¥' + formatMoney(paid);
|
val.textContent = '¥' + formatMoney(paid);
|
||||||
|
|
||||||
row.title = 'Top' + (idx + 1) + ':已付 ¥' + formatMoney(paid) + ',订单数 ' + String(p && p.count != null ? p.count : 0);
|
var cntText = String(p && p.count != null ? p.count : 0);
|
||||||
|
row.title = 'Top' + (idx + 1) + ':' + mname + '|已付 ¥' + formatMoney(paid) + '|订单数 ' + cntText;
|
||||||
|
|
||||||
row.appendChild(name);
|
row.appendChild(name);
|
||||||
row.appendChild(wrap);
|
row.appendChild(wrap);
|
||||||
@@ -259,6 +262,8 @@
|
|||||||
name.className = 'adm-mini-share-name';
|
name.className = 'adm-mini-share-name';
|
||||||
var pname = (p && p.name) ? String(p.name) : ('#' + (idx + 1));
|
var pname = (p && p.name) ? String(p.name) : ('#' + (idx + 1));
|
||||||
name.textContent = pname;
|
name.textContent = pname;
|
||||||
|
// tooltip:显示完整名称(避免 ellipsis 后看不到)
|
||||||
|
name.title = pname;
|
||||||
|
|
||||||
var wrap = document.createElement('div');
|
var wrap = document.createElement('div');
|
||||||
wrap.className = 'adm-mini-share-bar-wrap';
|
wrap.className = 'adm-mini-share-bar-wrap';
|
||||||
@@ -273,7 +278,7 @@
|
|||||||
val.className = 'adm-mini-share-value';
|
val.className = 'adm-mini-share-value';
|
||||||
val.textContent = formatPct(ratio, 1) + '%';
|
val.textContent = formatPct(ratio, 1) + '%';
|
||||||
|
|
||||||
row.title = 'Top' + (idx + 1) + ':' + cnt + ' 单,占比 ' + formatPct(ratio, 1) + '%';
|
row.title = 'Top' + (idx + 1) + ':' + pname + '|' + cnt + ' 单|占比 ' + formatPct(ratio, 1) + '%';
|
||||||
|
|
||||||
row.appendChild(name);
|
row.appendChild(name);
|
||||||
row.appendChild(wrap);
|
row.appendChild(wrap);
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\Feature;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||||
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
class AdminDashboardMiniRankAndShareShouldIncludeNameTooltipsTest extends TestCase
|
||||||
|
{
|
||||||
|
use RefreshDatabase;
|
||||||
|
|
||||||
|
protected function loginAsPlatformAdmin(): void
|
||||||
|
{
|
||||||
|
$this->seed();
|
||||||
|
|
||||||
|
$this->post('/admin/login', [
|
||||||
|
'email' => 'platform.admin@demo.local',
|
||||||
|
'password' => 'Platform@123456',
|
||||||
|
])->assertRedirect('/admin');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_admin_js_should_set_title_for_mini_rank_and_share_names(): void
|
||||||
|
{
|
||||||
|
$this->loginAsPlatformAdmin();
|
||||||
|
|
||||||
|
// 页面可访问即可(确保 admin.js 会被加载的整体链路没断)
|
||||||
|
$this->get('/admin')->assertOk();
|
||||||
|
|
||||||
|
$js = (string) file_get_contents(public_path('js/admin.js'));
|
||||||
|
|
||||||
|
// 护栏:mini rank / mini share 的 name 节点应设置 title(用于 ellipsis 后查看完整名称)
|
||||||
|
$this->assertStringContainsString("name.title = mname", $js);
|
||||||
|
$this->assertStringContainsString("name.title = pname", $js);
|
||||||
|
|
||||||
|
// 护栏:排行/占比行 title 应包含名称(让 hover 提示更可读)
|
||||||
|
$this->assertStringContainsString("':' + mname + '|已付 ¥'", $js);
|
||||||
|
$this->assertStringContainsString("':' + pname + '|'", $js);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user