|
196 | 196 | <div class="field"> |
197 | 197 | <label class="label is-small" x-text="t('paperSize')"></label> |
198 | 198 | <div class="control"> |
199 | | - <div class="select is-fullwidth"> |
| 199 | + <div class="select is-ful lwidth"> |
200 | 200 | <select x-model="scanConfig.paperSize" @change="debounceSaveSettings()"> |
201 | 201 | <template x-for="ps in ['auto', 'a4', 'a5', 'business_card', 'postcard']" :key="ps"> |
202 | 202 | <option :value="ps" x-text="t('paper_' + ps)"></option> |
|
400 | 400 | </header> |
401 | 401 | <div class="card-content"> |
402 | 402 | <div class="field"> |
403 | | - <label class="label is-small" x-text="t('forcePaperAuto')"></label> |
| 403 | + <label class="label is-small" x-text="t('airscanForcePaperAuto')"></label> |
| 404 | + <div class="buttons has-addons"> |
| 405 | + <button type="button" class="button" :class="scanConfig.airscanForcePaperAuto ? 'is-primary is-selected' : ''" @click="scanConfig.airscanForcePaperAuto = true; debounceSaveSettings()">ON</button> |
| 406 | + <button type="button" class="button" :class="!scanConfig.airscanForcePaperAuto ? 'is-primary is-selected' : ''" @click="scanConfig.airscanForcePaperAuto = false; debounceSaveSettings()">OFF</button> |
| 407 | + </div> |
| 408 | + <p class="help" x-text="t('airscanForcePaperAutoHelp')"></p> |
| 409 | + </div> |
| 410 | + |
| 411 | + <div class="field"> |
| 412 | + <label class="label is-small" x-text="t('airscanBleedThrough')"></label> |
404 | 413 | <div class="buttons has-addons"> |
405 | | - <button type="button" class="button" :class="scanConfig.forcePaperAuto ? 'is-primary is-selected' : ''" @click="scanConfig.forcePaperAuto = true; debounceSaveSettings()">ON</button> |
406 | | - <button type="button" class="button" :class="!scanConfig.forcePaperAuto ? 'is-primary is-selected' : ''" @click="scanConfig.forcePaperAuto = false; debounceSaveSettings()">OFF</button> |
| 414 | + <button type="button" class="button" :class="scanConfig.airscanBleedThrough ? 'is-primary is-selected' : ''" @click="scanConfig.airscanBleedThrough = true; debounceSaveSettings()">ON</button> |
| 415 | + <button type="button" class="button" :class="!scanConfig.airscanBleedThrough ? 'is-primary is-selected' : ''" @click="scanConfig.airscanBleedThrough = false; debounceSaveSettings()">OFF</button> |
407 | 416 | </div> |
408 | | - <p class="help" x-text="t('forcePaperAutoHelp')"></p> |
| 417 | + <p class="help" x-text="t('airscanBleedThroughHelp')"></p> |
| 418 | + </div> |
| 419 | + |
| 420 | + <div class="field"> |
| 421 | + <label class="label is-small"><span x-text="t('airscanBwDensity')"></span> <span class="has-text-weight-normal has-text-grey" x-text="(scanConfig.airscanBwDensity > 0 ? '+' : '') + scanConfig.airscanBwDensity"></span></label> |
| 422 | + <input type="range" min="-5" max="5" step="1" x-model.number="scanConfig.airscanBwDensity" @change="debounceSaveSettings()"> |
| 423 | + <div class="range-labels"><span>-5</span><span>0</span><span>+5</span></div> |
| 424 | + <p class="help" x-text="t('airscanBwDensityHelp')"></p> |
409 | 425 | </div> |
410 | 426 | </div> |
411 | 427 | </div> |
|
481 | 497 | status: null, |
482 | 498 | tick: 0, |
483 | 499 | lang: localStorage.getItem('lang') || (navigator.language.startsWith('ja') ? 'ja' : 'en'), |
484 | | - scanConfig: { colorMode: 'auto', resolution: '0', duplex: false, format: 'application/pdf', blankPageRemoval: true, bleedThrough: false, bwDensity: 0, paperSize: 'auto', saveType: 'none', savePath: '', ftpHost: '', ftpUser: '', ftpPassword: '', paperlessUrl: '', paperlessToken: '', forcePaperAuto: false }, |
| 500 | + scanConfig: { colorMode: 'auto', resolution: '0', duplex: false, format: 'application/pdf', blankPageRemoval: true, bleedThrough: false, bwDensity: 0, paperSize: 'auto', saveType: 'none', savePath: '', ftpHost: '', ftpUser: '', ftpPassword: '', paperlessUrl: '', paperlessToken: '', airscanForcePaperAuto: false, airscanBleedThrough: false, airscanBwDensity: 0 }, |
485 | 501 | scanJob: { scanning: false, lastError: '', lastScan: '', pages: 0, filePath: '' }, |
486 | 502 | scanPreview: { scanning: false, error: '', pages: [], showModal: false, currentPage: 0 }, |
487 | 503 | settingsReady: false, |
|
536 | 552 | paperlessUrl: s.paperlessUrl || '', |
537 | 553 | paperlessToken: s.paperlessToken || '', |
538 | 554 | paperSize: s.paperSize || 'auto', |
539 | | - forcePaperAuto: s.forcePaperAuto || false, |
| 555 | + airscanForcePaperAuto: s.airscanForcePaperAuto || false, |
| 556 | + airscanBleedThrough: s.airscanBleedThrough || false, |
| 557 | + airscanBwDensity: s.airscanBwDensity ?? 0, |
540 | 558 | }; |
541 | 559 | this.clampToCapabilities(); |
542 | 560 | this.settingsReady = true; |
|
588 | 606 | paperlessUrl: this.scanConfig.paperlessUrl, |
589 | 607 | paperlessToken: this.scanConfig.paperlessToken, |
590 | 608 | paperSize: this.scanConfig.paperSize, |
591 | | - forcePaperAuto: this.scanConfig.forcePaperAuto, |
| 609 | + airscanForcePaperAuto: this.scanConfig.airscanForcePaperAuto, |
| 610 | + airscanBleedThrough: this.scanConfig.airscanBleedThrough, |
| 611 | + airscanBwDensity: Number(this.scanConfig.airscanBwDensity), |
592 | 612 | }; |
593 | 613 | const resp = await fetch('api/settings', { |
594 | 614 | method: 'PUT', |
|
0 commit comments