This is an automated email from the ASF dual-hosted git repository. zqr10159 pushed a commit to branch 2.0.0 in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
commit 43b8d665f307af5f86490d7c850533fe7266733d Author: Logic <[email protected]> AuthorDate: Fri May 29 15:52:23 2026 +0800 fix(web-next): align alert setting import lifecycle --- web-next/app/alert/setting/alert-setting-page.tsx | 7 +++++++ web-next/app/alert/setting/page.test.tsx | 13 +++++++++++++ web-next/app/ui-lab/page.test.tsx | 6 ++++++ web-next/app/ui-lab/page.tsx | 7 +++++++ 4 files changed, 33 insertions(+) diff --git a/web-next/app/alert/setting/alert-setting-page.tsx b/web-next/app/alert/setting/alert-setting-page.tsx index 9f98ef86a4..cc144b59b8 100644 --- a/web-next/app/alert/setting/alert-setting-page.tsx +++ b/web-next/app/alert/setting/alert-setting-page.tsx @@ -323,6 +323,7 @@ export default function AlertSettingPage({ initialRouteState }: { initialRouteSt } function handleImportClick() { + if (pendingActionId) return; importInputRef.current?.click(); } @@ -330,6 +331,7 @@ export default function AlertSettingPage({ initialRouteState }: { initialRouteSt const file = event.target.files?.[0]; event.target.value = ''; if (!file) return; + if (pendingActionId) return; await runSettingAction( 'import', t('common.notify.import-submitted', { taskName: file.name }), @@ -424,8 +426,13 @@ export default function AlertSettingPage({ initialRouteState }: { initialRouteSt <HzFileInput ref={importInputRef} aria-label={t('alert.setting.import.input')} + multiple={false} data-alert-setting-import-input-owner="hertzbeat-ui-file-input" data-alert-setting-import-file-input="true" + data-alert-setting-import-upload-contract="angular-nz-upload-limit-one-no-list" + data-alert-setting-import-show-list="false" + data-alert-setting-import-refresh-contract="angular-success-refresh" + data-alert-setting-import-failure-refresh-contract="angular-failure-no-refresh" onChange={event => void handleImportChange(event)} /> <AlertSettingCreateDialog diff --git a/web-next/app/alert/setting/page.test.tsx b/web-next/app/alert/setting/page.test.tsx index 5aa3ccf9ca..f4974b2d04 100644 --- a/web-next/app/alert/setting/page.test.tsx +++ b/web-next/app/alert/setting/page.test.tsx @@ -322,6 +322,19 @@ describe('alert setting page', () => { expect(source).not.toContain("return t('common.notify.import-success-detail'"); }); + it('keeps threshold import upload lifecycle on the Angular single-file reload contract', () => { + const source = readFileSync(resolve(process.cwd(), 'app/alert/setting/alert-setting-page.tsx'), 'utf8'); + + expect(source).toContain('if (pendingActionId) return;'); + expect(source).toContain('multiple={false}'); + expect(source).toContain('data-alert-setting-import-upload-contract="angular-nz-upload-limit-one-no-list"'); + expect(source).toContain('data-alert-setting-import-show-list="false"'); + expect(source).toContain('data-alert-setting-import-refresh-contract="angular-success-refresh"'); + expect(source).toContain('data-alert-setting-import-failure-refresh-contract="angular-failure-no-refresh"'); + expect(source).toContain('setRefreshKey(value => value + 1)'); + expect(source).not.toContain('multiple={true}'); + }); + it('keeps threshold export success silent while mapping failures to the Angular notify title', () => { const source = readFileSync(resolve(process.cwd(), 'app/alert/setting/alert-setting-page.tsx'), 'utf8'); diff --git a/web-next/app/ui-lab/page.test.tsx b/web-next/app/ui-lab/page.test.tsx index 27435228ff..0297d90fcf 100644 --- a/web-next/app/ui-lab/page.test.tsx +++ b/web-next/app/ui-lab/page.test.tsx @@ -2963,6 +2963,9 @@ describe('HertzBeat UI lab page', () => { expect(html).toContain('data-alert-setting-import-trigger-owner="hertzbeat-ui-batch-toolbar"'); expect(html).toContain('data-alert-setting-delete-trigger-owner="hertzbeat-ui-batch-toolbar"'); expect(html).toContain('data-hz-ui-lab-alert-setting-import-feedback="shared"'); + expect(html).toContain('data-hz-ui-lab-alert-setting-import-lifecycle="angular-success-refresh-failure-stays"'); + expect(html).toContain('data-alert-setting-import-refresh-contract="angular-success-refresh"'); + expect(html).toContain('data-alert-setting-import-failure-refresh-contract="angular-failure-no-refresh"'); expect(html).toContain('data-hz-ui-lab-alert-center-entity-batch="shared"'); expect(html).toContain('data-alert-center-entity-batch-owner="hertzbeat-ui-batch-toolbar"'); expect(html).toContain('data-alert-center-batch-toolbar="selected-entity-alerts"'); @@ -3052,7 +3055,10 @@ describe('HertzBeat UI lab page', () => { expect(html).toContain('data-alert-setting-save-feedback-title="common.notify.edit-fail"'); expect(html).toContain('data-alert-setting-save-feedback-detail="backend-message"'); expect(html).toContain('data-hz-ui-lab-alert-setting-import-input="shared"'); + expect(html).toContain('data-hz-ui-lab-alert-setting-import-upload="angular-nz-upload-limit-one-no-list"'); expect(html).toContain('data-alert-setting-import-input-owner="hertzbeat-ui-file-input"'); + expect(html).toContain('data-alert-setting-import-upload-contract="angular-nz-upload-limit-one-no-list"'); + expect(html).toContain('data-alert-setting-import-show-list="false"'); expect(html).toContain('Import [alert-defines.json] submitted'); expect(html).toContain('data-hz-ui-lab-alert-setting-import-success="angular-import-success-notification"'); expect(html).toContain('data-alert-setting-import-success-owner="hertzbeat-ui-inline-feedback"'); diff --git a/web-next/app/ui-lab/page.tsx b/web-next/app/ui-lab/page.tsx index fc01c95888..f49f175e4c 100644 --- a/web-next/app/ui-lab/page.tsx +++ b/web-next/app/ui-lab/page.tsx @@ -8216,6 +8216,9 @@ export default function HertzBeatUiLabPage() { meta="Preparing threshold import" variant="embedded" data-hz-ui-lab-alert-setting-import-feedback="shared" + data-hz-ui-lab-alert-setting-import-lifecycle="angular-success-refresh-failure-stays" + data-alert-setting-import-refresh-contract="angular-success-refresh" + data-alert-setting-import-failure-refresh-contract="angular-failure-no-refresh" data-alert-setting-action-feedback-owner="hertzbeat-ui-inline-feedback" /> <HzInlineFeedback @@ -8311,8 +8314,12 @@ export default function HertzBeatUiLabPage() { /> <HzFileInput aria-label="Import threshold rules file" + multiple={false} data-hz-ui-lab-alert-setting-import-input="shared" + data-hz-ui-lab-alert-setting-import-upload="angular-nz-upload-limit-one-no-list" data-alert-setting-import-input-owner="hertzbeat-ui-file-input" + data-alert-setting-import-upload-contract="angular-nz-upload-limit-one-no-list" + data-alert-setting-import-show-list="false" /> <HzExportTypeDialog open={alertSettingExportDialogOpen} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
