Как применить подсветку к материалу фильтра данных

diff(diff(x)) (или diff(x,differences=2): благодаря @ZheyuanLi) по существу вычисляет дискретный аналог второй производной, поэтому должен быть отрицательным при локальных максимумах. +1 ниже заботится о том, что результат diff короче входного вектора.

edit: добавлено @ Коррекция Томми для случаев, когда delta-x не является 1 ...

tt <- c(1,2,3,2,1, 1, 2, 1)
which(diff(sign(diff(tt)))==-2)+1

Мое предложение выше ( http://statweb.stanford.edu/~tibs/PPC/Rdist/ ) предназначено для случая, когда данные более шумны.

3
задан palAlaa 26 February 2019 в 05:26
поделиться

1 ответ

Мне удалось создать рабочую демонстрацию этого. Мой класс HighlightSearchPipe выглядит следующим образом:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'highlightSearch'
})
export class HighlightSearchPipe implements PipeTransform {

  transform(value: string, search: string): string {
    const valueStr = value + ''; // Ensure numeric values are converted to strings
    return valueStr.replace(new RegExp('(?![^&;]+;)(?!<[^<>]*)(' + search + ')(?![^<>]*>)(?![^&;]+;)', 'gi'), '<strong class="your-class">$1</strong>');
  }
}

Я изменил класс Typescript, который содержит функцию applyFilter(), следующим образом:

i. Добавлена ​​переменная класса filterText, чтобы текст фильтра, набранный пользователем, был доступен в HTML. Эта переменная обновляется в функции applyFilter()

ii. Удален вызов к this.highlight.transform(this.dataSource.filter, this.searchKeyword); в applyFilter()

@Component({
  ...
})
export class TableFilteringExample {
  ...
  filterText = '';

  applyFilter(filterValue: string) {
    this.filterText = filterValue.trim();
    this.dataSource.filter = this.filterText.toLowerCase();
  }
}

В компоненте HTML я изменил способ рендеринга ячеек с:

<ng-container matColumnDef="name">
  <th mat-header-cell *matHeaderCellDef> Name </th>
  <td mat-cell *matCellDef="let element">{{element.name}}</td>
</ng-container>

на:

<ng-container matColumnDef="name">
  <th mat-header-cell *matHeaderCellDef> Name </th>
  <td mat-cell *matCellDef="let element" [innerHTML]="element.name | highlightSearch: filterText"></td>
</ng-container>

Таким образом, значение ячейки (в данном случае element.name) способно отображать HTML. Он использует канал highlightSearch для преобразования значения и выделения его части, которая соответствует фильтру.

0
ответ дан Ian A 26 February 2019 в 05:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: