223 lines
12 KiB
TypeScript
223 lines
12 KiB
TypeScript
|
|
import { NgModule, Injectable, APP_INITIALIZER } from '@angular/core';
|
|
import { BrowserModule } from '@angular/platform-browser';
|
|
import { AppRoutingModule } from './app-routing.module';
|
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
import { HttpClientModule, HttpInterceptor, HttpHandler, HttpRequest, HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
import { MaterialModule } from './material/material.module';
|
|
import { QrCodeModule } from 'ng-qrcode';
|
|
import { DatePipe } from '@angular/common';
|
|
import { ClipboardModule } from '@angular/cdk/clipboard';
|
|
|
|
import { AutofocusDirective } from './material/autofocus';
|
|
|
|
import { I18nPipe, I18nEmptyPipe } from './utils/i18n.pipe';
|
|
import { MomentPipe } from './utils/moment.pipe';
|
|
import { MainComponent } from './ui/main/main.component';
|
|
import { AccountComponent } from './pages/account/account.component';
|
|
import { ServicesComponent } from './pages/services/services.component';
|
|
import { AppComponent } from './app.component';
|
|
import { FormLoginComponent } from './pages/form-login/form-login.component';
|
|
import { FormLogin2FAComponent } from './pages/form-login-2fa/form-login-2fa.component';
|
|
import { TokensComponent } from './pages/tokens/tokens.component';
|
|
import { InvitesComponent } from './pages/invites/invites.component';
|
|
import { PermissionsComponent } from './ui/permissions/permissions.component';
|
|
import { ProfileFieldDialog, ProfileFieldsComponent, ProfileFieldBlob } from './ui/profilefields/profilefields.component';
|
|
import { ServicesGridComponent } from './ui/servicesgrid/servicesgrid.component';
|
|
import { ServicesTableComponent } from './ui/servicestable/servicestable.component';
|
|
import { ProfileFieldPgpBlob } from './ui/profilefields/binary/pgp/profilefield.pgp-blob';
|
|
import { QuotasComponent } from './ui/quotas/quotas.component';
|
|
import { SecurityComponent, SecurityKeyDialog, SecurityTotpDialog } from './pages/account/security/security.component';
|
|
import { VoucherComponent } from './pages/account/voucher/voucher.component';
|
|
import { VoucherDialog } from './pages/account/voucher/voucher.component';
|
|
import { InfoComponent } from './pages/account/info/info.component';
|
|
import { AliasesComponent } from './pages/account/aliases/aliases.component';
|
|
import { DomainsComponent } from './pages/account/domains/domains.component';
|
|
import { DyndnsComponent } from './pages/account/dyndns/dyndns.component';
|
|
import { ProfileComponent } from './pages/account/profile/profile.component';
|
|
import { PasswordComponent } from './pages/password/password.component';
|
|
import { PasswordResetComponent } from './pages/password-reset/password-reset.component';
|
|
import { RegisterComponent, RegisterDialog } from './pages/register/register.component';
|
|
import { UsernameDialog } from './pages/register/username-dialog/username.dialog';
|
|
import { UnavailableComponent } from './pages/unavailable/unavailable.component';
|
|
import { NotfoundComponent } from './pages/notfound/notfound.component';
|
|
import { HtmlComponent } from './utils/html/html.component';
|
|
import { ConfirmDialog } from './ui/confirm/confirm.component';
|
|
import { UserComponent } from './pages/user/user.component';
|
|
import { JitsiComponent, JitsiEditDialog, JitsiShareDialog } from './pages/jitsi/jitsi.component';
|
|
import { ParteyComponent } from './pages/partey/partey.component';
|
|
import { ParteyTimeslotsComponent, ParteyTimeslotDialog } from './pages/partey/timeslots/timeslots.compontent';
|
|
import { UrlShortenerComponent, UrlShortenerPasswordComponent, UrlShortenerShareDialog, UrlShortenerEditDialog } from './pages/urlshortener/urlshortener.component';
|
|
import { BorrowItemEditComponent, BorrowItemsComponent } from './pages/borrow/items/items.component';
|
|
import { BorrowRequestEditComponent, BorrowRequestsComponent } from './pages/borrow/requests/requests.component';
|
|
import { BorrowProvingComponent, BorrowProvingResultDialog } from './pages/borrow/proving/proving.component';
|
|
import { DividerComponent } from './ui/divider/divider.component';
|
|
import { DividertestComponent } from './pages/dividertest/dividertest.component';
|
|
|
|
import { I18nService, I18nPaginatorIntl } from './services/i18n.service';
|
|
import { MinetestAccountsComponent } from './pages/minetest/accounts/accounts.component';
|
|
import { BorrowComponent } from './pages/borrow/borrow.component';
|
|
import { DurationpickerComponent } from './ui/durationpicker/durationpicker.component';
|
|
import { InviteCodeComponent } from './pages/invites/code/code.component';
|
|
import { InviteEditComponent } from './pages/invites/edit/invite.edit';
|
|
import { MatPaginatorIntl } from '@angular/material/paginator';
|
|
import { JukeboxComponent } from './pages/jukebox/jukebox.compontent';
|
|
import { FormLoginOidcComponent } from './pages/form-login-oidc/form-login-oidc.component';
|
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
import { MomentDateModule } from '@angular/material-moment-adapter';
|
|
import { MAT_DATE_FORMATS } from '@angular/material/core';
|
|
import { DatetimepickerComponent } from './ui/datetimepicker/datetimepicker.component';
|
|
import { AdminComponent } from './pages/admin/admin.component';
|
|
import { AdminUsersComponent } from './pages/admin/users/users.component';
|
|
import { AdminUserEditDialog } from './pages/admin/users/user.edit';
|
|
import { AdminPermissionEditDialog } from './pages/admin/permissions/permission.edit';
|
|
import { AdminQuotaEditDialog } from './pages/admin/quotas/quota.edit';
|
|
import { AdminServiceEditDialog } from './pages/admin/services/service.edit';
|
|
import { AdminPermissionMappingEditDialog } from './pages/admin/permission-mappings/permission-mapping.edit';
|
|
import { AdminQuotaMappingEditDialog } from './pages/admin/quota-mappings/quota-mapping.edit';
|
|
import { AdminServicesComponent } from './pages/admin/services/services.component';
|
|
import { AdminPermissionsComponent } from './pages/admin/permissions/permissions.component';
|
|
import { AdminQuotasComponent } from './pages/admin/quotas/quotas.component';
|
|
import { AdminJitsiRoomsComponent } from './pages/admin/jitsi-rooms/jitsi-rooms.component';
|
|
import { AdminMinetestAccountsComponent } from './pages/admin/minetest-accounts/minetest-accounts.component';
|
|
import { AdminShortenedUrlsComponent } from './pages/admin/shortened-urls/shortened-urls.component';
|
|
import { AdminShortenedUrlEditDialog } from './pages/admin/shortened-urls/shortened-url.edit';
|
|
import { AdminJukeboxComponent } from './pages/admin/jukebox/jukebox.component';
|
|
import { AdminParteyMapsComponent } from './pages/admin/partey-maps/partey-maps.component';
|
|
import { AdminParteyTagsComponent } from './pages/admin/partey-tags/partey-tags.component';
|
|
import { AdminParteyReportsComponent } from './pages/admin/partey-reports/partey-reports.component';
|
|
import { AdminTimeslotsComponent } from './pages/admin/timeslots/timeslots.component';
|
|
import { AdminSystemPropertiesComponent } from './pages/admin/system-properties/system-properties.component';
|
|
import { AdminPermissionMappingsComponent } from './pages/admin/permission-mappings/permission-mappings.component';
|
|
import { AdminQuotaMappingsComponent } from './pages/admin/quota-mappings/quota-mappings.component';
|
|
import { AdminVoucherMappingsComponent } from './pages/admin/voucher-mappings/voucher-mappings.component';
|
|
import { AdminSystemProfileFieldsComponent } from './pages/admin/system-profile-fields/system-profile-fields.component';
|
|
import { AdminUserAliasesComponent } from './pages/admin/user-aliases/user-aliases.component';
|
|
import { AdminOidcClientsComponent } from './pages/admin/oidc-clients/oidc-clients.component';
|
|
import { AdminOidcClientEditDialog } from './pages/admin/oidc-clients/oidc-client.edit';
|
|
import { AdminI18nComponent } from './pages/admin/i18n/i18n.component';
|
|
import { AdminI18nEditDialog } from './pages/admin/i18n/i18n.edit';
|
|
import { AdminVoucherMappingEditDialog } from './pages/admin/voucher-mappings/voucher-mapping.edit';
|
|
import { AdminSystemPropertyEditDialog } from './pages/admin/system-properties/system-property.edit';
|
|
import { AdminSystemProfileFieldEditDialog } from './pages/admin/system-profile-fields/system-profile-field.edit';
|
|
import { AdminUserAliasEditDialog } from './pages/admin/user-aliases/user-alias.edit';
|
|
import { AdminJitsiRoomEditDialog } from './pages/admin/jitsi-rooms/jitsi-room.edit';
|
|
|
|
|
|
export function init_app(i18n: I18nService) {
|
|
return () => i18n.fetch()
|
|
}
|
|
|
|
@Injectable()
|
|
export class XhrInterceptor implements HttpInterceptor {
|
|
|
|
intercept(req: HttpRequest<any>, next: HttpHandler) {
|
|
const xhr = req.clone({
|
|
headers: req.headers.set('X-Requested-With', 'XMLHttpRequest').set('Content-Type', 'application/json;charset=UTF-8'), withCredentials: true
|
|
});
|
|
return next.handle(xhr);
|
|
}
|
|
}
|
|
|
|
@NgModule({
|
|
declarations: [
|
|
AutofocusDirective,
|
|
I18nPipe, I18nEmptyPipe,
|
|
MomentPipe,
|
|
MainComponent,
|
|
AppComponent,
|
|
AccountComponent,
|
|
FormLoginComponent,
|
|
FormLogin2FAComponent,
|
|
FormLoginOidcComponent,
|
|
TokensComponent,
|
|
InvitesComponent, InviteCodeComponent, InviteEditComponent,
|
|
ServicesComponent,
|
|
PermissionsComponent,
|
|
ProfileFieldsComponent, ProfileFieldDialog, ProfileFieldBlob, ProfileFieldPgpBlob,
|
|
ServicesGridComponent, ServicesTableComponent,
|
|
QuotasComponent,
|
|
SecurityComponent,
|
|
SecurityTotpDialog,
|
|
SecurityKeyDialog,
|
|
VoucherComponent,
|
|
VoucherDialog,
|
|
InfoComponent,
|
|
AliasesComponent,
|
|
DomainsComponent,
|
|
DyndnsComponent,
|
|
ProfileComponent,
|
|
PasswordComponent,
|
|
PasswordResetComponent,
|
|
RegisterComponent,
|
|
RegisterDialog,
|
|
UsernameDialog,
|
|
UnavailableComponent,
|
|
NotfoundComponent,
|
|
HtmlComponent,
|
|
ConfirmDialog,
|
|
UserComponent,
|
|
JitsiComponent, JitsiEditDialog, JitsiShareDialog,
|
|
ParteyComponent, ParteyTimeslotsComponent, ParteyTimeslotDialog,
|
|
MinetestAccountsComponent,
|
|
UrlShortenerComponent, UrlShortenerShareDialog, UrlShortenerEditDialog, UrlShortenerPasswordComponent,
|
|
BorrowComponent, BorrowItemsComponent, BorrowItemEditComponent, BorrowRequestsComponent, BorrowRequestEditComponent, BorrowProvingComponent, BorrowProvingResultDialog,
|
|
DividerComponent, DividertestComponent,
|
|
DatetimepickerComponent,
|
|
DurationpickerComponent,
|
|
JukeboxComponent,
|
|
AdminComponent, AdminUsersComponent, AdminUserEditDialog, AdminPermissionEditDialog, AdminQuotaEditDialog,
|
|
AdminServiceEditDialog, AdminPermissionMappingEditDialog, AdminQuotaMappingEditDialog,
|
|
AdminOidcClientEditDialog, AdminVoucherMappingEditDialog, AdminSystemPropertyEditDialog,
|
|
AdminSystemProfileFieldEditDialog, AdminUserAliasEditDialog, AdminJitsiRoomEditDialog,
|
|
AdminServicesComponent, AdminPermissionsComponent,
|
|
AdminQuotasComponent, AdminJitsiRoomsComponent, AdminMinetestAccountsComponent,
|
|
AdminShortenedUrlsComponent, AdminShortenedUrlEditDialog, AdminJukeboxComponent, AdminParteyMapsComponent,
|
|
AdminParteyTagsComponent, AdminParteyReportsComponent, AdminTimeslotsComponent,
|
|
AdminSystemPropertiesComponent, AdminPermissionMappingsComponent, AdminQuotaMappingsComponent,
|
|
AdminVoucherMappingsComponent, AdminSystemProfileFieldsComponent, AdminUserAliasesComponent,
|
|
AdminOidcClientsComponent, AdminI18nComponent, AdminI18nEditDialog
|
|
],
|
|
imports: [
|
|
BrowserModule,
|
|
ClipboardModule,
|
|
AppRoutingModule,
|
|
BrowserAnimationsModule,
|
|
MaterialModule,
|
|
HttpClientModule,
|
|
FormsModule,
|
|
ReactiveFormsModule,
|
|
QrCodeModule,
|
|
MatDatepickerModule,
|
|
MomentDateModule
|
|
],
|
|
exports: [MaterialModule],
|
|
providers: [{ provide: APP_INITIALIZER, useFactory: init_app, deps: [I18nService], multi: true }, { provide: HTTP_INTERCEPTORS, useClass: XhrInterceptor, multi: true }, DatePipe,
|
|
{
|
|
provide: MatPaginatorIntl, useFactory: (i18n) => {
|
|
const service = new I18nPaginatorIntl();
|
|
service.injectI18n(i18n)
|
|
return service;
|
|
}, deps: [I18nService]
|
|
}, {
|
|
provide: MAT_DATE_FORMATS, useFactory: (i18n: I18nService) => {
|
|
const datetimeformat = i18n.get('format.datetime', []);
|
|
return {
|
|
parse: {
|
|
dateInput: datetimeformat
|
|
},
|
|
display: {
|
|
dateInput: datetimeformat,
|
|
monthYearLabel: 'MMM YYYY',
|
|
dateA11yLabel: 'LL',
|
|
monthYearA11yLabel: 'MMMM YYYY'
|
|
}
|
|
};
|
|
}, deps: [I18nService]
|
|
}],
|
|
bootstrap: [AppComponent],
|
|
})
|
|
export class AppModule {
|
|
}
|