Browse Source

RX error fixed.

pull/204/head
Sebastian Stehle 9 years ago
parent
commit
31db70980e
  1. 4
      src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj
  2. 4
      src/Squidex/Squidex.csproj
  3. 4
      src/Squidex/app-config/webpack.run.prod.js
  4. 40
      src/Squidex/app/framework/angular/http-extensions-impl.spec.ts
  5. 32
      src/Squidex/app/framework/angular/http-extensions-impl.ts
  6. 36
      src/Squidex/app/framework/angular/sorted.directive.ts
  7. 2
      src/Squidex/app/shared/components/app-context.ts
  8. 4
      src/Squidex/app/shared/components/app-form.component.html
  9. 2
      src/Squidex/app/shared/guards/must-be-authenticated.guard.ts
  10. 2
      src/Squidex/app/shared/guards/must-be-not-authenticated.guard.ts
  11. 2
      src/Squidex/app/shared/interceptors/auth.interceptor.ts
  12. 2
      src/Squidex/app/shared/services/apps-store.service.ts
  13. 4
      src/Squidex/app/theme/_forms.scss
  14. 56
      src/Squidex/package.json

4
src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj

@ -13,10 +13,10 @@
<ProjectReference Include="..\Squidex.Infrastructure\Squidex.Infrastructure.csproj" /> <ProjectReference Include="..\Squidex.Infrastructure\Squidex.Infrastructure.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Jint" Version="2.11.23" /> <PackageReference Include="Jint" Version="2.11.58" />
<PackageReference Include="Microsoft.OData.Core" Version="7.3.1" /> <PackageReference Include="Microsoft.OData.Core" Version="7.3.1" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="NJsonSchema" Version="9.10.9" /> <PackageReference Include="NJsonSchema" Version="9.10.10" />
<PackageReference Include="NodaTime" Version="2.2.3" /> <PackageReference Include="NodaTime" Version="2.2.3" />
<PackageReference Include="RefactoringEssentials" Version="5.4.0" /> <PackageReference Include="RefactoringEssentials" Version="5.4.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" /> <PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />

4
src/Squidex/Squidex.csproj

@ -68,9 +68,9 @@
<PackageReference Include="Microsoft.Orleans.Core" Version="2.0.0-beta1" /> <PackageReference Include="Microsoft.Orleans.Core" Version="2.0.0-beta1" />
<PackageReference Include="Microsoft.Orleans.OrleansRuntime" Version="2.0.0-beta1" /> <PackageReference Include="Microsoft.Orleans.OrleansRuntime" Version="2.0.0-beta1" />
<PackageReference Include="MongoDB.Driver" Version="2.4.4" /> <PackageReference Include="MongoDB.Driver" Version="2.4.4" />
<PackageReference Include="NJsonSchema" Version="9.10.9" /> <PackageReference Include="NJsonSchema" Version="9.10.10" />
<PackageReference Include="NodaTime.Serialization.JsonNet" Version="2.0.0" /> <PackageReference Include="NodaTime.Serialization.JsonNet" Version="2.0.0" />
<PackageReference Include="NSwag.AspNetCore" Version="11.12.9" /> <PackageReference Include="NSwag.AspNetCore" Version="11.12.10" />
<PackageReference Include="OpenCover" Version="4.6.519" /> <PackageReference Include="OpenCover" Version="4.6.519" />
<PackageReference Include="RefactoringEssentials" Version="5.4.0" /> <PackageReference Include="RefactoringEssentials" Version="5.4.0" />
<PackageReference Include="ReportGenerator" Version="3.0.2" /> <PackageReference Include="ReportGenerator" Version="3.0.2" />

4
src/Squidex/app-config/webpack.run.prod.js

@ -1,7 +1,7 @@
 var webpack = require('webpack'),  var webpack = require('webpack'),
webpackMerge = require('webpack-merge'), webpackMerge = require('webpack-merge'),
ExtractTextPlugin = require('extract-text-webpack-plugin'), ExtractTextPlugin = require('extract-text-webpack-plugin'),
AotPlugin = require('@ngtools/webpack').AotPlugin, ngToolsWebpack = require('@ngtools/webpack'),
runConfig = require('./webpack.run.base.js'), runConfig = require('./webpack.run.base.js'),
helpers = require('./helpers'); helpers = require('./helpers');
@ -105,7 +105,7 @@ module.exports = webpackMerge(runConfig, {
comments: false comments: false
}), }),
new AotPlugin({ new ngToolsWebpack.AngularCompilerPlugin({
tsConfigPath: './tsconfig.json', tsConfigPath: './tsconfig.json',
entryModule: 'app/app.module#AppModule' entryModule: 'app/app.module#AppModule'
}), }),

40
src/Squidex/app/framework/angular/http-extensions-impl.spec.ts

@ -0,0 +1,40 @@
/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { ErrorDto } from './http-extensions-impl';
describe('ErrorDto', () => {
it('Should create simple message when no details are specified.', () => {
const error = new ErrorDto(500, 'Error Message.');
expect(error.displayMessage).toBe('Error Message.');
});
it('Should append dot to message', () => {
const error = new ErrorDto(500, 'Error Message');
expect(error.displayMessage).toBe('Error Message.');
});
it('Should create simple message when detail has one item', () => {
const error = new ErrorDto(500, 'Error Message.', ['Detail Message.']);
expect(error.displayMessage).toBe('Error Message: Detail Message.');
});
it('Should create append do to simple message when detail has one item', () => {
const error = new ErrorDto(500, 'Error Message', ['Detail Message']);
expect(error.displayMessage).toBe('Error Message: Detail Message.');
});
it('Should create html list when error has more items.', () => {
const error = new ErrorDto(500, 'Error Message', ['Detail1.', 'Detail2.']);
expect(error.displayMessage).toBe('Error Message.<ul><li>Detail1.</li><li>Detail2.</li></ul>');
});
});

32
src/Squidex/app/framework/angular/http-extensions-impl.ts

@ -19,29 +19,41 @@ export class Versioned<T> {
} }
function formatMessage(message: string, details?: string[]) { function formatMessage(message: string, details?: string[]) {
const format = (row: string) => { const appendLast = (row: string, char: string) => {
const last = row[row.length - 1]; const last = row[row.length - 1];
if (last !== '.') { if (last !== char) {
return row + '.'; return row + char;
} else { } else {
return row; return row;
} }
}; };
let result = format(message); const removeLast = (row: string, char: string) => {
const last = row[row.length - 1];
if (last === char) {
return row.substr(0, row.length - 1);
} else {
return row;
}
};
if (details) { if (details && details.length > 1) {
result = result + '<ul>'; let result = appendLast(message, '.') + '<ul>';
for (let d of details) { for (let detail of details) {
result += `<li>${format(d)}</li>`; result += `<li>${appendLast(detail, '.')}</li>`;
} }
result = result + '</ul>'; result = result + '</ul>';
}
return result; return result;
} else if (details && details.length === 1) {
return `${appendLast(removeLast(message, '.'), ':')} ${appendLast(details[0], '.')}`;
} else {
return appendLast(message, '.');
}
} }
export class ErrorDto { export class ErrorDto {

36
src/Squidex/app/framework/angular/sorted.directive.ts

@ -30,30 +30,32 @@ export class SortedDirective {
) { ) {
const oldDragStartCallback = sortableComponent._onDragStartCallback.bind(sortableComponent); const oldDragStartCallback = sortableComponent._onDragStartCallback.bind(sortableComponent);
sortableComponent._onDragStartCallback = () => { if (Array.isArray(sortableContainer.sortableData)) {
oldDragStartCallback(); sortableComponent._onDragStartCallback = () => {
oldDragStartCallback();
this.oldArray = [...sortableContainer.sortableData]; this.oldArray = [...<any>sortableContainer.sortableData];
}; };
const oldDropCallback = sortableComponent._onDropCallback.bind(sortableComponent); const oldDropCallback = sortableComponent._onDropCallback.bind(sortableComponent);
sortableComponent._onDropCallback = (event: Event) => { sortableComponent._onDropCallback = (event: Event) => {
oldDropCallback(event); oldDropCallback(event);
if (sortableDragDropService.isDragged) { if (sortableDragDropService.isDragged) {
const newArray = sortableContainer.sortableData; const newArray: any[] = <any>sortableContainer.sortableData;
const oldArray = this.oldArray; const oldArray = this.oldArray;
if (newArray && oldArray && newArray.length === oldArray.length) { if (newArray && oldArray && newArray.length === oldArray.length) {
for (let i = 0; i < oldArray.length; i++) { for (let i = 0; i < oldArray.length; i++) {
if (oldArray[i] !== newArray[i]) { if (oldArray[i] !== newArray[i]) {
this.sorted.emit(newArray); this.sorted.emit(newArray);
break; break;
}
} }
} }
} }
} };
}; }
} }
} }

2
src/Squidex/app/shared/components/app-context.ts

@ -58,7 +58,7 @@ export class AppContext implements OnDestroy {
public readonly bus: MessageBus public readonly bus: MessageBus
) { ) {
this.appSubscription = this.appSubscription =
this.appsStore.selectedApp.first().subscribe(app => { this.appsStore.selectedApp.take(1).subscribe(app => {
this.appField = app; this.appField = app;
}); });
} }

4
src/Squidex/app/shared/components/app-form.component.html

@ -1,8 +1,6 @@
<form [formGroup]="createForm" (ngSubmit)="createApp()"> <form [formGroup]="createForm" (ngSubmit)="createApp()">
<div *ngIf="createFormError"> <div *ngIf="createFormError">
<div class="form-alert form-alert-error"> <div class="form-alert form-alert-error" [innerHTML]="createFormError"></div>
{{createFormError}}
</div>
</div> </div>
<div class="form-group"> <div class="form-group">

2
src/Squidex/app/shared/guards/must-be-authenticated.guard.ts

@ -20,7 +20,7 @@ export class MustBeAuthenticatedGuard implements CanActivate {
} }
public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.authService.userChanges.first() return this.authService.userChanges.take(1)
.do(user => { .do(user => {
if (!user) { if (!user) {
this.router.navigate(['']); this.router.navigate(['']);

2
src/Squidex/app/shared/guards/must-be-not-authenticated.guard.ts

@ -20,7 +20,7 @@ export class MustBeNotAuthenticatedGuard implements CanActivate {
} }
public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.authService.userChanges.first() return this.authService.userChanges.take(1)
.do(user => { .do(user => {
if (user) { if (user) {
this.router.navigate(['app']); this.router.navigate(['app']);

2
src/Squidex/app/shared/interceptors/auth.interceptor.ts

@ -24,7 +24,7 @@ export class AuthInterceptor implements HttpInterceptor {
public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (req.url.indexOf(this.baseUrl) === 0 && !req.headers.has('NoAuth')) { if (req.url.indexOf(this.baseUrl) === 0 && !req.headers.has('NoAuth')) {
return this.authService.userChanges.first().switchMap(user => { return this.authService.userChanges.take(1).switchMap(user => {
return this.makeRequest(req, next, user, true); return this.makeRequest(req, next, user, true);
}); });
} else { } else {

2
src/Squidex/app/shared/services/apps-store.service.ts

@ -62,7 +62,7 @@ export class AppsStoreService {
public createApp(dto: CreateAppDto, now?: DateTime): Observable<AppDto> { public createApp(dto: CreateAppDto, now?: DateTime): Observable<AppDto> {
return this.appsService.postApp(dto) return this.appsService.postApp(dto)
.do(app => { .do(app => {
this.apps$.first().subscribe(apps => { this.apps$.take(1).subscribe(apps => {
this.apps$.next(apps.concat([app])); this.apps$.next(apps.concat([app]));
}); });
}); });

4
src/Squidex/app/theme/_forms.scss

@ -82,6 +82,10 @@
&-success { &-success {
background: $color-theme-green-dark; background: $color-theme-green-dark;
} }
ul {
margin: 0;
}
} }
// //

56
src/Squidex/package.json

@ -8,52 +8,52 @@
"test": "karma start", "test": "karma start",
"test:coverage": "karma start karma.coverage.conf.js", "test:coverage": "karma start karma.coverage.conf.js",
"test:clean": "rimraf _test-output", "test:clean": "rimraf _test-output",
"dev": "cpx node_modules/oidc-client/dist/oidc-client.min.js wwwroot/scripts/ & cpx node_modules/redoc/dist/redoc.min.js wwwroot/scripts/ && webpack-dev-server --config app-config/webpack.run.dev.js --inline --port 3000", "dev": "cpx node_modules/oidc-client/dist/oidc-client.min.js wwwroot/scripts/ && webpack-dev-server --config app-config/webpack.run.dev.js --inline --port 3000",
"build": "webpack --config app-config/webpack.run.prod.js --display-error-details --bail", "build": "webpack --config app-config/webpack.run.prod.js --display-error-details --bail",
"build:nobail": "webpack --config app-config/webpack.run.prod.js --display-error-details", "build:nobail": "webpack --config app-config/webpack.run.prod.js --display-error-details",
"build:copy": "cpx node_modules/oidc-client/dist/oidc-client.min.js wwwroot/scripts/", "build:copy": "cpx node_modules/oidc-client/dist/oidc-client.min.js wwwroot/scripts/",
"build:clean": "rimraf wwwroot/build" "build:clean": "rimraf wwwroot/build"
}, },
"dependencies": { "dependencies": {
"@angular/animations": "4.4.6", "@angular/animations": "5.0.5",
"@angular/common": "4.4.6", "@angular/common": "5.0.5",
"@angular/compiler": "4.4.6", "@angular/compiler": "5.0.5",
"@angular/core": "4.4.6", "@angular/core": "5.0.5",
"@angular/forms": "4.4.6", "@angular/forms": "5.0.5",
"@angular/http": "4.4.6", "@angular/http": "5.0.5",
"@angular/platform-browser": "4.4.6", "@angular/platform-browser": "5.0.5",
"@angular/platform-browser-dynamic": "4.4.6", "@angular/platform-browser-dynamic": "5.0.5",
"@angular/platform-server": "4.4.6", "@angular/platform-server": "5.0.5",
"@angular/router": "4.4.6", "@angular/router": "5.0.5",
"angular2-chartjs": "0.3.0", "angular2-chartjs": "0.4.1",
"babel-polyfill": "6.26.0", "babel-polyfill": "6.26.0",
"bootstrap": "4.0.0-alpha.6", "bootstrap": "4.0.0-alpha.6",
"core-js": "2.5.1", "core-js": "2.5.1",
"graphiql": "0.11.10", "graphiql": "0.11.10",
"moment": "2.19.1", "moment": "2.19.3",
"mousetrap": "1.6.1", "mousetrap": "1.6.1",
"ng2-dnd": "4.2.0", "ng2-dnd": "5.0.2",
"oidc-client": "1.4.1", "oidc-client": "1.4.1",
"pikaday": "1.6.1", "pikaday": "1.6.1",
"progressbar.js": "1.0.1", "progressbar.js": "1.0.1",
"react": "16.0.0", "react": "16.2.0",
"react-dom": "16.0.0", "react-dom": "16.2.0",
"rxjs": "5.5.2", "rxjs": "5.5.2",
"zone.js": "0.8.18" "zone.js": "0.8.18"
}, },
"devDependencies": { "devDependencies": {
"@angular/compiler-cli": "4.4.6", "@angular/compiler": "5.0.5",
"@angular/tsc-wrapped": "4.4.6", "@angular/compiler-cli": "5.0.5",
"@ngtools/webpack": "1.7.2", "@ngtools/webpack": "1.8.5",
"@types/core-js": "0.9.35", "@types/core-js": "0.9.35",
"@types/jasmine": "2.5.45", "@types/jasmine": "2.5.45",
"@types/mousetrap": "1.5.34", "@types/mousetrap": "1.5.34",
"@types/node": "7.0.5", "@types/node": "7.0.5",
"@types/react": "15.6.4", "@types/react": "16.0.25",
"@types/react-dom": "15.5.6", "@types/react-dom": "16.0.3",
"angular2-router-loader": "0.3.5", "angular2-router-loader": "0.3.5",
"angular2-template-loader": "0.6.2", "angular2-template-loader": "0.6.2",
"awesome-typescript-loader": "3.3.0", "awesome-typescript-loader": "3.4.1",
"codelyzer": "4.0.1", "codelyzer": "4.0.1",
"cpx": "1.5.0", "cpx": "1.5.0",
"css-loader": "0.28.7", "css-loader": "0.28.7",
@ -70,13 +70,13 @@
"karma-cli": "1.0.1", "karma-cli": "1.0.1",
"karma-coverage": "1.1.1", "karma-coverage": "1.1.1",
"karma-htmlfile-reporter": "0.3.5", "karma-htmlfile-reporter": "0.3.5",
"karma-jasmine": "1.1.0", "karma-jasmine": "1.1.1",
"karma-jasmine-html-reporter": "^0.2.2", "karma-jasmine-html-reporter": "^0.2.2",
"karma-mocha-reporter": "2.2.5", "karma-mocha-reporter": "2.2.5",
"karma-phantomjs-launcher": "1.0.4", "karma-phantomjs-launcher": "1.0.4",
"karma-sourcemap-loader": "0.3.7", "karma-sourcemap-loader": "0.3.7",
"karma-webpack": "2.0.5", "karma-webpack": "2.0.6",
"node-sass": "4.5.3", "node-sass": "4.7.2",
"noop-loader": "^1.0.0", "noop-loader": "^1.0.0",
"null-loader": "0.1.1", "null-loader": "0.1.1",
"phantomjs-prebuilt": "2.1.16", "phantomjs-prebuilt": "2.1.16",
@ -88,10 +88,10 @@
"tslint": "5.8.0", "tslint": "5.8.0",
"tslint-loader": "3.5.3", "tslint-loader": "3.5.3",
"typemoq": "2.1.0", "typemoq": "2.1.0",
"typescript": "2.5.3", "typescript": "2.4.2",
"underscore": "1.8.3", "underscore": "1.8.3",
"webpack": "3.8.1", "webpack": "3.9.1",
"webpack-dev-server": "2.9.4", "webpack-dev-server": "2.9.5",
"webpack-merge": "4.1.1" "webpack-merge": "4.1.1"
} }
} }

Loading…
Cancel
Save