Skip to content

Commit

Permalink
feat: update sitewise component interface (#58)
Browse files Browse the repository at this point in the history
  • Loading branch information
boweihan committed Feb 15, 2022
1 parent 7b6f7da commit afc672a
Show file tree
Hide file tree
Showing 23 changed files with 482 additions and 337 deletions.
74 changes: 51 additions & 23 deletions packages/components/src/components.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
* It contains typing information for all components that exist in this project.
*/
import { HTMLStencilElement, JSXBase } from "@stencil/core/internal";
import { AssetSummaryQuery, AssetTreeSubscription, IoTAppKit, Provider, SiteWiseAssetTreeQuery, SiteWiseTimeSeriesDataProvider, StyleSettingsMap, TimeSeriesData, TimeSeriesQuery } from "@iot-app-kit/core";
import { AssetSummaryQuery, AssetTreeSubscription, IoTAppKit, Provider, SiteWiseAssetTreeQuery, SiteWiseTimeSeriesDataProvider, StyleSettingsMap, TimeSeriesData, TimeSeriesDataRequestSettings, TimeSeriesQuery } from "@iot-app-kit/core";
import { MinimalViewPortConfig } from "@synchro-charts/core";
import { ColumnDefinition, FilterTexts, ResourceExplorerQuery, SitewiseAssetResource } from "./components/iot-resource-explorer/types";
import { TableProps } from "@awsui/components-react/table";
import { EmptyStateProps, ITreeNode, UseTreeCollection } from "@iot-app-kit/related-table";
import { NonCancelableCustomEvent } from "@awsui/components-react";
import { MinimalViewPortConfig } from "@synchro-charts/core";
export namespace Components {
interface IotAssetDetails {
"query": AssetSummaryQuery;
Expand All @@ -22,22 +22,28 @@ export namespace Components {
interface IotBarChart {
"appKit": IoTAppKit;
"isEditing": boolean | undefined;
"query": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings": TimeSeriesDataRequestSettings;
"styleSettings": StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId": string;
}
interface IotKpi {
"appKit": IoTAppKit;
"isEditing": boolean | undefined;
"query": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings": TimeSeriesDataRequestSettings;
"styleSettings": StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId": string;
}
interface IotLineChart {
"appKit": IoTAppKit;
"isEditing": boolean | undefined;
"query": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings": TimeSeriesDataRequestSettings;
"styleSettings": StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId": string;
}
interface IotResourceExplorer {
Expand All @@ -59,28 +65,36 @@ export namespace Components {
interface IotScatterChart {
"appKit": IoTAppKit;
"isEditing": boolean | undefined;
"query": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings": TimeSeriesDataRequestSettings;
"styleSettings": StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId": string;
}
interface IotStatusGrid {
"appKit": IoTAppKit;
"isEditing": boolean | undefined;
"query": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings": TimeSeriesDataRequestSettings;
"styleSettings": StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId": string;
}
interface IotStatusTimeline {
"appKit": IoTAppKit;
"isEditing": boolean | undefined;
"query": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings": TimeSeriesDataRequestSettings;
"styleSettings": StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId": string;
}
interface IotTable {
"appKit": IoTAppKit;
"query": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings": TimeSeriesDataRequestSettings;
"styleSettings": StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId": string;
}
interface IotTestRoutes {
Expand Down Expand Up @@ -260,24 +274,30 @@ declare namespace LocalJSX {
"subscription"?: AssetTreeSubscription;
}
interface IotBarChart {
"appKit"?: IoTAppKit;
"appKit": IoTAppKit;
"isEditing"?: boolean | undefined;
"query"?: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings"?: TimeSeriesDataRequestSettings;
"styleSettings"?: StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId"?: string;
}
interface IotKpi {
"appKit"?: IoTAppKit;
"appKit": IoTAppKit;
"isEditing"?: boolean | undefined;
"query"?: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings"?: TimeSeriesDataRequestSettings;
"styleSettings"?: StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId"?: string;
}
interface IotLineChart {
"appKit"?: IoTAppKit;
"appKit": IoTAppKit;
"isEditing"?: boolean | undefined;
"query"?: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings"?: TimeSeriesDataRequestSettings;
"styleSettings"?: StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId"?: string;
}
interface IotResourceExplorer {
Expand All @@ -297,30 +317,38 @@ declare namespace LocalJSX {
interface IotResourceExplorerDemo {
}
interface IotScatterChart {
"appKit"?: IoTAppKit;
"appKit": IoTAppKit;
"isEditing"?: boolean | undefined;
"query"?: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings"?: TimeSeriesDataRequestSettings;
"styleSettings"?: StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId"?: string;
}
interface IotStatusGrid {
"appKit"?: IoTAppKit;
"appKit": IoTAppKit;
"isEditing"?: boolean | undefined;
"query"?: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings"?: TimeSeriesDataRequestSettings;
"styleSettings"?: StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId"?: string;
}
interface IotStatusTimeline {
"appKit"?: IoTAppKit;
"appKit": IoTAppKit;
"isEditing"?: boolean | undefined;
"query"?: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings"?: TimeSeriesDataRequestSettings;
"styleSettings"?: StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId"?: string;
}
interface IotTable {
"appKit"?: IoTAppKit;
"query"?: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
"appKit": IoTAppKit;
"queries": TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];
"settings"?: TimeSeriesDataRequestSettings;
"styleSettings"?: StyleSettingsMap | undefined;
"viewport": MinimalViewPortConfig;
"widgetId"?: string;
}
interface IotTestRoutes {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,12 @@ const barChartSpecPage = async (propOverrides: Partial<Components.IotBarChart> =
appKit,
widgetId: 'test-bar-chart-widget',
isEditing: false,
query: query.iotsitewise.timeSeriesData({
queries: [
{
source: 'test-mock',
assets: [{ assetId: 'some-asset-id', properties: [{ propertyId: 'some-property-id' }] }],
} as SiteWiseDataStreamQuery,
],
request: {
viewport,
},
}),
viewport,
queries: [
query.iotsitewise.timeSeriesData([
{ assetId: 'some-asset-id', properties: [{ propertyId: 'some-property-id' }] },
]),
],
...propOverrides,
};
update(barChart, props);
Expand Down
35 changes: 28 additions & 7 deletions packages/components/src/components/iot-bar-chart/iot-bar-chart.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
import { Component, Prop, h, Listen, State, Watch } from '@stencil/core';
import { DataStream as SynchroChartsDataStream } from '@synchro-charts/core';
import { DataStream as SynchroChartsDataStream, MinimalViewPortConfig } from '@synchro-charts/core';
import {
TimeSeriesDataRequestSettings,
StyleSettingsMap,
SiteWiseTimeSeriesDataProvider,
IoTAppKit,
TimeSeriesQuery,
composeSiteWiseProviders,
} from '@iot-app-kit/core';

@Component({
tag: 'iot-bar-chart',
shadow: false,
})
export class IotBarChart {
@Prop() appKit: IoTAppKit;
@Prop() appKit!: IoTAppKit;

@Prop() query: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
@Prop() queries!: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];

@Prop() viewport!: MinimalViewPortConfig;

@Prop() settings: TimeSeriesDataRequestSettings = {};

@Prop() widgetId: string;

Expand All @@ -29,13 +34,29 @@ export class IotBarChart {
fetchFromStartToEnd: true,
};

buildProvider() {
this.provider = composeSiteWiseProviders(
this.queries.map((query) =>
query.build(this.appKit.session(this.widgetId), {
viewport: this.viewport,
settings: {
...this.defaultSettings,
...this.settings,
},
})
)
);
}

componentWillLoad() {
this.provider = this.query.build(this.appKit.session(this.widgetId), this.defaultSettings);
this.buildProvider();
}

@Watch('query')
private onQueryUpdate() {
this.provider = this.query.build(this.appKit.session(this.widgetId), this.defaultSettings);
@Watch('queries')
@Watch('settings')
@Watch('viewport')
private onPropUpdate() {
this.buildProvider();
}

@Listen('dateRangeChange')
Expand Down
17 changes: 6 additions & 11 deletions packages/components/src/components/iot-kpi/iot-kpi.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,12 @@ const kpiSpecPage = async (propOverrides: Partial<Components.IotKpi> = {}) => {
appKit,
widgetId: 'test-kpi-widget',
isEditing: false,
query: query.iotsitewise.timeSeriesData({
queries: [
{
source: 'test-mock',
assets: [{ assetId: 'some-asset-id', properties: [{ propertyId: 'some-property-id' }] }],
} as SiteWiseDataStreamQuery,
],
request: {
viewport,
},
}),
viewport,
queries: [
query.iotsitewise.timeSeriesData([
{ assetId: 'some-asset-id', properties: [{ propertyId: 'some-property-id' }] },
]),
],
...propOverrides,
};
update(kpi, props);
Expand Down
35 changes: 28 additions & 7 deletions packages/components/src/components/iot-kpi/iot-kpi.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
import { Component, Prop, h, State, Listen, Watch } from '@stencil/core';
import { DataStream as SynchroChartsDataStream } from '@synchro-charts/core';
import { DataStream as SynchroChartsDataStream, MinimalViewPortConfig } from '@synchro-charts/core';
import {
StyleSettingsMap,
SiteWiseTimeSeriesDataProvider,
IoTAppKit,
TimeSeriesQuery,
TimeSeriesDataRequestSettings,
composeSiteWiseProviders,
} from '@iot-app-kit/core';

@Component({
tag: 'iot-kpi',
shadow: false,
})
export class IotKpi {
@Prop() appKit: IoTAppKit;
@Prop() appKit!: IoTAppKit;

@Prop() query: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>;
@Prop() queries!: TimeSeriesQuery<SiteWiseTimeSeriesDataProvider>[];

@Prop() viewport!: MinimalViewPortConfig;

@Prop() settings: TimeSeriesDataRequestSettings = {};

@Prop() widgetId: string;

Expand All @@ -29,13 +34,29 @@ export class IotKpi {
fetchMostRecentBeforeEnd: true,
};

buildProvider() {
this.provider = composeSiteWiseProviders(
this.queries.map((query) =>
query.build(this.appKit.session(this.widgetId), {
viewport: this.viewport,
settings: {
...this.defaultSettings,
...this.settings,
},
})
)
);
}

componentWillLoad() {
this.provider = this.query.build(this.appKit.session(this.widgetId), this.defaultSettings);
this.buildProvider();
}

@Watch('query')
private onQueryUpdate() {
this.provider = this.query.build(this.appKit.session(this.widgetId), this.defaultSettings);
@Watch('queries')
@Watch('settings')
@Watch('viewport')
private onPropUpdate() {
this.buildProvider();
}

@Listen('dateRangeChange')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,12 @@ const lineChartSpecPage = async (propOverrides: Partial<Components.IotKpi> = {})
appKit,
widgetId: 'test-line-chart-widget',
isEditing: false,
query: query.iotsitewise.timeSeriesData({
queries: [
{
source: 'test-mock',
assets: [{ assetId: 'some-asset-id', properties: [{ propertyId: 'some-property-id' }] }],
} as SiteWiseDataStreamQuery,
],
request: {
viewport,
},
}),
viewport,
queries: [
query.iotsitewise.timeSeriesData([
{ assetId: 'some-asset-id', properties: [{ propertyId: 'some-property-id' }] },
]),
],
...propOverrides,
};
update(lineChart, props);
Expand Down

0 comments on commit afc672a

Please sign in to comment.