diff --git a/.deploy/webapp/Dockerfile b/.deploy/webapp/Dockerfile index 2db5bfb565d..2e198cc546b 100644 --- a/.deploy/webapp/Dockerfile +++ b/.deploy/webapp/Dockerfile @@ -106,6 +106,7 @@ COPY --chown=node:node packages/plugins/job-matching-ui/package.json ./packages/ COPY --chown=node:node packages/plugins/job-proposal-ui/package.json ./packages/plugins/job-proposal-ui/ COPY --chown=node:node packages/plugins/job-search-ui/package.json ./packages/plugins/job-search-ui/ COPY --chown=node:node packages/plugins/legal-ui/package.json ./packages/plugins/legal-ui/ +COPY --chown=node:node packages/plugins/maintenance-ui/package.json ./packages/plugins/maintenance-ui/ COPY --chown=node:node packages/plugins/onboarding-ui/package.json ./packages/plugins/onboarding-ui/ COPY --chown=node:node packages/plugins/public-layout-ui/package.json ./packages/plugins/public-layout-ui/ COPY --chown=node:node packages/ui-core/package.json ./packages/ui-core/ diff --git a/angular.json b/angular.json index 0c16d0380d2..5ac048b5c40 100644 --- a/angular.json +++ b/angular.json @@ -469,6 +469,42 @@ } } }, + "plugin-maintenance-ui": { + "projectType": "library", + "root": "packages/plugins/maintenance-ui", + "sourceRoot": "packages/plugins/maintenance-ui", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:ng-packagr", + "options": { + "project": "packages/plugins/maintenance-ui/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "packages/plugins/maintenance-ui/tsconfig.lib.prod.json" + }, + "development": { + "tsConfig": "packages/plugins/maintenance-ui/tsconfig.lib.json" + } + }, + "defaultConfiguration": "production" + }, + "test": { + "builder": "@nrwl/jest:jest", + "options": { + "jestConfig": "packages/plugins/maintenance-ui/jest.config.js", + "passWithNoTests": true + } + } + }, + "schematics": { + "@nrwl/angular:component": { + "prefix": "ngx", + "style": "scss" + } + } + }, "plugin-onboarding-ui": { "projectType": "library", "root": "packages/plugins/onboarding-ui", diff --git a/apps/desktop/src/package.json b/apps/desktop/src/package.json index 79b2a03abd8..525acd156ee 100644 --- a/apps/desktop/src/package.json +++ b/apps/desktop/src/package.json @@ -47,6 +47,7 @@ "../../../packages/plugins/job-proposal-ui", "../../../packages/plugins/job-search-ui", "../../../packages/plugins/legal-ui", + "../../../packages/plugins/maintenance-ui", "../../../packages/plugins/onboarding-ui", "../../../packages/plugins/public-layout-ui" ] diff --git a/apps/gauzy/package.json b/apps/gauzy/package.json index b1201707647..5d41c85beb5 100644 --- a/apps/gauzy/package.json +++ b/apps/gauzy/package.json @@ -64,6 +64,7 @@ "@gauzy/plugin-job-proposal-ui": "^0.1.0", "@gauzy/plugin-job-search-ui": "^0.1.0", "@gauzy/plugin-legal-ui": "^0.1.0", + "@gauzy/plugin-maintenance-ui": "^0.1.0", "@gauzy/plugin-onboarding-ui": "^0.1.0", "@gauzy/plugin-public-layout-ui": "^0.1.0", "@gauzy/ui-config": "^0.1.0", diff --git a/apps/gauzy/src/app/app.routes.ts b/apps/gauzy/src/app/app.routes.ts index 05f16f1a29e..fdf16544d9c 100644 --- a/apps/gauzy/src/app/app.routes.ts +++ b/apps/gauzy/src/app/app.routes.ts @@ -36,7 +36,7 @@ export const appRoutes: Routes = [ }, { path: 'server-down', - loadChildren: () => import('./server-down/server-down.module').then((m) => m.ServerDownModule) + loadChildren: () => import('@gauzy/plugin-maintenance-ui').then((m) => m.MaintenanceModeModule) }, { path: '', diff --git a/apps/gauzy/src/app/server-down/server-down.component.html b/apps/gauzy/src/app/server-down/server-down.component.html deleted file mode 100644 index 9ec7ea8329d..00000000000 --- a/apps/gauzy/src/app/server-down/server-down.component.html +++ /dev/null @@ -1,12 +0,0 @@ - - -
- -
-

{{ 'GAUZY_MAINTENANCE' | translate: { companySite } }}

-
-
-
-
diff --git a/apps/gauzy/src/app/server-down/server-down.component.scss b/apps/gauzy/src/app/server-down/server-down.component.scss deleted file mode 100644 index 006b0abf418..00000000000 --- a/apps/gauzy/src/app/server-down/server-down.component.scss +++ /dev/null @@ -1,24 +0,0 @@ -.info-page { - padding: 0 !important; - .server-down-content { - color: white; - - display: flex; - align-items: center; - justify-content: center; - text-align: center; - height: 100%; - flex-direction: column; - } - - .info-massage h3 { - color: red; - width: 100%; - } -} - -img { - max-height: 96px; - max-width: 300px; - width: auto; -} diff --git a/apps/gauzy/src/app/server-down/server-down.module.ts b/apps/gauzy/src/app/server-down/server-down.module.ts deleted file mode 100644 index d93056984af..00000000000 --- a/apps/gauzy/src/app/server-down/server-down.module.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; -import { RouterModule, ROUTES } from '@angular/router'; -import { NbLayoutModule } from '@nebular/theme'; -import { TranslateModule } from '@ngx-translate/core'; -import { PageRouteRegistryService } from '@gauzy/ui-core/core'; -import { createRoutes } from './server-down.routes'; -import { ServerDownComponent } from './server-down.component'; - -@NgModule({ - imports: [CommonModule, FormsModule, RouterModule.forChild([]), NbLayoutModule, TranslateModule.forChild()], - declarations: [ServerDownComponent], - providers: [ - { - provide: ROUTES, - useFactory: (pageRouteRegistryService: PageRouteRegistryService) => createRoutes(pageRouteRegistryService), - deps: [PageRouteRegistryService], - multi: true - } - ] -}) -export class ServerDownModule {} diff --git a/apps/gauzy/src/app/server-down/server-down.routes.ts b/apps/gauzy/src/app/server-down/server-down.routes.ts deleted file mode 100644 index 8d86405b06b..00000000000 --- a/apps/gauzy/src/app/server-down/server-down.routes.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Route } from '@angular/router'; -import { PageRouteRegistryService } from '@gauzy/ui-core/core'; -import { ServerDownComponent } from './server-down.component'; - -/** - * Creates routes for the server down page. - * - * @param _pageRouteRegistryService An instance of PageRouteRegistryService - * @returns An array of Route objects - */ -export const createRoutes = (_pageRouteRegistryService: PageRouteRegistryService): Route[] => [ - { - path: '', - component: ServerDownComponent - } -]; diff --git a/apps/server/src/package.json b/apps/server/src/package.json index 8210a9d2819..33b18c7e3ff 100755 --- a/apps/server/src/package.json +++ b/apps/server/src/package.json @@ -48,6 +48,7 @@ "../../../packages/plugins/job-proposal-ui", "../../../packages/plugins/job-search-ui", "../../../packages/plugins/legal-ui", + "../../../packages/plugins/maintenance-ui", "../../../packages/plugins/onboarding-ui", "../../../packages/plugins/public-layout-ui" ] diff --git a/package.json b/package.json index 09edfdcec57..e0c97b57109 100644 --- a/package.json +++ b/package.json @@ -137,8 +137,8 @@ "build:package:config:prod": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/config build:prod", "build:package:plugin": "cross-env NODE_ENV=development NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugin build", "build:package:plugin:prod": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugin build", - "build:package:plugins:pre": "yarn run build:package:ui-config && yarn run build:package:ui-core && yarn run build:package:ui-auth && yarn run build:package:plugin:onboarding-ui && yarn run build:package:plugin:legal-ui && yarn run build:package:plugin:job-search-ui && yarn run build:package:plugin:job-matching-ui && yarn run build:package:plugin:job-employee-ui && yarn run build:package:plugin:job-proposal-ui && yarn run build:package:plugin:public-layout-ui", - "build:package:plugins:pre:prod": "yarn run build:package:ui-config:prod && yarn run build:package:ui-core:prod && yarn run build:package:ui-auth && yarn run build:package:plugin:onboarding-ui:prod && yarn run build:package:plugin:legal-ui:prod && yarn run build:package:plugin:job-search-ui:prod && yarn run build:package:plugin:job-matching-ui:prod && yarn run build:package:plugin:job-employee-ui:prod && yarn run build:package:plugin:job-proposal-ui:prod && yarn run build:package:plugin:public-layout-ui:prod", + "build:package:plugins:pre": "yarn run build:package:ui-config && yarn run build:package:ui-core && yarn run build:package:ui-auth && yarn run build:package:plugin:onboarding-ui && yarn run build:package:plugin:legal-ui && yarn run build:package:plugin:job-search-ui && yarn run build:package:plugin:job-matching-ui && yarn run build:package:plugin:job-employee-ui && yarn run build:package:plugin:job-proposal-ui && yarn run build:package:plugin:public-layout-ui && yarn run build:package:plugin:maintenance-ui", + "build:package:plugins:pre:prod": "yarn run build:package:ui-config:prod && yarn run build:package:ui-core:prod && yarn run build:package:ui-auth && yarn run build:package:plugin:onboarding-ui:prod && yarn run build:package:plugin:legal-ui:prod && yarn run build:package:plugin:job-search-ui:prod && yarn run build:package:plugin:job-matching-ui:prod && yarn run build:package:plugin:job-employee-ui:prod && yarn run build:package:plugin:job-proposal-ui:prod && yarn run build:package:plugin:public-layout-ui:prod && yarn run build:package:plugin:maintenance-ui:prod", "build:package:plugins:post": "yarn run build:package:plugin:integration-jira && yarn run build:package:plugin:integration-ai && yarn run build:package:plugin:sentry && yarn run build:package:plugin:jitsu-analytic && yarn run build:package:plugin:product-reviews && yarn run build:package:plugin:job-search && yarn run build:package:plugin:job-proposal && yarn run build:package:plugin:integration-github && yarn run build:package:plugin:knowledge-base && yarn run build:package:plugin:changelog && yarn run build:package:plugin:integration-hubstaff && yarn run build:package:plugin:integration-upwork", "build:package:plugins:post:prod": "yarn run build:package:plugin:integration-jira:prod && yarn run build:package:plugin:integration-ai:prod && yarn run build:package:plugin:sentry:prod && yarn run build:package:plugin:jitsu-analytic:prod && yarn run build:package:plugin:product-reviews:prod && yarn run build:package:plugin:job-search:prod && yarn run build:package:plugin:job-proposal:prod && yarn run build:package:plugin:integration-github:prod && yarn run build:package:plugin:knowledge-base:prod && yarn run build:package:plugin:changelog:prod && yarn run build:package:plugin:integration-hubstaff:prod && yarn run build:package:plugin:integration-upwork:prod", "build:package:plugin:integration-ai": "cross-env NODE_ENV=development NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugins/integration-ai build", @@ -169,6 +169,8 @@ "build:package:plugin:job-search-ui:prod": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugins/job-search-ui lib:build:prod", "build:package:plugin:legal-ui": "cross-env NODE_ENV=development NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugins/legal-ui lib:build", "build:package:plugin:legal-ui:prod": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugins/legal-ui lib:build:prod", + "build:package:plugin:maintenance-ui": "cross-env NODE_ENV=development NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugins/maintenance-ui lib:build", + "build:package:plugin:maintenance-ui:prod": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugins/maintenance-ui lib:build:prod", "build:package:plugin:onboarding-ui": "cross-env NODE_ENV=development NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugins/onboarding-ui lib:build", "build:package:plugin:onboarding-ui:prod": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugins/onboarding-ui lib:build:prod", "build:package:plugin:public-layout-ui": "cross-env NODE_ENV=development NODE_OPTIONS=--max-old-space-size=12288 yarn --cwd ./packages/plugins/public-layout-ui lib:build", diff --git a/packages/plugins/maintenance-ui/.dockerignore b/packages/plugins/maintenance-ui/.dockerignore new file mode 100644 index 00000000000..6edd0523636 --- /dev/null +++ b/packages/plugins/maintenance-ui/.dockerignore @@ -0,0 +1,20 @@ +docker +tmp +README.md +.env + +# git + +.git +.gitignore +.gitmodules + +# dependencies + +node_modules + +# misc + +npm-debug.log +dist +build diff --git a/packages/plugins/maintenance-ui/.eslintrc.json b/packages/plugins/maintenance-ui/.eslintrc.json new file mode 100644 index 00000000000..32896661eef --- /dev/null +++ b/packages/plugins/maintenance-ui/.eslintrc.json @@ -0,0 +1,33 @@ +{ + "extends": ["../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "gauzy", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "gauzy", + "style": "kebab-case" + } + ] + }, + "extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"] + }, + { + "files": ["*.html"], + "extends": ["plugin:@nrwl/nx/angular-template"], + "rules": {} + } + ] +} diff --git a/packages/plugins/maintenance-ui/.gitignore b/packages/plugins/maintenance-ui/.gitignore new file mode 100644 index 00000000000..a34877c2c0e --- /dev/null +++ b/packages/plugins/maintenance-ui/.gitignore @@ -0,0 +1,6 @@ +# dependencies +node_modules/ + +# misc +npm-debug.log +dist \ No newline at end of file diff --git a/packages/plugins/maintenance-ui/.npmignore b/packages/plugins/maintenance-ui/.npmignore new file mode 100644 index 00000000000..1eb4beb9572 --- /dev/null +++ b/packages/plugins/maintenance-ui/.npmignore @@ -0,0 +1,4 @@ +# .npmignore + +src/ +node_modules/ diff --git a/packages/plugins/maintenance-ui/README.md b/packages/plugins/maintenance-ui/README.md new file mode 100644 index 00000000000..8fa8dd1a1c4 --- /dev/null +++ b/packages/plugins/maintenance-ui/README.md @@ -0,0 +1,7 @@ +# @gauzy/plugin-maintenance-ui + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test plugin-maintenance-ui` to execute the unit tests. diff --git a/packages/plugins/maintenance-ui/jest.config.ts b/packages/plugins/maintenance-ui/jest.config.ts new file mode 100644 index 00000000000..33866b94fcb --- /dev/null +++ b/packages/plugins/maintenance-ui/jest.config.ts @@ -0,0 +1,22 @@ +/* eslint-disable */ +export default { + displayName: 'plugin-maintenance-ui', + preset: '../../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../coverage/packages/plugins/maintenance-ui', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$' + } + ] + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment' + ] +}; diff --git a/packages/plugins/maintenance-ui/ng-package.json b/packages/plugins/maintenance-ui/ng-package.json new file mode 100644 index 00000000000..c86f81f6854 --- /dev/null +++ b/packages/plugins/maintenance-ui/ng-package.json @@ -0,0 +1,10 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../../dist/packages/plugins/maintenance-ui", + "lib": { + "entryFile": "src/index.ts", + "styleIncludePaths": ["../../../dist/packages/ui-core/static/styles"] + }, + "allowedNonPeerDependencies": ["."], + "assets": [] +} diff --git a/packages/plugins/maintenance-ui/package.json b/packages/plugins/maintenance-ui/package.json new file mode 100644 index 00000000000..49928573d18 --- /dev/null +++ b/packages/plugins/maintenance-ui/package.json @@ -0,0 +1,50 @@ +{ + "name": "@gauzy/plugin-maintenance-ui", + "version": "0.1.0", + "type": "commonjs", + "description": "", + "author": { + "name": "Ever Co. LTD", + "email": "ever@ever.co", + "url": "https://ever.co" + }, + "license": "AGPL-3.0", + "repository": { + "type": "git", + "url": "https://github.com/ever-co/ever-gauzy" + }, + "bugs": { + "url": "https://github.com/ever-co/ever-gauzy/issues" + }, + "homepage": "https://ever.co", + "keywords": [], + "private": true, + "scripts": { + "lib:build": "ng build plugin-maintenance-ui --configuration=development", + "lib:build:prod": "ng build plugin-maintenance-ui --configuration=production", + "lib:watch": "ng build plugin-maintenance-ui --watch --configuration=development" + }, + "peerDependencies": { + "@angular/common": "^16.2.12", + "@angular/core": "^16.2.12" + }, + "dependencies": { + "@angular/router": "^16.2.12", + "@gauzy/contracts": "^0.1.0", + "@gauzy/ui-config": "^0.1.0", + "@gauzy/ui-core": "^0.1.0", + "@nebular/theme": "^12.0.0", + "@ngx-translate/core": "^15.0.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/jest": "^29.4.4", + "@types/node": "^20.14.9", + "jest-preset-angular": "^13.1.4" + }, + "engines": { + "node": ">=20.11.1", + "yarn": ">=1.22.19" + }, + "sideEffects": false +} diff --git a/packages/plugins/maintenance-ui/project.json b/packages/plugins/maintenance-ui/project.json new file mode 100644 index 00000000000..6accc809213 --- /dev/null +++ b/packages/plugins/maintenance-ui/project.json @@ -0,0 +1,50 @@ +{ + "name": "plugin-maintenance-ui", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/plugins/maintenance-ui/src", + "prefix": "gauzy", + "tags": ["ui"], + "projectType": "library", + "targets": { + "build": { + "executor": "@nrwl/angular:package", + "outputs": ["{workspaceRoot}/dist/{projectRoot}"], + "options": { + "project": "packages/plugins/maintenance-ui/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "packages/plugins/maintenance-ui/tsconfig.lib.prod.json" + }, + "development": { + "tsConfig": "packages/plugins/maintenance-ui/tsconfig.lib.json" + } + }, + "defaultConfiguration": "production" + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "packages/plugins/maintenance-ui/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + }, + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "packages/plugins/maintenance-ui/**/*.ts", + "packages/plugins/maintenance-ui/**/*.html" + ] + } + } + } +} diff --git a/packages/plugins/maintenance-ui/src/index.ts b/packages/plugins/maintenance-ui/src/index.ts new file mode 100644 index 00000000000..c61ef70e321 --- /dev/null +++ b/packages/plugins/maintenance-ui/src/index.ts @@ -0,0 +1,4 @@ +/** + * Entry point for all public APIs of the @gauzy/plugin-maintenance-ui package. + */ +export * from './lib/public-api'; diff --git a/packages/plugins/maintenance-ui/src/lib/maintenance-mode.component.html b/packages/plugins/maintenance-ui/src/lib/maintenance-mode.component.html new file mode 100644 index 00000000000..70f45b32cc6 --- /dev/null +++ b/packages/plugins/maintenance-ui/src/lib/maintenance-mode.component.html @@ -0,0 +1,12 @@ + + +
+ +
+

{{ 'GAUZY_MAINTENANCE' | translate : { companySite } }}

+
+
+
+
diff --git a/packages/plugins/maintenance-ui/src/lib/maintenance-mode.component.scss b/packages/plugins/maintenance-ui/src/lib/maintenance-mode.component.scss new file mode 100644 index 00000000000..92ea58d71fe --- /dev/null +++ b/packages/plugins/maintenance-ui/src/lib/maintenance-mode.component.scss @@ -0,0 +1,26 @@ +.info-page { + padding: 0 !important; + + .maintenance-mode-content { + color: white; + display: flex; + align-items: center; + justify-content: center; + text-align: center; + height: 100%; + flex-direction: column; + + img { + max-height: 96px; + max-width: 300px; + width: auto; + } + + .info-message { + h3 { + color: red; + width: 100%; + } + } + } +} diff --git a/apps/gauzy/src/app/server-down/server-down.component.ts b/packages/plugins/maintenance-ui/src/lib/maintenance-mode.component.ts similarity index 53% rename from apps/gauzy/src/app/server-down/server-down.component.ts rename to packages/plugins/maintenance-ui/src/lib/maintenance-mode.component.ts index 451a895f8b3..4a1f21f35d2 100644 --- a/apps/gauzy/src/app/server-down/server-down.component.ts +++ b/packages/plugins/maintenance-ui/src/lib/maintenance-mode.component.ts @@ -1,22 +1,21 @@ -import { Component, Inject, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { Location } from '@angular/common'; -import { Environment, GAUZY_ENV } from '@gauzy/ui-config'; +import { environment } from '@gauzy/ui-config'; import { ServerConnectionService, Store } from '@gauzy/ui-core/core'; @Component({ - selector: 'ga-server-down-page', - styleUrls: ['./server-down.component.scss'], - templateUrl: './server-down.component.html' + selector: 'ga-maintenance-mode', + styleUrls: ['./maintenance-mode.component.scss'], + templateUrl: './maintenance-mode.component.html' }) -export class ServerDownComponent implements OnInit, OnDestroy { +export class MaintenanceModeComponent implements OnInit, OnDestroy { noInternetLogo: string; interval: any; constructor( - private readonly store: Store, - private readonly location: Location, - private readonly serverConnectionService: ServerConnectionService, - @Inject(GAUZY_ENV) private environment: Environment + private readonly _store: Store, + private readonly _location: Location, + private readonly _serverConnectionService: ServerConnectionService ) { this.noInternetLogo = environment['NO_INTERNET_LOGO']; } @@ -29,18 +28,18 @@ export class ServerDownComponent implements OnInit, OnDestroy { * Checks the server connection every 5 seconds. */ private async checkConnection() { - const url = this.environment.API_BASE_URL; + const url = environment.API_BASE_URL; console.log('Checking server connection to URL: ', url); this.interval = setInterval(async () => { console.log('Checking server connection...'); + await this._serverConnectionService.checkServerConnection(url); - await this.serverConnectionService.checkServerConnection(url); - - if (Number(this.store.serverConnection) === 200) { + // Check if the server is online + if (Number(this._store.serverConnection) === 200) { console.log('Server is online'); clearInterval(this.interval); - this.location.back(); + this._location.back(); } else { console.log('Server is offline'); } @@ -53,7 +52,7 @@ export class ServerDownComponent implements OnInit, OnDestroy { * @return {string} The company site name. */ public get companySite(): string { - return this.environment.COMPANY_SITE_NAME; + return environment.COMPANY_SITE_NAME; } ngOnDestroy(): void {} diff --git a/packages/plugins/maintenance-ui/src/lib/maintenance-mode.module.ts b/packages/plugins/maintenance-ui/src/lib/maintenance-mode.module.ts new file mode 100644 index 00000000000..73d8218367b --- /dev/null +++ b/packages/plugins/maintenance-ui/src/lib/maintenance-mode.module.ts @@ -0,0 +1,37 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { HttpClient } from '@angular/common/http'; +import { RouterModule, ROUTES } from '@angular/router'; +import { NbLayoutModule } from '@nebular/theme'; +import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; +import { LanguagesEnum } from '@gauzy/contracts'; +import { PageRouteRegistryService } from '@gauzy/ui-core/core'; +import { HttpLoaderFactory } from '@gauzy/ui-core/i18n'; +import { createMaintenanceRoutes } from './maintenance-mode.routes'; +import { MaintenanceModeComponent } from './maintenance-mode.component'; + +@NgModule({ + imports: [ + CommonModule, + TranslateModule.forRoot({ + defaultLanguage: LanguagesEnum.ENGLISH, + loader: { + provide: TranslateLoader, + useFactory: HttpLoaderFactory, + deps: [HttpClient] + } + }), + NbLayoutModule + ], + declarations: [MaintenanceModeComponent], + exports: [RouterModule], + providers: [ + { + provide: ROUTES, + useFactory: (service: PageRouteRegistryService) => createMaintenanceRoutes(service), + deps: [PageRouteRegistryService], + multi: true + } + ] +}) +export class MaintenanceModeModule {} diff --git a/packages/plugins/maintenance-ui/src/lib/maintenance-mode.routes.ts b/packages/plugins/maintenance-ui/src/lib/maintenance-mode.routes.ts new file mode 100644 index 00000000000..346427331db --- /dev/null +++ b/packages/plugins/maintenance-ui/src/lib/maintenance-mode.routes.ts @@ -0,0 +1,16 @@ +import { Route } from '@angular/router'; +import { PageRouteRegistryService } from '@gauzy/ui-core/core'; +import { MaintenanceModeComponent } from './maintenance-mode.component'; + +/** + * Creates the routes for the maintenance mode plugin. + * + * @param _pageRouteRegistryService An instance of PageRouteRegistryService + * @returns An array of Route objects + */ +export const createMaintenanceRoutes = (_pageRouteRegistryService: PageRouteRegistryService): Route[] => [ + { + path: '', + component: MaintenanceModeComponent + } +]; diff --git a/packages/plugins/maintenance-ui/src/lib/public-api.ts b/packages/plugins/maintenance-ui/src/lib/public-api.ts new file mode 100644 index 00000000000..f85e9e6bcbe --- /dev/null +++ b/packages/plugins/maintenance-ui/src/lib/public-api.ts @@ -0,0 +1,6 @@ +/** + * Entry point for all public APIs of the @gauzy/plugin-maintenance-ui package. + */ +export * from './maintenance-mode.module'; +export * from './maintenance-mode.routes'; +export * from './maintenance-mode.component'; diff --git a/packages/plugins/maintenance-ui/src/test-setup.ts b/packages/plugins/maintenance-ui/src/test-setup.ts new file mode 100644 index 00000000000..1100b3e8a6e --- /dev/null +++ b/packages/plugins/maintenance-ui/src/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular/setup-jest'; diff --git a/packages/plugins/maintenance-ui/tsconfig.json b/packages/plugins/maintenance-ui/tsconfig.json new file mode 100644 index 00000000000..eea653160cb --- /dev/null +++ b/packages/plugins/maintenance-ui/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": false, + "forceConsistentCasingInFileNames": true, + "strict": false, + "noImplicitOverride": false, + "noPropertyAccessFromIndexSignature": false, + "noImplicitReturns": false, + "noFallthroughCasesInSwitch": false, + "baseUrl": ".", + "paths": { + "@gauzy/ui-core/*": ["./../../../dist/packages/ui-core/*/index.d.ts"], + "@ngx-translate/*": ["./node_modules/@ngx-translate/*"] + } + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/packages/plugins/maintenance-ui/tsconfig.lib.json b/packages/plugins/maintenance-ui/tsconfig.lib.json new file mode 100644 index 00000000000..5d1d67c0227 --- /dev/null +++ b/packages/plugins/maintenance-ui/tsconfig.lib.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": ["src/**/*.spec.ts", "src/test-setup.ts", "jest.config.ts", "src/**/*.test.ts"], + "include": ["src/**/*.ts"] +} diff --git a/packages/plugins/maintenance-ui/tsconfig.lib.prod.json b/packages/plugins/maintenance-ui/tsconfig.lib.prod.json new file mode 100644 index 00000000000..7b29b93f6f3 --- /dev/null +++ b/packages/plugins/maintenance-ui/tsconfig.lib.prod.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.lib.json", + "compilerOptions": { + "declarationMap": false + }, + "angularCompilerOptions": { + "compilationMode": "partial" + } +} diff --git a/packages/plugins/maintenance-ui/tsconfig.spec.json b/packages/plugins/maintenance-ui/tsconfig.spec.json new file mode 100644 index 00000000000..0b8b86994ff --- /dev/null +++ b/packages/plugins/maintenance-ui/tsconfig.spec.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"] +} diff --git a/packages/plugins/public-layout-ui/.dockerignore b/packages/plugins/public-layout-ui/.dockerignore new file mode 100644 index 00000000000..6edd0523636 --- /dev/null +++ b/packages/plugins/public-layout-ui/.dockerignore @@ -0,0 +1,20 @@ +docker +tmp +README.md +.env + +# git + +.git +.gitignore +.gitmodules + +# dependencies + +node_modules + +# misc + +npm-debug.log +dist +build diff --git a/packages/plugins/public-layout-ui/.gitignore b/packages/plugins/public-layout-ui/.gitignore new file mode 100644 index 00000000000..a34877c2c0e --- /dev/null +++ b/packages/plugins/public-layout-ui/.gitignore @@ -0,0 +1,6 @@ +# dependencies +node_modules/ + +# misc +npm-debug.log +dist \ No newline at end of file diff --git a/packages/plugins/public-layout-ui/.npmignore b/packages/plugins/public-layout-ui/.npmignore new file mode 100644 index 00000000000..1eb4beb9572 --- /dev/null +++ b/packages/plugins/public-layout-ui/.npmignore @@ -0,0 +1,4 @@ +# .npmignore + +src/ +node_modules/ diff --git a/tsconfig.json b/tsconfig.json index 341cb8b6984..298183d2ded 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,6 +14,7 @@ "@gauzy/plugin-job-search-ui": ["./packages/plugins/job-search-ui/src/index.ts"], "@gauzy/plugin-job-proposal-ui": ["./packages/plugins/job-proposal-ui/src/index.ts"], "@gauzy/plugin-legal-ui": ["./packages/plugins/legal-ui/src/index.ts"], + "@gauzy/plugin-maintenance-ui": ["./packages/plugins/maintenance-ui/src/index.ts"], "@gauzy/plugin-onboarding-ui": ["./packages/plugins/onboarding-ui/src/index.ts"], "@gauzy/plugin-public-layout-ui": ["packages/plugins/public-layout-ui/src/index.ts"], "@gauzy/ui-auth": ["./packages/ui-auth/src/index.ts"],