From 3042ae8060a23ec7936af06cd6f568df1b881c78 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Tue, 11 Oct 2016 11:53:08 +0100 Subject: [PATCH] Code improvements - shared global declarations - reduced hyperlink-related repetitive code --- .../src/components/activiti-form.component.ts | 2 - .../widgets/attach/attach.widget.ts | 3 -- .../widgets/checkbox/checkbox.widget.ts | 2 - .../widgets/container/container.widget.ts | 2 - .../widgets/core/form-field-validator.ts | 2 - .../display-text/display-text.widget.ts | 2 - .../display-value/display-value.widget.ts | 37 ++++--------------- .../hyperlink/hyperlink.widget.spec.ts | 6 +-- .../widgets/hyperlink/hyperlink.widget.ts | 29 ++++----------- .../radio-buttons/radio-buttons.widget.ts | 2 - .../components/widgets/tabs/tabs.widget.ts | 2 - .../widgets/typeahead/typeahead.widget.ts | 2 - .../widgets/upload/upload.widget.ts | 2 - .../components/widgets/widget.component.ts | 24 ++++++++++-- .../ng2-activiti-form/src/declarations.d.ts | 23 ++++++++++++ .../ng2-activiti-form/tsconfig.json | 5 +-- 16 files changed, 64 insertions(+), 81 deletions(-) create mode 100644 ng2-components/ng2-activiti-form/src/declarations.d.ts diff --git a/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts b/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts index 1085e80028..f57bbe56b0 100644 --- a/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts +++ b/ng2-components/ng2-activiti-form/src/components/activiti-form.component.ts @@ -28,8 +28,6 @@ import { FormService } from './../services/form.service'; import { NodeService } from './../services/node.service'; import { FormModel, FormOutcomeModel, FormValues, FormFieldModel, FormOutcomeEvent } from './widgets/core/index'; -declare var componentHandler; - import { WidgetVisibilityService } from './../services/widget-visibility.service'; /** diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/attach/attach.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/attach/attach.widget.ts index bf9f40a2d8..370eaa66e7 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/attach/attach.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/attach/attach.widget.ts @@ -22,9 +22,6 @@ import { ExternalContent } from '../core/external-content'; import { ExternalContentLink } from '../core/external-content-link'; import { FormFieldModel } from '../core/form-field.model'; -declare var componentHandler; -declare let dialogPolyfill: any; - @Component({ moduleId: module.id, selector: 'attach-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.ts index dd82162870..b49f0718a6 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/checkbox/checkbox.widget.ts @@ -18,8 +18,6 @@ import { Component } from '@angular/core'; import { WidgetComponent } from './../widget.component'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'checkbox-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts index 674166be3d..713de93949 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/container/container.widget.ts @@ -18,8 +18,6 @@ import { Component, Input, AfterViewInit, Output, EventEmitter } from '@angular/core'; import { ContainerModel, FormFieldModel } from './../core/index'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'container-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field-validator.ts b/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field-validator.ts index 0b6c13aa9f..3b043834db 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field-validator.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/core/form-field-validator.ts @@ -18,8 +18,6 @@ import { FormFieldModel } from './form-field.model'; import { FormFieldTypes } from './form-field-types'; -declare var moment: any; - export interface FormFieldValidator { isSupported(field: FormFieldModel): boolean; diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/display-text/display-text.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/display-text/display-text.widget.ts index 9f7621afe2..e95d6aecdb 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/display-text/display-text.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/display-text/display-text.widget.ts @@ -18,8 +18,6 @@ import { Component } from '@angular/core'; import { WidgetComponent } from './../widget.component'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'display-text-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts index 93c0b340ef..0f9d610483 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/display-value/display-value.widget.ts @@ -21,9 +21,6 @@ import { FormFieldTypes } from '../core/form-field-types'; import { FormService } from '../../../services/form.service'; import { FormFieldOption } from './../core/form-field-option'; -declare var componentHandler; -declare var moment: any; - @Component({ moduleId: module.id, selector: 'display-value-widget', @@ -32,11 +29,10 @@ declare var moment: any; }) export class DisplayValueWidget extends WidgetComponent implements OnInit { - DEFAULT_URL: string = '#'; - DEFAULT_URL_SCHEME: string = 'http://'; - value: any; fieldType: string; + linkUrl: string; + linkText: string; constructor(private formService: FormService) { super(); @@ -99,6 +95,12 @@ export class DisplayValueWidget extends WidgetComponent implements OnInit { this.value = `${currency} ${this.field.value}`; } break; + case FormFieldTypes.HYPERLINK: + if (this.value) { + this.linkUrl = this.getHyperlinkUrl(this.field); + this.linkText = this.getHyperlinkText(this.field); + } + break; default: this.value = this.field.value; break; @@ -137,27 +139,4 @@ export class DisplayValueWidget extends WidgetComponent implements OnInit { } ); } - - // TODO: TAKEN FROM hyperlink WIDGET, OPTIMIZE - get linkUrl(): string { - let url = this.DEFAULT_URL; - - if (this.field && this.field.hyperlinkUrl) { - url = this.field.hyperlinkUrl; - if (!/^https?:\/\//i.test(url)) { - url = this.DEFAULT_URL_SCHEME + url; - } - } - - return url; - } - - // TODO: TAKEN FROM hyperlink WIDGET, OPTIMIZE - get linkText(): string { - if (this.field) { - return this.field.displayText || this.field.hyperlinkUrl; - } - return null; - } - } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts index d944f10182..c619be10e5 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.spec.ts @@ -64,7 +64,7 @@ describe('HyperlinkWidget', () => { it('should return default url for missing field', () => { widget.field = null; - expect(widget.linkUrl).toBe(HyperlinkWidget.DEFAULT_URL); + expect(widget.linkUrl).toBe(HyperlinkWidget.DEFAULT_HYPERLINK_URL); }); it('should return default url for missing field property', () => { @@ -72,7 +72,7 @@ describe('HyperlinkWidget', () => { hyperlinkUrl: null }); - expect(widget.linkUrl).toBe(HyperlinkWidget.DEFAULT_URL); + expect(widget.linkUrl).toBe(HyperlinkWidget.DEFAULT_HYPERLINK_URL); }); it('should prepend url with scheme', () => { @@ -81,7 +81,7 @@ describe('HyperlinkWidget', () => { hyperlinkUrl: url }); - expect(widget.linkUrl).toBe(`${HyperlinkWidget.DEFAULT_URL_SCHEME}${url}`); + expect(widget.linkUrl).toBe(`${HyperlinkWidget.DEFAULT_HYPERLINK_SCHEME}${url}`); }); it('should not prepend url with scheme', () => { diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts index 9e12d2ecc3..32857a7063 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/hyperlink/hyperlink.widget.ts @@ -15,40 +15,25 @@ * limitations under the License. */ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { WidgetComponent } from './../widget.component'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'hyperlink-widget', templateUrl: './hyperlink.widget.html', styleUrls: ['./hyperlink.widget.css'] }) -export class HyperlinkWidget extends WidgetComponent { +export class HyperlinkWidget extends WidgetComponent implements OnInit { - static DEFAULT_URL: string = '#'; - static DEFAULT_URL_SCHEME: string = 'http://'; + linkUrl: string; + linkText: string; - get linkUrl(): string { - let url = HyperlinkWidget.DEFAULT_URL; - - if (this.field && this.field.hyperlinkUrl) { - url = this.field.hyperlinkUrl; - if (!/^https?:\/\//i.test(url)) { - url = HyperlinkWidget.DEFAULT_URL_SCHEME + url; - } - } - - return url; - } - - get linkText(): string { + ngOnInit() { if (this.field) { - return this.field.displayText || this.field.hyperlinkUrl; + this.linkUrl = this.getHyperlinkUrl(this.field); + this.linkText = this.getHyperlinkText(this.field); } - return null; } } diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts index 9eae35a7c8..0a30b3ffde 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/radio-buttons/radio-buttons.widget.ts @@ -20,8 +20,6 @@ import { WidgetComponent } from './../widget.component'; import { FormService } from '../../../services/form.service'; import { FormFieldOption } from './../core/form-field-option'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'radio-buttons-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.ts index db946b9372..7472231fb6 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/tabs/tabs.widget.ts @@ -18,8 +18,6 @@ import { Component, Input, AfterViewInit, EventEmitter, Output } from '@angular/core'; import { TabModel, FormFieldModel } from './../core/index'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'tabs-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/typeahead/typeahead.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/typeahead/typeahead.widget.ts index 98817dce0e..8bdbca48b9 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/typeahead/typeahead.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/typeahead/typeahead.widget.ts @@ -20,8 +20,6 @@ import { FormService } from './../../../services/form.service'; import { WidgetComponent } from './../widget.component'; import { FormFieldOption } from './../core/form-field-option'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'typeahead-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts index a6fba3bc23..ffc7c0cd29 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/upload/upload.widget.ts @@ -19,8 +19,6 @@ import { Component, OnInit } from '@angular/core'; import { WidgetComponent } from './../widget.component'; import { AlfrescoSettingsService, AlfrescoAuthenticationService } from 'ng2-alfresco-core'; -declare var componentHandler; - @Component({ moduleId: module.id, selector: 'upload-widget', diff --git a/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts b/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts index 0d7fbe3abd..6ba09fc9cf 100644 --- a/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts +++ b/ng2-components/ng2-activiti-form/src/components/widgets/widget.component.ts @@ -18,14 +18,14 @@ import { Input, AfterViewInit, Output, EventEmitter } from '@angular/core'; import { FormFieldModel } from './core/index'; -declare let __moduleName: string; -declare var componentHandler; - /** * Base widget component. */ export class WidgetComponent implements AfterViewInit { + static DEFAULT_HYPERLINK_URL: string = '#'; + static DEFAULT_HYPERLINK_SCHEME: string = 'http://'; + @Input() field: FormFieldModel; @@ -67,4 +67,22 @@ export class WidgetComponent implements AfterViewInit { this.fieldChanged.emit(field); } + protected getHyperlinkUrl(field: FormFieldModel) { + let url = WidgetComponent.DEFAULT_HYPERLINK_URL; + if (field && field.hyperlinkUrl) { + url = field.hyperlinkUrl; + if (!/^https?:\/\//i.test(url)) { + url = `${WidgetComponent.DEFAULT_HYPERLINK_SCHEME}${url}`; + } + } + return url; + } + + protected getHyperlinkText(field: FormFieldModel) { + if (field) { + return field.displayText || field.hyperlinkUrl; + } + return null; + } + } diff --git a/ng2-components/ng2-activiti-form/src/declarations.d.ts b/ng2-components/ng2-activiti-form/src/declarations.d.ts new file mode 100644 index 0000000000..9c84411ad7 --- /dev/null +++ b/ng2-components/ng2-activiti-form/src/declarations.d.ts @@ -0,0 +1,23 @@ +/*! + * @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. + */ + +declare var module: any; +declare var moment: any; + +// MDL +declare var componentHandler: any; +declare let dialogPolyfill: any; diff --git a/ng2-components/ng2-activiti-form/tsconfig.json b/ng2-components/ng2-activiti-form/tsconfig.json index 73d5b02d81..0ed9d674eb 100644 --- a/ng2-components/ng2-activiti-form/tsconfig.json +++ b/ng2-components/ng2-activiti-form/tsconfig.json @@ -8,14 +8,13 @@ "sourceMap": true, "removeComments": true, "declaration": true, - "outDir": "dist" + "outDir": "dist", + "types": ["core-js", "jasmine"] }, "exclude": [ "demo", "dist", "node_modules", - "typings/main", - "typings/main.d.ts", "dist" ] }