diff --git a/demo-shell-ng2/app/vendor.ts b/demo-shell-ng2/app/vendor.ts index afb4ca35a2..c7d4a05717 100644 --- a/demo-shell-ng2/app/vendor.ts +++ b/demo-shell-ng2/app/vendor.ts @@ -57,10 +57,6 @@ require('script-loader!raphael/raphael.min.js'); require('script-loader!moment/min/moment.min.js'); -import 'md-date-time-picker/dist/css/mdDateTimePicker.css'; -require('script-loader!md-date-time-picker/dist/js/mdDateTimePicker.min.js'); -require('script-loader!md-date-time-picker/dist/js/draggabilly.pkgd.min.js'); - require('pdfjs-dist/web/compatibility.js'); // Setting worker path to worker bundle. diff --git a/demo-shell-ng2/package.json b/demo-shell-ng2/package.json index 69103e4ba6..9681413e7d 100644 --- a/demo-shell-ng2/package.json +++ b/demo-shell-ng2/package.json @@ -76,7 +76,6 @@ "intl": "1.2.5", "material-design-icons": "2.2.3", "material-design-lite": "1.2.1", - "md-date-time-picker": "2.2.0", "minimatch": "3.0.4", "moment": "2.15.1", "ng2-3d-editor": "0.0.15", diff --git a/ng2-components/config/karma.conf-all.js b/ng2-components/config/karma.conf-all.js index 3a2ca18a00..7286000f24 100644 --- a/ng2-components/config/karma.conf-all.js +++ b/ng2-components/config/karma.conf-all.js @@ -20,11 +20,6 @@ module.exports = function (config) { {pattern: './node_modules/alfresco-js-api/dist/alfresco-js-api.min.js', included: true, watched: false}, {pattern: './node_modules/raphael/raphael.min.js', included: true, watched: false}, {pattern: './node_modules/moment/min/moment.min.js', included: true, watched: false}, - { - pattern: './node_modules/md-date-time-picker/dist/js/mdDateTimePicker.min.js', - included: true, - watched: false - }, {pattern: './node_modules/ng2-translate/ng2-translate.js', included: false, watched: false}, { diff --git a/ng2-components/ng2-activiti-analytics/index.ts b/ng2-components/ng2-activiti-analytics/index.ts index 0bce895fcf..8bae88f1a1 100644 --- a/ng2-components/ng2-activiti-analytics/index.ts +++ b/ng2-components/ng2-activiti-analytics/index.ts @@ -16,7 +16,6 @@ */ import { ModuleWithProviders, NgModule } from '@angular/core'; -import { MdButtonModule, MdIconModule, MdTooltipModule } from '@angular/material'; import { DiagramsModule } from 'ng2-activiti-diagrams'; import { CoreModule, TRANSLATION_PROVIDER } from 'ng2-alfresco-core'; @@ -27,8 +26,8 @@ import { AnalyticsReportListComponent } from './src/components/analytics-report- import { AnalyticsReportParametersComponent } from './src/components/analytics-report-parameters.component'; import { AnalyticsComponent } from './src/components/analytics.component'; import { AnalyticsService } from './src/services/analytics.service'; - import { WIDGET_DIRECTIVES } from './src/components/widgets/index'; +import { MaterialModule } from './src/material.module'; export * from './src/components/analytics.component'; export * from './src/components/analytics-generator.component'; @@ -55,9 +54,7 @@ export const ANALYTICS_PROVIDERS: any[] = [ CoreModule, ChartsModule, DiagramsModule, - MdTooltipModule, - MdButtonModule, - MdIconModule + MaterialModule ], declarations: [ ...ANALYTICS_DIRECTIVES @@ -75,9 +72,7 @@ export const ANALYTICS_PROVIDERS: any[] = [ ], exports: [ ...ANALYTICS_DIRECTIVES, - MdTooltipModule, - MdButtonModule, - MdIconModule + MaterialModule ] }) export class AnalyticsModule { diff --git a/ng2-components/ng2-activiti-analytics/karma.conf.js b/ng2-components/ng2-activiti-analytics/karma.conf.js index d677c0e597..6ee544ea73 100644 --- a/ng2-components/ng2-activiti-analytics/karma.conf.js +++ b/ng2-components/ng2-activiti-analytics/karma.conf.js @@ -15,11 +15,9 @@ module.exports = function (config) { './node_modules/alfresco-js-api/dist/alfresco-js-api.js', './node_modules/raphael/raphael.js', './node_modules/moment/min/moment.min.js', - './node_modules/md-date-time-picker/dist/js/mdDateTimePicker.js', {pattern: './node_modules/ng2-translate/**/*.js', included: false, watched: false}, {pattern: './node_modules/ng2-charts/**/*.js', included: false, served: true, watched: false}, - {pattern: './node_modules/md-date-time-picker/**/*.js', included: false, served: true, watched: false}, {pattern: './node_modules/moment/**/*.js', included: false, served: true, watched: false}, {pattern: 'karma-test-shim.js', watched: false}, diff --git a/ng2-components/ng2-activiti-analytics/package.json b/ng2-components/ng2-activiti-analytics/package.json index 0571018988..4e27dba939 100644 --- a/ng2-components/ng2-activiti-analytics/package.json +++ b/ng2-components/ng2-activiti-analytics/package.json @@ -44,11 +44,10 @@ "@angular/platform-browser-dynamic": "4.2.5", "@angular/router": "4.2.5", "@ngx-translate/core": "7.0.0", - "alfresco-js-api": "1.7.0", + "alfresco-js-api": "^1.8.0-beta1", "chart.js": "2.5.0", "core-js": "2.4.1", "hammerjs": "2.0.8", - "md-date-time-picker": "2.2.0", "moment": "2.15.1", "ng2-activiti-diagrams": "1.7.0", "ng2-alfresco-core": "1.7.0", diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.css b/ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.scss similarity index 100% rename from ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.css rename to ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.scss diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.spec.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.spec.ts index 10f2e1f6d5..9e8e2e5218 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.spec.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.spec.ts @@ -17,7 +17,6 @@ import { DebugElement } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { MdButtonModule, MdIconModule, MdTooltipModule } from '@angular/material'; import { DiagramsModule } from 'ng2-activiti-diagrams'; import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core'; import { ChartsModule } from 'ng2-charts'; @@ -31,6 +30,7 @@ import { AnalyticsReportHeatMapComponent } from '../components/analytics-report- import { AnalyticsReportListComponent } from '../components/analytics-report-list.component'; import { AnalyticsReportParametersComponent } from '../components/analytics-report-parameters.component'; import { WIDGET_DIRECTIVES } from '../components/widgets/index'; +import { MaterialModule } from '../material.module'; import { AnalyticsService } from '../services/analytics.service'; export const ANALYTICS_DIRECTIVES: any[] = [ @@ -59,11 +59,8 @@ describe('AnalyticsGeneratorComponent', () => { TestBed.configureTestingModule({ imports: [ CoreModule.forRoot(), - MdTooltipModule, - MdButtonModule, - MdIconModule, + MaterialModule, ChartsModule, - DiagramsModule.forRoot() ], declarations: [ diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.ts index 55d7fdedd8..bdcd70b21e 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics-generator.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; +import { Component, EventEmitter, Input, OnChanges, Output, ViewEncapsulation } from '@angular/core'; import { ReportQuery } from 'ng2-activiti-diagrams'; import { Chart } from 'ng2-activiti-diagrams'; import { AnalyticsService } from '../services/analytics.service'; @@ -23,7 +23,8 @@ import { AnalyticsService } from '../services/analytics.service'; @Component({ selector: 'adf-analytics-generator, activiti-analytics-generator', templateUrl: './analytics-generator.component.html', - styleUrls: ['./analytics-generator.component.css'] + styleUrls: ['./analytics-generator.component.scss'], + encapsulation: ViewEncapsulation.None }) export class AnalyticsGeneratorComponent implements OnChanges { @@ -64,7 +65,7 @@ export class AnalyticsGeneratorComponent implements OnChanges { constructor(private analyticsService: AnalyticsService) { } - ngOnChanges(changes: SimpleChanges) { + ngOnChanges() { if (this.reportId && this.reportParamQuery) { this.generateReport(this.reportId, this.reportParamQuery); } else { diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-heat-map.component.spec.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-heat-map.component.spec.ts index 56e1370722..f431fade43 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-heat-map.component.spec.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-heat-map.component.spec.ts @@ -22,6 +22,7 @@ import { AlfrescoTranslationService, CoreModule } from 'ng2-alfresco-core'; import { Observable } from 'rxjs/Rx'; import { AnalyticsReportHeatMapComponent } from '../components/analytics-report-heat-map.component'; import { WIDGET_DIRECTIVES } from '../components/widgets/index'; +import { MaterialModule } from '../material.module'; import { AnalyticsService } from '../services/analytics.service'; declare let jasmine: any; @@ -46,7 +47,8 @@ describe('AnalyticsReportHeatMapComponent', () => { TestBed.configureTestingModule({ imports: [ CoreModule.forRoot(), - DiagramsModule.forRoot() + DiagramsModule.forRoot(), + MaterialModule ], declarations: [ AnalyticsReportHeatMapComponent, diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-list.component.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-list.component.ts index f7b3d2e4c6..b8586373d8 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-list.component.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-list.component.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core'; import { ReportParametersModel } from 'ng2-activiti-diagrams'; import { Observable, Observer } from 'rxjs/Rx'; import { AnalyticsService } from '../services/analytics.service'; @@ -23,7 +23,8 @@ import { AnalyticsService } from '../services/analytics.service'; @Component({ selector: ' adf-analytics-report-list, analytics-report-list', templateUrl: './analytics-report-list.component.html', - styleUrls: ['./analytics-report-list.component.css'] + styleUrls: ['./analytics-report-list.component.css'], + encapsulation: ViewEncapsulation.None }) export class AnalyticsReportListComponent implements OnInit { diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.html b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.html index 419e7e6b48..557078363b 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.html +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.html @@ -71,7 +71,7 @@

- +

diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts index 3ac18c3a66..3382a2b24c 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts @@ -17,16 +17,15 @@ import { DebugElement, SimpleChange } from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { MdButtonModule, MdTooltipModule, OVERLAY_PROVIDERS } from '@angular/material'; -import * as moment from 'moment'; +import { ReportParametersModel } from 'ng2-activiti-diagrams'; import { AlfrescoTranslationService, AppConfigModule, CoreModule } from 'ng2-alfresco-core'; import { Observable } from 'rxjs/Rx'; - -import { ReportParametersModel } from 'ng2-activiti-diagrams'; import * as analyticParamsMock from '../assets/analyticsParamsReportComponent.mock'; import { AnalyticsReportParametersComponent } from '../components/analytics-report-parameters.component'; import { WIDGET_DIRECTIVES } from '../components/widgets/index'; +import { MaterialModule } from '../material.module'; import { AnalyticsService } from '../services/analytics.service'; +import { DateRangeWidgetComponent } from './widgets/date-range/date-range.widget'; declare let jasmine: any; @@ -46,16 +45,15 @@ describe('AnalyticsReportParametersComponent', () => { AppConfigModule.forRoot('app.config.json', { bpmHost: 'http://localhost:9876/bpm' }), - MdTooltipModule, - MdButtonModule + MaterialModule ], declarations: [ + DateRangeWidgetComponent, AnalyticsReportParametersComponent, ...WIDGET_DIRECTIVES ], providers: [ - AnalyticsService, - OVERLAY_PROVIDERS + AnalyticsService ] }).compileComponents(); @@ -115,7 +113,7 @@ describe('AnalyticsReportParametersComponent', () => { let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.ngOnChanges({'reportId': change}); jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, @@ -135,7 +133,7 @@ describe('AnalyticsReportParametersComponent', () => { let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.ngOnChanges({'reportId': change}); jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, @@ -162,7 +160,7 @@ describe('AnalyticsReportParametersComponent', () => { let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.ngOnChanges({'reportId': change}); jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, @@ -224,7 +222,7 @@ describe('AnalyticsReportParametersComponent', () => { let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.ngOnChanges({'reportId': change}); jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, @@ -235,21 +233,15 @@ describe('AnalyticsReportParametersComponent', () => { it('Should render a date range components when the definition parameter type is \'dateRange\' ', (done) => { component.onSuccessReportParams.subscribe(() => { - fixture.detectChanges(); - - let today = moment().format('YYYY-MM-DD'); - - const startDate: any = element.querySelector('#startDateInput'); - const endDate: any = element.querySelector('#endDateInput'); - - expect(startDate.value).toEqual(today); - expect(endDate.value).toEqual(today); + let dateElement: any = element.querySelector('adf-date-range-widget'); + expect(dateElement).toBeDefined(); done(); }); let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.toggleParameters(); + component.ngOnChanges({'reportId': change}); jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, @@ -274,7 +266,7 @@ describe('AnalyticsReportParametersComponent', () => { let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.ngOnChanges({'reportId': change}); jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, @@ -312,7 +304,7 @@ describe('AnalyticsReportParametersComponent', () => { let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.ngOnChanges({'reportId': change}); }); @@ -346,7 +338,7 @@ describe('AnalyticsReportParametersComponent', () => { component.appId = appId; component.reportId = '1'; let change = new SimpleChange(null, appId, true); - component.ngOnChanges({ 'appId': change }); + component.ngOnChanges({'appId': change}); }); @@ -359,7 +351,7 @@ describe('AnalyticsReportParametersComponent', () => { let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.ngOnChanges({'reportId': change}); jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, @@ -409,7 +401,7 @@ describe('AnalyticsReportParametersComponent', () => { let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.ngOnChanges({'reportId': change}); }); @@ -421,7 +413,7 @@ describe('AnalyticsReportParametersComponent', () => { let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.ngOnChanges({'reportId': change}); jasmine.Ajax.requests.mostRecent().respondWith({ status: 404, @@ -467,7 +459,7 @@ describe('AnalyticsReportParametersComponent', () => { beforeEach(async(() => { let reportId = 1; let change = new SimpleChange(null, reportId, true); - component.ngOnChanges({ 'reportId': change }); + component.ngOnChanges({'reportId': change}); fixture.detectChanges(); jasmine.Ajax.requests.mostRecent().respondWith({ diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.ts index cf7be41b51..37e5a7ff26 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.ts @@ -26,7 +26,8 @@ import { OnInit, Output, SimpleChanges, - ViewChild + ViewChild, + ViewEncapsulation } from '@angular/core'; import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms'; import * as moment from 'moment'; @@ -45,7 +46,8 @@ declare let dialogPolyfill: any; @Component({ selector: 'adf-analytics-report-parameters, analytics-report-parameters', templateUrl: './analytics-report-parameters.component.html', - styleUrls: ['./analytics-report-parameters.component.css'] + styleUrls: ['./analytics-report-parameters.component.css'], + encapsulation: ViewEncapsulation.None }) export class AnalyticsReportParametersComponent implements OnInit, OnChanges, OnDestroy, AfterViewChecked, AfterContentChecked { diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics.component.css b/ng2-components/ng2-activiti-analytics/src/components/analytics.component.scss similarity index 100% rename from ng2-components/ng2-activiti-analytics/src/components/analytics.component.css rename to ng2-components/ng2-activiti-analytics/src/components/analytics.component.scss diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics.component.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics.component.ts index 1c35493a79..0f1622992f 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics.component.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics.component.ts @@ -15,14 +15,15 @@ * limitations under the License. */ -import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core'; +import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core'; import { ReportQuery } from 'ng2-activiti-diagrams'; import { AnalyticsGeneratorComponent } from './analytics-generator.component'; @Component({ selector: 'adf-analytics, activiti-analytics', templateUrl: './analytics.component.html', - styleUrls: ['./analytics.component.css'] + styleUrls: ['./analytics.component.scss'], + encapsulation: ViewEncapsulation.None }) export class AnalyticsComponent implements OnChanges { diff --git a/ng2-components/ng2-activiti-analytics/src/components/widgets/checkbox/checkbox.widget.ts b/ng2-components/ng2-activiti-analytics/src/components/widgets/checkbox/checkbox.widget.ts index c9963e7d59..9fba7a441a 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/widgets/checkbox/checkbox.widget.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/widgets/checkbox/checkbox.widget.ts @@ -18,13 +18,14 @@ /* tslint:disable:component-selector */ /* tslint:disable:no-access-missing-member */ -import { Component, ElementRef, Input } from '@angular/core'; +import { Component, ElementRef, Input, ViewEncapsulation } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { WidgetComponent } from './../widget.component'; @Component({ selector: 'checkbox-widget', - templateUrl: './checkbox.widget.html' + templateUrl: './checkbox.widget.html', + encapsulation: ViewEncapsulation.None }) export class CheckboxWidgetComponent extends WidgetComponent { diff --git a/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.css b/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.css deleted file mode 100644 index 384c81f215..0000000000 --- a/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.css +++ /dev/null @@ -1,3 +0,0 @@ -.date-picker-mdl { - margin-left: 20px; -} \ No newline at end of file diff --git a/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.html b/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.html index 1533982dc2..8b6f2e72b0 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.html +++ b/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.html @@ -1,43 +1,46 @@
- - Start date must be less than End date + + {{'DATE-WIDGET.MESSAGES.START-LESS-THAN-END-DATE' | translate}} -
-
-
- - - - Start is required - -
-
-
- -
-
-
- - -
-
-
- -
-
+ + {{'DATE-WIDGET.MESSAGES.START-DATE-REQUIRED' | translate}} + + + + + + + + + + + + + + + + + +

FormGroup : {{dateRange && dateRange.value | json }}

diff --git a/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.scss b/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.scss new file mode 100644 index 0000000000..f1c7606a5b --- /dev/null +++ b/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.scss @@ -0,0 +1,7 @@ +.adf-text-danger { + color: #D8000C; + + .mat-input-container { + width: 80% !important; + } +} diff --git a/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.ts b/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.ts index db874b0fba..6204eb5bd1 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/widgets/date-range/date-range.widget.ts @@ -15,37 +15,26 @@ * limitations under the License. */ - /* tslint:disable:component-selector */ - -/* tslint:disable::no-access-missing-member */ -import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core'; import { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms'; +import { DateAdapter, MD_DATE_FORMATS } from '@angular/material'; import * as moment from 'moment'; -import { WidgetComponent } from './../widget.component'; - -function dateCheck(c: AbstractControl) { - let startDate = moment(c.get('startDate').value); - let endDate = moment(c.get('endDate').value); - let result = startDate.isAfter(endDate); - return result ? {'greaterThan': true} : null; -} - -declare let mdDateTimePicker: any; +import { Moment } from 'moment'; +import { MOMENT_DATE_FORMATS, MomentDateAdapter } from 'ng2-alfresco-core'; @Component({ - selector: 'date-range-widget', + selector: 'adf-date-range-widget', templateUrl: './date-range.widget.html', - styleUrls: ['./date-range.widget.css'] + providers: [ + {provide: DateAdapter, useClass: MomentDateAdapter}, + {provide: MD_DATE_FORMATS, useValue: MOMENT_DATE_FORMATS}], + styleUrls: ['./date-range.widget.scss'], + encapsulation: ViewEncapsulation.None }) -export class DateRangeWidgetComponent extends WidgetComponent implements OnInit, OnDestroy { +export class DateRangeWidgetComponent implements OnInit { - public static FORMAT_DATE_ACTIVITI: string = 'YYYY-MM-DD'; - - @ViewChild('startElement') - startElement: any; - - @ViewChild('endElement') - endElement: any; + public FORMAT_DATE_ACTIVITI: string = 'YYYY-MM-DD'; + public SHOW_FORMAT: string = 'DD/MM/YYYY'; @Input('group') public dateRange: FormGroup; @@ -56,152 +45,66 @@ export class DateRangeWidgetComponent extends WidgetComponent implements OnInit, @Output() dateRangeChanged: EventEmitter = new EventEmitter(); + minDate: Moment; + maxDate: Moment; + startDatePicker: Moment; + endDatePicker: Moment; + debug: boolean = false; - dialogStart: any; - - dialogEnd: any; - - constructor(public elementRef: ElementRef) { - super(); + constructor(public dateAdapter: DateAdapter) { } ngOnInit() { - this.initForm(); - this.addAccessibilityLabelToDatePicker(); - } + let momentDateAdapter = this.dateAdapter; + momentDateAdapter.overrideDisplyaFormat = this.SHOW_FORMAT; - initForm() { - let startDateForm = this.field.value ? this.field.value.startDate : '' ; - let startDate = this.convertToMomentDate(startDateForm); - let endDateForm = this.field.value ? this.field.value.endDate : '' ; - let endDate = this.convertToMomentDate(endDateForm); + if (this.field) { + if (this.field.value && this.field.value.startDate) { + this.startDatePicker = moment(this.field.value.startDate, this.FORMAT_DATE_ACTIVITI); + } - let startDateControl = new FormControl(startDate); + if (this.field.value && this.field.value.endDate) { + this.endDatePicker = moment(this.field.value.endDate, this.FORMAT_DATE_ACTIVITI); + } + } + + let startDateControl = new FormControl(this.startDatePicker); startDateControl.setValidators(Validators.required); this.dateRange.addControl('startDate', startDateControl); - let endDateControl = new FormControl(endDate); + let endDateControl = new FormControl(this.endDatePicker); endDateControl.setValidators(Validators.required); this.dateRange.addControl('endDate', endDateControl); - this.dateRange.setValidators(dateCheck); - this.dateRange.valueChanges.subscribe(data => this.onGroupValueChanged(data)); - - this.initSartDateDialog(startDate); - this.initEndDateDialog(endDate); + this.dateRange.setValidators(this.dateCheck); + this.dateRange.valueChanges.subscribe(() => this.onGroupValueChanged()); } - initSartDateDialog(date: string) { - let settings: any = { - type: 'date', - past: moment().subtract(100, 'years'), - future: moment().add(100, 'years') - }; - - settings.init = moment(date, DateRangeWidgetComponent.FORMAT_DATE_ACTIVITI); - - this.dialogStart = new mdDateTimePicker.default(settings); - this.dialogStart.trigger = this.startElement.nativeElement; - - let startDateButton = document.getElementById('startDateButton'); - startDateButton.addEventListener('click', () => { - this.dialogStart.toggle(); - }); - } - - private addAccessibilityLabelToDatePicker() { - let left: any = document.querySelector('#mddtp-date__left'); - if (left) { - left.appendChild(this.createCustomElement('date left')); - } - - let right: any = document.querySelector('#mddtp-date__right'); - if (right) { - right.appendChild(this.createCustomElement('date right')); - } - - let cancel: any = document.querySelector('#mddtp-date__cancel'); - if (cancel) { - cancel.appendChild(this.createCustomElement('date cancel')); - } - - let ok: any = document.querySelector('#mddtp-date__ok'); - if (ok) { - ok.appendChild(this.createCustomElement('date ok')); - } - } - - private createCustomElement(text: string): HTMLElement { - let span = document.createElement('span'); - span.style.visibility = 'hidden'; - let rightSpanText = document.createTextNode(text); - span.appendChild(rightSpanText); - return span; - } - - initEndDateDialog(date: string) { - let settings: any = { - type: 'date', - past: moment().subtract(100, 'years'), - future: moment().add(100, 'years') - }; - - settings.init = moment(date, DateRangeWidgetComponent.FORMAT_DATE_ACTIVITI); - - this.dialogEnd = new mdDateTimePicker.default(settings); - this.dialogEnd.trigger = this.endElement.nativeElement; - - let endDateButton = document.getElementById('endDateButton'); - endDateButton.addEventListener('click', () => { - this.dialogEnd.toggle(); - }); - } - - onOkStart(inputEl: HTMLInputElement) { - let date = this.dialogStart.time.format(DateRangeWidgetComponent.FORMAT_DATE_ACTIVITI); - this.dateRange.patchValue({ - startDate: date - }); - let materialElemen: any = inputEl.parentElement; - if (materialElemen) { - materialElemen.MaterialTextfield.change(date); - } - } - - onOkEnd(inputEl: HTMLInputElement) { - let date = this.dialogEnd.time.format(DateRangeWidgetComponent.FORMAT_DATE_ACTIVITI); - this.dateRange.patchValue({ - endDate: date - }); - - let materialElemen: any = inputEl.parentElement; - if (materialElemen) { - materialElemen.MaterialTextfield.change(date); - } - } - - onGroupValueChanged(data: any) { + onGroupValueChanged() { if (this.dateRange.valid) { - let dateStart = this.convertToMomentDateWithTime(this.dateRange.controls['startDate'].value); - let endStart = this.convertToMomentDateWithTime(this.dateRange.controls['endDate'].value); + let dateStart = this.convertToMomentDateWithTime(this.dateRange.controls.startDate.value); + let endStart = this.convertToMomentDateWithTime(this.dateRange.controls.endDate.value); this.dateRangeChanged.emit({startDate: dateStart, endDate: endStart}); } } - public convertToMomentDateWithTime(date: string) { - return moment(date, DateRangeWidgetComponent.FORMAT_DATE_ACTIVITI, true).format(DateRangeWidgetComponent.FORMAT_DATE_ACTIVITI) + 'T00:00:00.000Z'; + convertToMomentDateWithTime(date: string) { + return moment(date, this.FORMAT_DATE_ACTIVITI, true).format(this.FORMAT_DATE_ACTIVITI) + 'T00:00:00.000Z'; } - private convertToMomentDate(date: string) { - if (date) { - return moment(date).format(DateRangeWidgetComponent.FORMAT_DATE_ACTIVITI); - } else { - return moment().format(DateRangeWidgetComponent.FORMAT_DATE_ACTIVITI); - } + dateCheck(formControl: AbstractControl) { + let startDate = moment(formControl.get('startDate').value); + let endDate = moment(formControl.get('endDate').value); + let result = startDate.isAfter(endDate); + return result ? {'greaterThan': true} : null; } - ngOnDestroy() { + isStartDateGreaterThanEndDate() { + return this.dateRange && this.dateRange.errors && this.dateRange.errors.greaterThan; + } + isStartDateEmpty() { + return this.dateRange && this.dateRange.controls.startDate && !this.dateRange.controls.startDate.valid; } } diff --git a/ng2-components/ng2-activiti-analytics/src/components/widgets/dropdown/dropdown.widget.css b/ng2-components/ng2-activiti-analytics/src/components/widgets/dropdown/dropdown.widget.css deleted file mode 100644 index ae995ca854..0000000000 --- a/ng2-components/ng2-activiti-analytics/src/components/widgets/dropdown/dropdown.widget.css +++ /dev/null @@ -1,23 +0,0 @@ -.dropdown-widget { - width: 100%; -} - -.dropdown-widget__select { - width: 100%; -} - -.dropdown-widget__invalid .dropdown-widget__select { - border-color: #d50000; -} - -.dropdown-widget__invalid .dropdown-widget__label { - color: #d50000; -} - -.dropdown-widget__invalid .dropdown-widget__label:after { - background-color: #d50000; -} - -.dropdown-widget__invalid .mdl-textfield__error { - visibility: visible !important; -} diff --git a/ng2-components/ng2-activiti-analytics/src/components/widgets/dropdown/dropdown.widget.html b/ng2-components/ng2-activiti-analytics/src/components/widgets/dropdown/dropdown.widget.html index 688b591560..07095b025e 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/widgets/dropdown/dropdown.widget.html +++ b/ng2-components/ng2-activiti-analytics/src/components/widgets/dropdown/dropdown.widget.html @@ -1,7 +1,10 @@ -