You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by bb...@apache.org on 2017/10/09 16:26:07 UTC
[3/4] nifi-registry git commit: NIFIREG-21 - Leverage REST API and
add unit test coverage and update .travis.yml
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js
new file mode 100644
index 0000000..978244c
--- /dev/null
+++ b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+var ngCore = require('@angular/core');
+var rxjs = require('rxjs/Rx');
+var NfRegistryService = require('nifi-registry/services/nf-registry.service.js');
+var ngRouter = require('@angular/router');
+var nfRegistryAnimations = require('nifi-registry/nf-registry.animations.js');
+
+/**
+ * NfRegistryBucketGridListViewer constructor.
+ *
+ * @param nfRegistryService The nf-registry.service module.
+ * @param ActivatedRoute The angular activated route module.
+ * @constructor
+ */
+function NfRegistryBucketGridListViewer(nfRegistryService, ActivatedRoute) {
+ this.route = ActivatedRoute;
+ this.nfRegistryService = nfRegistryService;
+};
+
+NfRegistryBucketGridListViewer.prototype = {
+ constructor: NfRegistryBucketGridListViewer,
+
+ /**
+ * Initialize the component.
+ */
+ ngOnInit: function () {
+ var self = this;
+ this.nfRegistryService.explorerViewType = 'grid-list';
+ this.route.params
+ .switchMap(function (params) {
+ return new rxjs.Observable.forkJoin(
+ self.nfRegistryService.api.getBuckets(),
+ self.nfRegistryService.api.getDroplets(params['bucketId']),
+ self.nfRegistryService.api.getBucket(params['bucketId'])
+ );
+ })
+ .subscribe(function (response) {
+ var buckets = response[0];
+ var droplets = response[1];
+ var bucket = response[2];
+ self.nfRegistryService.bucket = bucket;
+ self.nfRegistryService.buckets = buckets;
+ self.nfRegistryService.droplets = droplets;
+ self.nfRegistryService.filterDroplets();
+ self.nfRegistryService.setBreadcrumbState('in');
+ });
+ },
+
+ /**
+ * Destroy the component.
+ */
+ ngOnDestroy: function () {
+ this.nfRegistryService.bucket = {};
+ this.nfRegistryService.setBreadcrumbState('out');
+ }
+};
+
+NfRegistryBucketGridListViewer.annotations = [
+ new ngCore.Component({
+ template: require('./nf-registry-grid-list-viewer.html!text'),
+ animations: [nfRegistryAnimations.flyInOutAnimation]
+ })
+];
+
+NfRegistryBucketGridListViewer.parameters = [NfRegistryService, ngRouter.ActivatedRoute];
+
+module.exports = NfRegistryBucketGridListViewer;
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.spec.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.spec.js b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.spec.js
new file mode 100644
index 0000000..7f17b15
--- /dev/null
+++ b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.spec.js
@@ -0,0 +1,185 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+var NfRegistryRoutes = require('nifi-registry/nf-registry.routes.js');
+var ngCoreTesting = require('@angular/core/testing');
+var ngHttpTesting = require('@angular/http/testing');
+var ngCommon = require('@angular/common');
+var ngRouter = require('@angular/router');
+var FdsDemo = require('nifi-registry/components/fluid-design-system/fds-demo.js');
+var NfRegistry = require('nifi-registry/nf-registry.js');
+var NfRegistryApi = require('nifi-registry/services/nf-registry.api.js');
+var NfRegistryService = require('nifi-registry/services/nf-registry.service.js');
+var NfPageNotFoundComponent = require('nifi-registry/components/page-not-found/nf-registry-page-not-found.js');
+var NfRegistryExplorer = require('nifi-registry/components/explorer/nf-registry-explorer.js');
+var NfRegistryAdministration = require('nifi-registry/components/administration/nf-registry-administration.js');
+var NfRegistryGeneralAdministration = require('nifi-registry/components/administration/general/nf-registry-general-administration.js');
+var NfRegistryUsersAdministration = require('nifi-registry/components/administration/users/nf-registry-users-administration.js');
+var NfRegistryAddUser = require('nifi-registry/components/administration/users/add/nf-registry-add-user.js');
+var NfRegistryUserDetails = require('nifi-registry/components/administration/users/details/nf-registry-user-details.js');
+var NfRegistryUserPermissions = require('nifi-registry/components/administration/users/permissions/nf-registry-user-permissions.js');
+var NfRegistryBucketPermissions = require('nifi-registry/components/administration/workflow/buckets/permissions/nf-registry-bucket-permissions.js');
+var NfRegistryWorkflowAdministration = require('nifi-registry/components/administration/workflow/nf-registry-workflow-administration.js');
+var NfRegistryGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js');
+var NfRegistryBucketGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js');
+var NfRegistryDropletGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js');
+var fdsCore = require('@fluid-design-system/core');
+var ngMoment = require('angular2-moment');
+var rxjs = require('rxjs/Rx');
+var ngHttp = require('@angular/http');
+
+describe('NfRegistryBucketGridListViewer Component', function () {
+ var comp;
+ var fixture;
+ var nfRegistryService;
+ var nfRegistryApi;
+ var ngHttpService;
+
+ beforeEach(function () {
+ ngCoreTesting.TestBed.configureTestingModule({
+ imports: [
+ ngMoment.MomentModule,
+ ngHttp.HttpModule,
+ ngHttp.JsonpModule,
+ fdsCore,
+ NfRegistryRoutes
+ ],
+ declarations: [
+ FdsDemo,
+ NfRegistry,
+ NfRegistryExplorer,
+ NfRegistryAdministration,
+ NfRegistryGeneralAdministration,
+ NfRegistryUsersAdministration,
+ NfRegistryUserDetails,
+ NfRegistryUserPermissions,
+ NfRegistryBucketPermissions,
+ NfRegistryAddUser,
+ NfRegistryWorkflowAdministration,
+ NfRegistryGridListViewer,
+ NfRegistryBucketGridListViewer,
+ NfRegistryDropletGridListViewer,
+ NfPageNotFoundComponent
+ ],
+ providers: [
+ NfRegistryApi,
+ NfRegistryService,
+ {
+ provide: ngCommon.APP_BASE_HREF,
+ useValue: '/'
+ },
+ {
+ provide: ngRouter.ActivatedRoute,
+ useValue: {
+ params: rxjs.Observable.of({bucketId: '2f7f9e54-dc09-4ceb-aa58-9fe581319cdc'})
+ }
+ },
+ {
+ provide: ngHttp.XHRBackend,
+ useClass: ngHttpTesting.MockBackend
+ }
+ ]
+ });
+ fixture = ngCoreTesting.TestBed.createComponent(NfRegistryBucketGridListViewer);
+
+ // test instance
+ comp = fixture.componentInstance;
+
+ // from the root injector
+ nfRegistryService = ngCoreTesting.TestBed.get(NfRegistryService);
+ nfRegistryApi = ngCoreTesting.TestBed.get(NfRegistryApi);
+ ngHttpService = ngCoreTesting.TestBed.get(ngHttp.Http);
+
+ // because the NfRegistryBucketGridListViewer component is a nested route component we need to set up the nfRegistryService service manually
+ nfRegistryService.explorerViewType = 'grid-list';
+
+ //Spy
+ spyOn(ngHttpService, 'get').and.callThrough();
+ spyOn(nfRegistryApi, 'getBuckets').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of([{
+ identifier: '2f7f9e54-dc09-4ceb-aa58-9fe581319cdc',
+ name: 'Bucket #1'
+ }]));
+ spyOn(nfRegistryApi, 'getBucket').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of({
+ identifier: '2f7f9e54-dc09-4ceb-aa58-9fe581319cdc',
+ name: 'Bucket #1'
+ }));
+ spyOn(nfRegistryService, 'filterDroplets');
+ });
+
+ it('should have a defined component', ngCoreTesting.fakeAsync(function () {
+ spyOn(nfRegistryApi, 'getDroplets').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of([{
+ "identifier": "2e04b4fb-9513-47bb-aa74-1ae34616bfdc",
+ "name": "Flow #1",
+ "description": "This is flow #1",
+ "bucketIdentifier": "2f7f9e54-dc09-4ceb-aa58-9fe581319cdc",
+ "createdTimestamp": 1505931890999,
+ "modifiedTimestamp": 1505931890999,
+ "type": "FLOW",
+ "snapshotMetadata": null,
+ "link": {
+ "params": {
+ "rel": "self"
+ },
+ "href": "flows/2e04b4fb-9513-47bb-aa74-1ae34616bfdc"
+ }
+ }]));
+ // 1st change detection triggers ngOnInit which makes getBuckets, getBucket, and getDroplets calls
+ fixture.detectChanges();
+ // wait for async getBuckets, getBucket, and getDroplets calls
+ ngCoreTesting.tick();
+ // 2nd change detection completes after the getBuckets, getBucket, and getDroplets calls
+ fixture.detectChanges();
+
+ //assertions
+ expect(comp).toBeDefined();
+ expect(nfRegistryService.breadCrumbState).toBe('in');
+ expect(nfRegistryService.bucket.name).toEqual('Bucket #1');
+ expect(nfRegistryService.buckets[0].name).toEqual('Bucket #1');
+ expect(nfRegistryService.buckets.length).toBe(1);
+ expect(nfRegistryService.droplets[0].name).toEqual('Flow #1');
+ expect(nfRegistryService.droplets.length).toBe(1);
+ expect(nfRegistryApi.getBuckets).toHaveBeenCalled();
+ expect(nfRegistryService.filterDroplets).toHaveBeenCalled();
+ expect(nfRegistryService.filterDroplets.calls.count()).toBe(1);
+
+ var getDropletsCall = nfRegistryApi.getDroplets.calls.first()
+ expect(getDropletsCall.args[0]).toBe('2f7f9e54-dc09-4ceb-aa58-9fe581319cdc');
+ var getBucketCall = nfRegistryApi.getBucket.calls.first()
+ expect(getBucketCall.args[0]).toBe('2f7f9e54-dc09-4ceb-aa58-9fe581319cdc');
+ }));
+
+ it('should destroy the component', ngCoreTesting.fakeAsync(function () {
+ spyOn(nfRegistryApi, 'getDroplets').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of([]));
+ // 1st change detection triggers ngOnInit which makes getBuckets, getBucket, and getDroplets calls
+ fixture.detectChanges();
+ // wait for async getBuckets, getBucket, and getDroplets calls
+ ngCoreTesting.tick();
+ // 2nd change detection completes after the getBuckets, getBucket, and getDroplets calls
+ fixture.detectChanges();
+
+ // The function to test
+ comp.ngOnDestroy();
+
+ //assertions
+ expect(nfRegistryService.bucket.identifier).toBeUndefined();
+ expect(nfRegistryService.breadCrumbState).toBe('out');
+ }));
+});
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js
new file mode 100644
index 0000000..3d3d4e4
--- /dev/null
+++ b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+var ngCore = require('@angular/core');
+var rxjs = require('rxjs/Rx');
+var NfRegistryService = require('nifi-registry/services/nf-registry.service.js');
+var ngRouter = require('@angular/router');
+var nfRegistryAnimations = require('nifi-registry/nf-registry.animations.js');
+
+/**
+ * NfRegistryDropletGridListViewer constructor.
+ *
+ * @param nfRegistryService The nf-registry.service module.
+ * @param ActivatedRoute The angular activated route module.
+ * @constructor
+ */
+function NfRegistryDropletGridListViewer(nfRegistryService, ActivatedRoute) {
+ this.route = ActivatedRoute;
+ this.nfRegistryService = nfRegistryService;
+};
+
+NfRegistryDropletGridListViewer.prototype = {
+ constructor: NfRegistryDropletGridListViewer,
+
+ /**
+ * Initialize the component.
+ */
+ ngOnInit: function () {
+ var self = this;
+ this.nfRegistryService.explorerViewType = 'grid-list';
+ this.route.params
+ .switchMap(function (params) {
+ return new rxjs.Observable.forkJoin(
+ self.nfRegistryService.api.getDroplet(params['bucketId'], params['dropletType'], params['dropletId']),
+ self.nfRegistryService.api.getBucket(params['bucketId']),
+ self.nfRegistryService.api.getBuckets(),
+ self.nfRegistryService.api.getDroplets(params['bucketId'])
+ );
+ })
+ .subscribe(function (response) {
+ var droplet = response[0];
+ var bucket = response[1];
+ var buckets = response[2];
+ var droplets = response[3];
+ self.nfRegistryService.bucket = bucket;
+ self.nfRegistryService.buckets = buckets;
+ self.nfRegistryService.droplet = droplet;
+ self.nfRegistryService.droplets = droplets;
+ self.nfRegistryService.filterDroplets();
+ self.nfRegistryService.setBreadcrumbState('in');
+ });
+ },
+
+ /**
+ * Destroy the component.
+ */
+ ngOnDestroy: function () {
+ this.nfRegistryService.bucket = {};
+ this.nfRegistryService.droplet = {};
+ this.nfRegistryService.setBreadcrumbState('out');
+ }
+};
+
+NfRegistryDropletGridListViewer.annotations = [
+ new ngCore.Component({
+ template: require('./nf-registry-grid-list-viewer.html!text'),
+ animations: [nfRegistryAnimations.flyInOutAnimation]
+ })
+];
+
+NfRegistryDropletGridListViewer.parameters = [NfRegistryService, ngRouter.ActivatedRoute];
+
+module.exports = NfRegistryDropletGridListViewer;
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.spec.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.spec.js b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.spec.js
new file mode 100644
index 0000000..1f98c80
--- /dev/null
+++ b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.spec.js
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+var NfRegistryRoutes = require('nifi-registry/nf-registry.routes.js');
+var ngCoreTesting = require('@angular/core/testing');
+var ngHttpTesting = require('@angular/http/testing');
+var ngCommon = require('@angular/common');
+var ngRouter = require('@angular/router');
+var FdsDemo = require('nifi-registry/components/fluid-design-system/fds-demo.js');
+var NfRegistry = require('nifi-registry/nf-registry.js');
+var NfRegistryApi = require('nifi-registry/services/nf-registry.api.js');
+var NfRegistryService = require('nifi-registry/services/nf-registry.service.js');
+var NfPageNotFoundComponent = require('nifi-registry/components/page-not-found/nf-registry-page-not-found.js');
+var NfRegistryExplorer = require('nifi-registry/components/explorer/nf-registry-explorer.js');
+var NfRegistryAdministration = require('nifi-registry/components/administration/nf-registry-administration.js');
+var NfRegistryGeneralAdministration = require('nifi-registry/components/administration/general/nf-registry-general-administration.js');
+var NfRegistryUsersAdministration = require('nifi-registry/components/administration/users/nf-registry-users-administration.js');
+var NfRegistryAddUser = require('nifi-registry/components/administration/users/add/nf-registry-add-user.js');
+var NfRegistryUserDetails = require('nifi-registry/components/administration/users/details/nf-registry-user-details.js');
+var NfRegistryUserPermissions = require('nifi-registry/components/administration/users/permissions/nf-registry-user-permissions.js');
+var NfRegistryBucketPermissions = require('nifi-registry/components/administration/workflow/buckets/permissions/nf-registry-bucket-permissions.js');
+var NfRegistryWorkflowAdministration = require('nifi-registry/components/administration/workflow/nf-registry-workflow-administration.js');
+var NfRegistryGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js');
+var NfRegistryBucketGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js');
+var NfRegistryDropletGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js');
+var fdsCore = require('@fluid-design-system/core');
+var ngMoment = require('angular2-moment');
+var rxjs = require('rxjs/Rx');
+var ngHttp = require('@angular/http');
+
+describe('NfRegistryDropletGridListViewer Component', function () {
+ var comp;
+ var fixture;
+ var nfRegistryService;
+ var nfRegistryApi;
+ var ngHttpService;
+
+ beforeEach(function () {
+ ngCoreTesting.TestBed.configureTestingModule({
+ imports: [
+ ngMoment.MomentModule,
+ ngHttp.HttpModule,
+ ngHttp.JsonpModule,
+ fdsCore,
+ NfRegistryRoutes
+ ],
+ declarations: [
+ FdsDemo,
+ NfRegistry,
+ NfRegistryExplorer,
+ NfRegistryAdministration,
+ NfRegistryGeneralAdministration,
+ NfRegistryUsersAdministration,
+ NfRegistryUserDetails,
+ NfRegistryUserPermissions,
+ NfRegistryBucketPermissions,
+ NfRegistryAddUser,
+ NfRegistryWorkflowAdministration,
+ NfRegistryGridListViewer,
+ NfRegistryBucketGridListViewer,
+ NfRegistryDropletGridListViewer,
+ NfPageNotFoundComponent
+ ],
+ providers: [
+ NfRegistryApi,
+ NfRegistryService,
+ {
+ provide: ngCommon.APP_BASE_HREF,
+ useValue: '/'
+ }, {
+ provide: ngRouter.ActivatedRoute,
+ useValue: {
+ params: rxjs.Observable.of({
+ bucketId: '2f7f9e54-dc09-4ceb-aa58-9fe581319cdc',
+ dropletId: '2e04b4fb-9513-47bb-aa74-1ae34616bfdc',
+ dropletType: 'flow'
+ })
+ }
+ },
+ {
+ provide: ngHttp.XHRBackend,
+ useClass: ngHttpTesting.MockBackend
+ }
+ ]
+ });
+
+ fixture = ngCoreTesting.TestBed.createComponent(NfRegistryDropletGridListViewer);
+
+ // test instance
+ comp = fixture.componentInstance;
+
+ // from the root injector
+ nfRegistryService = ngCoreTesting.TestBed.get(NfRegistryService);
+ nfRegistryApi = ngCoreTesting.TestBed.get(NfRegistryApi);
+ ngHttpService = ngCoreTesting.TestBed.get(ngHttp.Http);
+
+ // because the NfRegistryDropletGridListViewer component is a nested route component we need to set up the nfRegistryService service manually
+ nfRegistryService.perspective = 'explorer';
+ nfRegistryService.explorerViewType = 'grid-list';
+
+ //Spy
+ spyOn(ngHttpService, 'get').and.callThrough();
+ spyOn(nfRegistryApi, 'getDroplet').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of({
+ "identifier": "2e04b4fb-9513-47bb-aa74-1ae34616bfdc",
+ "name": "Flow #1",
+ "description": "This is flow #1",
+ "bucketIdentifier": "2f7f9e54-dc09-4ceb-aa58-9fe581319cdc",
+ "createdTimestamp": 1505931890999,
+ "modifiedTimestamp": 1505931890999,
+ "type": "FLOW",
+ "snapshotMetadata": null,
+ "link": {
+ "params": {
+ "rel": "self"
+ },
+ "href": "flows/2e04b4fb-9513-47bb-aa74-1ae34616bfdc"
+ }
+ }));
+ spyOn(nfRegistryApi, 'getBuckets').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of([{
+ identifier: '2f7f9e54-dc09-4ceb-aa58-9fe581319cdc',
+ name: 'Bucket #1'
+ }]));
+ spyOn(nfRegistryApi, 'getBucket').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of({
+ identifier: '2f7f9e54-dc09-4ceb-aa58-9fe581319cdc',
+ name: 'Bucket #1'
+ }));
+ spyOn(nfRegistryService, 'filterDroplets');
+ });
+
+ it('should have a defined component', ngCoreTesting.fakeAsync(function () {
+ spyOn(nfRegistryApi, 'getDroplets').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of([{
+ "identifier": "2e04b4fb-9513-47bb-aa74-1ae34616bfdc",
+ "name": "Flow #1",
+ "description": "This is flow #1",
+ "bucketIdentifier": "2f7f9e54-dc09-4ceb-aa58-9fe581319cdc",
+ "createdTimestamp": 1505931890999,
+ "modifiedTimestamp": 1505931890999,
+ "type": "FLOW",
+ "snapshotMetadata": null,
+ "link": {
+ "params": {
+ "rel": "self"
+ },
+ "href": "flows/2e04b4fb-9513-47bb-aa74-1ae34616bfdc"
+ }
+ }]));
+ // 1st change detection triggers ngOnInit which makes getBuckets, getBucket, getDroplet, and getDroplets calls
+ fixture.detectChanges();
+ // wait for async getBuckets, getBucket, getDroplet, and getDroplets calls
+ ngCoreTesting.tick();
+ // 2nd change detection completes after the getBuckets, getBucket, getDroplet, and getDroplets calls
+ fixture.detectChanges();
+
+ //assertions
+ expect(comp).toBeDefined();
+ expect(nfRegistryService.breadCrumbState).toBe('in');
+ expect(nfRegistryService.bucket.name).toEqual('Bucket #1');
+ expect(nfRegistryService.buckets[0].name).toEqual('Bucket #1');
+ expect(nfRegistryService.buckets.length).toBe(1);
+ expect(nfRegistryService.droplet.name).toEqual('Flow #1');
+ expect(nfRegistryService.droplets[0].name).toEqual('Flow #1');
+ expect(nfRegistryService.droplets.length).toBe(1);
+ expect(nfRegistryApi.getBuckets).toHaveBeenCalled();
+ expect(nfRegistryService.filterDroplets).toHaveBeenCalled();
+ expect(nfRegistryService.filterDroplets.calls.count()).toBe(1);
+
+ var getDropletsCall = nfRegistryApi.getDroplets.calls.first();
+ expect(getDropletsCall.args[0]).toBe('2f7f9e54-dc09-4ceb-aa58-9fe581319cdc');
+
+ var getDropletCall = nfRegistryApi.getDroplet.calls.first();
+ expect(getDropletCall.args[0]).toBe('2f7f9e54-dc09-4ceb-aa58-9fe581319cdc');
+ expect(getDropletCall.args[1]).toBe('flow');
+ expect(getDropletCall.args[2]).toBe('2e04b4fb-9513-47bb-aa74-1ae34616bfdc');
+
+ var getBucketCall = nfRegistryApi.getBucket.calls.first()
+ expect(getBucketCall.args[0]).toBe('2f7f9e54-dc09-4ceb-aa58-9fe581319cdc');
+ }));
+
+ it('should destroy the component', ngCoreTesting.fakeAsync(function () {
+ spyOn(nfRegistryApi, 'getDroplets').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of([]));
+ // 1st change detection triggers ngOnInit which makes getBuckets, getBucket, getDroplet, and getDroplets calls
+ fixture.detectChanges();
+ // wait for async getBuckets, getBucket, getDroplet, and getDroplets calls
+ ngCoreTesting.tick();
+ // 2nd change detection completes after the getBuckets, getBucket, getDroplet, and getDroplets calls
+ fixture.detectChanges();
+
+ // The function to test
+ comp.ngOnDestroy();
+
+ //assertions
+ expect(nfRegistryService.droplet.identifier).toBeUndefined();
+ expect(nfRegistryService.breadCrumbState).toBe('out');
+ }));
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.html
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.html b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.html
index d6113c0..2f0b343 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.html
+++ b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.html
@@ -16,84 +16,12 @@ limitations under the License.
-->
<div class="pad-top-sm pad-bottom-sm pad-right-xxl pad-left-xxl">
- <div *ngIf="false" class="pad-top-md pad-bottom-sm">
- <md-button-toggle-group fxLayout="row" fxLayoutAlign="space-between center"
- class="expansion-panel-filter-toggle-group" multiple>
- <md-button-toggle (change)="nfRegistryService.toggleDropletsFilter('type:asset')"
- [checked]="nfRegistryService.isDropletFilterChecked('type:asset')">
- <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
- <div class="md-display-1 pad-top-sm" fxFlex="55">
- {{nfRegistryService.getDropletTypeCount('asset')}}
- </div>
- <div class="pad-top-sm" fxFlex="45">Assets</div>
- </div>
- </md-button-toggle>
- <md-button-toggle (change)="nfRegistryService.toggleDropletsFilter('type:extension')"
- [checked]="nfRegistryService.isDropletFilterChecked('type:extension')">
- <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
- <div class="md-display-1 pad-top-sm" fxFlex="55">
- {{nfRegistryService.getDropletTypeCount('extension')}}
- </div>
- <div class="pad-top-sm" fxFlex="45">Extensions</div>
- </div>
- </md-button-toggle>
- <md-button-toggle (change)="nfRegistryService.toggleDropletsFilter('type:flow')"
- [checked]="nfRegistryService.isDropletFilterChecked('type:flow')">
- <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
- <div class="md-display-1 pad-top-sm" fxFlex="55">{{nfRegistryService.getDropletTypeCount('flow')}}
- </div>
- <div class="pad-top-sm" fxFlex="45">Flows</div>
- </div>
- </md-button-toggle>
- <md-button-toggle (change)="nfRegistryService.toggleDropletsFilter('compliant.label:Compliant')"
- [checked]="nfRegistryService.isDropletFilterChecked('compliant.label:Compliant')">
- <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
- <div class="md-display-1 pad-top-sm" fxFlex="55">
- {{nfRegistryService.getDropletCertificationCount('compliant')}}
- </div>
- <div class="pad-top-sm" fxFlex="45">Compliant</div>
- </div>
- </md-button-toggle>
- <md-button-toggle (change)="nfRegistryService.toggleDropletsFilter('fleet.label:Fleet')"
- [checked]="nfRegistryService.isDropletFilterChecked('fleet.label:Fleet')">
- <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
- <div class="md-display-1 pad-top-sm" fxFlex="55">
- {{nfRegistryService.getDropletCertificationCount('fleet')}}
- </div>
- <div class="pad-top-sm" fxFlex="45">Fleet</div>
- </div>
- </md-button-toggle>
- <md-button-toggle (change)="nfRegistryService.toggleDropletsFilter('prod.label:Production Ready')"
- [checked]="nfRegistryService.isDropletFilterChecked('prod.label:Production Ready')">
- <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
- <div class="md-display-1 pad-top-sm" fxFlex="55">
- {{nfRegistryService.getDropletCertificationCount('prod')}}
- </div>
- <div class="pad-top-sm" fxFlex="45">Production Ready</div>
- </div>
- </md-button-toggle>
- <md-button-toggle (change)="nfRegistryService.toggleDropletsFilter('secure.label:Secure')"
- [checked]="nfRegistryService.isDropletFilterChecked('secure.label:Secure')">
- <div fxFlex fxLayout="column" fxLayoutAlign="space-around stretch">
- <div class="md-display-1 pad-top-sm" fxFlex="55">
- {{nfRegistryService.getDropletCertificationCount('secure')}}
- </div>
- <div class="pad-top-sm" fxFlex="45">Secure</div>
- </div>
- </md-button-toggle>
- </md-button-toggle-group>
- <div id="nf-registry-droplet-filter-clear-grouping-button-container">
- <span *ngIf="nfRegistryService.dropletsSearchTerms.length > 0"
- (click)="nfRegistryService.dropletsSearchTerms = [];nfRegistryService.filterDroplets(nfRegistryService.activeDropletColumn.name, nfRegistryService.activeDropletColumn.sortOrder);"><i
- class="fa fa-plus-circle fa-rotate-45" aria-hidden="true"></i><span class="pad-left-sm link">Clear Grouping</span></span>
- </div>
- </div>
<div layout="row" layout-align="space-between center">
<div flex fxLayout="row" fxLayoutAlign="end center">
<td-chips [(ngModel)]="nfRegistryService.dropletsSearchTerms"
[items]="nfRegistryService.autoCompleteDroplets"
- (add)="nfRegistryService.dropletsSearchAdd($event)"
- (remove)="nfRegistryService.dropletsSearchRemove($event)" class="push-right-sm"></td-chips>
+ (add)="nfRegistryService.filterDroplets(nfRegistryService.activeDropletColumn.name, nfRegistryService.activeDropletColumn.sortOrder);"
+ (remove)="nfRegistryService.filterDroplets(nfRegistryService.activeDropletColumn.name, nfRegistryService.activeDropletColumn.sortOrder);" class="push-right-sm"></td-chips>
<span class="pad-right-sm">Sort by:</span>
<div fxLayout="row" fxLayoutAlign="end center" [mdMenuTriggerFor]="dropletGridSortMenu">
<div id="droplet-sort-by-field">{{nfRegistryService.getSortByLabel()}}</div>
@@ -102,7 +30,7 @@ limitations under the License.
</div>
<md-menu #dropletGridSortMenu="mdMenu" [overlapTrigger]="false">
<div *ngFor="let column of nfRegistryService.dropletColumns">
- <button md-menu-item *ngIf="column.sortable" (click)="nfRegistryService.sortDroplets($event, column);">
+ <button md-menu-item *ngIf="column.sortable" (click)="nfRegistryService.sortDroplets(column);">
{{nfRegistryService.generateSortMenuLabels(column)}}
</button>
</div>
@@ -112,18 +40,18 @@ limitations under the License.
<div id="nifi-registry-explorer-grid-list-viewer-droplet-container" class="pad-right-xxl pad-left-xxl"
*ngIf="nfRegistryService.filteredDroplets.length > 0">
<div *ngFor="let droplet of nfRegistryService.filteredDroplets" [@flyInOut]>
- <td-expansion-panel class="mat-elevation-z5" label={{droplet.label}} sublabel={{droplet.sublabel}}
- [disabled]="disabled">
+ <td-expansion-panel class="mat-elevation-z5" label={{droplet.name}} sublabel={{droplet.type}}
+ [disabled]="disabled" (expanded)="nfRegistryService.getDropletSnapshotMetadata(droplet)">
<ng-template td-expansion-panel-label>
<div fxLayout="column" fxLayoutAlign="space-between start">
- <span class="md-title capitalize">{{droplet.displayName}}</span>
+ <span class="md-title capitalize">{{droplet.name}}</span>
<span class="md-subhead">{{droplet.type}}</span>
</div>
</ng-template>
<ng-template td-expansion-panel-sublabel>
<div fxLayout="row" fxLayoutAlign="space-between center">
<div class="pad-right-xxl pad-left-xxl" fxLayout="column" fxLayoutAlign="space-between start">
- <span class="uppercase">Versions</span> {{droplet.versions.length}}
+ <span class="uppercase">Versions</span> {{droplet.versionCount}}
</div>
</div>
</ng-template>
@@ -135,8 +63,8 @@ limitations under the License.
</button>
<md-menu class="fds-primary-dropdown-button-menu" #primaryButtonDropdownMenu="mdMenu"
[overlapTrigger]="false">
- <button md-menu-item *ngFor="let action of droplet.actions"
- (click)="execute(action, droplet)">
+ <button md-menu-item *ngFor="let action of dropletActions"
+ (click)="nfRegistryService.executeDropletAction(action, droplet)">
<span>{{action.name}}</span>
</button>
</md-menu>
@@ -156,18 +84,18 @@ limitations under the License.
<div id="nifi-registry-explorer-grid-list-viewer-droplet-container-details-change-log"
fxFlex="75">
<td-steps mode="vertical">
- <td-step label="{{version.revision}}" sublabel="by {{version.author}}"
- *ngFor="let version of droplet.versions; let i = index"
+ <td-step label="{{snapshotMeta.version}}" sublabel="by {{snapshotMeta.author}}"
+ *ngFor="let snapshotMeta of droplet.snapshotMetadata; let i = index"
[active]="i === 0 ? true : false">
<ng-template td-step-label>
- <span>{{version.created | amTimeAgo}}</span>
+ <span>{{snapshotMeta.timestamp | amTimeAgo}}</span>
</ng-template>
<div fxLayout="column" fxLayoutAlign="space-between stretch">
<div fxLayout="row" class="md-body-2">
- {{version.comment}}
+ {{snapshotMeta.comments}}
</div>
<div fxLayout="row" class="md-caption">
- {{version.created}}
+ {{(snapshotMeta.timestamp | amFromUnix) | amDateFormat:'MMM-DD-YYYY'}} at {{(snapshotMeta.timestamp | amFromUnix) | amDateFormat:'h:mm A'}}
</div>
</div>
</td-step>
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js
index a7aa2fd..599bea3 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js
+++ b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js
@@ -15,23 +15,26 @@
* limitations under the License.
*/
var ngCore = require('@angular/core');
+var rxjs = require('rxjs/Rx');
var NfRegistryService = require('nifi-registry/services/nf-registry.service.js');
var ngRouter = require('@angular/router');
var nfRegistryAnimations = require('nifi-registry/nf-registry.animations.js');
-var fdsDialogsModule = require('@fluid-design-system/dialogs');
/**
* NfRegistryGridListViewer constructor.
*
* @param nfRegistryService The nf-registry.service module.
* @param ActivatedRoute The angular activated route module.
- * @param TdDialogService The covalent dialog service module.
* @constructor
*/
-function NfRegistryGridListViewer(nfRegistryService, ActivatedRoute, FdsDialogService) {
+function NfRegistryGridListViewer(nfRegistryService, ActivatedRoute) {
this.route = ActivatedRoute;
this.nfRegistryService = nfRegistryService;
- this.dialogService = FdsDialogService;
+ this.dropletActions = [{
+ 'name': 'Delete',
+ 'icon': 'fa fa-trash',
+ 'tooltip': 'Delete'
+ }];
};
NfRegistryGridListViewer.prototype = {
@@ -45,17 +48,16 @@ NfRegistryGridListViewer.prototype = {
this.nfRegistryService.explorerViewType = 'grid-list';
this.route.params
.switchMap(function (params) {
- return self.nfRegistryService.getRegistry(params['registryId']);
+ return new rxjs.Observable.forkJoin(self.nfRegistryService.api.getDroplets(),
+ self.nfRegistryService.api.getBuckets());
})
- .subscribe(function (registry) {
- self.nfRegistryService.registry = registry;
- self.nfRegistryService.getBuckets(self.nfRegistryService.registry.id).then(function (buckets) {
- self.nfRegistryService.buckets = buckets;
- self.nfRegistryService.getDroplets(self.nfRegistryService.registry.id, self.nfRegistryService.bucket.id, self.nfRegistryService.droplet.id).then(function (droplets) {
- self.nfRegistryService.droplets = self.nfRegistryService.filteredDroplets = droplets;
- self.nfRegistryService.filterDroplets();
- });
- })
+ .subscribe(function (response) {
+ var droplets = response[0];
+ var buckets = response[1];
+ self.nfRegistryService.buckets = buckets;
+ self.nfRegistryService.droplets = droplets;
+ self.nfRegistryService.filterDroplets();
+ self.nfRegistryService.setBreadcrumbState('in');
});
},
@@ -63,34 +65,11 @@ NfRegistryGridListViewer.prototype = {
* Destroy the component.
*/
ngOnDestroy: function () {
- this.nfRegistryService.registry = {};
+ this.nfRegistryService.explorerViewType = '';
this.nfRegistryService.buckets = [];
this.nfRegistryService.droplets = [];
this.nfRegistryService.filteredDroplets = [];
- },
-
- /**
- * Execute the given droplet action.
- *
- * @param action The action object.
- * @param droplet The droplet object the `action` will act upon.
- */
- execute: function (action, droplet) {
- var self = this;
- if (action.name.toLowerCase() === 'delete') {
- this.dialogService.openConfirm({
- title: 'Delete Data Flow',
- message: 'All versions of this data flow will be deleted.',
- cancelButton: 'Cancel',
- acceptButton: 'Delete',
- acceptButtonColor: 'fds-warn'
- }).afterClosed().subscribe(
- function (accept) {
- if (accept) {
- self.nfRegistryService.deleteDroplet(droplet.id);
- }
- });
- }
+ this.nfRegistryService.setBreadcrumbState('out');
}
};
@@ -101,6 +80,6 @@ NfRegistryGridListViewer.annotations = [
})
];
-NfRegistryGridListViewer.parameters = [NfRegistryService, ngRouter.ActivatedRoute, fdsDialogsModule.FdsDialogService];
+NfRegistryGridListViewer.parameters = [NfRegistryService, ngRouter.ActivatedRoute];
module.exports = NfRegistryGridListViewer;
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.spec.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.spec.js b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.spec.js
new file mode 100644
index 0000000..51af529
--- /dev/null
+++ b/nifi-registry-web-ui/src/main/webapp/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.spec.js
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+var NfRegistryRoutes = require('nifi-registry/nf-registry.routes.js');
+var ngCoreTesting = require('@angular/core/testing');
+var ngCommon = require('@angular/common');
+var ngRouter = require('@angular/router');
+var ngPlatformBrowser = require('@angular/platform-browser');
+var FdsDemo = require('nifi-registry/components/fluid-design-system/fds-demo.js');
+var NfRegistry = require('nifi-registry/nf-registry.js');
+var NfRegistryApi = require('nifi-registry/services/nf-registry.api.js');
+var NfRegistryService = require('nifi-registry/services/nf-registry.service.js');
+var NfPageNotFoundComponent = require('nifi-registry/components/page-not-found/nf-registry-page-not-found.js');
+var NfRegistryExplorer = require('nifi-registry/components/explorer/nf-registry-explorer.js');
+var NfRegistryAdministration = require('nifi-registry/components/administration/nf-registry-administration.js');
+var NfRegistryGeneralAdministration = require('nifi-registry/components/administration/general/nf-registry-general-administration.js');
+var NfRegistryUsersAdministration = require('nifi-registry/components/administration/users/nf-registry-users-administration.js');
+var NfRegistryAddUser = require('nifi-registry/components/administration/users/add/nf-registry-add-user.js');
+var NfRegistryUserDetails = require('nifi-registry/components/administration/users/details/nf-registry-user-details.js');
+var NfRegistryUserPermissions = require('nifi-registry/components/administration/users/permissions/nf-registry-user-permissions.js');
+var NfRegistryBucketPermissions = require('nifi-registry/components/administration/workflow/buckets/permissions/nf-registry-bucket-permissions.js');
+var NfRegistryWorkflowAdministration = require('nifi-registry/components/administration/workflow/nf-registry-workflow-administration.js');
+var NfRegistryGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js');
+var NfRegistryBucketGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js');
+var NfRegistryDropletGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js');
+var fdsCore = require('@fluid-design-system/core');
+var ngMoment = require('angular2-moment');
+var rxjs = require('rxjs/Rx');
+var ngHttp = require('@angular/http');
+
+describe('NfRegistryGridListViewer Component', function () {
+ var comp;
+ var fixture;
+ var de;
+ var el;
+ var nfRegistryService;
+ var nfRegistryApi;
+
+ beforeEach(function () {
+ ngCoreTesting.TestBed.configureTestingModule({
+ imports: [
+ ngMoment.MomentModule,
+ ngHttp.HttpModule,
+ ngHttp.JsonpModule,
+ fdsCore,
+ NfRegistryRoutes
+ ],
+ declarations: [
+ FdsDemo,
+ NfRegistry,
+ NfRegistryExplorer,
+ NfRegistryAdministration,
+ NfRegistryGeneralAdministration,
+ NfRegistryUsersAdministration,
+ NfRegistryUserDetails,
+ NfRegistryUserPermissions,
+ NfRegistryBucketPermissions,
+ NfRegistryAddUser,
+ NfRegistryWorkflowAdministration,
+ NfRegistryGridListViewer,
+ NfRegistryBucketGridListViewer,
+ NfRegistryDropletGridListViewer,
+ NfPageNotFoundComponent
+ ],
+ providers: [
+ NfRegistryApi,
+ NfRegistryService, {
+ provide: ngCommon.APP_BASE_HREF,
+ useValue: '/'
+ }, {
+ provide: ngRouter.ActivatedRoute,
+ useValue: {
+ params: rxjs.Observable.of({})
+ }
+ }
+ ]
+ });
+
+ fixture = ngCoreTesting.TestBed.createComponent(NfRegistryGridListViewer);
+
+ // test instance
+ comp = fixture.componentInstance;
+
+ // from the root injector
+ nfRegistryService = ngCoreTesting.TestBed.get(NfRegistryService);
+ nfRegistryApi = ngCoreTesting.TestBed.get(NfRegistryApi);
+
+ // because the NfRegistryGridListViewer component is a nested route component we need to set up the nfRegistryService service manually
+ nfRegistryService.perspective = 'explorer';
+
+ // Spy
+ spyOn(nfRegistryApi, 'getBuckets').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of([{
+ identifier: '2f7f9e54-dc09-4ceb-aa58-9fe581319cdc',
+ name: 'Bucket #1'
+ }]));
+ spyOn(nfRegistryService, 'filterDroplets');
+ });
+
+ it('should have a defined component', ngCoreTesting.fakeAsync(function () {
+ spyOn(nfRegistryApi, 'getDroplets').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of([{
+ "identifier": "2e04b4fb-9513-47bb-aa74-1ae34616bfdc",
+ "name": "Flow #1",
+ "description": "This is flow #1",
+ "bucketIdentifier": "2f7f9e54-dc09-4ceb-aa58-9fe581319cdc",
+ "createdTimestamp": 1505931890999,
+ "modifiedTimestamp": 1505931890999,
+ "type": "FLOW",
+ "snapshotMetadata": null,
+ "link": {
+ "params": {
+ "rel": "self"
+ },
+ "href": "flows/2e04b4fb-9513-47bb-aa74-1ae34616bfdc"
+ }
+ }]));
+ // 1st change detection triggers ngOnInit which makes getBuckets and getDroplets calls
+ fixture.detectChanges();
+ // wait for async getBuckets and getDroplets calls
+ ngCoreTesting.tick();
+ // 2nd change detection completes after the getBuckets and getDroplets calls
+ fixture.detectChanges();
+
+ //assertions
+ expect(comp).toBeDefined();
+ expect(nfRegistryService.explorerViewType).toBe('grid-list');
+ expect(nfRegistryService.breadCrumbState).toBe('in');
+ expect(nfRegistryService.buckets[0].name).toEqual('Bucket #1');
+ expect(nfRegistryService.buckets.length).toBe(1);
+ expect(nfRegistryService.droplets[0].name).toEqual('Flow #1');
+ expect(nfRegistryService.droplets.length).toBe(1);
+ expect(nfRegistryApi.getDroplets).toHaveBeenCalled();
+ expect(nfRegistryApi.getBuckets).toHaveBeenCalled();
+ expect(nfRegistryService.filterDroplets).toHaveBeenCalled();
+ }));
+
+ it('should destroy the component', ngCoreTesting.fakeAsync(function () {
+ spyOn(nfRegistryApi, 'getDroplets').and.callFake(function () {
+ }).and.returnValue(rxjs.Observable.of([]));
+ // 1st change detection triggers ngOnInit which makes getBuckets and getDroplets calls
+ fixture.detectChanges();
+ // wait for async getBuckets and getDroplets calls
+ ngCoreTesting.tick();
+ // 2nd change detection completes after the getBuckets and getDroplets calls
+ fixture.detectChanges();
+
+ // The function to test
+ comp.ngOnDestroy();
+
+ //assertions
+ expect(nfRegistryService.explorerViewType).toBe('');
+ expect(nfRegistryService.buckets.length).toBe(0);
+ expect(nfRegistryService.droplets.length).toBe(0);
+ expect(nfRegistryService.filteredDroplets.length).toBe(0);
+ expect(nfRegistryService.breadCrumbState).toBe('out');
+ }));
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/components/explorer/nf-registry-explorer.spec.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/explorer/nf-registry-explorer.spec.js b/nifi-registry-web-ui/src/main/webapp/components/explorer/nf-registry-explorer.spec.js
new file mode 100644
index 0000000..b70e34b
--- /dev/null
+++ b/nifi-registry-web-ui/src/main/webapp/components/explorer/nf-registry-explorer.spec.js
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+var NfRegistryRoutes = require('nifi-registry/nf-registry.routes.js');
+var ngCoreTesting = require('@angular/core/testing');
+var ngCommon = require('@angular/common');
+var FdsDemo = require('nifi-registry/components/fluid-design-system/fds-demo.js');
+var NfRegistry = require('nifi-registry/nf-registry.js');
+var NfRegistryApi = require('nifi-registry/services/nf-registry.api.js');
+var NfRegistryService = require('nifi-registry/services/nf-registry.service.js');
+var NfPageNotFoundComponent = require('nifi-registry/components/page-not-found/nf-registry-page-not-found.js');
+var NfRegistryExplorer = require('nifi-registry/components/explorer/nf-registry-explorer.js');
+var NfRegistryAdministration = require('nifi-registry/components/administration/nf-registry-administration.js');
+var NfRegistryGeneralAdministration = require('nifi-registry/components/administration/general/nf-registry-general-administration.js');
+var NfRegistryUsersAdministration = require('nifi-registry/components/administration/users/nf-registry-users-administration.js');
+var NfRegistryAddUser = require('nifi-registry/components/administration/users/add/nf-registry-add-user.js');
+var NfRegistryUserDetails = require('nifi-registry/components/administration/users/details/nf-registry-user-details.js');
+var NfRegistryUserPermissions = require('nifi-registry/components/administration/users/permissions/nf-registry-user-permissions.js');
+var NfRegistryBucketPermissions = require('nifi-registry/components/administration/workflow/buckets/permissions/nf-registry-bucket-permissions.js');
+var NfRegistryWorkflowAdministration = require('nifi-registry/components/administration/workflow/nf-registry-workflow-administration.js');
+var NfRegistryGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js');
+var NfRegistryBucketGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js');
+var NfRegistryDropletGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js');
+var fdsCore = require('@fluid-design-system/core');
+var ngMoment = require('angular2-moment');
+var ngHttp = require('@angular/http');
+
+describe('NfRegistryExplorer Component', function () {
+ var comp;
+ var fixture;
+ var nfRegistryService;
+
+ beforeEach(function () {
+ ngCoreTesting.TestBed.configureTestingModule({
+ imports: [
+ ngMoment.MomentModule,
+ ngHttp.HttpModule,
+ ngHttp.JsonpModule,
+ fdsCore,
+ NfRegistryRoutes
+ ],
+ declarations: [
+ FdsDemo,
+ NfRegistry,
+ NfRegistryExplorer,
+ NfRegistryAdministration,
+ NfRegistryGeneralAdministration,
+ NfRegistryUsersAdministration,
+ NfRegistryUserDetails,
+ NfRegistryUserPermissions,
+ NfRegistryBucketPermissions,
+ NfRegistryAddUser,
+ NfRegistryWorkflowAdministration,
+ NfRegistryGridListViewer,
+ NfRegistryBucketGridListViewer,
+ NfRegistryDropletGridListViewer,
+ NfPageNotFoundComponent
+ ],
+ providers: [
+ NfRegistryService,
+ NfRegistryApi,
+ {
+ provide: ngCommon.APP_BASE_HREF,
+ useValue: '/'
+ }
+ ]
+ });
+
+ fixture = ngCoreTesting.TestBed.createComponent(NfRegistryExplorer);
+
+ // test instance
+ comp = fixture.componentInstance;
+
+ // from the root injector
+ nfRegistryService = ngCoreTesting.TestBed.get(NfRegistryService);
+ });
+
+ it('should have a defined component', function () {
+ fixture.detectChanges();
+
+ //assertions
+ expect(comp).toBeDefined();
+ expect(nfRegistryService.perspective).toBe('explorer');
+ });
+
+ it('should destroy the component', function () {
+ fixture.detectChanges();
+
+ // The function to test
+ comp.ngOnDestroy();
+
+ //assertions
+ expect(nfRegistryService.perspective).toBe('');
+ });
+});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/components/fluid-design-system/fds-demo.html
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/fluid-design-system/fds-demo.html b/nifi-registry-web-ui/src/main/webapp/components/fluid-design-system/fds-demo.html
index 7e9baf7..d8f8790 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/fluid-design-system/fds-demo.html
+++ b/nifi-registry-web-ui/src/main/webapp/components/fluid-design-system/fds-demo.html
@@ -979,7 +979,7 @@ limitations under the License.
</div>
<div layout="row" layout-align="space-between center">
<div flex fxLayout="row" fxLayoutAlign="end center">
- <td-chips [(ngModel)]="dropletsSearchTerms" [items]="autoCompleteDroplets" (add)="dropletsSearchAdd($event)" (remove)="dropletsSearchRemove($event)" class="push-right-sm"></td-chips>
+ <td-chips [(ngModel)]="dropletsSearchTerms" [items]="autoCompleteDroplets" (add)="nfRegistryService.filterDroplets(nfRegistryService.activeDropletColumn.name, nfRegistryService.activeDropletColumn.sortOrder);" (remove)="nfRegistryService.filterDroplets(nfRegistryService.activeDropletColumn.name, nfRegistryService.activeDropletColumn.sortOrder);" class="push-right-sm"></td-chips>
<span class="pad-right-sm">Sort by:</span>
<button color="fds-primary" md-raised-button [mdMenuTriggerFor]="dropletGridSortMenu">
{{getSortBy()}}<i class="fa fa-caret-down" aria-hidden="true"></i>
@@ -987,7 +987,7 @@ limitations under the License.
</div>
<md-menu class="fds-primary-dropdown-button-menu" #dropletGridSortMenu="mdMenu" [overlapTrigger]="false">
<div *ngFor="let column of dropletColumns">
- <button md-menu-item *ngIf="column.sortable" (click)="sortDroplets($event, column);">{{column.label}} {{(column.sortOrder === 'ASC') ? 'DESC' : 'ASC'}}</button>
+ <button md-menu-item *ngIf="column.sortable" (click)="sortDroplets(column);">{{column.label}} {{(column.sortOrder === 'ASC') ? 'DESC' : 'ASC'}}</button>
</div>
</md-menu>
</div>
@@ -1107,7 +1107,7 @@ limitations under the License.
</div>
<div layout="row" layout-align="space-between center">
<div flex fxLayout="row" fxLayoutAlign="end center">
- <td-chips [(ngModel)]="dropletsSearchTerms" [items]="autoCompleteDroplets" (add)="dropletsSearchAdd($event)" (remove)="dropletsSearchRemove($event)" class="push-right-sm"></td-chips>
+ <td-chips [(ngModel)]="dropletsSearchTerms" [items]="autoCompleteDroplets" (add)="nfRegistryService.filterDroplets(nfRegistryService.activeDropletColumn.name, nfRegistryService.activeDropletColumn.sortOrder);" (remove)="nfRegistryService.filterDroplets(nfRegistryService.activeDropletColumn.name, nfRegistryService.activeDropletColumn.sortOrder);" class="push-right-sm"></td-chips>
<span class="pad-right-sm">Sort by:</span>
<button color="fds-primary" md-raised-button [mdMenuTriggerFor]="dropletGridSortMenu">
{ {getSortBy()} }<i class="fa fa-caret-down" aria-hidden="true"></i>
@@ -1115,7 +1115,7 @@ limitations under the License.
</div>
<md-menu class="fds-primary-dropdown-button-menu" #dropletGridSortMenu="mdMenu" [overlapTrigger]="false">
<div *ngFor="let column of dropletColumns">
- <button md-menu-item *ngIf="column.sortable" (click)="sortDroplets($event, column);">{ {column.label} } { {(column.sortOrder === 'ASC') ? 'DESC' : 'ASC'} }</button>
+ <button md-menu-item *ngIf="column.sortable" (click)="sortDroplets(column);">{ {column.label} } { {(column.sortOrder === 'ASC') ? 'DESC' : 'ASC'} }</button>
</div>
</md-menu>
</div>
@@ -1362,7 +1362,7 @@ limitations under the License.
return sortByColumnLabel;
},
- sortDroplets: function(sortEvent, column) {
+ sortDroplets: function(column) {
if (column.sortable === true) {
// toggle column sort order
var sortOrder = column.sortOrder = (column.sortOrder === 'ASC') ? 'DESC' : 'ASC';
@@ -1375,14 +1375,6 @@ limitations under the License.
}
},
- dropletsSearchRemove: function(searchTerm) {
- this.filterDroplets(this.activeColumn.name, this.activeColumn.sortOrder);
- },
-
- dropletsSearchAdd: function(searchTerm) {
- this.filterDroplets(this.activeColumn.name, this.activeColumn.sortOrder);
- },
-
toggleDropletsFilter: function(searchTerm) {
var applySearchTerm = true;
// check if the search term is already applied and remove it if true
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/components/fluid-design-system/fds-demo.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/fluid-design-system/fds-demo.js b/nifi-registry-web-ui/src/main/webapp/components/fluid-design-system/fds-demo.js
index 84d6212..ead2a57 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/fluid-design-system/fds-demo.js
+++ b/nifi-registry-web-ui/src/main/webapp/components/fluid-design-system/fds-demo.js
@@ -721,7 +721,7 @@ FdsDemo.prototype = {
return sortByColumnLabel;
},
- sortDroplets: function (sortEvent, column) {
+ sortDroplets: function (column) {
if (column.sortable === true) {
// toggle column sort order
var sortOrder = column.sortOrder = (column.sortOrder === 'ASC') ? 'DESC' : 'ASC';
@@ -736,14 +736,6 @@ FdsDemo.prototype = {
}
},
- dropletsSearchRemove: function (searchTerm) {
- this.filterDroplets(this.activeColumn.name, this.activeColumn.sortOrder);
- },
-
- dropletsSearchAdd: function (searchTerm) {
- this.filterDroplets(this.activeColumn.name, this.activeColumn.sortOrder);
- },
-
toggleDropletsFilter: function (searchTerm) {
var applySearchTerm = true;
// check if the search term is already applied and remove it if true
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/nf-registry.html
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/nf-registry.html b/nifi-registry-web-ui/src/main/webapp/nf-registry.html
index f8798dd..2bf1832 100644
--- a/nifi-registry-web-ui/src/main/webapp/nf-registry.html
+++ b/nifi-registry-web-ui/src/main/webapp/nf-registry.html
@@ -23,43 +23,43 @@ limitations under the License.
<md-toolbar id="nifi-registry-toolbar">
<img id="nifi-registry-logo" src="nifi-registry/images/registry-logo-web-app.svg">
<div fxFlex="1 1 auto" class="pad-left-xl" [@flyInOut]="nfRegistryService.breadCrumbState">
- <span routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}/{{nfRegistryService.registry.id}}">{{nfRegistryService.registry.name}}</span>
+ <span routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}">{{nfRegistryService.registry.name}}</span>
<md-menu #availableRegistriesMenu="mdMenu" [overlapTrigger]="false">
<button md-menu-item *ngFor="let registry of nfRegistryService.registries"
- routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}/{{registry.id}}">
+ routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}">
<span>{{registry.name}}</span>
</button>
</md-menu>
<span *ngIf="nfRegistryService.perspective === 'administration'"> / Administration</span>
- <span *ngIf="(nfRegistryService.perspective === 'explorer') && nfRegistryService.bucket.id"
+ <span *ngIf="(nfRegistryService.perspective === 'explorer') && nfRegistryService.bucket.identifier"
[mdMenuTriggerFor]="availableBucketsMenu"> / {{nfRegistryService.bucket.name}}<i
class="fa fa-caret-down pad-left-sm" aria-hidden="true"></i></span>
- <span *ngIf="nfRegistryService.perspective === 'explorer' && nfRegistryService.registry.id && !nfRegistryService.bucket.id"
+ <span *ngIf="nfRegistryService.perspective === 'explorer' && !nfRegistryService.bucket.identifier"
[mdMenuTriggerFor]="availableBucketsMenu"> / All<i class="fa fa-caret-down pad-left-sm"
aria-hidden="true"></i></span>
<md-menu #availableBucketsMenu="mdMenu" [overlapTrigger]="false">
<button md-menu-item
- routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}/{{nfRegistryService.registry.id}}">
+ routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}">
<span>All buckets...</span>
</button>
<button md-menu-item *ngFor="let bucket of nfRegistryService.buckets"
- routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}/{{nfRegistryService.registry.id}}/{{bucket.id}}">
+ routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}/buckets/{{bucket.identifier}}">
<span>{{bucket.name}}</span>
</button>
</md-menu>
- <span *ngIf="nfRegistryService.perspective === 'explorer' && nfRegistryService.droplet.id"
+ <span *ngIf="nfRegistryService.perspective === 'explorer' && nfRegistryService.droplet.identifier"
[mdMenuTriggerFor]="availableDropletsMenu"> / {{nfRegistryService.droplet.name}}<i
class="fa fa-caret-down pad-left-sm" aria-hidden="true"></i></span>
<span [mdMenuTriggerFor]="availableDropletsMenu"
- *ngIf="nfRegistryService.perspective === 'explorer' && nfRegistryService.bucket.id && !nfRegistryService.droplet.id"> / All<i
+ *ngIf="nfRegistryService.perspective === 'explorer' && nfRegistryService.bucket.identifier && !nfRegistryService.droplet.identifier"> / All<i
class="fa fa-caret-down pad-left-sm" aria-hidden="true"></i></span>
<md-menu #availableDropletsMenu="mdMenu" [overlapTrigger]="false">
<button md-menu-item
- routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}/{{nfRegistryService.registry.id}}/{{nfRegistryService.bucket.id}}">
+ routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}/buckets/{{nfRegistryService.bucket.identifier}}">
<span>All droplets...</span>
</button>
<button md-menu-item *ngFor="let droplet of nfRegistryService.droplets"
- routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}/{{nfRegistryService.registry.id}}/{{nfRegistryService.bucket.id}}/{{droplet.id}}">
+ routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}/{{droplet.link.href}}">
<span>{{droplet.name}}</span>
</button>
</md-menu>
@@ -72,12 +72,12 @@ limitations under the License.
</button>
<button md-ripple [@flyInOut] *ngIf="nfRegistryService.perspective === 'explorer'" md-icon-button
mdTooltip="Registry Administration"
- routerLink="/nifi-registry/administration/{{nfRegistryService.registry.id}}/general">
+ routerLink="/nifi-registry/administration/general">
<i class="fa fa-wrench" aria-hidden="true"></i>
</button>
<button md-ripple [@flyInOut] *ngIf="nfRegistryService.perspective === 'administration'" md-mini-fab
mdTooltip="Close settings and return to Explorer perspective."
- routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}/{{nfRegistryService.registry.id}}">
+ routerLink="/nifi-registry/explorer/{{(nfRegistryService.explorerViewType) ? nfRegistryService.explorerViewType : 'grid-list'}}">
<md-icon color="primary">close</md-icon>
</button>
</md-toolbar>
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/nf-registry.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/nf-registry.js b/nifi-registry-web-ui/src/main/webapp/nf-registry.js
index 4c9263b..d207027 100644
--- a/nifi-registry-web-ui/src/main/webapp/nf-registry.js
+++ b/nifi-registry-web-ui/src/main/webapp/nf-registry.js
@@ -28,11 +28,7 @@ NfRegistry.prototype = {
constructor: NfRegistry,
ngOnInit: function () {
- var self = this;
- this.nfRegistryService.sidenav = this.sidenav;
- this.nfRegistryService.getRegistries().then(function (registries) {
- self.nfRegistryService.registries = registries;
- });
+ this.nfRegistryService.sidenav = this.sidenav; //ngCore.ViewChild
},
ngAfterViewChecked: function () {
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/nf-registry.module.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/nf-registry.module.js b/nifi-registry-web-ui/src/main/webapp/nf-registry.module.js
index 9e83795..4cecd72 100644
--- a/nifi-registry-web-ui/src/main/webapp/nf-registry.module.js
+++ b/nifi-registry-web-ui/src/main/webapp/nf-registry.module.js
@@ -20,10 +20,10 @@ var ngMoment = require('angular2-moment');
var NfRegistryRoutes = require('nifi-registry/nf-registry.routes.js');
var FdsDemo = require('nifi-registry/components/fluid-design-system/fds-demo.js');
var NfRegistry = require('nifi-registry/nf-registry.js');
+var NfRegistryApi = require('nifi-registry/services/nf-registry.api.js');
var NfRegistryService = require('nifi-registry/services/nf-registry.service.js');
var NfPageNotFoundComponent = require('nifi-registry/components/page-not-found/nf-registry-page-not-found.js');
var NfRegistryExplorer = require('nifi-registry/components/explorer/nf-registry-explorer.js');
-var NfRegistryExplorerGridListViewer = require('nifi-registry/components/explorer/grid-list/nf-registry-explorer-grid-list-viewer.js');
var NfRegistryAdministration = require('nifi-registry/components/administration/nf-registry-administration.js');
var NfRegistryGeneralAdministration = require('nifi-registry/components/administration/general/nf-registry-general-administration.js');
var NfRegistryUsersAdministration = require('nifi-registry/components/administration/users/nf-registry-users-administration.js');
@@ -33,9 +33,10 @@ var NfRegistryUserPermissions = require('nifi-registry/components/administration
var NfRegistryBucketPermissions = require('nifi-registry/components/administration/workflow/buckets/permissions/nf-registry-bucket-permissions.js');
var NfRegistryWorkflowAdministration = require('nifi-registry/components/administration/workflow/nf-registry-workflow-administration.js');
var NfRegistryGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js');
-var NfRegistryBucketGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/bucket/nf-registry-bucket-grid-list-viewer.js');
-var NfRegistryDropletGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/bucket/droplet/nf-registry-droplet-grid-list-viewer.js');
+var NfRegistryBucketGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js');
+var NfRegistryDropletGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js');
var fdsCore = require('@fluid-design-system/core');
+var ngHttp = require('@angular/http');
function NfRegistryModule() {
};
@@ -49,10 +50,29 @@ NfRegistryModule.annotations = [
imports: [
ngMoment.MomentModule,
fdsCore,
+ ngHttp.HttpModule,
+ ngHttp.JsonpModule,
NfRegistryRoutes
],
- declarations: [FdsDemo, NfRegistry, NfRegistryExplorer, NfRegistryExplorerGridListViewer, NfRegistryAdministration, NfRegistryGeneralAdministration, NfRegistryUsersAdministration, NfRegistryUserDetails, NfRegistryUserPermissions, NfRegistryBucketPermissions, NfRegistryAddUser, NfRegistryWorkflowAdministration, NfRegistryGridListViewer, NfRegistryBucketGridListViewer, NfRegistryDropletGridListViewer, NfPageNotFoundComponent],
- providers: [NfRegistryService],
+ declarations: [
+ FdsDemo,
+ NfRegistry,
+ NfRegistryExplorer,
+ NfRegistryAdministration,
+ NfRegistryGeneralAdministration,
+ NfRegistryUsersAdministration,
+ NfRegistryUserDetails,
+ NfRegistryUserPermissions,
+ NfRegistryBucketPermissions,
+ NfRegistryAddUser,
+ NfRegistryWorkflowAdministration,
+ NfRegistryGridListViewer,
+ NfRegistryBucketGridListViewer,
+ NfRegistryDropletGridListViewer,
+ NfPageNotFoundComponent],
+ providers: [
+ NfRegistryService,
+ NfRegistryApi],
bootstrap: [NfRegistry]
})
];
http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/7b707a05/nifi-registry-web-ui/src/main/webapp/nf-registry.routes.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/nf-registry.routes.js b/nifi-registry-web-ui/src/main/webapp/nf-registry.routes.js
index 46bcbec..4c95e1f 100644
--- a/nifi-registry-web-ui/src/main/webapp/nf-registry.routes.js
+++ b/nifi-registry-web-ui/src/main/webapp/nf-registry.routes.js
@@ -19,7 +19,6 @@ var ngRouter = require('@angular/router');
var FdsDemo = require('nifi-registry/components/fluid-design-system/fds-demo.js');
var NfPageNotFoundComponent = require('nifi-registry/components/page-not-found/nf-registry-page-not-found.js');
var NfRegistryExplorer = require('nifi-registry/components/explorer/nf-registry-explorer.js');
-var NfRegistryExplorerGridListViewer = require('nifi-registry/components/explorer/grid-list/nf-registry-explorer-grid-list-viewer.js');
var NfRegistryAdministration = require('nifi-registry/components/administration/nf-registry-administration.js');
var NfRegistryGeneralAdministration = require('nifi-registry/components/administration/general/nf-registry-general-administration.js');
var NfRegistryUsersAdministration = require('nifi-registry/components/administration/users/nf-registry-users-administration.js');
@@ -29,34 +28,31 @@ var NfRegistryUserPermissions = require('nifi-registry/components/administration
var NfRegistryBucketPermissions = require('nifi-registry/components/administration/workflow/buckets/permissions/nf-registry-bucket-permissions.js');
var NfRegistryWorkflowAdministration = require('nifi-registry/components/administration/workflow/nf-registry-workflow-administration.js');
var NfRegistryGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js');
-var NfRegistryBucketGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/bucket/nf-registry-bucket-grid-list-viewer.js');
-var NfRegistryDropletGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/bucket/droplet/nf-registry-droplet-grid-list-viewer.js');
+var NfRegistryBucketGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js');
+var NfRegistryDropletGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js');
var NfRegistryRoutes = new ngRouter.RouterModule.forRoot([{
path: 'nifi-registry/explorer',
component: NfRegistryExplorer,
- children: [{
- path: 'grid-list',
- component: NfRegistryExplorerGridListViewer,
- children: [{
- path: ':registryId',
- component: NfRegistryGridListViewer,
- children: [{
- path: ':bucketId',
- component: NfRegistryBucketGridListViewer,
- children: [{
- path: ':dropletId',
- component: NfRegistryDropletGridListViewer
- }]
- }]
- }]
- }]
+ children: [
+ {
+ path: 'grid-list',
+ component: NfRegistryGridListViewer
+ }, {
+ path: 'grid-list/buckets/:bucketId',
+ component: NfRegistryBucketGridListViewer
+ },
+ {
+ path: 'grid-list/buckets/:bucketId/:dropletType/:dropletId',
+ component: NfRegistryDropletGridListViewer
+ }
+ ]
// canActivate: [AuthGuard] //TODO: https://angular.io/api/router/CanActivate https://scotch.io/tutorials/routing-angular-2-single-page-apps-with-the-component-router
}, {
path: 'nifi-registry/fluid-design-system',
component: FdsDemo
}, {
- path: 'nifi-registry/administration/:registryId',
+ path: 'nifi-registry/administration',
component: NfRegistryAdministration,
children: [{
path: '',
@@ -73,12 +69,16 @@ var NfRegistryRoutes = new ngRouter.RouterModule.forRoot([{
component: NfRegistryWorkflowAdministration
}]
}, {
+ path: 'nifi-registry/explorer/grid-list/buckets',
+ redirectTo: '/nifi-registry/explorer/grid-list',
+ pathMatch: 'full'
+}, {
path: 'nifi-registry',
- redirectTo: '/nifi-registry/explorer/grid-list/23f6cc59-0156-1000-06b4-2b0810089090',
+ redirectTo: '/nifi-registry/explorer/grid-list',
pathMatch: 'full'
}, {
path: '',
- redirectTo: '/nifi-registry/explorer/grid-list/23f6cc59-0156-1000-06b4-2b0810089090',
+ redirectTo: '/nifi-registry/explorer/grid-list',
pathMatch: 'full'
}, {
path: '**',