mirror of
https://github.com/PeWu/topola-viewer.git
synced 2026-07-18 09:41:47 +00:00
Refactoring: Move data loading code under the datasource directory
This commit is contained in:
30
src/datasource/data_source.ts
Normal file
30
src/datasource/data_source.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import {IndiInfo} from 'topola';
|
||||
import {TopolaData} from '../util/gedcom_util';
|
||||
|
||||
/** Supported data sources. */
|
||||
export enum DataSourceEnum {
|
||||
UPLOADED,
|
||||
GEDCOM_URL,
|
||||
WIKITREE,
|
||||
}
|
||||
|
||||
/** Source specification together with individual selection. */
|
||||
export interface SourceSelection<SourceSpecT> {
|
||||
spec: SourceSpecT;
|
||||
selection?: IndiInfo;
|
||||
}
|
||||
|
||||
/** Interface encapsulating functions specific for a data source. */
|
||||
export interface DataSource<SourceSpecT> {
|
||||
/**
|
||||
* Returns true if the application is now loading a completely new data set
|
||||
* and the existing one should be wiped.
|
||||
*/
|
||||
isNewData(
|
||||
newSource: SourceSelection<SourceSpecT>,
|
||||
oldSource: SourceSelection<SourceSpecT>,
|
||||
data?: TopolaData,
|
||||
): boolean;
|
||||
/** Loads data from the data source. */
|
||||
loadData(spec: SourceSelection<SourceSpecT>): Promise<TopolaData>;
|
||||
}
|
||||
Reference in New Issue
Block a user