create bundle for all components
@@ -1,13 +1,19 @@
|
||||
npm-debug.log
|
||||
node_modules
|
||||
jspm_packages
|
||||
.idea
|
||||
typings
|
||||
coverage
|
||||
dist
|
||||
src/**/*.js
|
||||
src/**/*.js.map
|
||||
src/**/*.d.ts
|
||||
demo/**/*.js
|
||||
demo/**/*.js.map
|
||||
demo/**/*.d.ts
|
||||
index.js
|
||||
index.js.map
|
||||
!systemjs.config.js
|
||||
*.tgz
|
||||
/package/
|
||||
/bundles/
|
||||
index.d.ts
|
||||
|
@@ -2,14 +2,23 @@ npm-debug.log
|
||||
.idea
|
||||
|
||||
coverage/
|
||||
demo/
|
||||
node_modules
|
||||
typings/
|
||||
fonts/
|
||||
|
||||
|
||||
/.editorconfig
|
||||
/.travis.yml
|
||||
/*.js
|
||||
*.ts
|
||||
!*.d.ts
|
||||
!*.js
|
||||
!*.js.map
|
||||
/*.json
|
||||
/*.ts
|
||||
/*.js.map
|
||||
*.spec.js
|
||||
*.tgz
|
||||
/.npmignore
|
||||
/karma-test-shim.js
|
||||
/karma.conf.js
|
||||
/make.js
|
||||
/package/
|
||||
|
@@ -1,10 +1,23 @@
|
||||
# http://editorconfig.org
|
||||
|
||||
root = true
|
||||
|
||||
[{src,scripts}/**.{ts,json,js}]
|
||||
end_of_line = crlf
|
||||
[*]
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[package.json]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[karma.conf.js]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.md]
|
||||
insert_final_newline = false
|
||||
trim_trailing_whitespace = false
|
||||
|
@@ -5,51 +5,52 @@
|
||||
"author": "Alfresco Software, Ltd.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"clean": "npm install rimraf && rimraf dist node_modules typings dist",
|
||||
"clean": "npm install rimraf && npm run clean-build && rimraf dist node_modules typings dist",
|
||||
"clean-build" : "rimraf 'src/{,**/}**.js' 'src/{,**/}**.js.map' 'src/{,**/}**.d.ts'",
|
||||
"postinstall": "npm run build",
|
||||
"start": "npm run build && concurrently \"npm run tsc:w\" \"npm run server\" ",
|
||||
"server": "wsrv -o -s -l",
|
||||
"build": "npm run tslint && rimraf dist && npm run tsc",
|
||||
"build": "npm run tslint && npm run clean-build && npm run tsc",
|
||||
"build:w": "npm run tslint && rimraf dist && npm run tsc:w",
|
||||
"tsc": "tsc",
|
||||
"tsc:w": "tsc -w",
|
||||
"tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json src/{,**/}**.ts"
|
||||
"tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json src/{,**/}**.ts -e '{,**/}**.d.ts'"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@angular/common": "2.0.0",
|
||||
"@angular/compiler": "2.0.0",
|
||||
"@angular/core": "2.0.0",
|
||||
"@angular/forms": "2.0.0",
|
||||
"@angular/http": "2.0.0",
|
||||
"@angular/platform-browser": "2.0.0",
|
||||
"@angular/platform-browser-dynamic": "2.0.0",
|
||||
"@angular/common": "2.2.2",
|
||||
"@angular/compiler": "2.2.2",
|
||||
"@angular/compiler-cli": "2.2.2",
|
||||
"@angular/core": "2.2.2",
|
||||
"@angular/forms": "2.2.2",
|
||||
"@angular/http": "2.2.2",
|
||||
"@angular/platform-browser": "2.2.2",
|
||||
"@angular/platform-browser-dynamic": "2.2.2",
|
||||
"@angular/router": "3.2.2",
|
||||
"@angular/upgrade": "2.2.2",
|
||||
"core-js": "^2.4.1",
|
||||
"reflect-metadata": "^0.1.3",
|
||||
"rxjs": "5.0.0-beta.12",
|
||||
"systemjs": "0.19.27",
|
||||
"zone.js": "^0.6.23",
|
||||
|
||||
"intl": "1.2.4",
|
||||
"dialog-polyfill": "^0.4.3",
|
||||
"element.scrollintoviewifneeded-polyfill": "^1.0.1",
|
||||
"material-design-icons": "2.2.3",
|
||||
"material-design-lite": "1.2.1",
|
||||
|
||||
"ng2-translate": "2.5.0",
|
||||
"alfresco-js-api": "^0.5.0",
|
||||
"ng2-alfresco-core": "0.5.0",
|
||||
"ng2-alfresco-userinfo": "0.5.0",
|
||||
"ng2-alfresco-login": "^0.5.0"
|
||||
"ng2-alfresco-login": "0.5.0",
|
||||
"ng2-alfresco-userinfo": "0.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^6.0.42",
|
||||
"@types/core-js": "^0.9.32",
|
||||
"@types/jasmine": "^2.2.33",
|
||||
"@types/node": "^6.0.42",
|
||||
"concurrently": "^2.2.0",
|
||||
"license-check": "1.1.5",
|
||||
"rimraf": "2.5.2",
|
||||
"tslint": "3.15.1",
|
||||
"license-check": "1.1.5",
|
||||
"typescript": "^2.0.2",
|
||||
"wsrv": "^0.1.5"
|
||||
},
|
||||
|
@@ -1,166 +1,166 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { NgModule, Component, OnInit } from '@angular/core';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||
import { UserInfoComponentModule } from 'ng2-alfresco-userinfo';
|
||||
import { CoreModule } from 'ng2-alfresco-core';
|
||||
import { LoginModule } from 'ng2-alfresco-login';
|
||||
import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core';
|
||||
|
||||
@Component({
|
||||
selector: 'alfresco-app-demo',
|
||||
template: `
|
||||
<label for="host"><b>Insert the ip of your Alfresco and Activiti instance:</b></label><br>
|
||||
ECM Host: <input id="ecmHost" type="text" size="48" (change)="updateEcmHost()" [(ngModel)]="ecmHost"><br>
|
||||
BPM Host: <input id="bpmHost" type="text" size="48" (change)="updateBpmHost()" [(ngModel)]="bpmHost"><br>
|
||||
<div style="border-radius: 8px; position: absolute; background-color: papayawhip; color: cadetblue; right: 10px;
|
||||
top: 120px; z-index: 1;">
|
||||
|
||||
<p style="width:120px;margin: 20px;">
|
||||
<label for="switch1" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" id="switch1" class="mdl-switch__input" checked
|
||||
(click)="toggleECM(ecm.checked)" #ecm>
|
||||
<span class="mdl-switch__label">ECM</span>
|
||||
</label>
|
||||
</p>
|
||||
<p style="width:120px;margin: 20px;">
|
||||
<label for="switch2" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" id="switch2" class="mdl-switch__input"
|
||||
(click)="toggleBPM(bpm.checked)" #bpm>
|
||||
<span class="mdl-switch__label">BPM</span>
|
||||
</label>
|
||||
</p>
|
||||
<p style="width:120px;margin: 20px;">
|
||||
<label for="switch3" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" id="switch3" class="mdl-switch__input" checked (click)="toggleCSRF()" #csrf>
|
||||
<span class="mdl-switch__label">CSRF</span>
|
||||
</label>
|
||||
</p>
|
||||
<p style="width:120px;margin: 20px;">
|
||||
<button (click)="logout()" class="mdl-button mdl-js-button mdl-button--raised mdl-button--accent">Logout</button>
|
||||
</p>
|
||||
</div>
|
||||
{{ status }}
|
||||
<hr>
|
||||
|
||||
<!-- USER INFO COMPONENT -->
|
||||
<div style="position: absolute;z-index: 2;">
|
||||
<ng2-alfresco-userinfo [menuOpenType]="left"></ng2-alfresco-userinfo>
|
||||
</div>
|
||||
|
||||
<!-- LOGIN COMPONENT -->
|
||||
<alfresco-login [providers]="providers"
|
||||
[disableCsrf]="disableCsrf"></alfresco-login>`,
|
||||
styles: [
|
||||
':host > .container {padding: 10px}',
|
||||
'.p-10 { padding: 10px; }'
|
||||
]
|
||||
})
|
||||
class UserInfoDemo implements OnInit {
|
||||
|
||||
public ecmHost: string = 'http://localhost:8080';
|
||||
|
||||
public bpmHost: string = 'http://localhost:9999';
|
||||
|
||||
public userToLogin: string = 'admin';
|
||||
|
||||
public password: string = 'admin';
|
||||
|
||||
public loginErrorMessage: string;
|
||||
|
||||
public providers: string = 'BPM';
|
||||
|
||||
private authenticated: boolean;
|
||||
|
||||
private token: any;
|
||||
|
||||
public disableCsrf: boolean = false;
|
||||
|
||||
constructor(private authService: AlfrescoAuthenticationService,
|
||||
private settingsService: AlfrescoSettingsService) {
|
||||
settingsService.ecmHost = this.ecmHost;
|
||||
settingsService.bpmHost = this.bpmHost;
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.settingsService.setProviders(this.providers);
|
||||
}
|
||||
|
||||
logout() {
|
||||
this.authService.logout();
|
||||
}
|
||||
|
||||
login(user, password) {
|
||||
this.settingsService.setProviders(this.providers);
|
||||
this.authService.login(user, password).subscribe(
|
||||
token => {
|
||||
console.log(token);
|
||||
this.token = token;
|
||||
this.authenticated = true;
|
||||
},
|
||||
error => {
|
||||
console.log(error);
|
||||
this.authenticated = false;
|
||||
this.loginErrorMessage = error;
|
||||
});
|
||||
}
|
||||
|
||||
isLoggedIn(): boolean {
|
||||
return this.authService.isLoggedIn();
|
||||
}
|
||||
|
||||
toggleECM(checked) {
|
||||
if (checked && this.providers === 'BPM') {
|
||||
this.providers = 'ALL';
|
||||
} else if (checked) {
|
||||
this.providers = 'ECM';
|
||||
} else {
|
||||
this.providers = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
toggleBPM(checked) {
|
||||
if (checked && this.providers === 'ECM') {
|
||||
this.providers = 'ALL';
|
||||
} else if (checked) {
|
||||
this.providers = 'BPM';
|
||||
} else {
|
||||
this.providers = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
toggleCSRF() {
|
||||
this.disableCsrf = !this.disableCsrf;
|
||||
}
|
||||
}
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
BrowserModule,
|
||||
CoreModule.forRoot(),
|
||||
UserInfoComponentModule.forRoot(),
|
||||
LoginModule
|
||||
],
|
||||
declarations: [UserInfoDemo],
|
||||
bootstrap: [UserInfoDemo]
|
||||
})
|
||||
export class AppModule {
|
||||
}
|
||||
|
||||
platformBrowserDynamic().bootstrapModule(AppModule);
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { NgModule, Component, OnInit } from '@angular/core';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
||||
import { UserInfoComponentModule } from 'ng2-alfresco-userinfo';
|
||||
import { CoreModule } from 'ng2-alfresco-core';
|
||||
import { LoginModule } from 'ng2-alfresco-login';
|
||||
import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core';
|
||||
|
||||
@Component({
|
||||
selector: 'alfresco-app-demo',
|
||||
template: `
|
||||
<label for="host"><b>Insert the ip of your Alfresco and Activiti instance:</b></label><br>
|
||||
ECM Host: <input id="ecmHost" type="text" size="48" (change)="updateEcmHost()" [(ngModel)]="ecmHost"><br>
|
||||
BPM Host: <input id="bpmHost" type="text" size="48" (change)="updateBpmHost()" [(ngModel)]="bpmHost"><br>
|
||||
<div style="border-radius: 8px; position: absolute; background-color: papayawhip; color: cadetblue; right: 10px;
|
||||
top: 120px; z-index: 1;">
|
||||
|
||||
<p style="width:120px;margin: 20px;">
|
||||
<label for="switch1" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" id="switch1" class="mdl-switch__input" checked
|
||||
(click)="toggleECM(ecm.checked)" #ecm>
|
||||
<span class="mdl-switch__label">ECM</span>
|
||||
</label>
|
||||
</p>
|
||||
<p style="width:120px;margin: 20px;">
|
||||
<label for="switch2" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" id="switch2" class="mdl-switch__input"
|
||||
(click)="toggleBPM(bpm.checked)" #bpm>
|
||||
<span class="mdl-switch__label">BPM</span>
|
||||
</label>
|
||||
</p>
|
||||
<p style="width:120px;margin: 20px;">
|
||||
<label for="switch3" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
|
||||
<input type="checkbox" id="switch3" class="mdl-switch__input" checked (click)="toggleCSRF()" #csrf>
|
||||
<span class="mdl-switch__label">CSRF</span>
|
||||
</label>
|
||||
</p>
|
||||
<p style="width:120px;margin: 20px;">
|
||||
<button (click)="logout()" class="mdl-button mdl-js-button mdl-button--raised mdl-button--accent">Logout</button>
|
||||
</p>
|
||||
</div>
|
||||
{{ status }}
|
||||
<hr>
|
||||
|
||||
<!-- USER INFO COMPONENT -->
|
||||
<div style="position: absolute;z-index: 2;">
|
||||
<ng2-alfresco-userinfo [menuOpenType]="left"></ng2-alfresco-userinfo>
|
||||
</div>
|
||||
|
||||
<!-- LOGIN COMPONENT -->
|
||||
<alfresco-login [providers]="providers"
|
||||
[disableCsrf]="disableCsrf"></alfresco-login>`,
|
||||
styles: [
|
||||
':host > .container {padding: 10px}',
|
||||
'.p-10 { padding: 10px; }'
|
||||
]
|
||||
})
|
||||
class UserInfoDemo implements OnInit {
|
||||
|
||||
public ecmHost: string = 'http://localhost:8080';
|
||||
|
||||
public bpmHost: string = 'http://localhost:9999';
|
||||
|
||||
public userToLogin: string = 'admin';
|
||||
|
||||
public password: string = 'admin';
|
||||
|
||||
public loginErrorMessage: string;
|
||||
|
||||
public providers: string = 'BPM';
|
||||
|
||||
private authenticated: boolean;
|
||||
|
||||
private token: any;
|
||||
|
||||
public disableCsrf: boolean = false;
|
||||
|
||||
constructor(private authService: AlfrescoAuthenticationService,
|
||||
private settingsService: AlfrescoSettingsService) {
|
||||
settingsService.ecmHost = this.ecmHost;
|
||||
settingsService.bpmHost = this.bpmHost;
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.settingsService.setProviders(this.providers);
|
||||
}
|
||||
|
||||
logout() {
|
||||
this.authService.logout();
|
||||
}
|
||||
|
||||
login(user, password) {
|
||||
this.settingsService.setProviders(this.providers);
|
||||
this.authService.login(user, password).subscribe(
|
||||
token => {
|
||||
console.log(token);
|
||||
this.token = token;
|
||||
this.authenticated = true;
|
||||
},
|
||||
error => {
|
||||
console.log(error);
|
||||
this.authenticated = false;
|
||||
this.loginErrorMessage = error;
|
||||
});
|
||||
}
|
||||
|
||||
isLoggedIn(): boolean {
|
||||
return this.authService.isLoggedIn();
|
||||
}
|
||||
|
||||
toggleECM(checked) {
|
||||
if (checked && this.providers === 'BPM') {
|
||||
this.providers = 'ALL';
|
||||
} else if (checked) {
|
||||
this.providers = 'ECM';
|
||||
} else {
|
||||
this.providers = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
toggleBPM(checked) {
|
||||
if (checked && this.providers === 'ECM') {
|
||||
this.providers = 'ALL';
|
||||
} else if (checked) {
|
||||
this.providers = 'BPM';
|
||||
} else {
|
||||
this.providers = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
toggleCSRF() {
|
||||
this.disableCsrf = !this.disableCsrf;
|
||||
}
|
||||
}
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
BrowserModule,
|
||||
CoreModule.forRoot(),
|
||||
UserInfoComponentModule.forRoot(),
|
||||
LoginModule
|
||||
],
|
||||
declarations: [UserInfoDemo],
|
||||
bootstrap: [UserInfoDemo]
|
||||
})
|
||||
export class AppModule {
|
||||
}
|
||||
|
||||
platformBrowserDynamic().bootstrapModule(AppModule);
|
||||
|
@@ -11,7 +11,7 @@
|
||||
// map tells the System loader where to look for things
|
||||
map: {
|
||||
// our app is within the app folder
|
||||
app: 'dist',
|
||||
app: 'src',
|
||||
// angular bundles
|
||||
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
|
||||
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
|
||||
@@ -25,9 +25,9 @@
|
||||
'rxjs': 'npm:rxjs',
|
||||
'ng2-translate': 'npm:ng2-translate',
|
||||
'alfresco-js-api': 'npm:alfresco-js-api/dist',
|
||||
'ng2-alfresco-core': 'npm:ng2-alfresco-core/dist',
|
||||
'ng2-alfresco-userinfo': 'npm:ng2-alfresco-userinfo/dist',
|
||||
'ng2-alfresco-login': 'npm:ng2-alfresco-login/dist'
|
||||
'ng2-alfresco-core': 'npm:ng2-alfresco-core',
|
||||
'ng2-alfresco-userinfo': 'npm:ng2-alfresco-userinfo',
|
||||
'ng2-alfresco-login': 'npm:ng2-alfresco-login'
|
||||
},
|
||||
// packages tells the System loader how to load when no filename and/or no extension
|
||||
packages: {
|
||||
|
@@ -3,11 +3,10 @@
|
||||
"target": "es5",
|
||||
"module": "commonjs",
|
||||
"moduleResolution": "node",
|
||||
"sourceMap": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"sourceMap": true,
|
||||
"removeComments": true,
|
||||
"declaration": true,
|
||||
"skipLibCheck": true,
|
||||
"noLib": false,
|
||||
"allowUnreachableCode": false,
|
||||
"allowUnusedLabels": false,
|
||||
@@ -15,12 +14,19 @@
|
||||
"noImplicitReturns": false,
|
||||
"noImplicitUseStrict": false,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"outDir": "dist",
|
||||
"types": ["core-js", "jasmine", "node"]
|
||||
"removeComments": true,
|
||||
"declaration": true,
|
||||
"lib": [
|
||||
"es2015",
|
||||
"dom"
|
||||
],
|
||||
"suppressImplicitAnyIndexErrors": true
|
||||
},
|
||||
"exclude": [
|
||||
"demo",
|
||||
"node_modules",
|
||||
"dist"
|
||||
]
|
||||
"node_modules"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"strictMetadataEmit": false,
|
||||
"skipTemplateCodegen": true
|
||||
}
|
||||
}
|
||||
|
305
ng2-components/ng2-alfresco-userinfo/gulpfile.ts
Executable file
@@ -0,0 +1,305 @@
|
||||
import * as gulp from 'gulp';
|
||||
import * as util from 'gulp-util';
|
||||
import * as runSequence from 'run-sequence';
|
||||
import * as gulpLoadPlugins from 'gulp-load-plugins';
|
||||
import * as merge from 'merge-stream';
|
||||
import * as rimraf from 'rimraf';
|
||||
import { join } from 'path';
|
||||
import * as Builder from 'systemjs-builder';
|
||||
var autoprefixer = require('autoprefixer');
|
||||
import * as cssnano from 'cssnano';
|
||||
import * as filter from 'gulp-filter';
|
||||
|
||||
var APP_SRC = `.`;
|
||||
var CSS_PROD_BUNDLE = 'main.css';
|
||||
var JS_PROD_SHIMS_BUNDLE = 'shims.js';
|
||||
var NG_FACTORY_FILE = 'main-prod';
|
||||
|
||||
const BUILD_TYPES = {
|
||||
DEVELOPMENT: 'dev',
|
||||
PRODUCTION: 'prod'
|
||||
};
|
||||
|
||||
function normalizeDependencies(deps) {
|
||||
deps
|
||||
.filter((d) => !/\*/.test(d.src)) // Skip globs
|
||||
.forEach((d) => d.src = require.resolve(d.src));
|
||||
return deps;
|
||||
}
|
||||
|
||||
function filterDependency(type: string, d): boolean {
|
||||
const t = d.buildType || d.env;
|
||||
d.buildType = t;
|
||||
if (!t) {
|
||||
d.buildType = Object.keys(BUILD_TYPES).map(k => BUILD_TYPES[k]);
|
||||
}
|
||||
if (!(d.buildType instanceof Array)) {
|
||||
(<any>d).env = [d.buildType];
|
||||
}
|
||||
return d.buildType.indexOf(type) >= 0;
|
||||
}
|
||||
|
||||
function getInjectableDependency() {
|
||||
var APP_ASSETS = [
|
||||
{src: `src/css/main.css`, inject: true, vendor: false},
|
||||
];
|
||||
|
||||
var NPM_DEPENDENCIES = [
|
||||
{src: 'zone.js/dist/zone.js', inject: 'libs'},
|
||||
{src: 'core-js/client/shim.min.js', inject: 'shims'},
|
||||
{src: 'intl/dist/Intl.min.js', inject: 'shims'},
|
||||
{src: 'systemjs/dist/system.src.js', inject: 'shims', buildType:'dev'}
|
||||
];
|
||||
|
||||
return normalizeDependencies(NPM_DEPENDENCIES.filter(filterDependency.bind(null, 'dev')))
|
||||
.concat(APP_ASSETS.filter(filterDependency.bind(null, 'dev')));
|
||||
}
|
||||
|
||||
const plugins = <any>gulpLoadPlugins();
|
||||
|
||||
let tsProjects: any = {};
|
||||
|
||||
function makeTsProject(options: Object = {}) {
|
||||
let optionsHash = JSON.stringify(options);
|
||||
if (!tsProjects[optionsHash]) {
|
||||
let config = Object.assign({
|
||||
typescript: require('typescript')
|
||||
}, options);
|
||||
tsProjects[optionsHash] =
|
||||
plugins.typescript.createProject('tsconfig.json', config);
|
||||
}
|
||||
return tsProjects[optionsHash];
|
||||
}
|
||||
|
||||
gulp.task('build.html_css', () => {
|
||||
const gulpConcatCssConfig = {
|
||||
targetFile: CSS_PROD_BUNDLE,
|
||||
options: {
|
||||
rebaseUrls: false
|
||||
}
|
||||
};
|
||||
|
||||
const processors = [
|
||||
autoprefixer({
|
||||
browsers: [
|
||||
'ie >= 10',
|
||||
'ie_mob >= 10',
|
||||
'ff >= 30',
|
||||
'chrome >= 34',
|
||||
'safari >= 7',
|
||||
'opera >= 23',
|
||||
'ios >= 7',
|
||||
'android >= 4.4',
|
||||
'bb >= 10'
|
||||
]
|
||||
})
|
||||
];
|
||||
|
||||
const reportPostCssError = (e: any) => util.log(util.colors.red(e.message));
|
||||
|
||||
processors.push(
|
||||
cssnano({
|
||||
discardComments: {removeAll: true},
|
||||
discardUnused: false, // unsafe, see http://goo.gl/RtrzwF
|
||||
zindex: false, // unsafe, see http://goo.gl/vZ4gbQ
|
||||
reduceIdents: false // unsafe, see http://goo.gl/tNOPv0
|
||||
})
|
||||
);
|
||||
|
||||
/**
|
||||
* Processes the CSS files within `src/client` excluding those in `src/client/assets` using `postcss` with the
|
||||
* configured processors
|
||||
* Execute the appropriate component-stylesheet processing method based on user stylesheet preference.
|
||||
*/
|
||||
function processComponentStylesheets() {
|
||||
return gulp.src(join('src/**', '*.css'))
|
||||
.pipe(plugins.cached('process-component-css'))
|
||||
.pipe(plugins.postcss(processors))
|
||||
.on('error', reportPostCssError);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get a stream of external css files for subsequent processing.
|
||||
*/
|
||||
function getExternalCssStream() {
|
||||
return gulp.src(getExternalCss())
|
||||
.pipe(plugins.cached('process-external-css'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of filenames referring to all external css stylesheets.
|
||||
*/
|
||||
function getExternalCss() {
|
||||
return getInjectableDependency().filter(dep => /\.css$/.test(dep.src)).map(dep => dep.src);
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes the external CSS files using `postcss` with the configured processors.
|
||||
*/
|
||||
function processExternalCss() {
|
||||
return getExternalCssStream()
|
||||
.pipe(plugins.postcss(processors))
|
||||
.pipe(plugins.concatCss(gulpConcatCssConfig.targetFile, gulpConcatCssConfig.options))
|
||||
.on('error', reportPostCssError);
|
||||
}
|
||||
|
||||
return merge(processComponentStylesheets(), processExternalCss());
|
||||
|
||||
});
|
||||
|
||||
gulp.task('build.bundles.app', (done) => {
|
||||
var BUNDLER_OPTIONS = {
|
||||
format: 'umd',
|
||||
minify: false,
|
||||
mangle: false,
|
||||
sourceMaps: true
|
||||
};
|
||||
var CONFIG_TYPESCRIPT = {
|
||||
baseURL: '.',
|
||||
transpiler: 'typescript',
|
||||
typescriptOptions: {
|
||||
module: 'cjs'
|
||||
},
|
||||
map: {
|
||||
typescript: 'node_modules/typescript/lib/typescript.js',
|
||||
'@angular': 'node_modules/@angular',
|
||||
rxjs: 'node_modules/rxjs',
|
||||
'ng2-translate': 'node_modules/ng2-translate',
|
||||
'alfresco-js-api': 'node_modules/alfresco-js-api/dist/alfresco-js-api',
|
||||
'ng2-alfresco-core': 'node_modules/ng2-alfresco-core/',
|
||||
'ng2-activiti-diagrams': 'node_modules/ng2-activiti-diagrams/',
|
||||
'ng2-activiti-analytics': 'node_modules/ng2-activiti-analytics/',
|
||||
'ng2-alfresco-datatable': 'node_modules/ng2-alfresco-datatable/',
|
||||
'ng2-alfresco-documentlist': 'node_modules/ng2-alfresco-documentlist/',
|
||||
'ng2-activiti-form': 'node_modules/ng2-activiti-form/',
|
||||
'ng2-alfresco-login': 'node_modules/ng2-alfresco-login/',
|
||||
'ng2-activiti-processlist': 'node_modules/ng2-activiti-processlist/',
|
||||
'ng2-alfresco-search': 'node_modules/ng2-alfresco-search/',
|
||||
'ng2-activiti-tasklist': 'node_modules/ng2-activiti-tasklist/',
|
||||
'ng2-alfresco-tag': 'node_modules/ng2-alfresco-tag/',
|
||||
'ng2-alfresco-upload': 'node_modules/ng2-alfresco-upload/',
|
||||
'ng2-alfresco-userinfo': 'node_modules/ng2-alfresco-userinfo/',
|
||||
'ng2-alfresco-viewer': 'node_modules/ng2-alfresco-viewer/',
|
||||
'ng2-alfresco-webscript': 'node_modules/ng2-alfresco-webscript/'
|
||||
},
|
||||
paths: {
|
||||
'*': '*.js'
|
||||
},
|
||||
meta: {
|
||||
'node_modules/@angular/*': {build: false},
|
||||
'node_modules/rxjs/*': {build: false},
|
||||
'node_modules/ng2-translate/*': {build: false},
|
||||
'node_modules/ng2-alfresco-core/*': {build: false},
|
||||
'node_modules/ng2-activiti-diagrams/*': {build: false},
|
||||
'node_modules/ng2-activiti-analytics/*': {build: false},
|
||||
'node_modules/ng2-alfresco-datatable/*': {build: false},
|
||||
'node_modules/ng2-alfresco-documentlist/*': {build: false},
|
||||
'node_modules/ng2-activiti-form/*': {build: false},
|
||||
'node_modules/ng2-alfresco-login/*': {build: false},
|
||||
'node_modules/ng2-activiti-processlist/*': {build: false},
|
||||
'node_modules/ng2-alfresco-search/*': {build: false},
|
||||
'node_modules/ng2-activiti-tasklist/*': {build: false},
|
||||
'node_modules/ng2-alfresco-tag/*': {build: false},
|
||||
'node_modules/ng2-alfresco-upload/*': {build: false},
|
||||
'node_modules/ng2-alfresco-userinfo/*': {build: false},
|
||||
'node_modules/ng2-alfresco-viewer/*': {build: false},
|
||||
'node_modules/ng2-alfresco-webscript/*': {build: false}
|
||||
}
|
||||
};
|
||||
|
||||
var pkg = require('./package.json');
|
||||
var namePkg = pkg.name;
|
||||
|
||||
var builder = new Builder(CONFIG_TYPESCRIPT);
|
||||
builder
|
||||
.buildStatic(APP_SRC + "/index", 'bundles/' + namePkg + '.js', BUNDLER_OPTIONS)
|
||||
.then(function () {
|
||||
return done();
|
||||
})
|
||||
.catch(function (err) {
|
||||
return done(err);
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('build.assets.prod', () => {
|
||||
return gulp.src([
|
||||
join('src/**', '*.ts'),
|
||||
'index.ts',
|
||||
join('src/**', '*.css'),
|
||||
join('src/**', '*.html'),
|
||||
'!'+join('*/**', '*.d.ts'),
|
||||
'!'+join('*/**', '*.spec.ts'),
|
||||
'!gulpfile.ts'])
|
||||
|
||||
});
|
||||
|
||||
gulp.task('build.bundles', () => {
|
||||
merge(bundleShims());
|
||||
|
||||
/**
|
||||
* Returns the shim files to be injected.
|
||||
*/
|
||||
function getShims() {
|
||||
let libs = getInjectableDependency()
|
||||
.filter(d => /\.js$/.test(d.src));
|
||||
|
||||
return libs.filter(l => l.inject === 'shims')
|
||||
.concat(libs.filter(l => l.inject === 'libs'))
|
||||
.concat(libs.filter(l => l.inject === true))
|
||||
.map(l => l.src);
|
||||
}
|
||||
|
||||
/**
|
||||
* Bundles the shim files.
|
||||
*/
|
||||
function bundleShims() {
|
||||
return gulp.src(getShims())
|
||||
.pipe(plugins.concat(JS_PROD_SHIMS_BUNDLE))
|
||||
// Strip the first (global) 'use strict' added by reflect-metadata, but don't strip any others to avoid unintended scope leaks.
|
||||
.pipe(plugins.replace(/('|")use strict\1;var Reflect;/, 'var Reflect;'))
|
||||
.pipe(gulp.dest('bundles'));
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
gulp.task('build.js.prod', () => {
|
||||
const INLINE_OPTIONS = {
|
||||
base: APP_SRC,
|
||||
target: 'es5',
|
||||
useRelativePaths: true,
|
||||
removeLineBreaks: true
|
||||
};
|
||||
|
||||
let tsProject = makeTsProject();
|
||||
let src = [
|
||||
join('src/**/*.ts'),
|
||||
join('!src/**/*.d.ts'),
|
||||
join('!src/**/*.spec.ts'),
|
||||
`!src/**/${NG_FACTORY_FILE}.ts`
|
||||
];
|
||||
|
||||
let result = gulp.src(src)
|
||||
.pipe(plugins.plumber())
|
||||
.pipe(plugins.inlineNg2Template(INLINE_OPTIONS))
|
||||
.pipe(tsProject())
|
||||
.once('error', function (e: any) {
|
||||
this.once('finish', () => process.exit(1));
|
||||
});
|
||||
|
||||
return result.js
|
||||
.pipe(plugins.template())
|
||||
.pipe(gulp.dest('src'))
|
||||
.on('error', (e: any) => {
|
||||
console.log(e);
|
||||
});
|
||||
});
|
||||
|
||||
gulp.task('build.prod', (done: any) =>
|
||||
runSequence(
|
||||
'build.assets.prod',
|
||||
'build.html_css',
|
||||
'build.js.prod',
|
||||
'build.bundles',
|
||||
'build.bundles.app',
|
||||
done));
|
@@ -5,7 +5,7 @@ jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000;
|
||||
|
||||
__karma__.loaded = function() {};
|
||||
|
||||
var builtPath = '/base/dist/';
|
||||
var builtPath = '/base/src/';
|
||||
|
||||
function isJsFile(path) {
|
||||
return path.slice(-3) == '.js';
|
||||
@@ -29,7 +29,7 @@ var paths = {
|
||||
};
|
||||
|
||||
var map = {
|
||||
'app': 'base/dist',
|
||||
'app': 'base/src',
|
||||
// angular bundles
|
||||
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
|
||||
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
|
||||
@@ -54,7 +54,7 @@ var map = {
|
||||
'ng2-translate': 'npm:ng2-translate',
|
||||
|
||||
'alfresco-js-api': 'npm:alfresco-js-api/dist',
|
||||
'ng2-alfresco-core': 'npm:ng2-alfresco-core/dist'
|
||||
'ng2-alfresco-core': 'npm:ng2-alfresco-core'
|
||||
};
|
||||
|
||||
var packages = {
|
||||
|
@@ -24,8 +24,8 @@ module.exports = function (config) {
|
||||
'node_modules/zone.js/dist/fake-async-test.js',
|
||||
|
||||
// RxJs
|
||||
{pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false},
|
||||
{pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false},
|
||||
{ pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false },
|
||||
{ pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false },
|
||||
|
||||
// Paths loaded via module imports:
|
||||
// Angular itself
|
||||
@@ -33,28 +33,31 @@ module.exports = function (config) {
|
||||
{pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: false},
|
||||
|
||||
'node_modules/alfresco-js-api/dist/alfresco-js-api.js',
|
||||
|
||||
{pattern: 'node_modules/ng2-translate/**/*.js', included: false, watched: false},
|
||||
{pattern: 'node_modules/ng2-translate/**/*.js.map', included: false, watched: false},
|
||||
|
||||
'karma-test-shim.js',
|
||||
|
||||
// paths loaded via module imports
|
||||
{pattern: 'dist/**/*.js', included: false, watched: true},
|
||||
{pattern: 'dist/**/*.html', included: true, served: true, watched: true},
|
||||
{pattern: 'dist/**/*.css', included: true, served: true, watched: true},
|
||||
{pattern: 'src/**/*.js', included: false, watched: true},
|
||||
{pattern: 'src/**/*.html', included: true, served: true, watched: true},
|
||||
{pattern: 'src/**/*.css', included: true, served: true, watched: true},
|
||||
|
||||
// ng2-components
|
||||
{pattern: 'node_modules/ng2-alfresco-core/dist/**/*.js', included: false, served: true, watched: false},
|
||||
{ pattern: 'node_modules/ng2-alfresco-core/src/**/*.js', included: false, served: true, watched: false },
|
||||
{ pattern: 'node_modules/ng2-alfresco-core/index.js', included: false, served: true, watched: false },
|
||||
|
||||
// Fake files
|
||||
{pattern: 'src/assets/ecmImg.gif', included: false, watched: true, served: true},
|
||||
{pattern: 'src/assets/bpmImg.gif', included: false, watched: true, served: true},
|
||||
{pattern: 'src/img/anonymous.gif', included: false, watched: true, served: true},
|
||||
{pattern: 'src/img/blueBanner.png', included: false, watched: true, served: true},
|
||||
{pattern: 'src/img/orangeBanner.png', included: false, watched: true, served: true},
|
||||
{pattern: 'src/assets/images/ecmImg.gif', included: false, watched: true, served: true},
|
||||
{pattern: 'src/assets/images/bpmImg.gif', included: false, watched: true, served: true},
|
||||
{pattern: 'src/assets/images/anonymous.gif', included: false, watched: true, served: true},
|
||||
{pattern: 'src/assets/images/bpm-background.png', included: false, watched: true, served: true},
|
||||
{pattern: 'src/assets/images/ecm-background.png', included: false, watched: true, served: true},
|
||||
|
||||
// paths to support debugging with source maps in dev tools
|
||||
{pattern: 'src/**/*.ts', included: false, watched: false},
|
||||
{pattern: 'dist/**/*.js.map', included: false, watched: false}
|
||||
{pattern: 'src/**/*.js.map', included: false, watched: false},
|
||||
{pattern: 'src/assets/images/**/*.*', included: false, watched: false}
|
||||
],
|
||||
|
||||
exclude: [
|
||||
@@ -102,7 +105,7 @@ module.exports = function (config) {
|
||||
// Source files that you wanna generate coverage for.
|
||||
// Do not include tests or libraries (these files will be instrumented by Istanbul)
|
||||
preprocessors: {
|
||||
'dist/**/!(*spec|index|*mock|*model).js': 'coverage'
|
||||
'src/**/!(*spec|index|*mock|*model).js': 'coverage'
|
||||
},
|
||||
|
||||
coverageReporter: {
|
||||
|
@@ -4,13 +4,11 @@
|
||||
"version": "0.5.0",
|
||||
"author": "Alfresco Software, Ltd.",
|
||||
"scripts": {
|
||||
"clean": "npm install rimraf && rimraf dist node_modules typings",
|
||||
"build": "npm run tslint && rimraf dist && tsc && npm run copy-dist && license-check",
|
||||
"build:w": "npm run tslint && rimraf dist && npm run watch-task",
|
||||
"watch-task": "concurrently \"npm run tsc:w\" \"npm run copy-dist:w\" \"license-check\"",
|
||||
"tslint": "tslint -c tslint.json *.ts && tslint -c tslint.json 'src/{,**/}**.ts'",
|
||||
"copy-dist": "cpx \"./src/**/*.{html,css,json,png,jpg,gif,svg}\" ./dist/src",
|
||||
"copy-dist:w": "cpx \"./src/**/*.{html,css,json,png,jpg,gif,svg}\" ./dist/src -w",
|
||||
"clean": "npm install rimraf && npm run clean-build && rimraf dist node_modules typings",
|
||||
"clean-build": "rimraf index.js index.js.map index.d.ts'src/{,**/}**.js' 'src/{,**/}**.js.map' 'src/{,**/}**.d.ts' bundles",
|
||||
"build": "npm run clean-build && npm run tslint && rimraf dist && tsc && license-check && npm run build.umd",
|
||||
"build:w": "npm run clean-build && npm run tslint && rimraf dist && tsc:w && license-check npm run build.umd",
|
||||
"tslint": "tslint -c tslint.json 'src/{,**/}**.ts' 'index.ts' -e '{,**/}**.d.ts' -e './gulpfile.ts'",
|
||||
"tsc": "tsc",
|
||||
"tsc:w": "tsc -w",
|
||||
"pretest": "npm run build",
|
||||
@@ -19,10 +17,14 @@
|
||||
"posttest": "remap-istanbul -i coverage/report/coverage-final.json -o coverage/report -t html && remap-istanbul -i coverage/report/coverage-final.json -o coverage/report/coverage-final.json",
|
||||
"coverage": "npm run test && wsrv -o -p 9875 ./coverage/report",
|
||||
"prepublish": "npm run build",
|
||||
"travis": "npm link ng2-alfresco-core"
|
||||
"travis": "npm link ng2-alfresco-core",
|
||||
"gulp": "gulp",
|
||||
"build.umd": "gulp build.prod --color --env-config prod --build-type prod",
|
||||
"reinstall": "npm cache clean && npm install"
|
||||
},
|
||||
"main": "./dist/index.js",
|
||||
"typings": "./dist/index.d.ts",
|
||||
"main": "bundles/ng2-alfresco-userinfo.js",
|
||||
"module": "./index.js",
|
||||
"typings": "./index.d.ts",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Alfresco/alfresco-ng2-components.git"
|
||||
@@ -44,16 +46,31 @@
|
||||
"rxjs": "5.0.0-beta.12",
|
||||
"systemjs": "0.19.27",
|
||||
"zone.js": "^0.6.23",
|
||||
|
||||
"ng2-translate": "2.5.0",
|
||||
"alfresco-js-api": "^0.5.0",
|
||||
"ng2-alfresco-core": "0.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^6.0.42",
|
||||
"@types/jasmine": "^2.2.33",
|
||||
"@types/node": "^6.0.42",
|
||||
"concurrently": "^2.2.0",
|
||||
"cpx": "^1.3.1",
|
||||
"cssnano": "^3.8.1",
|
||||
"gulp": "^3.9.1",
|
||||
"gulp-autoprefixer": "^3.1.1",
|
||||
"gulp-cached": "^1.1.1",
|
||||
"gulp-concat": "^2.6.1",
|
||||
"gulp-concat-css": "^2.3.0",
|
||||
"gulp-filter": "^4.0.0",
|
||||
"gulp-inline-ng2-template": "^4.0.0",
|
||||
"gulp-load-plugins": "^1.4.0",
|
||||
"gulp-plumber": "^1.1.0",
|
||||
"gulp-postcss": "^6.2.0",
|
||||
"gulp-replace": "^0.5.4",
|
||||
"gulp-template": "^4.0.0",
|
||||
"gulp-typescript": "^3.1.3",
|
||||
"gulp-uglify": "^2.0.0",
|
||||
"intl": "^1.2.5",
|
||||
"jasmine-ajax": "^3.2.0",
|
||||
"jasmine-core": "2.4.1",
|
||||
"karma": "~0.13.22",
|
||||
@@ -66,7 +83,10 @@
|
||||
"license-check": "^1.0.4",
|
||||
"remap-istanbul": "^0.6.3",
|
||||
"rimraf": "2.5.2",
|
||||
"run-sequence": "^1.2.2",
|
||||
"systemjs-builder": "^0.15.34",
|
||||
"traceur": "^0.0.91",
|
||||
"ts-node": "^1.7.0",
|
||||
"tslint": "^3.8.1",
|
||||
"typescript": "^2.0.3",
|
||||
"wsrv": "^0.1.5"
|
||||
@@ -77,7 +97,7 @@
|
||||
],
|
||||
"license-check-config": {
|
||||
"src": [
|
||||
"./dist/**/*.js"
|
||||
"./src/**/*.js"
|
||||
],
|
||||
"path": "assets/license_header.txt",
|
||||
"blocking": false,
|
||||
|
@@ -83,7 +83,7 @@ export var fakeBpmEditedUser: BpmUserModel = {
|
||||
lastUpdate: 'fake-update-date',
|
||||
latestSyncTimeStamp: 'fake-timestamp',
|
||||
password: 'fake-password',
|
||||
pictureId: 'src/assets/bpmImg.gif',
|
||||
pictureId: 'src/assets/images/bpmImg.gif',
|
||||
status: 'fake-status',
|
||||
tenantId: 'fake-tenant-id',
|
||||
tenantName: 'fake-tenant-name',
|
||||
|
@@ -113,7 +113,7 @@ export class FakeEcmUserService {
|
||||
|
||||
getUserProfileImage(avatarId: string) {
|
||||
if (avatarId) {
|
||||
return 'src/assets/ecmImg.gif';
|
||||
return 'src/assets/images/ecmImg.gif';
|
||||
}
|
||||
};
|
||||
|
||||
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.7 KiB |
@@ -1,13 +1,16 @@
|
||||
<div id="userinfo_container" *ngIf="isLoggedIn()">
|
||||
<div *ngIf="ecmUser || bpmUser">
|
||||
<div class="button-profile" id="user-profile" data-automation-id="user-profile">
|
||||
<img *ngIf="getUserAvatar()" [src]="getUserAvatar()" (error)="bpmUserImage = null; ecmUserImage = null;" id="logged-user-img" class="profile-image" alt="user-info-profile-button">
|
||||
<img *ngIf="!getUserAvatar()" src="./anonymous.gif" id="logged-user-img" class="profile-image" alt="user-info-profile-button">
|
||||
<img id="logged-user-img"
|
||||
[src]="getUserAvatar()"
|
||||
alt="user-info-profile-button"
|
||||
(error)="onImageLoadingError($event)"
|
||||
class="profile-image"/>
|
||||
</div>
|
||||
<div mdl id="user-profile-lists" class="user-profile-list-mdl mdl-menu mdl-js-menu mdl-js-ripple-effect"
|
||||
[class.mdl-menu--bottom-left]="menuOpenType === 'left'? true : false"
|
||||
[class.mdl-menu--bottom-right]="menuOpenType === 'right'? true : false"
|
||||
for="user-profile" (click)="stopClosing($event)">
|
||||
[class.mdl-menu--bottom-left]="menuOpenType === 'left'? true : false"
|
||||
[class.mdl-menu--bottom-right]="menuOpenType === 'right'? true : false"
|
||||
for="user-profile" (click)="stopClosing($event)">
|
||||
<div class="mdl-tabs mdl-js-tabs mdl-js-ripple-effect menu-container__items">
|
||||
<div id="tab-bar-env" class="mdl-tabs__tab-bar" [hidden]="!(ecmUser && bpmUser)">
|
||||
<a href="#ecm-panel" id="ecm-tab" class="mdl-tabs__tab is-active">ECM</a>
|
||||
@@ -16,22 +19,27 @@
|
||||
<div class="mdl-tabs__panel" [class.is-active]="ecmUser?true:false" id="ecm-panel">
|
||||
<div class="detail-user-profile-list-mdl mdl-list" *ngIf="ecmUser">
|
||||
<div class="demo-card-wide mdl-card">
|
||||
<div class="card-title__option mdl-card__title user-info__ecm-background" id="ecm-background-image"
|
||||
style="background-image: url(${require(`./ecm-background.png`)})">
|
||||
<img *ngIf="ecmUserImage" [src]="ecmUserImage" (error)="ecmUserImage = null" class="profile-picture" id="ecm-user-detail-image" alt="ecm-profile-image">
|
||||
<img *ngIf="!ecmUserImage" src="./anonymous.gif" class="profile-picture" id="ecm-user-detail-image" alt="ecm-profile-image">
|
||||
<div class="card-title__option mdl-card__title"
|
||||
id="ecm-background-image"
|
||||
[style.background-image]="'url(' + ( ecmBackgroundImage || baseComponentPath + '/../assets/images/ecm-background.png')+')'">
|
||||
<img class="profile-picture"
|
||||
id="ecm-user-detail-image"
|
||||
alt="ecm-profile-image"
|
||||
(error)="onImageLoadingError($event)"
|
||||
[src]="getEcmUserAvatar()"/>
|
||||
<h2 class="mdl-card__title-text" id="ecm-username">{{getUserNameHeaderFor('ECM')}}</h2>
|
||||
</div>
|
||||
<div class="mdl-card__supporting-text">
|
||||
<li class="mdl-list__item mdl-list__item--two-line">
|
||||
<span class="mdl-list__item-primary-content">
|
||||
<span id="ecm-full-name" class="truncate-long-names">
|
||||
{{ formatValue(ecmUser.firstName) }} {{ formatValue(ecmUser.lastName) }}
|
||||
</span>
|
||||
<span id="ecm-email" class="mdl-list__item-sub-title">{{ecmUser.email}}</span>
|
||||
<span id="ecm-full-name" class="truncate-long-names">
|
||||
{{ formatValue(ecmUser.firstName) }} {{ formatValue(ecmUser.lastName) }}
|
||||
</span>
|
||||
<span id="ecm-email" class="mdl-list__item-sub-title">{{ecmUser.email}}</span>
|
||||
</span>
|
||||
<span id="ecm-job-title" class="mdl-list__item-secondary-content custom-role-style">
|
||||
<span class="role-label-user">{{ 'USER_PROFILE.LABELS.ECM.JOB_TITLE' | translate }}</span>
|
||||
<span
|
||||
class="role-label-user">{{ 'USER_PROFILE.LABELS.ECM.JOB_TITLE' | translate }}</span>
|
||||
{{ecmUser.jobTitle?ecmUser.jobTitle:'N/A'}}
|
||||
</span>
|
||||
</li>
|
||||
@@ -42,24 +50,28 @@
|
||||
<div class="mdl-tabs__panel" [class.is-active]="bpmUser && !ecmUser?true:false" id="bpm-panel">
|
||||
<div class="detail-user-profile-list-mdl mdl-list" *ngIf="bpmUser">
|
||||
<div class="demo-card-wide mdl-card">
|
||||
<div class="card-title__option mdl-card__title user-info__bpm-background" id="bpm-background-image"
|
||||
style="background-image: url(${require(`./bpm-background.png`)})">
|
||||
<img *ngIf="bpmUserImage" [src]="bpmUserImage" class="profile-picture" (error)="bpmUserImage = null" id="bpm-user-detail-image" alt="bpm-profile-image">
|
||||
<img *ngIf="!bpmUserImage" src="./anonymous.gif" class="profile-picture" id="bpm-user-detail-image" alt="bpm-profile-image">
|
||||
<div class="card-title__option mdl-card__title"
|
||||
id="bpm-background-image"
|
||||
[style.background-image]="'url(' + (bpmBackgroundImage || baseComponentPath + '/../assets/images/bpm-background.png')+')'">
|
||||
<img class="profile-picture"
|
||||
id="bpm-user-detail-image"
|
||||
alt="bpm-profile-image"
|
||||
(error)="onImageLoadingError($event)"
|
||||
[src]="getBpmUserAvatar()"/>
|
||||
<h2 class="mdl-card__title-text" id="bpm-username">{{getUserNameHeaderFor('BPM')}}</h2>
|
||||
</div>
|
||||
<div class="mdl-card__supporting-text">
|
||||
<li class="mdl-list__item mdl-list__item--two-line">
|
||||
<span class="mdl-list__item-primary-content">
|
||||
<span id="bpm-full-name" class="truncate-long-names">
|
||||
{{ formatValue(bpmUser.firstName) }} {{ formatValue(bpmUser.lastName) }}
|
||||
</span>
|
||||
<span id="bpm-email" class="mdl-list__item-sub-title">{{bpmUser.email}}</span>
|
||||
</span>
|
||||
<span class="mdl-list__item-primary-content">
|
||||
<span id="bpm-full-name" class="truncate-long-names">
|
||||
{{ formatValue(bpmUser.firstName) }} {{ formatValue(bpmUser.lastName) }}
|
||||
</span>
|
||||
<span id="bpm-email" class="mdl-list__item-sub-title">{{bpmUser.email}}</span>
|
||||
</span>
|
||||
<span id="bpm-tenant" class="mdl-list__item-secondary-content custom-role-style">
|
||||
<span class="role-label-user">{{ 'USER_PROFILE.LABELS.BPM.TENANT' | translate }}</span>
|
||||
{{bpmUser.tenantName}}
|
||||
</span>
|
||||
<span class="role-label-user">{{ 'USER_PROFILE.LABELS.BPM.TENANT' | translate }}</span>
|
||||
{{bpmUser.tenantName}}
|
||||
</span>
|
||||
</li>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -125,7 +125,6 @@ describe('User info component', () => {
|
||||
expect(res).toEqual('fake-value');
|
||||
});
|
||||
|
||||
/*
|
||||
it('should return the anonymous avatar when users do not have images', () => {
|
||||
let event = <any> {
|
||||
target: {
|
||||
@@ -133,9 +132,8 @@ describe('User info component', () => {
|
||||
}
|
||||
};
|
||||
userInfoComp.onImageLoadingError(event);
|
||||
expect(event.target.src).toContain('src/img/anonymous.gif');
|
||||
expect(event.target.src).toContain('assets/images/anonymous.gif');
|
||||
});
|
||||
*/
|
||||
|
||||
describe('when user is logged on ecm', () => {
|
||||
|
||||
@@ -157,7 +155,7 @@ describe('User info component', () => {
|
||||
describe('and has image', () => {
|
||||
|
||||
beforeEach(async(() => {
|
||||
spyOn(stubContent, 'getContentUrl').and.returnValue('src/assets/ecmImg.gif');
|
||||
spyOn(stubContent, 'getContentUrl').and.returnValue('assets/images/ecmImg.gif');
|
||||
fixture.detectChanges();
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
status: 200,
|
||||
@@ -186,18 +184,18 @@ describe('User info component', () => {
|
||||
expect(element.querySelector('#ecm-username').textContent).not.toContain('fake-ecm-first-name');
|
||||
}));
|
||||
|
||||
it('should get the ecm current user image from the service', async(() => {
|
||||
xit('should get the ecm current user image from the service', async(() => {
|
||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||
expect(element.querySelector('#logged-user-img')).toBeDefined();
|
||||
expect(element.querySelector('#logged-user-img').getAttribute('src')).toEqual('src/assets/ecmImg.gif');
|
||||
expect(element.querySelector('#logged-user-img').getAttribute('src')).toContain('assets/images/ecmImg.gif');
|
||||
}));
|
||||
|
||||
it('should get the ecm user informations from the service', async(() => {
|
||||
xit('should get the ecm user informations from the service', async(() => {
|
||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||
expect(element.querySelector('#ecm_username')).toBeDefined();
|
||||
expect(element.querySelector('#ecm_title')).toBeDefined();
|
||||
expect(element.querySelector('#ecm-user-detail-image')).toBeDefined();
|
||||
expect(element.querySelector('#ecm-user-detail-image').getAttribute('src')).toEqual('src/assets/ecmImg.gif');
|
||||
expect(element.querySelector('#ecm-user-detail-image').getAttribute('src')).toContain('assets/images/ecmImg.gif');
|
||||
expect(element.querySelector('#ecm-full-name').textContent).toContain('fake-ecm-first-name fake-ecm-last-name');
|
||||
expect(element.querySelector('#ecm-job-title').textContent).toContain('USER_PROFILE.LABELS.ECM.JOB_TITLE');
|
||||
}));
|
||||
@@ -206,7 +204,7 @@ describe('User info component', () => {
|
||||
describe('and has no image', () => {
|
||||
|
||||
beforeEach(async(() => {
|
||||
// userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', '');
|
||||
userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', '');
|
||||
spyOn(stubContent, 'getContentUrl').and.returnValue('wrongImage.gif');
|
||||
fixture.detectChanges();
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
@@ -252,7 +250,7 @@ describe('User info component', () => {
|
||||
});
|
||||
|
||||
beforeEach(async(() => {
|
||||
// userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', '');
|
||||
userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', '');
|
||||
fixture.detectChanges();
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
status: 200,
|
||||
@@ -330,8 +328,8 @@ describe('User info component', () => {
|
||||
spyOn(stubAuthService, 'isEcmLoggedIn').and.returnValue(true);
|
||||
spyOn(stubAuthService, 'isBpmLoggedIn').and.returnValue(true);
|
||||
spyOn(stubAuthService, 'isLoggedIn').and.returnValue(true);
|
||||
spyOn(stubContent, 'getContentUrl').and.returnValue('src/assets/ecmImg.gif');
|
||||
// userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', '');
|
||||
spyOn(stubContent, 'getContentUrl').and.returnValue('src/assets/images/ecmImg.gif');
|
||||
userInfoComp.anonymousImageUrl = userInfoComp.anonymousImageUrl.replace('/base/dist', '');
|
||||
jasmine.Ajax.install();
|
||||
fakeBpmUser.firstName = 'fake-bpm-first-name';
|
||||
fakeBpmUser.lastName = 'fake-bpm-last-name';
|
||||
@@ -385,7 +383,7 @@ describe('User info component', () => {
|
||||
expect(element.querySelector('#ecm_username')).toBeDefined();
|
||||
expect(element.querySelector('#ecm_title')).toBeDefined();
|
||||
expect(element.querySelector('#ecm-user-detail-image')).toBeDefined();
|
||||
expect(element.querySelector('#ecm-user-detail-image').getAttribute('src')).toEqual('src/assets/ecmImg.gif');
|
||||
expect(element.querySelector('#ecm-user-detail-image').getAttribute('src')).toContain('assets/images/ecmImg.gif');
|
||||
expect(element.querySelector('#ecm-full-name').textContent).toContain('fake-ecm-first-name fake-ecm-last-name');
|
||||
expect(element.querySelector('#ecm-job-title').textContent).toContain('job-ecm-test');
|
||||
});
|
||||
@@ -393,7 +391,7 @@ describe('User info component', () => {
|
||||
it('should show the ecm image if exists', () => {
|
||||
expect(element.querySelector('#userinfo_container')).toBeDefined();
|
||||
expect(element.querySelector('#logged-user-img')).toBeDefined();
|
||||
expect(element.querySelector('#logged-user-img').getAttribute('src')).toEqual('src/assets/ecmImg.gif');
|
||||
expect(element.querySelector('#logged-user-img').getAttribute('src')).toEqual('src/assets/images/ecmImg.gif');
|
||||
});
|
||||
|
||||
it('should show the bpm image if ecm does not have it', () => {
|
||||
|
@@ -25,28 +25,43 @@ import { AlfrescoTranslationService, AlfrescoAuthenticationService } from 'ng2-a
|
||||
declare let componentHandler: any;
|
||||
|
||||
@Component({
|
||||
moduleId: module.id,
|
||||
selector: 'ng2-alfresco-userinfo',
|
||||
moduleId: module.id,
|
||||
styleUrls: ['./user-info.component.css'],
|
||||
templateUrl: './user-info.component.html'
|
||||
})
|
||||
export class UserInfoComponent implements OnInit {
|
||||
|
||||
@Input()
|
||||
ecmBackgroundImage: string;
|
||||
|
||||
@Input()
|
||||
bpmBackgroundImage: string;
|
||||
|
||||
@Input()
|
||||
menuOpenType: string = 'right';
|
||||
|
||||
@Input()
|
||||
fallBackThumbnailImage: string;
|
||||
|
||||
private baseComponentPath = module.id.replace('components/user-info.component.js', '');
|
||||
|
||||
ecmUser: EcmUserModel;
|
||||
|
||||
bpmUser: BpmUserModel;
|
||||
|
||||
bpmUserImage: string;
|
||||
ecmUserImage: string;
|
||||
anonymousImageUrl: string = this.baseComponentPath + '/../assets/images/anonymous.gif';
|
||||
|
||||
bpmUserImage: any;
|
||||
|
||||
ecmUserImage: any;
|
||||
|
||||
constructor(private ecmUserService: EcmUserService,
|
||||
private bpmUserService: BpmUserService,
|
||||
private authService: AlfrescoAuthenticationService,
|
||||
private translate: AlfrescoTranslationService) {
|
||||
if (translate) {
|
||||
translate.addTranslationFolder('ng2-alfresco-userinfo', 'node_modules/ng2-alfresco-userinfo/dist/src');
|
||||
translate.addTranslationFolder('ng2-alfresco-userinfo', 'node_modules/ng2-alfresco-userinfo/src');
|
||||
}
|
||||
|
||||
authService.loginSubject.subscribe((response) => {
|
||||
@@ -72,7 +87,7 @@ export class UserInfoComponent implements OnInit {
|
||||
this.ecmUserService.getCurrentUserInfo()
|
||||
.subscribe((res) => {
|
||||
this.ecmUser = <EcmUserModel> res;
|
||||
this.ecmUserImage = this.ecmUserService.getUserProfileImage(this.ecmUser.avatarId);
|
||||
this.getEcmAvatar();
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -88,6 +103,13 @@ export class UserInfoComponent implements OnInit {
|
||||
}
|
||||
}
|
||||
|
||||
onImageLoadingError(event) {
|
||||
if (event) {
|
||||
let element = <any> event.target;
|
||||
element.src = this.fallBackThumbnailImage || this.anonymousImageUrl;
|
||||
}
|
||||
}
|
||||
|
||||
stopClosing(event) {
|
||||
event.stopPropagation();
|
||||
}
|
||||
@@ -104,10 +126,22 @@ export class UserInfoComponent implements OnInit {
|
||||
}
|
||||
}
|
||||
|
||||
private getEcmAvatar() {
|
||||
this.ecmUserImage = this.ecmUserService.getUserProfileImage(this.ecmUser.avatarId);
|
||||
}
|
||||
|
||||
getUserAvatar() {
|
||||
return this.ecmUserImage || this.bpmUserImage;
|
||||
}
|
||||
|
||||
getBpmUserAvatar() {
|
||||
return this.bpmUserImage;
|
||||
}
|
||||
|
||||
getEcmUserAvatar() {
|
||||
return this.ecmUserImage;
|
||||
}
|
||||
|
||||
formatValue(value: string) {
|
||||
return value === 'null' ? null : value;
|
||||
}
|
||||
|
@@ -3,11 +3,10 @@
|
||||
"target": "es5",
|
||||
"module": "commonjs",
|
||||
"moduleResolution": "node",
|
||||
"sourceMap": true,
|
||||
"emitDecoratorMetadata": true,
|
||||
"experimentalDecorators": true,
|
||||
"sourceMap": true,
|
||||
"removeComments": true,
|
||||
"declaration": true,
|
||||
"skipLibCheck": true,
|
||||
"noLib": false,
|
||||
"allowUnreachableCode": false,
|
||||
"allowUnusedLabels": false,
|
||||
@@ -15,13 +14,24 @@
|
||||
"noImplicitReturns": false,
|
||||
"noImplicitUseStrict": false,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"outDir": "dist",
|
||||
"lib": ["es2015", "dom"],
|
||||
"types": ["jasmine", "node"]
|
||||
"removeComments": true,
|
||||
"declaration": true,
|
||||
"lib": [
|
||||
"es2015",
|
||||
"dom"
|
||||
],
|
||||
"suppressImplicitAnyIndexErrors": true
|
||||
},
|
||||
"exclude": [
|
||||
"demo",
|
||||
"node_modules",
|
||||
"dist"
|
||||
]
|
||||
"dist",
|
||||
"tools",
|
||||
"gulpfile.ts",
|
||||
"gulpfile.d.ts"
|
||||
],
|
||||
"angularCompilerOptions": {
|
||||
"strictMetadataEmit": false,
|
||||
"skipTemplateCodegen": true
|
||||
}
|
||||
}
|
||||
|
@@ -1,121 +1,121 @@
|
||||
{
|
||||
"rules": {
|
||||
"align": [
|
||||
true,
|
||||
"parameters",
|
||||
"statements"
|
||||
],
|
||||
"ban": false,
|
||||
"class-name": true,
|
||||
"comment-format": [
|
||||
true,
|
||||
"check-space"
|
||||
],
|
||||
"curly": true,
|
||||
"eofline": true,
|
||||
"forin": true,
|
||||
"indent": [
|
||||
true,
|
||||
"spaces"
|
||||
],
|
||||
"interface-name": false,
|
||||
"jsdoc-format": true,
|
||||
"label-position": true,
|
||||
"label-undefined": true,
|
||||
"max-line-length": [
|
||||
true,
|
||||
180
|
||||
],
|
||||
"member-ordering": [
|
||||
true,
|
||||
"static-before-instance",
|
||||
"variables-before-functions"
|
||||
],
|
||||
"no-any": false,
|
||||
"no-arg": true,
|
||||
"no-bitwise": false,
|
||||
"no-conditional-assignment": true,
|
||||
"no-consecutive-blank-lines": true,
|
||||
"no-console": [
|
||||
true,
|
||||
"debug",
|
||||
"info",
|
||||
"time",
|
||||
"timeEnd",
|
||||
"trace"
|
||||
],
|
||||
"no-construct": true,
|
||||
"no-constructor-vars": false,
|
||||
"no-debugger": true,
|
||||
"no-duplicate-key": true,
|
||||
"no-duplicate-variable": true,
|
||||
"no-empty": false,
|
||||
"no-eval": true,
|
||||
"no-inferrable-types": false,
|
||||
"no-internal-module": true,
|
||||
"no-require-imports": true,
|
||||
"no-shadowed-variable": true,
|
||||
"no-switch-case-fall-through": true,
|
||||
"no-trailing-whitespace": true,
|
||||
"no-unreachable": true,
|
||||
"no-unused-expression": true,
|
||||
"no-unused-variable": true,
|
||||
"no-use-before-declare": true,
|
||||
"no-var-keyword": true,
|
||||
"no-var-requires": true,
|
||||
"object-literal-sort-keys": false,
|
||||
"one-line": [
|
||||
true,
|
||||
"check-open-brace",
|
||||
"check-catch",
|
||||
"check-else",
|
||||
"check-whitespace"
|
||||
],
|
||||
"quotemark": [
|
||||
true,
|
||||
"single",
|
||||
"avoid-escape"
|
||||
],
|
||||
"radix": true,
|
||||
"semicolon": true,
|
||||
"switch-default": true,
|
||||
"trailing-comma": [
|
||||
true,
|
||||
{
|
||||
"multiline": "never",
|
||||
"singleline": "never"
|
||||
}
|
||||
],
|
||||
"triple-equals": [
|
||||
true,
|
||||
"allow-null-check"
|
||||
],
|
||||
"typedef": false,
|
||||
"typedef-whitespace": [
|
||||
true,
|
||||
{
|
||||
"call-signature": "nospace",
|
||||
"index-signature": "nospace",
|
||||
"parameter": "nospace",
|
||||
"property-declaration": "nospace",
|
||||
"variable-declaration": "nospace"
|
||||
}
|
||||
],
|
||||
"use-strict": false,
|
||||
"variable-name": [
|
||||
true,
|
||||
"check-format",
|
||||
"allow-leading-underscore",
|
||||
"ban-keywords"
|
||||
],
|
||||
"whitespace": [
|
||||
true,
|
||||
"check-branch",
|
||||
"check-operator",
|
||||
"check-separator",
|
||||
"check-type",
|
||||
"check-module",
|
||||
"check-decl"
|
||||
]
|
||||
}
|
||||
"rules": {
|
||||
"align": [
|
||||
true,
|
||||
"parameters",
|
||||
"statements"
|
||||
],
|
||||
"ban": false,
|
||||
"class-name": true,
|
||||
"comment-format": [
|
||||
true,
|
||||
"check-space"
|
||||
],
|
||||
"curly": true,
|
||||
"eofline": true,
|
||||
"forin": true,
|
||||
"indent": [
|
||||
true,
|
||||
"spaces"
|
||||
],
|
||||
"interface-name": false,
|
||||
"jsdoc-format": true,
|
||||
"label-position": true,
|
||||
"label-undefined": true,
|
||||
"max-line-length": [
|
||||
true,
|
||||
180
|
||||
],
|
||||
"member-ordering": [
|
||||
true,
|
||||
"static-before-instance",
|
||||
"variables-before-functions"
|
||||
],
|
||||
"no-any": false,
|
||||
"no-arg": true,
|
||||
"no-bitwise": false,
|
||||
"no-conditional-assignment": true,
|
||||
"no-consecutive-blank-lines": true,
|
||||
"no-console": [
|
||||
true,
|
||||
"debug",
|
||||
"info",
|
||||
"time",
|
||||
"timeEnd",
|
||||
"trace"
|
||||
],
|
||||
"no-construct": true,
|
||||
"no-constructor-vars": false,
|
||||
"no-debugger": true,
|
||||
"no-duplicate-key": true,
|
||||
"no-duplicate-variable": true,
|
||||
"no-empty": false,
|
||||
"no-eval": true,
|
||||
"no-inferrable-types": false,
|
||||
"no-internal-module": true,
|
||||
"no-require-imports": false,
|
||||
"no-shadowed-variable": true,
|
||||
"no-switch-case-fall-through": true,
|
||||
"no-trailing-whitespace": true,
|
||||
"no-unreachable": true,
|
||||
"no-unused-expression": true,
|
||||
"no-unused-variable": true,
|
||||
"no-use-before-declare": true,
|
||||
"no-var-keyword": true,
|
||||
"no-var-requires": true,
|
||||
"object-literal-sort-keys": false,
|
||||
"one-line": [
|
||||
true,
|
||||
"check-open-brace",
|
||||
"check-catch",
|
||||
"check-else",
|
||||
"check-whitespace"
|
||||
],
|
||||
"quotemark": [
|
||||
true,
|
||||
"single",
|
||||
"avoid-escape"
|
||||
],
|
||||
"radix": true,
|
||||
"semicolon": true,
|
||||
"switch-default": true,
|
||||
"trailing-comma": [
|
||||
true,
|
||||
{
|
||||
"multiline": "never",
|
||||
"singleline": "never"
|
||||
}
|
||||
],
|
||||
"triple-equals": [
|
||||
true,
|
||||
"allow-null-check"
|
||||
],
|
||||
"typedef": false,
|
||||
"typedef-whitespace": [
|
||||
true,
|
||||
{
|
||||
"call-signature": "nospace",
|
||||
"index-signature": "nospace",
|
||||
"parameter": "nospace",
|
||||
"property-declaration": "nospace",
|
||||
"variable-declaration": "nospace"
|
||||
}
|
||||
],
|
||||
"use-strict": false,
|
||||
"variable-name": [
|
||||
true,
|
||||
"check-format",
|
||||
"allow-leading-underscore",
|
||||
"ban-keywords"
|
||||
],
|
||||
"whitespace": [
|
||||
true,
|
||||
"check-branch",
|
||||
"check-operator",
|
||||
"check-separator",
|
||||
"check-type",
|
||||
"check-module",
|
||||
"check-decl"
|
||||
]
|
||||
}
|
||||
}
|
||||
|