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