@@ -94,110 +94,138 @@ import {
94
94
import { initGlobalDropzone } from './features/dropzone.js' ;
95
95
import { initGlobalEnterQuickSubmit , initGlobalFormDirtyLeaveConfirm } from './features/common-form.js' ;
96
96
97
- // Init Gitea's Fomantic settings
98
97
initGiteaFomantic ( ) ;
99
98
initDirAuto ( ) ;
100
99
initSubmitEventPolyfill ( ) ;
101
100
101
+ function callInitFunctions ( functions ) {
102
+ // Start performance trace by accessing a URL by "https://localhost/?_ui_performance_trace=1" or "https://localhost/?key=value&_ui_performance_trace=1"
103
+ // It is a quick check, no side effect so no need to do slow URL parsing.
104
+ const initStart = performance . now ( ) ;
105
+ if ( window . location . search . includes ( '_ui_performance_trace=1' ) ) {
106
+ let results = [ ] ;
107
+ for ( const func of functions ) {
108
+ const start = performance . now ( ) ;
109
+ func ( ) ;
110
+ results . push ( { name : func . name , dur : performance . now ( ) - start } ) ;
111
+ }
112
+ results = results . sort ( ( a , b ) => b . dur - a . dur ) ;
113
+ for ( let i = 0 ; i < 20 && i < results . length ; i ++ ) {
114
+ // eslint-disable-next-line no-console
115
+ console . log ( `performance trace: ${ results [ i ] . name } ${ results [ i ] . dur . toFixed ( 3 ) } ` ) ;
116
+ }
117
+ } else {
118
+ for ( const func of functions ) {
119
+ func ( ) ;
120
+ }
121
+ }
122
+ const initDur = performance . now ( ) - initStart ;
123
+ if ( initDur > 500 ) {
124
+ console . error ( `slow init functions took ${ initDur . toFixed ( 3 ) } ms` ) ;
125
+ }
126
+ }
127
+
102
128
onDomReady ( ( ) => {
103
- initGlobalDropdown ( ) ;
104
- initGlobalTabularMenu ( ) ;
105
- initGlobalShowModal ( ) ;
106
- initGlobalFetchAction ( ) ;
107
- initGlobalTooltips ( ) ;
108
- initGlobalButtonClickOnEnter ( ) ;
109
- initGlobalButtons ( ) ;
110
- initGlobalCopyToClipboardListener ( ) ;
111
- initGlobalDropzone ( ) ;
112
- initGlobalEnterQuickSubmit ( ) ;
113
- initGlobalFormDirtyLeaveConfirm ( ) ;
114
- initGlobalDeleteButton ( ) ;
115
-
116
- initCommonOrganization ( ) ;
117
- initCommonIssueListQuickGoto ( ) ;
118
-
119
- initCompSearchUserBox ( ) ;
120
- initCompWebHookEditor ( ) ;
121
-
122
- initInstall ( ) ;
123
-
124
- initHeadNavbarContentToggle ( ) ;
125
- initFootLanguageMenu ( ) ;
126
-
127
- initCommentContent ( ) ;
128
- initContextPopups ( ) ;
129
- initHeatmap ( ) ;
130
- initImageDiff ( ) ;
131
- initMarkupAnchors ( ) ;
132
- initMarkupContent ( ) ;
133
- initSshKeyFormParser ( ) ;
134
- initStopwatch ( ) ;
135
- initTableSort ( ) ;
136
- initAutoFocusEnd ( ) ;
137
- initFindFileInRepo ( ) ;
138
- initCopyContent ( ) ;
139
-
140
- initAdminCommon ( ) ;
141
- initAdminEmails ( ) ;
142
- initAdminUserListSearchForm ( ) ;
143
- initAdminConfigs ( ) ;
144
- initAdminSelfCheck ( ) ;
145
-
146
- initDashboardRepoList ( ) ;
147
-
148
- initNotificationCount ( ) ;
149
- initNotificationsTable ( ) ;
150
-
151
- initOrgTeamSearchRepoBox ( ) ;
152
- initOrgTeamSettings ( ) ;
153
-
154
- initRepoActivityTopAuthorsChart ( ) ;
155
- initRepoArchiveLinks ( ) ;
156
- initRepoBranchButton ( ) ;
157
- initRepoCodeView ( ) ;
158
- initRepoCommentForm ( ) ;
159
- initRepoEllipsisButton ( ) ;
160
- initRepoDiffCommitBranchesAndTags ( ) ;
161
- initRepoEditor ( ) ;
162
- initRepoGraphGit ( ) ;
163
- initRepoIssueContentHistory ( ) ;
164
- initRepoIssueDue ( ) ;
165
- initRepoIssueList ( ) ;
166
- initRepoIssueSidebarList ( ) ;
167
- initArchivedLabelHandler ( ) ;
168
- initRepoIssueReferenceRepositorySearch ( ) ;
169
- initRepoIssueTimeTracking ( ) ;
170
- initRepoIssueWipTitle ( ) ;
171
- initRepoMigration ( ) ;
172
- initRepoMigrationStatusChecker ( ) ;
173
- initRepoProject ( ) ;
174
- initRepoPullRequestMergeInstruction ( ) ;
175
- initRepoPullRequestAllowMaintainerEdit ( ) ;
176
- initRepoPullRequestReview ( ) ;
177
- initRepoRelease ( ) ;
178
- initRepoReleaseNew ( ) ;
179
- initRepoSettingGitHook ( ) ;
180
- initRepoSettingSearchTeamBox ( ) ;
181
- initRepoSettingsCollaboration ( ) ;
182
- initRepoTemplateSearch ( ) ;
183
- initRepoTopicBar ( ) ;
184
- initRepoUncycloForm ( ) ;
185
- initRepository ( ) ;
186
- initRepositoryActionView ( ) ;
187
- initRepositorySearch ( ) ;
188
- initRepoContributors ( ) ;
189
- initRepoCodeFrequency ( ) ;
190
- initRepoRecentCommits ( ) ;
191
-
192
- initCommitStatuses ( ) ;
193
- initCaptcha ( ) ;
194
-
195
- initUserAuthOauth2 ( ) ;
196
- initUserAuthWebAuthn ( ) ;
197
- initUserAuthWebAuthnRegister ( ) ;
198
- initUserSettings ( ) ;
199
- initRepoDiffView ( ) ;
200
- initPdfViewer ( ) ;
201
- initScopedAccessTokenCategories ( ) ;
202
- initColorPickers ( ) ;
129
+ callInitFunctions ( [
130
+ initGlobalDropdown ,
131
+ initGlobalTabularMenu ,
132
+ initGlobalShowModal ,
133
+ initGlobalFetchAction ,
134
+ initGlobalTooltips ,
135
+ initGlobalButtonClickOnEnter ,
136
+ initGlobalButtons ,
137
+ initGlobalCopyToClipboardListener ,
138
+ initGlobalDropzone ,
139
+ initGlobalEnterQuickSubmit ,
140
+ initGlobalFormDirtyLeaveConfirm ,
141
+ initGlobalDeleteButton ,
142
+
143
+ initCommonOrganization ,
144
+ initCommonIssueListQuickGoto ,
145
+
146
+ initCompSearchUserBox ,
147
+ initCompWebHookEditor ,
148
+
149
+ initInstall ,
150
+
151
+ initHeadNavbarContentToggle ,
152
+ initFootLanguageMenu ,
153
+
154
+ initCommentContent ,
155
+ initContextPopups ,
156
+ initHeatmap ,
157
+ initImageDiff ,
158
+ initMarkupAnchors ,
159
+ initMarkupContent ,
160
+ initSshKeyFormParser ,
161
+ initStopwatch ,
162
+ initTableSort ,
163
+ initAutoFocusEnd ,
164
+ initFindFileInRepo ,
165
+ initCopyContent ,
166
+
167
+ initAdminCommon ,
168
+ initAdminEmails ,
169
+ initAdminUserListSearchForm ,
170
+ initAdminConfigs ,
171
+ initAdminSelfCheck ,
172
+
173
+ initDashboardRepoList ,
174
+
175
+ initNotificationCount ,
176
+ initNotificationsTable ,
177
+
178
+ initOrgTeamSearchRepoBox ,
179
+ initOrgTeamSettings ,
180
+
181
+ initRepoActivityTopAuthorsChart ,
182
+ initRepoArchiveLinks ,
183
+ initRepoBranchButton ,
184
+ initRepoCodeView ,
185
+ initRepoCommentForm ,
186
+ initRepoEllipsisButton ,
187
+ initRepoDiffCommitBranchesAndTags ,
188
+ initRepoEditor ,
189
+ initRepoGraphGit ,
190
+ initRepoIssueContentHistory ,
191
+ initRepoIssueDue ,
192
+ initRepoIssueList ,
193
+ initRepoIssueSidebarList ,
194
+ initArchivedLabelHandler ,
195
+ initRepoIssueReferenceRepositorySearch ,
196
+ initRepoIssueTimeTracking ,
197
+ initRepoIssueWipTitle ,
198
+ initRepoMigration ,
199
+ initRepoMigrationStatusChecker ,
200
+ initRepoProject ,
201
+ initRepoPullRequestMergeInstruction ,
202
+ initRepoPullRequestAllowMaintainerEdit ,
203
+ initRepoPullRequestReview ,
204
+ initRepoRelease ,
205
+ initRepoReleaseNew ,
206
+ initRepoSettingGitHook ,
207
+ initRepoSettingSearchTeamBox ,
208
+ initRepoSettingsCollaboration ,
209
+ initRepoTemplateSearch ,
210
+ initRepoTopicBar ,
211
+ initRepoUncycloForm ,
212
+ initRepository ,
213
+ initRepositoryActionView ,
214
+ initRepositorySearch ,
215
+ initRepoContributors ,
216
+ initRepoCodeFrequency ,
217
+ initRepoRecentCommits ,
218
+
219
+ initCommitStatuses ,
220
+ initCaptcha ,
221
+
222
+ initUserAuthOauth2 ,
223
+ initUserAuthWebAuthn ,
224
+ initUserAuthWebAuthnRegister ,
225
+ initUserSettings ,
226
+ initRepoDiffView ,
227
+ initPdfViewer ,
228
+ initScopedAccessTokenCategories ,
229
+ initColorPickers ,
230
+ ] ) ;
203
231
} ) ;
0 commit comments