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" />
</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="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="RefactoringEssentials" Version="5.4.0" />
<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.OrleansRuntime" Version="2.0.0-beta1" />
<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="NSwag.AspNetCore" Version="11.12.9" />
<PackageReference Include="NSwag.AspNetCore" Version="11.12.10" />
<PackageReference Include="OpenCover" Version="4.6.519" />
<PackageReference Include="RefactoringEssentials" Version="5.4.0" />
<PackageReference Include="ReportGenerator" Version="3.0.2" />

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

@ -1,7 +1,7 @@
 var webpack = require('webpack'),
webpackMerge = require('webpack-merge'),
ExtractTextPlugin = require('extract-text-webpack-plugin'),
AotPlugin = require('@ngtools/webpack').AotPlugin,
ngToolsWebpack = require('@ngtools/webpack'),
runConfig = require('./webpack.run.base.js'),
helpers = require('./helpers');
@ -105,7 +105,7 @@ module.exports = webpackMerge(runConfig, {
comments: false
}),
new AotPlugin({
new ngToolsWebpack.AngularCompilerPlugin({
tsConfigPath: './tsconfig.json',
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[]) {
const format = (row: string) => {
const appendLast = (row: string, char: string) => {
const last = row[row.length - 1];
if (last !== '.') {
return row + '.';
if (last !== char) {
return row + char;
} else {
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) {
result = result + '<ul>';
if (details && details.length > 1) {
let result = appendLast(message, '.') + '<ul>';
for (let d of details) {
result += `<li>${format(d)}</li>`;
for (let detail of details) {
result += `<li>${appendLast(detail, '.')}</li>`;
}
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 {

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

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

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

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

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

@ -1,8 +1,6 @@
<form [formGroup]="createForm" (ngSubmit)="createApp()">
<div *ngIf="createFormError">
<div class="form-alert form-alert-error">
{{createFormError}}
</div>
<div class="form-alert form-alert-error" [innerHTML]="createFormError"></div>
</div>
<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> {
return this.authService.userChanges.first()
return this.authService.userChanges.take(1)
.do(user => {
if (!user) {
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> {
return this.authService.userChanges.first()
return this.authService.userChanges.take(1)
.do(user => {
if (user) {
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>> {
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);
});
} 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> {
return this.appsService.postApp(dto)
.do(app => {
this.apps$.first().subscribe(apps => {
this.apps$.take(1).subscribe(apps => {
this.apps$.next(apps.concat([app]));
});
});

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

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

56
src/Squidex/package.json

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

Loading…
Cancel
Save