This is an automated email from the ASF dual-hosted git repository.

zehnder pushed a commit to branch STREAMPIPES-380
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git


The following commit(s) were added to refs/heads/STREAMPIPES-380 by this push:
     new 1b377db  [STREAMPIPES-380] Ensure that event schema contains a 
timestamp
1b377db is described below

commit 1b377db7c240d05ea4677b792a60f85049c8ce12
Author: Philipp Zehnder <[email protected]>
AuthorDate: Wed Jun 23 13:49:56 2021 +0200

    [STREAMPIPES-380] Ensure that event schema contains a timestamp
---
 .../event-schema/event-schema.component.html       |  9 +++--
 .../event-schema/event-schema.component.ts         | 42 ++++++++++++++--------
 2 files changed, 35 insertions(+), 16 deletions(-)

diff --git 
a/ui/src/app/connect/components/schema-editor/event-schema/event-schema.component.html
 
b/ui/src/app/connect/components/schema-editor/event-schema/event-schema.component.html
index aa639a1..378c4ed 100644
--- 
a/ui/src/app/connect/components/schema-editor/event-schema/event-schema.component.html
+++ 
b/ui/src/app/connect/components/schema-editor/event-schema/event-schema.component.html
@@ -64,7 +64,12 @@
 <div fxLayoutAlign="end">
     <button class="mat-basic" mat-raised-button 
(click)="removeSelection()">Cancel</button>
     <button class="mat-basic stepper-button" mat-raised-button 
(click)="goBack()">Back</button>
-    <button class="stepper-button" id="event-schema-next-button"
-            (click)="clickNext()" data-cy="sp-event-schema-next-button" 
color="primary" mat-raised-button>Next
+    <button class="stepper-button"
+            id="event-schema-next-button"
+            data-cy="sp-event-schema-next-button"
+            color="primary" mat-raised-button
+            (click)="clickNext()"
+            [disabled]="!validEventSchema">
+        Next
     </button>
 </div>
diff --git 
a/ui/src/app/connect/components/schema-editor/event-schema/event-schema.component.ts
 
b/ui/src/app/connect/components/schema-editor/event-schema/event-schema.component.ts
index df4fe7e..18a8f9d 100644
--- 
a/ui/src/app/connect/components/schema-editor/event-schema/event-schema.component.ts
+++ 
b/ui/src/app/connect/components/schema-editor/event-schema/event-schema.component.ts
@@ -79,9 +79,9 @@ export class EventSchemaComponent implements OnChanges {
   isLoading = false;
   isError = false;
   isPreviewEnabled = false;
-  showErrorMessage = false;
   errorMessages: Notification[];
   nodes: EventProperty[] = new Array<EventProperty>();
+  validEventSchema = false;
   options: ITreeOptions = {
     childrenField: 'eventProperties',
     allowDrag: () => {
@@ -102,22 +102,24 @@ export class EventSchemaComponent implements OnChanges {
     this.isLoading = true;
     this.isError = false;
     
this.restService.getGuessSchema(this.adapterDescription).subscribe(guessSchema 
=> {
-      this.eventSchema = guessSchema.eventSchema;
-      this.eventSchema.eventProperties.sort((a, b) => {
-        return a.runtimeName < b.runtimeName ? -1 : 1;
-      });
-      this.eventSchemaChange.emit(this.eventSchema);
-      this.schemaGuess = guessSchema;
+        this.eventSchema = guessSchema.eventSchema;
+        this.eventSchema.eventProperties.sort((a, b) => {
+          return a.runtimeName < b.runtimeName ? -1 : 1;
+        });
+        this.eventSchemaChange.emit(this.eventSchema);
+        this.schemaGuess = guessSchema;
 
-      this.oldEventSchema = EventSchema.fromData(this.eventSchema, new 
EventSchema());
-      this.oldEventSchemaChange.emit(this.oldEventSchema);
+        this.validEventSchema = this.checkIfValid(this.eventSchema);
 
-      this.refreshTree();
+        this.oldEventSchema = EventSchema.fromData(this.eventSchema, new 
EventSchema());
+        this.oldEventSchemaChange.emit(this.oldEventSchema);
 
-      this.isEditable = true;
-      this.isEditableChange.emit(true);
-      this.isLoading = false;
-    },
+        this.refreshTree();
+
+        this.isEditable = true;
+        this.isEditableChange.emit(true);
+        this.isLoading = false;
+      },
       errorMessage => {
         this.errorMessages = errorMessage.error.notifications;
         this.isError = true;
@@ -130,6 +132,7 @@ export class EventSchemaComponent implements OnChanges {
   private refreshTree(): void {
     this.nodes = new Array<EventProperty>();
     this.nodes.push(this.eventSchema as unknown as EventProperty);
+    this.validEventSchema = this.checkIfValid(this.eventSchema);
     // this.tree.treeModel.update();
   }
 
@@ -213,4 +216,15 @@ export class EventSchemaComponent implements OnChanges {
   public goBack() {
     this.goBackEmitter.emit();
   }
+
+  private checkIfValid(eventSchema: EventSchema): boolean {
+    let hasTimestamp = false;
+    eventSchema.eventProperties.forEach(p => {
+      if (p.domainProperties.indexOf('http://schema.org/DateTime') >  -1) {
+        hasTimestamp = true;
+      }
+    });
+
+    return hasTimestamp;
+  }
 }

Reply via email to