You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ri...@apache.org on 2020/02/05 18:31:57 UTC
[incubator-streampipes] 02/02: Add serialization/deserialization
support for new dashboard
This is an automated email from the ASF dual-hosted git repository.
riemer pushed a commit to branch new_dashboard
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git
commit 7a48b9b134d13a7d1fb83a9a7bd2c02c069cee6a
Author: Dominik Riemer <ri...@fzi.de>
AuthorDate: Wed Feb 5 19:30:10 2020 +0100
Add serialization/deserialization support for new dashboard
---
streampipes-backend/development/env | 1 +
.../{DashboardModel.java => DashboardItem.java} | 12 +----------
.../model/dashboard/DashboardModel.java | 6 +++++-
.../model/dashboard/DashboardWidgetDataConfig.java | 4 ++++
.../rest/impl/dashboard/DashboardWidget.java | 2 +-
.../serializers/jsonld/JsonLdTransformer.java | 4 +++-
.../apache/streampipes/vocabulary/StreamPipes.java | 3 ++-
ui/src/app/connect/model/FreeTextStaticProperty.ts | 3 +--
ui/src/app/connect/model/MappingPropertyUnary.ts | 3 +--
ui/src/app/connect/model/StaticProperty.ts | 6 ++----
.../app/connect/model/UnnamedStreamPipesEntity.ts | 23 ++++++++++++++++++++++
.../static-property-util.service.ts | 10 ++++++----
ui/src/app/core-model/dashboard/DashboardWidget.ts | 11 ++++-------
.../dashboard/DashboardWidgetDataConfig.ts | 9 ++++-----
.../dashboard/DashboardWidgetSettings.ts | 10 ++++------
.../components/panel/dashboard-panel.component.ts | 4 ++--
.../widget/dashboard-widget.component.html | 5 ++++-
.../widget/dashboard-widget.component.ts | 18 ++++++++++++-----
.../widgets/number/number-config.component.ts | 4 ++--
.../widgets/number/number-viz.component.html | 0
ui/src/app/dashboard-v2/dashboard.component.ts | 2 +-
ui/src/app/dashboard-v2/dashboard.module.ts | 2 --
.../add-visualization-dialog.component.html | 6 +++---
.../dialogs/add-visualization-dialog.component.ts | 13 ++++--------
ui/src/app/dashboard-v2/models/dashboard.model.ts | 14 ++-----------
.../dashboard-v2/models/widget-settings.model.ts | 10 ----------
.../dashboard-v2/registry/widget-config-builder.ts | 15 +++++++-------
.../app/dashboard-v2/registry/widget-registry.ts | 6 +++---
ui/src/app/dashboard-v2/sdk/ep-requirements.ts | 2 +-
.../sdk/schema-requirements-builder.ts | 3 ++-
.../app/dashboard-v2/services/dashboard.service.ts | 16 +++++++++++----
ui/src/app/platform-services/tsonld/tsonld.js | 10 ----------
ui/src/assets/dashboards.json | 2 +-
33 files changed, 120 insertions(+), 119 deletions(-)
diff --git a/streampipes-backend/development/env b/streampipes-backend/development/env
index 1a45d33..6cf517d 100644
--- a/streampipes-backend/development/env
+++ b/streampipes-backend/development/env
@@ -19,3 +19,4 @@ SP_KAFKA_REST_PORT=8073
SP_BACKEND_HOST=localhost
SP_INFLUX_HOST=localhost
SP_INFLUX_PORT=8086
+SP_JMS_HOST=localhost
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardModel.java b/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardItem.java
similarity index 75%
copy from streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardModel.java
copy to streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardItem.java
index 3991dac..706f1dc 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardModel.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardItem.java
@@ -15,17 +15,7 @@
* limitations under the License.
*
*/
-
package org.apache.streampipes.model.dashboard;
-import org.apache.streampipes.vocabulary.StreamPipes;
-import org.streampipes.empire.annotations.RdfsClass;
-
-import javax.persistence.Entity;
-import javax.persistence.MappedSuperclass;
-
-@RdfsClass(StreamPipes.DASHBOARD_MODEL)
-@MappedSuperclass
-@Entity
-public class DashboardModel {
+public class DashboardItem {
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardModel.java b/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardModel.java
index 3991dac..4a5a138 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardModel.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardModel.java
@@ -27,5 +27,9 @@ import javax.persistence.MappedSuperclass;
@RdfsClass(StreamPipes.DASHBOARD_MODEL)
@MappedSuperclass
@Entity
-public class DashboardModel {
+public class DashboardModel extends DashboardEntity {
+
+ public DashboardModel() {
+
+ }
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardWidgetDataConfig.java b/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardWidgetDataConfig.java
index 9f18dc1..62ab64f 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardWidgetDataConfig.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardWidgetDataConfig.java
@@ -22,11 +22,15 @@ import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
import org.apache.streampipes.model.schema.EventSchema;
import org.apache.streampipes.vocabulary.StreamPipes;
import org.streampipes.empire.annotations.RdfProperty;
+import org.streampipes.empire.annotations.RdfsClass;
import javax.persistence.CascadeType;
+import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToOne;
+@RdfsClass(StreamPipes.DASHBOARD_WIDGET_DATA_CONFIG)
+@Entity
public class DashboardWidgetDataConfig extends UnnamedStreamPipesEntity {
@RdfProperty(StreamPipes.HAS_VISUALIZATION_NAME)
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/DashboardWidget.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/DashboardWidget.java
index ed75ff4..b919e07 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/DashboardWidget.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/dashboard/DashboardWidget.java
@@ -49,7 +49,7 @@ public class DashboardWidget extends AbstractRestInterface implements IDashboard
@GET
@JsonLdSerialized
- @Produces(MediaType.APPLICATION_JSON)
+ @Produces(SpMediaType.JSONLD)
@Path("/{widgetId}")
@Override
public Response getDashboardWidget(@PathParam("widgetId") String widgetId) {
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/JsonLdTransformer.java b/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/JsonLdTransformer.java
index 4695f4a..ee40558 100644
--- a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/JsonLdTransformer.java
+++ b/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/JsonLdTransformer.java
@@ -67,7 +67,9 @@ public class JsonLdTransformer implements RdfTransformer {
StreamPipes.ADAPTER_DESCRIPTION_LIST,
StreamPipes.RUNTIME_OPTIONS_REQUEST,
StreamPipes.RUNTIME_OPTIONS_RESPONSE,
- StreamPipes.CONNECT_WORKER_CONTAINER
+ StreamPipes.CONNECT_WORKER_CONTAINER,
+ StreamPipes.DASHBOARD_WIDGET_MODEL,
+ StreamPipes.DASHBOARD_MODEL
);
diff --git a/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/StreamPipes.java b/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/StreamPipes.java
index d8b5da5..70dac11 100644
--- a/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/StreamPipes.java
+++ b/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/StreamPipes.java
@@ -372,5 +372,6 @@ public class StreamPipes {
public static final String VISUALIZABLE_PIPELINE = NS + "VisualizablePipeline" ;
public static final String ENTITY_CONTAINER = NS + "EntityContainer";
public static final String CONTAINS_ELEMENTS = NS + "containsElement";
- public static final String HAS_DASHBOARD_WIDGET_ID = "hasDashboardWidgetId";
+ public static final String HAS_DASHBOARD_WIDGET_ID = NS + "hasDashboardWidgetId";
+ public static final String DASHBOARD_WIDGET_DATA_CONFIG = NS + "DashboardWidgetDataConfig" ;
}
diff --git a/ui/src/app/connect/model/FreeTextStaticProperty.ts b/ui/src/app/connect/model/FreeTextStaticProperty.ts
index bf4a3db..6ac1a48 100644
--- a/ui/src/app/connect/model/FreeTextStaticProperty.ts
+++ b/ui/src/app/connect/model/FreeTextStaticProperty.ts
@@ -33,9 +33,8 @@ export class FreeTextStaticProperty extends StaticProperty {
//TODO find better solution
public render: boolean;
- constructor(id: string) {
+ constructor() {
super();
- this.id = id;
this.render = true;
}
diff --git a/ui/src/app/connect/model/MappingPropertyUnary.ts b/ui/src/app/connect/model/MappingPropertyUnary.ts
index cd831b6..1199552 100644
--- a/ui/src/app/connect/model/MappingPropertyUnary.ts
+++ b/ui/src/app/connect/model/MappingPropertyUnary.ts
@@ -36,9 +36,8 @@ export class MappingPropertyUnary extends StaticProperty {
public selectedProperty: string;
- constructor(id: string) {
+ constructor() {
super();
- this.id = id;
}
}
diff --git a/ui/src/app/connect/model/StaticProperty.ts b/ui/src/app/connect/model/StaticProperty.ts
index 4806f43..daa85de 100644
--- a/ui/src/app/connect/model/StaticProperty.ts
+++ b/ui/src/app/connect/model/StaticProperty.ts
@@ -19,14 +19,12 @@
import {RdfId} from '../../platform-services/tsonld/RdfId';
import {RdfProperty} from '../../platform-services/tsonld/RdfsProperty';
import {RdfsClass} from '../../platform-services/tsonld/RdfsClass';
+import {UnnamedStreamPipesEntity} from "./UnnamedStreamPipesEntity";
@RdfsClass('sp:StaticProperty')
-export class StaticProperty {
+export class StaticProperty extends UnnamedStreamPipesEntity {
public isValid = false;
- @RdfId
- public id: string;
-
@RdfProperty('sp:elementName')
public elementName: string;
diff --git a/ui/src/app/connect/model/UnnamedStreamPipesEntity.ts b/ui/src/app/connect/model/UnnamedStreamPipesEntity.ts
new file mode 100644
index 0000000..cfdfa40
--- /dev/null
+++ b/ui/src/app/connect/model/UnnamedStreamPipesEntity.ts
@@ -0,0 +1,23 @@
+import {RdfsClass} from "../../platform-services/tsonld/RdfsClass";
+import {RdfId} from "../../platform-services/tsonld/RdfId";
+
+@RdfsClass('sp:UnnamedStreamPipesEntity')
+export class UnnamedStreamPipesEntity {
+
+ private prefix = "urn:streampipes.org:spi:";
+ private chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ @RdfId
+ public id: string;
+
+ constructor() {
+ this.id = this.prefix + this.randomString(6);
+ }
+
+ randomString(length) {
+ let result = '';
+ for (let i = length; i > 0; --i) result += this.chars[Math.floor(Math.random() * this.chars.length)];
+ return result;
+ }
+
+}
\ No newline at end of file
diff --git a/ui/src/app/connect/static-properties/static-property-util.service.ts b/ui/src/app/connect/static-properties/static-property-util.service.ts
index 0d09746..69d6f62 100644
--- a/ui/src/app/connect/static-properties/static-property-util.service.ts
+++ b/ui/src/app/connect/static-properties/static-property-util.service.ts
@@ -43,7 +43,8 @@ export class StaticPropertyUtilService{
let id = 'urn:streampipes.org:spi::' + this.generateID(6);
if (val instanceof FreeTextStaticProperty) {
- clone = new FreeTextStaticProperty(id);
+ clone = new FreeTextStaticProperty();
+ clone.id = id;
clone.value = val.value;
clone.requiredDomainProperty = val.requiredDomainProperty;
}
@@ -53,18 +54,19 @@ export class StaticPropertyUtilService{
clone.locationPath = val.locationPath;
}
else if (val instanceof MappingPropertyUnary) {
- clone = new MappingPropertyUnary(id);
+ clone = new MappingPropertyUnary();
+ clone.id = id;
clone.requirementSelector = val.requirementSelector;
clone.mapsFromOptions = val.mapsFromOptions;
clone.propertyScope = val.propertyScope;
- clone.selectedProperties = val.selectedProperties;
+ clone.selectedProperty = val.selectedProperty;
}
else if (val instanceof MappingPropertyNary) {
clone = new MappingPropertyNary(id);
clone.requirementSelector = val.requirementSelector;
clone.mapsFromOptions = val.mapsFromOptions;
clone.propertyScope = val.propertyScope;
- clone.selectedProperty = val.selectedProperty;
+ clone.selectedProperties = val.selectedProperties;
}
else if (val instanceof SecretStaticProperty) {
clone = new SecretStaticProperty(id);
diff --git a/ui/src/app/core-model/dashboard/DashboardWidget.ts b/ui/src/app/core-model/dashboard/DashboardWidget.ts
index 97c303b..640b994 100644
--- a/ui/src/app/core-model/dashboard/DashboardWidget.ts
+++ b/ui/src/app/core-model/dashboard/DashboardWidget.ts
@@ -5,12 +5,10 @@ import {EventSchema} from "../../connect/schema-editor/model/EventSchema";
import {DashboardWidgetSettings} from "./DashboardWidgetSettings";
import {DashboardWidgetDataConfig} from "./DashboardWidgetDataConfig";
import {VisualizablePipeline} from "./VisualizablePipeline";
+import {UnnamedStreamPipesEntity} from "../../connect/model/UnnamedStreamPipesEntity";
@RdfsClass('sp:DashboardWidgetModel')
-export class DashboardWidget {
-
- @RdfId
- public id: string;
+export class DashboardWidget extends UnnamedStreamPipesEntity {
@RdfProperty('sp:hasDashboardWidgetSettings')
dashboardWidgetSettings: DashboardWidgetSettings;
@@ -27,8 +25,7 @@ export class DashboardWidget {
@RdfProperty('sp:hasDashboardWidgetId')
widgetId:string;
-
- constructor(id: string) {
- this.id = id;
+ constructor() {
+ super();
}
}
\ No newline at end of file
diff --git a/ui/src/app/core-model/dashboard/DashboardWidgetDataConfig.ts b/ui/src/app/core-model/dashboard/DashboardWidgetDataConfig.ts
index 06027b2..738cd41 100644
--- a/ui/src/app/core-model/dashboard/DashboardWidgetDataConfig.ts
+++ b/ui/src/app/core-model/dashboard/DashboardWidgetDataConfig.ts
@@ -3,11 +3,10 @@ import {RdfProperty} from "../../platform-services/tsonld/RdfsProperty";
import {StaticProperty} from "../../connect/model/StaticProperty";
import {EventSchema} from "../../connect/schema-editor/model/EventSchema";
import {RdfsClass} from "../../platform-services/tsonld/RdfsClass";
+import {UnnamedStreamPipesEntity} from "../../connect/model/UnnamedStreamPipesEntity";
@RdfsClass('sp:DashboardWidgetDataConfig')
-export class DashboardWidgetDataConfig {
- @RdfId
- public id: string;
+export class DashboardWidgetDataConfig extends UnnamedStreamPipesEntity {
@RdfProperty('sp:hasVisualizationName')
visualizationName: string;
@@ -18,7 +17,7 @@ export class DashboardWidgetDataConfig {
@RdfProperty('sp:hasSchema')
schema: EventSchema;
- constructor(id: string) {
- this.id = id;
+ constructor() {
+ super();
}
}
\ No newline at end of file
diff --git a/ui/src/app/core-model/dashboard/DashboardWidgetSettings.ts b/ui/src/app/core-model/dashboard/DashboardWidgetSettings.ts
index 99576ad..845fff1 100644
--- a/ui/src/app/core-model/dashboard/DashboardWidgetSettings.ts
+++ b/ui/src/app/core-model/dashboard/DashboardWidgetSettings.ts
@@ -1,13 +1,11 @@
-import {RdfId} from "../../platform-services/tsonld/RdfId";
import {RdfProperty} from "../../platform-services/tsonld/RdfsProperty";
import {StaticProperty} from "../../connect/model/StaticProperty";
import {EventSchema} from "../../connect/schema-editor/model/EventSchema";
import {RdfsClass} from "../../platform-services/tsonld/RdfsClass";
+import {UnnamedStreamPipesEntity} from "../../connect/model/UnnamedStreamPipesEntity";
@RdfsClass('sp:DashboardWidgetSettings')
-export class DashboardWidgetSettings {
- @RdfId
- public id: string;
+export class DashboardWidgetSettings extends UnnamedStreamPipesEntity {
@RdfProperty('sp:hasDashboardWidgetLabel')
widgetLabel: string;
@@ -21,7 +19,7 @@ export class DashboardWidgetSettings {
@RdfProperty('sp:hasSchema')
requiredSchema: EventSchema;
- constructor(id: string) {
- this.id = id;
+ constructor() {
+ super();
}
}
\ No newline at end of file
diff --git a/ui/src/app/dashboard-v2/components/panel/dashboard-panel.component.ts b/ui/src/app/dashboard-v2/components/panel/dashboard-panel.component.ts
index 0e7cb9d..1a7e06e 100644
--- a/ui/src/app/dashboard-v2/components/panel/dashboard-panel.component.ts
+++ b/ui/src/app/dashboard-v2/components/panel/dashboard-panel.component.ts
@@ -1,5 +1,5 @@
import {Component, Input, OnInit} from "@angular/core";
-import {Dashboard, DashboardConfig, DashboardWidget} from "../../models/dashboard.model";
+import {Dashboard, DashboardConfig, DashboardItem} from "../../models/dashboard.model";
import {Subscription} from "rxjs";
import {MockDashboardService} from "../../services/MockDashboard.service";
import {GridType} from "angular-gridster2";
@@ -16,7 +16,7 @@ export class DashboardPanelComponent implements OnInit {
@Input() dashboard: Dashboard;
public options: DashboardConfig;
- public items: DashboardWidget[];
+ public items: DashboardItem[];
protected subscription: Subscription;
diff --git a/ui/src/app/dashboard-v2/components/widget/dashboard-widget.component.html b/ui/src/app/dashboard-v2/components/widget/dashboard-widget.component.html
index 30daee2..838a042 100644
--- a/ui/src/app/dashboard-v2/components/widget/dashboard-widget.component.html
+++ b/ui/src/app/dashboard-v2/components/widget/dashboard-widget.component.html
@@ -7,6 +7,9 @@
</div>
</div>
<div class="sp-blue-border" style="height:100%;">
-<!-- <div *ngIf="widget."></div>-->
+ <!-- <div *ngIf="widget."></div>-->
+ <div *ngIf="widgetLoaded">
+ {{configuredWidget.dashboardWidgetSettings.widgetName}}
+ </div>
</div>
</div>
\ No newline at end of file
diff --git a/ui/src/app/dashboard-v2/components/widget/dashboard-widget.component.ts b/ui/src/app/dashboard-v2/components/widget/dashboard-widget.component.ts
index fa4e136..92bd127 100644
--- a/ui/src/app/dashboard-v2/components/widget/dashboard-widget.component.ts
+++ b/ui/src/app/dashboard-v2/components/widget/dashboard-widget.component.ts
@@ -1,5 +1,8 @@
import {Component, Input, OnInit} from "@angular/core";
-import {Dashboard, DashboardWidget} from "../../models/dashboard.model";
+import {Dashboard, DashboardItem} from "../../models/dashboard.model";
+import {DashboardService} from "../../services/dashboard.service";
+import {DashboardImageComponent} from "../../../app-transport-monitoring/components/dashboard-image/dashboard-image.component";
+import {DashboardWidget} from "../../../core-model/dashboard/DashboardWidget";
@Component({
selector: 'dashboard-widget',
@@ -8,13 +11,18 @@ import {Dashboard, DashboardWidget} from "../../models/dashboard.model";
})
export class DashboardWidgetComponent implements OnInit {
- @Input() widget: DashboardWidget;
+ @Input() widget: DashboardItem;
- constructor() {
+ widgetLoaded: boolean = false;
+ configuredWidget: DashboardWidget;
+
+ constructor(private dashboardService: DashboardService) {
}
ngOnInit(): void {
+ this.dashboardService.getWidget(this.widget.id).subscribe(response => {
+ this.configuredWidget = response;
+ this.widgetLoaded = true;
+ });
}
-
-
}
\ No newline at end of file
diff --git a/ui/src/app/dashboard-v2/components/widgets/number/number-config.component.ts b/ui/src/app/dashboard-v2/components/widgets/number/number-config.component.ts
index 9b6e5d8..a167b8b 100644
--- a/ui/src/app/dashboard-v2/components/widgets/number/number-config.component.ts
+++ b/ui/src/app/dashboard-v2/components/widgets/number/number-config.component.ts
@@ -1,7 +1,7 @@
import {WidgetConfigBuilder} from "../../../registry/widget-config-builder";
-import {WidgetSettings} from "../../../models/widget-settings.model";
import {SchemaRequirementsBuilder} from "../../../sdk/schema-requirements-builder";
import {EpRequirements} from "../../../sdk/ep-requirements";
+import {DashboardWidgetSettings} from "../../../../core-model/dashboard/DashboardWidgetSettings";
export class NumberConfig {
@@ -9,7 +9,7 @@ export class NumberConfig {
}
- static getConfig(): WidgetSettings {
+ static getConfig(): DashboardWidgetSettings {
return WidgetConfigBuilder.create("number", "number")
.requiredSchema(SchemaRequirementsBuilder
.create()
diff --git a/ui/src/app/dashboard-v2/components/widgets/number/number-viz.component.html b/ui/src/app/dashboard-v2/components/widgets/number/number-viz.component.html
new file mode 100644
index 0000000..e69de29
diff --git a/ui/src/app/dashboard-v2/dashboard.component.ts b/ui/src/app/dashboard-v2/dashboard.component.ts
index 426a010..d5e40b2 100644
--- a/ui/src/app/dashboard-v2/dashboard.component.ts
+++ b/ui/src/app/dashboard-v2/dashboard.component.ts
@@ -1,7 +1,7 @@
import {Component, Input, OnInit} from "@angular/core";
import {Subscription} from "rxjs";
import {GridType} from "angular-gridster2";
-import {Dashboard, DashboardConfig, DashboardWidget} from "./models/dashboard.model";
+import {Dashboard, DashboardConfig} from "./models/dashboard.model";
import {MockDashboardService} from "./services/MockDashboard.service";
@Component({
diff --git a/ui/src/app/dashboard-v2/dashboard.module.ts b/ui/src/app/dashboard-v2/dashboard.module.ts
index 8dd90af..629fb97 100644
--- a/ui/src/app/dashboard-v2/dashboard.module.ts
+++ b/ui/src/app/dashboard-v2/dashboard.module.ts
@@ -72,8 +72,6 @@ const dashboardWidgets = [
export class DashboardModule {
constructor() {
-
- console.log('Dashboard Module initialised');
}
}
\ No newline at end of file
diff --git a/ui/src/app/dashboard-v2/dialogs/add-visualization-dialog.component.html b/ui/src/app/dashboard-v2/dialogs/add-visualization-dialog.component.html
index 7ad2164..3267cd9 100644
--- a/ui/src/app/dashboard-v2/dialogs/add-visualization-dialog.component.html
+++ b/ui/src/app/dashboard-v2/dialogs/add-visualization-dialog.component.html
@@ -53,10 +53,10 @@
[gutterSize]="100">
<mat-grid-tile class="gray" *ngFor="let widget of availableWidgets">
- <div [ngClass]="getSelectedPipelineCss(widget.label)"
+ <div [ngClass]="getSelectedPipelineCss(widget.widgetLabel)"
(click)="selectWidget(widget)">
- {{iconText(widget.label)}}
- <h5>{{widget.label}}</h5>
+ {{iconText(widget.widgetLabel)}}
+ <h5>{{widget.widgetLabel}}</h5>
</div>
</mat-grid-tile>
</mat-grid-list>
diff --git a/ui/src/app/dashboard-v2/dialogs/add-visualization-dialog.component.ts b/ui/src/app/dashboard-v2/dialogs/add-visualization-dialog.component.ts
index b68bcfe..737d1fc 100644
--- a/ui/src/app/dashboard-v2/dialogs/add-visualization-dialog.component.ts
+++ b/ui/src/app/dashboard-v2/dialogs/add-visualization-dialog.component.ts
@@ -20,9 +20,7 @@ import {Component, Inject} from "@angular/core";
import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material";
import {DashboardService} from "../services/dashboard.service";
import {ElementIconText} from "../../services/get-element-icon-text.service";
-import {WidgetSettings} from "../models/widget-settings.model";
import {WidgetRegistry} from "../registry/widget-registry";
-import {ConfiguredWidget} from "../models/dashboard.model";
import {MappingPropertyUnary} from "../../connect/model/MappingPropertyUnary";
import {MappingPropertyGenerator} from "../sdk/matching/mapping-property-generator";
import {EventProperty} from "../../connect/schema-editor/model/EventProperty";
@@ -53,7 +51,7 @@ export class AddVisualizationDialogComponent {
}];
visualizablePipelines: Array<VisualizablePipeline> = [];
- availableWidgets: Array<WidgetSettings>;
+ availableWidgets: Array<DashboardWidgetSettings>;
selectedPipeline: VisualizablePipeline;
selectedWidget: DashboardWidgetSettings;
@@ -134,14 +132,11 @@ export class AddVisualizationDialogComponent {
} else if (this.page == 'select-widget') {
this.page = 'configure-widget';
} else {
- let configuredWidget: DashboardWidget = {} as DashboardWidget;
+ let configuredWidget: DashboardWidget = new DashboardWidget();
configuredWidget.widgetId = "a";
- configuredWidget.id = "asd";
- //configuredWidget.dashboardWidgetSettings = this.selectedWidget;
- //configuredWidget.dashboardWidgetDataConfig = this.selectedPipeline;
- console.log(configuredWidget);
+ configuredWidget.dashboardWidgetSettings = this.selectedWidget;
+ configuredWidget.dashboardWidgetDataConfig = this.selectedPipeline;
this.dashboardService.saveWidget(configuredWidget).subscribe(response => {
- console.log(response);
this.dialogRef.close();
});
}
diff --git a/ui/src/app/dashboard-v2/models/dashboard.model.ts b/ui/src/app/dashboard-v2/models/dashboard.model.ts
index f47d24d..587ff4e 100644
--- a/ui/src/app/dashboard-v2/models/dashboard.model.ts
+++ b/ui/src/app/dashboard-v2/models/dashboard.model.ts
@@ -1,26 +1,16 @@
import {GridsterConfig, GridsterItem} from "angular-gridster2";
import {StaticProperty} from "../../connect/model/StaticProperty";
-import {WidgetSettings} from "./widget-settings.model";
import {WidgetData} from "./widget-data.model";
import {VisualizablePipeline} from "../../core-model/dashboard/VisualizablePipeline";
export interface DashboardConfig extends GridsterConfig {}
-export interface DashboardItem extends GridsterItem {}
-
-export interface DashboardWidget extends DashboardItem {
- widgetId: string;
-}
-
-export interface ConfiguredWidget {
+export interface DashboardItem extends GridsterItem {
widgetId: string;
- widgetSettings: WidgetSettings;
- widgetDataConfig: VisualizablePipeline;
- widgetType: string;
}
export interface Dashboard {
id?: string;
name?: string;
- widgets?: Array<DashboardWidget>;
+ widgets?: Array<DashboardItem>;
}
\ No newline at end of file
diff --git a/ui/src/app/dashboard-v2/models/widget-settings.model.ts b/ui/src/app/dashboard-v2/models/widget-settings.model.ts
deleted file mode 100644
index 530a835..0000000
--- a/ui/src/app/dashboard-v2/models/widget-settings.model.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import {StaticProperty} from "../../connect/model/StaticProperty";
-import {EventSchema} from "../../connect/schema-editor/model/EventSchema";
-
-export interface WidgetSettings {
- name?: string;
- label?: string;
- icon?: string;
- requiredSchema?: EventSchema;
- config?: Array<StaticProperty>;
-}
\ No newline at end of file
diff --git a/ui/src/app/dashboard-v2/registry/widget-config-builder.ts b/ui/src/app/dashboard-v2/registry/widget-config-builder.ts
index 811a178..1e7df2c 100644
--- a/ui/src/app/dashboard-v2/registry/widget-config-builder.ts
+++ b/ui/src/app/dashboard-v2/registry/widget-config-builder.ts
@@ -1,16 +1,16 @@
-import {WidgetSettings} from "../models/widget-settings.model";
import {FreeTextStaticProperty} from "../../connect/model/FreeTextStaticProperty";
import {CollectedSchemaRequirements} from "../sdk/collected-schema-requirements";
import {EventSchema} from "../../connect/schema-editor/model/EventSchema";
+import {DashboardWidgetSettings} from "../../core-model/dashboard/DashboardWidgetSettings";
export class WidgetConfigBuilder {
- private widget: WidgetSettings;
+ private widget: DashboardWidgetSettings;
private constructor(widgetName: string, widgetLabel: string) {
- this.widget = <WidgetSettings>{};
- this.widget.label = widgetLabel;
- this.widget.name = widgetName;
+ this.widget = new DashboardWidgetSettings();
+ this.widget.widgetLabel = widgetLabel;
+ this.widget.widgetName = widgetName;
this.widget.config = [];
}
@@ -19,7 +19,8 @@ export class WidgetConfigBuilder {
}
requiredTextParameter(id: string, label: string, description: string): WidgetConfigBuilder {
- let fst: FreeTextStaticProperty = new FreeTextStaticProperty(id);
+ let fst: FreeTextStaticProperty = new FreeTextStaticProperty();
+ fst.internalName = id;
fst.label = label;
fst.description = description;
this.widget.config.push(fst);
@@ -33,7 +34,7 @@ export class WidgetConfigBuilder {
return this;
}
- build(): WidgetSettings {
+ build(): DashboardWidgetSettings {
return this.widget;
}
diff --git a/ui/src/app/dashboard-v2/registry/widget-registry.ts b/ui/src/app/dashboard-v2/registry/widget-registry.ts
index 499ce77..ae62523 100644
--- a/ui/src/app/dashboard-v2/registry/widget-registry.ts
+++ b/ui/src/app/dashboard-v2/registry/widget-registry.ts
@@ -1,11 +1,11 @@
import {NumberConfig} from "../components/widgets/number/number-config.component";
-import {WidgetSettings} from "../models/widget-settings.model";
+import {DashboardWidgetSettings} from "../../core-model/dashboard/DashboardWidgetSettings";
export class WidgetRegistry {
- private static availableWidgets: Array<WidgetSettings> = [NumberConfig.getConfig()];
+ private static availableWidgets: Array<DashboardWidgetSettings> = [NumberConfig.getConfig()];
- static getAvailableWidgets(): Array<WidgetSettings> {
+ static getAvailableWidgets(): Array<DashboardWidgetSettings> {
return this.availableWidgets;
}
}
\ No newline at end of file
diff --git a/ui/src/app/dashboard-v2/sdk/ep-requirements.ts b/ui/src/app/dashboard-v2/sdk/ep-requirements.ts
index 1b2a6da..c99f638 100644
--- a/ui/src/app/dashboard-v2/sdk/ep-requirements.ts
+++ b/ui/src/app/dashboard-v2/sdk/ep-requirements.ts
@@ -5,7 +5,7 @@ import {Datatypes} from "./model/datatypes";
export class EpRequirements {
private static ep(): EventPropertyPrimitive {
- let ep = new EventPropertyPrimitive(null, null);
+ let ep = new EventPropertyPrimitive(undefined, undefined);
return ep;
}
diff --git a/ui/src/app/dashboard-v2/sdk/schema-requirements-builder.ts b/ui/src/app/dashboard-v2/sdk/schema-requirements-builder.ts
index ce79136..736aa21 100644
--- a/ui/src/app/dashboard-v2/sdk/schema-requirements-builder.ts
+++ b/ui/src/app/dashboard-v2/sdk/schema-requirements-builder.ts
@@ -19,7 +19,8 @@ export class SchemaRequirementsBuilder {
requiredPropertyWithUnaryMapping(internalId: string, label: string, description: string, eventProperty: EventProperty): SchemaRequirementsBuilder {
eventProperty.setRuntimeName(internalId);
- let mp = new MappingPropertyUnary(internalId);
+ let mp = new MappingPropertyUnary();
+ mp.internalName = internalId;
mp.label = label;
mp.description = description;
mp.internalName = internalId;
diff --git a/ui/src/app/dashboard-v2/services/dashboard.service.ts b/ui/src/app/dashboard-v2/services/dashboard.service.ts
index 8329df4..1f1b78d 100644
--- a/ui/src/app/dashboard-v2/services/dashboard.service.ts
+++ b/ui/src/app/dashboard-v2/services/dashboard.service.ts
@@ -21,7 +21,7 @@ import {Injectable} from "@angular/core";
import {map} from "rxjs/operators";
import {from, Observable} from "rxjs";
import {AuthStatusService} from "../../services/auth-status.service";
-import {ConfiguredWidget, Dashboard} from "../models/dashboard.model";
+import {Dashboard} from "../models/dashboard.model";
import {EventSchema} from "../../connect/schema-editor/model/EventSchema";
import {EventProperty} from "../../connect/schema-editor/model/EventProperty";
import {EventPropertyPrimitive} from "../../connect/schema-editor/model/EventPropertyPrimitive";
@@ -87,6 +87,16 @@ export class DashboardService {
return this.baseUrl + '/api/v2/users/' + this.authStatusService.email + '/ld/pipelines'
}
+ getWidget(widgetId: string): Observable<DashboardWidget> {
+ let promise = new Promise<DashboardWidget>((resolve, reject) => {
+ this.http.get(this.dashboardWidgetUrl + "/" +widgetId).subscribe(response => {
+ let dashboardWidget = this.tsonLdSerializerService.fromJsonLd(response, "sp:DashboardWidgetModel");
+ resolve(dashboardWidget);
+ });
+ });
+ return from(promise);
+ }
+
saveWidget(widget: DashboardWidget): Observable<StatusMessage> {
return this.serializeAndPost(this.dashboardWidgetUrl, widget);
}
@@ -95,17 +105,15 @@ export class DashboardService {
this.http.post('/dashboard', dashboard);
}
- serializeAndPost(url: string, object: DashboardWidget): Observable<StatusMessage> {
+ serializeAndPost(url: string, object: any): Observable<StatusMessage> {
let promise = new Promise<StatusMessage>((resolve, reject) => {
this.tsonLdSerializerService.toJsonLd(object).subscribe(serialized => {
- console.log(serialized);
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/ld+json',
}),
};
this.http.post(url, serialized, httpOptions).pipe(map(response => {
- console.log(response);
resolve(response as StatusMessage);
})).subscribe();
});
diff --git a/ui/src/app/platform-services/tsonld/tsonld.js b/ui/src/app/platform-services/tsonld/tsonld.js
index c49424d..f0b3cf2 100644
--- a/ui/src/app/platform-services/tsonld/tsonld.js
+++ b/ui/src/app/platform-services/tsonld/tsonld.js
@@ -157,12 +157,6 @@ var TsonLd = /** @class */ (function () {
else if (!util_1.isUndefined(ids[id])) {
return ids[id];
}
- else {
- console.log('graph: ' + graph);
- console.log('FIX BUG: Pass id to fromJSON-LD');
- console.log('id: ' + id);
- console.log('ids: ' + JSON.stringify(ids, null, 2));
- }
// Create the result object
var c = this.classMapping[jsonObject['@type']];
if (util_1.isUndefined(c)) {
@@ -202,9 +196,6 @@ var TsonLd = /** @class */ (function () {
}
var newObj = { '@context': context, '@graph': graph };
ids[jsonObject['@id']] = result;
- console.log('jsonObject: ' + JSON.stringify(jsonObject, null, 2));
- console.log('elem: ' + JSON.stringify(elem, null, 2));
- console.log('id: ' + jsonObject['@id']);
var arrayResult = this.fromJsonLd(newObj, ids, elem['@id']);
// TODO hot fix not sure if it works for all cases
graph.splice(0, 1);
@@ -233,7 +224,6 @@ var TsonLd = /** @class */ (function () {
}
var newObj = { '@context': context, '@graph': graph };
ids[jsonObject['@id']] = result;
- console.log('ddddd: ' + JSON.stringify(ids, null, 2));
var nestedResult = this.fromJsonLd(newObj, ids);
result[objectProp] = nestedResult;
}
diff --git a/ui/src/assets/dashboards.json b/ui/src/assets/dashboards.json
index a3db8733..d0d16d8 100644
--- a/ui/src/assets/dashboards.json
+++ b/ui/src/assets/dashboards.json
@@ -5,7 +5,7 @@
"name": "Sample Dashboard 4",
"widgets": [
{
- "id": "1",
+ "id": "0bca595df0654a058f71eb7069e79d98",
"name": "Timeline",
"component": "timeline",
"widgetType": "number",