Files
EdgeAdmin/web/views/@default/servers/server/settings/waf/ipadmin/selectCountriesPopup.js

197 lines
3.7 KiB
JavaScript

Tea.context(function () {
var commonGroupName = "常用"
this.letterGroups = [
{
"code": commonGroupName,
"count": 0,
"countMatched": 0
},
{
"code": "ABC",
"count": 0,
"countMatched": 0
},
{
"code": "DEF",
"count": 0,
"countMatched": 0
},
{
"code": "GHI",
"count": 0,
"countMatched": 0
},
{
"code": "JKL",
"count": 0,
"countMatched": 0
},
{
"code": "MNO",
"count": 0,
"countMatched": 0
},
{
"code": "PQR",
"count": 0,
"countMatched": 0
},
{
"code": "STU",
"count": 0,
"countMatched": 0
},
{
"code": "VWX",
"count": 0,
"countMatched": 0
},
{
"code": "YZ",
"count": 0,
"countMatched": 0
}
]
this.commonGroupName = commonGroupName
this.selectedGroup = commonGroupName
this.letterCountries = {}
let that = this
this.countSelectedCountries = this.countries.$count(function (k, country) {
return country.isChecked
})
this.countries.forEach(function (country) {
// letter
if (typeof (that.letterCountries[country.letter]) == "undefined") {
that.letterCountries[country.letter] = []
}
that.letterCountries[country.letter].push(country)
// common
if (country.isCommon) {
if (typeof that.letterCountries[commonGroupName] == "undefined") {
that.letterCountries[commonGroupName] = []
}
that.letterCountries[commonGroupName].push(country)
}
})
this.isCheckingAll = false
this.$delay(function () {
this.change()
})
this.checkAll = function () {
this.isCheckingAll = !this.isCheckingAll
this.countries.forEach(function (country) {
country.isChecked = that.isCheckingAll
})
this.change()
}
this.selectGroup = function (group) {
this.selectedGroup = group.code
}
this.selectCountry = function (country) {
country.isChecked = !country.isChecked
this.change()
}
this.deselectCountry = function (country) {
country.isChecked = false
this.change()
}
this.change = function () {
let that = this
this.letterGroups.forEach(function (group) {
group.count = 0
group.countMatched = 0
})
this.countries.forEach(function (country) {
that.letterGroups.forEach(function (group) {
if (group.code.indexOf(country.letter) >= 0 || (group.code == commonGroupName && country.isCommon)) {
if (country.isChecked) {
group.count++
}
if (that.matchCountry(country)) {
country.isMatched = (that.keyword.length > 0)
group.countMatched++
} else {
country.isMatched = false
}
}
})
})
}
this.submit = function () {
let selectedCountries = []
this.countries.forEach(function (country) {
if (country.isChecked) {
selectedCountries.push(country)
}
})
NotifyPopup({
code: 200,
data: {
selectedCountries: selectedCountries
}
})
}
/**
* searching
*/
this.searchBoxVisible = false
this.keyword = ""
this.showSearchBox = function () {
this.searchBoxVisible = true
this.$delay(function () {
this.$refs.searchBox.focus()
})
}
this.changeKeyword = function (event) {
this.keyword = event.value.trim()
this.change()
}
this.matchCountry = function (country) {
if (this.keyword.length == 0) {
return true
}
if (teaweb.match(country.name, this.keyword)) {
return true
}
if (country.pinyin != null && country.pinyin.length > 0) {
let matched = false
let that = this
country.pinyin.forEach(function (code) {
if (teaweb.match(code, that.keyword)) {
matched = true
}
})
if (matched) {
return true
}
}
if (country.codes != null && country.codes.length > 0) {
let matched = false
let that = this
country.codes.forEach(function (code) {
if (teaweb.match(code, that.keyword)) {
matched = true
}
})
if (matched) {
return true
}
}
return false
}
})