From 31b046ab4f95a032fbf35e57b29b1b60c62eee63 Mon Sep 17 00:00:00 2001 From: cpf <1105965053@qq.com> Date: Tue, 14 Dec 2021 10:40:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E7=AE=A1=E9=81=93?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/pages/facility-sort.pipe.ts | 67 +++++++++++++++++++ .../left-domain/left-domain.component.html | 4 +- .../left-domain/left-domain.component.ts | 1 - src/app/pages/pages.module.ts | 3 +- 4 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 src/app/pages/facility-sort.pipe.ts diff --git a/src/app/pages/facility-sort.pipe.ts b/src/app/pages/facility-sort.pipe.ts new file mode 100644 index 0000000..46d2c30 --- /dev/null +++ b/src/app/pages/facility-sort.pipe.ts @@ -0,0 +1,67 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import { FacilityInfoUIItem } from '../babylon/view/facilityinfoinscene-window/facilityinfo-ui-item'; + +@Pipe({ + name: 'facilitySort' +}) +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) + } + +} diff --git a/src/app/pages/left-domain/left-domain.component.html b/src/app/pages/left-domain/left-domain.component.html index c7fadf5..8c3842b 100644 --- a/src/app/pages/left-domain/left-domain.component.html +++ b/src/app/pages/left-domain/left-domain.component.html @@ -47,7 +47,7 @@