diff --git a/ide/src/trace/SpApplication.ts b/ide/src/trace/SpApplication.ts index 0e8b6899698e2c6a2fb982d628715927f08b1c41..9c603195dcae28de33106eaae0f47dce59f42bf8 100644 --- a/ide/src/trace/SpApplication.ts +++ b/ide/src/trace/SpApplication.ts @@ -648,6 +648,11 @@ export class SpApplication extends BaseElement { litSearch.addEventListener('next-data', (ev: any) => { litSearch.index = spSystemTrace!.showStruct(false, litSearch.index, litSearch.list); litSearch.blur(); + }); + // 翻页事件 + litSearch.addEventListener('retarget-data', (ev: any) => { + litSearch.index = spSystemTrace!.showStruct(true, ev.detail.value, litSearch.list, ev.detail.value); + litSearch.blur(); }); litSearch.valueChangeHandler = (value: string) => { if (value.length > 0) { diff --git a/ide/src/trace/component/SpSystemTrace.ts b/ide/src/trace/component/SpSystemTrace.ts index 7338b3bf542b35faf475e7f90bbc6b25a5875aba..3519604eb4c8274e2e7ead5c385d88ffe849adb7 100644 --- a/ide/src/trace/component/SpSystemTrace.ts +++ b/ide/src/trace/component/SpSystemTrace.ts @@ -3914,21 +3914,25 @@ export class SpSystemTrace extends BaseElement { return searchResults; } - showStruct(previous: boolean, currentIndex: number, structs: Array) { + showStruct(previous: boolean, currentIndex: number, structs: Array, retargetIndex?: number) { if (structs.length == 0) { return 0; } let findIndex = -1; if (previous) { - for (let i = structs.length - 1; i >= 0; i--) { - let it = structs[i]; - if ( - i < currentIndex && - it.startTime! >= TraceRow.range!.startNS && - it.startTime! + it.dur! <= TraceRow.range!.endNS - ) { - findIndex = i; - break; + if (retargetIndex) { + findIndex = retargetIndex - 1 + } else { + for (let i = structs.length - 1; i >= 0; i--) { + let it = structs[i]; + if ( + i < currentIndex && + it.startTime! >= TraceRow.range!.startNS && + it.startTime! + it.dur! <= TraceRow.range!.endNS + ) { + findIndex = i; + break; + } } } } else { diff --git a/ide/src/trace/component/trace/search/Search.ts b/ide/src/trace/component/trace/search/Search.ts index 68803fdd1b65ea1c534a39748d1921d1aa7288ba..9f7fd24539c8dccd4510d28e5ac50677b1df5cb9 100644 --- a/ide/src/trace/component/trace/search/Search.ts +++ b/ide/src/trace/component/trace/search/Search.ts @@ -32,6 +32,8 @@ export class LitSearch extends BaseElement { private lastSearch = ''; private searchList: Array = []; private searchELList: Array = []; + //定义翻页index + private retarget_index: number = 0; get list(): Array { return this._list; @@ -222,6 +224,11 @@ export class LitSearch extends BaseElement { this.totalEL = this.shadowRoot!.querySelector('#total'); this.indexEL = this.shadowRoot!.querySelector('#index'); this.searchHistoryListEL = this.shadowRoot!.querySelector('.search-history-list'); + + let _retarge_index = this.shadowRoot!.querySelector("input[name='retarge_index']") + let _root = this.shadowRoot!.querySelector(".root") + let _prompt = this.shadowRoot!.querySelector("#prompt") + this.search!.addEventListener('focus', () => { this.searchFocusListener(); }); @@ -251,6 +258,35 @@ export class LitSearch extends BaseElement { }, }) ); + }); + + // 添加翻页监听事件 + this.shadowRoot?.querySelector("input[name='retarge_index']")?.addEventListener('keyup', (e: any) => { + if (e.keyCode == 13) { + this.retarget_index = Number(_retarge_index!.value) + if (this.retarget_index <= this._list.length && this.retarget_index != 0) { + this.dispatchEvent( + new CustomEvent('retarget-data', { + detail: { + value: this.retarget_index, + }, + }) + ); + } else if (this.retarget_index == 0) { + return + } else { + _prompt!.style.display = 'block'; + _root!.style.display = 'none'; + _prompt!.innerHTML = `${this._list.length} pages in total, please re-enter` + setTimeout(() => { + _prompt!.style.display = 'none'; + _root!.style.display = 'flex'; + _retarge_index!.value = "" + }, 2000) + } + + } + e.stopPropagation(); }); } @@ -305,6 +341,9 @@ export class LitSearch extends BaseElement { } :host([show-search-info]) .search-info{ display: inline-flex; + higth:100%!important; + justify-content: center; + align-items: center; } :host(:not([show-search-info])) .search-info{ display: none; @@ -366,6 +405,9 @@ export class LitSearch extends BaseElement { padding-right: 20px; padding-left: 45px; } + input[name="retarge_index"]{ + width:100px!important; + } +