Files
openstapps/frontend/app/src/app/modules/data/data.module.ts
Thea Schöbl 77f41e1b15 refactor: update to node 22
refactor: remove deprecated "jetifier"
refactor: base migration to Angular v18
fix: angular warning
refactor: update capacitor to v6
refactor: update ngx-markdown to v18
refactor: update to ionic v8
refactor: remove deprecated @ionic-native/core (replaced by @awesome-cordova-plugins/core)
fix: build
fix: test
feat: temporarily use external node image in ci
feat: update to node 22
refactor: rebase
fix: prettier depencencies
ci: update android commandline tools
fix: prettier package type
ci: let pnpm handle build dependencies
refactor: revert to pnpm 8, angular 17
2025-06-25 15:11:58 +02:00

329 lines
12 KiB
TypeScript

/*
* Copyright (C) 2023 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {ScrollingModule} from '@angular/cdk/scrolling';
import {CommonModule} from '@angular/common';
import {provideHttpClient, withInterceptorsFromDi} from '@angular/common/http';
import {NgModule} from '@angular/core';
import {FormsModule} from '@angular/forms';
import {
IonAccordion,
IonButton,
IonCard,
IonCardHeader,
IonCardTitle,
IonCardContent,
IonAccordionGroup,
IonBreadcrumb,
IonBreadcrumbs,
IonButtons,
IonChip,
IonCol,
IonContent,
IonGrid,
IonHeader,
IonImg,
IonLabel,
IonList,
IonListHeader,
IonNote,
IonPopover,
IonRow,
IonSegment,
IonSegmentButton,
IonText,
IonThumbnail,
IonToolbar,
Platform,
IonMenuButton,
IonSearchbar,
IonTitle,
IonBackButton,
IonInfiniteScroll,
IonInfiniteScrollContent,
IonItem,
IonSkeletonText,
IonToast,
IonBadge,
IonCardSubtitle,
IonCheckbox,
IonFooter,
IonRouterLink,
} from '@ionic/angular/standalone';
import {TranslateModule} from '@ngx-translate/core';
import {MarkdownModule} from 'ngx-markdown';
import {MomentModule} from 'ngx-moment';
import {ThingTranslateModule} from '../../translation/thing-translate.module';
import {SimpleBrowser, browserFactory} from '../../util/browser.factory';
import {RoutingStackService} from '../../util/routing-stack.service';
import {UtilModule} from '../../util/util.module';
import {CalendarService} from '../calendar/calendar.service';
import {ScheduleProvider} from '../calendar/schedule.provider';
import {GeoNavigationDirective} from '../map/geo-navigation.directive';
import {MapWidgetComponent} from '../map/map-widget.component';
import {MenuModule} from '../menu/menu.module';
import {SettingsProvider} from '../settings/settings.provider';
import {StorageModule} from '../storage/storage.module';
import {ActionChipListComponent} from './chips/action-chip-list.component';
import {AddEventActionChipComponent} from './chips/data/add-event-action-chip.component';
import {LocateActionChipComponent} from './chips/data/locate-action-chip.component';
import {NavigateActionChipComponent} from './chips/data/navigate-action-chip.component';
import {EditEventSelectionComponent} from './chips/edit-event-selection.component';
import {CoordinatedSearchProvider} from './coordinated-search.provider';
import {DataFacetsProvider} from './data-facets.provider';
import {DataIconPipe} from './data-icon.pipe';
import {DataRoutingModule} from './data-routing.module';
import {DataProvider} from './data.provider';
import {DataDetailContentComponent} from './detail/data-detail-content.component';
import {DataDetailComponent} from './detail/data-detail.component';
import {DataPathComponent} from './detail/data-path.component';
import {AddressDetailComponent} from './elements/address-detail.component';
import {CertificationsInDetailComponent} from './elements/certifications-in-detail.component';
import {ExternalLinkComponent} from './elements/external-link.component';
import {FavoriteButtonComponent} from './elements/favorite-button.component';
import {LongInlineTextComponent} from './elements/long-inline-text.component';
import {OffersDetailComponent} from './elements/offers-detail.component';
import {OffersInListComponent} from './elements/offers-in-list.component';
import {OriginDetailComponent} from './elements/origin-detail.component';
import {OriginInListComponent} from './elements/origin-in-list.component';
import {StappsRatingComponent} from './elements/rating.component';
import {SimpleCardComponent} from './elements/simple-card.component';
import {SkeletonListItemComponent} from './elements/skeleton-list-item.component';
import {SkeletonSegmentComponent} from './elements/skeleton-segment-button.component';
import {SkeletonSimpleCardComponent} from './elements/skeleton-simple-card.component';
import {TitleCardComponent} from './elements/title-card.component';
import {DataListItemHostDefaultComponent} from './list/data-list-item-host-default.component';
import {DataListItemHostDirective} from './list/data-list-item-host.directive';
import {DataListItemComponent} from './list/data-list-item.component';
import {DataListComponent} from './list/data-list.component';
import {FoodDataListComponent} from './list/food-data-list.component';
import {SearchPageComponent} from './list/search-page.component';
import {SimpleDataListComponent} from './list/simple-data-list.component';
import {SkeletonListComponent} from './list/skeleton-list.component';
import {TreeListFragmentComponent} from './list/tree-list-fragment.component';
import {TreeListComponent} from './list/tree-list.component';
import {StAppsWebHttpClient} from './stapps-web-http-client.provider';
import {ArticleDetailContentComponent} from './types/article/article-detail-content.component';
import {ArticleListItemComponent} from './types/article/article-item.component';
import {BookDetailContentComponent} from './types/book/book-detail-content.component';
import {BookListItemComponent} from './types/book/book-list-item.component';
import {CatalogDetailContentComponent} from './types/catalog/catalog-detail-content.component';
import {CatalogListItemComponent} from './types/catalog/catalog-list-item.component';
import {DateSeriesDetailContentComponent} from './types/date-series/date-series-detail-content.component';
import {DateSeriesListItemComponent} from './types/date-series/date-series-list-item.component';
import {DishCharacteristicsComponent} from './types/dish/dish-characteristics.component';
import {DishDetailContentComponent} from './types/dish/dish-detail-content.component';
import {DishListItemComponent} from './types/dish/dish-list-item.component';
import {EventDetailContentComponent} from './types/event/event-detail-content.component';
import {EventListItemComponent} from './types/event/event-list-item.component';
import {EventRoutePathComponent} from './types/event/event-route-path.component';
import {FavoriteDetailContentComponent} from './types/favorite/favorite-detail-content.component';
import {FavoriteListItemComponent} from './types/favorite/favorite-list-item.component';
import {JobPostingDetailContentComponent} from './types/job-posting/job-posting-detail-content.component';
import {JobPostingListItemComponent} from './types/job-posting/job-posting-list-item.component';
import {MessageDetailContentComponent} from './types/message/message-detail-content.component';
import {MessageListItemComponent} from './types/message/message-list-item.component';
import {OrganizationDetailContentComponent} from './types/organization/organization-detail-content.component';
import {OrganizationListItemComponent} from './types/organization/organization-list-item.component';
import {PeriodicalDetailContentComponent} from './types/periodical/periodical-detail-content.component';
import {PeriodicalListItemComponent} from './types/periodical/periodical-list-item.component';
import {PersonDetailContentComponent} from './types/person/person-detail-content.component';
import {PersonListItemComponent} from './types/person/person-list-item.component';
import {PlaceDetailContentComponent} from './types/place/place-detail-content.component';
import {PlaceListItemComponent} from './types/place/place-list-item.component';
import {PlaceMensaDetailComponent} from './types/place/special/mensa/place-mensa-detail.component';
import {SemesterDetailContentComponent} from './types/semester/semester-detail-content.component';
import {SemesterListItemComponent} from './types/semester/semester-list-item.component';
import {VideoDetailContentComponent} from './types/video/video-detail-content.component';
import {VideoListItemComponent} from './types/video/video-list-item.component';
import {ShareButtonComponent} from './elements/share-button.component';
import {IonIconDirective} from 'src/app/util/ion-icon/ion-icon.directive';
/**
* Module for handling data
*/
@NgModule({
declarations: [
ActionChipListComponent,
AddEventActionChipComponent,
NavigateActionChipComponent,
EditEventSelectionComponent,
AddressDetailComponent,
CatalogDetailContentComponent,
CatalogListItemComponent,
CertificationsInDetailComponent,
DishCharacteristicsComponent,
DataDetailComponent,
DataDetailContentComponent,
DataIconPipe,
DataListComponent,
DataListItemComponent,
DataPathComponent,
EventRoutePathComponent,
DateSeriesDetailContentComponent,
DateSeriesListItemComponent,
DishDetailContentComponent,
DishListItemComponent,
EventDetailContentComponent,
EventListItemComponent,
FavoriteButtonComponent,
FavoriteDetailContentComponent,
SkeletonListComponent,
FavoriteListItemComponent,
FoodDataListComponent,
LocateActionChipComponent,
LongInlineTextComponent,
MessageDetailContentComponent,
MessageListItemComponent,
JobPostingDetailContentComponent,
JobPostingListItemComponent,
OffersDetailComponent,
OffersInListComponent,
OrganizationDetailContentComponent,
OrganizationListItemComponent,
OriginDetailComponent,
OriginInListComponent,
PersonDetailContentComponent,
PersonListItemComponent,
PlaceDetailContentComponent,
PlaceListItemComponent,
PlaceMensaDetailComponent,
SearchPageComponent,
SemesterDetailContentComponent,
SemesterListItemComponent,
DataListItemHostDirective,
DataListItemHostDefaultComponent,
SimpleCardComponent,
SkeletonListItemComponent,
SkeletonSegmentComponent,
StappsRatingComponent,
SkeletonSimpleCardComponent,
TreeListComponent,
TreeListFragmentComponent,
VideoDetailContentComponent,
VideoListItemComponent,
SimpleDataListComponent,
TitleCardComponent,
ExternalLinkComponent,
ArticleListItemComponent,
ArticleDetailContentComponent,
BookListItemComponent,
BookDetailContentComponent,
PeriodicalListItemComponent,
PeriodicalDetailContentComponent,
ShareButtonComponent,
],
exports: [
DataDetailComponent,
DataDetailContentComponent,
DataIconPipe,
DataListComponent,
DataListItemComponent,
DateSeriesListItemComponent,
PlaceListItemComponent,
SimpleCardComponent,
SkeletonListItemComponent,
SkeletonSimpleCardComponent,
SearchPageComponent,
SimpleDataListComponent,
OriginDetailComponent,
FavoriteButtonComponent,
TreeListComponent,
ExternalLinkComponent,
ArticleDetailContentComponent,
BookDetailContentComponent,
PeriodicalDetailContentComponent,
TitleCardComponent,
],
imports: [
CommonModule,
DataRoutingModule,
FormsModule,
MapWidgetComponent,
MarkdownModule.forRoot(),
MenuModule,
IonIconDirective,
MomentModule.forRoot({
relativeTimeThresholdOptions: {
m: 59,
},
}),
ScrollingModule,
StorageModule,
TranslateModule.forChild(),
ThingTranslateModule.forChild(),
UtilModule,
GeoNavigationDirective,
IonButton,
IonCard,
IonCardHeader,
IonCardTitle,
IonCardContent,
IonCardSubtitle,
IonNote,
IonLabel,
IonGrid,
IonCol,
IonRow,
IonList,
IonSegment,
IonListHeader,
IonSegmentButton,
IonChip,
IonImg,
IonPopover,
IonThumbnail,
IonBreadcrumbs,
IonBreadcrumb,
IonAccordion,
IonAccordionGroup,
IonText,
IonContent,
IonButtons,
IonHeader,
IonToolbar,
IonMenuButton,
IonSearchbar,
IonTitle,
IonBackButton,
IonInfiniteScroll,
IonInfiniteScrollContent,
IonItem,
IonSkeletonText,
IonToast,
IonBadge,
IonCheckbox,
IonFooter,
IonRouterLink,
],
providers: [
CoordinatedSearchProvider,
DataProvider,
DataFacetsProvider,
Geolocation,
ScheduleProvider,
StAppsWebHttpClient,
CalendarService,
RoutingStackService,
SettingsProvider,
{
provide: SimpleBrowser,
useFactory: browserFactory,
deps: [Platform],
},
provideHttpClient(withInterceptorsFromDi()),
],
})
export class DataModule {}