Browse Source

refactor: move DataSourceProps to types file

feature/data-sources
danstarns 2 years ago
parent
commit
5d6c479a99
  1. 40
      docs/api/datasource.md
  2. 4
      src/data_sources/index.ts
  3. 1
      src/data_sources/model/DataRecords.ts
  4. 27
      src/data_sources/model/DataSource.ts
  5. 3
      src/data_sources/model/DataSources.ts
  6. 27
      src/data_sources/types.ts

40
docs/api/datasource.md

@ -34,30 +34,12 @@ dataSource.addRecord({ id: 'id3', name: 'value3' });
* `props` **DataSourceProps** Properties to initialize the data source.
* `opts` **DataSourceOptions** Options to initialize the data source.
## id
DataSource id.
Type: [string][5]
## records
DataSource records.
Type: (DataRecords | [Array][6]\<DataRecord> | [Array][6]\<DataRecordProps>)
## transformers
DataSource validation and transformation factories.
Type: DataSourceTransformers
## defaults
Returns the default properties for the data source.
These include an empty array of records and an empty object of transformers.
Returns **[Object][7]** The default attributes for the data source.
Returns **[Object][5]** The default attributes for the data source.
## constructor
@ -101,16 +83,16 @@ If a transformer is provided for the `onRecordRead` event, it will be applied to
### Parameters
* `id` **([string][5] | [number][8])** The ID of the record to retrieve.
* `id` **([string][6] | [number][7])** The ID of the record to retrieve.
Returns **(DataRecord | [undefined][9])** The data record, or `undefined` if no record is found with the given ID.
Returns **(DataRecord | [undefined][8])** The data record, or `undefined` if no record is found with the given ID.
## getRecords
Retrieves all records from the data source.
Each record is processed with the `getRecord` method to apply any read transformers.
Returns **[Array][6]<(DataRecord | [undefined][9])>** An array of data records.
Returns **[Array][9]<(DataRecord | [undefined][8])>** An array of data records.
## removeRecord
@ -119,10 +101,10 @@ If a transformer is provided for the `onRecordDelete` event, it will be applied
### Parameters
* `id` **([string][5] | [number][8])** The ID of the record to remove.
* `id` **([string][6] | [number][7])** The ID of the record to remove.
* `opts` **RemoveOptions?** Options to apply when removing the record.
Returns **(DataRecord | [undefined][9])** The removed data record, or `undefined` if no record is found with the given ID.
Returns **(DataRecord | [undefined][8])** The removed data record, or `undefined` if no record is found with the given ID.
[1]: #addrecord
@ -132,12 +114,12 @@ Returns **(DataRecord | [undefined][9])** The removed data record, or `undefined
[4]: #removerecord
[5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
[5]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
[6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
[7]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
[7]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined
[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array

4
src/data_sources/index.ts

@ -38,9 +38,9 @@
import { ItemManagerModule, ModuleConfig } from '../abstract/Module';
import { AddOptions, RemoveOptions } from '../common';
import EditorModel from '../editor/model/Editor';
import DataSource, { DataSourceProps } from './model/DataSource';
import DataSource from './model/DataSource';
import DataSources from './model/DataSources';
import { DataSourcesEvents } from './types';
import { DataSourcesEvents, DataSourceProps } from './types';
import { Events } from 'backbone';
export default class DataSourceManager extends ItemManagerModule<ModuleConfig, DataSources> {

1
src/data_sources/model/DataRecords.ts

@ -1,4 +1,3 @@
import { Model } from 'backbone';
import { AddOptions, Collection } from '../../common';
import { DataRecordProps } from '../types';
import DataRecord from './DataRecord';

27
src/data_sources/model/DataSource.ts

@ -34,38 +34,13 @@
import { AddOptions, CombinedModelConstructorOptions, Model, RemoveOptions } from '../../common';
import EditorModel from '../../editor/model/Editor';
import { DataRecordProps } from '../types';
import { DataRecordProps, DataSourceProps, DataSourceTransformers } from '../types';
import DataRecord from './DataRecord';
import DataRecords from './DataRecords';
import DataSources from './DataSources';
interface DataSourceOptions extends CombinedModelConstructorOptions<{ em: EditorModel }, DataSource> {}
export interface DataSourceProps {
/**
* DataSource id.
*/
id: string;
/**
* DataSource records.
*/
records?: DataRecords | DataRecord[] | DataRecordProps[];
/**
* DataSource validation and transformation factories.
*/
transformers?: DataSourceTransformers;
}
export interface DataSourceTransformers {
onRecordAdd?: (args: { record: DataRecordProps }) => DataRecordProps;
onRecordSet?: (args: { id: string | number; key: string; value: any }) => any;
onRecordDelete?: (args: { record: DataRecord }) => void;
onRecordRead?: (args: { record: DataRecord }) => DataRecord;
}
export default class DataSource extends Model<DataSourceProps> {
transformers: DataSourceTransformers;

3
src/data_sources/model/DataSources.ts

@ -1,6 +1,7 @@
import { Collection } from '../../common';
import EditorModel from '../../editor/model/Editor';
import DataSource, { DataSourceProps } from './DataSource';
import { DataSourceProps } from '../types';
import DataSource from './DataSource';
export default class DataSources extends Collection<DataSource> {
em: EditorModel;

27
src/data_sources/types.ts

@ -1,4 +1,6 @@
import { ObjectAny } from '../common';
import DataRecord from './model/DataRecord';
import DataRecords from './model/DataRecords';
export interface DataRecordProps extends ObjectAny {
/**
@ -12,6 +14,31 @@ export interface DataVariableListener {
event: string;
}
export interface DataSourceProps {
/**
* DataSource id.
*/
id: string;
/**
* DataSource records.
*/
records?: DataRecords | DataRecord[] | DataRecordProps[];
/**
* DataSource validation and transformation factories.
*/
transformers?: DataSourceTransformers;
}
export interface DataSourceTransformers {
onRecordAdd?: (args: { record: DataRecordProps }) => DataRecordProps;
onRecordSet?: (args: { id: string | number; key: string; value: any }) => any;
onRecordDelete?: (args: { record: DataRecord }) => void;
onRecordRead?: (args: { record: DataRecord }) => DataRecord;
}
/**{START_EVENTS}*/
export enum DataSourcesEvents {
/**

Loading…
Cancel
Save