Skip to content
This repository was archived by the owner on May 28, 2026. It is now read-only.

Commit e713a69

Browse files
eslint: enforce no-jquery/no-global-selector
1 parent adf2f2a commit e713a69

2 files changed

Lines changed: 24 additions & 24 deletions

File tree

.eslintrc.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
"sourceType": "module"
1313
},
1414
"rules": {
15-
"no-jquery/no-global-selector": "warn",
1615
"yml/no-empty-document": "warn",
1716
"yml/no-empty-mapping-value": "warn"
1817
}

assets/app.js

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import './styles/app.css';
33
import 'select2';
44

55
const $ = require( 'jquery' );
6-
const $select2 = $( '#lang' );
6+
const $select2 = $( document.getElementById( 'lang' ) );
77
let selectedLanguages = [];
8-
const $lineDetectionSelect = $( '#line-id' );
8+
const $lineDetectionSelect = $( document.getElementById( 'line-id' ) );
99
let lineModels = null;
1010

1111
const Cropper = require( 'cropperjs' );
@@ -86,7 +86,7 @@ $( () => {
8686
fetchLineModelsJSON();
8787

8888
// Remove nojs class, for styling non-Javascript users.
89-
$( 'html' ).removeClass( 'nojs' );
89+
$( document.documentElement ).removeClass( 'nojs' );
9090

9191
// Initiate Select2, which allows dynamic entry of languages.
9292
$select2.select2( {
@@ -111,68 +111,69 @@ $( () => {
111111
const previousDataPlaceholder = $select2.attr( 'data-placeholder' );
112112

113113
// Show engine-specific options.
114-
$( '[name=engine]' ).on( 'change', ( e ) => {
114+
$( document.querySelectorAll( '[name=engine]' ) ).on( 'change', ( e ) => {
115115
const engine = e.target.value;
116116
updateSelect2Options( engine );
117-
$( '.engine-options' ).addClass( 'hidden' );
118-
$( `#${ engine }-options` ).removeClass( 'hidden' );
117+
$( document.querySelectorAll( '.engine-options' ) ).addClass( 'hidden' );
118+
$( document.getElementById( `${ engine }-options` ) ).removeClass( 'hidden' );
119119
if ( engine === 'tesseract' || engine === 'google' ) {
120120
$select2.prop( 'required', false );
121121
$select2.attr( 'data-placeholder', previousDataPlaceholder );
122122
$select2.data( 'select2' ).selection.placeholder.text = previousDataPlaceholder;
123-
$( '#transkribus-lang-label' ).addClass( 'hidden' );
124-
$( '#optional-lang-label' ).removeClass( 'hidden' );
123+
$( document.getElementById( 'transkribus-lang-label' ) ).addClass( 'hidden' );
124+
$( document.getElementById( 'optional-lang-label' ) ).removeClass( 'hidden' );
125125
} else {
126126
updateLineModelOptions();
127-
$( '#transkribus-help' ).removeClass( 'hidden' );
127+
$( document.getElementById( 'transkribus-help' ) ).removeClass( 'hidden' );
128128
$select2.prop( 'required', true );
129129
$select2.attr( 'data-placeholder', '' );
130130
$select2.data( 'select2' ).selection.placeholder.text = '';
131-
$( '#optional-lang-label' ).addClass( 'hidden' );
132-
$( '#transkribus-lang-label' ).removeClass( 'hidden' );
131+
$( document.getElementById( 'optional-lang-label' ) ).addClass( 'hidden' );
132+
$( document.getElementById( 'transkribus-lang-label' ) ).removeClass( 'hidden' );
133133
}
134134
} );
135135

136136
// modify selected engine after loading the page with preselected engine
137-
const $engineRadioFields = $( '[name=engine]:checked' );
137+
const $engineRadioFields = $( document.querySelector( '[name=engine]:checked' ) );
138138
if ( $engineRadioFields.val() === 'transkribus' ) {
139139
$select2.attr( 'data-placeholder', '' );
140140
} else {
141141
$select2.attr( 'data-placeholder', previousDataPlaceholder );
142142
}
143143

144144
// For the result page. Makes the 'Copy' button copy the transcription to the clipboard.
145-
const $copyButton = $( '.copy-button' );
145+
const $copyButton = $( document.querySelector( '.copy-button' ) );
146146
if ( $copyButton.length ) {
147147
$copyButton.on( 'click', ( e ) => {
148148
e.preventDefault();
149-
const $textarea = $( '#text' );
149+
const $textarea = $( document.getElementById( 'text' ) );
150150
$textarea.trigger( 'select' );
151151
document.execCommand( 'copy' );
152152
$copyButton.text( $copyButton.data( 'copied-text' ) );
153153
} );
154154
}
155155

156-
const $submitBtns = $( '.submit-full, .submit-crop' );
156+
const $submitBtns = $( document.querySelectorAll( '.submit-full, .submit-crop' ) );
157+
const $loader = $( document.querySelector( '.loader' ) );
157158
$submitBtns.closest( 'form' ).on( 'submit', () => {
158159
$submitBtns.attr( 'disabled', true );
159-
$( '.loader' ).removeClass( 'hidden' );
160+
$loader.removeClass( 'hidden' );
160161
} );
161162
// Re-enable submit buttons on pagehide, so that they are re-enabled if returned to via browser history
162163
$( window ).on( 'pagehide', () => {
163164
$submitBtns.attr( 'disabled', false );
164-
$( '.loader' ).addClass( 'hidden' );
165+
$loader.addClass( 'hidden' );
165166
} );
166167

167-
const $ocrOutputDiv = $( '.ocr-output' );
168+
const $ocrOutputDiv = $( document.querySelector( '.ocr-output' ) );
168169
if ( $ocrOutputDiv.length ) {
169170
// Cropper.
170171
const img = document.getElementById( 'source-image' ),
171172
x = document.querySelector( '[name="crop[x]"]' ),
172173
y = document.querySelector( '[name="crop[y]"]' ),
173174
width = document.querySelector( '[name="crop[width]"]' ),
174175
height = document.querySelector( '[name="crop[height]"]' ),
175-
$modeButtons = $( '.drag-mode' );
176+
$modeButtons = $( document.querySelectorAll( '.drag-mode' ) );
176177
const cropper = new Cropper( img, {
177178
viewMode: 2,
178179
dragMode: 'move',
@@ -183,7 +184,7 @@ $( () => {
183184
responsive: true,
184185
ready() {
185186
// Make textarea match height of image.
186-
$( '#text' ).css( {
187+
$( document.getElementById( 'text' ) ).css( {
187188
height: cropper.getContainerData().height
188189
} );
189190
// React to changes in the crop-mode buttons.
@@ -206,18 +207,18 @@ $( () => {
206207
width.value = Math.round( event.detail.width );
207208
height.value = Math.round( event.detail.height );
208209
// Enable the cropping buttons. No need to disable them ever because there's no way to remove the crop box.
209-
$( '.btn.submit-crop' ).attr( 'disabled', false ).removeClass( 'disabled' );
210+
$( document.querySelectorAll( '.btn.submit-crop' ) ).attr( 'disabled', false ).removeClass( 'disabled' );
210211
$modeButtons.attr( 'disabled', false );
211212
}
212213
} );
213214

214215
// When setting a new image URL, remove the preview and the crop dimensions.
215-
$( '[name=image]' ).on( 'change', () => {
216+
$( document.querySelector( '[name=image]' ) ).on( 'change', () => {
216217
$ocrOutputDiv.remove();
217218
} );
218219

219220
// When submitting the main 'transcribe' button, do not send crop dimensions.
220-
$( '.submit-full' ).on( 'click', () => {
221+
$( document.querySelector( '.submit-full' ) ).on( 'click', () => {
221222
x.value = null;
222223
y.value = null;
223224
width.value = null;

0 commit comments

Comments
 (0)