project initialized

This commit is contained in:
richard-loafle 2020-03-27 17:43:47 +09:00
commit 5078386856
240 changed files with 48669 additions and 0 deletions

13
.editorconfig Normal file
View File

@ -0,0 +1,13 @@
# Editor configuration, see https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
max_line_length = off
trim_trailing_whitespace = false

46
.gitignore vendored Normal file
View File

@ -0,0 +1,46 @@
# See http://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
/dist
/tmp
/out-tsc
# Only exists if Bazel was run
/bazel-out
# dependencies
/node_modules
# profiling files
chrome-profiler-events*.json
speed-measure-plugin*.json
# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace
# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history/*
# misc
/.sass-cache
/connect.lock
/coverage
/libpeerconnection.log
npm-debug.log
yarn-error.log
testem.log
/typings
# System Files
.DS_Store
Thumbs.db

5
.prettierrc Normal file
View File

@ -0,0 +1,5 @@
{
"trailingComma": "none",
"tabWidth": 2,
"singleQuote": true
}

11
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"recommendations": [
"Angular.ng-template",
"msjsdiag.debugger-for-chrome",
"eamodio.gitlens",
"esbenp.prettier-vscode",
"ms-vscode.vscode-typescript-tslint-plugin",
"VisualStudioExptTeam.vscodeintellicode",
"nkokhelox.svg-font-previewer"
]
}

7
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,7 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": []
}

16
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,16 @@
{
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.autoClosingBrackets": "languageDefined",
"editor.trimAutoWhitespace": true,
"files.trimTrailingWhitespace": true,
"files.trimFinalNewlines": true,
"files.watcherExclude": {
"**/dist": true
},
"go.testFlags": ["-v"],
"go.testTimeout": "100s",
"debug.node.autoAttach": "on"
}

15
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,15 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "build:main:dev",
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

27
README.md Normal file
View File

@ -0,0 +1,27 @@
# MMessengerLgWeb
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.0.6.
## Development server
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
## Code scaffolding
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
## Build
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
## Running unit tests
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
## Running end-to-end tests
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).

140
angular.json Normal file
View File

@ -0,0 +1,140 @@
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"ucap-lg-web": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"changeDetection": "OnPush",
"style": "scss"
}
},
"root": "",
"sourceRoot": "src",
"prefix": "app",
"architect": {
"build": {
"builder": "@angular-builders/custom-webpack:browser",
"options": {
"outputPath": "dist/ucap-lg-web",
"index": "src/index.html",
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.app.json",
"aot": true,
"assets": ["src/favicon.ico", "src/assets"],
"styles": ["src/styles.scss"],
"scripts": [],
"customWebpackConfig": {
"path": "./config/custom.webpack.config.js"
}
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb",
"maximumError": "10kb"
}
]
},
"hmr": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.hmr.ts"
}
]
}
}
},
"serve": {
"builder": "@angular-builders/custom-webpack:dev-server",
"options": {
"browserTarget": "ucap-lg-web:build",
"hmrWarning": false
},
"configurations": {
"production": {
"browserTarget": "ucap-lg-web:build:production"
},
"hmr": {
"hmr": true,
"browserTarget": "ucap-lg-web:build:hmr"
}
}
},
"extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "ucap-lg-web:build"
}
},
"test": {
"builder": "@angular-builders/custom-webpack:karma",
"options": {
"main": "src/test.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "tsconfig.spec.json",
"karmaConfig": "karma.conf.js",
"assets": ["src/favicon.ico", "src/assets"],
"styles": ["src/styles.scss"],
"scripts": [],
"customWebpackConfig": {
"path": "./config/custom.webpack.config.js"
}
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"tsconfig.app.json",
"tsconfig.spec.json",
"e2e/tsconfig.json"
],
"exclude": ["**/node_modules/**"]
}
},
"e2e": {
"builder": "@angular-devkit/build-angular:protractor",
"options": {
"protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "ucap-lg-web:serve"
},
"configurations": {
"production": {
"devServerTarget": "ucap-lg-web:serve:production"
}
}
}
}
}
},
"defaultProject": "ucap-lg-web",
"cli": {
"analytics": false
}
}

12
browserslist Normal file
View File

@ -0,0 +1,12 @@
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
# You can see what browsers were selected by your queries by running:
# npx browserslist
> 0.5%
last 2 versions
Firefox ESR
not dead
not IE 9-11 # For IE 9-11 support, remove 'not'.

View File

@ -0,0 +1,13 @@
const path = require('path');
module.exports = (config, options) => {
const PRODUCTION = process.env.NODE_ENV === 'production';
config.target = 'web';
config.node = {
global: true,
fs: 'empty'
};
return config;
};

10
docker/docker-compose.yml Normal file
View File

@ -0,0 +1,10 @@
version: '3'
services:
web:
image: nginx:alpine
ports:
- '8080:80'
volumes:
- ../dist/ucap-lg-web:/var/www/html
- ./etc/nginx/nginx.conf:/etc/nginx/nginx.conf

View File

@ -0,0 +1,25 @@
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.html index.htm;
include /etc/nginx/mime.types;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location / {
try_files $uri $uri/ /index.html;
}
}
}

32
e2e/protractor.conf.js Normal file
View File

@ -0,0 +1,32 @@
// @ts-check
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts
const { SpecReporter } = require('jasmine-spec-reporter');
/**
* @type { import("protractor").Config }
*/
exports.config = {
allScriptsTimeout: 11000,
specs: [
'./src/**/*.e2e-spec.ts'
],
capabilities: {
browserName: 'chrome'
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
framework: 'jasmine',
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
print: function() {}
},
onPrepare() {
require('ts-node').register({
project: require('path').join(__dirname, './tsconfig.json')
});
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
}
};

28
e2e/src/app.e2e-spec.ts Normal file
View File

@ -0,0 +1,28 @@
import { AppPage } from './app.po';
import { browser, logging } from 'protractor';
describe('workspace-project App', () => {
let page: AppPage;
beforeEach(() => {
page = new AppPage();
});
it('should display welcome message', () => {
page.navigateTo();
expect(page.getTitleText()).toEqual('ucap-lg-web app is running!');
});
afterEach(async () => {
// Assert that there are no errors emitted from the browser
const logs = await browser
.manage()
.logs()
.get(logging.Type.BROWSER);
expect(logs).not.toContain(
jasmine.objectContaining({
level: logging.Level.SEVERE
} as logging.Entry)
);
});
});

11
e2e/src/app.po.ts Normal file
View File

@ -0,0 +1,11 @@
import { browser, by, element } from 'protractor';
export class AppPage {
navigateTo(): Promise<unknown> {
return browser.get(browser.baseUrl) as Promise<unknown>;
}
getTitleText(): Promise<string> {
return element(by.css('app-root .content span')).getText() as Promise<string>;
}
}

13
e2e/tsconfig.json Normal file
View File

@ -0,0 +1,13 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/e2e",
"module": "commonjs",
"target": "es5",
"types": [
"jasmine",
"jasminewd2",
"node"
]
}
}

32
karma.conf.js Normal file
View File

@ -0,0 +1,32 @@
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma')
],
client: {
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, './coverage/ucap-lg-web'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true
},
reporters: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
restartOnFileChange: true
});
};

14203
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

129
package.json Normal file
View File

@ -0,0 +1,129 @@
{
"name": "ucap-lg-web",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"start:hmr": "ng serve --configuration hmr",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "~9.0.6",
"@angular/cdk": "^9.1.3",
"@angular/common": "~9.0.6",
"@angular/compiler": "~9.0.6",
"@angular/core": "~9.0.6",
"@angular/flex-layout": "^9.0.0-beta.29",
"@angular/forms": "~9.0.6",
"@angular/material": "^9.1.3",
"@angular/material-moment-adapter": "^9.1.3",
"@angular/platform-browser": "~9.0.6",
"@angular/platform-browser-dynamic": "~9.0.6",
"@angular/router": "~9.0.6",
"@ngrx/effects": "^9.0.0",
"@ngrx/entity": "^9.0.0",
"@ngrx/router-store": "^9.0.0",
"@ngrx/store": "^9.0.0",
"@ucap/api": "~0.0.1",
"@ucap/api-common": "~0.0.1",
"@ucap/api-external": "~0.0.2",
"@ucap/api-message": "~0.0.1",
"@ucap/api-prompt": "~0.0.1",
"@ucap/api-public": "~0.0.1",
"@ucap/core": "~0.0.1",
"@ucap/native": "~0.0.1",
"@ucap/native-browser": "~0.0.1",
"@ucap/ng-api-common": "~0.0.1",
"@ucap/ng-api-external": "~0.0.1",
"@ucap/ng-api-message": "~0.0.1",
"@ucap/ng-api-prompt": "~0.0.1",
"@ucap/ng-api-public": "~0.0.1",
"@ucap/ng-core": "~0.0.1",
"@ucap/ng-i18n": "~0.0.1",
"@ucap/ng-native": "~0.0.1",
"@ucap/ng-native-browser": "~0.0.1",
"@ucap/ng-pi": "~0.0.1",
"@ucap/ng-protocol": "~0.0.1",
"@ucap/ng-protocol-authentication": "~0.0.1",
"@ucap/ng-protocol-buddy": "~0.0.1",
"@ucap/ng-protocol-event": "~0.0.1",
"@ucap/ng-protocol-file": "~0.0.1",
"@ucap/ng-protocol-group": "~0.0.1",
"@ucap/ng-protocol-info": "~0.0.1",
"@ucap/ng-protocol-inner": "~0.0.1",
"@ucap/ng-protocol-option": "~0.0.1",
"@ucap/ng-protocol-ping": "~0.0.1",
"@ucap/ng-protocol-query": "~0.0.1",
"@ucap/ng-protocol-room": "~0.0.1",
"@ucap/ng-protocol-service": "~0.0.1",
"@ucap/ng-protocol-status": "~0.0.1",
"@ucap/ng-protocol-sync": "~0.0.1",
"@ucap/ng-protocol-umg": "~0.0.1",
"@ucap/ng-store-authentication": "~0.0.2",
"@ucap/ng-store-chat": "~0.0.3",
"@ucap/ng-store-group": "~0.0.3",
"@ucap/ng-store-organization": "~0.0.2",
"@ucap/ng-web-storage": "~0.0.1",
"@ucap/ng-ui": "~0.0.3",
"@ucap/ng-ui-authentication": "~0.0.1",
"@ucap/ng-ui-skin-default": "~0.0.1",
"@ucap/pi": "~0.0.1",
"@ucap/protocol": "~0.0.1",
"@ucap/protocol-authentication": "~0.0.1",
"@ucap/protocol-buddy": "~0.0.1",
"@ucap/protocol-event": "~0.0.1",
"@ucap/protocol-file": "~0.0.1",
"@ucap/protocol-group": "~0.0.1",
"@ucap/protocol-info": "~0.0.1",
"@ucap/protocol-inner": "~0.0.1",
"@ucap/protocol-option": "~0.0.1",
"@ucap/protocol-ping": "~0.0.1",
"@ucap/protocol-query": "~0.0.1",
"@ucap/protocol-room": "~0.0.1",
"@ucap/protocol-service": "~0.0.1",
"@ucap/protocol-status": "~0.0.1",
"@ucap/protocol-sync": "~0.0.1",
"@ucap/protocol-umg": "~0.0.1",
"@ucap/web-socket": "~0.0.1",
"@ucap/web-storage": "~0.0.1",
"autolinker": "^3.13.0",
"i18next": "^19.3.3",
"libphonenumber-js": "^1.7.47",
"moment": "^2.24.0",
"moment-timezone": "^0.5.28",
"ngx-perfect-scrollbar": "^9.0.0",
"ngx-virtual-scroller": "^4.0.3",
"rxjs": "~6.5.4",
"tslib": "^1.10.0",
"zone.js": "~0.10.2"
},
"devDependencies": {
"@angular-builders/custom-webpack": "^9.0.0",
"@angular-devkit/build-angular": "~0.900.6",
"@angular/cli": "~9.0.6",
"@angular/compiler-cli": "~9.0.6",
"@angular/language-service": "~9.0.6",
"@angularclass/hmr": "^2.1.3",
"@ngrx/store-devtools": "^9.0.0",
"@types/node": "^12.11.1",
"@types/jasmine": "~3.5.0",
"@types/jasminewd2": "~2.0.3",
"codelyzer": "^5.1.2",
"fs-extra": "^9.0.0",
"jasmine-core": "~3.5.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.3.0",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~2.1.0",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.2",
"protractor": "~5.4.3",
"ts-node": "~8.3.0",
"tslint": "~5.18.0",
"typescript": "~3.7.5"
}
}

View File

@ -0,0 +1,26 @@
import { NgModule } from '@angular/core';
import axios from 'axios';
import { AxiosInstance } from 'axios';
import { AXIOS_INSTANCE } from '@ucap/ng-core';
export function axiosFactory() {
return (): AxiosInstance => {
return axios.create();
};
}
@NgModule({
imports: [],
exports: [],
providers: [
{
provide: AXIOS_INSTANCE,
useFactory: axiosFactory,
deps: [],
multi: false
}
]
})
export class AppProviderModule {}

View File

@ -0,0 +1,72 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { DefaultLayoutComponent } from '@app/layouts/components/default.layout.component';
import { NoNaviLayoutComponent } from '@app/layouts/components/no-navi.layout.component';
const routes: Routes = [
{
path: 'account',
component: NoNaviLayoutComponent,
loadChildren: () =>
import('./pages/account/account.page.module').then(
m => m.AppAccountPageModule
)
},
{
path: 'common',
component: NoNaviLayoutComponent,
loadChildren: () =>
import('./pages/common/common.page.module').then(
m => m.AppCommonPageModule
)
},
{
path: '',
component: DefaultLayoutComponent,
children: [
{ path: '', redirectTo: '/organization', pathMatch: 'full' },
{
path: 'organization',
loadChildren: () =>
import('./pages/organization/organization.page.module').then(
m => m.AppOrganizationPageModule
)
},
{
path: 'group',
loadChildren: () =>
import('./pages/group/group.page.module').then(
m => m.AppGroupPageModule
)
},
{
path: 'chat',
loadChildren: () =>
import('./pages/chat/chat.page.module').then(m => m.AppChatPageModule)
},
{
path: 'call',
loadChildren: () =>
import('./pages/call/call.page.module').then(m => m.AppCallPageModule)
},
{
path: 'message',
loadChildren: () =>
import('./pages/message/message.page.module').then(
m => m.AppMessagePageModule
)
}
]
},
{
path: '**',
redirectTo: '/common/e404'
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {}

View File

@ -0,0 +1,2 @@
<app-layouts-top-bar></app-layouts-top-bar>
<router-outlet></router-outlet>

View File

@ -0,0 +1,4 @@
:host {
width: 100%;
height: auto !important;
}

View File

@ -0,0 +1,33 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [AppComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app.title).toEqual('ucap-lg-web');
});
it('should render title', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

13
src/app/app.component.ts Normal file
View File

@ -0,0 +1,13 @@
import { Component } from '@angular/core';
import { CommonApiService } from '@ucap/ng-api-common';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'ucap-lg-web';
constructor(private commonApiService: CommonApiService) {}
}

155
src/app/app.module.ts Normal file
View File

@ -0,0 +1,155 @@
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { NgModule } from '@angular/core';
import { StoreModule } from '@ngrx/store';
import { EffectsModule } from '@ngrx/effects';
import { StoreRouterConnectingModule, RouterState } from '@ngrx/router-store';
import { StoreDevtoolsModule } from '@ngrx/store-devtools';
import { CommonApiModule } from '@ucap/ng-api-common';
import { PublicApiModule } from '@ucap/ng-api-public';
import { ExternalApiModule } from '@ucap/ng-api-external';
import { MessageApiModule } from '@ucap/ng-api-message';
import { PromptApiModule } from '@ucap/ng-api-prompt';
import { PiModule } from '@ucap/ng-pi';
import { ProtocolModule } from '@ucap/ng-protocol';
import { AuthenticationProtocolModule } from '@ucap/ng-protocol-authentication';
import { BuddyProtocolModule } from '@ucap/ng-protocol-buddy';
import { EventProtocolModule } from '@ucap/ng-protocol-event';
import { FileProtocolModule } from '@ucap/ng-protocol-file';
import { GroupProtocolModule } from '@ucap/ng-protocol-group';
import { InfoProtocolModule } from '@ucap/ng-protocol-info';
import { InnerProtocolModule } from '@ucap/ng-protocol-inner';
import { OptionProtocolModule } from '@ucap/ng-protocol-option';
import { PingProtocolModule } from '@ucap/ng-protocol-ping';
import { QueryProtocolModule } from '@ucap/ng-protocol-query';
import { RoomProtocolModule } from '@ucap/ng-protocol-room';
import { ServiceProtocolModule } from '@ucap/ng-protocol-service';
import { StatusProtocolModule } from '@ucap/ng-protocol-status';
import { SyncProtocolModule } from '@ucap/ng-protocol-sync';
import { UmgProtocolModule } from '@ucap/ng-protocol-umg';
import { WebStorageModule } from '@ucap/ng-web-storage';
import { I18nModule } from '@ucap/ng-i18n';
import { OrganizationStoreModule } from '@ucap/ng-store-organization';
import { AuthenticationStoreModule } from '@ucap/ng-store-authentication';
import { GroupStoreModule } from '@ucap/ng-store-group';
import { ChatStoreModule } from '@ucap/ng-store-chat';
import { AppLayoutsModule } from '@app/layouts/layouts.module';
import { AppProviderModule } from '@app/app-provider.module';
import { AppRoutingModule } from '@app/app-routing.module';
import { AppComponent } from '@app/app.component';
import { effects } from '@app/store/effects';
import { ROOT_REDUCERS } from '@app/store/reducers';
import { metaReducers } from '@app/store/state';
import { environment } from '@environments';
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
BrowserAnimationsModule,
CommonApiModule.forRoot(environment.commonApiModuleConfig),
PublicApiModule.forRoot(environment.publicApiModuleConfig),
ExternalApiModule.forRoot(environment.externalApiModuleConfig),
MessageApiModule.forRoot(environment.messageApiModuleConfig),
PromptApiModule.forRoot(environment.promptApiModuleConfig),
PiModule.forRoot(environment.piModuleConfig),
ProtocolModule.forRoot(environment.protocolModuleConfig),
AuthenticationProtocolModule.forRoot({}),
BuddyProtocolModule.forRoot({}),
EventProtocolModule.forRoot({}),
FileProtocolModule.forRoot({}),
GroupProtocolModule.forRoot({}),
InfoProtocolModule.forRoot({}),
InnerProtocolModule.forRoot({}),
OptionProtocolModule.forRoot({}),
PingProtocolModule.forRoot({}),
QueryProtocolModule.forRoot({}),
RoomProtocolModule.forRoot({}),
ServiceProtocolModule.forRoot({}),
StatusProtocolModule.forRoot({}),
SyncProtocolModule.forRoot({}),
UmgProtocolModule.forRoot({}),
WebStorageModule.forRoot({}),
I18nModule.forRoot({}),
OrganizationStoreModule.forRoot({}),
AuthenticationStoreModule.forRoot({}),
GroupStoreModule.forRoot({ useMyDeptGroup: true, fixedGroupSeqs: [] }),
ChatStoreModule.forRoot({}),
AppProviderModule,
AppRoutingModule,
AppLayoutsModule,
/**
* StoreModule.forRoot is imported once in the root module, accepting a reducer
* function or object map of reducer functions. If passed an object of
* reducers, combineReducers will be run creating your application
* meta-reducer. This returns all providers for an @ngrx/store
* based application.
*/
StoreModule.forRoot(ROOT_REDUCERS, {
metaReducers,
runtimeChecks: {
strictStateImmutability: true,
strictActionImmutability: true,
strictStateSerializability: true,
strictActionSerializability: true
}
}),
/**
* @ngrx/router-store keeps router state up-to-date in the store.
*/
StoreRouterConnectingModule.forRoot({
routerState: RouterState.Minimal
}),
/**
* Store devtools instrument the store retaining past versions of state
* and recalculating new states. This enables powerful time-travel
* debugging.
*
* To use the debugger, install the Redux Devtools extension for either
* Chrome or Firefox
*
* See: https://github.com/zalmoxisus/redux-devtools-extension
*/
StoreDevtoolsModule.instrument({
name: 'UCAP Store App'
// In a production build you would want to disable the Store Devtools
// logOnly: environment.production,
}),
/**
* EffectsModule.forRoot() is imported once in the root module and
* sets up the effects class to be initialized immediately when the
* application starts.
*
* See: https://ngrx.io/guide/effects#registering-root-effects
*/
EffectsModule.forRoot([...effects])
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}

179
src/app/app.theme.scss Normal file
View File

@ -0,0 +1,179 @@
// -----------------------------------------------------------------------------------------------------
// @ Typography
// -----------------------------------------------------------------------------------------------------
// Angular Material typography
// $input: mat-typography-level(16px, 1.125, 400) // line-height must be unitless !!!
$typography: mat-typography-config(
$font-family:
'나눔고딕, Malgun Gothic, 맑은고딕, Arial, Muli, Helvetica Neue, Arial, sans-serif',
$title: mat-typography-level(20px, 32px, 600),
$body-2: mat-typography-level(14px, 24px, 600),
$button: mat-typography-level(14px, 14px, 600),
$input: mat-typography-level(16px, 1.125, 400)
);
// Setup the typography
@include angular-material-typography($typography);
@mixin components-theme($theme) {
}
// -----------------------------------------------------------------------------------------------------
// @ Define the default theme
// -----------------------------------------------------------------------------------------------------
// Define the primary, accent and warn palettes
$default-primary-palette: mat-palette($mat-indigo);
$default-accent-palette: mat-palette($mat-light-blue, 600, 400, 700);
$default-warn-palette: mat-palette($mat-red);
// Create the Material theme object
$theme: mat-light-theme(
$default-primary-palette,
$default-accent-palette,
$default-warn-palette
);
// Add ".theme-default" class to the body to activate this theme.
// Class name must start with "theme-" !!!
/*body.theme-default {
// Create an Angular Material theme from the $theme map
@include angular-material-theme($theme);
// Apply the theme to the user components
@include components-theme($theme);
@include ucap-material-theme($theme);
}*/
// -----------------------------------------------------------------------------------------------------
// @ Define a blue-gray dark theme
// -----------------------------------------------------------------------------------------------------
// Define the primary, accent and warn palettes
$blue-gray-dark-theme-primary-palette: mat-palette($mat-blue);
$blue-gray-dark-theme-accent-palette: mat-palette($mat-blue-gray);
$blue-gray-dark-theme-warn-palette: mat-palette($mat-red);
// Create the Material theme object
$blue-gray-dark-theme: mat-dark-theme(
$blue-gray-dark-theme-primary-palette,
$blue-gray-dark-theme-accent-palette,
$blue-gray-dark-theme-warn-palette
);
// Add ".theme-blue-gray-dark" class to the body to activate this theme.
// Class name must start with "theme-" !!!
body.theme-blue-gray-dark {
// Generate the Angular Material theme
@include angular-material-theme($blue-gray-dark-theme);
// Apply the theme to the user components
@include components-theme($blue-gray-dark-theme);
}
// -----------------------------------------------------------------------------------------------------
// @ Define a pink dark theme
// -----------------------------------------------------------------------------------------------------
// Define the primary, accent and warn palettes
$pink-dark-theme-primary-palette: mat-palette($mat-pink);
$pink-dark-theme-accent-palette: mat-palette($mat-pink);
$pink-dark-theme-warn-palette: mat-palette($mat-red);
// Create the Material theme object
$pink-dark-theme: mat-dark-theme(
$pink-dark-theme-primary-palette,
$pink-dark-theme-accent-palette,
$pink-dark-theme-warn-palette
);
// Add ".theme-pink-dark" class to the body to activate this theme.
// Class name must start with "theme-" !!!
body.theme-pink-dark {
// Generate the Angular Material theme
@include angular-material-theme($pink-dark-theme);
// Apply the theme to the user components
@include components-theme($pink-dark-theme);
}
// -----------------------------------------------------------------------------------------------------
// @ Define a pink light theme --LG RED 변경 예정(샘플링)
// -----------------------------------------------------------------------------------------------------
// Define the primary, accent and warn palettes
$lgRed-light-theme-primary-palette: mat-palette($mat-grey, 800);
$lgRed-light-theme-accent-palette: mat-palette($lg-red, 400);
$lgRed-light-theme-warn-palette: mat-palette($mat-cyan);
// Create the Material theme object
$lgRed-light-theme: mat-light-theme(
$lgRed-light-theme-primary-palette,
$lgRed-light-theme-accent-palette,
$lgRed-light-theme-warn-palette
);
// Add ".theme-pink-dark" class to the body to activate this theme.
// Class name must start with "theme-" !!!
body.theme-lgRed {
// Generate the Angular Material theme
@include angular-material-theme($lgRed-light-theme);
// Apply the theme to the user components
@include components-theme($lgRed-light-theme);
@include ucap-material-theme($lgRed-light-theme);
}
// -----------------------------------------------------------------------------------------------------
//aqua-blue-daesang
// -----------------------------------------------------------------------------------------------------
$aquaBlue-light-theme-primary-palette: mat-palette($daesang-grey, 900);
$aquaBlue-theme-accent-palette: mat-palette($aquaBlue-daesang);
$aquaBlue-theme-warn-palette: mat-palette($mat-orange);
// Create the Material theme object
$aquaBlue-light-theme: mat-light-theme(
$aquaBlue-light-theme-primary-palette,
$aquaBlue-theme-accent-palette,
$aquaBlue-theme-warn-palette
);
// Add ".theme-pink-dark" class to the body to activate this theme.
// Class name must start with "theme-" !!!
body.theme-default {
// Generate the Angular Material theme
@include angular-material-theme($aquaBlue-light-theme);
// Apply the theme to the user components
@include components-theme($aquaBlue-light-theme);
@include ucap-material-theme($aquaBlue-light-theme);
}
// -----------------------------------------------------------------------------------------------------
// @ Define a red theme --LF 변경 예정(샘플링)
// -----------------------------------------------------------------------------------------------------
// Define the primary, accent and warn palettes
$lfRed-light-theme-primary-palette: mat-palette($lf-blue-grey, 800);
$lfRed-light-theme-accent-palette: mat-palette($lf-red, 400);
$lfRed-light-theme-warn-palette: mat-palette($lf-amber);
// Create the Material theme object
$lfRed-light-theme: mat-light-theme(
$lfRed-light-theme-primary-palette,
$lfRed-light-theme-accent-palette,
$lfRed-light-theme-warn-palette
);
// Add ".theme-pink-dark" class to the body to activate this theme.
// Class name must start with "theme-" !!!
body.theme-lfRed {
// Generate the Angular Material theme
@include angular-material-theme($lfRed-light-theme);
// Apply the theme to the user components
@include components-theme($lfRed-light-theme);
@include ucap-material-theme($lfRed-light-theme);
}

View File

@ -0,0 +1,99 @@
<div fxFlexFill class="layout-container">
<div class="navi-container">
<mat-tab-group
vertical
disablePagination="true"
(selectedTabChange)="onSelectedTabChange($event)"
>
<mat-tab>
<ng-template mat-tab-label>
<div class="icon-item">
<svg
xmlns="http://www.w3.org/2000/svg"
width="30"
height="30"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.5"
stroke-linecap="butt"
stroke-linejoin="round"
>
<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
<circle cx="12" cy="7" r="4"></circle>
</svg>
</div>
</ng-template>
</mat-tab>
<mat-tab>
<ng-template mat-tab-label>
<div class="icon-item">
<svg
xmlns="http://www.w3.org/2000/svg"
width="30"
height="30"
viewBox="0 0 24 24"
fill="none"
stroke="#000000"
stroke-width="1.5"
stroke-linecap="butt"
stroke-linejoin="bevel"
>
<path
d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"
></path>
</svg>
</div>
</ng-template>
</mat-tab>
<mat-tab>
<ng-template mat-tab-label>
<div class="icon-item">
<svg
xmlns="http://www.w3.org/2000/svg"
width="30"
height="30"
viewBox="0 0 24 24"
fill="none"
stroke="#000000"
stroke-width="1.5"
stroke-linecap="butt"
stroke-linejoin="bevel"
>
<circle class="st0" cx="18.4" cy="18.5" r="3" />
<circle class="st0" cx="12" cy="5" r="3" />
<path class="st0" d="M12.4,10.5h4c1.1,0,2,0.9,2,2v3" />
<circle class="st0" cx="6.1" cy="18.5" r="3" />
<path class="st0" d="M6.1,15.5v-3c0-1.1,0.9-2,2-2h4" />
<line class="st0" x1="12" y1="8" x2="12" y2="9" />
</svg>
</div>
</ng-template>
</mat-tab>
<mat-tab>
<ng-template mat-tab-label>
<div class="icon-item">
<svg
xmlns="http://www.w3.org/2000/svg"
width="30"
height="30"
viewBox="0 0 24 24"
fill="none"
stroke="#000000"
stroke-width="1.5"
stroke-linecap="butt"
stroke-linejoin="bevel"
>
<polygon
points="21.368 12.001 3 21.609 3 14 11 12 3 9.794 3 2.394"
/>
</svg>
</div>
</ng-template>
</mat-tab>
</mat-tab-group>
</div>
<div>
<router-outlet></router-outlet>
</div>
</div>

View File

@ -0,0 +1,7 @@
.layout-container {
display: flex;
.navi-container {
width: 70px;
}
}

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { DefaultLayoutComponent } from './default.layout.component';
describe('app::layouts::DefaultLayoutComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [DefaultLayoutComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(DefaultLayoutComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(DefaultLayoutComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(DefaultLayoutComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,31 @@
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { MatTabChangeEvent } from '@angular/material/tabs';
@Component({
selector: 'app-layouts-default',
templateUrl: './default.layout.component.html',
styleUrls: ['./default.layout.component.scss']
})
export class DefaultLayoutComponent {
constructor(private router: Router) {}
onSelectedTabChange(event: MatTabChangeEvent) {
switch (event.index) {
case 1:
this.router.navigate(['/chat']);
break;
case 2:
this.router.navigate(['/organization']);
break;
case 3:
this.router.navigate(['/message']);
break;
default:
this.router.navigate(['/group']);
break;
}
console.log('onClickButton', event.index);
}
}

View File

@ -0,0 +1,10 @@
import { TopBarComponent } from './top-bar.component';
import { DefaultLayoutComponent } from './default.layout.component';
import { NoNaviLayoutComponent } from './no-navi.layout.component';
export const COMPONENTS = [
TopBarComponent,
DefaultLayoutComponent,
NoNaviLayoutComponent
];

View File

@ -0,0 +1 @@
<router-outlet></router-outlet>

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { NoNaviLayoutComponent } from './no-navi.layout.component';
describe('app::layouts::NoNaviLayoutComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [NoNaviLayoutComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(NoNaviLayoutComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(NoNaviLayoutComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(NoNaviLayoutComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-layouts-no-navi',
templateUrl: './no-navi.layout.component.html',
styleUrls: ['./no-navi.layout.component.scss']
})
export class NoNaviLayoutComponent {
constructor() {}
}

View File

@ -0,0 +1,10 @@
<mat-toolbar class=".title-bar">
<ucap-title-bar
[platform]="platform"
[native]="native"
(closed)="onClosedTitleBar()"
(maximized)="onMaximizedTitleBar()"
(minimized)="onMinimizedTitleBar()"
>
</ucap-title-bar>
</mat-toolbar>

View File

@ -0,0 +1,12 @@
.title-bar {
width: 100%;
height: 50px;
-webkit-user-select: none;
-webkit-app-region: drag;
position: fixed;
right: 0;
top: 0;
display: flex;
padding: 0;
cursor: pointer;
}

View File

@ -0,0 +1,24 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { TopBarComponent } from './top-bar.component';
describe('app::layouts::common::TopBarComponent', () => {
let component: TopBarComponent;
let fixture: ComponentFixture<TopBarComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [TopBarComponent]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(TopBarComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,25 @@
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Store } from '@ngrx/store';
@Component({
selector: 'app-layouts-top-bar',
templateUrl: './top-bar.component.html',
styleUrls: ['./top-bar.component.scss']
})
export class TopBarComponent implements OnInit, OnDestroy {
platform = 'win32';
native = true;
constructor(private store: Store<any>) {}
ngOnInit() {}
ngOnDestroy(): void {}
onClosedTitleBar() {}
onMaximizedTitleBar() {}
onMinimizedTitleBar() {}
}

View File

@ -0,0 +1 @@
export const DIALOGS = [];

View File

@ -0,0 +1,35 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { FlexLayoutModule } from '@angular/flex-layout';
import { MatIconModule } from '@angular/material/icon';
import { MatTabsModule } from '@angular/material/tabs';
import { MatToolbarModule } from '@angular/material/toolbar';
import { UiModule } from '@ucap/ng-ui';
import { COMPONENTS } from './components';
import { DIALOGS } from './dialogs';
@NgModule({
imports: [
CommonModule,
RouterModule,
FlexLayoutModule,
MatIconModule,
MatTabsModule,
MatToolbarModule,
UiModule
],
exports: [...COMPONENTS, ...DIALOGS],
declarations: [...COMPONENTS, ...DIALOGS],
entryComponents: [...DIALOGS]
})
export class AppLayoutsModule {}

View File

@ -0,0 +1,27 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { ForgotPasswordPageComponent } from './components/forgot-password.page.component';
import { LoginPageComponent } from './components/login.page.component';
import { ResetPasswordPageComponent } from './components/reset-password.page.component';
const routes: Routes = [
{
path: 'login',
component: LoginPageComponent
},
{
path: 'forgot_password',
component: ForgotPasswordPageComponent
},
{
path: 'reset_password',
component: ResetPasswordPageComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AppAccountRoutingPageModule {}

View File

@ -0,0 +1,22 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FlexLayoutModule } from '@angular/flex-layout';
import { AuthenticationUiModule } from '@ucap/ng-ui-authentication';
import { AppAccountRoutingPageModule } from './account-routing.page.module';
import { COMPONENTS } from './components';
@NgModule({
imports: [
CommonModule,
FlexLayoutModule,
AuthenticationUiModule,
AppAccountRoutingPageModule
],
declarations: [...COMPONENTS],
entryComponents: []
})
export class AppAccountPageModule {}

View File

@ -0,0 +1 @@
forgot password page of account is works!

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { ForgotPasswordPageComponent } from './forgot-password.page.component';
describe('app::pages::account::ForgotPasswordPageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [ForgotPasswordPageComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(ForgotPasswordPageComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(ForgotPasswordPageComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(ForgotPasswordPageComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-pages-account-forgot-password',
templateUrl: './forgot-password.page.component.html',
styleUrls: ['./forgot-password.page.component.scss']
})
export class ForgotPasswordPageComponent {
constructor() {}
}

View File

@ -0,0 +1,9 @@
import { ForgotPasswordPageComponent } from './forgot-password.page.component';
import { LoginPageComponent } from './login.page.component';
import { ResetPasswordPageComponent } from './reset-password.page.component';
export const COMPONENTS = [
ForgotPasswordPageComponent,
LoginPageComponent,
ResetPasswordPageComponent
];

View File

@ -0,0 +1 @@
<ucap-authentication-login></ucap-authentication-login>

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { LoginPageComponent } from './login.page.component';
describe('app::pages::account::LoginPageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [LoginPageComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(LoginPageComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(LoginPageComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(LoginPageComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,11 @@
import { Component } from '@angular/core';
import { CommonApiService } from '@ucap/ng-api-common';
@Component({
selector: 'app-pages-account-login',
templateUrl: './login.page.component.html',
styleUrls: ['./login.page.component.scss']
})
export class LoginPageComponent {
constructor(private commonApiService: CommonApiService) {}
}

View File

@ -0,0 +1 @@
reset password page of account is works!

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { ResetPasswordPageComponent } from './reset-password.page.component';
describe('app::pages::account::ResetPasswordPageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [ResetPasswordPageComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(ResetPasswordPageComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(ResetPasswordPageComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(ResetPasswordPageComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-pages-account-reset-password',
templateUrl: './reset-password.page.component.html',
styleUrls: ['./reset-password.page.component.scss']
})
export class ResetPasswordPageComponent {
constructor() {}
}

View File

@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { IndexPageComponent } from './components/index.page.component';
const routes: Routes = [
{
path: '',
component: IndexPageComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AppCallRoutingPageModule {}

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FlexLayoutModule } from '@angular/flex-layout';
import { AppCallRoutingPageModule } from './call-routing.page.module';
import { COMPONENTS } from './components';
@NgModule({
imports: [CommonModule, FlexLayoutModule, AppCallRoutingPageModule],
declarations: [...COMPONENTS],
entryComponents: []
})
export class AppCallPageModule {}

View File

@ -0,0 +1 @@
Index page of call is works!

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { IndexPageComponent } from './index.page.component';
describe('app::pages::organization::IndexPageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [IndexPageComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(IndexPageComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(IndexPageComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(IndexPageComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-pages-organization-index',
templateUrl: './index.page.component.html',
styleUrls: ['./index.page.component.scss']
})
export class IndexPageComponent {
constructor() {}
}

View File

@ -0,0 +1,3 @@
import { IndexPageComponent } from './index.page.component';
export const COMPONENTS = [IndexPageComponent];

View File

@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { IndexPageComponent } from './components/index.page.component';
const routes: Routes = [
{
path: '',
component: IndexPageComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AppChatRoutingPageModule {}

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FlexLayoutModule } from '@angular/flex-layout';
import { AppChatRoutingPageModule } from './chat-routing.page.module';
import { COMPONENTS } from './components';
@NgModule({
imports: [CommonModule, FlexLayoutModule, AppChatRoutingPageModule],
declarations: [...COMPONENTS],
entryComponents: []
})
export class AppChatPageModule {}

View File

@ -0,0 +1 @@
Index page of chat is works!

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { IndexPageComponent } from './index.page.component';
describe('app::pages::organization::IndexPageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [IndexPageComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(IndexPageComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(IndexPageComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(IndexPageComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-pages-organization-index',
templateUrl: './index.page.component.html',
styleUrls: ['./index.page.component.scss']
})
export class IndexPageComponent {
constructor() {}
}

View File

@ -0,0 +1,3 @@
import { IndexPageComponent } from './index.page.component';
export const COMPONENTS = [IndexPageComponent];

View File

@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { E404PageComponent } from './components/e404.page.component';
const routes: Routes = [
{
path: 'e404',
component: E404PageComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AppCommonRoutingPageModule {}

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FlexLayoutModule } from '@angular/flex-layout';
import { AppCommonRoutingPageModule } from './common-routing.page.module';
import { COMPONENTS } from './components';
@NgModule({
imports: [CommonModule, FlexLayoutModule, AppCommonRoutingPageModule],
declarations: [...COMPONENTS],
entryComponents: []
})
export class AppCommonPageModule {}

View File

@ -0,0 +1 @@
404

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { E404PageComponent } from './e404.page.component';
describe('app::pages::common::E404PageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [E404PageComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(E404PageComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(E404PageComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(E404PageComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-pages-common-e404',
templateUrl: './e404.page.component.html',
styleUrls: ['./e404.page.component.scss']
})
export class E404PageComponent {
constructor() {}
}

View File

@ -0,0 +1,3 @@
import { E404PageComponent } from './e404.page.component';
export const COMPONENTS = [E404PageComponent];

View File

@ -0,0 +1 @@
Index page of group is works!

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { IndexPageComponent } from './index.page.component';
describe('app::pages::organization::IndexPageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [IndexPageComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(IndexPageComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(IndexPageComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(IndexPageComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,11 @@
import { Component } from '@angular/core';
import { Store } from '@ngrx/store';
@Component({
selector: 'app-pages-organization-index',
templateUrl: './index.page.component.html',
styleUrls: ['./index.page.component.scss']
})
export class IndexPageComponent {
constructor(private store: Store<any>) {}
}

View File

@ -0,0 +1,3 @@
import { IndexPageComponent } from './index.page.component';
export const COMPONENTS = [IndexPageComponent];

View File

@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { IndexPageComponent } from './components/index.page.component';
const routes: Routes = [
{
path: '',
component: IndexPageComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AppGroupRoutingPageModule {}

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FlexLayoutModule } from '@angular/flex-layout';
import { AppGroupRoutingPageModule } from './group-routing.page.module';
import { COMPONENTS } from './components';
@NgModule({
imports: [CommonModule, FlexLayoutModule, AppGroupRoutingPageModule],
declarations: [...COMPONENTS],
entryComponents: []
})
export class AppGroupPageModule {}

View File

@ -0,0 +1 @@
Index page of message is works!

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { IndexPageComponent } from './index.page.component';
describe('app::pages::organization::IndexPageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [IndexPageComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(IndexPageComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(IndexPageComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(IndexPageComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-pages-organization-index',
templateUrl: './index.page.component.html',
styleUrls: ['./index.page.component.scss']
})
export class IndexPageComponent {
constructor() {}
}

View File

@ -0,0 +1,3 @@
import { IndexPageComponent } from './index.page.component';
export const COMPONENTS = [IndexPageComponent];

View File

@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { IndexPageComponent } from './components/index.page.component';
const routes: Routes = [
{
path: '',
component: IndexPageComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AppMessageRoutingPageModule {}

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FlexLayoutModule } from '@angular/flex-layout';
import { AppMessageRoutingPageModule } from './message-routing.page.module';
import { COMPONENTS } from './components';
@NgModule({
imports: [CommonModule, FlexLayoutModule, AppMessageRoutingPageModule],
declarations: [...COMPONENTS],
entryComponents: []
})
export class AppMessagePageModule {}

View File

@ -0,0 +1 @@
Index page of organization is works!

View File

@ -0,0 +1,32 @@
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { IndexPageComponent } from './index.page.component';
describe('app::pages::organization::IndexPageComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [RouterTestingModule],
declarations: [IndexPageComponent]
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(IndexPageComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
it(`should have as title 'ucap-lg-web'`, () => {
const fixture = TestBed.createComponent(IndexPageComponent);
const app = fixture.componentInstance;
});
it('should render title', () => {
const fixture = TestBed.createComponent(IndexPageComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(compiled.querySelector('.content span').textContent).toContain(
'ucap-lg-web app is running!'
);
});
});

View File

@ -0,0 +1,10 @@
import { Component } from '@angular/core';
@Component({
selector: 'app-pages-organization-index',
templateUrl: './index.page.component.html',
styleUrls: ['./index.page.component.scss']
})
export class IndexPageComponent {
constructor() {}
}

View File

@ -0,0 +1,3 @@
import { IndexPageComponent } from './index.page.component';
export const COMPONENTS = [IndexPageComponent];

View File

@ -0,0 +1,17 @@
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { IndexPageComponent } from './components/index.page.component';
const routes: Routes = [
{
path: '',
component: IndexPageComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AppOrganizationRoutingPageModule {}

View File

@ -0,0 +1,15 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FlexLayoutModule } from '@angular/flex-layout';
import { AppOrganizationRoutingPageModule } from './organization-routing.page.module';
import { COMPONENTS } from './components';
@NgModule({
imports: [CommonModule, FlexLayoutModule, AppOrganizationRoutingPageModule],
declarations: [...COMPONENTS],
entryComponents: []
})
export class AppOrganizationPageModule {}

Some files were not shown because too many files have changed in this diff Show More