project initialized
This commit is contained in:
commit
5078386856
13
.editorconfig
Normal file
13
.editorconfig
Normal 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
46
.gitignore
vendored
Normal 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
5
.prettierrc
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"trailingComma": "none",
|
||||||
|
"tabWidth": 2,
|
||||||
|
"singleQuote": true
|
||||||
|
}
|
11
.vscode/extensions.json
vendored
Normal file
11
.vscode/extensions.json
vendored
Normal 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
7
.vscode/launch.json
vendored
Normal 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
16
.vscode/settings.json
vendored
Normal 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
15
.vscode/tasks.json
vendored
Normal 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
27
README.md
Normal 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
140
angular.json
Normal 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
12
browserslist
Normal 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'.
|
13
config/custom.webpack.config.js
Normal file
13
config/custom.webpack.config.js
Normal 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
10
docker/docker-compose.yml
Normal 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
|
25
docker/etc/nginx/nginx.conf
Normal file
25
docker/etc/nginx/nginx.conf
Normal 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
32
e2e/protractor.conf.js
Normal 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
28
e2e/src/app.e2e-spec.ts
Normal 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
11
e2e/src/app.po.ts
Normal 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
13
e2e/tsconfig.json
Normal 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
32
karma.conf.js
Normal 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
14203
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
129
package.json
Normal file
129
package.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
26
src/app/app-provider.module.ts
Normal file
26
src/app/app-provider.module.ts
Normal 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 {}
|
72
src/app/app-routing.module.ts
Normal file
72
src/app/app-routing.module.ts
Normal 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 {}
|
2
src/app/app.component.html
Normal file
2
src/app/app.component.html
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<app-layouts-top-bar></app-layouts-top-bar>
|
||||||
|
<router-outlet></router-outlet>
|
4
src/app/app.component.scss
Normal file
4
src/app/app.component.scss
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
:host {
|
||||||
|
width: 100%;
|
||||||
|
height: auto !important;
|
||||||
|
}
|
33
src/app/app.component.spec.ts
Normal file
33
src/app/app.component.spec.ts
Normal 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
13
src/app/app.component.ts
Normal 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
155
src/app/app.module.ts
Normal 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
179
src/app/app.theme.scss
Normal 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);
|
||||||
|
}
|
99
src/app/layouts/components/default.layout.component.html
Normal file
99
src/app/layouts/components/default.layout.component.html
Normal 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>
|
7
src/app/layouts/components/default.layout.component.scss
Normal file
7
src/app/layouts/components/default.layout.component.scss
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
.layout-container {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.navi-container {
|
||||||
|
width: 70px;
|
||||||
|
}
|
||||||
|
}
|
32
src/app/layouts/components/default.layout.component.spec.ts
Normal file
32
src/app/layouts/components/default.layout.component.spec.ts
Normal 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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
31
src/app/layouts/components/default.layout.component.ts
Normal file
31
src/app/layouts/components/default.layout.component.ts
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
10
src/app/layouts/components/index.ts
Normal file
10
src/app/layouts/components/index.ts
Normal 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
|
||||||
|
];
|
1
src/app/layouts/components/no-navi.layout.component.html
Normal file
1
src/app/layouts/components/no-navi.layout.component.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<router-outlet></router-outlet>
|
32
src/app/layouts/components/no-navi.layout.component.spec.ts
Normal file
32
src/app/layouts/components/no-navi.layout.component.spec.ts
Normal 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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
10
src/app/layouts/components/no-navi.layout.component.ts
Normal file
10
src/app/layouts/components/no-navi.layout.component.ts
Normal 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() {}
|
||||||
|
}
|
10
src/app/layouts/components/top-bar.component.html
Normal file
10
src/app/layouts/components/top-bar.component.html
Normal 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>
|
12
src/app/layouts/components/top-bar.component.scss
Normal file
12
src/app/layouts/components/top-bar.component.scss
Normal 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;
|
||||||
|
}
|
24
src/app/layouts/components/top-bar.component.spec.ts
Normal file
24
src/app/layouts/components/top-bar.component.spec.ts
Normal 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();
|
||||||
|
});
|
||||||
|
});
|
25
src/app/layouts/components/top-bar.component.ts
Normal file
25
src/app/layouts/components/top-bar.component.ts
Normal 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() {}
|
||||||
|
}
|
1
src/app/layouts/dialogs/index.ts
Normal file
1
src/app/layouts/dialogs/index.ts
Normal file
|
@ -0,0 +1 @@
|
||||||
|
export const DIALOGS = [];
|
35
src/app/layouts/layouts.module.ts
Normal file
35
src/app/layouts/layouts.module.ts
Normal 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 {}
|
27
src/app/pages/account/account-routing.page.module.ts
Normal file
27
src/app/pages/account/account-routing.page.module.ts
Normal 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 {}
|
22
src/app/pages/account/account.page.module.ts
Normal file
22
src/app/pages/account/account.page.module.ts
Normal 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 {}
|
|
@ -0,0 +1 @@
|
||||||
|
forgot password page of account is works!
|
|
@ -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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
|
@ -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() {}
|
||||||
|
}
|
9
src/app/pages/account/components/index.ts
Normal file
9
src/app/pages/account/components/index.ts
Normal 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
|
||||||
|
];
|
|
@ -0,0 +1 @@
|
||||||
|
<ucap-authentication-login></ucap-authentication-login>
|
|
@ -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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
11
src/app/pages/account/components/login.page.component.ts
Normal file
11
src/app/pages/account/components/login.page.component.ts
Normal 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) {}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
reset password page of account is works!
|
|
@ -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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
|
@ -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() {}
|
||||||
|
}
|
17
src/app/pages/call/call-routing.page.module.ts
Normal file
17
src/app/pages/call/call-routing.page.module.ts
Normal 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 {}
|
15
src/app/pages/call/call.page.module.ts
Normal file
15
src/app/pages/call/call.page.module.ts
Normal 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 {}
|
1
src/app/pages/call/components/index.page.component.html
Normal file
1
src/app/pages/call/components/index.page.component.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Index page of call is works!
|
32
src/app/pages/call/components/index.page.component.spec.ts
Normal file
32
src/app/pages/call/components/index.page.component.spec.ts
Normal 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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
10
src/app/pages/call/components/index.page.component.ts
Normal file
10
src/app/pages/call/components/index.page.component.ts
Normal 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() {}
|
||||||
|
}
|
3
src/app/pages/call/components/index.ts
Normal file
3
src/app/pages/call/components/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import { IndexPageComponent } from './index.page.component';
|
||||||
|
|
||||||
|
export const COMPONENTS = [IndexPageComponent];
|
17
src/app/pages/chat/chat-routing.page.module.ts
Normal file
17
src/app/pages/chat/chat-routing.page.module.ts
Normal 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 {}
|
15
src/app/pages/chat/chat.page.module.ts
Normal file
15
src/app/pages/chat/chat.page.module.ts
Normal 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 {}
|
1
src/app/pages/chat/components/index.page.component.html
Normal file
1
src/app/pages/chat/components/index.page.component.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Index page of chat is works!
|
32
src/app/pages/chat/components/index.page.component.spec.ts
Normal file
32
src/app/pages/chat/components/index.page.component.spec.ts
Normal 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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
10
src/app/pages/chat/components/index.page.component.ts
Normal file
10
src/app/pages/chat/components/index.page.component.ts
Normal 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() {}
|
||||||
|
}
|
3
src/app/pages/chat/components/index.ts
Normal file
3
src/app/pages/chat/components/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import { IndexPageComponent } from './index.page.component';
|
||||||
|
|
||||||
|
export const COMPONENTS = [IndexPageComponent];
|
17
src/app/pages/common/common-routing.page.module.ts
Normal file
17
src/app/pages/common/common-routing.page.module.ts
Normal 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 {}
|
15
src/app/pages/common/common.page.module.ts
Normal file
15
src/app/pages/common/common.page.module.ts
Normal 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 {}
|
1
src/app/pages/common/components/e404.page.component.html
Normal file
1
src/app/pages/common/components/e404.page.component.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
404
|
32
src/app/pages/common/components/e404.page.component.spec.ts
Normal file
32
src/app/pages/common/components/e404.page.component.spec.ts
Normal 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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
10
src/app/pages/common/components/e404.page.component.ts
Normal file
10
src/app/pages/common/components/e404.page.component.ts
Normal 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() {}
|
||||||
|
}
|
3
src/app/pages/common/components/index.ts
Normal file
3
src/app/pages/common/components/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import { E404PageComponent } from './e404.page.component';
|
||||||
|
|
||||||
|
export const COMPONENTS = [E404PageComponent];
|
1
src/app/pages/group/components/index.page.component.html
Normal file
1
src/app/pages/group/components/index.page.component.html
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Index page of group is works!
|
32
src/app/pages/group/components/index.page.component.spec.ts
Normal file
32
src/app/pages/group/components/index.page.component.spec.ts
Normal 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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
11
src/app/pages/group/components/index.page.component.ts
Normal file
11
src/app/pages/group/components/index.page.component.ts
Normal 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>) {}
|
||||||
|
}
|
3
src/app/pages/group/components/index.ts
Normal file
3
src/app/pages/group/components/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import { IndexPageComponent } from './index.page.component';
|
||||||
|
|
||||||
|
export const COMPONENTS = [IndexPageComponent];
|
17
src/app/pages/group/group-routing.page.module.ts
Normal file
17
src/app/pages/group/group-routing.page.module.ts
Normal 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 {}
|
15
src/app/pages/group/group.page.module.ts
Normal file
15
src/app/pages/group/group.page.module.ts
Normal 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 {}
|
|
@ -0,0 +1 @@
|
||||||
|
Index page of message is works!
|
|
@ -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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
10
src/app/pages/message/components/index.page.component.ts
Normal file
10
src/app/pages/message/components/index.page.component.ts
Normal 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() {}
|
||||||
|
}
|
3
src/app/pages/message/components/index.ts
Normal file
3
src/app/pages/message/components/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import { IndexPageComponent } from './index.page.component';
|
||||||
|
|
||||||
|
export const COMPONENTS = [IndexPageComponent];
|
17
src/app/pages/message/message-routing.page.module.ts
Normal file
17
src/app/pages/message/message-routing.page.module.ts
Normal 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 {}
|
15
src/app/pages/message/message.page.module.ts
Normal file
15
src/app/pages/message/message.page.module.ts
Normal 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 {}
|
|
@ -0,0 +1 @@
|
||||||
|
Index page of organization is works!
|
|
@ -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!'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
|
@ -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() {}
|
||||||
|
}
|
3
src/app/pages/organization/components/index.ts
Normal file
3
src/app/pages/organization/components/index.ts
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
import { IndexPageComponent } from './index.page.component';
|
||||||
|
|
||||||
|
export const COMPONENTS = [IndexPageComponent];
|
|
@ -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 {}
|
15
src/app/pages/organization/organization.page.module.ts
Normal file
15
src/app/pages/organization/organization.page.module.ts
Normal 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
Loading…
Reference in New Issue
Block a user