aboutsummaryrefslogtreecommitdiff
path: root/src/client/northstar
diff options
context:
space:
mode:
authorbob <bcz@cs.brown.edu>2019-03-26 12:37:26 -0400
committerbob <bcz@cs.brown.edu>2019-03-26 12:37:26 -0400
commit8335f0ba0b780a0ed0619e52076f051f122e4865 (patch)
treecac26f0ca29d0852de5012475426e58bd12d4f48 /src/client/northstar
parent731cab330389b1730d9700b5452ac75975b79b3c (diff)
added HistogramField
Diffstat (limited to 'src/client/northstar')
-rw-r--r--src/client/northstar/core/filter/FilterModel.ts21
-rw-r--r--src/client/northstar/core/filter/IBaseFilterConsumer.ts2
-rw-r--r--src/client/northstar/operations/HistogramOperation.ts42
3 files changed, 34 insertions, 31 deletions
diff --git a/src/client/northstar/core/filter/FilterModel.ts b/src/client/northstar/core/filter/FilterModel.ts
index 3c4cfc4a7..01bf2a809 100644
--- a/src/client/northstar/core/filter/FilterModel.ts
+++ b/src/client/northstar/core/filter/FilterModel.ts
@@ -1,5 +1,8 @@
import { ValueComparison } from "./ValueComparision";
import { Utils } from "../../utils/Utils";
+import { IBaseFilterProvider } from "./IBaseFilterProvider";
+import { BaseOperation } from "../../operations/BaseOperation";
+import { FilterOperand } from "./FilterOperand";
export class FilterModel {
public ValueComparisons: ValueComparison[];
@@ -36,20 +39,20 @@ export class FilterModel {
return ret;
}
- // public static GetFilterModelsRecursive(filterGraphNode: GraphNode<BaseOperationViewModel, FilterLinkViewModel>,
- // visitedFilterProviders: Set<GraphNode<BaseOperationViewModel, FilterLinkViewModel>>, filterModels: FilterModel[], isFirst: boolean): string {
+ // public static GetFilterModelsRecursive(baseOperation: BaseOperation,
+ // visitedFilterProviders: Set<IBaseFilterProvider>, filterModels: FilterModel[], isFirst: boolean): string {
// let ret = "";
- // if (Utils.isBaseFilterProvider(filterGraphNode.Data)) {
- // visitedFilterProviders.add(filterGraphNode);
- // let filtered = filterGraphNode.Data.FilterModels.filter(fm => fm && fm.ValueComparisons.length > 0);
+ // if (Utils.isBaseFilterProvider(baseOperation)) {
+ // visitedFilterProviders.add(baseOperation);
+ // let filtered = baseOperation.FilterModels.filter(fm => fm && fm.ValueComparisons.length > 0);
// if (!isFirst && filtered.length > 0) {
// filterModels.push(...filtered);
- // ret = "(" + filterGraphNode.Data.FilterModels.filter(fm => fm != null).map(fm => fm.ToPythonString()).join(" || ") + ")";
+ // ret = "(" + baseOperation.FilterModels.filter(fm => fm != null).map(fm => fm.ToPythonString()).join(" || ") + ")";
// }
// }
- // if (Utils.isBaseFilterConsumer(filterGraphNode.Data) && filterGraphNode.Links != null) {
+ // if (Utils.isBaseFilterConsumer(baseOperation) && baseOperation.Links) {
// let children = new Array<string>();
- // let linkedGraphNodes = filterGraphNode.Links.get(LinkType.Filter);
+ // let linkedGraphNodes = baseOperation.Links.get(LinkType.Filter);
// if (linkedGraphNodes != null) {
// for (let i = 0; i < linkedGraphNodes.length; i++) {
// let linkVm = linkedGraphNodes[i].Data;
@@ -66,7 +69,7 @@ export class FilterModel {
// }
// }
- // let childrenJoined = children.join(filterGraphNode.Data.FilterOperand === FilterOperand.AND ? " && " : " || ");
+ // let childrenJoined = children.join(baseOperation.FilterOperand === FilterOperand.AND ? " && " : " || ");
// if (children.length > 0) {
// if (ret !== "") {
// ret = "(" + ret + " && (" + childrenJoined + "))";
diff --git a/src/client/northstar/core/filter/IBaseFilterConsumer.ts b/src/client/northstar/core/filter/IBaseFilterConsumer.ts
index e687acb8a..3eb32b6db 100644
--- a/src/client/northstar/core/filter/IBaseFilterConsumer.ts
+++ b/src/client/northstar/core/filter/IBaseFilterConsumer.ts
@@ -1,8 +1,10 @@
import { FilterOperand } from '../filter/FilterOperand'
import { IEquatable } from '../../utils/IEquatable'
+import { IBaseFilterProvider } from './IBaseFilterProvider';
export interface IBaseFilterConsumer extends IEquatable {
FilterOperand: FilterOperand;
+ Links: IBaseFilterProvider[];
}
export function instanceOfIBaseFilterConsumer(object: any): object is IBaseFilterConsumer {
diff --git a/src/client/northstar/operations/HistogramOperation.ts b/src/client/northstar/operations/HistogramOperation.ts
index cf2571285..0c38679e5 100644
--- a/src/client/northstar/operations/HistogramOperation.ts
+++ b/src/client/northstar/operations/HistogramOperation.ts
@@ -9,9 +9,15 @@ import { BaseOperation } from "./BaseOperation";
import { CurrentUserUtils } from "../../../server/authentication/models/current_user_utils";
import { FilterModel } from "../core/filter/FilterModel";
import { BrushLinkModel } from "../core/brusher/BrushLinkModel";
+import { IBaseFilterConsumer } from "../core/filter/IBaseFilterConsumer";
+import { FilterOperand } from "../core/filter/FilterOperand";
+import { IBaseFilterProvider } from "../core/filter/IBaseFilterProvider";
+import { AttributeModel, ColumnAttributeModel } from "../core/attribute/AttributeModel";
-export class HistogramOperation extends BaseOperation {
+export class HistogramOperation extends BaseOperation implements IBaseFilterConsumer, IBaseFilterProvider {
+ @observable public FilterOperand: FilterOperand = FilterOperand.AND;
+ @observable public Links: IBaseFilterProvider[] = [];
@observable public BrushColors: number[] = [];
@observable public Normalization: number = -1;
@observable public FilterModels: FilterModel[] = [];
@@ -21,12 +27,18 @@ export class HistogramOperation extends BaseOperation {
@observable public BrusherModels: BrushLinkModel<HistogramOperation>[] = [];
@observable public BrushableModels: BrushLinkModel<HistogramOperation>[] = [];
- constructor(x: AttributeTransformationModel, y: AttributeTransformationModel, v: AttributeTransformationModel) {
+ public static Empty = new HistogramOperation(new AttributeTransformationModel(new ColumnAttributeModel(new Attribute())), new AttributeTransformationModel(new ColumnAttributeModel(new Attribute())), new AttributeTransformationModel(new ColumnAttributeModel(new Attribute())));
+
+ Equals(other: Object): boolean {
+ throw new Error("Method not implemented.");
+ }
+
+ constructor(x: AttributeTransformationModel, y: AttributeTransformationModel, v: AttributeTransformationModel, normalized?: number) {
super();
this.X = x;
this.Y = y;
this.V = v;
- reaction(() => this.createOperationParamsCache, () => this.Update());
+ this.Normalization = normalized ? normalized : -1;
}
@computed.struct
@@ -47,20 +59,11 @@ export class HistogramOperation extends BaseOperation {
}
- @computed.struct
- public get SelectionString() {
- return "";
- // let filterModels = new Array<FilterModel>();
- // let rdg = MainManager.Instance.MainViewModel.FilterReverseDependencyGraph;
- // let graphNode: GraphNode<BaseOperationViewModel, FilterLinkViewModel>;
- // if (rdg.has(this.TypedViewModel)) {
- // graphNode = MainManager.Instance.MainViewModel.FilterReverseDependencyGraph.get(this.TypedViewModel);
- // }
- // else {
- // graphNode = new GraphNode<BaseOperationViewModel, FilterLinkViewModel>(this.TypedViewModel);
- // }
- // return FilterModel.GetFilterModelsRecursive(graphNode, new Set<GraphNode<BaseOperationViewModel, FilterLinkViewModel>>(), filterModels, false);
- }
+ // @computed.struct
+ // public get SelectionString() {
+ // let filterModels = new Array<FilterModel>();
+ // return FilterModel.GetFilterModelsRecursive(this, new Set<GraphNode<BaseOperationViewModel, FilterLinkViewModel>>(), filterModels, false);
+ // }
GetAggregateParameters(histoX: AttributeTransformationModel, histoY: AttributeTransformationModel, histoValue: AttributeTransformationModel) {
let allAttributes = new Array<AttributeTransformationModel>(histoX, histoY, histoValue);
@@ -79,11 +82,6 @@ export class HistogramOperation extends BaseOperation {
return [perBinAggregateParameters, globalAggregateParameters];
}
- @computed
- get createOperationParamsCache() {
- return this.CreateOperationParameters();
- }
-
public QRange: QuantitativeBinRange | undefined;
public CreateOperationParameters(): HistogramOperationParameters | undefined {