dataTable/test/minimal_perf.html
AI Engineer d99b78fc6f fix(datatable): 修复 scope 从 @web 统一为 @apigo.cc,增强 editable 控制及编辑器交互(by AI)
Co-Authored-By: deepseek-v4-pro[1m] <deepseek-ai@claude-code-best.win>
2026-06-22 19:24:20 +08:00

56 lines
2.0 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<script src="lib/state.js"></script>
<script src="lib/base.js"></script>
<script src="lib/datatable.js"></script>
<script>
window.__DT_PERF_MODE__ = true;
</script>
<script>
window.startTest = async () => {
const fields = Array.from({length: 10}, (_, i) => ({
id: 'col' + i,
name: 'Column ' + i,
width: 150
}));
const data = Array.from({length: 10000}, (_, i) => {
const row = { id: i };
fields.forEach(f => row[f.id] = `Row ${i} ${f.name}`);
return row;
});
const div = document.createElement('div');
div.setAttribute('style', 'height: 400px; width: 800px; border: 1px solid red');
div.innerHTML = '<DataTable id="dt" editable style="display: flex; flex-direction: column; height: 100%; min-height: 0; overflow: hidden"></DataTable>';
document.body.appendChild(div);
// Wait for MutationObserver to pick up the new element
await new Promise(r => setTimeout(r, 0));
const dt = document.getElementById('dt');
dt.state.fields = fields;
dt.state.list = data;
await new Promise(r => setTimeout(r, 500));
const scrollTarget = dt.querySelector('.dt-main');
console.log('root clientHeight:', scrollTarget.clientHeight);
console.log('root scrollHeight:', scrollTarget.scrollHeight);
for (let i = 0; i < 100; i++) {
scrollTarget.scrollTop += 200;
scrollTarget.dispatchEvent(new Event('scroll'));
await new Promise(r => setTimeout(r, 10));
}
return JSON.parse(JSON.stringify(dt.state.perf));
};
</script>
</head>
<body>
<script src="lib/bootstrap.js"></script>
</body>
</html>