wb-table/js/index.js

133 lines
3.3 KiB
JavaScript
Raw Normal View History

2022-03-11 12:13:08 +08:00
/**
*
* @author yutent<yutent.io@gmail.com>
* @date 2022/03/11 12:03:59
*/
import '//unpkg.yutent.top/anot/dist/anot.js'
2022-03-11 15:47:27 +08:00
import '//unpkg.yutent.top/@bytedo/wcui/dist/layer/index.js'
2022-03-11 12:13:08 +08:00
import '//unpkg.yutent.top/@bytedo/wcui/dist/form/input.js'
import '//unpkg.yutent.top/@bytedo/wcui/dist/form/button.js'
import '//unpkg.yutent.top/@bytedo/wcui/dist/form/radio.js'
import '//unpkg.yutent.top/@bytedo/wcui/dist/form/switch.js'
import fetch from '//unpkg.yutent.top/@bytedo/fetch/dist/index.js'
2022-03-11 15:47:27 +08:00
import { Enum } from './lib/core.js'
2022-03-11 18:58:43 +08:00
import FIXED_18030 from './lib/18030.js'
2022-03-11 15:47:27 +08:00
2022-03-11 18:58:43 +08:00
const WB_CODE_NAME = { 1: '一级简码', 2: '二级简码', 3: '三级简码', 4: '四级简码' }
2022-03-11 15:47:27 +08:00
const WB_TABLE = new Enum()
2022-03-11 18:58:43 +08:00
const WB_TABLE_18030 = new Enum(FIXED_18030)
2022-03-11 12:13:08 +08:00
Anot.hideProperty(WB_TABLE, 'length', 0)
Anot({
$id: 'app',
state: {
2022-03-11 15:47:27 +08:00
single: 0,
words: 0,
result: '',
filter: {
2022-03-11 18:58:43 +08:00
text: '',
2022-03-11 15:56:24 +08:00
table: '86'
2022-03-11 15:47:27 +08:00
}
2022-03-11 12:13:08 +08:00
},
mounted() {
2022-03-11 12:15:23 +08:00
fetch('./data/table.txt')
2022-03-11 12:13:08 +08:00
.then(r => r.text())
.then(r => {
2022-03-11 16:48:07 +08:00
//
2022-03-11 12:13:08 +08:00
r.split('\n').forEach(it => {
it = it
.trim()
.split(' ')
.map(_ => _.trim())
let k = it.shift()
if (k) {
2022-03-11 15:47:27 +08:00
WB_TABLE.add(k, it)
2022-03-11 12:13:08 +08:00
}
})
this.single = WB_TABLE.length
})
2022-03-11 15:47:27 +08:00
},
methods: {
search() {
2022-03-11 18:58:43 +08:00
var { text, table } = this.filter
2022-03-11 15:56:24 +08:00
var reverse = false
2022-03-11 18:58:43 +08:00
var res, res18030
2022-03-11 15:47:27 +08:00
2022-03-11 18:58:43 +08:00
text = text.trim().toLowerCase()
2022-03-11 15:47:27 +08:00
2022-03-11 18:58:43 +08:00
if (!text) {
return
}
reverse = /^[a-z]{1,4}$/.test(text)
2022-03-11 15:47:27 +08:00
2022-03-11 16:23:29 +08:00
if (!reverse) {
2022-03-11 18:58:43 +08:00
text = text.replace(/[\sa-z]/g, '')
2022-03-11 16:23:29 +08:00
}
2022-03-11 18:58:43 +08:00
if (reverse || text.length === 1) {
res = [WB_TABLE.get(text)]
if (table === '18030') {
res18030 = [WB_TABLE_18030.get(text)]
}
2022-03-11 16:48:07 +08:00
} else {
2022-03-11 18:58:43 +08:00
res = text.split('').map(t => WB_TABLE.get(t))
if (table === '18030') {
res18030 = text.split('').map(t => WB_TABLE_18030.get(t))
}
2022-03-11 16:23:29 +08:00
}
2022-03-11 15:47:27 +08:00
2022-03-11 16:23:29 +08:00
if (reverse) {
2022-03-11 18:58:43 +08:00
text = text.toUpperCase()
// 反查时, 直接替换结果
if (res18030 && res18030.length) {
res = res18030
}
2022-03-11 16:23:29 +08:00
if (res[0]) {
2022-03-11 18:58:43 +08:00
res = `${text} 】👉\t${res[0]
.map(
t =>
`${t}(${(res18030 && res18030.length ? WB_TABLE_18030.get(t) : WB_TABLE.get(t))
.join('、')
.toUpperCase()})`
)
.join('\t\t')}`
2022-03-11 15:56:24 +08:00
} else {
2022-03-11 18:58:43 +08:00
res = `${text} 】👉\t无结果, 请检查你的输入是否正确, 如果确认无误, 可以反馈缺失字库。`
2022-03-11 15:56:24 +08:00
}
2022-03-11 15:47:27 +08:00
} else {
2022-03-11 18:58:43 +08:00
if (res18030 && res18030.length) {
res18030.forEach((it, i) => {
if (it) {
res[i] = it
}
})
}
2022-03-11 16:23:29 +08:00
res = res
.map((it, i) => {
if (it) {
2022-03-11 18:58:43 +08:00
return `${text[i]} 】👉\t${it
.map(t => `${WB_CODE_NAME[t.length]}: ${t.toUpperCase()}`)
2022-03-11 16:23:29 +08:00
.join('\t\t')}`
} else {
return `${
2022-03-11 18:58:43 +08:00
text[i]
2022-03-11 16:23:29 +08:00
} 👉\t无结果, 请检查你的输入是否正确, 如果确认无误, 可以反馈缺失字库`
}
})
.join('\n')
2022-03-11 15:47:27 +08:00
}
2022-03-11 16:23:29 +08:00
2022-03-11 18:58:43 +08:00
this.result = `查询结果: \n${res}`
2022-03-11 15:47:27 +08:00
}
2022-03-11 12:13:08 +08:00
}
})