|
|
|
import { Pipe, PipeTransform } from '@angular/core';
|
|
|
|
import { FacilityInfoUIItem } from '../babylon/view/facilityinfoinscene-window/facilityinfo-ui-item';
|
|
|
|
|
|
|
|
@Pipe({
|
|
|
|
name: 'facilitySort',
|
|
|
|
pure: false,
|
|
|
|
})
|
|
|
|
export class FacilitySortPipe implements PipeTransform {
|
|
|
|
|
|
|
|
transform(items: FacilityInfoUIItem[]) {
|
|
|
|
items.forEach(item=>{
|
|
|
|
if (!this.isHasNumber(item.getPropertyData().name)) {
|
|
|
|
item.getPropertyData().name = this.handleChineseNumber(item.getPropertyData().name)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
items.sort(function (a, b) {
|
|
|
|
var _a = a.getPropertyData().name.match(/^(.*?)(\d*)$/);
|
|
|
|
var _b = b.getPropertyData().name.match(/^(.*?)(\d*)$/);
|
|
|
|
if (_a[1] === _b[1]) {
|
|
|
|
return parseInt(_a[2] || 0) - parseInt(_b[2] || 0);
|
|
|
|
} else {
|
|
|
|
return _a[1].localeCompare(_b[1]);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
return items;
|
|
|
|
}
|
|
|
|
|
|
|
|
//处理 汉字数字
|
|
|
|
handleChineseNumber(str: string): string {
|
|
|
|
if (str.includes('一')) {
|
|
|
|
str = str.replace("一", "")
|
|
|
|
return `1${str}`
|
|
|
|
} else if (str.includes('二')) {
|
|
|
|
str = str.replace("二", "")
|
|
|
|
return `2${str}`
|
|
|
|
} else if (str.includes('三')) {
|
|
|
|
str = str.replace("三", "")
|
|
|
|
return `3${str}`
|
|
|
|
} else if (str.includes('四')) {
|
|
|
|
str = str.replace("四", "")
|
|
|
|
return `4${str}`
|
|
|
|
} else if (str.includes('五')) {
|
|
|
|
str = str.replace("五", "")
|
|
|
|
return `5${str}`
|
|
|
|
} else if (str.includes('六')) {
|
|
|
|
str = str.replace("六", "")
|
|
|
|
return `6${str}`
|
|
|
|
} else if (str.includes('七')) {
|
|
|
|
str = str.replace("七", "")
|
|
|
|
return `7${str}`
|
|
|
|
} else if (str.includes('八')) {
|
|
|
|
str = str.replace("八", "")
|
|
|
|
return `8${str}`
|
|
|
|
} else if (str.includes('九')) {
|
|
|
|
str = str.replace("九", "")
|
|
|
|
return `9${str}`
|
|
|
|
} else {
|
|
|
|
return str
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//正则校验 是否包含阿拉伯数字
|
|
|
|
isHasNumber(str: string): boolean {
|
|
|
|
let reg = /\d/;
|
|
|
|
return reg.test(str)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|