add importTab component in package creation 06/100006/2
authorshaaban Altanany <shaaban.eltanany.ext@orange.com>
Sun, 5 Jan 2020 10:03:05 +0000 (12:03 +0200)
committershaaban Altanany <shaaban.eltanany.ext@orange.com>
Sun, 5 Jan 2020 12:30:43 +0000 (14:30 +0200)
Issue-ID: CCSDK-2016

Signed-off-by: shaaban Altanany <shaaban.eltanany.ext@orange.com>
Change-Id: I828f9891863224cd3c70dbcaf1149efdff394c6e

cds-ui/designer-client/src/app/app.module.ts
cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.css [new file with mode: 0644]
cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.html [new file with mode: 0644]
cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.spec.ts [new file with mode: 0644]
cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts [new file with mode: 0644]
cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/mapping-models/CBAPacakge.model.ts
cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.html
cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.component.ts
cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/package-creation.store.ts
cds-ui/designer-client/src/app/modules/feature-modules/packages/packages.module.ts

index 20b9b4d..9817edf 100644 (file)
@@ -33,6 +33,7 @@ import {HttpClientModule} from '@angular/common/http';
 import {PackagesModule} from './modules/feature-modules/packages/packages.module';
 import { SidebarModule } from 'ng-sidebar';
 import {SharedModulesModule} from './modules/shared-modules/shared-modules.module';
+import { NgxFileDropModule } from 'ngx-file-drop';
 
 @NgModule({
     declarations: [
@@ -48,6 +49,7 @@ import {SharedModulesModule} from './modules/shared-modules/shared-modules.modul
         HttpClientModule,
         PackagesModule,
         SharedModulesModule,
+        NgxFileDropModule,
     ],
 
     providers: [ApiService],
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.css b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.css
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.html
new file mode 100644 (file)
index 0000000..fc1015c
--- /dev/null
@@ -0,0 +1,23 @@
+<div class="center">
+    <ngx-file-drop dropZoneLabel="Drop files here" (onFileDrop)="dropped($event)"
+                   (onFileOver)="fileOver($event)" (onFileLeave)="fileLeave($event)">
+        gi<ng-template ngx-file-drop-content-tmp let-openFileSelector="openFileSelector">
+            Optional custom content that replaces the the entire default content.
+            <button type="button" (click)="openFileSelector()">Browse Files</button>
+        </ng-template>
+    </ngx-file-drop>
+    <div class="upload-table">
+        <table class="table">
+            <thead>
+            <tr>
+                <th>Name</th>
+            </tr>
+            </thead>
+            <tbody class="upload-name-style">
+            <tr *ngFor="let item of files; let i=index">
+                <td><strong>{{ item.relativePath }}</strong></td>
+            </tr>
+            </tbody>
+        </table>
+    </div>
+</div>
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.spec.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.spec.ts
new file mode 100644 (file)
index 0000000..a51a83a
--- /dev/null
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { ImportsTabComponent } from './imports-tab.component';
+
+describe('ImportsTabComponent', () => {
+  let component: ImportsTabComponent;
+  let fixture: ComponentFixture<ImportsTabComponent>;
+
+  beforeEach(async(() => {
+    TestBed.configureTestingModule({
+      declarations: [ ImportsTabComponent ]
+    })
+    .compileComponents();
+  }));
+
+  beforeEach(() => {
+    fixture = TestBed.createComponent(ImportsTabComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts
new file mode 100644 (file)
index 0000000..8aa9d5e
--- /dev/null
@@ -0,0 +1,46 @@
+import {Component, OnInit} from '@angular/core';
+import {NgxFileDropEntry, FileSystemFileEntry, FileSystemDirectoryEntry} from 'ngx-file-drop';
+import {PackageCreationStore} from '../package-creation.store';
+
+
+@Component({
+    selector: 'app-imports-tab',
+    templateUrl: './imports-tab.component.html',
+    styleUrls: ['./imports-tab.component.css']
+})
+export class ImportsTabComponent {
+    constructor(private packageCreationStore: PackageCreationStore) {
+    }
+
+    public files: NgxFileDropEntry[] = [];
+
+    public dropped(files: NgxFileDropEntry[]) {
+        this.files = files;
+        for (const droppedFile of files) {
+
+            // Is it a file?
+            if (droppedFile.fileEntry.isFile) {
+                const fileEntry = droppedFile.fileEntry as FileSystemFileEntry;
+                fileEntry.file((file: File) => {
+                    console.log(droppedFile.relativePath, file);
+                    this.packageCreationStore.addDefinition(droppedFile.relativePath, '');
+
+                });
+            } else {
+                // It was a directory (empty directories are added, otherwise only files)
+                const fileEntry = droppedFile.fileEntry as FileSystemDirectoryEntry;
+                console.log(droppedFile.relativePath, fileEntry);
+                this.packageCreationStore.addDefinition(droppedFile.relativePath, '');
+
+            }
+        }
+    }
+
+    public fileOver(event) {
+        console.log(event);
+    }
+
+    public fileLeave(event) {
+        console.log(event);
+    }
+}
index f92d58f..7b6743f 100644 (file)
@@ -1,13 +1,22 @@
 import {Metadata} from './definitions/VlbDefinition';
 
-class Definition {
+export class Definition {
+    public files: Map<string, string> = new Map<string, string>();
 
+    constructor(files: Map<string, string>) {
+        this.files = files;
+    }
 }
 
-export class CBAPacakge {
+export class CBAPackage {
     public metaData: Metadata;
     public definitions: Definition;
 
+    constructor() {
+        this.definitions = new Definition(new Map<string, string>());
+        this.metaData = new Metadata();
+    }
+
 }
 
 
index 6ba91d7..440f2e2 100644 (file)
@@ -160,8 +160,8 @@ export class PackageCreationComponent implements OnInit {
 
 
     searchPackages($event: Event) {
-        const searchQuery = event.target.value;
+       /* const searchQuery = event.target.value;
         searchQuery = searchQuery.trim();
-        this.packagesStore.search(searchQuery);
+        this.packagesStore.search(searchQuery);*/
     }
 }
index 9a7484c..214b516 100644 (file)
@@ -21,23 +21,20 @@ limitations under the License.
 
 import {Injectable} from '@angular/core';
 
-import {Observable} from 'rxjs';
-import {ApiService} from '../../../../common/core/services/api.service';
-import {BlueprintURLs} from '../../../../common/constants/app-constants';
 import {Store} from '../../../../common/core/stores/Store';
-import {PackagesDashboardState} from '../model/packages-dashboard.state';
-import {PackagesApiService} from '../packages-api.service';
-import {CBAPacakge} from './mapping-models/CBAPacakge.model';
+
+import {CBAPackage, Definition} from './mapping-models/CBAPacakge.model';
 import {Metadata} from './mapping-models/definitions/VlbDefinition';
-import {BluePrintPage} from '../model/BluePrint.model';
+import {PackageCreationService} from './package-creation.service';
+
 
 @Injectable({
     providedIn: 'root'
 })
-export class PackageCreationService extends Store<CBAPacakge> {
+export class PackageCreationStore extends Store<CBAPackage> {
 
     constructor(private packageCreationService: PackageCreationService) {
-        super(new CBAPacakge());
+        super(new CBAPackage());
     }
 
     changeMetaData(metaDataObject: Metadata) {
@@ -47,4 +44,12 @@ export class PackageCreationService extends Store<CBAPacakge> {
             metaData: metaDataObject
         });
     }
+
+    addDefinition(name: string, content: string) {
+
+        this.setState({
+            ...this.state,
+            definitions: new Definition(this.state.definitions.files.set(name, content))
+        });
+    }
 }
index ac251ff..3bd2019 100644 (file)
@@ -18,7 +18,8 @@ import {FunctionsComponent} from './designer/functions/functions.component';
 import {ActionsComponent} from './designer/actions/actions.component';
 import {PackageCreationComponent} from './package-creation/package-creation.component';
 import {FormsModule} from '@angular/forms';
-
+import { ImportsTabComponent } from './package-creation/imports-tab/imports-tab.component';
+import { NgxFileDropModule } from 'ngx-file-drop';
 
 @NgModule({
     declarations: [PackagesDashboardComponent,
@@ -33,6 +34,7 @@ import {FormsModule} from '@angular/forms';
         FunctionsComponent,
         ActionsComponent,
         PackageCreationComponent,
+        ImportsTabComponent,
     ],
     imports: [
         CommonModule,
@@ -41,6 +43,7 @@ import {FormsModule} from '@angular/forms';
         SharedModulesModule,
         SidebarModule.forRoot(),
         FormsModule,
+        NgxFileDropModule,
     ],
     providers: [ApiService, JsonPipe],
     bootstrap: []