import { PermissionsFilterDropdownComponent } from './components/common/permissions-filter-dropdown/permissions-filter-dropdown.component'
import { UsernamePipe } from './pipes/username.pipe'
import { LogoComponent } from './components/common/logo/logo.component'
+import { IsNumberPipe } from './pipes/is-number.pipe'
import localeAr from '@angular/common/locales/ar'
import localeBe from '@angular/common/locales/be'
PermissionsFilterDropdownComponent,
UsernamePipe,
LogoComponent,
+ IsNumberPipe,
],
imports: [
BrowserModule,
</svg>
<small>{{(document.storage_path$ | async)?.name}}</small>
</button>
- <div *ngIf="document.archive_serial_number" class="list-group-item me-2 bg-light text-dark p-1 border-0">
+ <div *ngIf="document.archive_serial_number | isNumber" class="list-group-item me-2 bg-light text-dark p-1 border-0">
<svg class="metadata-icon me-2 text-muted" fill="currentColor">
<use xlink:href="assets/bootstrap-icons.svg#upc-scan"/>
</svg>
import { DocumentTitlePipe } from 'src/app/pipes/document-title.pipe'
import { SafeUrlPipe } from 'src/app/pipes/safeurl.pipe'
import { DocumentCardLargeComponent } from './document-card-large.component'
+import { IsNumberPipe } from 'src/app/pipes/is-number.pipe'
const doc = {
id: 10,
CustomDatePipe,
IfPermissionsDirective,
SafeUrlPipe,
+ IsNumberPipe,
],
providers: [DatePipe],
imports: [
<small>{{document.created_date | customDate:'mediumDate'}}</small>
</div>
</div>
- <div *ngIf="document.archive_serial_number" class="ps-0 p-1">
+ <div *ngIf="document.archive_serial_number | isNumber" class="ps-0 p-1">
<svg class="metadata-icon me-2 text-muted" fill="currentColor">
<use xlink:href="assets/bootstrap-icons.svg#upc-scan"/>
</svg>
import { By } from '@angular/platform-browser'
import { TagComponent } from '../../common/tag/tag.component'
import { PaperlessTag } from 'src/app/data/paperless-tag'
+import { IsNumberPipe } from 'src/app/pipes/is-number.pipe'
const doc = {
id: 10,
IfPermissionsDirective,
SafeUrlPipe,
TagComponent,
+ IsNumberPipe,
],
providers: [DatePipe],
imports: [
NgbDropdownModule,
NgbModal,
NgbModalRef,
- NgbPagination,
NgbPopoverModule,
NgbTooltipModule,
} from '@ng-bootstrap/ng-bootstrap'
import { PermissionsGuard } from 'src/app/guards/permissions.guard'
import { SettingsService } from 'src/app/services/settings.service'
import { SETTINGS_KEYS } from 'src/app/data/paperless-uisettings'
+import { IsNumberPipe } from 'src/app/pipes/is-number.pipe'
const docs: PaperlessDocument[] = [
{
DocumentTitlePipe,
UsernamePipe,
SafeHtmlPipe,
+ IsNumberPipe,
],
providers: [
FilterPipe,
--- /dev/null
+import { IsNumberPipe } from './is-number.pipe'
+
+describe('IsNumberPipe', () => {
+ it('should detect numbers', () => {
+ const pipe = new IsNumberPipe()
+ expect(pipe.transform(0)).toBeTruthy()
+ expect(pipe.transform(123)).toBeTruthy()
+ expect(pipe.transform('123')).toBeFalsy()
+ expect(pipe.transform(null)).toBeFalsy()
+ expect(pipe.transform(undefined)).toBeFalsy()
+ expect(pipe.transform(NaN)).toBeFalsy()
+ })
+})
--- /dev/null
+import { Pipe, PipeTransform } from '@angular/core'
+
+@Pipe({
+ name: 'isNumber',
+})
+export class IsNumberPipe implements PipeTransform {
+ transform(value: any): boolean {
+ return typeof value === 'number' && !isNaN(value)
+ }
+}