From 1376d38cd20fd59244f6db377ac07964f3f125b0 Mon Sep 17 00:00:00 2001 From: sunhao Date: Thu, 8 May 2025 15:23:26 +0800 Subject: [PATCH] * [misc] add global method to get page perf data. --- module/index/js/index.ui.js | 4 ++++ www/js/zui3/zin.js | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/module/index/js/index.ui.js b/module/index/js/index.ui.js index d6866f6587..bc8933a243 100644 --- a/module/index/js/index.ui.js +++ b/module/index/js/index.ui.js @@ -218,6 +218,10 @@ function openApp(url, code, options) const getPageInfo = openedApp.iframe.contentWindow.getPageInfo; return getPageInfo ? getPageInfo() : null; }; + openedApp.getPerfData = () => { + const getPerfData = openedApp.iframe.contentWindow.getPerfData; + return getPerfData ? getPerfData() : null; + }; /* Update on app tabs bar */ const $tabs = $('#appTabs'); diff --git a/www/js/zui3/zin.js b/www/js/zui3/zin.js index d4a42d49e6..e00cc6057f 100644 --- a/www/js/zui3/zin.js +++ b/www/js/zui3/zin.js @@ -241,6 +241,21 @@ else requestAnimationFrame(() => updateZinbar(perf, errors, basePath)); } + function getPerfData() + { + return (zinbar && zinbar.$) ? zinbar.$.state.pagePerf : null; + } + + function triggerPerfEvent(stage) + { + if(!zinbar || !zinbar.$) return; + if(zinbar.lastPerfEventType === stage) clearTimeout(zinbar.lastPerfEventTimer); + zinbar.lastPerfEventTimer = setTimeout(() => { + $.apps.triggerEvent('updatePerfData.app', {stage: stage, perf: getPerfData()}, {silent: true}); + }, 100); + zinbar.lastPerfEventType = stage; + } + function updatePerfInfo(options, stage, info) { if(!hasZinBar) return; @@ -255,6 +270,7 @@ if(info.dataSize) perf.dataSize = info.dataSize; } updateZinbar(perf); + triggerPerfEvent(stage); } function showZinDebugInfo(data, options) @@ -1801,7 +1817,7 @@ if($firstControl) $firstControl[0]?.focus(); } - $.extend(window, {registerRender: registerRender, fetchContent: fetchContent, loadTable: loadTable, loadPage: loadPage, postAndLoadPage: postAndLoadPage, loadCurrentPage: loadCurrentPage, parseSelector: parseSelector, toggleLoading: toggleLoading, openUrl: openUrl, openPage: openPage, goBack: goBack, registerTimer: registerTimer, loadModal: loadModal, loadTarget: loadTarget, loadComponent: loadComponent, loadPartial: loadPartial, reloadPage: reloadPage, selectLang: selectLang, selectTheme: selectTheme, selectVision: selectVision, changeAppLang, changeAppTheme: changeAppTheme, waitDom: waitDom, fetchMessage: fetchMessage, setImageSize: setImageSize, showMoreImage: showMoreImage, autoLoad: autoLoad, loadForm: loadForm, showValidateMessage: showValidateMessage, getPageInfo: getPageInfo}); + $.extend(window, {registerRender: registerRender, fetchContent: fetchContent, loadTable: loadTable, loadPage: loadPage, postAndLoadPage: postAndLoadPage, loadCurrentPage: loadCurrentPage, parseSelector: parseSelector, toggleLoading: toggleLoading, openUrl: openUrl, openPage: openPage, goBack: goBack, registerTimer: registerTimer, loadModal: loadModal, loadTarget: loadTarget, loadComponent: loadComponent, loadPartial: loadPartial, reloadPage: reloadPage, selectLang: selectLang, selectTheme: selectTheme, selectVision: selectVision, changeAppLang, changeAppTheme: changeAppTheme, waitDom: waitDom, fetchMessage: fetchMessage, setImageSize: setImageSize, showMoreImage: showMoreImage, autoLoad: autoLoad, loadForm: loadForm, showValidateMessage: showValidateMessage, getPageInfo: getPageInfo, getPerfData: getPerfData}); $.extend($.apps, {openUrl: openUrl, getAppUrl: () => currentAppUrl}); $.extend($, {ajaxSendScore: ajaxSendScore, selectLang: selectLang});