Files
dspace-angular/src/config/app-config.interface.ts
2024-01-19 13:11:49 +01:00

79 lines
3.2 KiB
TypeScript

import { InjectionToken, Type } from '@angular/core';
import { makeStateKey } from '@angular/platform-browser';
import { Config } from './config.interface';
import { ServerConfig } from './server-config.interface';
import { CacheConfig } from './cache-config.interface';
import { INotificationBoardOptions } from './notifications-config.interfaces';
import { SubmissionConfig } from './submission-config.interface';
import { FormConfig } from './form-config.interfaces';
import { LangConfig } from './lang-config.interface';
import { ItemConfig } from './item-config.interface';
import { CollectionPageConfig } from './collection-page-config.interface';
import { ThemeConfig } from './theme.config';
import { AuthConfig } from './auth-config.interfaces';
import { UIServerConfig } from './ui-server-config.interface';
import { MediaViewerConfig } from './media-viewer-config.interface';
import { BrowseByConfig } from './browse-by-config.interface';
import { BundleConfig } from './bundle-config.interface';
import { ActuatorsConfig } from './actuators.config';
import { InfoConfig } from './info-config.interface';
import { CommunityListConfig } from './community-list-config.interface';
import { HomeConfig } from './homepage-config.interface';
import { MarkdownConfig } from './markdown-config.interface';
import { FilterVocabularyConfig } from './filter-vocabulary-config';
import { DiscoverySortConfig } from './discovery-sort.config';
import { QualityAssuranceConfig } from './quality-assurance.config';
import { HALDataService } from '../app/core/data/base/hal-data-service.interface';
import { DynamicFormControl } from '@ng-dynamic-forms/core/lib/component/dynamic-form-control-interface';
interface AppConfig extends Config {
ui: UIServerConfig;
rest: ServerConfig;
production: boolean;
cache: CacheConfig;
auth?: AuthConfig;
form: FormConfig;
notifications: INotificationBoardOptions;
submission: SubmissionConfig;
debug: boolean;
defaultLanguage: string;
languages: LangConfig[];
browseBy: BrowseByConfig;
communityList: CommunityListConfig;
homePage: HomeConfig;
item: ItemConfig;
collection: CollectionPageConfig;
themes: ThemeConfig[];
mediaViewer: MediaViewerConfig;
bundle: BundleConfig;
actuators: ActuatorsConfig
info: InfoConfig;
markdown: MarkdownConfig;
vocabularies: FilterVocabularyConfig[];
comcolSelectionSort: DiscoverySortConfig;
qualityAssuranceConfig: QualityAssuranceConfig;
}
/**
* Injection token for the app configuration.
* Provided in {@link InitService.providers}.
*/
const APP_CONFIG = new InjectionToken<AppConfig>('APP_CONFIG');
const APP_CONFIG_STATE = makeStateKey<AppConfig>('APP_CONFIG_STATE');
export interface LazyDataServicesMap {
[type: string]: () => Promise<Type<HALDataService<any>>>
}
export type DynamicFormControlFn = (model: string) => Type<DynamicFormControl>;
export const APP_DATA_SERVICES_MAP: InjectionToken<LazyDataServicesMap> = new InjectionToken<LazyDataServicesMap>('APP_DATA_SERVICES_MAP');
export const APP_DYNAMIC_FORM_CONTROL_FN: InjectionToken<DynamicFormControlFn> = new InjectionToken<DynamicFormControlFn>('APP_DYNAMIC_FORM_CONTROL_FN');
export {
AppConfig,
APP_CONFIG,
APP_CONFIG_STATE
};