[]
        
(Showing Draft Content)

Wijmo_Cloud.Collection

Collection クラス

Firestore オブジェクトのドキュメントコレクションへのアクセスを提供するには、CollectionView クラスを拡張します。

Collection オブジェクトは、 Firestore オブジェクトを作成するときに {@link collecions} プロパティを設定するか、 the Collection コンストラクターを直接呼び出すことによって作成できます。たとえば:

import { Firestore, Collection } from '@mescius/wijmo.cloud';

// 3つのコレクションを含むFirestoreを作成します
const PROJECT_ID = 'XXXX-YYYY';
const API_KEY = 'ZZZZ';
let fsNWind = new Firestore(PROJECT_ID, API_KEY, {
    collections: [ 'Products', 'Categories', 'Suppliers' ]
});

// コンストラクターを呼び出して追加のコレクションを作成します
let customers = new Collection(fsNWind, 'Customers');

ほとんどのアプリケーションでは、 Collection オブジェクトは、 FlexGridMultiRow などのグリッドコントロールのデータソースとして使用されます。 たとえば:

import { FireStore, Collection } from '@mescius/wijmo.cloud';
import { FlexGrid } from '@mescius/wijmo.cloud';

// 3つのコレクションを含むFirestoreを作成します
const PROJECT_ID = 'XXXX-YYYY';
const API_KEY = 'ZZZZ';
let fsNWind = new Firestore(PROJECT_ID, API_KEY, {
    collections: [ 'Products', 'Categories', 'Suppliers' ]
});

// コレクションをFlexGridコントロールのitemsSourceとして使用します
let theGrid = new FlexGrid('#theGrid', {
    allowAddNew: true,
    allowDelete: true,
    itemsSource: fsNWind.getCollection('Products'),
});

このクラスは、Firestore クライアントライブラリの使用を使用しません。

Type parameters

  • T

階層

コンストラクタ

constructor

プロパティ

calculatedFields

calculatedFields: any

キーが計算フィールドを表し、値が式(関数または文字列)であるオブジェクトを取得または設定します。

計算フィールドにはプロキシが必要になります。 Ie11で使用する場合は、 https://www.npmjs.com/package/proxy-polyfill のようなポリフィルを使用します。

計算フィールドは、外部データを扱う場合に役立ちます。 たとえば、1人当たりの収入フィールド(gnp/pop)または利益フィールド(収益-経費)を追加できます。

計算フィールドは動的です。 計算で使用されるフィールドを変更すると、それらの値は自動的に更新されます。 また、読み取り専用です。 それらの計算に使用されるプロパティの値を変更することはできますが、結果を直接編集することはできません。

FlexGrid cellTemplatesとは異なり、計算フィールドは並べ替え、フィルタリング、およびグループ化に使用できます。 また、チャートやその他のWijmoコントロールで使用することもできます。

計算フィールドは、データ項目を引数または文字列として受け取る関数として定義できます。

以下に例を示します。

// regular data item
interface IDataItem {
  product: string,
  brand: string,
  unitPrice: number,
      qty: number,
  shipped: boolean
}
function getData(): IDataItem[] {
    return [
        {
product: 'Banana',
brand: 'Chiquita',
unitPrice: 45.95,
qty: 12,
discount: .08,
shipped: true
        }, ...
    ]
}

次のように関数ベースの計算フィールドを追加できます。

// 計算プロパティをIDataItemに追加します
interface ICalcDataItem extends IDataItem {
fullName: string;
allCaps: string;
totalPrice: number,
    tax: number;
}

let cv = new CollectionView<ICalcDataItem>(getData(), {
calculatedFields: {
fullName: ($: ICalcDataItem) => [$.brand, $.product].join(' '),
allCaps: ($: ICalcDataItem) => $.fullName.toUpperCase(),
totalPrice: ($: ICalcDataItem) => ($.unitPrice * $.qty) * (1 - $.discount),
tax: ($: ICalcDataItem) => $.totalPrice * 0.12
    }
});

関数ベースの計算フィールドは、次の理由により、通常、文字列ベースの計算フィールドよりも優れています。

1)設計時のエラーチェックとコマンド補完を提供します。 2)実行速度が速い 3)コンテンツセキュリティポリシー(CSP)に関する問題はありません。

あるいは、文字列ベースの計算フィールドを追加することもできます。

let cv = new CollectionView<IDataItem>(getData(), {
  calculatedFields: {
fullName: '[$.brand, $.product].join(" ")',
allCaps: '$.fullNameStr.toUpperCase()',
totalPrice: '($.unitPrice * $.qty) * (1 - $.discount)',
tax: '$.totalPrice * 0.12'
});

文字列式は、 項目の元の値と計算された値を含む コンテキスト変数「$」により、現在の項目を参照できます。 文字列ベースの計算フィールドには、関数ベースの計算フィールドよりも利点があり、場合によっては重要になることがあります。 いくつかの利点は次のとおりです。

1)少し簡潔です 2)データとして保存でき、実行時に簡単に変更できます。

canAddNew

canAddNew: boolean

コレクションに新しい項目を追加できるかどうかを示す値を取得します。

canCancelEdit

canCancelEdit: boolean

適用前の変更を破棄して編集されたオブジェクトの元の値を復元できるかどうかを示す値を取得します。

canChangePage

canChangePage: boolean

pageIndex 値を変更できるかどうかを示す値を取得します。

canFilter

canFilter: boolean

このビューがfilter プロパティによってフィルタリングをサポートしているかどうかを示す値を取得します。

このプロパティは、常に適用されるfiltersプロパティには影響しません。

canGroup

canGroup: boolean

このビューがgroupDescriptions プロパティによってグループ化をサポートしているかどうかを示す値を取得します。

canRemove

canRemove: boolean

コレクションから項目を削除できるかどうかを示す値を取得します。

canSort

canSort: boolean

このビューがsortDescriptions プロパティによってソートをサポートしているかどうかを示す値を取得します。

currentAddItem

currentAddItem: T | object

現在の追加トランザクションの間に追加される項目を取得します。

currentEditItem

currentEditItem: T

現在の編集トランザクションの間に編集される項目を取得します。

currentItem

currentItem: T | object & any

ビューの現在の項目を取得します。

currentPosition

currentPosition: number

ビューの現在の項目の順序位置を取得します。

deferCommits

deferCommits: boolean

Collectionがコミットをデータベースに戻す値を取得または設定します。

このプロパティのデフォルト値は falseです。これにより、 データへの変更はデータベースにすぐにコミットされます。

このプロパティを trueに設定すると、 自動的に trackChanges プロパティがtrueに設定されます。 この後、データへの変更(編集、追加、削除など)は追跡されますが、 commitChanges メソッドを呼び出して変更をコミットするか、 cancelChanges メソッドを呼び出して保留中の変更を破棄するまで、 データベースにコミットされません。

以下に例を示します。

import { Firestore} from '@mescius/wijmo.cloud';

// Firestoreデータソースを作成します
let fs = new Firestore(PROJECT_ID, API_KEY, {
    collections: [ 'restaurants' ]
});
let collection = fs.getCollection('restaurants');

// コミットされたコンテンツを延期します
collection.deferCommits = true;

// コミット/キャンセル変更ボタンを処理します
let btnCommit = document.getElementById('btn-commit') as HTMLButtonElement,
    btnCancel = document.getElementById('btn-cancel') as HTMLButtonElement;
btnCommit.addEventListener('click', () => collection.commitChanges());
btnCancel.addEventListener('click', () => collection.cancelChanges());
collection.hasPendingChangesChanged.addHandler((s, e) => {
   btnCommit.disabled = btnCancel.disabled = !collection.hasPendingChanges;
});

fields

fields: string[]

データベースから取得するフィールドの名前を含む配列を取得または設定します。

指定しない場合、すべてのフィールドが含まれます。

フィールド名を指定すると、アプリケーションに必要なデータのみをロードできるため、 パフォーマンスが向上し、ネットワークトラフィックが減少します。

たとえば、以下のサンプルコードは、「Customers」テーブルをロードし、5つのフィールドのみのデータを取得します。

import { Firestore, Collection } from '@mescius/wijmo.cloud';

// store(資格情報を提供する)を取得します
const store = new Firestore(PROJECT_ID, API_KEY);

// Customers コレクションをロードします
const customers = new Collection(store, 'Customers', {
    sortDescriptions: ['CustomerID'],
    fields: [
        'CustomerID',
        'CompanyName',
        'ContactName',
        'City',
        'Country'
    ],
    pageSize: 6 // サーバー側のページング
});

filter

filter: IPredicate | null

項目がビューに含める対象として適しているかどうかを判断するために使用されるコールバックを取得または設定します。

パラメータとして渡された項目を画面に表示する必要がある場合、コールバックはtrueを返します。

このプロパティのデフォルト値はnullです。これは、データがフィルタリングされないことを意味します。

filterOnServer

filterOnServer: boolean

Collection クラスと FlexGridFilter クラスを使用するときにサーバー側でフィルタリングを実行する必要があるかどうかを決定する値を取得または設定します。

サーバー側のフィルタリングでは、ダウンロードする必要があるデータが少ないため、パフォーマンスの向上に役立ちます。 ただし、Firestoreのサーバー側のフィルタリングにはいくつかの制限があります。

たとえば、「OR」を除いて、「AND」を使用して複数のフィルター条件を組み合わせることができます。 つまり、国が「ブラジル」に設定されているか、 または売上高が1000を超える項目を取得する場合、クエリを作成できません。

また、等価(==)と範囲演算子(>、 >=、 <、 <=)を組み合わせる場合は、 複合インデックスを作成する必要があります。 複数のフィールドで範囲演算子を使用することはできません。 また、非等値演算子やフルテキスト検索用の演算子はありません。

これらの制限は、サーバー側のクエリにのみ適用されます。 データをダウンロードすると、クライアントで任意のフィルタリング操作を実行できます。

Firestoreデータベースのクエリの詳細については、 「https://firebase.google.com/docs/firestore/query-data/queries」を参考してください。

このプロパティのデフォルト値は false です。

filters

filters: ObservableArray<IPredicate>

このCollectionView でフィルターとして使用される{@link Ipredicate} 関数の配列を取得します。

ビューに含めるには、アイテムはfilterプロパティとfiltersコレクション内のすべての述語を渡す必要があります。

getError

getError: IGetError | null

項目の特定のプロパティに検証エラーが含まれているかどうかを判定するコールバックを取得または設定します。

メソッドは、データ項目をパラメータとして、検証されるプロパティ、およびデータが既に解析されてデータ項目に適用されているかどうか(解析== false)またはユーザーが値を編集しようとして予期されたデータ型に解析できない値を入力したかどうかを記述する解析パラメータ(解析== true)を受け取ります。

このメソッドは、エラーメッセージを含む文字列を返します。エラーが検出されなかった場合はnullを返します。

次に例を示します。

view = new CollectionView(data, {
    getError: (item: any, prop: string, parsing: boolean) => {

        // 「解析に失敗しました」メッセージを表示します。
        if (parsing) {
            if (prop == 'date') {
                return 'Please enter a valid date in the format "MM/dd/yyyy"';
            } else if (prop == 'id') {
                return 'Please enter a positive number';
            }
        }

        //  保存(解析)されたデータが有効であることを確認します。
        if (prop == 'date' && item.date < minDate) {
            return 'Please enter a date after ' + Globalize.formatDate(minDate, 'd');
        } else if (prop == 'id' && item.id < 0) {
            return 'Please enter a positive number';
        }
    }
});

groupDescriptions

groupDescriptions: ObservableArray<GroupDescription>

コレクションの項目をビューでどのようにグループ化するかを記述するGroupDescription オブジェクトのコレクションを取得します。

groups

最上位レベルのグループを表すCollectionViewGroup オブジェクトの配列を取得します。

hasPendingChanges

hasPendingChanges: boolean

Collectionに保留中の変更があるかどうかを決定する値を取得します。

詳細については、deferCommits プロパティ、commitChanges および cancelChanges メソッドも参照してください。

isAddingNew

isAddingNew: boolean

追加トランザクションが進行中であるかどうかを示す値を取得します。

isEditingItem

isEditingItem: boolean

編集トランザクションが進行中であるかどうかを示す値を取得します。

isEmpty

isEmpty: boolean

このビューに項目が1つも含まれていないかどうかを示す値を取得します。

isLoading

isLoading: boolean

Collection が現在データをロードしていることを示す 値を取得します。

このプロパティを使用して、進捗状況インジケータを提供できます。

isPageChanging

isPageChanging: boolean

ページインデックスが変更されているかどうかを示す値を取得します。

isUpdating

isUpdating: boolean

通知が現在中断されているかどうかを示す値を取得します(beginUpdate およびendUpdate を参照)。

itemCount

itemCount: number

ページングを適用する前のビューの既知の項目の数を取得します。

items

items: (T | object)[]

ビューの項目を取得します。

itemsAdded

itemsAdded: ObservableArray<T | object>

trackChanges が有効化されてから、コレクションに追加されたレコードを含むObservableArray を取得します。

itemsEdited

itemsEdited: ObservableArray<T | object>

trackChanges が有効化されてから、コレクションで編集されたレコードを含むObservableArray を取得します。

itemsRemoved

itemsRemoved: ObservableArray<T | object>

trackChanges が有効化されてから、コレクションから削除されたレコードを含むObservableArray を取得します。

limit

limit: number

データベースからロードする項目の最大数を取得または設定します。

このプロパティのデフォルト値はzeroです。この場合、制限が設定されません。

name

name: string

この Collection の名前を取得します。

newItemCreator

newItemCreator: IItemCreator<T>

コレクションの新しい項目を作成する関数を取得または設定します。

作成関数が提供されない場合、CollectionView は、適切な型の項目を 初期化せずに作成しようとします。

作成関数が提供される場合、その関数は、パラメータを受け取らず、 コレクションに対して適切な型のオブジェクトを初期化して返す 必要があります。

pageCount

pageCount: number

総ページ数を取得します。

pageIndex

pageIndex: number

現在のページの0から始まるインデックスを取得します。

pageOnServer

pageOnServer: boolean

ページングをサーバーで実行するか、クライアントで実行するかを決定する 値を取得または設定します。

ページングを有効にするには、 pageSize プロパティを使用します。

このプロパティのデフォルト値は false です。

pageSize

pageSize: number

1ページに表示する項目数を取得または設定します。

refreshOnEdit

refreshOnEdit: boolean

CollectionView が、アイテムの編集後に結果(ソート、フィルター、およびグループ化を適用する)を自動的に更新するかどうかを決定する値を取得または設定します。

このプロパティはデフォルトで true に設定されます。これにより、 編集が完了した後にコレクションが常に正しくソート、フィルタリング、およびグループ化されるようにします。

false に設定する場合、アイテムの編集時に更新を遅延されます。 この場合、ソート、フィルタリング、およびグループ化の基準が変更されるか、 またはExcelと同様にrefresh メソッドが呼び出されるまで、コレクションは更新されません。

sortComparer

sortComparer: IComparer<T>

ソート時に値の比較に使用する関数を取得または設定します。

指定された場合、ソート比較関数は、パラメータとして任意の型の値を 2つ取り、最初の値が2番目の値と比べて小さい、等しい、または大きい のいずれであるかを示す値-1、0、または+1を返します。ソート比較関数がnullを返す場合は、標準の組み込み比較子が使用されます。

このsortComparer プロパティを使用すると、カスタム比較アルゴリズムを 提供でき、単純な文字列比較より、ユーザーが期待する結果によく 一致するソートシーケンスが得られる場合があります。

たとえば、 Dave Koele's Alphanum algorithmを参照してください。 このアルゴリズムは、文字列を文字列や数値から成る部分に分割した後、 数値部分は値順に、文字列部分はASCII順にソートします。 Daveは、この結果を「自然なソート順」と呼んでいます。

次の例は、sortComparer プロパティの一般的な使用方法を示します。

import { CollectionView, isString } from '@mescius/wijmo';

// カスタムソート比較子を使用してCollectionViewを作成します
const view = new CollectionView(data, {
    sortComparer: (a: any, b: any) => {
        return isString(a) && isString(b)
            ? alphanum(a, b) // 文字列に使用するカスタム比較子
            : null; // 文字列以外にはデフォルトの比較子を使用します
    }
});

次の例は、 Intl.Collator を使用してソート順を制御する方法を示しています。

import { CollectionView, isString } from '@mescius/wijmo';

// Intl.Collatorを使用してソートするCollectionViewを作成します
const collator = window.Intl ? new Intl.Collator() : null;
let view = new CollectionView(data, {
    sortComparer: (a, b) => {
        return isString(a) && isString(b) && collator
            ? collator.compare(a, b) // 文字列に使用するカスタム比較子
            : null; // 文字列以外にはデフォルトの比較子を使用します
    }
});

sortConverter

sortConverter: ISortConverter

ソート時の値の変換に使用される関数を取得または設定します。

指定されている場合、この関数は、SortDescription、データ項目、および変換する値をパラメーターとして受け取り、 変換後の値を返す必要があります。

このプロパティはソートの動作をカスタマイズする手段を提供します。 たとえば、 FlexGrid コントロールはこのプロパティを使用して、 マップされた列を生の値ではなく表示値を基準にソートします。

以下のサンプルコードは、国コードの整数を含む'country'プロパティをソートするときに、 対応する国名を使用してソートされるようにします。

const countries = 'US,Germany,UK,Japan,Italy,Greece'.split(',');
view.sortConverter = (sd: SortDescription, item: any, value: any) => {
    return sd.property === 'countryMapped'
        ? countries[value]; // 国IDを国名に変換します。
        : value;
}

次の例では、2つの値を組み合わせています。 この場合、国でソートすると、ビューが都市ごとに分割されます。

view.sortConverter: (sd: SortDescription, item: any, value: any) => {
if (sd.property == 'country') {
value = item.country + '\t' + item.city;
    }
    return value;
}

sortDescriptions

sortDescriptions: ObservableArray<SortDescription>

コレクションの項目をビューでどのようにソートするかを記述するSortDescription オブジェクトの配列を取得します。

sortNulls

sortNulls: SortNulls

null値のソート方法を決定する値を取得または設定します。

このプロパティはデフォルトでSortNulls.Lastに設定されます。これにより、コレクションをソートするとNULL値が最後に表示されます。 この動作はExcelと同じです。

sortOnServer

sortOnServer: boolean

ソート操作をサーバーでもクライアントでも実行する必要があるかどうかを決定する値を取得または設定します。

データのソート方法は sortDescriptions プロパティによって指定します。

このプロパティのデフォルト値は false です。

sourceCollection

sourceCollection: (T | object)[]

基になる(フィルタリングもソートもされていない)コレクションを取得または設定します。

store

store: Firestore

このCollection を含むFirestore を取得します。

totalItemCount

totalItemCount: number

ページングを適用する前のビュー内の項目の合計数を取得します。

Firestoreはコレクション内の項目を効率的にカウントする方法を提供しないため、 このプロパティはデフォルトで大きな値に設定されます。 ユーザーが実際の数を超えるページに移動しようとすると、カーソルは最後のページに移動し、 ソルは最後のページに移動し、

trackChanges

trackChanges: boolean

コントロールがデータの変更を追跡するかどうかを決定する値を取得または設定します。

このプロパティのデフォルト値が false の場合、CollectionView はどのデータ項目が変更されたかを追跡できません。trackChanges がtrueに設定されている場合、CollectionView は、 データの変更を追跡し、itemsAddeditemsRemoveditemsEdited の 各コレクションを介して変更を公開します。変更の追跡は、変更が有効であることをユーザーが確認した後にサーバーを更新する必要がある場合に役立ちます。

変更をコミットまたはキャンセルしたら、clearChanges メソッドを使用して、 itemsAddeditemsRemoveditemsEdited の各コレクションをクリアします。 CollectionView は、適切なCollectionView メソッド(editItem /commitEditaddNew /commitNewremove)を使用して行われた変更だけを追跡します。 データに直接行われた変更は追跡されません。

useStableSort

useStableSort: boolean

安定したソートアルゴリズムを使用するかどうかを取得または設定します。

安定したソートアルゴリズムは、同じキーを持つレコード間の相対的な順序を維持します。 たとえば、「Amount」フィールドを持つオブジェクトのコレクションを考えてみます。 このコレクションを「Amount」でソートする場合、安定したソートでは、 Amount値が同じレコード間で元の順序が保たれます。

このプロパティのデフォルトは false です。この場合は、 高速だが安定ではないJavaScriptの組み込みソートメソッドが CollectionView で使用されます。

useStableSort をtrueに設定すると、すべてのブラウザーで安定したソートが保証されますが、ソート時間が30%~50%も長くなります。

注意:Chromeはバージョン70以降、Firefoxバージョン3以降は安定したソートを提供します。 ES2019の場合 、ソートは安定している必要があります。 ES2018までのECMAScript第1版では、不安定になることが許可されていました。

useStableSortプロパティをtrueに設定すると、すべてのブラウザー(IE11も含む)で安定したソートが保証されますが、ソートにかかる時間が30%~50%増加します。

メソッド

addNew

  • addNew(item?: T | object, commit?: boolean): T | object
  • コレクションに新しい項目を追加します。

    このメソッドをパラメータなしで呼び出すと、新しい項目が作成されてコレクションに追加され、 commitNewメソッドで新しい項目がコミットされるか、 cancelNewメソッドでキャンセルされるまで、リフレッシュ操作が保留されます。

    次のコードは、addNew メソッドの典型的な使用方法を示します。

    // 新しい項目を作成し、それをコレクションに追加します
    var newItem = view.addNew();
    
    // 新しい項目を初期化します
    newItem.id = getFreshId();
    newItem.name = '新しい顧客';
    
    // ビューをリフレッシュできるように新しい項目をコミットします
    view.commitNew();

    新しい項目をsourceCollection にプッシュしてから、refresh メソッドを呼び出すことで、 新しい項目を追加することもできます。addNew では、 ユーザーが追加操作をキャンセルできるため、ユーザー対話式のシナリオ(データグリッドに新しい項目の追加するなど)で特に便利です。 また、追加操作がコミットされるまで、新しい項目がソートされたり、 フィルタ処理でビューから除外されないようにします。

    コレクションに calculatedFields がない限り、新しい項目はデフォルトで空のオブジェクトです。 この場合、新しい項目のプロパティは、データ型に応じた値に設定されます(文字列型プロパティの場合は空の文字列、数値型プロパティの場合はゼロ、その他のデータ型の場合はnull)。

    多くの場合、計算フィールドは文字列がnullでないことに依存する式に依存するため、 この動作は便利です。ただし、newItemCreatorプロパティを、 新しい項目を作成して初期化する関数に設定することで、 この動作をカスタマイズできます。

    引数

    • オプション item: T | object

      コレクションに追加する項目(オプション)。

    • オプション commit: boolean

      新しい項目をすぐにコミットするかどうか。

    戻り値 T | object

    コレクションに追加された項目、またはトランザクションが失敗した場合は null。

beginUpdate

  • beginUpdate(): void

cancelChanges

  • cancelChanges(): void
  • サーバーにコミットせずに、itemsAddeditemsRemoveditemsEdited の各コレクションの全項目をクリアすることによってすべての変更をキャンセルします。

    このメソッドは、deferCommitsプロパティと共に使用されます。

    戻り値 void

cancelEdit

  • cancelEdit(): void

cancelNew

  • cancelNew(): void

clearChanges

  • clearChanges(): void
  • itemsAddeditemsRemoveditemsEdited の各コレクションの全項目をクリアすることによってすべての変更をクリアします。

    このメソッドは、変更をサーバーに確定した後またはデータをサーバーから更新した後に呼び出します。

    戻り値 void

commitChanges

  • commitChanges(committed?: Object): void
  • すべての保留中の変更をサーバーにコミットします。

    変更内容は、itemsEditeditemsAdded}、およびitemsRemovedコレクションに含まれ、 正常にコミットされた後、 自動的にクリアされます。

    変更内容はトランザクションでコミットされるため、操作中にエラーが発生した場合、 変更が適用されません。 Firestoreトランザクションの詳細については、[Firestoreトランザクション](https://firebase.google.com/docs/firestore/manage-data/transactions)をご参考ください。

    また、deferCommitsプロパティも参照してください。

    引数

    • オプション committed: Object

      コミット操作が完了したときに呼び出されるオプションコールバック。 コールバックはXMLHttpRequestパラメーターを取り、 エラー情報がある場合はそれを含め、 リクエスト結果に関する情報が含まれます。

    戻り値 void

commitEdit

  • commitEdit(): void

commitNew

  • commitNew(): void

contains

  • contains(item: T): boolean

deferUpdate

  • deferUpdate(fn: Function, force?: boolean): void
  • beginUpdate/endUpdate ブロック内で関数を実行します。

    この関数が終了するまでコレクションはリフレッシュされません。 deferUpdateメソッドは、update関数が例外を生成した場合でもendUpdate が呼び出されるようにします。

    引数

    • fn: Function

      更新なしで実行する関数。

    • オプション force: boolean

      更新の終了時に強制的に更新するかどうか。

    戻り値 void

editItem

  • editItem(item: T): void

endUpdate

  • endUpdate(force?: boolean): void

getAggregate

  • getAggregate(aggType: Aggregate, binding: string, currentPage?: boolean): any
  • このコレクション内の項目の集計値を計算します。

    引数

    • aggType: Aggregate

      計算する集計のタイプ。

    • binding: string

      集計するプロパティ。

    • オプション currentPage: boolean

      現在のページの項目だけを含めるかどうか。

    戻り値 any

    集計値。

getSubCollection

  • getSubCollection(item: any, name: string, options?: any): Collection
  • データ項目からサブコレクションを取得します。

    Firestoreコレクションの項目には、サブコレクションが含まれる場合があります。

    サブコレクションは、配列とは異なり、 データ項目(ドキュメント)が読み込まれるときに自動的に読み込まれません。 getSubCollectionメソッドを使用して明示的にロードする必要があります。

    サブコレクションは同じFirestoreを使用するため、 親コレクションと同じセキュリティ資格情報を持ちます。

    例えば、

    import { Firestore, Collection } from '@mescius/wijmo.cloud';
    
    // オブジェクトを作成します。 
    const PROJECT_ID = 'XXXX-YYYY';
    const API_KEY = 'ZZZZ';
    const store = new Firestore(PROJECT_ID, API_KEY);
    
    // トップレベルの「候補」コレクションをロードします。
    const suggestions = new Collection(store, 'suggestions', {
        loaded: s => {
            console.log(`loaded ${s.items.length} suggestions.`);
    
            // 最初の候補の「コメント」サブコレクションをロードします。
            let comments = new SubCollection(store, s.items[0], 'comments', {
                loaded: s => {
                    console.log(`first suggestion has ${s.items.length} comments.`);
                }
            });
         }
    });

    引数

    • item: any

      サブコレクションを含むデータ項目。

    • name: string

      サブコレクションの名前。

    • オプション options: any

      サブコレクション 初期化データ(プロパティ値とイベントハンドラ)を含むJavaScriptオブジェクト。

    戻り値 Collection

    サブコレクションを含むCollectionオブジェクト。

implementsInterface

  • implementsInterface(interfaceName: string): boolean

load

  • load(keepPosition?: boolean): void
  • コレクションのデータをロードまたは再ロードします。

    引数

    • オプション keepPosition: boolean

      カーソル位置を維持したままにするかどうか。

    戻り値 void

moveCurrentTo

  • moveCurrentTo(item: T | object): boolean
  • 指定した項目をビューの現在の項目に設定します。

    引数

    • item: T | object

      現在の項目として設定する項目。

    戻り値 boolean

moveCurrentToFirst

  • moveCurrentToFirst(): boolean

moveCurrentToLast

  • moveCurrentToLast(): boolean

moveCurrentToNext

  • moveCurrentToNext(): boolean

moveCurrentToPosition

  • moveCurrentToPosition(index: number): boolean

moveCurrentToPrevious

  • moveCurrentToPrevious(): boolean

moveToFirstPage

  • moveToFirstPage(): boolean

moveToLastPage

  • moveToLastPage(): boolean

moveToNextPage

  • moveToNextPage(): boolean

moveToPage

  • moveToPage(index: number): boolean
  • 指定したインデックスにあるページに移動します。

    引数

    • index: number

      移動先ページのインデックス。

    戻り値 boolean

    ページのインデックスが正常に変更された場合はTrue。

moveToPreviousPage

  • moveToPreviousPage(): boolean

onCollectionChanged

onCurrentChanged

onCurrentChanging

onError

  • error イベントを発生させます。

    error イベントを発生させます。 デフォルトでは、エラーによって例外が生成され、データのリフレッシュがトリガされます。 この動作を回避するには、イベントハンドラでRequestErrorEventArgs.cancel パラメータをtrueに設定します。

    引数

    戻り値 boolean

onHasPendingChangesChanged

  • onHasPendingChangesChanged(e?: EventArgs): void

onLoaded

  • loaded イベントを発生させます。

    引数

    戻り値 void

onLoading

onPageChanged

onPageChanging

onSourceCollectionChanged

  • onSourceCollectionChanged(e?: EventArgs): void

onSourceCollectionChanging

orderBy

  • orderBy(field?: string, ascending?: boolean): Collection
  • サーバーでソートの基準となるフィールドを指定します。

    orderBy メソッドを数回呼び出すことで、複数のフィールドでソートを行えます。

    orderBy 演算子で作成されたソートは、 sortOnServer プロパティの設定に関係なく、常にサーバーに適用されます。

    引数

    • オプション field: string

      並べ替えの基準となるフィールドの名前、またはすべての並べ替えをクリアする場合はnull。

    • オプション ascending: boolean

      フィールドを昇順でソートするか降順でソートするか。

    戻り値 Collection

refresh

  • refresh(): void

remove

  • remove(item: any): void
  • commitNew をオーバーライドして、データベースから項目を削除します。

    引数

    • item: any

      データベースから削除する項目。

    戻り値 void

removeAt

  • removeAt(index: number): void
  • 指定したインデックスにある項目をコレクションから削除します。

    引数

    • index: number

      コレクションから削除する項目のインデックス。このインデックスは、ソースコレクションに対してではなくビューに対する相対インデックスです。

    戻り値 void

select

  • サーバーから取得する必要があるフィールドを定義します。

    select メソッドは、fields プロパティの代替です。

    引数

    • Rest ...fields: string[]

      取得するフィールドの名前を含む配列。

    戻り値 Collection

updateFilterDefinition

  • updateFilterDefinition(filterProvider: any): void
  • FlexGridFilter などの既知のフィルタプロバイダに基づいてフィルタ定義を更新します。

    引数

    • filterProvider: any

      既知のフィルタプロバイダ。通常はFlexGridFilter のインスタンス。

    戻り値 void

where

  • where(field?: string, operator?: string, value?: any): Collection
  • サーバーに適用するフィルタを指定します。

    複合フィルタを作成するには、where メソッドを数回呼び出すことができます。

    where 演算子を使用して作成されたフィルタは、 filterOnServer プロパティの設定に関係なく、常にサーバーに適用されます。

    引数

    • オプション field: string

      フィルタするフィールド、またはすべてのフィルタをクリアする場合はnull。

    • オプション operator: string

      フィルター演算子 (>、 >=、 ==、 <、 <=、 または IN)

    • オプション value: any

      フィルタリングに使用する値。

    戻り値 Collection

イベント

collectionChanged

コレクションが変更されたときに発生します。

currentChanged

currentChanged: Event<ICollectionView<T>, EventArgs>

現在の項目が変更された後に発生します。

currentChanging

currentChanging: Event<ICollectionView<T>, CancelEventArgs>

現在の項目が変更される前に発生します。

error

データの読み込みまたは書き込みエラーがあるときに発生します。

hasPendingChangesChanged

hasPendingChangesChanged: Event<Collection, EventArgs>

hasPendingChanges プロパティの値が変更されたときに発生します。

deferCommitsプロパティも参考してください。

loaded

Collection がデータのロードを完了したときに発生します。

loading

Collection がデータのロードを開始するときに発生します。

pageChanged

ページインデックスが変更された後に発生します。

pageChanging

ページインデックスが変更される前に発生します。

sourceCollectionChanged

sourceCollectionChanged: Event<ICollectionView<T>, EventArgs>

sourceCollection プロパティの値が変化した後に発生します。

sourceCollectionChanging

sourceCollectionChanging: Event<ICollectionView<T>, CancelEventArgs>

sourceCollection プロパティの値が変化する前に発生します。