本文へ移動
cccskills
無料GitHub で公開

create-custom-filter

Create a custom filter for Datagrok by extending DG.Filter

インストール方法を見る

含まれるファイル(1)

  • SKILL.md3.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Create Custom Filter

Create a custom filter widget for the Datagrok filter panel.

Usage

/create-custom-filter [filter-name] [package-path]

Instructions

When this skill is invoked, help the user create a custom filter by extending DG.Filter.

Step 1: Create the filter class

Create a new TypeScript file in the package's src/filters/ directory.

The class must extend DG.Filter and implement the filtering logic. When the filter state changes, call this.dataFrame.filter to update the bitset.

import * as DG from 'datagrok-api/dg';

export class MyFilter extends DG.Filter {
  constructor() {
    super();
    // Initialize filter state
  }

  attach(dataFrame: DG.DataFrame): void {
    super.attach(dataFrame);
    // Set up UI, subscribe to events
    this.column = dataFrame.columns.byName(this.columnName);
    this.render();
  }

  applyFilter(): void {
    // Apply filtering logic to this.dataFrame.filter (a DG.BitSet)
    let filter = this.dataFrame.filter;
    for (let i = 0; i < this.dataFrame.rowCount; i++)
      filter.set(i, this.shouldInclude(i), false);
    filter.fireChanged();
  }

  private render(): void {
    // Build the filter's UI
    this.root.appendChild(/* UI elements */);
  }
}

Step 2: Register the filter

Use the decorator approach (preferred for datagrok-tools >= 4.12.x):

@grok.decorators.filter({
  semType: 'Country',  // optional: auto-apply to columns with this semantic type
})
export class MyFilter extends DG.Filter {
  /* ... */
}

Or use the function annotation approach in package.ts:

//name: My Filter
//description: A custom filter
//tags: filter
//output: filter result
export function myFilter() {
  return new MyFilter();
}

Step 3: Use the filter programmatically

The filter can be invoked via JS API:

let tv = grok.shell.addTableView(grok.data.demo.demog());
tv.filters({filters: [
  {type: 'MyPackage:myFilter', columnName: 'race'},
]});

Or added through the UI via the filter panel.

Key points

  • The semType option in the decorator auto-applies the filter to columns with that semantic type
  • Call this.dataFrame.filter.set(i, value, notify) to include/exclude rows; call fireChanged() after
  • The root property is the HTMLElement where you build the filter's UI
  • attach() is called when the filter is attached to a dataframe
  • For a real example, see: public/packages/Widgets/src/filters/radio-button-filter.ts
  • Both decorator and function annotation approaches are equivalent; prefer decorators

Behavior

  1. Ask the user what kind of filtering logic they need if not specified
  2. Create the filter class extending DG.Filter with proper filtering logic
  3. Register the filter using the decorator approach (or function annotation if preferred)
  4. Build appropriate UI for the filter widget
  5. Ensure imports are correct (import * as DG from 'datagrok-api/dg', import * as grok from 'datagrok-api/grok', import * as ui from 'datagrok-api/ui')
  6. Remind the user to build and publish the package

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Add support for a new curve data format in the Curves package converter system

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月12日 更新

Create info panels that appear in the context panel based on semantic types

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月12日 更新

Add a new single-objective optimization algorithm to the sci-comp library. Use when the user asks to implement a new optimizer (e.g. gradient descent, BFGS, simulated annealing, differential evolution).

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月12日 更新

Add unit tests to a Datagrok package

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月12日 更新

Answer a "how do I …" question about the platform with a Gherkin scenario on @datagrok-libraries/bdd that is filmed into a how-to video (grok-bdd guide), so the answer is demonstrated, sent as a video plus numbered steps, and kept as a regression test

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月12日 更新

Translate hand-written Playwright specs (or any existing UI tests) into Gherkin features on @datagrok-libraries/bdd, then prove the features test what they claim by backward-matching them against the originals with independent reviewers, and fix the gaps in the core, the library and the features

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月12日 更新

datagrok-ai のスキルをすべて見る

このスキルの問題を報告する