10 changed files with 150 additions and 75 deletions
@ -0,0 +1,68 @@ |
|||||||
|
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) |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue