@hpcc-js/marshaller 3.2.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/__package__.ts","../src/ddl2/activities/activity.ts","../src/ddl2/activities/datasource.ts","../src/ddl2/activities/form.ts","../src/ddl2/activities/databomb.ts","../src/ddl2/activities/wuresult.ts","../src/ddl2/activities/logicalfile.ts","../src/ddl2/activities/rest.ts","../src/ddl2/activities/roxie.ts","../src/ddl2/activities/dspicker.ts","../src/ddl2/activities/filter.ts","../src/ddl2/activities/groupby.ts","../src/ddl2/activities/limit.ts","../src/ddl2/activities/project.ts","../src/ddl2/activities/sort.ts","../src/ddl2/activities/hipiepipeline.ts","../src/ddl2/activities/nullview.ts","../src/ddl2/model/vizChartPanel.ts","../src/ddl2/model/visualization.ts","../src/ddl2/model/element.ts","../../../node_modules/d3-fetch/src/text.js","../src/ddl2/PopupManager.ts","../src/ddl2/dashboardDockPanel.ts","../src/ddl2/dashboardGrid.ts","../src/ddl2/ddl.ts","../src/ddl2/javascriptadapter.ts","../src/ddl2/dashboard.ts","../src/ddl2/ddleditor.ts","../src/ddl2/graphadapter.ts","../src/ddl2/dsTable.ts","../src/ddl2/dvTable.ts","../src/ddl2/pipelinePanel.ts","../src/dashy.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n","import { IMonitorHandle, PropertyExt } from \"@hpcc-js/common\";\nimport { IField as WsEclField } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum, update } from \"@hpcc-js/util\";\n\nexport function stringify(obj_from_json) {\n if (Array.isArray(obj_from_json)) {\n // not an object, stringify using native function\n return \"[\" + obj_from_json.map(stringify).join(\", \") + \"]\";\n }\n if (typeof obj_from_json !== \"object\" || obj_from_json === null || obj_from_json === undefined) {\n // not an object, stringify using native function\n return JSON.stringify(obj_from_json);\n }\n // Implements recursive object serialization according to JSON spec\n // but without quotes around the keys.\n const props = Object\n .keys(obj_from_json)\n .map(key => `${key}: ${stringify(obj_from_json[key])}`)\n .join(\", \");\n return `{ ${props} }`;\n}\n\nexport function schemaType2IFieldType(type): \"boolean\" | \"number\" | \"number64\" | \"range\" | \"string\" {\n switch (type) {\n case \"boolean\":\n return \"boolean\";\n case \"xs:byte\":\n case \"xs:double\":\n case \"xs:decimal\":\n case \"xs:float\":\n case \"xs:int\":\n case \"xs:short\":\n case \"xs:unsignedInt\":\n case \"xs:unsignedShort\":\n case \"xs:unsignedByte\":\n case \"number\":\n return \"number\";\n case \"xs:integer\":\n case \"xs:long\":\n case \"xs:negativeInteger\":\n case \"xs:nonNegativeInteger\":\n case \"xs:nonPositiveInteger\":\n case \"xs:positiveInteger\":\n case \"xs:unsignedLong\":\n return \"number64\";\n case \"string\":\n return \"string\";\n case \"range\":\n return \"range\";\n }\n return \"string\";\n}\n\nexport function schemaRow2IField(row: any): DDL2.IField {\n if (row._children && row._children.length) {\n return {\n type: \"dataset\",\n id: row.name,\n children: row._children.map(schemaRow2IField)\n };\n } else {\n return {\n id: row.name,\n type: schemaType2IFieldType(row.type)\n };\n }\n}\n\nexport function wsEclSchemaRow2IField(row: WsEclField): DDL2.IField {\n return row;\n}\n\nexport type ReferencedFields = {\n inputs: { [activityID: string]: string[] },\n outputs: { [activityID: string]: string[] }\n};\n\nexport interface IActivityError {\n source: string;\n msg: string;\n hint: string;\n}\n\n/*\nexport const ROW_ID = \"__##__\"; // TODO: Should be Symbol\nexport function rowID(row: Readonly<object>): undefined | number {\n return row[ROW_ID] || row[\"__lparam\"];\n}\n*/\n\nexport abstract class Activity extends PropertyExt {\n private _sourceActivity: Activity;\n\n fixInt64(data) {\n if (!data || data.length === 0) return [];\n const int64Fields = this.outFields().filter(field => {\n switch (field.type) {\n case \"number\":\n // Test actual data for integer64 cases.\n return typeof data[0][field.id] !== \"number\";\n case \"number64\":\n return true;\n }\n return false;\n });\n if (int64Fields.length) {\n return data.map(row => {\n for (const int64Field of int64Fields) {\n row[int64Field.id] = +row[int64Field.id];\n }\n return row;\n });\n }\n return data;\n }\n\n sourceActivity(): Activity;\n sourceActivity(_: Activity): this;\n sourceActivity(_?: Activity): Activity | this {\n if (!arguments.length) return this._sourceActivity;\n this._sourceActivity = _;\n return this;\n }\n\n hash(more: object = {}): string {\n return hashSum({\n ...more\n });\n }\n\n refreshMeta(): Promise<void> {\n return this._sourceActivity ? this._sourceActivity.refreshMeta() : Promise.resolve();\n }\n\n exists(): boolean {\n return true;\n }\n\n validate(): IActivityError[] {\n return [];\n }\n\n label(): string {\n return this.id();\n }\n\n updatedBy(): string[] {\n return [];\n }\n\n private _emptyFields: ReadonlyArray<DDL2.IField> = [];\n inFields(): ReadonlyArray<DDL2.IField> {\n return this._sourceActivity ? this._sourceActivity.outFields() : this._emptyFields;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => inFields;\n }\n\n outFields(): ReadonlyArray<DDL2.IField> {\n return this.computeFields(this.inFields())();\n }\n\n localFields(): DDL2.IField[] {\n const inFieldIDs = this.inFields().map(field => field.id);\n return this.outFields().filter(field => inFieldIDs.indexOf(field.id) < 0);\n }\n\n fieldOrigin(fieldID: string): Activity | null {\n if (this.localFields().filter(field => field.id === fieldID).length) {\n return this;\n } else if (this.sourceActivity()) {\n return this.sourceActivity().fieldOrigin(fieldID);\n }\n return null;\n }\n\n resolveFields(refs: ReferencedFields, fieldIDs: string[]) {\n for (const fieldID of fieldIDs) {\n const fieldOrigin = this.fieldOrigin(fieldID);\n if (fieldOrigin) {\n if (!refs.outputs[fieldOrigin.id()]) {\n refs.outputs[fieldOrigin.id()] = [];\n }\n if (refs.outputs[fieldOrigin.id()].indexOf(fieldID) < 0) {\n refs.outputs[fieldOrigin.id()].push(fieldID);\n }\n }\n }\n }\n\n resolveInFields(refs: ReferencedFields, fieldIDs: string[]) {\n return this._sourceActivity && this._sourceActivity.resolveFields(refs, fieldIDs);\n }\n\n referencedFields(refs: ReferencedFields): void {\n this._sourceActivity?.referencedFields(refs);\n }\n\n exec(): Promise<void> {\n return this._sourceActivity ? this._sourceActivity.exec() : Promise.resolve();\n }\n\n _emptyData: ReadonlyArray<object> = [];\n inData(): ReadonlyArray<object> {\n return this._sourceActivity ? this._sourceActivity.outData() || this._emptyData : this._emptyData;\n }\n\n computeData(): ReadonlyArray<object> {\n return this.inData();\n }\n\n private _prevDataHash: string = \"\";\n private _prevInData: ReadonlyArray<object> = [];\n private _prevData: ReadonlyArray<object> = [];\n private cachedComputeData(inData: ReadonlyArray<object>): ReadonlyArray<object> {\n const hash = this.hash();\n if (this._prevDataHash !== hash || this._prevInData !== inData) {\n this._prevDataHash = hash;\n this._prevInData = inData;\n this._prevData = update(this._prevData, this.computeData());\n }\n return this._prevData;\n }\n\n outData(): ReadonlyArray<object> {\n return this.cachedComputeData(this.inData());\n }\n}\n\nexport class ActivityArray extends Activity {\n private _activities: Activity[] = [];\n\n activities(): Activity[];\n activities(_: Activity[]): this;\n activities(_?: Activity[]): Activity[] | this {\n if (!arguments.length) return this._activities;\n this._activities = _;\n return this;\n }\n}\nActivityArray.prototype._class += \" ActivityArray\";\n\nexport class ActivityPipeline extends ActivityArray {\n\n activities(): Activity[];\n activities(_: Activity[]): this;\n activities(_?: Activity[]): Activity[] | this {\n if (!arguments.length) return super.activities();\n super.activities(_);\n let prevActivity: Activity;\n for (const activity of _) {\n if (prevActivity) {\n activity.sourceActivity(prevActivity);\n }\n prevActivity = activity;\n }\n return this;\n }\n\n first(): Activity {\n const retVal = this.activities();\n return retVal[0];\n }\n\n last(): Activity | null {\n const retVal = this.activities();\n return retVal[retVal.length - 1];\n }\n\n protected calcUpdatedGraph(activity: Activity): Array<{ from: string, to: Activity }> {\n return activity.updatedBy().map(source => {\n return {\n from: source,\n to: activity\n };\n });\n }\n\n updatedByGraph(): Array<{ from: string, to: Activity }> {\n let retVal: Array<{ from: string, to: Activity }> = [];\n for (const activity of this.activities()) {\n retVal = retVal.concat(this.calcUpdatedGraph(activity));\n }\n return retVal;\n }\n\n fetch(from: number = 0, count: number = Number.MAX_VALUE): Promise<ReadonlyArray<object>> {\n return this.exec().then(() => {\n const data = this.outData();\n if (from === 0 && data.length <= count) {\n return data;\n }\n return data.slice(from, from + count);\n });\n }\n\n // Activity overrides ---\n hash(more: { [key: string]: any } = {}): string {\n return hashSum({\n activities: [this.activities().map(activity => activity.hash())],\n ...more\n });\n }\n\n refreshMeta(): Promise<void> {\n return this.last().refreshMeta();\n }\n\n updatedBy(): string[] {\n let retVal: string[] = [];\n for (const activity of this.activities()) {\n retVal = retVal.concat(activity.updatedBy());\n }\n return retVal;\n }\n\n inFields(): ReadonlyArray<DDL2.IField> {\n return this.first().inFields();\n }\n\n outFields(): ReadonlyArray<DDL2.IField> {\n return this.last().outFields();\n }\n\n localFields(): DDL2.IField[] {\n return this.last().localFields();\n }\n\n fieldOrigin(fieldID: string): Activity | null {\n return this.last().fieldOrigin(fieldID);\n }\n\n referencedFields(refs: ReferencedFields) {\n this.last().referencedFields(refs);\n }\n\n resolveInFields(refs: ReferencedFields, fieldIDs: string[]) {\n this.last().resolveInFields(refs, fieldIDs);\n }\n\n resolveFields(refs: ReferencedFields, fieldIDs: string[]) {\n this.last().resolveFields(refs, fieldIDs);\n }\n\n exec(): Promise<void> {\n return this.last().exec();\n }\n\n outData(): ReadonlyArray<object> {\n return this.last().outData();\n }\n}\nActivityPipeline.prototype._class += \" ActivitySequence\";\n\nexport class ActivitySelection extends ActivityArray {\n private _selection: Activity;\n private _monitorHandle: IMonitorHandle;\n\n selection(): Activity;\n selection(_: Activity): this;\n selection(_?: Activity): Activity | this {\n if (_ === undefined) return this._selection;\n if (this._monitorHandle) {\n this._monitorHandle.remove();\n }\n this._selection = _;\n this._monitorHandle = _.monitor((id, newVal, oldVal) => {\n this.broadcast(id, newVal, oldVal, _);\n });\n return this;\n }\n\n // Activity overrides ---\n hash(more: { [key: string]: any } = {}): string {\n return hashSum({\n selection: this.selection().hash(),\n ...more\n });\n }\n\n label(): string {\n return this.selection().label();\n }\n\n refreshMeta(): Promise<void> {\n return this.selection().refreshMeta();\n }\n\n updatedBy(): string[] {\n return this.selection().updatedBy();\n }\n\n inFields(): ReadonlyArray<DDL2.IField> {\n return this.selection().inFields();\n }\n\n outFields(): ReadonlyArray<DDL2.IField> {\n return this.selection().outFields();\n }\n\n localFields(): DDL2.IField[] {\n return this.selection().localFields();\n }\n\n fieldOrigin(fieldID: string): Activity | null {\n return this.selection().fieldOrigin(fieldID);\n }\n\n referencedFields(refs: ReferencedFields) {\n this.selection().referencedFields(refs);\n }\n\n resolveInFields(refs: ReferencedFields, fieldIDs: string[]) {\n this.selection().resolveInFields(refs, fieldIDs);\n }\n\n resolveFields(refs: ReferencedFields, fieldIDs: string[]) {\n this.selection().resolveFields(refs, fieldIDs);\n }\n\n exec(): Promise<void> {\n return this.selection().exec();\n }\n\n outData(): ReadonlyArray<object> {\n return this.selection().outData();\n }\n}\nActivitySelection.prototype._class += \" ActivitySelection\";\n","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Activity } from \"./activity.ts\";\nimport { Databomb } from \"./databomb.ts\";\nimport { Form } from \"./form.ts\";\nimport { LogicalFile } from \"./logicalfile.ts\";\nimport { RestResult, RestService } from \"./rest.ts\";\nimport { RoxieResult, RoxieService } from \"./roxie.ts\";\nimport { WU, WUResult } from \"./wuresult.ts\";\n\nlet datasourceID = 0;\nexport class Datasource extends Activity {\n\n constructor() {\n super();\n this._id = `ds_${++datasourceID}`;\n }\n}\n\nexport type DatasourceRefType = Databomb | Form | LogicalFile | RoxieResult | WUResult | RestResult;\nexport type DatasourceType = Databomb | Form | LogicalFile | RoxieService | WU | RestService;\n\nexport class DatasourceRef extends Activity {\n _origDatasource;\n declare _datasource: DatasourceRefType;\n\n constructor() {\n super();\n }\n\n hash(more: { [key: string]: any } = {}): string {\n return super.hash({\n datasource: this._datasource ? this._datasource.hash(more) : undefined,\n ...more\n });\n }\n\n toDDL(): DDL2.IDatabombRef {\n return {\n id: this.datasource().id()\n };\n }\n}\nDatasourceRef.prototype._class += \" DatasourceRef\";\n\nexport interface DatasourceRef {\n datasource(): DatasourceRefType;\n datasource(_: DatasourceRefType): this;\n}\n\nDatasourceRef.prototype.publish(\"datasource\", null, \"widget\", \"Datasource Reference\", null, { internal: true });\n\nDatasourceRef.prototype._origDatasource = DatasourceRef.prototype.datasource;\nDatasourceRef.prototype.datasource = function (this: DatasourceRef, _?) {\n const retVal = DatasourceRef.prototype._origDatasource.apply(this, arguments);\n if (_ !== undefined) {\n this.sourceActivity(_);\n }\n return retVal;\n};","import { PropertyExt } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Datasource } from \"./datasource.ts\";\n\ntype IField = DDL2.IFieldBoolean | DDL2.IFieldNumber | DDL2.IFieldString | DDL2.IFieldDataset;\n\nexport class FormField extends PropertyExt {\n protected _owner: Form;\n\n disableChildField(): boolean {\n return this.type() !== \"dataset\";\n }\n\n constructor() {\n super();\n }\n\n toDDL(): IField {\n return {\n type: this.type(),\n id: this.fieldID(),\n default: this.default(),\n children: this.type() === \"dataset\" ? this.childFields().map(cf => cf.toDDL()) : undefined\n } as IField;\n }\n\n fromDDL(ddl: IField): this {\n return this\n .type(ddl.type)\n .fieldID(ddl.id)\n .default(ddl.default)\n .childFields(ddl.type === \"dataset\" && ddl.children ? ddl.children.map(FormField.fromDDL) : [])\n ;\n }\n\n static fromDDL(ddl: IField): FormField {\n return new FormField().fromDDL(ddl);\n }\n\n owner(): Form;\n owner(_: Form): this;\n owner(_?: Form): Form | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.type() && !!this.fieldID();\n }\n\n coerceFunc(): (cell: any) => boolean | number | string {\n switch (this.type()) {\n case \"boolean\":\n return cell => !!cell;\n case \"number\":\n return cell => +cell;\n case \"string\":\n return cell => \"\" + cell;\n }\n return cell => cell;\n }\n\n calcValue() {\n return this.value_exists() ? this.value() : this.default();\n }\n}\n\nexport class Form extends Datasource {\n\n constructor() {\n super();\n }\n\n toDDL(): DDL2.IForm {\n return {\n type: \"form\",\n id: this.id(),\n fields: this.validFields().map(f => f.toDDL())\n };\n }\n\n fromDDL(ddl: DDL2.IForm, skipID = false): this {\n (skipID ? this : this.id(ddl.id))\n .formFields(ddl.fields.map(FormField.fromDDL))\n ;\n return this;\n }\n\n static fromDDL(ddl: DDL2.IForm, skipID = false): Form {\n return new Form().fromDDL(ddl, skipID);\n }\n\n validFields(): FormField[] {\n return this.formFields().filter(f => f.valid());\n }\n\n hash(more: object = {}): string {\n return super.hash({\n ddl: this.toDDL(),\n ...more\n });\n }\n\n refreshMeta(): Promise<void> {\n return Promise.resolve();\n }\n\n label(): string {\n return \"Form\";\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n const retVal: DDL2.IField[] = this.validFields().map(f => f.toDDL());\n return () => retVal;\n }\n\n exec(): Promise<void> {\n return Promise.resolve();\n }\n\n computeData(): ReadonlyArray<object> {\n const retVal = {};\n this.validFields().forEach(f => {\n retVal[f.fieldID()] = f.calcValue();\n });\n return [retVal];\n }\n\n // ===\n total(): number {\n return 1;\n }\n}\nForm.prototype._class += \" Form\";\n\nexport interface FormField {\n type(): \"boolean\" | \"number\" | \"string\" | \"dataset\";\n type(_: \"boolean\" | \"number\" | \"string\" | \"dataset\"): this;\n fieldID(): string;\n fieldID(_: string): this;\n default(): boolean | number | string | any[];\n default(_: boolean | number | string | any[]): this;\n value(): boolean | number | string;\n value(_: boolean | number | string): this;\n value_exists(): boolean;\n childFields(): FormField[];\n childFields(_: FormField[]): this;\n}\n\nexport interface Form {\n formFields(): FormField[];\n formFields(_: FormField[]): this;\n}\n\nFormField.prototype.publish(\"type\", \"string\", \"set\", \"FormField Type\", [\"boolean\", \"number\", \"string\", \"dataset\"]);\nFormField.prototype.publish(\"fieldID\", \"\", \"string\", \"FormField Label\");\nFormField.prototype.publish(\"default\", null, \"any\", \"Default Value\", null, { optional: true });\nFormField.prototype.publish(\"value\", null, \"any\", \"Default Value\", null, { optional: true });\nFormField.prototype.publish(\"childFields\", [], \"propertyArray\", \"Child Fields\", null, { autoExpand: FormField, disable: (w: FormField) => w.disableChildField() });\n\nForm.prototype.publish(\"formFields\", [], \"propertyArray\", \"Multi Fields\", null, { autoExpand: FormField });","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { IDatasource } from \"@hpcc-js/dgrid\";\nimport { isArray } from \"@hpcc-js/util\";\nimport { csvParse as d3CsvParse, tsvParse as d3TsvParse } from \"d3-dsv\";\nimport { Activity } from \"./activity.ts\";\nimport { Datasource } from \"./datasource.ts\";\nimport { FormField } from \"./form.ts\";\n\nfunction fieldType(field: any): DDL2.IFieldType {\n if (isArray(field)) {\n return \"dataset\";\n }\n const type = typeof field;\n switch (type) {\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"object\":\n return type;\n }\n return \"string\";\n}\n\nexport function rowToFields(row: object, _jsonData): DDL2.IField[] {\n // TODO: This heuristic will fail if there are empty nested rows in the first row...\n const retVal: DDL2.IField[] = [];\n for (const key in row) {\n const field = {\n type: fieldType(row[key]),\n id: key\n } as DDL2.IField;\n switch (field.type) {\n case \"object\":\n for (const row of _jsonData) {\n let found = false;\n for (const _childKey in row[key]) {\n const rowFields = rowToFields(row[key], [row[key]]);\n field.fields = {};\n if (rowFields.length) {\n rowFields.forEach(rf => field.fields[rf.id] = rf);\n found = true;\n }\n break;\n }\n if (found) break;\n }\n break;\n case \"dataset\":\n for (const row of _jsonData) {\n if (row[key] && row[key].length) {\n field.children = rowToFields(row[key][0], row[key]);\n break;\n }\n }\n break;\n }\n retVal.push(field);\n }\n return retVal;\n}\n\nexport class Databomb extends Datasource {\n\n private _jsonData: ReadonlyArray<object> = [];\n\n constructor() {\n super();\n }\n\n toDDL(skipPayload: boolean = false): DDL2.IDatabomb {\n return {\n type: \"databomb\",\n id: this.id(),\n format: this.format(),\n payload: skipPayload ? undefined : this.payload(),\n fields: this.validFields().map(f => f.toDDL())\n };\n }\n\n fromDDL(ddl: DDL2.IDatabomb, skipID = false): this {\n (skipID ? this : this.id(ddl.id))\n .format(ddl.format)\n .payload(ddl.payload)\n .databombFields(ddl.fields.map(FormField.fromDDL))\n ;\n return this;\n }\n\n static fromDDL(ddl: DDL2.IDatabomb, skipID = false): Databomb {\n return new Databomb().fromDDL(ddl, skipID);\n }\n\n validFields(): FormField[] {\n return this.databombFields().filter(f => f.valid());\n }\n\n updateJsonData() {\n try {\n switch (this.format()) {\n case \"csv\":\n this._jsonData = d3CsvParse(this.payload());\n break;\n case \"tsv\":\n this._jsonData = d3TsvParse(this.payload());\n break;\n case \"json\":\n default:\n this._jsonData = JSON.parse(this.payload());\n break;\n }\n this.databombFields(this.preCalcFields().map(FormField.fromDDL));\n } catch (e) {\n this.databombFields([]);\n this._jsonData = [];\n }\n }\n\n hash(more: object): string {\n return super.hash({\n ddl: this.toDDL(true),\n ...more\n }) + this.payload();\n }\n\n refreshMeta(): Promise<void> {\n return Promise.resolve();\n }\n\n label(): string {\n return \"Databomb\";\n }\n\n private preCalcFields(): DDL2.IField[] {\n if (this._jsonData.length === 0) return [];\n return rowToFields(this._jsonData[0], this._jsonData);\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => this.validFields().map(f => f.toDDL());\n }\n\n exec(): Promise<void> {\n return Promise.resolve();\n }\n\n computeData(): ReadonlyArray<object> {\n const coarceFuncMap = {};\n this.validFields().forEach(field => {\n coarceFuncMap[field.fieldID()] = field.coerceFunc();\n });\n return this._jsonData.map(row => {\n const retVal = {};\n for (const key in coarceFuncMap) {\n retVal[key] = coarceFuncMap[key](row[key]);\n }\n return retVal;\n });\n }\n\n // ===\n total(): number {\n return this._jsonData.length;\n }\n}\nDatabomb.prototype._class += \" Databomb\";\n\nexport interface Databomb {\n format(): \"json\" | \"csv\" | \"tsv\";\n format(_: \"json\" | \"csv\" | \"tsv\"): this;\n payload(): string;\n payload(_: string): this;\n databombFields(): FormField[];\n databombFields(_: FormField[]): this;\n}\n\nDatabomb.prototype.publish(\"format\", \"json\", \"set\", \"Databomb Format\", [\"json\", \"csv\", \"tsv\"]);\nDatabomb.prototype.publish(\"payload\", \"\", \"string\", \"Databomb array\", null, { multiline: true });\nDatabomb.prototype.publish(\"databombFields\", [], \"propertyArray\", \"Multi Fields\", null, { autoExpand: FormField });\n\nconst payloadFormat = Databomb.prototype.format;\nDatabomb.prototype.format = function (this: Databomb, _?) {\n const retVal = payloadFormat.apply(this, arguments);\n if (arguments.length) {\n this.updateJsonData();\n }\n return retVal;\n};\n\nconst databombPayloadOrig = Databomb.prototype.payload;\nDatabomb.prototype.payload = function (this: Databomb, _?) {\n const retVal = databombPayloadOrig.apply(this, arguments);\n if (arguments.length) {\n this.updateJsonData();\n }\n return retVal;\n};\n\nexport const emptyDatabomb = new Databomb().id(\"Empty\").payload(\"[]\");\n\nexport class DatasourceAdapt implements IDatasource {\n private _activity: Activity;\n\n constructor(activity: Activity) {\n this._activity = activity || emptyDatabomb;\n }\n\n exec(): Promise<void> {\n return this._activity.refreshMeta().then(() => {\n return this._activity.exec();\n });\n }\n\n id(): string {\n return this._activity.id();\n }\n hash(more: { [key: string]: any } = {}): string {\n return this._activity.hash(more);\n }\n label(): string {\n return this._activity.label();\n }\n outFields(): DDL2.IField[] {\n return this._activity && this._activity.outFields ? this._activity.outFields() as DDL2.IField[] : [];\n }\n total(): number {\n return this._activity ? this._activity.outData().length : 0;\n }\n fetch(from: number, count: number): Promise<ReadonlyArray<object>> {\n return this.exec().then(() => {\n const data = this._activity.outData();\n if (from === 0 && data.length <= count) {\n return Promise.resolve(data);\n }\n return Promise.resolve(data.slice(from, from + count));\n });\n }\n}\n","import { Result, Workunit, XSDXMLNode } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { AsyncOrderedQueue, debounce, hashSum } from \"@hpcc-js/util\";\nimport { ElementContainer } from \"../model/element.ts\";\nimport { schemaRow2IField } from \"./activity.ts\";\nimport { Datasource, DatasourceRef } from \"./datasource.ts\";\n\nexport abstract class ESPResult extends Datasource {\n protected _result: Result;\n protected _schema: XSDXMLNode[] = [];\n protected _meta: DDL2.IField[] = [];\n protected _total: number;\n private _data: ReadonlyArray<object> = [];\n\n constructor(protected _ec: ElementContainer) {\n super();\n this\n .samples(this._ec.samples())\n .sampleSize(this._ec.sampleSize())\n ;\n }\n\n hash(more: object = {}): string {\n return hashSum({\n samples: this.samples(),\n sampleSize: this.sampleSize(),\n ...more\n });\n }\n\n abstract _createResult(): Result;\n\n _prevMetaHash: string;\n refreshMetaPromise: Promise<void>;\n refreshMeta(): Promise<void> {\n if (this._prevMetaHash !== this.hash()) {\n this._prevMetaHash = this.hash();\n delete this.refreshMetaPromise;\n }\n if (!this.refreshMetaPromise) {\n this.refreshMetaPromise = super.refreshMeta().then(() => {\n this._result = this._createResult();\n if (this._result) {\n return this._result.refresh();\n }\n throw new Error(\"No valid result\");\n }).then(result => {\n this._total = result.Total;\n this._schema = result.fields();\n this._meta = this._meta && this._meta.length ? this._meta : this._schema.map(schemaRow2IField);\n }).catch(e => {\n this._total = 0;\n this._schema = [];\n this._meta = [];\n });\n }\n return this.refreshMetaPromise;\n }\n\n responseFields(): DDL2.IField[];\n responseFields(_: DDL2.IField[]): this;\n responseFields(_?: DDL2.IField[]): ReadonlyArray<DDL2.IField> | this {\n if (!arguments.length) return this._meta;\n this._meta = _;\n this.refreshMeta();\n return this;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => this.responseFields();\n }\n\n exec(): Promise<void> {\n return this._exec();\n }\n\n private _prevExecHash: string;\n private _exec = debounce((): Promise<void> => {\n if (this._prevExecHash !== this.hash()) {\n this._prevExecHash = this.hash();\n return super.exec().then(() => {\n return this.sample();\n }).then(response => {\n this._data = this.fixInt64(response);\n }).catch(e => {\n this._data = [];\n });\n } else {\n return Promise.resolve();\n }\n });\n\n inData(): ReadonlyArray<object> {\n return this._data;\n }\n\n computeData(): ReadonlyArray<object> {\n return this._data;\n }\n\n total(): number {\n return this._total;\n }\n\n // ---\n async fetch(from: number, count: number): Promise<any[]> {\n if (count > this.samples() * this.sampleSize()) {\n return this.sample();\n }\n return this._fetch(from, count);\n }\n\n private _fetchQ = new AsyncOrderedQueue();\n private _fetch(from: number, count: number): Promise<any[]> {\n return this._fetchQ.push(\n this._result ? this._result\n .fetchRows(from, count)\n .catch(e => {\n return [];\n }) :\n Promise.resolve([])\n );\n }\n\n private sample = debounce((samples: number = this.samples(), sampleSize: number = this.sampleSize()): Promise<any[]> => {\n const pages: Array<Promise<any[]>> = [];\n if (samples * sampleSize >= this.total()) {\n pages.push(this._fetch(0, this.total()));\n } else {\n const lastPage = this.total() - sampleSize;\n for (let i = 0; i < samples; ++i) {\n pages.push(this._fetch(Math.floor(i * lastPage / samples), sampleSize));\n }\n }\n return Promise.all(pages).then(responses => {\n let retVal2: any[] = [];\n for (const response of responses) {\n retVal2 = retVal2.concat(response);\n }\n return retVal2;\n });\n });\n}\nESPResult.prototype._class += \" ESPResult\";\n\nexport interface ESPResult {\n samples(): number;\n samples(_: number): this;\n sampleSize(): number;\n sampleSize(_: number): this;\n}\n\nexport class WUResult extends ESPResult {\n\n _origWu;\n _origResultName;\n\n declare _wu: WU;\n declare _resultName: string;\n\n constructor(_ec: ElementContainer) {\n super(_ec);\n this._wu = new WU(this._ec);\n }\n\n url(): string {\n return this._wu.url();\n }\n\n wuid(): string {\n return this._wu.wuid();\n }\n\n toDDL(): DDL2.IWUResult {\n return {\n type: \"wuresult\",\n id: this.id(),\n url: this._wu.url(),\n wuid: this.wuid(),\n outputs: {\n [this.resultName()]: {\n fields: this.responseFields()\n }\n }\n };\n }\n\n fromDDL(ddl: DDL2.IWUResult, skipID = false): this {\n if (ddl.outputs[this.resultName()]) {\n return this.responseFields(ddl.outputs[this.resultName()].fields);\n }\n return this;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.IWUResult, wu: WU, resultName: string, skipID = false): WUResult {\n return new WUResult(ec)\n .wu(wu)\n .resultName(resultName)\n .fromDDL(ddl)\n ;\n }\n\n _createResult(): Result {\n if (this._wu.url() && this.wuid() && this.resultName()) {\n return Result.attach({ baseUrl: this._wu.url(), hookSend: this._ec.hookSend() }, this.wuid(), this.resultName());\n }\n return undefined;\n }\n\n sourceHash(): string {\n return super.hash({\n wuid: this.wuid()\n });\n }\n\n hash(more: object): string {\n return super.hash({\n ddl: this.toDDL()\n });\n }\n\n label(): string {\n return `${this.wuid()}\\n${this.resultName()}`;\n }\n}\nWUResult.prototype._class += \" WUResult\";\n\nexport interface WUResult {\n wu(): WU;\n wu(_: WU): this;\n resultName(): string;\n resultName(_: string): this;\n}\n\nexport class WU extends Datasource {\n _origUrl;\n _origWuid;\n\n protected _workunit: Workunit;\n protected _outputs: { [id: string]: WUResult } = {};\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IWUResult {\n const ddlOutputs: DDL2.OutputDict = {};\n for (const resultName in this._outputs) {\n ddlOutputs[resultName] = {\n fields: this._outputs[resultName].responseFields()\n };\n }\n return {\n type: \"wuresult\",\n id: this.id(),\n url: this.url(),\n wuid: this.wuid(),\n outputs: ddlOutputs\n };\n }\n\n fromDDL(ddl: DDL2.IWUResult, skipID = false): this {\n (skipID ? this : this.id(ddl.id))\n .url(ddl.url)\n .wuid(ddl.wuid)\n ;\n const wuResults: { [id: string]: WUResult } = {};\n for (const resultName in ddl.outputs) {\n wuResults[resultName] = WUResult.fromDDL(this._ec, ddl, this, resultName);\n }\n this._outputs = wuResults;\n return this;\n }\n\n static fromDDL(elementContainer: ElementContainer, ddl: DDL2.IWUResult, skipID = false): WU {\n return new WU(elementContainer).fromDDL(ddl, skipID);\n }\n\n hash(): string {\n return hashSum({\n url: this.url(),\n wuid: this.wuid()\n });\n }\n\n label(): string {\n return this.wuid();\n }\n\n outputs(): WUResult[] {\n const retVal = [];\n for (const resultName in this._outputs) {\n retVal.push(this._outputs[resultName]);\n }\n return retVal;\n }\n\n outputDDL(): DDL2.OutputDict {\n const retVal: DDL2.OutputDict = {};\n for (const resultName in this._outputs) {\n retVal[resultName] = {\n fields: this._outputs[resultName].outFields() as DDL2.IField[]\n };\n }\n return retVal;\n }\n\n output(id: string): WUResult {\n return this._outputs[id];\n }\n\n private _prevSourceHash: string;\n private refreshMetaPromise: Promise<void>;\n private _resultNames: string[] = [];\n refreshMeta(): Promise<void> {\n if (!this.url() || !this.wuid()) {\n return Promise.resolve();\n }\n if (this._prevSourceHash !== this.hash()) {\n this._prevSourceHash = this.hash();\n delete this.refreshMetaPromise;\n }\n if (!this.refreshMetaPromise) {\n this.refreshMetaPromise = super.refreshMeta().then(() => {\n this._workunit = Workunit.attach({ baseUrl: this.url(), hookSend: this._ec.hookSend() }, this.wuid());\n return this._workunit.fetchResults();\n }).then(results => {\n this._resultNames = results.map(r => r.Name);\n }).catch(e => {\n });\n }\n return this.refreshMetaPromise;\n }\n\n resultNames(): string[] {\n return this._resultNames;\n }\n}\nWU.prototype._class += \" WU\";\n\nexport interface WU {\n url(): string;\n url(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n}\n\nexport class WUResultRef extends DatasourceRef {\n\n datasource(): WUResult;\n datasource(_: WUResult): this;\n datasource(_?: WUResult): this | WUResult {\n return super.datasource.apply(this, arguments);\n }\n\n resultName(): string;\n resultName(_: string): this;\n resultName(_?: string): string | this {\n if (!arguments.length) return this.datasource().resultName();\n this.datasource().resultName(_);\n return this;\n }\n\n toDDL(): DDL2.IWUResultRef {\n return {\n id: this.datasource().wu().id(),\n output: this.resultName()\n };\n }\n}\nWUResultRef.prototype._class += \" WUResultRef\";\n\nESPResult.prototype.publish(\"samples\", 10, \"number\", \"Number of samples\");\nESPResult.prototype.publish(\"sampleSize\", 100, \"number\", \"Sample size\");\n\nWUResult.prototype.publish(\"wu\", null, \"widget\", \"Workunit\");\nWUResult.prototype.publish(\"resultName\", \"\", \"set\", \"Result Name\", function (this: WUResult): string[] {\n return this._wu !== undefined ? this._wu.resultNames() : [];\n});\n\nWUResult.prototype._origWu = WUResult.prototype.wu;\nWUResult.prototype.wu = function (this: WUResult, _?) {\n const retVal = WUResult.prototype._origWu.apply(this, arguments);\n if (_ !== undefined) {\n this._wu.refreshMeta();\n }\n return retVal;\n};\n\nWUResult.prototype._origResultName = WUResult.prototype.resultName;\nWUResult.prototype.resultName = function (this: WUResult, _?) {\n const prev = this._resultName;\n const retVal = WUResult.prototype._origResultName.apply(this, arguments);\n if (_ !== undefined && prev !== _) {\n this.responseFields([]);\n }\n return retVal;\n};\n\nWU.prototype.publish(\"url\", \"\", \"string\", \"ESP Url (http://x.x.x.x:8010)\");\nWU.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\n\nWU.prototype._origUrl = WU.prototype.url;\nWU.prototype.url = function (this: WU, _?) {\n const retVal = WU.prototype._origUrl.apply(this, arguments);\n if (_ !== undefined) {\n this.refreshMeta();\n }\n return retVal;\n};\n\nWU.prototype._origWuid = WU.prototype.wuid;\nWU.prototype.wuid = function (this: WU, _?) {\n const retVal = WU.prototype._origWuid.apply(this, arguments);\n if (_ !== undefined) {\n this.refreshMeta();\n }\n return retVal;\n};","import { Result } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { ElementContainer } from \"../model/element.ts\";\nimport { ESPResult } from \"./wuresult.ts\";\n\nexport class LogicalFile extends ESPResult {\n\n constructor(_ec: ElementContainer) {\n super(_ec);\n }\n\n toDDL(): DDL2.ILogicalFile {\n return {\n type: \"logicalfile\",\n id: this.id(),\n url: this.url(),\n logicalFile: this.logicalFile(),\n fields: this.responseFields()\n };\n }\n\n fromDDL(ddl: DDL2.ILogicalFile, skipID = false): this {\n (skipID ? this : this.id(ddl.id))\n .url(ddl.url)\n .logicalFile(ddl.logicalFile)\n ;\n return this;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.ILogicalFile, skipID = false): LogicalFile {\n return new LogicalFile(ec).fromDDL(ddl, skipID);\n }\n\n _createResult(): Result {\n return Result.attachLogicalFile({ baseUrl: this.url(), hookSend: this._ec.hookSend() }, this.nodeGroup(), this.logicalFile());\n }\n\n sourceHash(): string {\n return super.hash({\n logicalFile: this.logicalFile()\n });\n }\n\n hash(more: object): string {\n return super.hash({\n ddl: this.toDDL()\n });\n }\n\n label(): string {\n return `${this.logicalFile()}`;\n }\n}\nLogicalFile.prototype._class += \" LogicalFile\";\n\nexport interface LogicalFile {\n url(): string;\n url(_: string): this;\n nodeGroup(): string;\n nodeGroup(_: string): this;\n logicalFile(): string;\n logicalFile(_: string): this;\n}\nLogicalFile.prototype.publish(\"url\", \"\", \"string\", \"ESP Url (http://x.x.x.x:8010)\");\nLogicalFile.prototype.publish(\"nodeGroup\", \"\", \"string\", \"Node Group\");\nLogicalFile.prototype.publish(\"logicalFile\", \"\", \"string\", \"Logical File Name\");","import { PropertyExt } from \"@hpcc-js/common\";\nimport { createConnection } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { AsyncOrderedQueue, compare, hashSum } from \"@hpcc-js/util\";\nimport { Element, ElementContainer } from \"../model/element.ts\";\nimport { IActivityError, ReferencedFields } from \"./activity.ts\";\nimport { rowToFields } from \"./databomb.ts\";\nimport { Datasource, DatasourceRef } from \"./datasource.ts\";\n\nexport class RestField extends PropertyExt {\n protected _owner: RestService;\n\n constructor() {\n super();\n }\n\n toDDL(): DDL2.IFieldString {\n return {\n type: \"string\",\n id: this.fieldID()\n };\n }\n\n fromDDL(ddl: DDL2.IFieldString): this {\n return this\n .fieldID(ddl.id)\n ;\n }\n\n static fromDDL(ddl: DDL2.IFieldString): RestField {\n return new RestField().fromDDL(ddl);\n }\n\n owner(): RestService;\n owner(_: RestService): this;\n owner(_?: RestService): RestService | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.fieldID();\n }\n}\n\nexport class RestService extends Datasource {\n\n private _responseFields: { [outputID: string]: DDL2.IField[] } = {};\n\n constructor(readonly _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IRestService {\n return {\n type: \"rest\",\n id: this.id(),\n url: this.url(),\n action: this.action(),\n mode: this.mode(),\n inputs: this.validRequestFields().map(rf => rf.toDDL()),\n outputs: this.outputDDL()\n };\n }\n\n fromDDL(ddl: DDL2.IRestService, skipID = false): this {\n (skipID ? this : this.id(ddl.id))\n .url(ddl.url)\n .action(ddl.action)\n .mode(ddl.mode || \"get\")\n .requestFields(ddl.inputs.map(RestField.fromDDL))\n ;\n for (const key in ddl.outputs) {\n this.responseFields(key, ddl.outputs[key].fields);\n }\n return this;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.IRestService, skipID = false): RestService {\n return new RestService(ec).fromDDL(ddl, skipID);\n }\n\n hash(more: object = {}): string {\n return hashSum({\n url: this.url(),\n action: this.action(),\n mode: this.mode(),\n ...more\n });\n }\n\n label(): string {\n return this.action();\n }\n\n responseFields(resultName: string): DDL2.IField[];\n responseFields(resultName: string, _: DDL2.IField[]): this;\n responseFields(resultName: string, _?: DDL2.IField[]): DDL2.IField[] | this {\n if (arguments.length === 1) return this._responseFields[resultName] || [];\n this._responseFields[resultName] = _;\n return this;\n }\n\n validRequestFields(): RestField[] {\n return this.requestFields().filter(f => f.valid());\n }\n\n private _prevRequestHash;\n private _prevPromise;\n private _submitQ = new AsyncOrderedQueue();\n submit(request: { [key: string]: any }): Promise<{ [key: string]: any }> {\n const requestHash = hashSum(request);\n if (!this._prevPromise || this._prevRequestHash !== requestHash) {\n this._prevRequestHash = requestHash;\n const conn = createConnection({ baseUrl: this.url(), type: this.mode() });\n this._prevPromise = this._submitQ.push(conn.send(this.action(), request));\n }\n return this._prevPromise;\n }\n\n resultNames(): string[] {\n const retVal: string[] = [];\n for (const key in this._responseFields) {\n retVal.push(key);\n }\n return retVal;\n }\n\n outputDDL(): DDL2.OutputDict {\n const retVal: DDL2.OutputDict = {};\n this.resultNames().forEach(resultName => {\n retVal[resultName] = {\n fields: this._responseFields[resultName]\n };\n });\n return retVal;\n }\n}\nRestService.prototype._class += \" RestService\";\n\nexport class RestResult extends Datasource {\n\n _origService;\n\n declare _service: RestService;\n\n constructor(private _ec: ElementContainer) {\n super();\n this._service = new RestService(this._ec);\n }\n\n validRequestFields(): RestField[] {\n return this.service().validRequestFields();\n }\n\n toDDL(): DDL2.IRestService {\n return this.service().toDDL();\n }\n\n fromDDL(ddl: DDL2.IRestService): this {\n this.service().fromDDL(ddl);\n return this;\n }\n\n static fromDDL(ec: ElementContainer, rs: RestService, resultName: string): RestResult {\n return new RestResult(ec)\n .id(`${rs.id()}_${resultName}`)\n .service(rs)\n .resultName(resultName)\n ;\n }\n\n serviceID(): string {\n return `${this.service().url()}/${this.service().action()}}`;\n }\n\n sourceHash(): string {\n return this.service().hash();\n }\n\n requestFields(): DDL2.IField[] {\n return this.service().requestFields().map(rf => rf.toDDL());\n }\n\n responseFields(): DDL2.IField[];\n responseFields(_: DDL2.IField[]): this;\n responseFields(_?: DDL2.IField[]): this | DDL2.IField[] {\n if (!arguments.length) return this.service().responseFields(this.resultName());\n this.service().responseFields(this.resultName(), _);\n return this;\n }\n\n hash(more: object = {}): string {\n return hashSum({\n source: this.sourceHash(),\n resultName: this.resultName(),\n ...more\n });\n }\n\n label(): string {\n return `${this.service().label()}\\n${this.resultName()}`;\n }\n\n private _jsonData: object[] = [];\n private jsonDataFields(): DDL2.IField[] {\n if (!this._jsonData || !this._jsonData.length) return [];\n const retVal = rowToFields(this._jsonData[0], this._jsonData);\n this.responseFields(retVal);\n return retVal;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => this.jsonDataFields();\n }\n\n computeData(): ReadonlyArray<object> {\n return this._jsonData;\n }\n\n submit(request: { [key: string]: any }): Promise<{ [key: string]: any }> {\n return this.service().submit(request).then(response => {\n const resultName = this.resultName();\n const resultFields = resultName ? resultName.split(\".\") : [];\n for (const field of resultFields) {\n response = (response || {})[field];\n }\n this._jsonData = response as object[];\n return response;\n });\n }\n\n formatRequest() {\n const request = {};\n this.service().validRequestFields().forEach(f => {\n request[f.fieldID()] = \"\";\n });\n return request;\n }\n\n exec(): Promise<void> {\n return this.submit(this.formatRequest()).then(response => { });\n }\n}\nRestResult.prototype._class += \" RestResult\";\n\nexport class Param extends PropertyExt {\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.source_valid()) {\n retVal.push({\n source: `${prefix}.source.${this.source()}`,\n msg: `Invalid source: \"${this.source()}\"`,\n hint: `expected: ${JSON.stringify(this.visualizationIDs())}`\n });\n }\n if (!this.remoteField_valid()) {\n retVal.push({\n source: `${prefix}.remoteField`,\n msg: `Invalid remoteField: \"${this.remoteField()}\"`,\n hint: `expected: ${JSON.stringify(this.sourceOutFields())}`\n });\n }\n if (!this.value_valid()) {\n retVal.push({\n source: `${prefix}.value`,\n msg: `Invalid value: \"${this.value()}\"`,\n hint: \"expected: any value.\"\n });\n }\n return retVal;\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IRequestField {\n return {\n source: this.source(),\n remoteFieldID: this.remoteField(),\n localFieldID: this.localField(),\n value: this.value()\n };\n }\n\n fromDDL(ddl: DDL2.IRequestField): this {\n return this\n .source(ddl.source)\n .remoteField(ddl.remoteFieldID)\n .localField(ddl.localFieldID)\n .value(ddl.value)\n ;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.IRequestField): Param {\n return new Param(ec).fromDDL(ddl);\n }\n\n hash() {\n return hashSum({\n label: this.localField(),\n source: this.source(),\n sourceField: this.remoteField()\n });\n }\n\n visualizationIDs() {\n return this._ec.elementIDs();\n }\n\n sourceFields() {\n return this.sourceOutFields().map(field => field.id);\n }\n\n sourceViz(): Element {\n return this._ec.element(this.source());\n }\n\n sourceOutFields(): ReadonlyArray<DDL2.IField> {\n return this.sourceViz().hipiePipeline().selectionFields();\n }\n\n sourceSelection(): any[] {\n return this.sourceViz().selection();\n }\n\n calcValue(): Array<string | number | boolean> {\n if (this.source_exists() && this.remoteField_exists()) {\n const sourceSelection = this.sourceSelection();\n return sourceSelection.map(row => row[this.remoteField()]);\n } else if (this.value_exists()) {\n return [this.value()];\n }\n return [\"\"];\n }\n\n exists(): boolean {\n return this.localField_exists() && ((this.source_exists() && this.remoteField_exists()) || this.value_exists());\n }\n}\nParam.prototype._class += \" Param\";\n\nexport class RestResultRef extends DatasourceRef {\n\n serviceID(): string {\n return this.datasource().serviceID();\n }\n\n private _data: ReadonlyArray<object> = [];\n\n datasource(): RestResult;\n datasource(_: RestResult): this;\n datasource(_?: RestResult): this | RestResult {\n return super.datasource.apply(this, arguments);\n }\n\n url(): string {\n return this.datasource().service().url();\n }\n\n action(): string {\n return this.datasource().service().action();\n }\n\n resultName(): string {\n return this.datasource().resultName();\n }\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const filter of this.validParams()) {\n retVal = retVal.concat(filter.validate(\"request\"));\n }\n return retVal;\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IRoxieServiceRef {\n return {\n id: this.datasource().service().id(),\n output: this.resultName(),\n request: this.validParams().map((vp): DDL2.IRequestField => {\n return {\n source: vp.source(),\n remoteFieldID: vp.remoteField(),\n localFieldID: vp.localField(),\n value: vp.value()\n };\n })\n };\n }\n\n sourceHash(): string {\n return this.datasource().hash();\n }\n\n requestFieldRefs(): DDL2.IRequestField[];\n requestFieldRefs(_: DDL2.IRequestField[]): this;\n requestFieldRefs(_?: DDL2.IRequestField[]): DDL2.IRequestField[] | this {\n if (!arguments.length) return this.validParams().map(param => param.toDDL());\n this.request(_.map(fc => Param.fromDDL(this._ec, fc)));\n return this;\n }\n\n requestFields(): DDL2.IField[] {\n return this.datasource().requestFields();\n }\n\n responseFields(): DDL2.IField[] {\n return this.datasource().responseFields();\n }\n\n hash(): string {\n return this.datasource().hash({\n resultName: this.resultName(),\n request: this.formatRequest()\n });\n }\n\n label(): string {\n return `${this.datasource().label()}\\n${this.datasource().resultName()}`;\n }\n\n elementIDs() {\n return this._ec.elementIDs();\n }\n\n element(source) {\n return this._ec.element(source);\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n const localFieldIDs: string[] = [];\n for (const param of this.validParams()) {\n const filterSource = param.sourceViz().hipiePipeline();\n if (!refs.inputs[this.id()]) {\n refs.inputs[this.id()] = [];\n }\n refs.inputs[this.id()].push(param.localField());\n filterSource.resolveFields(refs, [param.remoteField()]);\n }\n super.resolveFields(refs, localFieldIDs);\n }\n\n validParams() {\n return this.request().filter(param => param.exists());\n }\n\n refreshMeta(): Promise<void> {\n return this.datasource().refreshMeta().then(() => {\n const oldParams = this.request();\n const diffs = compare(oldParams.map(p => p.localField()), this.datasource().validRequestFields().map(ff => ff.fieldID()));\n const newParams = oldParams.filter(op => diffs.update.indexOf(op.localField()) >= 0);\n this.request(newParams.concat(diffs.enter.map(label => new Param(this._ec).localField(label))));\n });\n }\n\n updatedBy(): string[] {\n return this.validParams().map(param => param.source());\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return this.datasource().computeFields(inFields);\n }\n\n formatRequest(): { [key: string]: any } {\n const request = this.datasource().formatRequest();\n this.request().forEach(f => {\n if (request[f.localField()] !== undefined) {\n request[f.localField()] = f.calcValue() || request[f.localField()];\n }\n });\n return request;\n }\n\n private _prevRequestHash;\n private _prevRequestPromise;\n exec(): Promise<void> {\n const request = this.formatRequest();\n const requestHash = hashSum({ hash: this.hash(), request });\n if (this._prevRequestHash !== requestHash) {\n this._prevRequestHash = requestHash;\n this._prevRequestPromise = this.datasource().submit(request).then((response: { [key: string]: any }) => {\n this._data = this.fixInt64(response);\n return this._data;\n });\n }\n return this._prevRequestPromise;\n }\n\n inData(): ReadonlyArray<object> {\n return this._data;\n }\n\n computeData(): ReadonlyArray<object> {\n return this._data;\n }\n}\nRestResultRef.prototype._class += \" RestResultRef\";\n\nexport interface RestField {\n fieldID(): string;\n fieldID(_: string): this;\n}\n\nRestField.prototype.publish(\"fieldID\", \"\", \"string\", \"RestField Label\");\n\nexport interface RestService {\n url(): string;\n url(_: string): this;\n action(): string;\n action(_: string): this;\n mode(): \"get\" | \"post\";\n mode(_: \"get\" | \"post\"): this;\n requestFields(): RestField[];\n requestFields(_: RestField[]): this;\n}\n\nRestService.prototype.publish(\"url\", \"\", \"string\", \"REST Url\");\nRestService.prototype.publish(\"action\", \"\", \"string\", \"Query Set\");\nRestService.prototype.publish(\"mode\", \"get\", \"set\", \"Request mode\", [\"get\", \"post\"]);\nRestService.prototype.publish(\"requestFields\", [], \"propertyArray\", \"Multi Fields\", null, { autoExpand: RestField });\n\nexport interface RestResult {\n service(): RestService;\n service(_: RestService): this;\n resultName(): string;\n resultName(_: string): this;\n}\n\nRestResult.prototype.publish(\"service\", null, \"widget\", \"Rest service\");\nRestResult.prototype.publish(\"resultName\", \"\", \"string\", \"Result Name\");\n\nRestResult.prototype._origService = RestResult.prototype.service;\nRestResult.prototype.service = function (this: RestResult, _?) {\n const retVal = RestResult.prototype._origService.apply(this, arguments);\n if (_ !== undefined) {\n this._service.refreshMeta();\n }\n return retVal;\n};\n\nexport interface Param {\n localField(): string;\n localField(_: string): this;\n localField_exists(): boolean;\n source(): string;\n source(_: string): this;\n source_exists(): boolean;\n source_valid(): boolean;\n source_disabled(): boolean;\n remoteField(): string;\n remoteField(_: string): this;\n remoteField_exists(): boolean;\n remoteField_valid(): boolean;\n remoteField_disabled(): boolean;\n value(): string;\n value(_: string): this;\n value_exists(): boolean;\n value_valid(): boolean;\n value_disabled(): boolean;\n}\n\nParam.prototype.publish(\"localField\", null, \"string\", \"Label\");\nParam.prototype.publish(\"source\", null, \"set\", \"Activity\", function (this: Param) { return this.visualizationIDs(); }, {\n optional: true,\n disable: (w: Param): boolean => w.value_exists(),\n validate: (w: Param): boolean => w.source_disabled() || w.visualizationIDs().indexOf(w.source()) >= 0\n});\nParam.prototype.publish(\"remoteField\", null, \"set\", \"Source Field\", function (this: Param) { return this.sourceFields(); }, {\n optional: true,\n disable: (w: Param): boolean => !w.source_exists() || w.value_exists(),\n validate: (w: Param): boolean => w.remoteField_disabled() || w.sourceFields().indexOf(w.remoteField()) >= 0\n});\nParam.prototype.publish(\"value\", null, \"string\", \"Static Value\", null, {\n optional: true,\n disable: (w: Param): boolean => w.source_exists(),\n validate: (w: Param): boolean => w.value_disabled() || w.value_exists()\n});\n\nexport interface RestResultRef {\n request(): Param[];\n request(_: Param[]): this;\n}\n\nRestResultRef.prototype.publish(\"request\", [], \"propertyArray\", \"Request Fields\");\n","import { Query as CommsQuery } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { AsyncOrderedQueue, compare, hashSum } from \"@hpcc-js/util\";\nimport { ElementContainer } from \"../model/element.ts\";\nimport { IActivityError, ReferencedFields } from \"./activity.ts\";\nimport { Datasource, DatasourceRef } from \"./datasource.ts\";\nimport { Param } from \"./rest.ts\";\n\nfunction parseUrl(_: string): { url: string, querySet: string, queryID: string } {\n // \"http://10.241.100.157:8002/WsEcl/submit/query/roxie/carmigjx_govbisgsavi.Ins4621360_Service_00000006/json\",\n const parts = _.split(\"/WsEcl/submit/query/\");\n if (parts.length < 2) throw new Error(`Invalid roxie URL: ${_}`);\n const urlParts = parts[0].split(\":\");\n if (urlParts.length < 3) throw new Error(`Invalid roxie URL: ${_}`);\n const roxieParts = parts[1].split(\"/\");\n if (roxieParts.length < 2) throw new Error(`Invalid roxie URL: ${_}`);\n return {\n url: `${urlParts[0]}:${urlParts[1]}:${urlParts[2] === \"18002\" ? \"18010\" : \"8010\"}`,\n querySet: roxieParts[0],\n queryID: roxieParts[1]\n };\n}\n\nfunction isHipieRequest(requestField: string): boolean {\n return requestField.length >= 8 && requestField.indexOf(\"_changed\") === requestField.length - 8;\n}\n\nfunction isHipieResponse(resultName: string): boolean {\n return (resultName.length >= 8 && resultName.indexOf(\"_changed\") === resultName.length - 8) ||\n ([\"HIPIE_DDL\", \"HIPIE_DDLGLOBALS\", \"hipieversion\"].indexOf(resultName) >= 0)\n ;\n}\n\nexport class RoxieService extends Datasource {\n private _query: CommsQuery;\n private _requestFields: DDL2.IField[];\n private _responseFields: { [outputID: string]: DDL2.IField[] } = {};\n private _type: \"roxie\" | \"hipie\" = \"roxie\";\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IRoxieService | DDL2.IHipieService {\n return {\n type: this._type,\n id: this.id(),\n url: this.url(),\n querySet: this.querySet(),\n queryID: this.queryID(),\n inputs: this.requestFields(),\n outputs: this.outputDDL()\n };\n }\n\n fromDDL(ddl: DDL2.IRoxieService | DDL2.IHipieService, skipID = false): this {\n this._type = ddl.type;\n (skipID ? this : this.id(ddl.id))\n .url(ddl.url)\n .querySet(ddl.querySet)\n .queryID(ddl.queryID)\n ;\n if (ddl.inputs && ddl.inputs.length) {\n this.requestFields(ddl.inputs);\n }\n for (const key in ddl.outputs) {\n this.responseFields(key, ddl.outputs[key].fields);\n }\n return this;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.IRoxieService | DDL2.IHipieService, skipID = false): RoxieService {\n return new RoxieService(ec).fromDDL(ddl, skipID);\n }\n\n hash(more: object = {}): string {\n return hashSum({\n url: this.url(),\n querySet: this.querySet(),\n queryId: this.queryID(),\n ignoreHipieRequest: this.ignoreHipieRequest(),\n ignoreHipieResponse: this.ignoreHipieResponse(),\n ...more\n });\n }\n\n label(): string {\n return this.queryID();\n }\n\n private _prevSourceHash: string;\n private refreshMetaPromise: Promise<void>;\n refreshMeta(): Promise<void> {\n if (this._prevSourceHash !== this.hash()) {\n this._prevSourceHash = this.hash();\n delete this.refreshMetaPromise;\n }\n if (!this.refreshMetaPromise) {\n const hasMeta = !!this._requestFields;\n this.refreshMetaPromise = new Promise<CommsQuery>((resolve, reject) => {\n const query = CommsQuery.attach({ baseUrl: this.url(), hookSend: this._ec.hookSend() }, this.querySet(), this.queryID());\n if (!hasMeta || this.ignoreHipieRequest() || this.ignoreHipieResponse()) {\n resolve(query.refresh());\n }\n resolve(query);\n }).then((query) => {\n this._query = query;\n if (!hasMeta || this.ignoreHipieRequest()) {\n this._requestFields = query.requestFields().filter(row => this._type === \"roxie\" || !isHipieRequest(row.id));\n }\n if (!hasMeta || this.ignoreHipieResponse()) {\n query.resultNames().filter(resultName => this._type === \"roxie\" || !isHipieResponse(resultName)).forEach(resultName => {\n this._responseFields[resultName] = query.resultFields(resultName);\n });\n }\n });\n }\n return this.refreshMetaPromise;\n }\n\n requestFields(): DDL2.IField[];\n requestFields(_: DDL2.IField[]): this;\n requestFields(_?: DDL2.IField[]): DDL2.IField[] | this {\n if (!arguments.length) return this._requestFields || [];\n this._requestFields = _;\n return this;\n }\n\n responseFields(resultName: string): DDL2.IField[];\n responseFields(resultName: string, _: DDL2.IField[]): this;\n responseFields(resultName: string, _?: DDL2.IField[]): DDL2.IField[] | this {\n if (arguments.length === 1) return this._responseFields[resultName] || [];\n this._responseFields[resultName] = _;\n return this;\n }\n\n private _prevRequestHash;\n private _prevPromise;\n private _submitQ = new AsyncOrderedQueue();\n submit(request: { [key: string]: any }): Promise<{ [key: string]: any }> {\n const requestHash = hashSum(request);\n if (!this._prevPromise || this._prevRequestHash !== requestHash) {\n this._prevRequestHash = requestHash;\n this._prevPromise = this._submitQ.push(this._query.submit(request));\n }\n return this._prevPromise;\n }\n\n resultNames(): string[] {\n const retVal: string[] = [];\n for (const key in this._responseFields) {\n retVal.push(key);\n }\n return retVal;\n }\n\n outputDDL(): DDL2.OutputDict {\n const retVal: DDL2.OutputDict = {};\n this.resultNames().forEach(resultName => {\n retVal[resultName] = {\n fields: this._responseFields[resultName]\n };\n });\n return retVal;\n }\n}\nRoxieService.prototype._class += \" RoxieService\";\n\nexport interface RoxieService {\n url(): string;\n url(_: string): this;\n querySet(): string;\n querySet(_: string): this;\n queryID(): string;\n queryID(_: string): this;\n ignoreHipieRequest(): boolean;\n ignoreHipieRequest(_: boolean): this;\n ignoreHipieResponse(): boolean;\n ignoreHipieResponse(_: boolean): this;\n}\n\nRoxieService.prototype.publish(\"url\", \"\", \"string\", \"ESP Url (http://x.x.x.x:8002)\");\nRoxieService.prototype.publish(\"querySet\", \"\", \"string\", \"Query Set\");\nRoxieService.prototype.publish(\"queryID\", \"\", \"string\", \"Query ID\");\nRoxieService.prototype.publish(\"ignoreHipieRequest\", false, \"boolean\", \"Ignore provided DDL request\");\nRoxieService.prototype.publish(\"ignoreHipieResponse\", false, \"boolean\", \"Ignore provided DDL response\");\n\nexport class RoxieResult extends Datasource {\n\n _origService;\n\n declare _service: RoxieService;\n\n constructor(private _ec: ElementContainer) {\n super();\n this._service = new RoxieService(this._ec);\n }\n\n toDDL(): DDL2.IRoxieService | DDL2.IHipieService {\n return this.service().toDDL();\n }\n\n fromDDL(ddl: DDL2.IRoxieService): this {\n this.service().fromDDL(ddl);\n return this;\n }\n\n static fromDDL(ec: ElementContainer, rs: RoxieService, resultName: string): RoxieResult {\n return new RoxieResult(ec)\n .id(`${rs.id()}_${resultName}`)\n .service(rs)\n .resultName(resultName)\n ;\n }\n\n serviceID(): string {\n return `${this.service().url()}/${this.service().querySet()}/${this.service().queryID()}`;\n }\n\n sourceHash(): string {\n return this.service().hash();\n }\n\n requestFields(): DDL2.IField[] {\n return this.service().requestFields();\n }\n\n responseFields(): DDL2.IField[];\n responseFields(_: DDL2.IField[]): this;\n responseFields(_?: DDL2.IField[]): this | DDL2.IField[] {\n if (!arguments.length) return this.service().responseFields(this.resultName());\n this.service().responseFields(this.resultName(), _);\n return this;\n }\n\n hash(more: object = {}): string {\n return hashSum({\n source: this.sourceHash(),\n resultName: this.resultName(),\n ...more\n });\n }\n\n label(): string {\n return `${this.service().label()}\\n${this.resultName()}`;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => this.service().responseFields(this.resultName());\n }\n\n refreshMeta(): Promise<void> {\n return this.service().refreshMeta();\n }\n\n submit(request: { [key: string]: any }): Promise<{ [key: string]: any }> {\n return this.service().submit(request);\n }\n}\nRoxieResult.prototype._class += \" RoxieResult\";\n\nexport interface RoxieResult {\n service(): RoxieService;\n service(_: RoxieService): this;\n resultName(): string;\n resultName(_: string): this;\n}\n\nRoxieResult.prototype.publish(\"service\", null, \"widget\", \"Roxie service\");\nRoxieResult.prototype.publish(\"resultName\", \"\", \"set\", \"Result Name\", function (this: RoxieResult): string[] {\n return this._service !== undefined ? this._service.resultNames() : [];\n});\n\nRoxieResult.prototype._origService = RoxieResult.prototype.service;\nRoxieResult.prototype.service = function (this: RoxieResult, _?) {\n const retVal = RoxieResult.prototype._origService.apply(this, arguments);\n if (_ !== undefined) {\n this._service.refreshMeta();\n }\n return retVal;\n};\n\nexport class RoxieResultRef extends DatasourceRef {\n\n serviceID(): string {\n return this.datasource().serviceID();\n }\n\n private _data: ReadonlyArray<object> = [];\n\n datasource(): RoxieResult;\n datasource(_: RoxieResult): this;\n datasource(_?: RoxieResult): this | RoxieResult {\n return super.datasource.apply(this, arguments);\n }\n\n url(): string {\n return this.datasource().service().url();\n }\n\n querySet(): string {\n return this.datasource().service().querySet();\n }\n\n queryID(): string {\n return this.datasource().service().queryID();\n }\n\n resultName(): string {\n return this.datasource().resultName();\n }\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const filter of this.validParams()) {\n retVal = retVal.concat(filter.validate(\"request\"));\n }\n return retVal;\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IRoxieServiceRef {\n return {\n id: this.datasource().service().id(),\n output: this.resultName(),\n request: this.validParams().map((vp): DDL2.IRequestField => {\n return {\n source: vp.source(),\n remoteFieldID: vp.remoteField(),\n localFieldID: vp.localField(),\n value: vp.value()\n };\n })\n };\n }\n\n sourceHash(): string {\n return this.datasource().hash();\n }\n\n requestFieldRefs(): DDL2.IRequestField[];\n requestFieldRefs(_: DDL2.IRequestField[]): this;\n requestFieldRefs(_?: DDL2.IRequestField[]): DDL2.IRequestField[] | this {\n if (!arguments.length) return this.validParams().map(param => param.toDDL());\n this.request(_.map(fc => Param.fromDDL(this._ec, fc)));\n return this;\n }\n\n requestFields(): DDL2.IField[] {\n return this.datasource().requestFields();\n }\n\n responseFields(): DDL2.IField[] {\n return this.datasource().responseFields();\n }\n\n hash(): string {\n return this.datasource().hash({\n resultName: this.resultName(),\n params: this.request().map(param => param.hash()),\n request: this.formatRequest()\n });\n }\n\n label(): string {\n return `${this.datasource().label()}\\n${this.datasource().resultName()}`;\n }\n\n elementIDs() {\n return this._ec.elementIDs();\n }\n\n element(source) {\n return this._ec.element(source);\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n const localFieldIDs: string[] = [];\n for (const param of this.validParams()) {\n localFieldIDs.push(param.localField());\n const filterSource = param.sourceViz().hipiePipeline();\n if (!refs.inputs[this.id()]) {\n refs.inputs[this.id()] = [];\n }\n refs.inputs[this.id()].push(param.localField());\n filterSource.resolveFields(refs, [param.remoteField()]);\n }\n super.resolveFields(refs, localFieldIDs);\n }\n\n validParams() {\n return this.request().filter(param => param.exists());\n }\n\n refreshMeta(): Promise<void> {\n return this.datasource().refreshMeta().then(() => {\n const oldParams = this.request();\n const diffs = compare(oldParams.map(p => p.localField()), this.datasource().requestFields().map(ff => ff.id));\n const newParams = oldParams.filter(op => diffs.update.indexOf(op.localField()) >= 0);\n this.request(newParams.concat(diffs.enter.map(label => new Param(this._ec).localField(label))));\n });\n }\n\n updatedBy(): string[] {\n return this.validParams().map(param => param.source());\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => this.datasource().responseFields();\n }\n\n formatRequest(): { [key: string]: any } {\n const request: { [key: string]: any } = {};\n let hasRequest = false;\n const fields = this.datasource().requestFields();\n for (const param of this.validParams()) {\n const _value = param.calcValue();\n const field = fields.filter(row => row.id === param.localField())[0];\n let value;\n if (field.type === \"set\") {\n value = {\n Item: _value\n };\n } else {\n value = _value[0];\n }\n if (value !== undefined) {\n request[param.localField()] = value;\n }\n hasRequest = true;\n }\n if (!hasRequest) {\n request.refresh = true;\n }\n return request;\n }\n\n private _prevRequestHash;\n private _prevRequestPromise;\n exec(): Promise<void> {\n return super.exec().then(() => {\n const request = this.formatRequest();\n const requestHash = hashSum({ hash: this.hash(), request });\n if (this._prevRequestHash !== requestHash) {\n this._prevRequestHash = requestHash;\n this._prevRequestPromise = this.datasource().submit(request).then((response: { [key: string]: any }) => {\n const resultName = this.datasource().resultName();\n let result = response[resultName];\n if (!result) {\n // See: https://track.hpccsystems.com/browse/HPCC-21176 ---\n // \"Result 1\" => \"result_1\"\n result = response[resultName.toLowerCase().replace(/ /g, \"_\")];\n }\n return this.fixInt64(result);\n });\n }\n return this._prevRequestPromise;\n }).then(data => {\n this._data = data;\n });\n }\n\n inData(): ReadonlyArray<object> {\n return this._data;\n }\n\n computeData(): ReadonlyArray<object> {\n return this._data;\n }\n}\nRoxieResultRef.prototype._class += \" RoxieResultRef\";\n\nexport interface RoxieResultRef {\n request(): Param[];\n request(_: Param[]): this;\n}\n\nRoxieResultRef.prototype.publish(\"request\", [], \"propertyArray\", \"Request Fields\");\n\nexport class HipieResultRef extends RoxieResultRef {\n\n fullUrl(_: string): this {\n const info = parseUrl(_);\n this.datasource().service().url(info.url);\n this.datasource().service().querySet(info.querySet);\n this.datasource().service().queryID(info.queryID);\n return this;\n }\n\n formatRequest(): { [key: string]: any } {\n const _request = super.formatRequest();\n const request: { [key: string]: any } = {};\n for (const key in _request) {\n request[key] = _request[key];\n request[`${key}_changed`] = true;\n }\n return request;\n }\n}\nHipieResultRef.prototype._class += \" HipieResultRef\";","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { ElementContainer } from \"../model/element.ts\";\nimport { ActivitySelection, IActivityError } from \"./activity.ts\";\nimport { Databomb, emptyDatabomb } from \"./databomb.ts\";\nimport { DatasourceRef, DatasourceRefType } from \"./datasource.ts\";\nimport { Form } from \"./form.ts\";\nimport { LogicalFile } from \"./logicalfile.ts\";\nimport { RestResult, RestResultRef } from \"./rest.ts\";\nimport { HipieResultRef, RoxieResult, RoxieService } from \"./roxie.ts\";\nimport { WUResult, WUResultRef } from \"./wuresult.ts\";\n\nlet dsPickerID = 0;\nexport class DSPicker extends ActivitySelection {\n private _nullDatasource = emptyDatabomb;\n\n _origDatasourceID;\n _origDatasourceRef;\n\n declare _datasourceID: string; // DDL2.IDatasourceType;\n declare _datasourceRef: DatasourceRef;\n\n datasource(): DatasourceRefType {\n return this.datasourceRef().datasource();\n }\n\n refreshRef(id: string) {\n const ds: DatasourceRefType = this._ec.datasource(id);\n if (ds instanceof Databomb) {\n this.selection(new DatasourceRef().datasource(ds));\n } else if (ds instanceof Form) {\n this.selection(new DatasourceRef().datasource(ds));\n } else if (ds instanceof LogicalFile) {\n this.selection(new DatasourceRef().datasource(ds));\n } else if (ds instanceof RoxieService) {\n this.selection(new DatasourceRef().datasource(ds));\n } else if (ds instanceof WUResult) {\n this.selection(new WUResultRef().datasource(ds));\n } else if (ds instanceof RoxieResult) {\n this.selection(new HipieResultRef(this._ec).datasource(ds));\n } else if (ds instanceof RestResult) {\n this.selection(new RestResultRef(this._ec).datasource(ds));\n }\n }\n\n selection(): DatasourceRef;\n selection(_: DatasourceRef): this;\n selection(_?: DatasourceRef): DatasourceRef | this {\n const retVal = super.selection.apply(this, arguments);\n if (!arguments.length) return retVal || this._nullDatasource;\n if (this._datasourceID !== _.datasource().id()) {\n this._datasourceID = _.datasource().id();\n }\n return this;\n }\n\n validate(): IActivityError[] {\n return this.selection().validate();\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n this._id = `ds_${++dsPickerID}`;\n const ds = this._ec.datasources()[0];\n this.datasourceID(ds.id());\n }\n\n toDDL(): DDL2.IDatasourceRef {\n return {\n ...this.datasourceRef().toDDL(),\n id: this.datasourceID()\n };\n }\n\n // Activity overrides ---\n hash(more: { [key: string]: any } = {}): string {\n return super.hash({\n ...more\n });\n }\n\n datasourceIDs() {\n return this._ec.datasources().map(ds => {\n return {\n value: ds.id(),\n text: `${ds.label()} ${ds.id() !== ds.label() ? ` (${ds.id()})` : \"\"}`\n };\n });\n }\n}\nDSPicker.prototype._class += \" DSPicker\";\n\nexport interface DSPicker {\n datasourceID(): string;\n datasourceID(_: string): this;\n datasourceRef(): DatasourceRef;\n datasourceRef(_: DatasourceRef): this;\n}\n\nDSPicker.prototype.publish(\"datasourceID\", \"\", \"set\", \"Activity\", function (this: DSPicker) { return this.datasourceIDs(); }, { optional: false });\nDSPicker.prototype.publish(\"datasourceRef\", \"\", \"widget\", \"Activity\");\n\nDSPicker.prototype._origDatasourceID = DSPicker.prototype.datasourceID;\nDSPicker.prototype.datasourceID = function (this: DSPicker, _?) {\n const prev = this._datasourceID;\n const retVal = DSPicker.prototype._origDatasourceID.apply(this, arguments);\n if (_ !== undefined && prev !== _) {\n this.refreshRef(_);\n }\n return retVal;\n};\n\nDSPicker.prototype._origDatasourceRef = DSPicker.prototype.datasourceRef;\nDSPicker.prototype.datasourceRef = function (this: DSPicker, _?) {\n return ActivitySelection.prototype.selection.apply(this, arguments);\n};","import { PropertyExt } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { Element, ElementContainer } from \"../model/element.ts\";\nimport { Activity, IActivityError, ReferencedFields } from \"./activity.ts\";\n\nfunction createFilter(condition: DDL2.IMappingConditionType, lf: string, val: string | number): (localRow: any) => boolean {\n const isString = typeof val === \"string\";\n switch (condition) {\n case \"==\":\n return (localRow) => isString && typeof localRow[lf] === \"string\" ? localRow[lf].trim() === val : localRow[lf] === val;\n case \"!=\":\n return (localRow) => isString && typeof localRow[lf] === \"string\" ? localRow[lf].trim() !== val : localRow[lf] !== val;\n case \"<\":\n return (localRow) => localRow[lf] < val;\n case \"<=\":\n return (localRow) => localRow[lf] <= val;\n case \">\":\n return (localRow) => localRow[lf] > val;\n case \">=\":\n return (localRow) => localRow[lf] >= val;\n default:\n throw new Error(`Unknown filter condition: ${condition}`);\n }\n}\n\nexport class ColumnMapping extends PropertyExt {\n private _owner: RemoteFilter;\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.remoteField_valid()) {\n retVal.push({\n source: `${prefix}.remoteField`,\n msg: `Invalid remoteField: \"${this.remoteField()}\"`,\n hint: `expected: ${JSON.stringify(this.sourceOutFields())}`\n });\n }\n if (!this.localField_valid()) {\n retVal.push({\n source: `${prefix}.localField`,\n msg: `Invalid localField: \"${this.localField()}\"`,\n hint: `expected: ${JSON.stringify(this.localFields())}`\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): RemoteFilter;\n owner(_: RemoteFilter): this;\n owner(_?: RemoteFilter): RemoteFilter | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return this.localField_exists() || this.remoteField_exists();\n }\n\n toDDL(): DDL2.IMapping {\n return {\n remoteFieldID: this.remoteField(),\n localFieldID: this.localField(),\n condition: this.condition(),\n nullable: this.nullable()\n };\n }\n\n fromDDL(ddl: DDL2.IMapping): this {\n return this\n .remoteField(ddl.remoteFieldID)\n .localField(ddl.localFieldID)\n .condition(ddl.condition)\n .nullable(ddl.nullable)\n ;\n }\n\n static fromDDL(ddl: DDL2.IMapping): ColumnMapping {\n return new ColumnMapping().fromDDL(ddl);\n }\n\n hash() {\n return hashSum({\n remoteField: this.remoteField(),\n localField: this.localField(),\n condition: this.condition(),\n nullable: this.nullable()\n });\n }\n\n localFields(): string[] {\n return this._owner.inFields().map(field => field.id);\n }\n\n sourceOutFields(): string[] {\n return this._owner.sourceOutFields().map(field => field.id);\n }\n\n remoteValues(filterSelection: any[]): Array<number | string> {\n const rf = this.remoteField();\n return filterSelection.map(sel => {\n const retVal = sel[rf];\n if (typeof retVal === \"string\") {\n return retVal.trim();\n }\n return retVal;\n });\n }\n\n createFilterDescription(filterSelection: any[]): string {\n switch (this.condition()) {\n case \"in\":\n case \"range\":\n return `${this.localField()} ${this.condition()} [${this.remoteValues(filterSelection).join(\", \")}]`;\n default:\n return `${this.localField()} ${this.condition()} ${this.remoteValues(filterSelection)[0]}`;\n }\n }\n\n createFilter(filterSelection: any[]): (localRow: any) => boolean {\n const lf = this.localField();\n const fsArr = this.remoteValues(filterSelection);\n switch (this.condition()) {\n case \"range\":\n if (this.nullable() && (fsArr.length < 2 || fsArr[0] === fsArr[1])) {\n return (localRow) => true;\n }\n return (localRow) => localRow[lf] >= fsArr[0] && localRow[lf] <= fsArr[1];\n case \"in\":\n if (this.nullable() && fsArr.length === 0) {\n return (localRow) => true;\n }\n return (localRow) => fsArr.some(fs => typeof localRow[lf] === \"string\" ? localRow[lf].trim() === fs : localRow[lf] === fs);\n default:\n const fs0 = fsArr[0];\n if (this.nullable() && (fs0 === undefined || fs0 === null || fs0 === \"\")) {\n return (localRow) => true;\n }\n return createFilter(this.condition(), lf, fs0);\n }\n }\n}\nColumnMapping.prototype._class += \" ColumnMapping\";\n\nexport interface ColumnMapping {\n remoteField(): string;\n remoteField(_: string): this;\n remoteField_exists(): boolean;\n remoteField_valid(): boolean;\n localField(): string;\n localField(_: string): this;\n localField_exists(): boolean;\n localField_valid(): boolean;\n condition(): DDL2.IMappingConditionType;\n condition(_: DDL2.IMappingConditionType): this;\n nullable(): boolean;\n nullable(_: boolean): this;\n}\n\nexport class RemoteFilter extends PropertyExt {\n private _owner: Filters;\n\n validate(prefix: string): IActivityError[] {\n let retVal: IActivityError[] = [];\n if (!this.source_valid()) {\n retVal.push({\n source: `${prefix}.source.${this.source()}`,\n msg: `Invalid source: \"${this.source()}\"`,\n hint: `expected: ${JSON.stringify(this.visualizationIDs())}`\n });\n }\n if (this.source_exists() && this.validMappings().length === 0) {\n retVal.push({\n source: `${prefix}.source.${this.source()}`,\n msg: `Invalid mappings: \"${this.source()}\"`,\n hint: \"expected minimum of 1 mapping\"\n });\n }\n for (const mapping of this.validMappings()) {\n retVal = retVal.concat(mapping.validate(`${prefix}.${this.source()}.mappings`));\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): Filters;\n owner(_: Filters): this;\n owner(_?: Filters): Filters | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.source() && this.validMappings().length > 0;\n }\n\n toDDL(): DDL2.IFilterCondition {\n return {\n viewID: this.source(),\n mappings: this.ddlMappings()\n };\n }\n\n fromDDL(ddl: DDL2.IFilterCondition): this {\n return this\n .source(ddl.viewID)\n .ddlMappings(ddl.mappings)\n ;\n }\n\n static fromDDL(ddl: DDL2.IFilterCondition): RemoteFilter {\n return new RemoteFilter().fromDDL(ddl);\n }\n\n ddlMappings(): DDL2.IMapping[];\n ddlMappings(_: DDL2.IMapping[]): this;\n ddlMappings(_?: DDL2.IMapping[]): DDL2.IMapping[] | this {\n if (!arguments.length) return this.validMappings().map(mapping => mapping.toDDL());\n this.mappings(_.map(mapping => ColumnMapping.fromDDL(mapping)));\n return this;\n }\n\n visualizationIDs() {\n return this._owner.visualizationIDs();\n }\n\n hash(): string {\n return hashSum({\n source: this.source(),\n mappings: this.validMappings().map(mapping => mapping.hash()),\n selection: this.sourceSelection()\n });\n }\n\n validMappings(): ColumnMapping[] {\n return this.mappings().filter(mapping => mapping.valid());\n }\n\n appendMappings(mappings: Array<{ remoteField: string, localField: string, condition: DDL2.IMappingConditionType }>): this {\n for (const mapping of mappings) {\n this.mappings().push(new ColumnMapping()\n .owner(this)\n .remoteField(mapping.remoteField)\n .localField(mapping.localField)\n .condition(mapping.condition)\n );\n }\n return this;\n }\n\n inFields(): ReadonlyArray<DDL2.IField> {\n return this._owner.inFields();\n }\n\n sourceViz(): Element {\n return this._owner.visualization(this.source());\n }\n\n sourceOutFields(): ReadonlyArray<DDL2.IField> {\n return this.sourceViz().hipiePipeline().selectionFields();\n }\n\n sourceSelection(): any[] {\n return this.sourceViz().selection();\n }\n\n createFilter(): (localRow: any) => boolean {\n const selection = this.sourceSelection();\n const mappingFilters = this.validMappings().map(mapping => mapping.createFilter(selection));\n return (row: object): boolean => mappingFilters.every(mappingFilter => mappingFilter(row));\n }\n\n createFilterDescription(): string {\n const selection = this.sourceSelection();\n const mappingFilterDescs = this.validMappings().map(mapping => mapping.createFilterDescription(selection));\n return mappingFilterDescs.join(\", \");\n }\n}\nRemoteFilter.prototype._class += \" Filter\";\n\nexport interface RemoteFilter {\n source(): string;\n source(_: string): this;\n source_exists(): boolean;\n source_valid(): boolean;\n mappings(): ColumnMapping[];\n mappings(_: ColumnMapping[]): this;\n}\n\nexport class StaticFilter extends PropertyExt {\n private _owner: Filters;\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.localField_valid()) {\n retVal.push({\n source: `${prefix}.localField`,\n msg: `Invalid localField: \"${this.localField()}\"`,\n hint: `expected: ${JSON.stringify(this.localFields())}`\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): Filters;\n owner(_: Filters): this;\n owner(_?: Filters): Filters | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n coerceValue(): string | number;\n coerceValue(_: string | number): this;\n coerceValue(_?: string | number): string | number | this {\n if (arguments.length === 0) {\n switch (this.valueType()) {\n case \"number\":\n return +this.value();\n case \"string\":\n default:\n return \"\" + this.value();\n }\n }\n this.value(_);\n if (typeof _ === \"number\") {\n this.valueType(\"number\");\n } else {\n this.valueType(\"string\");\n }\n return this;\n }\n\n valid(): boolean {\n return this.localField_exists() && this.value_exists();\n }\n\n toDDL(): DDL2.IFilterStaticCondition {\n return {\n localFieldID: this.localField(),\n condition: this.condition(),\n value: this.coerceValue()\n };\n }\n\n fromDDL(ddl: DDL2.IFilterStaticCondition): this {\n return this\n .localField(ddl.localFieldID)\n .condition(ddl.condition)\n .coerceValue(ddl.value)\n ;\n }\n\n static fromDDL(ddl: DDL2.IFilterStaticCondition): StaticFilter {\n return new StaticFilter().fromDDL(ddl);\n }\n\n hash() {\n return hashSum({\n localField: this.localField(),\n condition: this.condition(),\n value: this.value(),\n valueType: this.valueType()\n });\n }\n\n localFields(): string[] {\n return this._owner.inFields().map(field => field.id);\n }\n\n createFilterDescription(): string {\n return `${this.localField()} ${this.condition()} ${this.coerceValue()}`;\n }\n\n createFilter(): (localRow: any) => boolean {\n return createFilter(this.condition(), this.localField(), this.coerceValue());\n }\n}\nStaticFilter.prototype._class += \" StaticFilter\";\n\nexport interface StaticFilter {\n localField(): string;\n localField(_: string): this;\n localField_exists(): boolean;\n localField_valid(): boolean;\n condition(): DDL2.IMappingConditionType;\n condition(_: DDL2.IMappingConditionType): this;\n value(): string | number | boolean;\n value(_: string | number | boolean): this;\n value_exists(): boolean;\n value_valid(): boolean;\n valueType(): \"number\" | \"string\";\n valueType(_: \"number\" | \"string\"): this;\n}\n\ntype FilterT = RemoteFilter | StaticFilter;\n\nexport class Filters extends Activity {\n static Filter = RemoteFilter;\n static Mapping = ColumnMapping;\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const filter of this.validFilters()) {\n retVal = retVal.concat(filter.validate(\"filter\"));\n }\n return retVal;\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IFilter {\n return {\n type: \"filter\",\n conditions: this.conditions()\n };\n }\n\n fromDDL(ddl: DDL2.IFilter): this {\n return this\n .conditions(ddl.conditions)\n ;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.IFilter): Filters {\n return new Filters(ec).fromDDL(ddl);\n }\n\n conditions(): DDL2.FilterCondition[];\n conditions(_: DDL2.FilterCondition[]): this;\n conditions(_?: DDL2.FilterCondition[]): DDL2.FilterCondition[] | this {\n if (!arguments.length) return this.validFilters().map(filter => filter.toDDL());\n const remoteFilters: RemoteFilter[] = [];\n const staticFilters: StaticFilter[] = [];\n _.forEach(fc => {\n if (DDL2.isIFilterCondition(fc)) {\n remoteFilters.push(RemoteFilter.fromDDL(fc));\n } else {\n staticFilters.push(StaticFilter.fromDDL(fc));\n }\n });\n this.remoteFilter(remoteFilters);\n this.staticFilter(staticFilters);\n return this;\n }\n\n visualizationIDs(): string[] {\n return this._ec.elementIDs();\n }\n\n visualization(sourceID: string | PropertyExt): Element {\n return this._ec.element(sourceID);\n }\n\n // Activity overrides ---\n hash(): string {\n return hashSum(this.validFilters().map(f => {\n return {\n filter: f.hash()\n };\n }));\n }\n\n exists(): boolean {\n return this.validFilters().length > 0;\n }\n\n updatedBy(): string[] {\n return this.validRemoteFilters().map(filter => filter.source());\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n const localFieldIDs: string[] = [];\n for (const filter of this.validRemoteFilters()) {\n const filterSource = filter.sourceViz().hipiePipeline();\n const remoteFieldIDs: string[] = [];\n for (const mapping of filter.validMappings()) {\n localFieldIDs.push(mapping.localField());\n remoteFieldIDs.push(mapping.remoteField());\n }\n filterSource.resolveFields(refs, remoteFieldIDs);\n }\n super.resolveInFields(refs, localFieldIDs);\n }\n\n exec(): Promise<void> {\n return super.exec();\n }\n\n computeData(): ReadonlyArray<object> {\n const data = super.computeData();\n if (data.length === 0 || !this.exists()) return data;\n const filters = this.validFilters().map(filter => filter.createFilter());\n return data.filter(row => {\n return filters.every(filter => filter(row));\n });\n }\n\n // --- --- ---\n validRemoteFilters(): RemoteFilter[] {\n return this.remoteFilter().filter(filter => filter.valid());\n }\n\n validStaticFilters(): StaticFilter[] {\n return this.staticFilter().filter(filter => filter.valid());\n }\n\n validFilters(): FilterT[] {\n return [...this.validRemoteFilters(), ...this.validStaticFilters()];\n }\n}\nFilters.prototype._class += \" Filters\";\n\nexport interface Filters {\n remoteFilter(): RemoteFilter[];\n remoteFilter(_: RemoteFilter[]): this;\n staticFilter(): StaticFilter[];\n staticFilter(_: StaticFilter[]): this;\n}\n\nColumnMapping.prototype.publish(\"remoteField\", null, \"set\", \"Filter Fields\", function (this: ColumnMapping) { return this.sourceOutFields(); }, {\n optional: true,\n disable: (w: ColumnMapping): boolean => !w[\"_owner\"].source(),\n validate: (w: ColumnMapping): boolean => w.sourceOutFields().indexOf(w.remoteField()) >= 0\n});\nColumnMapping.prototype.publish(\"localField\", null, \"set\", \"Local Fields\", function (this: ColumnMapping) { return this.localFields(); }, {\n optional: true,\n disable: (w: ColumnMapping): boolean => !w[\"_owner\"].source(),\n validate: (w: ColumnMapping): boolean => w.localFields().indexOf(w.localField()) >= 0\n});\nColumnMapping.prototype.publish(\"condition\", \"==\", \"set\", \"Filter Fields\", [\"==\", \"!=\", \">\", \">=\", \"<\", \"<=\", \"range\", \"in\"]);\nColumnMapping.prototype.publish(\"nullable\", false, \"boolean\", \"Ignore null filters\");\n\nRemoteFilter.prototype.publish(\"source\", null, \"set\", \"Activity\", function (this: RemoteFilter) { return this.visualizationIDs(); }, {\n optional: true,\n validate: (w: RemoteFilter): boolean => w.visualizationIDs().indexOf(w.source()) >= 0\n});\nRemoteFilter.prototype.publish(\"mappings\", [], \"propertyArray\", \"Mappings\", null, { autoExpand: ColumnMapping });\n\nStaticFilter.prototype.publish(\"localField\", null, \"set\", \"Local Fields\", function (this: ColumnMapping) { return this.localFields(); }, {\n optional: true,\n validate: (w: StaticFilter): boolean => w.localFields().indexOf(w.localField()) >= 0\n});\nStaticFilter.prototype.publish(\"condition\", \"==\", \"set\", \"Filter Fields\", [\"==\", \"!=\", \">\", \">=\", \"<\", \"<=\"]);\nStaticFilter.prototype.publish(\"value\", \"\", \"any\", \"Static Value\");\nStaticFilter.prototype.publish(\"valueType\", \"number\", \"set\", \"Static Value Type\", [\"number\", \"string\"]);\n\nFilters.prototype.publish(\"remoteFilter\", [], \"propertyArray\", \"Remote Filter\", null, { autoExpand: RemoteFilter });\nFilters.prototype.publish(\"staticFilter\", [], \"propertyArray\", \"Static Filter\", null, { autoExpand: StaticFilter });","import { PropertyExt } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { deviation as d3Deviation, max as d3Max, mean as d3Mean, median as d3Median, min as d3Min, sum as d3Sum, variance as d3Variance } from \"d3-array\";\nimport { nest as d3Nest } from \"d3-collection\";\nimport { Activity, IActivityError, ReferencedFields } from \"./activity.ts\";\n\nexport class GroupByColumn extends PropertyExt {\n private _owner: GroupBy;\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.label_valid()) {\n retVal.push({\n source: `${prefix}.label`,\n msg: `Invalid label: \"${this.label()}\"`,\n hint: `expected ${JSON.stringify(this.columns())}`\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): GroupBy;\n owner(_: GroupBy): this;\n owner(_?: GroupBy): GroupBy | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.label();\n }\n\n toDDL(): string {\n return this.label();\n }\n\n fromDDL(label: string): this {\n return this\n .label(label)\n ;\n }\n\n static fromDDL(label: string): GroupByColumn {\n return new GroupByColumn().fromDDL(label);\n }\n\n hash(): string {\n return hashSum(this.label());\n }\n\n columns() {\n return this._owner.inFieldIDs();\n }\n}\nGroupByColumn.prototype._class += \" GroupByColumn\";\n\nexport interface GroupByColumn {\n label(): string;\n label(_: string): this;\n label_valid(): boolean;\n}\n\n// ===========================================================================\nexport type AggrFuncCallback = (item: any) => number;\nexport type AggrFunc = (leaves: any[], callback: AggrFuncCallback) => number;\nfunction localCount(leaves: any[], callback: AggrFuncCallback): number {\n return leaves.length;\n}\n\nconst d3Aggr: { [key: string]: AggrFunc } = {\n count: localCount,\n min: d3Min,\n max: d3Max,\n mean: d3Mean,\n median: d3Median,\n variance: d3Variance,\n deviation: d3Deviation,\n sum: d3Sum\n};\n\nexport type AggregateType = \"count\" | \"min\" | \"max\" | \"sum\" | \"mean\" | \"median\" | \"variance\" | \"deviation\";\nexport class AggregateField extends PropertyExt {\n private _owner: GroupBy;\n\n disableAggrColumn(): boolean {\n return !this.fieldID() || !this.aggrType() || this.aggrType() === \"count\";\n }\n\n disableBaseCountColumn(): boolean {\n return !this.fieldID() || !this.aggrType() || this.aggrType() !== \"mean\";\n }\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.aggrColumn_valid()) {\n retVal.push({\n source: `${prefix}.${this.fieldID()}.aggrColumn`,\n msg: `Invalid aggrColumn: \"${this.aggrColumn()}\"`,\n hint: `expected ${JSON.stringify(this.columns())}`\n });\n }\n if (!this.baseCountColumn_valid()) {\n retVal.push({\n source: `${prefix}.${this.fieldID()}.aggrColumn`,\n msg: `Invalid baseCountColumn: \"${this.baseCountColumn()}\"`,\n hint: `expected ${JSON.stringify(this.columns())}`\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): GroupBy;\n owner(_: GroupBy): this;\n owner(_?: GroupBy): GroupBy | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.fieldID();\n }\n\n toDDL(): DDL2.IAggregate | DDL2.ICount {\n if (this.aggrType() === \"count\") {\n return {\n fieldID: this.fieldID(),\n type: \"count\"\n };\n }\n return {\n fieldID: this.fieldID(),\n type: this.aggrType() as DDL2.IAggregateType,\n inFieldID: this.aggrColumn(),\n baseCountFieldID: this.baseCountColumn()\n };\n }\n\n fromDDL(ddl: DDL2.IAggregate | DDL2.ICount): this {\n const retVal = this\n .fieldID(ddl.fieldID)\n .aggrType(ddl.type)\n ;\n if (ddl.type !== \"count\") {\n retVal.aggrColumn(ddl.inFieldID);\n retVal.baseCountColumn(ddl.baseCountFieldID);\n }\n return retVal;\n }\n\n static fromDDL(ddl: DDL2.IAggregate | DDL2.ICount): AggregateField {\n return new AggregateField().fromDDL(ddl);\n }\n\n hash(): string {\n return hashSum({\n label: this.fieldID(),\n aggrType: this.aggrType(),\n aggrColumn: this.aggrColumn()\n });\n }\n\n columns() {\n return this._owner.inFieldIDs();\n }\n\n hasColumn() {\n return this.columns().length;\n }\n\n aggregate(values: Array<{ [key: string]: any }>) {\n return d3Aggr[this.aggrType() as string](values, leaf => +leaf[this.aggrColumn()]);\n }\n\n aggrFunc(): (leaves: any[]) => number {\n const aggrFunc = d3Aggr[this.aggrType() as string];\n const aggrColumn = this.aggrColumn();\n const baseCountColumn = this.baseCountColumn();\n if (baseCountColumn) {\n return (values: any[]) => {\n return aggrFunc(values, leaf => +leaf[aggrColumn] / +leaf[baseCountColumn]);\n };\n } else {\n return (values: any[]) => {\n return aggrFunc(values, leaf => +leaf[aggrColumn]);\n };\n }\n }\n}\nAggregateField.prototype._class += \" AggregateField\";\n\nexport interface AggregateField {\n fieldID(): string;\n fieldID(_: string): this;\n aggrType(): AggregateType;\n aggrType(_: AggregateType): this;\n aggrColumn(): string;\n aggrColumn(_: string): this;\n aggrColumn_valid(): boolean;\n baseCountColumn(): string;\n baseCountColumn(_: string): this;\n baseCountColumn_valid(): boolean;\n}\n\n// ===========================================================================\nexport class GroupBy extends Activity {\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const gbColumn of this.validGroupBy()) {\n retVal = retVal.concat(gbColumn.validate(\"GroupBy.column\"));\n }\n for (const cfs of this.validComputedFields()) {\n retVal = retVal.concat(cfs.validate(\"GroupBy.computedFields\"));\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n toDDL(): DDL2.IGroupBy {\n return {\n type: \"groupby\",\n groupByIDs: this.fieldIDs(),\n aggregates: this.aggregates()\n };\n }\n\n fromDDL(ddl: DDL2.IGroupBy): this {\n return this\n .fieldIDs(ddl.groupByIDs)\n .aggregates(ddl.aggregates)\n ;\n }\n\n static fromDDL(ddl: DDL2.IGroupBy): GroupBy {\n return new GroupBy().fromDDL(ddl);\n }\n\n fieldIDs(): string[];\n fieldIDs(_: string[]): this;\n fieldIDs(_?: string[]): string[] | this {\n if (!arguments.length) return this.validGroupBy().map(gb => gb.toDDL());\n this.column(_.map(fieldID => GroupByColumn.fromDDL(fieldID)));\n return this;\n }\n\n aggregates(): DDL2.AggregateType[];\n aggregates(_: DDL2.AggregateType[]): this;\n aggregates(_?: DDL2.AggregateType[]): DDL2.AggregateType[] | this {\n if (!arguments.length) return this.validComputedFields().map(cf => cf.toDDL());\n this.computedFields(_.map(aggrType => AggregateField.fromDDL(aggrType)));\n return this;\n }\n\n // Activity\n hash(): string {\n return hashSum({\n groupBy: this.column().map(gb => gb.hash()),\n computedFields: this.computedFields().map(cf => cf.hash())\n });\n }\n\n appendGroupBys(columns: [{ field: string }]): this {\n for (const column of columns) {\n this.column().push(new GroupByColumn()\n .owner(this)\n .label(column.field)\n );\n }\n return this;\n }\n\n validGroupBy(): GroupByColumn[] {\n return this.column().filter(groupBy => groupBy.valid());\n }\n\n exists(): boolean {\n return this.validGroupBy().length > 0;\n }\n\n inFieldIDs(): string[] {\n return this.inFields().map(field => field.id);\n }\n\n field(fieldID: string): DDL2.IField | null {\n for (const field of this.inFields()) {\n if (field.id === fieldID) {\n return field;\n }\n }\n return null;\n }\n\n appendComputedFields(aggregateFields: [{ label: string, type: AggregateType, column?: string }]): this {\n for (const aggregateField of aggregateFields) {\n const aggrField = new AggregateField()\n .owner(this)\n .fieldID(aggregateField.label)\n .aggrType(aggregateField.type)\n ;\n if (aggregateField.column !== void 0) {\n aggrField.aggrColumn(aggregateField.column);\n }\n this.computedFields().push(aggrField);\n }\n return this;\n }\n\n validComputedFields() {\n return this.computedFields().filter(computedField => computedField.valid());\n }\n\n hasComputedFields(): boolean {\n return this.validComputedFields().length > 0;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n if (!this.exists()) return super.computeFields(inFields);\n const retVal: DDL2.IField[] = [];\n const groups: GroupByColumn[] = this.validGroupBy();\n for (const groupBy of groups) {\n const groupByField = this.field(groupBy.label());\n const field = {\n type: groupByField ? groupByField.type : \"string\",\n id: groupBy.label()\n } as DDL2.IField;\n retVal.push(field);\n }\n for (const cf of this.computedFields()) {\n if (cf.fieldID()) {\n const computedField: DDL2.IField = {\n id: cf.fieldID(),\n type: \"number\"\n };\n retVal.push(computedField);\n }\n }\n if (this.details()) {\n let detailsTarget: DDL2.IField[] = retVal;\n if (this.exists()) {\n const rows: DDL2.IField = {\n id: \"values\",\n type: \"dataset\",\n children: []\n };\n retVal.push(rows);\n detailsTarget = rows.children;\n }\n const columns = groups.map(groupBy => groupBy.label());\n detailsTarget.push(...this.inFields().filter(field => {\n return this.fullDetails() || columns.indexOf(field.id) < 0;\n }));\n }\n return () => retVal;\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n const fieldIDs: string[] = [];\n for (const gb of this.validGroupBy()) {\n fieldIDs.push(gb.label());\n }\n for (const cf of this.validComputedFields()) {\n if (cf.aggrColumn()) {\n fieldIDs.push(cf.aggrColumn());\n }\n }\n super.resolveInFields(refs, fieldIDs);\n }\n\n computeData(): ReadonlyArray<object> {\n const data = super.computeData();\n if (data.length === 0 || !this.exists()) return data;\n const columnLabels: string[] = this.validGroupBy().map(gb => gb.label());\n const computedFields = this.validComputedFields().map(cf => {\n return { label: cf.fieldID(), aggrFunc: cf.aggrFunc() };\n });\n const retVal = d3Nest()\n .key((row: { [key: string]: any }) => {\n let key = \"\";\n for (const groupByLabel of columnLabels) {\n key += \":\" + row[groupByLabel];\n }\n return key;\n })\n .entries(data as object[]).map(_row => {\n const row: {\n [key: string]: any\n } = _row;\n delete row.key;\n for (const groupByLabel of columnLabels) {\n row[groupByLabel] = row.values[0][groupByLabel];\n }\n for (const cf of computedFields) {\n row[cf.label] = cf.aggrFunc(row.values);\n }\n return row;\n })\n ;\n const outFields = this.outFields();\n return retVal.map(row => {\n const retVal = {};\n for (const field of outFields) {\n retVal[field.id] = row[field.id];\n }\n return retVal;\n });\n }\n}\nGroupBy.prototype._class += \" GroupBy\";\n\nexport interface GroupBy {\n column(): GroupByColumn[];\n column(_: GroupByColumn[]): this;\n computedFields(): AggregateField[];\n computedFields(_: AggregateField[]): this;\n details(): boolean;\n details(_: boolean): this;\n fullDetails(): boolean;\n fullDetails(_: boolean): this;\n}\n\nGroupByColumn.prototype.publish(\"label\", undefined, \"set\", \"Field\", function (this: GroupByColumn) { return this.columns(); }, {\n optional: true,\n validate: (w: GroupByColumn): boolean => w.columns().indexOf(w.label()) >= 0\n });\n\nAggregateField.prototype.publish(\"fieldID\", null, \"string\", \"new Field ID\", null, { optional: true, disable: (w: AggregateField) => !w.hasColumn() });\nAggregateField.prototype.publish(\"aggrType\", \"count\", \"set\", \"Aggregation Type\", [\"count\", \"min\", \"max\", \"sum\", \"mean\", \"median\", \"variance\", \"deviation\"], { optional: true, disable: (w: AggregateField) => !w.fieldID() });\nAggregateField.prototype.publish(\"aggrColumn\", null, \"set\", \"Aggregation Field\", function (this: AggregateField) { return this.columns(); }, {\n optional: true,\n disable: (w: AggregateField) => w.disableAggrColumn(),\n validate: (w: AggregateField): boolean => w.columns().indexOf(w.aggrColumn()) >= 0\n });\nAggregateField.prototype.publish(\"baseCountColumn\", null, \"set\", \"Base Count Field\", function (this: AggregateField) { return this.columns(); }, {\n optional: true,\n disable: (w: AggregateField) => w.disableBaseCountColumn(),\n validate: (w: AggregateField): boolean => w.columns().indexOf(w.baseCountColumn()) >= 0\n });\n\nGroupBy.prototype.publish(\"column\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: GroupByColumn });\nGroupBy.prototype.publish(\"computedFields\", [], \"propertyArray\", \"Computed Fields\", null, { autoExpand: AggregateField });\nGroupBy.prototype.publish(\"details\", false, \"boolean\", \"Show details\");\nGroupBy.prototype.publish(\"fullDetails\", false, \"boolean\", \"Show groupBy fileds in details\");","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { Activity } from \"./activity.ts\";\n\nexport class Limit extends Activity {\n\n constructor() {\n super();\n }\n\n toDDL(): DDL2.ILimit {\n return {\n type: \"limit\",\n limit: this.rows()\n };\n }\n\n fromDDL(ddl: DDL2.ILimit): this {\n return this\n .rows(ddl.limit)\n ;\n }\n\n static fromDDL(ddl: DDL2.ILimit): Limit {\n return new Limit().fromDDL(ddl);\n }\n\n hash(): string {\n return hashSum({\n limit: this.rows()\n });\n }\n\n exists(): boolean {\n return this.rows_exists() && this.rows() > 0;\n }\n\n computeData(): ReadonlyArray<object> {\n const data = super.computeData();\n if (data.length === 0 || !this.exists()) return data;\n return data.slice(0, Math.min(this.rows(), data.length));\n }\n}\nLimit.prototype._class += \" Limit\";\n\nexport interface Limit {\n rows(): number | undefined;\n rows(_: number | undefined): this;\n rows_exists(): boolean;\n}\nLimit.prototype.publish(\"rows\", undefined, \"number\", \"Limit output\");","import { PropertyExt, Utility } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum, isArray } from \"@hpcc-js/util\";\nimport { Activity, IActivityError, ReferencedFields } from \"./activity.ts\";\n\nexport class ComputedMapping extends PropertyExt {\n protected _owner: ComputedField;\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.value_valid()) {\n retVal.push({\n source: `${prefix}.value`,\n msg: `Invalid value: \"${this.value()}\"`,\n hint: 'expected: \"any\"'\n });\n }\n if (!this.newValue_valid()) {\n retVal.push({\n source: `${prefix}.newValue`,\n msg: `Invalid value: \"${this.newValue()}\"`,\n hint: 'expected: \"any\"'\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): ComputedField;\n owner(_: ComputedField): this;\n owner(_?: ComputedField): ComputedField | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.value() && !!this.newValue();\n }\n\n toDDL(): DDL2.IMapMapping {\n return {\n value: this.value(),\n newValue: this.newValue()\n };\n }\n\n fromDDL(ddl: DDL2.IMapMapping): this {\n return this\n .value(ddl.value)\n .newValue(ddl.newValue)\n ;\n }\n\n static fromDDL(ddl: DDL2.IMapMapping): ComputedMapping {\n return new ComputedMapping().fromDDL(ddl);\n }\n}\nComputedMapping.prototype._class += \" ComputedMapping\";\n\nexport interface ComputedMapping {\n value(): any;\n value(_: any): this;\n value_valid(): boolean;\n newValue(): any;\n newValue(_: any): this;\n newValue_valid(): boolean;\n}\n\nexport type ComputedType = \"=\" | \"*\" | \"/\" | \"+\" | \"-\" | \"scale\" | \"template\" | \"map\";\n\nexport interface IComputedFieldOwner extends PropertyExt {\n fieldIDs(): string[];\n field(fieldID: string): DDL2.IField | null;\n}\n\nexport class ComputedField extends PropertyExt {\n private _owner: IComputedFieldOwner;\n\n disableColumn1(): boolean {\n return !this.label() || [\"=\", \"*\", \"/\", \"+\", \"-\", \"scale\", \"map\"].indexOf(this.type()) < 0;\n }\n\n disableColumn2(): boolean {\n return !this.label() || [\"*\", \"/\", \"+\", \"-\"].indexOf(this.type()) < 0;\n }\n\n disableMapping(): boolean {\n return !this.label() || [\"map\"].indexOf(this.type()) < 0;\n }\n\n disableChildField(): boolean {\n return !this.hasChildren();\n }\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.column1_valid()) {\n retVal.push({\n source: `${prefix}.${this.label()}`,\n msg: `Invalid column1: \"${this.column1()}\"`,\n hint: `expected: ${JSON.stringify(this.columns())}`\n });\n }\n if (!this.column2_valid()) {\n retVal.push({\n source: `${prefix}.${this.label()}`,\n msg: `Invalid column2: \"${this.column2()}\"`,\n hint: `expected: ${JSON.stringify(this.columns())}`\n });\n }\n if (!this.disableMapping()) {\n this.validComputedMappings().forEach(cm => cm.validate(`${prefix}.mapping`));\n }\n if (!this.disableChildField()) {\n this.validChildFields().forEach(cf => cf.validate(`${prefix}.childField`));\n }\n return retVal;\n }\n\n hasChildren() {\n if (!this.label()) return false;\n if (this.type() !== \"=\") return false;\n if (!this.column1()) return false;\n const field = (this._owner as ProjectBase).field(this.column1());\n if (field && field.type === \"dataset\" && field.children) {\n return true;\n }\n return false;\n }\n\n children(): DDL2.IField[] {\n const field = (this._owner as ProjectBase).field(this.column1());\n if (field && field.type === \"dataset\") {\n return field.children;\n }\n return [];\n }\n\n constructor() {\n super();\n }\n\n owner(): IComputedFieldOwner;\n owner(_: IComputedFieldOwner): this;\n owner(_?: IComputedFieldOwner): IComputedFieldOwner | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.label();\n }\n\n validComputedMappings(): ComputedMapping[] {\n return this.mapping().filter(cf => cf.valid());\n }\n\n validChildFields() {\n return this.childField().filter(cf => cf.valid());\n }\n\n hasChildFields() {\n return this.validChildFields().length;\n }\n\n toDDL(): DDL2.MultiTransformationType {\n switch (this.type()) {\n case \"scale\":\n return {\n fieldID: this.label(),\n type: \"scale\",\n sourceFieldID: this.column1(),\n factor: this.constValue()\n };\n case \"template\":\n return {\n fieldID: this.label(),\n type: \"template\",\n template: this.template()\n };\n case \"=\":\n const transformations = this.validChildFields().map(cf => cf.toDDL());\n return {\n fieldID: this.label(),\n type: \"=\",\n sourceFieldID: this.column1(),\n transformations: transformations.length ? transformations : undefined\n };\n case \"map\":\n return {\n fieldID: this.label(),\n type: \"map\",\n sourceFieldID: this.column1(),\n default: this.default(),\n mappings: this.validComputedMappings().map(cm => cm.toDDL())\n };\n default:\n return {\n fieldID: this.label(),\n type: this.type() as DDL2.ICalculatedType,\n sourceFieldID1: this.column1(),\n sourceFieldID2: this.column2()\n };\n }\n }\n\n fromDDL(ddl: DDL2.MultiTransformationType): this {\n const retVal = this\n .label(ddl.fieldID)\n .type(ddl.type)\n ;\n switch (ddl.type) {\n case \"scale\":\n retVal\n .column1(ddl.sourceFieldID)\n .constValue(ddl.factor)\n ;\n break;\n case \"template\":\n retVal\n .template(ddl.template)\n ;\n break;\n case \"=\":\n retVal\n .column1(ddl.sourceFieldID)\n .childField(ddl.transformations ? ddl.transformations.map(transformation => ComputedField.fromDDL(transformation)) : [])\n ;\n break;\n case \"map\":\n retVal\n .column1(ddl.sourceFieldID)\n .default(ddl.default)\n .mapping(ddl.mappings ? ddl.mappings.map(mapping => ComputedMapping.fromDDL(mapping)) : [])\n ;\n break;\n default:\n retVal\n .column1(ddl.sourceFieldID1)\n .column2(ddl.sourceFieldID2)\n ;\n }\n return retVal;\n }\n\n static fromDDL(ddl: DDL2.MultiTransformationType): ComputedField {\n return new ComputedField().fromDDL(ddl);\n }\n\n hash(): string {\n return hashSum(this.toDDL());\n }\n\n columns(): string[] {\n return this._owner.fieldIDs();\n }\n\n computedField(): DDL2.IField {\n switch (this.type()) {\n case \"=\":\n let validChildFields = this.validChildFields();\n if (validChildFields.length === 0 && this.hasChildren()) {\n // Has children but no mappings - include all children by default...\n validChildFields = this.children().map((child: DDL2.IField) => {\n return new ComputedField()\n .owner(this)\n .label(child.id)\n .type(\"=\")\n .column1(child.id)\n ;\n });\n }\n return {\n ...this._owner.field(this.column1()),\n id: this.label(),\n children: validChildFields.length ? validChildFields.map(cf => cf.computedField()) : undefined\n } as DDL2.IField;\n case \"*\":\n case \"/\":\n case \"+\":\n case \"-\":\n case \"scale\":\n return { id: this.label(), type: \"number\" };\n case \"template\":\n return { id: this.label(), type: \"string\" };\n case \"map\":\n return { id: this.label(), type: \"object\" } as DDL2.IFieldObject;\n }\n return { id: this.label(), type: \"string\" };\n }\n\n projection(trim: boolean): (row: object) => object {\n const hasComputedFields = this.hasChildFields();\n const computedFields = this.validChildFields().map(cf => {\n return {\n label: cf.label(),\n func: cf.computeFunc(trim)\n };\n });\n return (row: object) => {\n const retVal = trim && hasComputedFields ? {} : { ...row };\n for (const cf of computedFields) {\n retVal[cf.label] = cf.func(row);\n }\n if (trim && hasComputedFields) {\n retVal[\"__lparam\"] = row;\n }\n return retVal;\n };\n }\n\n computeFunc(trim: boolean): (row: any) => any {\n const column1 = this.column1();\n const column2 = this.column2();\n switch (this.type()) {\n case \"=\":\n if (this.hasChildFields()) {\n return (row: object) => {\n // TODO Move to function factory ---\n const r = row[column1].Row && isArray(row[column1].Row) ? row[column1].Row : row[column1];\n return r.map(this.projection(trim));\n };\n }\n return (row: object) => {\n return row[column1];\n };\n case \"*\":\n return (row: any) => {\n return +row[column1] * +row[column2];\n };\n case \"/\":\n return (row: any) => {\n return +row[column1] / +row[column2];\n };\n case \"+\":\n return (row: any) => {\n return +row[column1] + +row[column2];\n };\n case \"-\":\n return (row: any) => {\n return +row[column1] - +row[column2];\n };\n case \"scale\":\n const constValue = this.constValue();\n return (row: any) => {\n return +row[column1] * constValue;\n };\n case \"template\":\n const template = this.template();\n return (row: any) => {\n return Utility.template(template, row);\n };\n case \"map\":\n const defValue = this.default();\n const mappings = {};\n for (const mapping of this.mapping()) {\n mappings[mapping.value()] = mapping.newValue();\n }\n return (row: any) => {\n return mappings[row[column1]] || defValue;\n };\n default:\n return (row: any) => {\n return row[column1];\n };\n }\n }\n\n // IComputedFieldOwner ---\n fieldIDs(): string[] {\n const field = (this._owner as ProjectBase).field(this.column1());\n if (field) {\n switch (field.type) {\n case \"dataset\":\n return field.children.map(field => field.id);\n case \"object\":\n return Object.keys(field.fields);\n }\n }\n return [];\n }\n\n field(fieldID: string): DDL2.IField | undefined {\n const field = (this._owner as ProjectBase).field(this.column1());\n if (field) {\n switch (field.type) {\n case \"dataset\":\n for (const f of field.children) {\n if (f.id === fieldID) {\n return f;\n }\n }\n break;\n case \"object\":\n return field.fields[fieldID];\n }\n }\n return undefined;\n }\n}\nComputedField.prototype._class += \" ComputedField\";\n\nexport interface ComputedField {\n label(): string;\n label(_: string): this;\n type(): ComputedType;\n type(_: ComputedType): this;\n column1(): string;\n column1(_: string): this;\n column1_valid(): boolean;\n column2(): string;\n column2(_: string): this;\n column2_valid(): boolean;\n constValue(): number;\n constValue(_: number): this;\n template(): string;\n template(_: string): this;\n default(): any;\n default(_: any): this;\n mapping(): ComputedMapping[];\n mapping(_: ComputedMapping[]): this;\n childField(): ComputedField[];\n childField(_: ComputedField[]): this;\n}\n\n// ===========================================================================\nexport class MultiField extends PropertyExt implements IComputedFieldOwner {\n private _owner: IComputedFieldOwner;\n\n constructor() {\n super();\n }\n\n hash() {\n return hashSum(this.toDDL());\n }\n\n owner(): IComputedFieldOwner;\n owner(_: IComputedFieldOwner): this;\n owner(_?: IComputedFieldOwner): IComputedFieldOwner | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.label() && this.validMultiFields().length > 0;\n }\n\n validate(prefix: string): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const cf of this.validMultiFields()) {\n retVal = retVal.concat(cf.validate(`${prefix}.computedFields`));\n }\n return retVal;\n }\n\n toDDL(): DDL2.IMulti {\n return {\n fieldID: this.label(),\n type: \"multi\",\n transformations: this.transformations()\n };\n }\n\n fromDDL(ddl: DDL2.IMulti): this {\n return this\n .label(ddl.fieldID)\n .transformations(ddl.transformations)\n ;\n }\n\n static fromDDL(ddl: DDL2.IMulti): MultiField {\n return new MultiField().fromDDL(ddl);\n }\n\n validMultiFields(): ComputedField[] {\n return this.multiFields().filter(computedField => computedField.valid());\n }\n\n transformations(): DDL2.MultiTransformationType[];\n transformations(_: DDL2.MultiTransformationType[]): this;\n transformations(_?: DDL2.MultiTransformationType[]): DDL2.MultiTransformationType[] | this {\n if (!arguments.length) return this.validMultiFields().map(cf => cf.toDDL());\n this.multiFields(_.map(transformation => ComputedField.fromDDL(transformation)));\n return this;\n }\n\n // IComputedFieldOwner ---\n fieldIDs(): string[] {\n return this._owner.fieldIDs();\n }\n\n field(fieldID: string): DDL2.IField | null {\n return this._owner.field(fieldID);\n }\n}\nMultiField.prototype._class += \" MultiField\";\n\nexport interface MultiField {\n label(): string;\n label(_: string): this;\n multiFields(): ComputedField[];\n multiFields(_: ComputedField[]): this;\n}\n\n// ===========================================================================\nexport class ProjectBase extends Activity {\n static ComputedField = ComputedField;\n\n _includeLParam = false;\n _trim = false;\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const cf of this.validComputedFields()) {\n retVal = retVal.concat(cf.validate(`${this.classID()}.computedFields`));\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n transformations(): DDL2.ProjectTransformationType[];\n transformations(_: DDL2.ProjectTransformationType[]): this;\n transformations(_?: DDL2.ProjectTransformationType[]): DDL2.ProjectTransformationType[] | this {\n if (!arguments.length) return this.validComputedFields().map(cf => cf.toDDL());\n this.computedFields(_.map(transformation => {\n switch (transformation.type) {\n case \"multi\":\n return MultiField.fromDDL(transformation);\n default:\n return ComputedField.fromDDL(transformation);\n }\n }));\n return this;\n }\n\n exists(): boolean {\n return this.validComputedFields().length > 0;\n }\n\n // IComputedFieldOwner ---\n fieldIDs(): string[] {\n return this.inFields().map(field => field.id);\n }\n\n field(fieldID: string): DDL2.IField | null {\n for (const field of this.inFields()) {\n if (field.id === fieldID) {\n return field;\n }\n }\n return null;\n }\n // ---\n\n clearComputedFields() {\n this.computedFields([]);\n }\n\n appendComputedFields(computedFields: [{ label: string, type: ComputedType, column?: string }]): this {\n for (const aggregateField of computedFields) {\n const aggrField = new ComputedField()\n .owner(this)\n .label(aggregateField.label)\n .type(aggregateField.type)\n ;\n if (aggregateField.column !== void 0) {\n aggrField.column1(aggregateField.column);\n }\n this.computedFields().push(aggrField);\n }\n return this;\n }\n\n validComputedFields() {\n return this.computedFields().filter(computedField => computedField.valid());\n }\n\n hasComputedFields() {\n return this.validComputedFields().length;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n if (!this.exists()) return super.computeFields(inFields);\n let retVal: DDL2.IField[] = [];\n const retValMap: { [key: string]: boolean } = {};\n for (const cf of this.validComputedFields()) {\n if (cf instanceof MultiField) {\n for (const cf2 of cf.validMultiFields()) {\n const computedField = cf2.computedField();\n retVal.push(computedField);\n retValMap[computedField.id] = true;\n }\n } else {\n const computedField = cf.computedField();\n retVal.push(computedField);\n retValMap[computedField.id] = true;\n }\n }\n if (this._trim && this.hasComputedFields()) {\n if (this._includeLParam) {\n const computedField = {\n id: \"__lparam\",\n type: \"object\"\n } as DDL2.IField;\n retVal.push(computedField);\n retValMap[computedField.id] = true;\n }\n } else {\n retVal = retVal.concat(inFields.filter(field => !retValMap[field.id]));\n }\n return () => retVal;\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n const fieldIDs: string[] = [];\n for (const cf of this.validComputedFields()) {\n if (cf instanceof MultiField) {\n for (const cf2 of cf.validMultiFields()) {\n fieldIDs.push(cf2.column1());\n if (cf2.column2()) {\n fieldIDs.push(cf2.column2());\n }\n }\n } else {\n if (cf.type() === \"template\") {\n for (const fieldID of Utility.templateFields(cf.template())) {\n fieldIDs.push(fieldID);\n }\n } else {\n fieldIDs.push(cf.column1());\n if (cf.column2()) {\n fieldIDs.push(cf.column2());\n }\n }\n }\n }\n super.resolveInFields(refs, fieldIDs);\n }\n\n projection(): (row: object) => object {\n const trim = this._trim;\n const hasComputedFields = this.hasComputedFields();\n const computedFields = [];\n for (const cf of this.validComputedFields()) {\n if (cf instanceof MultiField) {\n for (const cf2 of cf.validMultiFields()) {\n computedFields.push({\n label: cf2.label(),\n func: cf2.computeFunc(trim)\n });\n }\n } else {\n computedFields.push({\n label: cf.label(),\n func: cf.computeFunc(trim)\n });\n }\n }\n return (row: object) => {\n const retVal = trim && hasComputedFields ? {} : { ...row };\n for (const cf of computedFields) {\n retVal[cf.label] = cf.func(row);\n }\n if (trim && hasComputedFields) {\n if (this._includeLParam) {\n retVal[\"__lparam\"] = row;\n }\n }\n return retVal;\n };\n }\n\n computeData(): ReadonlyArray<object> {\n const data = super.computeData();\n if (data.length === 0 || !this.exists()) return data;\n return data.map(this.projection());\n }\n}\n\nexport class Project extends ProjectBase {\n\n toDDL(): DDL2.IProject {\n return {\n type: \"project\",\n transformations: this.transformations()\n };\n }\n\n fromDDL(ddl: DDL2.IProject): this {\n return this.transformations(ddl.transformations);\n }\n\n static fromDDL(ddl: DDL2.IProject): Project {\n return new Project().fromDDL(ddl);\n }\n\n hash(more: object = {}): string {\n return super.hash({\n ddl: this.toDDL(),\n ...more\n });\n }\n}\nProject.prototype._class += \" Project\";\n\nexport class Mappings extends ProjectBase {\n\n constructor() {\n super();\n this._trim = true;\n this._includeLParam = true;\n }\n\n toDDL(): DDL2.IMappings {\n return {\n type: \"mappings\",\n transformations: this.transformations()\n };\n }\n\n fromDDL(_ddl: DDL2.IMappings): this {\n const ddl = _ddl || { transformations: [] };\n return this\n .transformations(ddl.transformations)\n ;\n }\n\n static fromDDL(ddl: DDL2.IMappings): Mappings {\n return new Mappings().fromDDL(ddl);\n }\n\n hash(more: object = {}): string {\n return super.hash({\n ddl: this.toDDL(),\n ...more\n });\n }\n\n referencedFields(refs: ReferencedFields): void {\n if (this.hasComputedFields()) {\n return super.referencedFields(refs);\n }\n this.resolveInFields(refs, this.inFields().filter(f => f.id !== \"__lparam\").map(f => f.id));\n }\n}\nMappings.prototype._class += \" Mappings\";\n\nComputedMapping.prototype.publish(\"value\", null, \"any\", \"Compare Value\", undefined, {\n validate: (w: ComputedMapping): boolean => (!w.value() && !w.newValue()) || (!!w.value() && !!w.newValue())\n});\nComputedMapping.prototype.publish(\"newValue\", null, \"any\", \"New Value\", undefined, {\n validate: (w: ComputedMapping): boolean => (!w.value() && !w.newValue()) || (!!w.value() && !!w.newValue())\n});\n\nComputedField.prototype.publish(\"label\", null, \"string\", \"Label\", null, { optional: true });\nComputedField.prototype.publish(\"type\", \"mapping\", \"set\", \"Project type\", [\"=\", \"*\", \"/\", \"+\", \"-\", \"scale\", \"template\", \"map\"], { optional: true, disable: w => !w.label() });\nComputedField.prototype.publish(\"column1\", null, \"set\", \"Param 1\", function (this: ComputedField) { return this.columns(); }, {\n optional: true,\n disable: (w: ComputedField) => w.disableColumn1(),\n validate: (w: ComputedField): boolean => w.columns().indexOf(w.column1()) >= 0\n});\nComputedField.prototype.publish(\"column2\", null, \"set\", \"Param 2\", function (this: ComputedField) { return this.columns(); }, {\n optional: true,\n disable: (w: ComputedField) => w.disableColumn2(),\n validate: (w: ComputedField): boolean => w.columns().indexOf(w.column2()) >= 0\n});\nComputedField.prototype.publish(\"constValue\", null, \"number\", \"Const value\", null, { optional: true, disable: (w: ComputedField) => !w.label() || [\"scale\"].indexOf(w.type()) < 0 });\nComputedField.prototype.publish(\"template\", null, \"string\", \"template\", null, { optional: true, disable: (w: ComputedField) => !w.label() || [\"template\"].indexOf(w.type()) < 0 });\nComputedField.prototype.publish(\"default\", null, \"any\", \"Default Value\", null, { optional: true, disable: (w: ComputedField) => !w.label() || [\"map\"].indexOf(w.type()) < 0 });\nComputedField.prototype.publish(\"mapping\", [], \"propertyArray\", \"Mapped Values\", null, { autoExpand: ComputedMapping, disable: (w: ComputedField) => w.disableMapping() });\nComputedField.prototype.publish(\"childField\", [], \"propertyArray\", \"Child Fields\", null, { autoExpand: ComputedField, disable: (w: ComputedField) => w.disableChildField() });\n\nMultiField.prototype.publish(\"label\", \"\", \"string\", \"Label\");\nMultiField.prototype.publish(\"multiFields\", [], \"propertyArray\", \"Multi Fields\", null, { autoExpand: ComputedField });\n\nexport interface ProjectBase {\n computedFields(): Array<ComputedField | MultiField>;\n computedFields(_: Array<ComputedField | MultiField>): this;\n}\n\nProjectBase.prototype.publish(\"computedFields\", [], \"propertyArray\", \"Computed Fields\", null, { autoExpand: ComputedField });","import { PropertyExt } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { ascending as d3Ascending, descending as d3Descending } from \"d3-array\";\nimport { Activity, IActivityError, ReferencedFields } from \"./activity.ts\";\n\nexport class SortColumn extends PropertyExt {\n private _owner: Sort;\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.fieldID_valid()) {\n retVal.push({\n source: `${prefix}.fieldID`,\n msg: `Invalid fieldID: ${this.fieldID()}`,\n hint: `expected ${JSON.stringify(this.fieldIDs())}`\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): Sort;\n owner(_: Sort): this;\n owner(_?: Sort): Sort | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.fieldID();\n }\n\n toDDL(): DDL2.ISortCondition {\n return {\n fieldID: this.fieldID(),\n descending: this.descending()\n };\n }\n\n fromDDL(ddl: DDL2.ISortCondition): this {\n return this\n .fieldID(ddl.fieldID)\n .descending(ddl.descending)\n ;\n }\n\n static fromDDL(ddl: DDL2.ISortCondition): SortColumn {\n return new SortColumn().fromDDL(ddl);\n }\n\n hash(): string {\n return hashSum({\n sortColumn: this.fieldID(),\n descending: this.descending()\n });\n }\n\n fieldIDs() {\n return this._owner.fieldIDs();\n }\n\n field(id: string): DDL2.IField | undefined {\n return this._owner.inFields().filter(field =>\n field.id === id\n )[0];\n }\n}\nSortColumn.prototype._class += \" SortColumn\";\n\nexport interface SortColumn {\n fieldID(): string;\n fieldID(_: string): this;\n fieldID_valid(): boolean;\n descending(): boolean;\n descending(_: boolean): this;\n}\n\n// ===========================================================================\nexport class Sort extends Activity {\n static Column = SortColumn;\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const sb of this.validSortBy()) {\n retVal = retVal.concat(sb.validate(\"Sort.column\"));\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n toDDL(): DDL2.ISort {\n return {\n type: \"sort\",\n conditions: this.conditions()\n };\n }\n\n fromDDL(ddl: DDL2.ISort): this {\n this.conditions(ddl.conditions);\n return this;\n }\n\n static fromDDL(ddl: DDL2.ISort) {\n return new Sort().fromDDL(ddl);\n }\n\n conditions(): DDL2.ISortCondition[];\n conditions(_: DDL2.ISortCondition[]): this;\n conditions(_?: DDL2.ISortCondition[]): DDL2.ISortCondition[] | this {\n if (!arguments.length) return this.validSortBy().map(column => column.toDDL());\n this.column(_.map(condition => SortColumn.fromDDL(condition)));\n return this;\n }\n\n // Activitiy ---\n hash(): string {\n return hashSum({\n Sort: this.column().map(sb => sb.hash())\n });\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n super.resolveInFields(refs, this.validSortBy().map(sortBy => sortBy.fieldID()));\n }\n\n validSortBy(): SortColumn[] {\n return this.column().filter(sortBy => sortBy.fieldID());\n }\n\n exists(): boolean {\n return this.validSortBy().length > 0;\n }\n\n fieldIDs(): string[] {\n return this.inFields().map(field => field.id);\n }\n\n computeData(): ReadonlyArray<object> {\n const data = super.computeData();\n const sortByArr: Array<{ compare: (l, r) => number, id: string }> = [];\n for (const sortBy of this.validSortBy()) {\n sortByArr.push({\n compare: sortBy.descending() ? d3Descending : d3Ascending,\n id: sortBy.fieldID()\n });\n }\n\n if (sortByArr.length) {\n return [...data].sort((l: any, r: any) => {\n for (const item of sortByArr) {\n const retVal2 = item.compare(l[item.id], r[item.id]);\n if (retVal2 !== 0) {\n return retVal2;\n }\n }\n return 0;\n });\n\n }\n return data;\n }\n}\nSort.prototype._class += \" Sort\";\n\nexport interface Sort {\n column(): SortColumn[];\n column(_: SortColumn[]): this;\n}\n\nSortColumn.prototype.publish(\"fieldID\", null, \"set\", \"Sort Field\", function (this: SortColumn) { return this.fieldIDs(); }, {\n optional: true,\n validate: (w: SortColumn): boolean => w.fieldIDs().indexOf(w.fieldID()) >= 0\n });\nSortColumn.prototype.publish(\"descending\", false, \"boolean\", \"Sort Field\");\n\nSort.prototype.publish(\"column\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: SortColumn });","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { ElementContainer } from \"../model/element.ts\";\nimport { Activity, ActivityPipeline } from \"./activity.ts\";\nimport { DatasourceRefType } from \"./datasource.ts\";\nimport { DSPicker } from \"./dspicker.ts\";\nimport { Filters } from \"./filter.ts\";\nimport { GroupBy } from \"./groupby.ts\";\nimport { Limit } from \"./limit.ts\";\nimport { Project } from \"./project.ts\";\nimport { Sort } from \"./sort.ts\";\n\nexport class HipiePipeline extends ActivityPipeline {\n\n _origDatasource;\n _origFilters;\n _origProject;\n _origGroupBy;\n _origSort;\n _origLimit;\n\n declare _datasource: DSPicker | DatasourceRefType;\n declare _filters: Filters;\n declare _project: Project;\n declare _groupBy: GroupBy;\n declare _sort: Sort;\n declare _limit: Limit;\n\n constructor(private _ec: ElementContainer, viewID: string) {\n super();\n this._id = viewID;\n this._datasource = new DSPicker(this._ec);\n this._filters = new Filters(this._ec);\n this._project = new Project();\n this._groupBy = new GroupBy();\n this._sort = new Sort();\n this._limit = new Limit();\n this.updateSequence();\n }\n\n activities(): Activity[];\n activities(_: Activity[]): this;\n activities(_?: Activity[]): Activity[] | this {\n const retVal = super.activities.apply(this, arguments);\n return retVal;\n }\n\n private updateSequence() {\n this.activities([\n this.datasource() as Activity,\n this.filters(),\n this.project(),\n this.groupBy(),\n this.sort(),\n this.limit()\n ]);\n }\n\n selectionFields(): ReadonlyArray<DDL2.IField> {\n return this.last().outFields();\n }\n}\n\nexport interface HipiePipeline {\n datasource(): DSPicker | DatasourceRefType;\n datasource(_: DSPicker | DatasourceRefType): this;\n filters(): Filters;\n filters(_: Filters): this;\n project(): Project;\n project(_: Project): this;\n groupBy(): GroupBy;\n groupBy(_: GroupBy): this;\n sort(): Sort;\n sort(_: Sort): this;\n limit(): Limit;\n limit(_: Limit): this;\n}\n\nHipiePipeline.prototype.publish(\"datasource\", null, \"widget\", \"Data Source 2\");\nHipiePipeline.prototype.publish(\"filters\", null, \"widget\", \"Client Filters\");\nHipiePipeline.prototype.publish(\"project\", null, \"widget\", \"Project\");\nHipiePipeline.prototype.publish(\"groupBy\", null, \"widget\", \"Group By\");\nHipiePipeline.prototype.publish(\"sort\", null, \"widget\", \"Sort\");\nHipiePipeline.prototype.publish(\"limit\", null, \"widget\", \"Limit output\");\n\nfunction wrapHipiePipelineProperty(prop: string) {\n const origKey = `_orig${prop.charAt(0).toUpperCase() + prop.slice(1)}`;\n HipiePipeline.prototype[origKey] = HipiePipeline.prototype[prop];\n HipiePipeline.prototype[prop] = function (_?) {\n const retVal = HipiePipeline.prototype[origKey].apply(this, arguments);\n if (_ !== undefined) {\n this.updateSequence();\n }\n return retVal;\n };\n}\nwrapHipiePipelineProperty(\"datasource\");\nwrapHipiePipelineProperty(\"filters\");\nwrapHipiePipelineProperty(\"project\");\nwrapHipiePipelineProperty(\"groupBy\");\nwrapHipiePipelineProperty(\"sort\");\nwrapHipiePipelineProperty(\"limit\");","import { HipiePipeline } from \"./hipiepipeline.ts\";\n\nexport class NullView extends HipiePipeline {\n hash(): string {\n return super.hash();\n }\n\n _fetch(from: number, count: number): Promise<any[]> {\n return Promise.resolve([]);\n }\n}\nNullView.prototype._class += \" NullView\";\n","import { Spacer, ToggleButton, Widget } from \"@hpcc-js/common\";\nimport { ChartPanel, Modal } from \"@hpcc-js/layout\";\n\nexport interface IVizPopupPanelOwner {\n vizActivation(viz);\n}\n\nexport class VizPopupPanel extends Modal {\n\n private _owner: IVizPopupPanelOwner;\n private _ownerLParam;\n\n constructor(owner: IVizPopupPanelOwner, ownerLParam) {\n super();\n this._owner = owner;\n this._ownerLParam = ownerLParam;\n this._drawStartPos = \"origin\";\n this.visible(false);\n this.minHeight_default(\"240px\");\n this.minWidth_default(\"320px\");\n this.overflowY_default(\"hidden\");\n }\n\n private _host: VizChartPanel;\n host(_?: VizChartPanel): VizChartPanel | this {\n if (!arguments.length) return this._host;\n if (this._host && this._host !== _) {\n this._host._togglePopup\n .selected(false)\n .render()\n ;\n }\n this._host = _;\n this._owner.vizActivation(this._ownerLParam);\n return this;\n }\n\n enter(domNode, element) {\n domNode.parentElement.style.position = \"absolute\";\n const widgetTitle = (this.widget() as ChartPanel).title();\n if (widgetTitle) {\n this.title(widgetTitle);\n (this.widget() as ChartPanel).titleVisible(false);\n }\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n this.fixedTop(this._pos.y + \"px\");\n this.fixedLeft(this._pos.x + \"px\");\n super.update(domNode, element);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n const widgetTitle = (this.widget() as ChartPanel).title();\n if (widgetTitle) {\n (this.widget() as ChartPanel).titleVisible(true);\n }\n }\n\n closeModal() {\n super.closeModal();\n if (this._host) {\n this._host._togglePopup\n .selected(false)\n .render()\n ;\n }\n }\n}\nVizPopupPanel.prototype._class += \" marshaller_VizPopupPanel\";\n\nexport interface VizPopupPanel {\n widget(_: Widget): this;\n widget(): Widget;\n widget_exists(): boolean;\n minHeight_default(_: string);\n minWidth_default(_: string);\n overflowY_default(_: string);\n}\n\n// ===========================================================================\n\nexport interface VizChartPanel {\n}\n\nexport class VizChartPanel extends ChartPanel {\n\n private _popup: VizPopupPanel;\n _togglePopup = new ToggleButton().faChar(\"fa-filter\").tooltip(\"Filter\")\n .on(\"click\", () => {\n this._popup.host(this);\n const dp = this.locateClosestAncestor([\"marshaller_DashboardDockPanel\", \"marshaller_DashboardGrid\"]);\n const dpBBox = dp.getBBox(true);\n const cp = this._popup.widget() as VizChartPanel;\n const tbBBox = this._togglePopup.getBBox();\n this._popup\n .pos({\n x: -dpBBox.x + tbBBox.x + tbBBox.width - cp.minWidth(),\n y: -dpBBox.y + tbBBox.y + tbBBox.height\n })\n .resize({ width: cp.minWidth(), height: cp.minHeight() })\n .visible(this._togglePopup.selected())\n .render((popup: any) => {\n const widgetSelector = \"#\" + popup.id() + \" .layout_Carousel .common_Widget\";\n const node = popup.element().node();\n if (node) {\n const { height, width } = node.querySelector(widgetSelector).getBoundingClientRect();\n popup.resizeBodySync(width, height);\n }\n })\n ;\n });\n\n private _origButtons: Widget[];\n private _filterButtons: Widget[];\n\n constructor() {\n super();\n\n this._origButtons = this.buttons();\n this._filterButtons = [this._togglePopup, new Spacer(), ...this._origButtons];\n }\n\n popup(_?: VizPopupPanel): VizPopupPanel | this {\n if (!arguments.length) return this._popup;\n this._popup = _;\n if (!this._popup) {\n this._togglePopup.selected(false);\n }\n this.buttons(this._popup ? this._filterButtons : this._origButtons);\n return this;\n }\n}\nVizChartPanel.prototype._class += \" marshaller_VizChartPanel\";\n\nexport interface VizChartPanel {\n minWidth(): number;\n minWidth(_: number): this;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n}\nVizChartPanel.prototype.publish(\"descriptionTemplate\", \"\", \"string\");\nVizChartPanel.prototype.publish(\"minWidth\", 320, \"number\", \"Min Width\");\nVizChartPanel.prototype.publish(\"minHeight\", 240, \"number\", \"Min Height\");\n","import { Area, Bar, Bubble, Column, Contour, HexBin, Line, Pie, Radar, RadialBar, Scatter, Step, WordCloud } from \"@hpcc-js/chart\";\nimport { Database, EntityRectList, InputField, PropertyExt, Widget } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { FieldForm } from \"@hpcc-js/form\";\nimport { AdjacencyGraph, DataGraph } from \"@hpcc-js/graph\";\nimport { ChoroplethCounties, ChoroplethStates, Leaflet } from \"@hpcc-js/map\";\nimport { isArray } from \"@hpcc-js/util\";\nimport { HipiePipeline } from \"../activities/hipiepipeline.ts\";\nimport { ComputedField, Mappings, MultiField } from \"../activities/project.ts\";\nimport { ElementContainer } from \"./element.ts\";\nimport { VizChartPanel } from \"./vizChartPanel.ts\";\n\nexport type VizType = \"Table\" | \"FieldForm\" |\n \"Area\" | \"Bubble\" | \"Bar\" | \"Column\" | \"Contour\" | \"HexBin\" | \"Line\" | \"Pie\" | \"WordCloud\" | \"Radar\" | \"RadialBar\" | \"Scatter\" | \"Step\" |\n \"USCountiesChoropleth\" | \"USStatesChoropleth\" | \"ClusterPins\" |\n \"EntityRectList\" | \"AdjacencyGraph\" | \"DataGraph\";\nconst VizTypeMap: { [key: string]: new (...args: any[]) => object } = {\n Table, FieldForm,\n Area, Bubble, Bar, Column, Contour, HexBin, Line, Pie, Radar, RadialBar, Scatter, Step, WordCloud,\n USCountiesChoropleth: ChoroplethCounties, USStatesChoropleth: ChoroplethStates, ClusterPins: Leaflet.ClusterPins,\n EntityRectList, AdjacencyGraph, DataGraph\n};\nexport const VizTypeSet = [];\nfor (const key in VizTypeMap) {\n VizTypeSet.push(key);\n}\n\nfunction typeClass(type: VizType): any {\n const retVal = VizTypeMap[type];\n return retVal || Table;\n}\n\nfunction typeNew(type: VizType): Widget {\n const ChartClass = VizTypeMap[type];\n const retVal = new (ChartClass || Table)() as Widget;\n\n // Override default properties as needed ---\n if (retVal instanceof FieldForm) {\n retVal\n .validate(false)\n .allowEmptyRequest(true)\n ;\n } else if (retVal instanceof AdjacencyGraph) {\n retVal\n .uidColumn(\"uid\")\n .labelColumn(\"label\")\n .iconColumn(\"icon\")\n .linksColumn(\"links\")\n .linkUidColumn(\"uid\")\n .linkLabelColumn(\"label\")\n ;\n }\n return retVal;\n}\n\nfunction typeInputs(type: VizType): InputField[] {\n return typeClass(type).__inputs || [];\n}\n\nexport class Visualization extends PropertyExt {\n\n _origVisibility;\n _origChartType;\n _origChartPanel;\n\n declare _visibility: DDL2.VisibilityType;\n declare _chartType: VizType;\n declare _chartPanel: VizChartPanel;\n\n protected _hipiePipeline: HipiePipeline;\n constructor(protected _ec: ElementContainer, hipiePipeline: HipiePipeline) {\n super();\n this._hipiePipeline = hipiePipeline;\n this.mappings(new Mappings());\n this.chartPanel(new VizChartPanel());\n this.typeChanged();\n }\n\n visualizationIDs(): string[] {\n return this._ec.elementIDs().filter(id => id !== this.id());\n }\n\n _prevChartType;\n typeChanged() {\n if (this._prevChartType !== this._chartType) {\n this._prevChartType = this._chartType;\n this.refreshMappings();\n const chart = typeNew(this._chartType);\n this.chartPanel().widget(chart);\n }\n }\n\n properties(): DDL2.IWidgetProperties;\n properties(_: DDL2.IWidgetProperties): this;\n properties(_?: DDL2.IWidgetProperties): DDL2.IWidgetProperties | this {\n if (!arguments.length) return this.chartPanel().serialize();\n this.chartPanel().deserialize(_);\n\n return this;\n }\n\n refreshMappings(): this {\n const mappings = this.mappings();\n mappings.sourceActivity(this._hipiePipeline);\n const cfs = mappings.validComputedFields();\n const inFields = mappings.inFields();\n const taken = {};\n mappings.computedFields(typeInputs(this._chartType).map((input, idx) => {\n let retVal: MultiField | ComputedField = cfs[idx];\n if (retVal) {\n if (retVal instanceof MultiField) {\n } else {\n retVal.label(input.id);\n }\n } else {\n if (input.multi) {\n retVal = new MultiField()\n .owner(mappings)\n .label(input.id)\n ;\n const computedFields: ComputedField[] = [];\n for (const inField of inFields) {\n if ((input.type === \"any\" || input.type === inField.type) && !taken[inField.id]) {\n taken[inField.id] = true;\n computedFields.push(new ComputedField()\n .label(inField.id)\n .type(\"=\")\n .column1(inField.id)\n );\n }\n }\n retVal.multiFields(computedFields);\n } else {\n retVal = new ComputedField()\n .owner(mappings)\n .label(input.id)\n .type(\"=\")\n ;\n for (const inField of inFields) {\n if ((input.type === \"any\" || input.type === inField.type) && !taken[inField.id]) {\n taken[inField.id] = true;\n retVal.column1(inField.id);\n break;\n }\n }\n }\n }\n return retVal;\n }));\n return this;\n }\n\n _prevFields: ReadonlyArray<DDL2.IField> = [];\n _prevLinkFields: ReadonlyArray<DDL2.IField> = [];\n _prevData: ReadonlyArray<object> = [];\n refreshData(): Promise<void> {\n const mappings = this.mappings();\n\n const fields = mappings.outFields();\n const dbFields = this.toDBFields(fields);\n let linkFields: ReadonlyArray<DDL2.IField>;\n let dbLinkFields = [];\n const se = this._ec.element(this.secondaryDataviewID());\n if (se) {\n linkFields = se.mappings().outFields();\n dbLinkFields = this.toDBFields(linkFields);\n }\n\n const fieldsChanged = this._prevFields !== fields || this._prevLinkFields !== linkFields;\n if (fieldsChanged) {\n this._prevFields = fields;\n if (this.chartType() === \"DataGraph\") {\n const dataGraph = this.chartPanel().widget() as DataGraph;\n dataGraph.vertexColumns(dbFields.map(f => f.label()));\n dataGraph.edgeColumns(dbLinkFields.map(f => f.label()));\n } else {\n this.chartPanel().fields(dbFields.filter(f => f.id() !== \"__lparam\"));\n }\n } else {\n console.warn(`***${this.id()} Immutable Fields***`);\n }\n\n const data = mappings.outData();\n const dataChanged = this._prevData !== data;\n if (dataChanged) {\n this._prevData = data;\n const mappedData = this.toDBData(dbFields, data);\n if (this.chartType() === \"DataGraph\") {\n const dataGraph = this.chartPanel().widget() as DataGraph;\n dataGraph.vertices(mappedData);\n if (se) {\n const linkData = se.mappings().outData();\n const mappedLinkData = this.toDBData(dbLinkFields, linkData);\n dataGraph.edges(mappedLinkData);\n }\n } else {\n this.chartPanel().data(mappedData);\n }\n } else {\n console.warn(`${this.id()} Immutable Data!`);\n }\n\n if (fieldsChanged || dataChanged) {\n return this.chartPanel().renderPromise().then(() => { });\n }\n return Promise.resolve();\n }\n\n private fieldTypeTodbFieldType(type: DDL2.IFieldType): Database.FieldType {\n switch (type) {\n case \"dataset\":\n return \"nested\";\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n default:\n return \"string\";\n }\n }\n\n toDBFields(fields: ReadonlyArray<DDL2.IField>): Database.Field[] {\n const retVal: Database.Field[] = [];\n for (const field of fields || []) {\n const f = new Database.Field()\n .type(this.fieldTypeTodbFieldType(field.type))\n .id(field.id)\n .label(field.id)\n ;\n switch (field.type) {\n case \"dataset\":\n f.children(this.toDBFields(field.children));\n break;\n case \"object\":\n // TODO: For __lparam we should do nothing - not 100% if that is correct for \"real\" data (we don't really support \"object\" anyway)?\n break;\n }\n retVal.push(f);\n }\n return retVal;\n }\n\n toDBData(fields: Database.Field[], data: ReadonlyArray<object> | Readonly<object>) {\n const _data: ReadonlyArray<object> = isArray(data) ? data : [data];\n return _data.map((row: any) => {\n const retVal = [];\n for (const field of fields) {\n if (field.type() === \"nested\") {\n retVal.push(this.toDBData(field.children() as Database.Field[], row[field.id()].Row || row[field.id()]));\n } else {\n retVal.push(row[field.label()]);\n }\n }\n return retVal;\n });\n }\n\n exec(): Promise<void[]> {\n const promises = [];\n if (this.secondaryDataviewID_exists()) {\n const secondaryElementID = this.secondaryDataviewID();\n const secondaryElement = this._ec.element(secondaryElementID);\n if (secondaryElement) {\n promises.push(secondaryElement.visualization().exec());\n }\n }\n\n const mappings = this.mappings();\n mappings.sourceActivity(this._hipiePipeline);\n promises.push(mappings.refreshMeta().then(() => {\n return mappings.exec();\n }));\n\n return Promise.all(promises);\n }\n\n refresh(): Promise<void> {\n if (this.chartPanel().startProgress) {\n this.chartPanel().startProgress();\n }\n return this.exec().then(() => {\n if (this.chartPanel().finishProgress) {\n this.chartPanel().finishProgress();\n }\n return this.refreshData();\n });\n }\n\n // Events ---\n click(row: any, col: string, sel: boolean, more?) {\n }\n\n vertex_click(row: any, col: string, sel: boolean) {\n }\n}\nVisualization.prototype._class += \" Visualization\";\n\nexport interface Visualization {\n title(): string;\n title(_: string): this;\n description(): string;\n description(_: string): this;\n visibility(): DDL2.VisibilityType;\n visibility(_: DDL2.VisibilityType): this;\n chartType(): VizType;\n chartType(_: VizType, props?: { [prop: string]: any }): this;\n secondaryDataviewID(): string;\n secondaryDataviewID(_: string): this;\n secondaryDataviewID_exists(): boolean;\n secondaryDataviewID_valid(): boolean;\n mappings(): Mappings;\n mappings(_: Mappings): this;\n chartPanel(): VizChartPanel;\n chartPanel(_: VizChartPanel): this;\n}\n\nVisualization.prototype.publishProxy(\"title\", \"_chartPanel\");\nVisualization.prototype.publishProxy(\"description\", \"_chartPanel\");\nVisualization.prototype.publish(\"visibility\", DDL2.VisibilitySet[0], \"set\", \"Type\", DDL2.VisibilitySet);\nVisualization.prototype.publish(\"chartType\", \"Table\", \"set\", \"Type\", VizTypeSet);\nVisualization.prototype.publish(\"secondaryDataviewID\", null, \"set\", \"Secondary Data View (e.g. graph edges)\", function (this: Visualization) { return this.visualizationIDs(); }, { optional: true });\nVisualization.prototype.publish(\"mappings\", null, \"widget\", \"Mappings\", undefined, { render: false, internal: true });\nVisualization.prototype.publish(\"chartPanel\", [], \"widget\", \"Widget\");\n\nVisualization.prototype._origVisibility = Visualization.prototype.visibility;\nVisualization.prototype.visibility = function (this: Visualization, _?) {\n const prev = this._visibility;\n const retVal = Visualization.prototype._origVisibility.apply(this, arguments);\n if (_ !== undefined && prev !== _) {\n this.chartPanel().target(null);\n }\n return retVal;\n};\n\nVisualization.prototype._origChartType = Visualization.prototype.chartType;\nVisualization.prototype.chartType = function (this: Visualization, _?, props?) {\n if (_ !== undefined && VizTypeSet.indexOf(_) === -1) {\n _ = \"Table\";\n }\n const retVal = Visualization.prototype._origChartType.apply(this, arguments);\n if (_ !== undefined) {\n this.typeChanged();\n if (props) {\n const widget = this.chartPanel().widget();\n for (const prop in props) {\n if (typeof widget[prop] === \"function\") {\n widget[prop](props[prop]);\n }\n }\n }\n }\n return retVal;\n};\n\nVisualization.prototype._origChartPanel = Visualization.prototype.chartPanel;\nVisualization.prototype.chartPanel = function (this: Visualization, _?) {\n const retVal = Visualization.prototype._origChartPanel.apply(this, arguments);\n if (_ !== undefined) {\n this._chartPanel\n .on(\"click\", (row: any, col: string, sel: boolean, more) => this.click(row, col, sel, more))\n .on(\"vertex_click\", (row: any, col: string, sel: boolean) => this.vertex_click(row, col, sel))\n ;\n for (const key in VizTypeMap) {\n if (this._chartPanel.widget() instanceof VizTypeMap[key]) {\n this._chartType = key as VizType;\n break;\n }\n }\n }\n return retVal;\n};","import { PropertyExt, Widget } from \"@hpcc-js/common\";\nimport { IOptionsSend } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { find, hashSum, isArray } from \"@hpcc-js/util\";\nimport { Activity, IActivityError } from \"../activities/activity.ts\";\nimport { emptyDatabomb } from \"../activities/databomb.ts\";\nimport { DatasourceRefType } from \"../activities/datasource.ts\";\nimport { HipiePipeline } from \"../activities/hipiepipeline.ts\";\nimport { Mappings } from \"../activities/project.ts\";\nimport { Visualization } from \"./visualization.ts\";\nimport { VizChartPanel } from \"./vizChartPanel.ts\";\n\nexport class State extends PropertyExt {\n\n constructor() {\n super();\n this.selection([]);\n }\n\n set(_: Array<{ [key: string]: any }>): boolean {\n const currSelHash = hashSum(this.selection());\n const newSelHash = hashSum(_);\n if (currSelHash !== newSelHash) {\n this.selection(_);\n return true;\n }\n return false;\n }\n\n removeInvalid(data: ReadonlyArray<object>): boolean {\n const currSelection = this.selection();\n const newSelection: object[] = [];\n for (const selRow of currSelection) {\n if (find(data, (row: { [key: string]: any }, index): boolean => {\n for (const column in selRow) {\n if (selRow[column] !== row[column]) {\n return false;\n }\n }\n return true;\n })) {\n newSelection.push(selRow);\n }\n }\n if (newSelection.length !== currSelection.length) {\n this.selection(newSelection);\n return true;\n }\n return false;\n }\n}\nState.prototype._class += \" State\";\nexport interface State {\n selection(): Array<{ [key: string]: any }>;\n selection(_: Array<{ [key: string]: any }>): this;\n}\nState.prototype.publish(\"selection\", [], \"array\", \"State\");\n\nlet vizID = 0;\nexport class Element extends PropertyExt {\n private _vizChartPanel: Visualization;\n\n _origVisualization;\n\n declare _visualization: Visualization;\n\n constructor(private _ec: ElementContainer) {\n super();\n while (true) {\n vizID++;\n this._id = `e_${vizID}`;\n if (!this._ec.elementExists(this._id)) {\n break;\n }\n }\n const view = new HipiePipeline(this._ec, this._id);\n this.hipiePipeline(view);\n this._vizChartPanel = new Visualization(this._ec, this.hipiePipeline())\n .id(`viz_${vizID}`)\n .title(`Element ${vizID}`)\n ;\n this._vizChartPanel.chartPanel().id(`cp_${vizID}`);\n this.visualization(this._vizChartPanel);\n this.state(new State());\n }\n\n id(): string;\n id(_: string): this;\n id(_?: string): string | this {\n const retVal = super.id.apply(this, arguments);\n if (arguments.length) {\n this._vizChartPanel.id(_);\n }\n return retVal;\n }\n\n chartType(): string {\n return this._vizChartPanel.chartType();\n }\n\n chartPanel(): VizChartPanel;\n chartPanel(_: VizChartPanel): this;\n chartPanel(_?: VizChartPanel): VizChartPanel | this {\n if (!arguments.length) return this._vizChartPanel.chartPanel();\n this._vizChartPanel.chartPanel(_);\n return this;\n }\n\n chart(): Widget {\n return this._vizChartPanel.chartPanel().widget();\n }\n\n mappings(): Mappings;\n mappings(_: Mappings): this;\n mappings(_?: Mappings): Mappings | this {\n if (!arguments.length) return this._vizChartPanel.mappings();\n this._vizChartPanel.mappings(_);\n return this;\n }\n\n pipeline(activities: Activity[]): this {\n this.hipiePipeline()\n .activities(activities)\n ;\n return this;\n }\n\n updatedBy(): string[] {\n const retVal = this.hipiePipeline().updatedBy();\n if (this.visualization().secondaryDataviewID_exists()) {\n retVal.push(this.visualization().secondaryDataviewID());\n }\n return retVal;\n }\n\n dataProps(): PropertyExt {\n return this.hipiePipeline();\n }\n\n vizProps(): Widget {\n return this.visualization().chartPanel();\n }\n\n stateProps(): PropertyExt {\n return this.state();\n }\n\n private _errors: IElementError[] = [];\n errors(): IElementError[] {\n return this._errors;\n }\n\n validate(): IElementError[] {\n if (!this._initialized) {\n return [];\n }\n this._errors = [];\n const pipeline = this.hipiePipeline();\n for (const activity of [...pipeline.activities(), this.mappings()]) {\n for (const error of activity.validate()) {\n this._errors.push({\n elementID: this.id(),\n ...error\n });\n }\n }\n return this._errors;\n }\n\n private _initialized = false;\n refresh(): Promise<void> {\n const filters = this.hipiePipeline().filters().validFilters();\n const desc: string[] = filters.map(f => f.createFilterDescription());\n this.visualization().chartPanel().description(desc.join(\", \"));\n return this.visualization().refresh().then(() => {\n this._initialized = true;\n const data = this.hipiePipeline().outData();\n if (this.visualization().chartType() === \"FieldForm\") {\n if (this.state().set([...data])) {\n this.selectionChanged();\n }\n } else {\n if (this.state().removeInvalid(data)) {\n this.selectionChanged();\n }\n }\n });\n }\n\n // Selection ---\n selection(): object[];\n selection(_: object[]): this;\n selection(_?: object[]): object[] | this {\n if (!arguments.length) return this.state().selection();\n this.state().selection(_);\n this.selectionChanged();\n return this;\n }\n\n // Events ---\n selectionChanged() {\n const promises: Array<Promise<void>> = [];\n for (const filteredViz of this._ec.filteredBy(this.id())) {\n promises.push(filteredViz.refresh());\n }\n Promise.all(promises).then(() => {\n this._ec.vizStateChanged(this);\n });\n }\n\n monitor(func: (id: string, newVal: any, oldVal: any, source: PropertyExt) => void): { remove: () => void; } {\n return this.hipiePipeline().monitor(func);\n }\n}\nElement.prototype._class += \" Viz\";\n\nexport interface Element {\n hipiePipeline(): HipiePipeline;\n hipiePipeline(_: HipiePipeline): this;\n visualization(): Visualization;\n visualization(_: Visualization): this;\n state(): State;\n state(_: State): this;\n}\n\nElement.prototype.publish(\"hipiePipeline\", null, \"widget\", \"Data View\");\nElement.prototype.publish(\"visualization\", null, \"widget\", \"Visualization\");\nElement.prototype.publish(\"state\", null, \"widget\", \"State\");\n\nElement.prototype._origVisualization = Element.prototype.visualization;\nElement.prototype.visualization = function (this: Element, _?) {\n const retVal = Element.prototype._origVisualization.apply(this, arguments);\n if (_ !== undefined) {\n this._visualization\n .on(\"click\", (_row: object | object[], col: string, sel: boolean, more?) => {\n if (more && more.selection) {\n this.selection(sel ? more.selection.map(r => r.__lparam || r) : []);\n } else {\n const row: any[] = isArray(_row) ? _row : [_row];\n this.selection(sel ? row.map(r => r.__lparam || r) : []);\n }\n })\n .on(\"vertex_click\", (_row: object | object[], col: string, sel: boolean) => {\n const row: any[] = isArray(_row) ? _row : [_row];\n this.selection(sel ? row.map(r => r.__lparam || r) : []);\n })\n ;\n }\n return retVal;\n};\n\nexport interface IPersist {\n ddl: DDL2.Schema;\n layout: any;\n}\n\nexport interface IElementError extends IActivityError {\n elementID: string;\n}\n\nexport class ElementContainer extends PropertyExt {\n\n private _nullElement;\n\n private _datasources: DatasourceRefType[] = [emptyDatabomb];\n private _elements: Element[] = [];\n\n constructor() {\n super();\n this.clear();\n this._nullElement = new Element(this);\n }\n\n clear(eid?: string) {\n this._datasources = eid === undefined ? [emptyDatabomb] : this._datasources;\n this._elements = eid === undefined ? [] : this._elements.filter(d => d.id() !== eid);\n }\n\n private _hookSend: IOptionsSend;\n hookSend(): IOptionsSend;\n hookSend(_: IOptionsSend): this;\n hookSend(_?: IOptionsSend): IOptionsSend | this {\n if (!arguments.length) return this._hookSend;\n this._hookSend = _;\n return this;\n }\n\n datasources(): DatasourceRefType[];\n datasources(_: DatasourceRefType[]): this;\n datasources(_?: DatasourceRefType[]): DatasourceRefType[] | this {\n if (!arguments.length) return this._datasources;\n this._datasources = _;\n return this;\n }\n\n datasource(id): DatasourceRefType {\n return this._datasources.filter(ds => ds.id() === id)[0];\n }\n\n appendDatasource(ds: DatasourceRefType): this {\n this._datasources.push(ds);\n return this;\n }\n\n removeDatasource(ds: DatasourceRefType): this {\n this._datasources = this._datasources.filter(row => row !== ds);\n return this;\n }\n\n elements(): Element[] {\n return [...this._elements];\n }\n\n element(w: string | PropertyExt | VizChartPanel): Element {\n let retVal: Element[];\n if (typeof w === \"string\") {\n retVal = this._elements.filter(viz => viz.id() === w);\n } else if (w instanceof VizChartPanel) {\n retVal = this._elements.filter(v => v.chartPanel() === w);\n } else {\n retVal = this._elements.filter(v => v.vizProps() === w);\n }\n if (retVal.length) {\n return retVal[0];\n }\n return this._nullElement;\n }\n\n elementExists(w: string | PropertyExt): boolean {\n return this.element(w) !== this._nullElement;\n }\n\n elementIDs() {\n return this._elements.map(viz => viz.id());\n }\n\n append(element: Element): this {\n this._elements.push(element);\n return this;\n }\n\n filteredBy(elemID: string): Element[] {\n return this._elements.filter(otherViz => {\n const filterIDs = otherViz.updatedBy();\n return filterIDs.indexOf(elemID) >= 0;\n });\n }\n\n views(): HipiePipeline[] {\n return this._elements.map(viz => viz.hipiePipeline());\n }\n\n view(id: string): HipiePipeline | undefined {\n return this.views().filter(view => view.id() === id)[0];\n }\n\n normalizePersist(seri: any): { [key: string]: { [key: string]: any } } {\n const ret = {};\n seri.__properties.content.map((n) => {\n const _is_MegaChart = !!n.__properties.widget.__properties.chart;\n const _cell = n;\n const _panel = n.__properties.widget;\n const _widget = _is_MegaChart ? n.__properties.widget.__properties.chart : n.__properties.widget.__properties.widget;\n const _id = n.__properties.widget.__id ? n.__properties.widget.__id : n.__properties.widget.__properties.widget.__id;\n ret[_id] = {\n id: _id,\n package: _widget.__class.split(\"_\")[0],\n object: _widget.__class.split(\"_\")[1],\n cell: _get_params(_cell, [\"chart\", \"widget\", \"fields\"]),\n panel: _get_params(_panel, [\"chart\", \"widget\", \"fields\"]),\n widget: _get_params(_widget, [\"fields\"])\n };\n });\n return ret;\n function _get_params(_o, exclude_list) {\n const ret = {};\n Object.keys(_o.__properties)\n .filter(n => exclude_list.indexOf(n) === -1)\n .forEach(n => ret[n] = _o.__properties[n]);\n return ret;\n }\n }\n\n validate(): IElementError[] {\n let retVal: IElementError[] = [];\n this._elements.forEach(elem => {\n retVal = retVal.concat(elem.validate());\n });\n return retVal;\n }\n\n refresh(): Promise<this> {\n return Promise.all(this.elements().map(element => element.refresh())).then(() => {\n return this;\n });\n }\n\n // Events ---\n vizStateChanged(viz: Element) {\n }\n}\nElementContainer.prototype._class += \" dashboard_ElementContainer\";\n\nexport interface ElementContainer {\n samples(): number;\n samples(_: number): this;\n sampleSize(): number;\n sampleSize(_: number): this;\n}\n\nElementContainer.prototype.publish(\"samples\", 10, \"number\", \"Number of samples\");\nElementContainer.prototype.publish(\"sampleSize\", 100, \"number\", \"Sample size\");","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import { IMonitorHandle, Widget } from \"@hpcc-js/common\";\nimport { compare } from \"@hpcc-js/util\";\nimport { ElementContainer } from \"./model/element.ts\";\nimport { IVizPopupPanelOwner, VizChartPanel, VizPopupPanel } from \"./model/vizChartPanel.ts\";\n\nexport class PopupManager extends Widget implements IVizPopupPanelOwner {\n protected _ec: ElementContainer;\n protected _popups: VizPopupPanel[] = [];\n protected _popupIdx: {\n [id: string]: {\n panel: VizPopupPanel,\n monitorHandle: IMonitorHandle\n }\n } = {};\n\n popupPanels(): VizPopupPanel[] {\n if (!this._popups) this._popups = [];\n if (!this._popupIdx) this._popupIdx = {};\n return this._popups;\n }\n\n popupChartPanels(): VizChartPanel[] {\n return this.popupPanels().map(p => p.widget() as VizChartPanel);\n }\n\n addPopup(cp: VizChartPanel) {\n const elem = this._ec.element(cp);\n const targetNode = this.element().node();\n const pp = new VizPopupPanel(this, elem)\n .target(targetNode)\n .widget(cp)\n .relativeTargetId(this.id())\n .size({\n width: cp.minWidth(),\n height: cp.minHeight()\n });\n this._popups.push(pp);\n this._popupIdx[cp.id()] = {\n panel: pp,\n monitorHandle: cp.monitor((id) => {\n switch (id) {\n case \"minWidth\":\n case \"minHeight\":\n pp\n .resize({ width: cp.minWidth(), height: cp.minHeight() })\n .render()\n ;\n break;\n }\n })\n };\n this._ec.filteredBy(elem.id()).forEach(otherElem => {\n otherElem.visualization().chartPanel().popup(pp);\n });\n }\n\n removePopup(cp: VizChartPanel) {\n const elem = this._ec.element(cp);\n this._ec.filteredBy(elem.id()).forEach(otherElem => {\n otherElem.visualization().chartPanel().popup(null);\n });\n this._popupIdx[cp.id()].panel.target(null);\n this._popupIdx[cp.id()].monitorHandle.remove();\n cp.target(null);\n delete this._popupIdx[cp.id()];\n this._popups = this._popups.filter(p => p.widget() !== cp);\n }\n\n syncPopups() {\n const prevPopups = this.popupChartPanels();\n const diffPopups = compare(prevPopups, this._ec.elements()\n .filter(e => e.visualization().visibility() === \"flyout\")\n .map((elem: any) => elem.visualization().chartPanel()))\n ;\n\n for (const w of diffPopups.exit) {\n this.removePopup(w);\n }\n\n for (const w of diffPopups.enter) {\n this.addPopup(w);\n }\n\n return this;\n }\n\n vizActivation() {\n }\n}\n","import { Widget } from \"@hpcc-js/common\";\nimport { DockPanel, IClosable, WidgetAdapter } from \"@hpcc-js/phosphor\";\nimport { compare } from \"@hpcc-js/util\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Element, ElementContainer } from \"./model/element.ts\";\nimport { IVizPopupPanelOwner } from \"./model/vizChartPanel.ts\";\nimport { PopupManager } from \"./PopupManager.ts\";\n\nexport class DashboardDockPanel extends DockPanel implements IClosable, IVizPopupPanelOwner {\n\n constructor(private _ec: ElementContainer) {\n super();\n\n }\n\n tabTitle(element: Element): string {\n if (this.hideSingleTabs()) {\n return element.visualization().title ? element.visualization().title() : element.visualization().id();\n }\n return element.id();\n }\n\n titleClassed(wa: WidgetAdapter, classID: string, include: boolean) {\n let classes = wa.title.className.split(\" \");\n if (include && classes.indexOf(classID) < 0) {\n classes.push(classID);\n } else if (!include && classes.indexOf(classID) > 0) {\n classes = classes.filter(c => c !== classID);\n }\n wa.title.className = classes.join(\" \");\n }\n\n updateTitle(w: Widget) {\n const wa: WidgetAdapter = this.getWidgetAdapter(w);\n const element: Element = this._ec.element(w);\n const errors = element.validate();\n wa.title.label = this.tabTitle(element);\n this.titleClassed(wa, \"error\", errors.length > 0);\n wa.title.caption = errors.map(err => `${err.source}: ${err.msg}`).join(\"\\n\");\n }\n\n activate(element: Element) {\n const wa = this.getWidgetAdapter(element.visualization().chartPanel());\n if (wa) {\n wa.activate();\n }\n }\n\n syncMinSize(w: any): boolean {\n if (w.minWidth_exists() || w.minHeight_exists()) {\n const wa = this.getWidgetAdapter(w);\n d3Select(wa.node)\n .style(\"min-width\", `${w.minWidth()}px`)\n .style(\"min-height\", `${w.minHeight()}px`)\n ;\n return true;\n }\n return false;\n }\n\n syncWidgets() {\n const prevWidgets = this.widgets();\n const diffWidgets = compare(prevWidgets, this._ec.elements().filter(e => e.visualization().visibility() === \"normal\").map(viz => viz.visualization().chartPanel()));\n\n let refit = false;\n for (const w of diffWidgets.exit) {\n this.removeWidget(w);\n }\n\n for (const w of diffWidgets.enter) {\n const element: Element = this._ec.element(w);\n this.addWidget(w, this.tabTitle(element), \"split-bottom\", undefined, this.hideSingleTabs() ? undefined : this);\n refit = this.syncMinSize(w) || refit; // ensure syncMinSize is called\n }\n\n for (const w of diffWidgets.update) {\n this.updateTitle(w);\n refit = this.syncMinSize(w) || refit; // ensure syncMinSize is called\n }\n\n if (refit) {\n this.refit();\n }\n\n return this;\n }\n\n // Events ---\n childActivation(w: Widget, wa: WidgetAdapter) {\n super.childActivation(w, wa);\n this.vizActivation(this._ec.element(w));\n for (const wa2 of this.widgetAdapters()) {\n if (wa2 === wa) {\n wa2.addClass(\"active\");\n this.titleClassed(wa2, \"active\", true);\n wa2.title.iconClass = \"active\";\n } else {\n wa2.removeClass(\"active\");\n this.titleClassed(wa2, \"active\", false);\n wa2.title.iconClass = \"\";\n }\n }\n }\n\n vizActivation(viz: Element) {\n }\n\n // IClosable ---\n canClose(w: Widget, wa: WidgetAdapter): boolean {\n const id = this._ec.element(w).id();\n const retVal = window.confirm(`Remove Widget \"${id}\"?`);\n if (retVal) {\n this._ec.clear(id);\n this.syncWidgets();\n this.vizActivation(undefined);\n }\n return retVal;\n }\n\n syncPopups() { }\n}\nDashboardDockPanel.prototype._class += \" marshaller_DashboardDockPanel\";\nDashboardDockPanel.prototype.mixin(PopupManager);\n","import { Widget } from \"@hpcc-js/common\";\nimport { Cell, Grid } from \"@hpcc-js/layout\";\nimport { IClosable, WidgetAdapter } from \"@hpcc-js/phosphor\";\nimport { compare } from \"@hpcc-js/util\";\nimport { IDockPanel } from \"./dashboard.ts\";\nimport { Element, ElementContainer } from \"./model/element.ts\";\nimport { IVizPopupPanelOwner } from \"./model/vizChartPanel.ts\";\nimport { PopupManager } from \"./PopupManager.ts\";\n\nexport class DashboardGrid extends Grid implements IClosable, IVizPopupPanelOwner, IDockPanel {\n private _layoutCache = [];\n constructor(private _ec: ElementContainer) {\n super();\n\n this.designMode(false);\n this.surfacePadding(\"0\");\n this.surfaceBorderWidth(0);\n }\n updateGrid(resize, transitionDuration: number = 0, _noRender: boolean = false) {\n super.updateGrid(resize, transitionDuration, _noRender);\n this._layoutCache = this.content().map(cellWidget => {\n return {\n id: cellWidget.widget().id(),\n position: [\n cellWidget.gridCol(),\n cellWidget.gridRow(),\n cellWidget.gridColSpan(),\n cellWidget.gridRowSpan()\n ]\n };\n });\n }\n layoutObj(_: object | null): this {\n if (_) {\n if ((_ as any).main) {\n const convertedLayout = ddl2_layout(_, 10, 10);\n this._layoutCache = convertedLayout;\n } else if (_ instanceof Array) {\n this._layoutCache = _;\n }\n }\n return this;\n\n function ddl2_layout(layoutObject, rows, cols) {\n const ret = [];\n dive(layoutObject.main, 0, 0, rows, cols);\n return ret;\n function dive(o, x, y, w, h) {\n if (o.children) {\n if (o.type === \"split-area\") {\n if (o.orientation === \"horizontal\") {\n o.children.forEach((child, i) => {\n const _w = o.sizes[i] * w;\n const _h = h;\n const _x = i === 0 ? x : x + o.sizes[0] * w;\n const _y = y;\n dive(o.children[i], _x, _y, _w, _h);\n });\n } else if (o.orientation === \"vertical\") {\n o.children.forEach((child, i) => {\n const _w = w;\n const _h = o.sizes[i] * h;\n const _x = x;\n const _y = i === 0 ? y : y + o.sizes[0] * h;\n dive(o.children[i], _x, _y, _w, _h);\n });\n } else {\n console.error(\"wtf\");\n }\n } else if (o.type === \"tab-area\") {\n o.children.forEach((child, i) => {\n const _w = w;\n const _h = o.sizes[i] * h;\n const _x = x;\n const _y = i === 0 ? y : y + o.sizes[0] * h;\n dive(o.children[i], _x, _y, _w, _h);\n });\n }\n } else {\n ret.push([x, y, w, h].map(Math.round));\n }\n }\n }\n }\n layout() {\n return this._layoutCache;\n }\n widgets() {\n return this.content().map(c => c.widget());\n }\n hideSingleTabs() {\n return true;\n }\n getWidgetAdapter() {\n }\n\n tabTitle(element: Element): string {\n if (this.hideSingleTabs()) {\n return element.visualization().title ? element.visualization().title() : element.visualization().id();\n }\n return element.id();\n }\n\n updateTitle(w: Widget) {\n const cell: Cell = this.getWidgetCell(w.id());\n const element: Element = this._ec.element(w);\n const tabTitle = this.tabTitle(element);\n (cell.widget() as any)\n .title(tabTitle)\n ;\n }\n\n activate(element: Element) {\n }\n\n removeWidget(w: Widget) {\n const cell = this.getWidgetCell(w.id());\n this.clearContent(cell);\n }\n\n syncMinSize(w: any): boolean {\n if (w.minWidth_exists() || w.minHeight_exists()) {\n const cell: Cell = this.getWidgetCell(w.id());\n cell.element()\n .style(\"min-width\", `${w.minWidth()}px`)\n .style(\"min-height\", `${w.minHeight()}px`)\n ;\n return true;\n }\n return false;\n }\n\n syncWidgets() {\n const prevWidgets = this.widgets();\n const diffWidgets = compare(prevWidgets, this._ec.elements().filter(e => e.visualization().visibility() === \"normal\").map(viz => viz.visualization().chartPanel()));\n\n for (const w of diffWidgets.exit) {\n this.removeWidget(w);\n }\n let maxX = 0;\n let maxY = 0;\n const no_layout_added = [];\n for (const widget of diffWidgets.enter) {\n const element: Element = this._ec.element(widget);\n const i = this.content().length;\n if (this._layoutCache && this._layoutCache[i]) {\n const layout = (this._layoutCache as any).find(n => n.id === widget.id());\n if (layout) {\n const [x, y, w, h] = layout.position;\n this.setContent(y, x, element.visualization().chartPanel(), \"\", h, w);\n if (x + w > maxX) maxX = x + w;\n if (y + h > maxY) maxY = y + h;\n } else {\n no_layout_added.push(element.visualization().chartPanel());\n }\n } else {\n no_layout_added.push(element.visualization().chartPanel());\n }\n }\n let freeRow = this.content().reduce((prev, curr) => Math.max(prev, curr.gridRow() + curr.gridRowSpan()), 0);\n no_layout_added.forEach(cp => {\n this.setContent(freeRow, 0, cp, \"\", 3, 3);\n freeRow += 3;\n });\n for (const w of diffWidgets.update) {\n this.updateTitle(w);\n }\n return this;\n }\n\n // Events ---\n childActivation(w: Widget, wa?: WidgetAdapter) {\n this.vizActivation(this._ec.element(w));\n }\n\n postSelectionChange() {\n super.postSelectionChange();\n const selected = this._selectionBag.get();\n if (selected.length > 0) {\n this.childActivation(selected[0].widget.widget());\n }\n }\n\n vizActivation(viz: Element) {\n }\n\n // IClosable ---\n canClose(w: Widget, wa: WidgetAdapter): boolean {\n const id = this._ec.element(w).id();\n const retVal = window.confirm(`Remove Widget \"${id}\"?`);\n if (retVal) {\n this._ec.clear(id);\n this.syncWidgets();\n this.vizActivation(undefined);\n }\n return retVal;\n }\n\n syncPopups() { }\n}\nDashboardGrid.prototype._class += \" marshaller_DashboardGrid\";\nDashboardGrid.prototype.mixin(PopupManager);\n","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { scopedLogger } from \"@hpcc-js/util\";\nimport { BUILD_VERSION, PKG_NAME, PKG_VERSION } from \"../__package__.ts\";\nimport { ActivityPipeline, ReferencedFields } from \"./activities/activity.ts\";\nimport { Databomb } from \"./activities/databomb.ts\";\nimport { DatasourceRef, DatasourceRefType, DatasourceType } from \"./activities/datasource.ts\";\nimport { DSPicker } from \"./activities/dspicker.ts\";\nimport { Filters } from \"./activities/filter.ts\";\nimport { Form } from \"./activities/form.ts\";\nimport { GroupBy } from \"./activities/groupby.ts\";\nimport { Limit } from \"./activities/limit.ts\";\nimport { LogicalFile } from \"./activities/logicalfile.ts\";\nimport { Mappings, Project } from \"./activities/project.ts\";\nimport { Param, RestResult, RestResultRef, RestService } from \"./activities/rest.ts\";\nimport { HipieResultRef, RoxieResult, RoxieResultRef, RoxieService } from \"./activities/roxie.ts\";\nimport { Sort } from \"./activities/sort.ts\";\nimport { WU, WUResult, WUResultRef } from \"./activities/wuresult.ts\";\nimport { Dashboard } from \"./dashboard.ts\";\nimport { Element, ElementContainer } from \"./model/element.ts\";\nimport { Visualization } from \"./model/visualization.ts\";\n\nconst logger = scopedLogger(\"marshaller/ddl2/ddl\");\n\ntype DatasourceRefTypeMap = { [key: string]: { refType: DatasourceRefType, ref: DatasourceRef } };\ntype ServerRefTypeMap = { [key: string]: { ds: DatasourceType, result: DatasourceRefTypeMap } };\n\nclass DDLDatasourceAdapter {\n private _dsDedup: ServerRefTypeMap;\n\n constructor() {\n }\n\n clear() {\n this._dsDedup = {};\n }\n\n id(dsT: DatasourceType): string {\n if (dsT instanceof WU) {\n return `${dsT.url()}/${dsT.wuid()}`;\n } else if (dsT instanceof RoxieService) {\n return `${dsT.url()}/${dsT.querySet()}/${dsT.queryID()}`;\n } else if (dsT instanceof RestService) {\n return `${dsT.url()}/${dsT.action()}`;\n }\n return dsT.id();\n }\n\n _resolveID(dsT: DatasourceType): string {\n return this._dsDedup[this.id(dsT)].ds.id();\n }\n\n resolveID(dsRef: DatasourceRef): string | undefined {\n if (dsRef instanceof WUResultRef) {\n return this._resolveID(dsRef.datasource().wu());\n } else if (dsRef instanceof RoxieResultRef) {\n return this._resolveID(dsRef.datasource().service());\n } else if (dsRef instanceof HipieResultRef) {\n return this._resolveID(dsRef.datasource().service());\n } else if (dsRef instanceof RestResultRef) {\n return this._resolveID(dsRef.datasource().service());\n }\n }\n\n append(pDS: DSPicker | DatasourceRefType) {\n const refType: DatasourceRefType = pDS instanceof DSPicker ? pDS.datasource() : pDS;\n const ref: DatasourceRef = pDS instanceof DSPicker ? pDS.datasourceRef() : undefined;\n const dsTID = refType.id();\n const ds: DatasourceType = refType instanceof WUResult ? refType.wu() : refType instanceof RoxieResult ? refType.service() : refType instanceof RestResult ? refType.service() : refType;\n const dsID = this.id(ds);\n if (!this._dsDedup[dsID]) {\n this._dsDedup[dsID] = {\n ds,\n result: {}\n };\n }\n if (!this._dsDedup[dsID].result[dsTID]) {\n this._dsDedup[dsID].result[dsTID] = {\n refType,\n ref\n };\n }\n }\n\n getAll(): DDL2.DatasourceType[] {\n const retVal: DDL2.DatasourceType[] = [];\n for (const key in this._dsDedup) {\n const ddl = this._dsDedup[key].ds.toDDL();\n\n // Inputs ---\n if (ddl.type === \"roxie\" || ddl.type === \"hipie\" || ddl.type === \"rest\") {\n const inputs: { [fieldID: string]: DDL2.IField } = {};\n for (const key2 in this._dsDedup[key].result) {\n const ddl2 = this._dsDedup[key].result[key2].refType.toDDL();\n const refs: ReferencedFields = {\n inputs: {},\n outputs: {}\n };\n this._dsDedup[key].result[key2].ref.referencedFields(refs);\n for (const inElementID in refs.inputs) {\n refs.inputs[inElementID].forEach(fieldID => {\n inputs[fieldID] = (ddl2 as any).inputs.filter(row => row.id === fieldID)[0];\n });\n }\n }\n ddl.inputs = [];\n for (const key in inputs) {\n ddl.inputs.push(inputs[key]);\n }\n }\n\n // Outputs ---\n if (ddl.type === \"wuresult\" || ddl.type === \"roxie\" || ddl.type === \"hipie\" || ddl.type === \"rest\") {\n const outputs: { [fieldID: string]: DDL2.IOutput } = {};\n for (const key2 in this._dsDedup[key].result) {\n const ddl2 = this._dsDedup[key].result[key2].refType.toDDL();\n if (ddl2.type === \"wuresult\" || ddl2.type === \"roxie\" || ddl2.type === \"hipie\" || ddl2.type === \"rest\") {\n for (const outputID in ddl2.outputs) {\n outputs[outputID] = ddl2.outputs[outputID];\n }\n }\n }\n ddl.outputs = {};\n for (const key in outputs) {\n ddl.outputs[key] = outputs[key];\n }\n }\n retVal.push(ddl);\n }\n return retVal;\n }\n}\n\nexport class DDLAdapter {\n private _dashboard: Dashboard;\n private _ec: ElementContainer;\n private _dsWriteDedup: DDLDatasourceAdapter = new DDLDatasourceAdapter();\n private _dsReadDedup: { [id: string]: WU | RoxieService | RestService } = {};\n\n constructor(dashboard: Dashboard) {\n this._dashboard = dashboard;\n this._ec = this._dashboard.elementContainer();\n }\n\n writeDatasources(): DDL2.DatasourceType[] {\n for (const viz of this._ec.elements()) {\n this._dsWriteDedup.append(viz.hipiePipeline().datasource());\n }\n return this._dsWriteDedup.getAll();\n }\n\n writeFilters(filters: Filters): DDL2.IFilter {\n if (!filters.exists()) return undefined;\n return filters.toDDL();\n }\n\n readFilters(ddlFilter: DDL2.IFilter, ec: ElementContainer): Filters {\n return Filters.fromDDL(ec, ddlFilter);\n }\n\n writeProject(project: Project): DDL2.IProject {\n if (!project.exists()) return undefined;\n return project.toDDL();\n }\n\n readProject(ddlProject: DDL2.IProject): Project {\n return Project.fromDDL(ddlProject);\n }\n\n writeMappings(mappings: Mappings): DDL2.IMappings {\n if (!mappings.exists()) return { type: \"mappings\", transformations: [] };\n return mappings.toDDL();\n }\n\n readMappings(ddlProject: DDL2.IMappings): Mappings {\n return Mappings.fromDDL(ddlProject);\n }\n\n writeGroupBy(gb: GroupBy): DDL2.IGroupBy {\n if (!gb.exists()) return undefined;\n return gb.toDDL();\n }\n\n readGroupBy(ddlGB: DDL2.IGroupBy): GroupBy {\n return GroupBy.fromDDL(ddlGB);\n }\n\n writeSort(sort: Sort): DDL2.ISort {\n if (!sort.exists()) return undefined;\n return sort.toDDL();\n }\n\n readSort(ddlSort: DDL2.ISort): Sort {\n return Sort.fromDDL(ddlSort);\n }\n\n writeLimit(limit: Limit): DDL2.ILimit {\n if (!limit.exists()) return undefined;\n return limit.toDDL();\n }\n\n readLimit(ddlLimit: DDL2.ILimit): Limit {\n return Limit.fromDDL(ddlLimit);\n }\n\n readDatasourceRef(ddlDSRef: DDL2.IDatasourceRef, dsPicker: DSPicker, elementContainer: ElementContainer): this {\n if (DDL2.isWUResultRef(ddlDSRef)) {\n const wu = this._dsReadDedup[ddlDSRef.id] as WU;\n dsPicker.datasourceID(wu.output(ddlDSRef.output).id());\n } else if (DDL2.isRoxieServiceRef(ddlDSRef)) {\n dsPicker.datasourceID(`${ddlDSRef.id}_${ddlDSRef.output}`);\n const dsRef = dsPicker.datasourceRef() as RoxieResultRef | RestResultRef;\n dsRef\n .request(ddlDSRef.request.map(rf => {\n return Param.fromDDL(this._ec, rf);\n }))\n ;\n } else {\n dsPicker.datasourceID(ddlDSRef.id);\n }\n return this;\n }\n\n writeActivities(view: ActivityPipeline): DDL2.ActivityType[] {\n return view.activities().map(activity => {\n if (activity instanceof Filters) {\n return this.writeFilters(activity);\n } else if (activity instanceof Project) {\n return this.writeProject(activity);\n } else if (activity instanceof GroupBy) {\n return this.writeGroupBy(activity);\n } else if (activity instanceof Sort) {\n return this.writeSort(activity);\n } else if (activity instanceof Limit) {\n return this.writeLimit(activity);\n } else if (activity instanceof Mappings) {\n return this.writeMappings(activity);\n } else if (activity instanceof DSPicker) {\n // Fall through ---\n } else {\n logger.warning(`Unknown activity type: ${activity.classID()}`);\n }\n }).filter(activity => !!activity);\n }\n\n writeVisualization(visualization: Visualization): DDL2.IVisualization {\n return {\n id: visualization.chartPanel().id(),\n title: visualization.title(),\n description: visualization.description(),\n visibility: visualization.visibility(),\n chartType: visualization.chartType(),\n __class: visualization.chartPanel().widget().classID(),\n mappings: this.writeMappings(visualization.mappings()),\n properties: visualization.properties()\n };\n }\n\n readVisualization(ddlViz: DDL2.IVisualization, visualization: Visualization): this {\n const mappings = this.readMappings(ddlViz.mappings);\n visualization.chartPanel().id(ddlViz.id);\n visualization\n .title(ddlViz.title)\n .description(ddlViz.description)\n .visibility(ddlViz.visibility)\n .chartType(ddlViz.chartType as any)\n .properties(ddlViz.properties)\n .mappings(mappings)\n ;\n return this;\n }\n\n writeViewDatasource(dsRef: DatasourceRef) {\n const retVal = dsRef.toDDL();\n retVal.id = this._dsWriteDedup.resolveID(dsRef) || retVal.id;\n return retVal;\n }\n\n writeDDLViews(): DDL2.IView[] {\n // Gather referenced fields ---\n const refFields: ReferencedFields = { inputs: {}, outputs: {} };\n for (const element of this._ec.elements()) {\n element.visualization().mappings().referencedFields(refFields);\n }\n\n return this._ec.elements().map(element => {\n const view = element.hipiePipeline();\n const dsPicker = view.datasource();\n if (dsPicker instanceof DSPicker) {\n const dsRef = dsPicker.datasourceRef();\n const retVal = {\n id: element.id(),\n datasource: this.writeViewDatasource(dsRef),\n activities: this.writeActivities(view),\n visualization: this.writeVisualization(element.visualization())\n };\n return retVal;\n }\n throw new Error(\"Missing DSPicker?\");\n });\n }\n\n writeProperties(): DDL2.IProperties {\n return {\n name: PKG_NAME,\n version: PKG_VERSION,\n buildVersion: BUILD_VERSION,\n layout: this._dashboard.layout() as any\n };\n }\n\n readDDLViews(ddlViews: DDL2.IView[]) {\n for (const ddlView of ddlViews) {\n const element = new Element(this._ec).id(ddlView.id);\n this._ec.append(element);\n const hipiePipeline = element.hipiePipeline();\n this.readDatasourceRef(ddlView.datasource, hipiePipeline.datasource() as DSPicker, this._ec);\n for (const activity of ddlView.activities) {\n if (DDL2.isProjectActivity(activity)) {\n const project = this.readProject(activity);\n hipiePipeline.project(project);\n }\n if (DDL2.isFilterActivity(activity)) {\n const filters = this.readFilters(activity, this._ec);\n hipiePipeline.filters(filters);\n }\n if (DDL2.isGroupByActivity(activity)) {\n const groupBy = this.readGroupBy(activity);\n hipiePipeline.groupBy(groupBy);\n }\n if (DDL2.isSortActivity(activity)) {\n const sort = this.readSort(activity);\n hipiePipeline.sort(sort);\n }\n if (DDL2.isLimitActivity(activity)) {\n const limit = this.readLimit(activity);\n hipiePipeline.limit(limit);\n }\n }\n this.readVisualization(ddlView.visualization, element.visualization());\n }\n }\n\n readProperties(properties: DDL2.IProperties) {\n if (properties && properties.layout) {\n this._dashboard.layoutObj(properties.layout as object);\n }\n }\n\n write(): DDL2.Schema {\n this._dsWriteDedup.clear();\n const retVal: DDL2.Schema = {\n version: \"2.2.1\",\n createdBy: {\n name: PKG_NAME,\n version: PKG_VERSION\n },\n datasources: this.writeDatasources(),\n dataviews: this.writeDDLViews(),\n properties: this.writeProperties(),\n hipieProperties: this._dashboard.hipieProps()\n };\n return retVal;\n }\n\n read(ddl: DDL2.Schema) {\n this._dsWriteDedup.clear();\n for (const ddlDS of ddl.datasources) {\n switch (ddlDS.type) {\n case \"databomb\":\n this._ec.appendDatasource(Databomb.fromDDL(ddlDS));\n break;\n case \"form\":\n this._ec.appendDatasource(Form.fromDDL(ddlDS));\n break;\n case \"logicalfile\":\n this._ec.appendDatasource(LogicalFile.fromDDL(this._ec, ddlDS));\n break;\n case \"wuresult\":\n const wu = WU.fromDDL(this._ec, ddlDS);\n this._dsReadDedup[wu.id()] = wu;\n for (const resultName in ddlDS.outputs) {\n this._ec.appendDatasource(wu.output(resultName));\n }\n break;\n case \"roxie\":\n case \"hipie\":\n const rs = RoxieService.fromDDL(this._ec, ddlDS);\n this._dsReadDedup[rs.id()] = rs;\n for (const resultName in ddlDS.outputs) {\n this._ec.appendDatasource(RoxieResult.fromDDL(this._ec, rs, resultName));\n }\n break;\n case \"rest\":\n const rs2 = RestService.fromDDL(this._ec, ddlDS);\n this._dsReadDedup[rs2.id()] = rs2;\n for (const resultName in ddlDS.outputs) {\n this._ec.appendDatasource(RestResult.fromDDL(this._ec, rs2, resultName));\n }\n break;\n default:\n logger.warning(`Unknown ddl datasource type: ${(ddlDS as any).type} `);\n }\n }\n this.readDDLViews(ddl.dataviews);\n this.readProperties(ddl.properties);\n this._dashboard.hipieProps(ddl.hipieProperties);\n }\n}\n","import { PropertyExt } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { classID2Meta, ClassMeta, isArray } from \"@hpcc-js/util\";\nimport { Activity, stringify } from \"./activities/activity.ts\";\nimport { Dashboard } from \"./dashboard.ts\";\nimport { DDLAdapter } from \"./ddl.ts\";\nimport { ElementContainer } from \"./model/element.ts\";\n\ntype WidgetImport = { [moduleID: string]: { [classID: string]: boolean } };\n\nclass Imports {\n _moduleMap: WidgetImport = {};\n\n append(widgetMeta: ClassMeta) {\n if (!this._moduleMap[widgetMeta.module]) {\n this._moduleMap[widgetMeta.module] = {};\n }\n this._moduleMap[widgetMeta.module][widgetMeta.class] = true;\n }\n\n write(): string {\n const importJS: string[] = [];\n for (const moduleID in this._moduleMap) {\n const classIDs: string[] = [];\n for (const classID in this._moduleMap[moduleID]) {\n classIDs.push(classID);\n }\n classIDs.sort();\n importJS.push(`import { ${classIDs.join(\", \")} } from \"${moduleID}\";`);\n }\n return importJS.join(\"\\n\");\n }\n}\n\nexport function createProps(pe: PropertyExt): { [key: string]: any } {\n const retVal: { [key: string]: any } = {};\n for (const meta of pe.publishedProperties()) {\n if (pe[meta.id + \"_modified\"]() && meta.id !== \"fields\") {\n const val = pe[meta.id]();\n switch (meta.type) {\n case \"propertyArray\":\n const serialization = val.map(createProps);\n if (serialization) {\n retVal[meta.id] = serialization;\n }\n break;\n default:\n retVal[meta.id] = val;\n }\n }\n }\n return retVal;\n}\n\nexport class JavaScriptAdapter {\n private _dashboard: Dashboard;\n private _ec: ElementContainer;\n private _ddlAdapter: DDLAdapter;\n private _ddlSchema: DDL2.Schema;\n\n constructor(dashboard: Dashboard) {\n this._dashboard = dashboard;\n this._ec = this._dashboard.elementContainer();\n this._ddlAdapter = new DDLAdapter(this._dashboard);\n this._ddlSchema = this._ddlAdapter.write();\n }\n\n createProps(prefix: string, pe: PropertyExt, postfix: string = \"\"): string[] {\n let retVal: string[] = [];\n for (const meta of pe.publishedProperties()) {\n if ((pe as any)[meta.id + \"_exists\"]()) {\n switch (meta.type) {\n case \"string\":\n case \"set\":\n retVal.push(`${prefix}.${meta.id}(\"${(pe as any)[meta.id]()}\")${postfix};`);\n break;\n case \"number\":\n case \"boolean\":\n retVal.push(`${prefix}.${meta.id}(${(pe as any)[meta.id]()})${postfix};`);\n break;\n case \"widget\":\n retVal = retVal.concat(this.createProps(`${prefix}.${meta.id}()`, (pe as any)[meta.id]()));\n break;\n case \"propertyArray\":\n if (meta.ext)\n retVal.push(`${prefix}.${meta.id}([${(pe as any)[meta.id]()}])${postfix};`);\n break;\n default:\n break;\n }\n }\n }\n return retVal;\n }\n\n writeMeta(dsDetails: Activity) {\n return \"\";\n }\n\n private safeID(id: string): string {\n if (!id) return id;\n return id.replace(/ /g, \"_\").replace(/\\./g, \"_\");\n }\n\n private datasourceRefID(view: DDL2.IView): string {\n const datasourceRef = view.datasource;\n if (DDL2.isRoxieServiceRef(datasourceRef)) {\n return `${this.safeID(datasourceRef.id)}_${this.safeID(datasourceRef.output)}_${this.safeID(view.id)}`;\n } else if (DDL2.isWUResultRef(datasourceRef)) {\n return `${this.safeID(datasourceRef.id)}_${this.safeID(datasourceRef.output)}`;\n }\n return `${this.safeID(datasourceRef.id)}`;\n }\n\n _dedup: { [key: string]: boolean } = {};\n private writeDatasource(view: DDL2.IView): string[] {\n const datasourceRef = view.datasource;\n const retVal: string[] = [];\n const datasource = this._ddlSchema.datasources.filter(ds => ds.id === datasourceRef.id)[0];\n const outputID = (datasourceRef as any).output;\n const id = this.datasourceRefID(view);\n if (!this._dedup[id]) {\n this._dedup[id] = true;\n switch (datasource.type) {\n case \"wuresult\":\n const wuID = this.safeID(view.datasource.id);\n if (!this._dedup[wuID]) {\n this._dedup[wuID] = true;\n retVal.push(` export const ${wuID} = new marshaller.WU()\n .url(\"${datasource.url}\")\n .wuid(\"${datasource.wuid}\")\n ;`);\n }\n retVal.push(` export const ${id} = new marshaller.WUResult()\n .wu(${wuID})\n .resultName(\"${outputID}\")\n .responseFields(${stringify(datasource.outputs[outputID].fields)})\n ;`);\n break;\n case \"logicalfile\":\n retVal.push(` export const ${id} = new marshaller.LogicalFile()\n .url(\"${datasource.url}\")\n .logicalFile(\"${datasource.logicalFile}\")\n .responseFields(${stringify(datasource.fields)})\n ;`);\n break;\n case \"hipie\":\n case \"roxie\":\n const serviceID = this.safeID(view.datasource.id);\n if (!this._dedup[serviceID]) {\n this._dedup[serviceID] = true;\n retVal.push(` export const ${serviceID} = new marshaller.RoxieService(ec)\n .url(\"${datasource.url}\")\n .querySet(\"${datasource.querySet}\")\n .queryID(\"${datasource.queryID}\")\n .requestFields(${stringify(datasource.inputs)})\n ;`);\n }\n const resultID = serviceID + \"_\" + this.safeID(outputID);\n if (!this._dedup[resultID]) {\n this._dedup[resultID] = true;\n retVal.push(` export const ${resultID} = new marshaller.RoxieResult(ec)\n .service(${serviceID})\n .resultName(\"${outputID}\")\n .responseFields(${stringify(datasource.outputs[outputID].fields)})\n ;`);\n }\n retVal.push(` export const ${id} = new marshaller.HipieResultRef(ec)\n .datasource(${resultID})\n .requestFieldRefs(${stringify((datasourceRef as DDL2.IRoxieServiceRef).request)})\n ;`);\n break;\n case \"databomb\":\n {\n retVal.push(` export const ${id} = new marshaller.Databomb()\n .format(\"${datasource.format}\")\n .payload(${JSON.stringify(datasource.payload)})\n ;`);\n }\n break;\n case \"form\":\n {\n const fromFields: string[] = [];\n for (const field of datasource.fields) {\n fromFields.push(`new marshaller.FormField().fieldID(\"${field.id}\").default(\"${field.default || \"\"}\")`);\n }\n retVal.push(` export const ${id} = new marshaller.Form()\n .formFields([\n ${fromFields.join(\",\\n \")}\n ])\n ;`);\n }\n break;\n }\n }\n return retVal;\n }\n\n private writeActivity(activity: DDL2.ActivityType): string {\n switch (activity.type) {\n case \"filter\":\n return `new marshaller.Filters(ec).conditions(${stringify(activity.conditions)})`;\n case \"project\":\n return `new marshaller.Project().transformations(${stringify(activity.transformations)})`;\n case \"groupby\":\n return `new marshaller.GroupBy().fieldIDs(${JSON.stringify(activity.groupByIDs)}).aggregates(${stringify(activity.aggregates)})`;\n case \"sort\":\n return `new marshaller.Sort().conditions(${stringify(activity.conditions)})`;\n case \"limit\":\n return `new marshaller.Limit().rows(${activity.limit})`;\n case \"mappings\":\n return `new marshaller.Mappings().transformations(${stringify(activity.transformations)})`;\n }\n }\n\n writeWidgetProps(pe: PropertyExt): string[] {\n const retVal: string[] = [];\n for (const meta of pe.publishedProperties()) {\n if ((pe as any)[meta.id + \"_modified\"]() && meta.id !== \"fields\") {\n retVal.push(`.${meta.id}(${JSON.stringify((pe as any)[meta.id]())})`);\n }\n }\n return retVal;\n }\n\n private joinWithPrefix(props: DDL2.IWidgetProperties, imports: Imports, joinStr: string, postFix: string): string {\n let retVal: string = \"\";\n let meta: ClassMeta;\n if (props.__class) {\n meta = classID2Meta(props.__class);\n imports.append(meta);\n retVal += `new ${meta.class}()`;\n }\n for (const prop in props) {\n if (prop === \"__class\") {\n } else if (isArray(props[prop])) {\n const arr = `${(props[prop] as any[]).map(item => this.joinWithPrefix(item, imports, joinStr + \" \", \"\")).join(`,${joinStr} `)}`;\n if (arr) {\n retVal += `${joinStr} .${prop}([${joinStr} ${arr}${joinStr} ])${postFix}`;\n }\n } else {\n retVal += `${joinStr} .${prop}(${JSON.stringify(props[prop])})${postFix}`;\n }\n }\n return retVal;\n }\n\n private writeWidget(dataview: DDL2.IView, imports: Imports): string {\n return ` export const ${dataview.visualization.id} = new marshaller.VizChartPanel()\n .id(\"${dataview.visualization.id}\")\n .title(\"${dataview.visualization.title}\")\n .widget(${this.joinWithPrefix(dataview.visualization.properties[\"widget\"] as any, imports, \"\\n \", \"\")})\n ;`;\n }\n\n private writeElement(dataview: DDL2.IView) {\n const activities: string[] = [`data.${this.datasourceRefID(dataview)}`];\n for (const activity of dataview.activities) {\n activities.push(this.writeActivity(activity));\n }\n const updates: string[] = [];\n for (const filteredViz of this._ec.filteredBy(dataview.id)) {\n updates.push(`${filteredViz.id()}.refresh();`);\n }\n return `\nconst ${dataview.id} = new marshaller.Element(ec)\n .id(\"${dataview.id}\")\n .pipeline([\n ${activities.join(\",\\n \")}\n ])\n .mappings(new marshaller.Mappings().transformations(${stringify(dataview.visualization.mappings.transformations)}))\n .chartPanel(viz.${dataview.visualization.id})\n .on(\"selectionChanged\", () => {\n ${updates.join(\"\\n \")}\n }, true)\n ;\n${dataview.id}.visualization()\n .visibility(\"${dataview.visualization.visibility}\")\n .secondaryDataviewID(\"${dataview.visualization.secondaryDataviewID || \"\"}\")\n ;\nec.append(${dataview.id});\n`;\n }\n\n private writeDatasources(): string[] {\n let retVal: string[] = [];\n for (const dataview of this._ddlSchema.dataviews) {\n retVal = retVal.concat(this.writeDatasource(dataview));\n }\n return retVal;\n }\n\n private writeWidgets(): { widgetImports: string, widgetDefs: string } {\n const jsDef: string[] = [];\n const imports = new Imports();\n for (const dataview of this._ddlSchema.dataviews) {\n jsDef.push(this.writeWidget(dataview, imports));\n }\n return {\n widgetImports: imports.write(),\n widgetDefs: jsDef.join(\"\\n\\n\")\n };\n }\n\n private writeElements(): string {\n let retVal = \"\";\n for (const dataview of this._ddlSchema.dataviews) {\n retVal += this.writeElement(dataview);\n }\n return retVal;\n }\n\n createJavaScript(): string {\n const widgets = this.writeWidgets();\n\n return `\\\n${widgets.widgetImports}\nimport * as marshaller from \"@hpcc-js/marshaller\";\n\n// Dashboard Element Container (Model) ---\nconst ec = new marshaller.ElementContainer();\n\nnamespace data {\n${this.writeDatasources().join(\"\\n\")}\n}\n\nnamespace viz {\n${widgets.widgetDefs}\n}\n\n// Dashboard Elements (Controller) ---\n${this.writeElements().trim()}\n\nec.refresh();\n\n// Optional ---\nconst errors = ec.validate();\nfor (const error of errors) {\n console.error(error.elementID + \" (\" + error.source + \"): \" + error.msg);\n}\n\nexport const dashboard = new marshaller.Dashboard(ec)\n .target(\"placeholder\")\n .titleVisible(false)\n .hideSingleTabs(true)\n .layoutObj(${stringify(this._dashboard.layout())})\n .render()\n ;\n\n// @ts-ignore\nconst ddl = ${JSON.stringify(this._ddlSchema)};\n`;\n }\n}\n","import { Button, Spacer, ToggleButton, Widget } from \"@hpcc-js/common\";\nimport { DDL1, DDL2, isDDL2Schema, upgrade } from \"@hpcc-js/ddl-shim\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { text as d3Text } from \"d3-fetch\";\nimport { Activity } from \"./activities/activity.ts\";\nimport { Databomb } from \"./activities/databomb.ts\";\nimport { DSPicker } from \"./activities/dspicker.ts\";\nimport { Filters } from \"./activities/filter.ts\";\nimport { Form, FormField } from \"./activities/form.ts\";\nimport { GroupBy } from \"./activities/groupby.ts\";\nimport { Limit } from \"./activities/limit.ts\";\nimport { Project } from \"./activities/project.ts\";\nimport { Sort } from \"./activities/sort.ts\";\nimport { DashboardDockPanel } from \"./dashboardDockPanel.ts\";\nimport { DashboardGrid } from \"./dashboardGrid.ts\";\nimport { DDLAdapter } from \"./ddl.ts\";\nimport { JavaScriptAdapter } from \"./javascriptadapter.ts\";\nimport { Element, ElementContainer } from \"./model/element.ts\";\n\nimport \"../../src/ddl2/dashboard.css\";\n\nexport interface IDockPanel {\n layoutObj(_: object | null): this;\n layout();\n widgets();\n activate(element: Element);\n hideSingleTabs(bool?: boolean);\n syncWidgets();\n syncPopups();\n}\n\nexport class Dashboard extends ChartPanel {\n\n private _dockPanel: IDockPanel;\n\n private _designModeButton = new ToggleButton().faChar(\"fa-object-group\").tooltip(\"Design Mode...\")\n .selected(true)\n .on(\"click\", () => {\n if (this._dockPanel instanceof DashboardGrid) {\n this._dockPanel\n .designMode(this._designModeButton.selected())\n .lazyRender()\n ;\n }\n });\n\n private _addButton = new Button().faChar(\"fa-plus\").tooltip(\"Add...\")\n .on(\"click\", () => {\n const newElem = new Element(this._ec);\n this._ec.append(newElem);\n this.renderPromise().then(() => {\n newElem.refresh().then(() => {\n this.activate(newElem);\n });\n });\n });\n\n private _removeButton = new Button().faChar(\"fa-minus\").tooltip(\"Remove...\")\n .enabled(false)\n .on(\"click\", () => {\n const elem = this._prevActive;\n if (elem && window.confirm(`Remove Widget \"${elem.id()}\"?`)) {\n this._ec.clear(elem.id());\n this.renderPromise().then(() => {\n this.vizActivation(undefined);\n });\n }\n });\n\n private _reloadButton = new Button().faChar(\"fa-refresh\").tooltip(\"Reload...\")\n .on(\"click\", () => {\n const json = this.save();\n this._ec.clear();\n this.vizActivation(undefined);\n this.renderPromise().then(() => {\n this.restore(json);\n this.renderPromise().then(() => {\n this._ec.refresh().then(() => {\n });\n });\n });\n });\n\n private _addSamples = new Button().faChar(\"fa-database\").tooltip(\"Add Samples\")\n .on(\"click\", () => {\n Promise.all([\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/airports.csv\"),\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/carriers.csv\"),\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/stats.csv\")\n ]).then(([airports, carriers, stats]) => {\n const popupElement = this.addForm(\"popup\", {\n type: \"form\",\n id: \"global_filter\",\n fields: [{\n type: \"string\",\n id: \"Airport\"\n }, {\n type: \"string\",\n id: \"Airline\"\n }]\n });\n popupElement.visualization()\n .title(\"Global Filter\")\n .visibility(\"flyout\")\n .chartType(\"FieldForm\")\n ;\n const airportsElement = this.addDatabomb(\"airports\", airports, \"csv\",\n [\n new FormField().fieldID(\"code\").type(\"string\"),\n new FormField().fieldID(\"name\").type(\"string\"),\n new FormField().fieldID(\"count\").type(\"number\")\n ],\n new Filters(this._ec).remoteFilter([\n new Filters.Filter().source(popupElement.id()).mappings([new Filters.Mapping().remoteField(\"Airport\").localField(\"code\").nullable(true)])\n ]),\n new Sort().column([new Sort.Column().fieldID(\"count\").descending(true)])\n );\n airportsElement.chartPanel().title(\"Airports\");\n const carrierElement = this.addDatabomb(\"carriers\", carriers, \"csv\",\n [\n new FormField().fieldID(\"code\").type(\"string\"),\n new FormField().fieldID(\"name\").type(\"string\"),\n new FormField().fieldID(\"count\").type(\"number\")\n ],\n new Filters(this._ec).remoteFilter([\n new Filters.Filter().source(popupElement.id()).mappings([new Filters.Mapping().remoteField(\"Airline\").localField(\"code\").nullable(true)])\n ]),\n new Sort().column([new Sort.Column().fieldID(\"count\").descending(true)])\n );\n carrierElement.chartPanel().title(\"Airlines\");\n const statsElement = this.addDatabomb(\"stats\", stats, \"csv\",\n [],\n new Filters(this._ec).remoteFilter([\n new Filters.Filter().source(airportsElement.id()).mappings([new Filters.Mapping().remoteField(\"code\").localField(\"airport\")]),\n new Filters.Filter().source(carrierElement.id()).mappings([new Filters.Mapping().remoteField(\"code\").localField(\"carrier\").nullable(true)])\n ]));\n statsElement.chartPanel().title(\"Stats\");\n return Promise.all([\n popupElement.refresh(),\n airportsElement.refresh(),\n carrierElement.refresh(),\n statsElement.refresh()\n ]);\n }).then(() => {\n this.render();\n });\n });\n\n addDatabomb(label: string, payload: string, format: \"csv\" | \"tsv\" | \"json\" = \"csv\", databombFields: FormField[], ...activities: Activity[]): Element {\n const databomb = new Databomb().id(label).format(format).payload(payload);\n if (databombFields.length > 0) {\n databomb.databombFields(databombFields);\n }\n this._ec.appendDatasource(databomb);\n const newElem = new Element(this._ec);\n const ds = newElem.hipiePipeline().datasource();\n if (ds instanceof DSPicker) {\n ds.datasourceID(databomb.id());\n }\n for (const activity of activities) {\n if (activity instanceof Filters) {\n newElem.hipiePipeline().filters(activity);\n } else if (activity instanceof Project) {\n newElem.hipiePipeline().project(activity);\n } else if (activity instanceof GroupBy) {\n newElem.hipiePipeline().groupBy(activity);\n } else if (activity instanceof Sort) {\n newElem.hipiePipeline().sort(activity);\n } else if (activity instanceof Limit) {\n newElem.hipiePipeline().limit(activity);\n }\n }\n this._ec.append(newElem);\n return newElem;\n }\n\n addForm(label: string, ddl: DDL2.IForm): Element {\n const databomb = new Form().id(label).fromDDL(ddl);\n this._ec.appendDatasource(databomb);\n const newElem = new Element(this._ec);\n const ds = newElem.hipiePipeline().datasource();\n if (ds instanceof DSPicker) {\n ds.datasourceID(databomb.id());\n }\n this._ec.append(newElem);\n return newElem;\n }\n\n static create(target: string, ddl: DDL2.Schema): Promise<Dashboard> {\n return new Promise((resolve, reject) => {\n const ec = new ElementContainer();\n const dashboard = new Dashboard(ec)\n .target(target)\n .hideSingleTabs(true)\n .titleVisible(false)\n .restore(ddl)\n .render(w => {\n ec.refresh().then(() => {\n resolve(dashboard);\n });\n });\n });\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n this._ec.on(\"vizStateChanged\", (viz) => {\n this.vizStateChanged(viz);\n });\n this.buttons([this._designModeButton, new Spacer(), this._addButton, this._removeButton, new Spacer(), this._reloadButton, new Spacer(), this._addSamples]);\n this.ensureDockPanel(\"dock\");\n }\n\n ensureDockPanel(mode: \"dock\" | \"grid\" = \"dock\") {\n if ((mode === \"dock\" && !(this._dockPanel instanceof DashboardDockPanel)) || (mode === \"grid\" && !(this._dockPanel instanceof DashboardGrid))) {\n this._dockPanel = (mode === \"dock\" ? new DashboardDockPanel(this._ec) : new DashboardGrid(this._ec).designMode(this.titleVisible()))\n .on(\"vizActivation\", (elem: Element) => {\n this.vizActivation(elem);\n })\n ;\n this.widget(this._dockPanel as any);\n }\n }\n\n elementContainer(): ElementContainer {\n return this._ec;\n }\n\n private _hipieProps;\n hipieProps(): DDL2.IProperties;\n hipieProps(_: DDL2.IProperties): this;\n hipieProps(_?: DDL2.IProperties): DDL2.IProperties | this {\n if (!arguments.length) return this._hipieProps;\n this._hipieProps = _;\n return this;\n }\n\n ddl(): DDL2.Schema;\n ddl(_: DDL2.Schema): this;\n ddl(_?: DDL2.Schema): DDL2.Schema | this {\n const ddlAdapter = new DDLAdapter(this);\n if (!arguments.length) return ddlAdapter.write();\n this._ec.clear();\n ddlAdapter.read(_);\n return this;\n }\n\n // Used to delay load a layout after a render...\n layoutObj(_: object | null): this {\n this._dockPanel.layoutObj(_);\n return this;\n }\n\n save(): DDL2.Schema {\n const ddlAdapter = new DDLAdapter(this);\n return ddlAdapter.write();\n }\n\n serializeDDL(): string {\n return JSON.stringify(this.save());\n }\n\n deserializeDDL(json: string): this {\n return this.restore(JSON.parse(json) as DDL2.Schema);\n }\n\n restore(_: DDL2.Schema, render: boolean = false): this {\n this.ensureDockPanel(_ && _.properties && _.properties.layout instanceof Array ? \"grid\" : \"dock\");\n this._ec.clear();\n const ddlAdapter = new DDLAdapter(this);\n ddlAdapter.read(_);\n if (render) {\n this.renderPromise().then(() => {\n this._ec.refresh();\n });\n }\n return this;\n }\n\n importDDL(ddl: DDL1.DDLSchema | DDL2.Schema, baseUrl?: string, wuid?: string, dermatologyJson: object = {}): this {\n const ddl2: DDL2.Schema = isDDL2Schema(ddl) ? ddl : upgrade(ddl, baseUrl, wuid, true, dermatologyJson);\n return this.restore(ddl2, true);\n }\n\n javascript(): string {\n const jsAdapter = new JavaScriptAdapter(this);\n return jsAdapter.createJavaScript();\n }\n\n layout() {\n return this._dockPanel.layout();\n }\n\n widgets(): Widget[] {\n return this._dockPanel.widgets();\n }\n\n activate(element: Element) {\n this._dockPanel.activate(element);\n }\n\n hideSingleTabs(): boolean;\n hideSingleTabs(_: boolean): this;\n hideSingleTabs(_?: boolean): boolean | this {\n if (!arguments.length) return this._dockPanel.hideSingleTabs();\n this._dockPanel.hideSingleTabs(_);\n return this;\n }\n\n updateButtonState() {\n this._designModeButton.enabled(this._dockPanel instanceof DashboardGrid).render();\n this._removeButton.enabled(this._prevActive !== undefined).render();\n }\n\n update(domNode: HTMLElement, element) {\n this._dockPanel.syncWidgets();\n super.update(domNode, element);\n this.updateButtonState();\n }\n\n private _prevActive: Element;\n vizActivation(viz: Element) {\n this._prevActive = viz;\n this._removeButton.enabled(viz !== undefined).render();\n }\n\n vizStateChanged(viz: Element) {\n }\n\n render(callback?): this {\n this._dockPanel.syncPopups();\n return super.render(w => {\n if (callback) {\n callback(w);\n }\n });\n }\n}\nDashboard.prototype._class += \" dashboard_dashboard\";\n","import { JSONEditor } from \"@hpcc-js/codemirror\";\nimport { DDL2, validate2 } from \"@hpcc-js/ddl-shim\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { SplitPanel } from \"@hpcc-js/phosphor\";\n\nimport \"../../src/ddl2/ddleditor.css\";\n\nexport class DDLEditor extends SplitPanel {\n summary: string = \"0 Errors\";\n _ddlEditor = new JSONEditor().on(\"changes\", (changes) => {\n this.checkSyntax();\n });\n _errorTable = new Table()\n .columns([\"dataPath\", \"keyword\", \"message\", \"params\"])\n ;\n\n ddl(): object;\n ddl(_: object): this;\n ddl(_?: object): object | this {\n if (!arguments.length) return this._ddlEditor.json();\n this._ddlEditor.json(_);\n this.checkSyntax();\n return this;\n }\n\n checkSyntax() {\n try {\n const json = this.ddl();\n try {\n const { success, errors } = validate2(json as DDL2.Schema);\n if (success) {\n this._errorTable.data([]);\n } else {\n this._errorTable.data(errors.map(error => [error.dataPath, error.keyword, error.message, JSON.stringify(error.params)]));\n }\n } catch (e) {\n this._errorTable.data([[\"\", \"Validation Failed\", \"\", \"\"]]);\n }\n } catch (e) {\n this._errorTable.data([[\"ALL\", \"Invalid JSON\", \"\", \"\"]]);\n }\n if (this._renderCount) {\n this._errorTable.lazyRender();\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this\n .addWidget(this._ddlEditor)\n .addWidget(this._errorTable)\n ;\n }\n\n update(domNode, _element) {\n super.update(domNode, _element);\n }\n\n}\nDDLEditor.prototype._class += \" codemirror_DDLEditor\";\n","import { Widget } from \"@hpcc-js/common\";\nimport { Edge, IGraphData, Lineage, Subgraph, Vertex } from \"@hpcc-js/graph\";\nimport { Activity } from \"./activities/activity.ts\";\nimport { Databomb } from \"./activities/databomb.ts\";\nimport { DSPicker } from \"./activities/dspicker.ts\";\nimport { Form } from \"./activities/form.ts\";\nimport { LogicalFile } from \"./activities/logicalfile.ts\";\nimport { RestResult, RestResultRef } from \"./activities/rest.ts\";\nimport { RoxieResult, RoxieResultRef } from \"./activities/roxie.ts\";\nimport { WUResult } from \"./activities/wuresult.ts\";\nimport { Element, ElementContainer, State } from \"./model/element.ts\";\nimport { Visualization } from \"./model/visualization.ts\";\nimport { VizChartPanel } from \"./model/vizChartPanel.ts\";\n\nexport interface VertexData {\n view?: Element;\n activity?: Activity;\n visualization?: Visualization;\n chartPanel?: VizChartPanel;\n state?: State;\n}\n\nexport class GraphAdapter {\n private subgraphMap: { [key: string]: Subgraph } = {};\n private vertexMap: { [key: string]: Vertex } = {};\n private edgeMap: { [key: string]: Edge } = {};\n private hierarchy: Lineage[] = [];\n private vertices: Widget[] = [];\n private edges: Edge[] = [];\n\n constructor(private _ec: ElementContainer) {\n }\n\n clear() {\n this.subgraphMap = {};\n this.vertexMap = {};\n this.edgeMap = {};\n\n this.hierarchy = [];\n this.vertices = [];\n this.edges = [];\n }\n\n createSubgraph(id: string, label: string, data?: VertexData): Subgraph {\n let retVal: Subgraph = this.subgraphMap[id];\n if (!retVal) {\n retVal = new Subgraph()\n // .classed({ subgraph: true })\n // .showIcon(false)\n .columns([\"DS\"])\n .data([[data]])\n ;\n this.subgraphMap[id] = retVal;\n }\n this.vertices.push(retVal);\n retVal.title(`${label}`);\n retVal.getBBox(true);\n return retVal;\n }\n\n createVertex(id: string, label: string, data?: VertexData, tooltip: string = \"\", fillColor: string = \"#dcf1ff\"): Vertex {\n let retVal: Vertex = this.vertexMap[id];\n if (!retVal) {\n retVal = new Vertex()\n .columns([\"DS\"])\n .data([[data]])\n .icon_diameter(0)\n ;\n this.vertexMap[id] = retVal;\n }\n this.vertices.push(retVal);\n retVal\n .textbox_shape_colorFill(fillColor)\n .text(tooltip ? `${label}\\n${tooltip}` : `${label}`)\n .tooltip(tooltip)\n ;\n retVal.getBBox(true);\n return retVal;\n }\n\n createEdge(sourceID: string, targetID: string) {\n const edgeID = `${sourceID}->${targetID}`;\n let retVal = this.edgeMap[edgeID];\n if (!retVal) {\n retVal = new Edge()\n .sourceVertex(this.vertexMap[sourceID])\n .targetVertex(this.vertexMap[targetID])\n ;\n this.edgeMap[edgeID] = retVal;\n }\n this.edges.push(retVal);\n return retVal;\n }\n\n createDatasource(dsDetails: Activity): string {\n if (dsDetails instanceof DSPicker) {\n dsDetails = dsDetails.selection().datasource();\n }\n if (dsDetails instanceof WUResult) {\n const serverID = `${dsDetails.url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const wuID = `${dsDetails.url()}/${dsDetails.wuid()}`;\n const wu: Subgraph = this.createSubgraph(wuID, `${dsDetails.wuid()}`);\n this.hierarchy.push({ parent: server, child: wu });\n const resultID = `${wuID}/${dsDetails.resultName()}`;\n const result: Vertex = this.createVertex(resultID, dsDetails.resultName(), { activity: dsDetails });\n this.hierarchy.push({ parent: wu, child: result });\n return resultID;\n } else if (dsDetails instanceof LogicalFile) {\n const serverID = `${dsDetails.url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const lfID = `${serverID}/${dsDetails.logicalFile()}`;\n const lf: Vertex = this.createVertex(lfID, dsDetails.logicalFile(), { activity: dsDetails });\n this.hierarchy.push({ parent: server, child: lf });\n return lfID;\n } else if (dsDetails instanceof RoxieResultRef) {\n const serverID = `${dsDetails.url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const surfaceID = dsDetails.serviceID(); // `${dsDetails.url()}/${dsDetails.querySet()}`;\n const surface: Subgraph = this.createSubgraph(surfaceID, dsDetails.querySet());\n this.hierarchy.push({ parent: server, child: surface });\n const roxieID = surfaceID;\n this.hierarchy.push({\n parent: surface,\n child: this.createVertex(roxieID, dsDetails.queryID())\n });\n const roxieResultID = `${surfaceID}/${dsDetails.resultName()}`;\n this.hierarchy.push({\n parent: surface,\n child: this.createVertex(roxieResultID, dsDetails.resultName(), { activity: dsDetails })\n });\n this.createEdge(roxieID, roxieResultID);\n return roxieResultID;\n } else if (dsDetails instanceof RoxieResult) {\n const serverID = `${dsDetails.service().url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const querySetID = dsDetails.serviceID();\n const querySet: Subgraph = this.createSubgraph(querySetID, dsDetails.service().querySet());\n this.hierarchy.push({ parent: server, child: querySet });\n const queryID = `${querySetID}/${dsDetails.service().queryID()}`;\n const query: Subgraph = this.createSubgraph(queryID, dsDetails.service().queryID());\n this.hierarchy.push({ parent: querySet, child: query });\n const resultID = `${queryID}/${dsDetails.resultName()}`;\n this.hierarchy.push({\n parent: query,\n child: this.createVertex(resultID, dsDetails.resultName(), { activity: dsDetails })\n });\n this.createEdge(queryID, resultID);\n return resultID;\n } else if (dsDetails instanceof RestResultRef) {\n const serverID = `${dsDetails.url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const surfaceID = dsDetails.serviceID();\n const surface: Subgraph = this.createSubgraph(surfaceID, dsDetails.action());\n this.hierarchy.push({ parent: server, child: surface });\n const roxieID = surfaceID;\n this.hierarchy.push({\n parent: surface,\n child: this.createVertex(roxieID, dsDetails.action())\n });\n const roxieResultID = `${surfaceID}/${dsDetails.resultName()}`;\n this.hierarchy.push({\n parent: surface,\n child: this.createVertex(roxieResultID, dsDetails.resultName(), { activity: dsDetails })\n });\n this.createEdge(roxieID, roxieResultID);\n return roxieResultID;\n } else if (dsDetails instanceof RestResult) {\n const serverID = `${dsDetails.service().url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const serviceID = dsDetails.serviceID();\n const actionID = `${serverID}/${dsDetails.service().action()}`;\n const action: Subgraph = this.createSubgraph(serviceID, dsDetails.service().action());\n this.hierarchy.push({ parent: server, child: action });\n const resultID = `${actionID}/${dsDetails.resultName()}`;\n this.hierarchy.push({\n parent: action,\n child: this.createVertex(resultID, dsDetails.resultName(), { activity: dsDetails })\n });\n this.createEdge(actionID, resultID);\n return resultID;\n } else if (dsDetails instanceof Form) {\n const id = dsDetails.hash();\n this.createVertex(id, dsDetails.label(), { activity: dsDetails });\n return id;\n } else if (dsDetails instanceof Databomb) {\n const id = dsDetails.id();\n this.createVertex(id, dsDetails.label(), { activity: dsDetails });\n return id;\n } else {\n const id = dsDetails.hash();\n this.createVertex(id, dsDetails.label(), { activity: dsDetails });\n return id;\n }\n }\n\n createActivity(sourceID: string, view: Element, activity: Activity, label?: string): string {\n const surface: Subgraph = this.createSubgraph(view.id(), `${view.id()}`, { view });\n let fillColor = null;\n let tooltip = \"\";\n if (activity.exists()) {\n const errors = activity.validate();\n if (errors.length) {\n fillColor = \"pink\";\n tooltip = errors.map(error => `${error.source}: ${error.msg}`).join(\"\\n\");\n }\n } else {\n fillColor = \"lightgrey\";\n }\n const vertex: Vertex = this.createVertex(activity.id(), label || `${activity.classID()}`, { view, activity }, tooltip, fillColor);\n if (sourceID) {\n this.createEdge(sourceID, activity.id());\n }\n this.hierarchy.push({ parent: surface, child: vertex });\n return activity.id();\n }\n\n createGraph(): IGraphData {\n this.hierarchy = [];\n this.vertices = [];\n this.edges = [];\n\n this._ec.elements().forEach(e => {\n this.createDatasource(e.hipiePipeline().datasource());\n });\n\n const lastID: { [key: string]: string } = {};\n for (const view of this._ec.elements()) {\n const pipeline = view.hipiePipeline();\n let prevID = this.createDatasource(pipeline.datasource());\n for (const activity of pipeline.activities()) {\n prevID = this.createActivity(prevID, view, activity);\n }\n const visualization = view.visualization();\n const mappings = visualization.mappings();\n const mappingVertexID = this.createActivity(prevID, view, mappings, \"Mappings\");\n const vizSubgraphID = `${visualization.id()}-sg`;\n const surface: Subgraph = this.createSubgraph(vizSubgraphID, \"Visualization\", { visualization });\n this.hierarchy.push({\n parent: this.subgraphMap[view.id()],\n child: surface\n });\n this.hierarchy.push({\n parent: surface,\n child: this.vertexMap[mappings.id()]\n });\n const vizVertexID = `${visualization.id()}-viz`;\n const widgetVertex: Vertex = this.createVertex(vizVertexID, visualization.chartPanel().widget().classID(), { view, chartPanel: visualization.chartPanel() });\n this.createEdge(mappingVertexID, vizVertexID);\n this.hierarchy.push({\n parent: surface,\n child: widgetVertex\n });\n const stateVertexID = `${visualization.id()}-state`;\n const stateVertex: Vertex = this.createVertex(stateVertexID, \"Selection\", { view, state: view.state() });\n this.createEdge(vizVertexID, stateVertexID)\n .weight(10)\n .strokeDasharray(\"1,5\")\n .text(\"updates\")\n ;\n this.createEdge(prevID, stateVertexID);\n this.hierarchy.push({\n parent: this.subgraphMap[view.id()],\n child: stateVertex\n });\n prevID = stateVertexID;\n lastID[pipeline.id()] = prevID;\n }\n\n // Mapping Secondary Sources ---\n for (const view of this._ec.elements()) {\n const visualization = view.visualization();\n const secondaryElement = this._ec.element(visualization.secondaryDataviewID());\n if (secondaryElement) {\n const mappings = secondaryElement.visualization().mappings();\n this.createEdge(mappings.id(), `${visualization.id()}-viz`);\n }\n }\n\n for (const viz of this._ec.elements()) {\n const view = viz.hipiePipeline();\n for (const updateInfo of view.updatedByGraph()) {\n this.createEdge(lastID[this._ec.element(updateInfo.from).hipiePipeline().id()], updateInfo.to.id())\n .weight(10)\n .strokeDasharray(\"1,5\")\n .text(\"updates\")\n ;\n }\n }\n\n return {\n vertices: this.vertices,\n edges: this.edges,\n hierarchy: this.hierarchy\n };\n }\n}\n","import { Button, Spacer } from \"@hpcc-js/common\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { CommandRegistry, ContextMenu } from \"@hpcc-js/phosphor\";\nimport { text as d3Text } from \"d3-fetch\";\nimport { Databomb } from \"./activities/databomb.ts\";\nimport { DatasourceRefType } from \"./activities/datasource.ts\";\nimport { DSPicker } from \"./activities/dspicker.ts\";\nimport { Form, FormField } from \"./activities/form.ts\";\nimport { LogicalFile } from \"./activities/logicalfile.ts\";\nimport { RestField, RestResult, RestService } from \"./activities/rest.ts\";\nimport { RoxieResult, RoxieService } from \"./activities/roxie.ts\";\nimport { WU, WUResult } from \"./activities/wuresult.ts\";\nimport { ElementContainer } from \"./model/element.ts\";\n\nexport class DSTable extends ChartPanel {\n\n private _addButton = new Button().faChar(\"fa-plus\").tooltip(\"Add...\")\n .on(\"click\", () => {\n const node = this._addButton.element().node();\n const rect = node.getBoundingClientRect();\n if (this._contextMenu.open({\n target: node,\n currentTarget: node,\n clientX: rect.left,\n clientY: rect.bottom\n })) {\n }\n });\n\n private _removeButton = new Button().faChar(\"fa-minus\").tooltip(\"Remove...\")\n .enabled(false)\n .on(\"click\", () => {\n this.remove();\n });\n\n private _cloneButton = new Button().faChar(\"fa-clone\").tooltip(\"Clone...\")\n .enabled(false)\n .on(\"click\", () => {\n if (this._selectedDS2) {\n if (this._selectedDS2 instanceof Databomb) {\n this.add(Databomb.fromDDL(this._selectedDS2.toDDL(), true));\n } else if (this._selectedDS2 instanceof Form) {\n this.add(Form.fromDDL(this._selectedDS2.toDDL(), true));\n } else if (this._selectedDS2 instanceof LogicalFile) {\n this.add(LogicalFile.fromDDL(this._ec, this._selectedDS2.toDDL(), true));\n } else if (this._selectedDS2 instanceof RestResult) {\n this.add(new RestResult(this._ec)\n .service(RestService.fromDDL(this._ec, this._selectedDS2.service().toDDL(), true))\n .resultName(this._selectedDS2.resultName())\n );\n } else if (this._selectedDS2 instanceof WUResult) {\n this.add(new WUResult(this._ec)\n .wu(WU.fromDDL(this._ec, this._selectedDS2.wu().toDDL(), true))\n .resultName(this._selectedDS2.resultName())\n );\n } else if (this._selectedDS2 instanceof RoxieResult) {\n this.add(new RoxieResult(this._ec)\n .service(RoxieService.fromDDL(this._ec, this._selectedDS2.service().toDDL(), true))\n .resultName(this._selectedDS2.resultName())\n );\n } else {\n console.warn(\"Unknown datasoure type\");\n }\n }\n });\n\n private _addSamples = new Button().faChar(\"fa-database\").tooltip(\"Add Samples\")\n .on(\"click\", () => {\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/airports.csv\").then(csv => {\n this.add(new Databomb().format(\"csv\").payload(csv));\n });\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/carriers.csv\").then(csv => {\n this.add(new Databomb().format(\"csv\").payload(csv));\n });\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/stats.csv\").then(csv => {\n this.add(new Databomb().format(\"csv\").payload(csv));\n });\n this.add(new RestResult(this._ec)\n .service(new RestService(this._ec)\n .url(\"https://cmsapi.pulselive.com/\")\n .action(\"rugby/rankings/mru\")\n .requestFields([\n new RestField().fieldID(\"xxx\"),\n new RestField().fieldID(\"date\")\n ]))\n .resultName(\"entries\")\n );\n this.add(new WUResult(this._ec)\n .wu(new WU(this._ec).url(\"http://localhost:8010\").wuid(\"W20190802-112509\"))\n .resultName(\"Result 1\")\n );\n this.add(new LogicalFile(this._ec)\n .url(\"http://localhost:8010\")\n .logicalFile(\"progguide::exampledata::peopleaccts\")\n );\n this.add(new LogicalFile(this._ec)\n .url(\"http://localhost:8010\")\n .logicalFile(\"progguide::exampledata::people\")\n );\n const vmRoxie = new RoxieService(this._ec)\n .url(\"http://localhost:8002\")\n .querySet(\"roxie\")\n .queryID(\"peopleaccounts\")\n ;\n this.add(new RoxieResult(this._ec)\n .service(vmRoxie)\n .resultName(\"Accounts\")\n );\n this.add(new Form()\n .formFields([\n new FormField().type(\"number\").fieldID(\"id\").value(8),\n new FormField().fieldID(\"first_name\").value(\"John\"),\n new FormField().fieldID(\"last_name\").value(\"Doe\"),\n new FormField().fieldID(\"gender\").default(\"M\"),\n new FormField().type(\"number\").fieldID(\"age\")\n ])\n );\n this.render();\n });\n\n private _dstable = new Table();\n private _selectedDS;\n private _selectedDS2;\n\n private _contextMenu;\n\n constructor(private _ec: ElementContainer) {\n super();\n this\n .buttons([this._addButton, this._removeButton, new Spacer(), this._cloneButton, new Spacer(), this._addSamples])\n .widget(this._dstable)\n .columns([\"ID\", \"Type\", \"References\"])\n .on(\"click\", (row, col, sel) => {\n this._selectedDS2 = row.__lparam;\n if (sel && row.References === 0 && row.ID !== \"Empty\") {\n this._selectedDS = row.__lparam;\n } else {\n delete this._selectedDS;\n }\n this._removeButton.enabled(this._selectedDS !== undefined).render();\n this._cloneButton.enabled(this._selectedDS2 !== undefined).render();\n })\n ;\n\n this.initMenu();\n }\n\n initMenu() {\n const commands = new CommandRegistry();\n\n // Dashboard Commands ---\n commands.addCommand(\"add_wu_result\", {\n label: \"Workunit Result\",\n execute: () => {\n this.add(new WUResult(this._ec));\n }\n });\n\n commands.addCommand(\"add_logicalfile\", {\n label: \"Logical File\",\n execute: () => {\n this.add(new LogicalFile(this._ec));\n }\n });\n\n commands.addCommand(\"add_roxie\", {\n label: \"Roxie Service\",\n execute: () => {\n this.add(new RoxieResult(this._ec));\n }\n });\n\n commands.addCommand(\"add_rest\", {\n label: \"Rest\",\n execute: () => {\n this.add(new RestResult(this._ec));\n }\n });\n\n commands.addCommand(\"add_databomb\", {\n label: \"Databomb\",\n execute: () => {\n this.add(new Databomb());\n }\n });\n\n commands.addCommand(\"add_form\", {\n label: \"Form\",\n execute: () => {\n this.add(new Form());\n }\n });\n\n this._contextMenu = new ContextMenu({ commands });\n this._contextMenu.addItem({ command: \"add_wu_result\", selector: \".common_Button\" });\n this._contextMenu.addItem({ command: \"add_logicalfile\", selector: \".common_Button\" });\n this._contextMenu.addItem({ command: \"add_roxie\", selector: \".common_Button\" });\n this._contextMenu.addItem({ command: \"add_rest\", selector: \".common_Button\" });\n this._contextMenu.addItem({ command: \"add_databomb\", selector: \".common_Button\" });\n this._contextMenu.addItem({ command: \"add_form\", selector: \".common_Button\" });\n }\n\n add(ds: DatasourceRefType) {\n this._ec.appendDatasource(ds);\n this.render();\n }\n\n remove() {\n if (this._selectedDS) {\n this._ec.removeDatasource(this._selectedDS);\n this.render();\n }\n }\n\n private _prevDataID;\n render(callback?) {\n const refs = {};\n this._ec.elements().forEach(e => {\n let ds = e.hipiePipeline().datasource();\n if (ds instanceof DSPicker) {\n ds = ds.datasource();\n }\n if (refs[ds.id()] === undefined) {\n refs[ds.id()] = 0;\n }\n refs[ds.id()]++;\n });\n const data = this._ec.datasources().filter(ds => ds.id() !== \"Empty\").map(ds => {\n if (refs[ds.id()] === undefined) {\n refs[ds.id()] = 0;\n }\n return [ds.id(), ds.classID(), refs[ds.id()] || 0, ds];\n });\n const dataID = JSON.stringify(refs);\n if (this._prevDataID !== dataID) {\n this._prevDataID = dataID;\n this.data(data);\n }\n return super.render(callback);\n }\n}\n","import { Table } from \"@hpcc-js/dgrid\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { ElementContainer } from \"./model/element.ts\";\n\nexport class DVTable extends ChartPanel {\n\n private _dvtable = new Table();\n\n constructor(private _ec: ElementContainer) {\n super();\n this\n .titleVisible(false)\n .widget(this._dvtable)\n .columns([\"ID\", \"Title\"])\n ;\n }\n\n private _prevDataID;\n render(callback?) {\n const data = this._ec.elements().map(elem => {\n return [elem.id(), elem.visualization().title(), elem];\n });\n const dataID = hashSum(data.map(row => row[0]));\n if (this._prevDataID !== dataID) {\n this._prevDataID = dataID;\n this.data(data);\n }\n return super.render(callback);\n }\n}\n","import { JSONEditor } from \"@hpcc-js/codemirror\";\nimport { Button, PropertyExt, SelectionBar, SelectionButton, Spacer } from \"@hpcc-js/common\";\nimport { DatasourceTable } from \"@hpcc-js/dgrid\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { PropertyEditor } from \"@hpcc-js/other\";\nimport { SplitPanel, TabPanel } from \"@hpcc-js/phosphor\";\nimport { Activity } from \"./activities/activity.ts\";\nimport { DatasourceAdapt } from \"./activities/databomb.ts\";\nimport { Datasource } from \"./activities/datasource.ts\";\nimport { DSPicker } from \"./activities/dspicker.ts\";\nimport { Filters } from \"./activities/filter.ts\";\nimport { GroupBy } from \"./activities/groupby.ts\";\nimport { Limit } from \"./activities/limit.ts\";\nimport { Mappings, Project } from \"./activities/project.ts\";\nimport { Sort } from \"./activities/sort.ts\";\nimport { Element as ModelElement, IElementError, State } from \"./model/element.ts\";\nimport { Visualization } from \"./model/visualization.ts\";\n\nimport \"../../src/ddl2/pipelinePanel.css\";\n\nclass PipelineSelectionButton extends SelectionButton {\n\n _label: string;\n label(): string;\n label(_: string): this;\n label(_?: string): string | this {\n if (!arguments.length) return this._label;\n this._label = _;\n this.tooltip(_);\n return this;\n }\n\n _elementErrors: IElementError[] = [];\n errors(): IElementError[];\n errors(_: IElementError[]): this;\n errors(_?: IElementError[]): IElementError[] | this {\n if (!arguments.length) return this._elementErrors;\n this._elementErrors = _;\n this.classed(\"error\", _.length > 0);\n // this.element().classed(\"error\", _.length > 0);\n if (_.length) {\n this.tooltip(_.map(err => {\n const errSourceParts = err.source.split(\".\");\n errSourceParts.splice(0, 1);\n return `${errSourceParts.join(\".\")}: ${err.msg}`;\n }).join(\"\\n\"));\n } else {\n this.tooltip(this._label);\n }\n this.render();\n return this;\n }\n}\n\nclass PipelinePanel extends ChartPanel {\n _owner: PipelineSplitPanel;\n\n datasource = new PipelineSelectionButton().faChar(\"fa-database\").label(\"Datasource\").selected(true);\n filter = new PipelineSelectionButton().faChar(\"fa-filter\").label(\"Filter\");\n project = new PipelineSelectionButton().faChar(\"fa-random\").label(\"Project\");\n groupBy = new PipelineSelectionButton().faChar(\"fa-object-group\").label(\"Group By\");\n sort = new PipelineSelectionButton().faChar(\"fa-sort-alpha-asc\").label(\"Sort\");\n limit = new PipelineSelectionButton().faChar(\"fa-list-ol\").label(\"Limit\");\n mappings = new PipelineSelectionButton().faChar(\"fa-random\").label(\"Mappings\");\n chartPanel = new PipelineSelectionButton().faChar(\"fa-area-chart\").label(\"Visualization\");\n state = new PipelineSelectionButton().faChar(\"fa-check-square-o\").label(\"State\");\n debug = new PipelineSelectionButton().faChar(\"fa-bug\").label(\"Debug\");\n all = new PipelineSelectionButton().faChar(\"fa-list\").label(\"All\");\n\n _propEditor: PropertyEditor = new PropertyEditor()\n .show_header(false)\n .show_settings(false)\n .showFields(false)\n ;\n\n private _buttons = [\n this.datasource,\n this.filter,\n this.project,\n this.groupBy,\n this.sort,\n this.limit,\n new Spacer(),\n this.mappings,\n this.chartPanel,\n new Spacer(),\n this.state,\n this.debug,\n new Spacer(),\n this.all\n ];\n _pipelineButton: PipelineSelectionButton = this.datasource;\n private _pipelineSelection = new SelectionBar()\n .buttons(this._buttons).on(\"selected\", sb => {\n this._pipelineButton = sb;\n this.title(sb.label()).render();\n });\n\n constructor(owner: PipelineSplitPanel) {\n super();\n this._owner = owner;\n this.buttons([this._pipelineSelection]);\n this.title(this.datasource.label());\n super.widget(this._propEditor);\n this._propEditor.monitor((id: string, newValue: any, oldValue: any, source: PropertyExt) => {\n if (source !== this._propEditor) {\n this.propChanged(id, newValue, oldValue, source);\n this.updateState();\n }\n });\n }\n\n selectionButtons(): PipelineSelectionButton[] {\n return this._pipelineSelection.buttons().filter(b => b instanceof PipelineSelectionButton) as PipelineSelectionButton[];\n }\n\n private _propExt: PropertyExt;\n propExt(): PropertyExt;\n propExt(_: PropertyExt): this;\n propExt(_?: PropertyExt): PropertyExt | this {\n if (!arguments.length) return this._propExt;\n this._propExt = _;\n return this;\n }\n\n private peAsDatasource(): Datasource {\n if (this._propExt instanceof Datasource) {\n return this._propExt;\n } else if (this._propExt instanceof DSPicker) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().datasource();\n }\n }\n\n private peAsFilter(): Filters {\n if (this._propExt instanceof Filters) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().filters();\n }\n }\n\n private peAsProject(): Project {\n if (this._propExt instanceof Project) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().project();\n }\n }\n\n private peAsGroupBy(): GroupBy {\n if (this._propExt instanceof GroupBy) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().groupBy();\n }\n }\n\n private peAsSort(): Sort {\n if (this._propExt instanceof Sort) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().sort();\n }\n }\n\n private peAsLimit(): Limit {\n if (this._propExt instanceof Limit) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().limit();\n }\n }\n\n private peAsMappings(): Mappings {\n if (this._propExt instanceof Mappings) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.visualization().mappings();\n } else if (this._propExt instanceof Visualization) {\n return this._propExt.mappings();\n }\n }\n\n private peAsChartPanel(): ChartPanel | Visualization {\n if (this._propExt instanceof ChartPanel) {\n return this._propExt;\n } else if (this._propExt instanceof Visualization) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.visualization();\n }\n }\n\n private peAsState(): State {\n if (this._propExt instanceof State) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.state();\n }\n }\n\n selectionButton(): PipelineSelectionButton {\n if (this._pipelineButton && this._pipelineButton.enabled()) {\n return this._pipelineButton;\n }\n for (const pb of this.selectionButtons()) {\n if (pb.enabled()) {\n pb.selected(true);\n return pb;\n }\n }\n return undefined;\n }\n\n _prevPropExt: PropertyExt;\n _prevPipelineButton: SelectionButton;\n update(domNode, element) {\n super.update(domNode, element);\n this.updateState();\n const pipelineButton = this.selectionButton();\n if (this._prevPropExt !== this._propExt || this._prevPipelineButton !== pipelineButton) {\n this._prevPropExt = this._propExt;\n this._prevPipelineButton = pipelineButton;\n if (this._propExt && pipelineButton) {\n switch (pipelineButton) {\n case this.datasource:\n this._propEditor.widget(this.peAsDatasource());\n break;\n case this.filter:\n this._propEditor.widget(this.peAsFilter());\n break;\n case this.project:\n this._propEditor.widget(this.peAsProject());\n break;\n case this.groupBy:\n this._propEditor.widget(this.peAsGroupBy());\n break;\n case this.sort:\n this._propEditor.widget(this.peAsSort());\n break;\n case this.limit:\n this._propEditor.widget(this.peAsLimit());\n break;\n case this.mappings:\n this._propEditor.widget(this.peAsMappings());\n break;\n case this.chartPanel:\n this._propEditor.widget(this.peAsChartPanel());\n break;\n case this.state:\n this._propEditor.widget(this.peAsState());\n break;\n case this.all:\n this._propEditor.widget(this._propExt);\n break;\n }\n } else {\n this._propEditor.widget(undefined);\n }\n this._owner.loadPreview(this._propEditor.widget());\n }\n }\n\n updateButtonState(pe, sb) {\n sb.enabled(!!pe);\n sb.errors(!!pe && pe.validate() || []);\n }\n\n updateState() {\n this.selectionButtons().forEach(sb => {\n if (sb instanceof PipelineSelectionButton) {\n if (this.disableActivities().indexOf(sb.label()) >= 0) {\n this.updateButtonState(undefined, sb);\n return;\n }\n }\n\n switch (sb) {\n case this.datasource:\n this.updateButtonState(this.peAsDatasource(), sb);\n break;\n case this.filter:\n this.updateButtonState(this.peAsFilter(), sb);\n break;\n case this.project:\n this.updateButtonState(this.peAsProject(), sb);\n break;\n case this.groupBy:\n this.updateButtonState(this.peAsGroupBy(), sb);\n break;\n case this.sort:\n this.updateButtonState(this.peAsSort(), sb);\n break;\n case this.limit:\n this.updateButtonState(this.peAsLimit(), sb);\n break;\n case this.mappings:\n this.updateButtonState(this.peAsMappings(), sb);\n break;\n case this.chartPanel:\n const cp = this.peAsChartPanel();\n sb.enabled(!!cp);\n break;\n case this.state:\n const st = this.peAsState();\n sb.enabled(!!st);\n break;\n case this.debug:\n sb.enabled(false);\n break;\n case this.all:\n sb.enabled(!!this._propExt);\n break;\n }\n if (sb.selected()) {\n this.title(sb.enabled() ? sb.label() : \"\");\n }\n });\n }\n\n // Events ---\n propChanged(id: string, newValue: any, oldValue: any, source: PropertyExt) {\n }\n}\nPipelinePanel.prototype._class += \" marshaller_PipelinePanel\";\n\ninterface PipelinePanel {\n disableActivities(): string[];\n disableActivities(_: string[]): this;\n}\n\nclass DDLPreview extends ChartPanel {\n\n private _save = new Button().faChar(\"fa-save\").tooltip(\"Save\")\n .on(\"click\", () => {\n const activity = this.activity();\n if (activity && (activity as any).fromDDL) {\n (activity as any).fromDDL(this._jsonEditor.json());\n }\n this.updateToolbar();\n });\n\n private _reset = new Button().faChar(\"fa-undo\").tooltip(\"Reset\")\n .on(\"click\", () => {\n this._jsonEditor\n .text(this.jsonText())\n .lazyRender()\n ;\n this.updateToolbar();\n });\n\n private _jsonEditor = new JSONEditor()\n .on(\"changes\", (changes: object[]) => {\n this.updateToolbar();\n });\n\n constructor() {\n super();\n this._titleBar.buttons([this._save, this._reset]);\n this.widget(this._jsonEditor);\n }\n\n private _activity: PropertyExt;\n activity(_: PropertyExt): this;\n activity(): PropertyExt;\n activity(_?: PropertyExt): PropertyExt | this {\n if (_ === void 0) return this._activity;\n if (this._activity !== _) {\n this._activity = _;\n delete this._prevJson;\n }\n return this;\n }\n\n jsonText(): string {\n const activity = this.activity();\n return activity && (activity as any).toDDL ? JSON.stringify((activity as any).toDDL(), undefined, 4) : \"\";\n }\n\n private _prevJson: string;\n update(domNode, element) {\n super.update(domNode, element);\n const json = this.jsonText();\n const editorJson = this._jsonEditor.text();\n if ((this._prevJson === undefined || this._prevJson === editorJson) && this._prevJson !== json) {\n this._prevJson = json;\n this._jsonEditor.text(json);\n }\n this.updateToolbar();\n }\n\n updateToolbar() {\n const activity = this.activity() as any;\n const json = this.jsonText();\n const editorJson = this._jsonEditor.text();\n this._save.enabled(activity && activity.fromDDL && json !== editorJson).lazyRender();\n this._reset.enabled(json !== editorJson).lazyRender();\n }\n}\n\nexport class PipelineSplitPanel extends SplitPanel {\n private _rhsPropsPanel = new PipelinePanel(this).on(\"propChanged\", (id: string, newValue: any, oldValue: any, source: PropertyExt) => {\n this.propChanged(id, newValue, oldValue, source);\n });\n private _previewPanel = new TabPanel();\n private _rhsDDLPreview = new DDLPreview();\n private _rhsDataPreview = new DatasourceTable().pagination(true);\n\n constructor() {\n super();\n this._previewPanel\n .addWidget(this._rhsDataPreview, \"Data\")\n .addWidget(this._rhsDDLPreview, \"DDL\")\n ;\n this\n .addWidget(this._rhsPropsPanel)\n .addWidget(this._previewPanel)\n ;\n }\n\n loadDataProps(pe: PropertyExt) {\n this._rhsPropsPanel\n .propExt(pe)\n .render()\n ;\n }\n\n loadPreview(activity: undefined | PropertyExt) {\n activity = activity instanceof Visualization ? activity.mappings() : activity;\n this._rhsDataPreview\n .datasource(new DatasourceAdapt(activity instanceof Activity ? activity : undefined))\n .lazyRender()\n ;\n this._rhsDDLPreview\n .activity(activity) // instanceof DSPicker ? activity.datasourceRef() : activity)\n .lazyRender()\n ;\n }\n\n refreshPreview() {\n const ds = this._rhsDataPreview.datasource() as DatasourceAdapt;\n if (ds) {\n ds.exec().then(() => {\n this._rhsDataPreview\n .invalidate()\n .lazyRender()\n ;\n this._rhsDDLPreview\n .lazyRender()\n ;\n });\n } else {\n this._rhsDDLPreview\n .lazyRender()\n ;\n }\n }\n\n // Events ---\n propChanged(id: string, newValue: any, oldValue: any, source: PropertyExt) {\n }\n}\n\nexport interface PipelineSplitPanel {\n disableActivities(): string[];\n disableActivities(_: string[]): this;\n}\n\nPipelinePanel.prototype.publish(\"disableActivities\", [], \"array\", \"Disabled pipeline items\");\n\nPipelineSplitPanel.prototype.publishProxy(\"disableActivities\", \"_rhsPropsPanel\");","import { JSEditor, JSONEditor } from \"@hpcc-js/codemirror\";\nimport { Button, PropertyExt, Utility, Widget } from \"@hpcc-js/common\";\nimport { DDL1, DDL2, ddl2Schema, isDDL2Schema, upgrade } from \"@hpcc-js/ddl-shim\";\nimport { Graph } from \"@hpcc-js/graph\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { CommandPalette, CommandRegistry, ContextMenu, SplitPanel, TabPanel, WidgetAdapter } from \"@hpcc-js/phosphor\";\nimport { scopedLogger } from \"@hpcc-js/util\";\nimport { Activity } from \"./ddl2/activities/activity.ts\";\nimport { Databomb } from \"./ddl2/activities/databomb.ts\";\nimport { DSPicker } from \"./ddl2/activities/dspicker.ts\";\nimport { Dashboard } from \"./ddl2/dashboard.ts\";\nimport { DSTable } from \"./ddl2/dsTable.ts\";\nimport { DVTable } from \"./ddl2/dvTable.ts\";\nimport { GraphAdapter, VertexData } from \"./ddl2/graphadapter.ts\";\nimport { Element, ElementContainer, State } from \"./ddl2/model/element.ts\";\nimport { Visualization } from \"./ddl2/model/visualization.ts\";\nimport { VizChartPanel } from \"./ddl2/model/vizChartPanel.ts\";\nimport { PipelineSplitPanel } from \"./ddl2/pipelinePanel.ts\";\n\nconst logger = scopedLogger(\"marshaller/dashy\");\n\nimport \"../src/dashy.css\";\n\nexport type FocusType = Element | Activity | Visualization | VizChartPanel | State | undefined;\n\nclass DDLPreview extends ChartPanel {\n\n private _save = new Button().faChar(\"fa-save\").tooltip(\"Save\")\n .on(\"click\", () => {\n const obj = JSON.parse(this._jsonEditor.text());\n this._dashy.importDDL(obj);\n this.updateToolbar();\n });\n\n private _reset = new Button().faChar(\"fa-undo\").tooltip(\"Reset\")\n .on(\"click\", () => {\n this._jsonEditor\n .text(this._ddl)\n .lazyRender()\n ;\n this.updateToolbar();\n });\n\n private _jsonEditor = new JSONEditor()\n .on(\"changes\", (changes: object[]) => {\n this.updateToolbar();\n });\n\n constructor(private _dashy: Dashy) {\n super();\n this._titleBar.buttons([this._save, this._reset]);\n this.widget(this._jsonEditor);\n }\n\n private _ddl;\n ddl(_: DDL2.Schema): this {\n this._ddl = JSON.stringify(_, undefined, 4);\n return this;\n }\n\n private _prevJson: string;\n update(domNode, element) {\n super.update(domNode, element);\n if (this._prevJson !== this._ddl) {\n this._prevJson = this._ddl;\n this._jsonEditor.text(this._ddl);\n }\n this.updateToolbar();\n }\n\n updateToolbar() {\n const editorJson = this._jsonEditor.text();\n this._save.enabled(this._ddl !== editorJson).lazyRender();\n this._reset.enabled(this._ddl !== editorJson).lazyRender();\n }\n}\n\nexport class Dashy extends SplitPanel {\n\n private _elementContainer: ElementContainer = new ElementContainer();\n\n private _lhsSheet = new TabPanel();\n private _lhsDashboard: Dashboard = new Dashboard(this._elementContainer)\n .on(\"vizActivation\", (elem: Element, wa: WidgetAdapter) => {\n this.focus(this._lhsDashboard, elem);\n })\n .on(\"vizStateChanged\", (elem: Element) => {\n for (const filteredViz of this._elementContainer.filteredBy(elem.id())) {\n if (this.focus() === filteredViz) {\n this._rhsSplitView.refreshPreview();\n }\n }\n })\n ;\n private _lhsDataviews: DVTable = new DVTable(this._elementContainer)\n .on(\"click\", (row: any, col: string, sel: boolean, ext: any) => {\n this.focus(this._lhsDataviews, row.__lparam);\n this._rhsSplitView.refreshPreview();\n })\n ;\n private _lhsDatasources: DSTable = new DSTable(this._elementContainer)\n .on(\"click\", (row: any, col: string, sel: boolean, ext: any) => {\n this.focus(this._lhsDatasources, row.__lparam);\n this._rhsSplitView.refreshPreview();\n })\n ;\n private _graphAdapter = new GraphAdapter(this._elementContainer);\n private _lhsPipeline: Graph = new Graph()\n .layout(\"Hierarchy\")\n .allowDragging(false)\n .applyScaleOnLayout(true)\n .on(\"vertex_click\", (row: any, col: string, sel: boolean, ext: any) => {\n const obj: VertexData = row.__lparam[0] || {};\n this.focus(this._lhsPipeline, obj.state || obj.chartPanel || obj.visualization || obj.activity || obj.view);\n })\n .on(\"vertex_contextmenu\", (row: any, col: string, sel: boolean, ext: any) => {\n })\n ;\n private _lhsDebugSheet = new TabPanel();\n private _lhsDebugDDLEditor = new DDLPreview(this);\n private _lhsDebugDDLSchema = new JSONEditor().json(ddl2Schema);\n private _lhsDebugJSEditor = new JSEditor();\n private _lhsDebugCloneEC: ElementContainer = new ElementContainer();\n private _lhsDebugClone: Dashboard = new Dashboard(this._lhsDebugCloneEC).hideSingleTabs(true).titleVisible(false);\n private _lhsDebugDDLv1 = new JSONEditor();\n private _lhsDebugDDLv2 = new JSONEditor();\n\n private _rhsSplitView = new PipelineSplitPanel();\n\n private _fileOpen;\n\n static create(target: string, ddl?: DDL1.DDLSchema | DDL2.Schema, baseUrl?: string, wuid?: string): Promise<Dashy> {\n return new Promise((resolve, reject) => {\n const dashy = new Dashy()\n .target(target)\n .render((w: Dashy) => {\n if (ddl) {\n w.importDDL(ddl, baseUrl, wuid).then(() => {\n resolve(dashy);\n });\n } else {\n resolve(dashy);\n }\n });\n });\n }\n\n constructor() {\n super(\"horizontal\");\n }\n\n elementContainer(): ElementContainer {\n return this._elementContainer;\n }\n\n clear(): Promise<void> {\n this._lhsDebugSheet.removeWidget(this._lhsDebugDDLv1);\n this._lhsDebugSheet.removeWidget(this._lhsDebugDDLv2);\n this._elementContainer.clear();\n this._graphAdapter.clear();\n this.focus(this._lhsDashboard, undefined);\n return this.loadDashboard().then(() => {\n return this._elementContainer.refresh();\n }).then(ec => {\n return;\n });\n }\n\n save(): DDL2.Schema {\n return this._lhsDashboard.save();\n }\n\n serializeDDL(): string {\n return JSON.stringify(this.save());\n }\n\n deserializeDDL(json: string): Promise<void> {\n return this.restore(JSON.parse(json) as DDL2.Schema);\n }\n\n restore(json: DDL2.Schema): Promise<void> {\n this._lhsSheet.active(this._lhsDashboard);\n return this.clear().then(() => {\n this._lhsDashboard.restore(json);\n this._lhsDataviews.render();\n this._lhsDatasources.render();\n return this._lhsDashboard.renderPromise().then(() => {\n const elements = this._elementContainer.elements();\n if (elements.length) {\n this._lhsDashboard.activate(elements[0]);\n }\n return this._elementContainer.refresh();\n }).then(() => {\n let hasError = false;\n for (const error of this._elementContainer.validate()) {\n hasError = true;\n logger.warning(error.elementID + \" (\" + error.source + \"): \" + error.msg);\n }\n if (hasError) {\n // Re-render to highlight errrors ---\n this._lhsDashboard.renderPromise();\n }\n });\n });\n }\n\n importDDL(ddl: DDL1.DDLSchema | DDL2.Schema, baseUrl?: string, wuid?: string, dermatologyJson: object = {}): Promise<void> {\n const ddl2: DDL2.Schema = isDDL2Schema(ddl) ? ddl : upgrade(ddl, baseUrl, wuid, true, dermatologyJson);\n const retVal = this.restore(ddl2);\n if (isDDL2Schema(ddl)) {\n this._lhsDebugDDLv2.json(ddl2);\n this._lhsDebugSheet\n .addWidget(this._lhsDebugDDLv2, \"orig v2\")\n ;\n } else {\n this._lhsDebugDDLv1.json(ddl);\n this._lhsDebugDDLv2.json(ddl2);\n this._lhsDebugSheet\n .addWidget(this._lhsDebugDDLv1, \"v1\")\n .addWidget(this._lhsDebugDDLv2, \"v1 -> v2\")\n ;\n }\n return retVal;\n }\n\n activeLHS(): Widget {\n let retVal = this._lhsSheet.active();\n if (retVal === this._lhsDebugSheet) {\n retVal = this._lhsDebugSheet.active();\n }\n return retVal;\n }\n\n activeRHS(): Widget {\n return this._rhsSplitView;\n }\n\n private _currSelection: { [sourceID: string]: FocusType } = {};\n\n private focusAsElement(): Element | undefined {\n const currSelection = this.focus();\n return currSelection instanceof Element ? currSelection : undefined;\n }\n\n private focus(): FocusType;\n private focus(source: Widget, item: FocusType): this;\n private focus(source?: Widget, item?: FocusType): FocusType | this {\n if (!arguments.length) return this._currSelection[this.activeLHS().id()];\n if (this._currSelection[source.id()] !== item) {\n this._currSelection[source.id()] = item;\n this.loadRHSSplit();\n }\n return this;\n }\n\n loadRHSSplit() {\n this._rhsSplitView.loadDataProps(this.focus());\n }\n\n loadDataviews(): Promise<Widget | undefined> {\n if (this.activeLHS() === this._lhsDataviews) {\n return this._lhsDataviews.renderPromise();\n }\n return Promise.resolve(undefined);\n }\n\n loadDatasources(): Promise<Widget | undefined> {\n if (this.activeLHS() === this._lhsDatasources) {\n return this._lhsDatasources.renderPromise();\n }\n return Promise.resolve(undefined);\n }\n\n loadDashboard(): Promise<Widget | undefined> {\n if (this.activeLHS() === this._lhsDashboard) {\n this._elementContainer.validate();\n return this._lhsDashboard.renderPromise();\n }\n return Promise.resolve(undefined);\n }\n\n loadGraph() {\n this._lhsPipeline\n .data({ ...this._graphAdapter.createGraph() }, true)\n ;\n if (this.activeLHS() === this._lhsPipeline) {\n this._lhsPipeline\n .lazyRender()\n ;\n }\n }\n\n loadDDL() {\n this._lhsDebugDDLEditor\n .ddl(this._lhsDashboard.ddl())\n ;\n if (this.activeLHS() === this._lhsDebugDDLEditor) {\n this._lhsDebugDDLEditor\n .lazyRender()\n ;\n }\n }\n\n loadJavaScript() {\n this._lhsDebugJSEditor\n .javascript(this._lhsDashboard.javascript())\n ;\n if (this.activeLHS() === this._lhsDebugJSEditor) {\n this._lhsDebugJSEditor\n .lazyRender()\n ;\n }\n }\n\n loadClone() {\n const json = this.save();\n this._lhsDebugCloneEC.clear();\n this._lhsDebugClone.renderPromise().then(() => {\n this._lhsDebugClone.restore(json);\n this._lhsDebugClone.renderPromise().then(() => {\n return this._lhsDebugCloneEC.refresh();\n }).then(() => {\n for (const error of this._lhsDebugCloneEC.validate()) {\n logger.warning(error.elementID + \" (\" + error.source + \"): \" + error.msg);\n }\n });\n });\n }\n\n initMenu() {\n const commands = new CommandRegistry();\n\n // Dashboard Commands ---\n commands.addCommand(\"dash_add\", {\n label: \"Add View\",\n execute: () => {\n const newElem = new Element(this._elementContainer);\n this._elementContainer.append(newElem);\n this.loadDashboard().then(() => {\n newElem.refresh().then(() => {\n this._lhsDashboard.activate(newElem);\n });\n });\n }\n });\n\n commands.addCommand(\"dash_clear\", {\n label: \"Clear\",\n execute: () => {\n this.clear();\n }\n });\n\n commands.addCommand(\"dash_save\", {\n label: \"Save\",\n execute: () => {\n const text = JSON.stringify(this.save(), null, \" \");\n Utility.downloadString(\"JSON\", text, \"dashy\");\n }\n });\n\n commands.addCommand(\"dash_load\", {\n label: \"Open\",\n execute: () => {\n this._fileOpen.property(\"accept\", \".dashy,.json\");\n this._fileOpen.node().click();\n }\n });\n\n // Model Commands ---\n const palette = new CommandPalette({ commands });\n palette.addItem({ command: \"addWUResult\", category: \"Notebook\" });\n palette.addItem({ command: \"addView\", category: \"Notebook\" });\n palette.addItem({ command: \"remove\", category: \"Notebook\" });\n palette.id = \"palette\";\n\n const contextMenu = new ContextMenu({ commands });\n\n contextMenu.addItem({ command: \"dash_add\", selector: `#${this._lhsDashboard.id()}` });\n contextMenu.addItem({ command: \"dash_clear\", selector: `#${this._lhsDashboard.id()}` });\n contextMenu.addItem({ type: \"separator\", selector: `#${this._lhsDashboard.id()}` });\n\n contextMenu.addItem({ command: \"dash_load\", selector: `#${this.id()}` });\n contextMenu.addItem({ command: \"dash_save\", selector: `#${this.id()}` });\n\n document.addEventListener(\"contextmenu\", (event: MouseEvent) => {\n if (contextMenu.open(event)) {\n event.preventDefault();\n }\n });\n }\n\n addDatabomb(label: string, payload: string, format: \"csv\" | \"tsv\" | \"json\") {\n const databomb = new Databomb().id(label).format(format).payload(payload);\n this._elementContainer.appendDatasource(databomb);\n const newElem = new Element(this._elementContainer);\n const ds = newElem.hipiePipeline().datasource();\n if (ds instanceof DSPicker) {\n ds.datasourceID(databomb.id());\n }\n this._elementContainer.append(newElem);\n this.loadDashboard().then(() => {\n newElem.refresh().then(() => {\n this._lhsDashboard.activate(newElem);\n });\n });\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this\n .addWidget(this._lhsSheet)\n .addWidget(this._rhsSplitView)\n ;\n this._lhsSheet\n .addWidget(this._lhsDashboard, \"Dashboard\")\n .addWidget(this._lhsDataviews, \"Dataviews\")\n .addWidget(this._lhsDatasources, \"Datasources\")\n .addWidget(this._lhsPipeline, \"Pipeline\")\n .addWidget(this._lhsDebugSheet, \"Debug\")\n .on(\"childActivation\", (w: Widget) => {\n switch (w) {\n case this._lhsDataviews:\n this.loadRHSSplit();\n break;\n case this._lhsDatasources:\n this.loadRHSSplit();\n break;\n case this._lhsDashboard:\n this.loadRHSSplit();\n break;\n case this._lhsPipeline:\n this.loadRHSSplit();\n this.loadGraph();\n break;\n case this._lhsDebugSheet:\n this._lhsDebugSheet.childActivation(this._lhsDebugSheet.active());\n break;\n }\n })\n ;\n this._lhsDebugSheet\n .addWidget(this._lhsDebugDDLEditor, \"v2\")\n .addWidget(this._lhsDebugDDLSchema, \"Schema\")\n .addWidget(this._lhsDebugJSEditor, \"TS\")\n .addWidget(this._lhsDebugClone, \"Clone\")\n .on(\"childActivation\", (w: Widget) => {\n switch (w) {\n case this._lhsDebugDDLEditor:\n this.loadRHSSplit();\n this.loadDDL();\n break;\n case this._lhsDebugJSEditor:\n this.loadRHSSplit();\n this.loadJavaScript();\n break;\n case this._lhsDebugClone:\n this.loadClone();\n break;\n }\n })\n ;\n\n this.initMenu();\n this._rhsSplitView.on(\"propChanged\", (id: string, newValue: any, oldValue: any, source: PropertyExt) => {\n const currElement = this.focusAsElement();\n if (currElement) {\n currElement.refresh().then(() => {\n this._rhsSplitView.refreshPreview();\n });\n } else {\n this._rhsSplitView.refreshPreview();\n }\n switch (this.activeLHS()) {\n case this._lhsDashboard:\n this.loadDashboard();\n break;\n case this._lhsDatasources:\n this._elementContainer.refresh();\n break;\n case this._lhsPipeline:\n this.loadGraph();\n break;\n case this._lhsDebugDDLEditor:\n this.loadDDL();\n break;\n case this._lhsDebugClone:\n this.loadClone();\n break;\n }\n });\n\n const context = this;\n this._fileOpen = element.append(\"input\")\n .attr(\"type\", \"file\")\n .property(\"accept\", \".dashy,.json\")\n .style(\"display\", \"none\")\n .on(\"change\", function () {\n const i = 0;\n const f = this.files[i];\n while (f) {\n const reader = new FileReader();\n reader.onload = (function (theFile) {\n return function (e) {\n try {\n const result = Array.isArray(e.target.result) ? e.target.result[0] : e.target.result;\n const json = JSON.parse(result);\n context.importDDL(json);\n } catch (ex) {\n alert(\"ex when trying to parse json = \" + ex);\n }\n };\n })(f);\n reader.readAsText(f);\n break;\n }\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n }\n}\nDashy.prototype._class += \" composite_Dashy\";\n\nexport interface Dashy {\n disableActivities(): string[];\n disableActivities(_: string[]): this;\n}\nDashy.prototype.publishProxy(\"disableActivities\", \"_rhsSplitView\");"],"names":["PKG_NAME","PKG_VERSION","BUILD_VERSION","stringify","obj_from_json","Array","isArray","map","join","JSON","Object","keys","key","schemaType2IFieldType","type","schemaRow2IField","row","_children","length","id","name","children","wsEclSchemaRow2IField","__name","_Activity","PropertyExt","_sourceActivity","fixInt64","data","int64Fields","this","outFields","filter","field","int64Field","sourceActivity","_","arguments","hash","more","hashSum","refreshMeta","Promise","resolve","exists","validate","label","updatedBy","_emptyFields","inFields","computeFields","localFields","inFieldIDs","indexOf","fieldOrigin","fieldID","resolveFields","refs","fieldIDs","outputs","push","resolveInFields","referencedFields","exec","_emptyData","inData","outData","computeData","_prevDataHash","_prevInData","_prevData","cachedComputeData","update","Activity","_ActivityArray","_activities","activities","ActivityArray","prototype","_class","_ActivityPipeline","super","prevActivity","activity","first","last","retVal","calcUpdatedGraph","source","from","to","updatedByGraph","concat","fetch","count","Number","MAX_VALUE","then","slice","ActivityPipeline","_ActivitySelection","_selection","_monitorHandle","selection","remove","monitor","newVal","oldVal","broadcast","ActivitySelection","datasourceID","_Datasource","constructor","_id","Datasource","_DatasourceRef","_origDatasource","datasource","_datasource","toDDL","DatasourceRef","publish","internal","apply","_FormField","_owner","disableChildField","default","childFields","cf","fromDDL","ddl","owner","valid","coerceFunc","cell","calcValue","value_exists","value","FormField","_Form","fields","validFields","f","skipID","formFields","forEach","total","Form","fieldType","rowToFields","_jsonData","found","_childKey","rowFields","rf","optional","autoExpand","disable","w","_Databomb","skipPayload","format","payload","databombFields","updateJsonData","d3CsvParse","d3TsvParse","parse","preCalcFields","e","coarceFuncMap","Databomb","multiline","payloadFormat","databombPayloadOrig","emptyDatabomb","_DatasourceAdapt","_activity","DatasourceAdapt","_ESPResult","_ec","samples","sampleSize","_result","_schema","_meta","_total","_data","_prevMetaHash","refreshMetaPromise","_createResult","refresh","Error","result","Total","catch","responseFields","_exec","_prevExecHash","debounce","sample","response","_fetch","_fetchQ","AsyncOrderedQueue","fetchRows","pages","lastPage","i","Math","floor","all","responses","retVal2","ESPResult","_WUResult","_origWu","_origResultName","_wu","WU","url","wuid","resultName","ec","wu","Result","attach","baseUrl","hookSend","sourceHash","WUResult","_WU","_origUrl","_origWuid","_workunit","_outputs","ddlOutputs","wuResults","elementContainer","outputDDL","output","_prevSourceHash","_resultNames","Workunit","fetchResults","results","r","Name","resultNames","_WUResultRef","WUResultRef","prev","_resultName","_LogicalFile","logicalFile","attachLogicalFile","nodeGroup","LogicalFile","_RestField","RestField","_RestService","_responseFields","action","mode","inputs","validRequestFields","requestFields","_prevRequestHash","_prevPromise","_submitQ","submit","request","requestHash","conn","createConnection","send","RestService","_RestResult","_service","_origService","service","rs","serviceID","jsonDataFields","resultFields","split","formatRequest","RestResult","_Param","prefix","source_valid","msg","hint","visualizationIDs","remoteField_valid","remoteField","sourceOutFields","value_valid","remoteFieldID","localFieldID","localField","sourceField","elementIDs","sourceFields","sourceViz","element","hipiePipeline","selectionFields","sourceSelection","source_exists","remoteField_exists","localField_exists","Param","_RestResultRef","validParams","vp","requestFieldRefs","fc","param","filterSource","oldParams","diffs","compare","p","ff","newParams","op","enter","_prevRequestPromise","RestResultRef","parseUrl","parts","urlParts","roxieParts","querySet","queryID","isHipieRequest","requestField","isHipieResponse","source_disabled","remoteField_disabled","value_disabled","_RoxieService","_query","_requestFields","_type","queryId","ignoreHipieRequest","ignoreHipieResponse","hasMeta","reject","query","CommsQuery","RoxieService","_RoxieResult","RoxieResult","_RoxieResultRef","params","localFieldIDs","hasRequest","_value","Item","toLowerCase","replace","RoxieResultRef","_HipieResultRef","fullUrl","info","_request","HipieResultRef","dsPickerID","_DSPicker","ds","datasources","_nullDatasource","_origDatasourceID","_origDatasourceRef","datasourceRef","refreshRef","_datasourceID","datasourceIDs","text","DSPicker","createFilter","condition","lf","val","isString","localRow","trim","_ColumnMapping","localField_valid","nullable","remoteValues","filterSelection","sel","createFilterDescription","fsArr","some","fs","fs0","ColumnMapping","_RemoteFilter","validMappings","mapping","viewID","mappings","ddlMappings","appendMappings","visualization","mappingFilters","every","mappingFilter","RemoteFilter","_StaticFilter","coerceValue","valueType","StaticFilter","_Filters","validFilters","conditions","remoteFilters","staticFilters","DDL2","isIFilterCondition","remoteFilter","staticFilter","sourceID","validRemoteFilters","remoteFieldIDs","filters","validStaticFilters","__publicField","Filters","_GroupByColumn","label_valid","columns","GroupByColumn","localCount","leaves","callback","d3Aggr","min","max","mean","median","variance","deviation","sum","_AggregateField","disableAggrColumn","aggrType","disableBaseCountColumn","aggrColumn_valid","aggrColumn","baseCountColumn_valid","baseCountColumn","inFieldID","baseCountFieldID","hasColumn","aggregate","values","leaf","aggrFunc","AggregateField","_GroupBy","gbColumn","validGroupBy","cfs","validComputedFields","groupByIDs","aggregates","column","gb","computedFields","groupBy","appendGroupBys","appendComputedFields","aggregateFields","aggregateField","aggrField","computedField","hasComputedFields","groups","groupByField","details","detailsTarget","rows","fullDetails","columnLabels","d3Nest","groupByLabel","entries","_row","GroupBy","_Limit","limit","rows_exists","Limit","_ComputedMapping","newValue_valid","newValue","ComputedMapping","_ComputedField","disableColumn1","disableColumn2","disableMapping","hasChildren","column1_valid","column1","column2_valid","column2","validComputedMappings","cm","validChildFields","childField","hasChildFields","sourceFieldID","factor","constValue","template","transformations","sourceFieldID1","sourceFieldID2","transformation","child","projection","func","computeFunc","Row","Utility","defValue","ComputedField","_MultiField","validMultiFields","multiFields","MultiField","_ProjectBase","_includeLParam","_trim","classID","clearComputedFields","retValMap","cf2","templateFields","ProjectBase","_Project","Project","_Mappings","_ddl","Mappings","_SortColumn","fieldID_valid","descending","sortColumn","SortColumn","_Sort","sb","validSortBy","Sort","sortBy","sortByArr","d3Descending","d3Ascending","sort","l","item","_HipiePipeline","_filters","_project","_groupBy","_sort","_limit","updateSequence","_origFilters","_origProject","_origGroupBy","_origSort","_origLimit","project","HipiePipeline","wrapHipiePipelineProperty","prop","origKey","charAt","toUpperCase","_NullView","NullView","_VizPopupPanel","Modal","_ownerLParam","ownerLParam","_drawStartPos","visible","minHeight_default","minWidth_default","overflowY_default","_host","host","_togglePopup","selected","render","vizActivation","domNode","parentElement","style","position","widgetTitle","widget","title","titleVisible","fixedTop","_pos","y","fixedLeft","x","exit","closeModal","VizPopupPanel","_VizChartPanel","ChartPanel","_popup","ToggleButton","faChar","tooltip","on","dpBBox","locateClosestAncestor","getBBox","cp","tbBBox","pos","width","minWidth","height","resize","minHeight","popup","widgetSelector","node","querySelector","getBoundingClientRect","resizeBodySync","_origButtons","_filterButtons","buttons","Spacer","VizChartPanel","VizTypeMap","Table","FieldForm","Area","Bubble","Bar","Column","Contour","HexBin","Line","Pie","Radar","RadialBar","Scatter","Step","WordCloud","USCountiesChoropleth","ChoroplethCounties","USStatesChoropleth","ChoroplethStates","ClusterPins","Leaflet","EntityRectList","AdjacencyGraph","DataGraph","VizTypeSet","typeClass","typeNew","allowEmptyRequest","uidColumn","labelColumn","iconColumn","linksColumn","linkUidColumn","linkLabelColumn","typeInputs","__inputs","_Visualization","_hipiePipeline","chartPanel","typeChanged","_origVisibility","_origChartType","_origChartPanel","_prevChartType","_chartType","refreshMappings","chart","properties","deserialize","serialize","taken","input","idx","multi","inField","_prevFields","_prevLinkFields","refreshData","dbFields","toDBFields","linkFields","dbLinkFields","se","secondaryDataviewID","fieldsChanged","chartType","dataGraph","vertexColumns","edgeColumns","console","warn","dataChanged","mappedData","toDBData","vertices","linkData","mappedLinkData","edges","renderPromise","fieldTypeTodbFieldType","Database","Field","promises","secondaryDataviewID_exists","secondaryElementID","secondaryElement","startProgress","finishProgress","click","col","vertex_click","Visualization","publishProxy","VisibilitySet","visibility","_visibility","target","props","_chartPanel","_State","set","removeInvalid","currSelection","newSelection","selRow","find","index","State","vizID","_Element","elementExists","view","_vizChartPanel","state","_origVisualization","pipeline","dataProps","vizProps","stateProps","_errors","errors","_initialized","error","elementID","desc","description","selectionChanged","filteredViz","filteredBy","vizStateChanged","Element","_visualization","__lparam","_ElementContainer","_nullElement","_datasources","_elements","clear","eid","d","_hookSend","appendDatasource","removeDatasource","elements","viz","v","append","elemID","otherViz","views","normalizePersist","seri","ret","__properties","content","n","_is_MegaChart","_cell","_panel","_widget","__id","package","__class","object","_get_params","panel","_o","exclude_list","elem","ElementContainer","responseText","ok","status","statusText","d3Text","init","_PopupManager","Widget","_popups","_popupIdx","popupPanels","popupChartPanels","addPopup","targetNode","pp","relativeTargetId","size","monitorHandle","otherElem","removePopup","syncPopups","prevPopups","diffPopups","PopupManager","_DashboardDockPanel","DockPanel","tabTitle","hideSingleTabs","titleClassed","wa","include","classes","className","c","updateTitle","getWidgetAdapter","caption","err","activate","syncMinSize","minWidth_exists","minHeight_exists","d3Select","syncWidgets","prevWidgets","widgets","diffWidgets","refit","removeWidget","addWidget","childActivation","wa2","widgetAdapters","addClass","iconClass","removeClass","canClose","window","confirm","DashboardDockPanel","mixin","_DashboardGrid","Grid","designMode","surfacePadding","surfaceBorderWidth","_layoutCache","updateGrid","transitionDuration","_noRender","cellWidget","gridCol","gridRow","gridColSpan","gridRowSpan","layoutObj","main","convertedLayout","ddl2_layout","layoutObject","cols","dive","o","h","orientation","_w","sizes","_h","_x","_y","round","layout","getWidgetCell","clearContent","no_layout_added","setContent","freeRow","reduce","curr","postSelectionChange","_selectionBag","get","DashboardGrid","logger","scopedLogger","_DDLDatasourceAdapter","_dsDedup","dsT","_resolveID","resolveID","dsRef","pDS","refType","ref","dsTID","dsID","getAll","key2","ddl2","inElementID","outputID","DDLDatasourceAdapter","_DDLAdapter","_dashboard","_dsWriteDedup","_dsReadDedup","dashboard","writeDatasources","writeFilters","readFilters","ddlFilter","writeProject","readProject","ddlProject","writeMappings","readMappings","writeGroupBy","readGroupBy","ddlGB","writeSort","readSort","ddlSort","writeLimit","readLimit","ddlLimit","readDatasourceRef","ddlDSRef","dsPicker","isWUResultRef","isRoxieServiceRef","writeActivities","warning","writeVisualization","readVisualization","ddlViz","writeViewDatasource","writeDDLViews","refFields","writeProperties","version","buildVersion","readDDLViews","ddlViews","ddlView","isProjectActivity","isFilterActivity","isGroupByActivity","isSortActivity","isLimitActivity","readProperties","write","createdBy","dataviews","hipieProperties","hipieProps","read","ddlDS","rs2","DDLAdapter","_Imports","_moduleMap","widgetMeta","module","class","importJS","moduleID","classIDs","Imports","createProps","pe","meta","publishedProperties","serialization","_JavaScriptAdapter","_ddlAdapter","_ddlSchema","postfix","ext","writeMeta","dsDetails","safeID","datasourceRefID","_dedup","writeDatasource","wuID","resultID","fromFields","writeActivity","writeWidgetProps","joinWithPrefix","imports","joinStr","postFix","classID2Meta","arr","writeWidget","dataview","writeElement","updates","writeWidgets","jsDef","widgetImports","widgetDefs","writeElements","createJavaScript","JavaScriptAdapter","_Dashboard","_designModeButton","_addButton","_removeButton","_reloadButton","_addSamples","ensureDockPanel","_dockPanel","lazyRender","Button","newElem","enabled","_prevActive","json","save","restore","airports","carriers","stats","popupElement","addForm","airportsElement","addDatabomb","Filter","Mapping","carrierElement","statsElement","databomb","create","_hipieProps","ddlAdapter","serializeDDL","deserializeDDL","importDDL","dermatologyJson","isDDL2Schema","upgrade","javascript","updateButtonState","Dashboard","_DDLEditor","SplitPanel","summary","_ddlEditor","JSONEditor","changes","checkSyntax","_errorTable","success","validate2","dataPath","keyword","message","_renderCount","_element","DDLEditor","_GraphAdapter","subgraphMap","vertexMap","edgeMap","hierarchy","createSubgraph","Subgraph","createVertex","fillColor","Vertex","icon_diameter","textbox_shape_colorFill","createEdge","targetID","edgeID","Edge","sourceVertex","targetVertex","createDatasource","serverID","server","parent","lfID","surfaceID","surface","roxieID","roxieResultID","querySetID","actionID","createActivity","vertex","createGraph","lastID","prevID","mappingVertexID","vizSubgraphID","vizVertexID","widgetVertex","stateVertexID","stateVertex","weight","strokeDasharray","updateInfo","GraphAdapter","_DSTable","_cloneButton","_dstable","_selectedDS2","References","ID","_selectedDS","initMenu","rect","_contextMenu","open","currentTarget","clientX","left","clientY","bottom","add","csv","vmRoxie","commands","CommandRegistry","addCommand","execute","ContextMenu","addItem","command","selector","_prevDataID","dataID","DSTable","_DVTable","_dvtable","DVTable","_PipelineSelectionButton","SelectionButton","_label","_elementErrors","classed","errSourceParts","splice","PipelineSelectionButton","_PipelinePanel","debug","_propEditor","PropertyEditor","show_header","show_settings","showFields","_buttons","_pipelineButton","_pipelineSelection","SelectionBar","oldValue","propChanged","updateState","selectionButtons","b","_propExt","propExt","peAsDatasource","ModelElement","peAsFilter","peAsProject","peAsGroupBy","peAsSort","peAsLimit","peAsMappings","peAsChartPanel","peAsState","selectionButton","pb","_prevPropExt","_prevPipelineButton","pipelineButton","loadPreview","disableActivities","st","PipelinePanel","_a","_save","_jsonEditor","updateToolbar","_reset","jsonText","_titleBar","_prevJson","editorJson","_PipelineSplitPanel","_rhsPropsPanel","_previewPanel","TabPanel","_rhsDDLPreview","DDLPreview","_rhsDataPreview","DatasourceTable","pagination","loadDataProps","refreshPreview","invalidate","PipelineSplitPanel","_DDLPreview","_dashy","obj","_Dashy","_elementContainer","_lhsSheet","_lhsDashboard","focus","_rhsSplitView","_lhsDataviews","_lhsDatasources","_graphAdapter","_lhsPipeline","Graph","allowDragging","applyScaleOnLayout","_lhsDebugSheet","_lhsDebugDDLEditor","_lhsDebugDDLSchema","ddl2Schema","_lhsDebugJSEditor","JSEditor","_lhsDebugCloneEC","_lhsDebugClone","_lhsDebugDDLv1","_lhsDebugDDLv2","_fileOpen","dashy","loadDashboard","active","hasError","activeLHS","activeRHS","_currSelection","focusAsElement","loadRHSSplit","loadDataviews","loadDatasources","loadGraph","loadDDL","loadJavaScript","loadClone","downloadString","property","palette","CommandPalette","category","contextMenu","document","addEventListener","event","preventDefault","currElement","context","attr","files","reader","FileReader","onload","ex","alert","readAsText","Dashy"],"mappings":"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","x_google_ignoreList":[20]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/__package__.ts","../src/ddl2/activities/activity.ts","../src/ddl2/activities/datasource.ts","../src/ddl2/activities/form.ts","../src/ddl2/activities/databomb.ts","../src/ddl2/activities/wuresult.ts","../src/ddl2/activities/logicalfile.ts","../src/ddl2/activities/rest.ts","../src/ddl2/activities/roxie.ts","../src/ddl2/activities/dspicker.ts","../src/ddl2/activities/filter.ts","../src/ddl2/activities/groupby.ts","../src/ddl2/activities/limit.ts","../src/ddl2/activities/project.ts","../src/ddl2/activities/sort.ts","../src/ddl2/activities/hipiepipeline.ts","../src/ddl2/activities/nullview.ts","../src/ddl2/model/vizChartPanel.ts","../src/ddl2/model/visualization.ts","../src/ddl2/model/element.ts","../node_modules/d3-fetch/src/text.js","../src/ddl2/PopupManager.ts","../src/ddl2/dashboardDockPanel.ts","../src/ddl2/dashboardGrid.ts","../src/ddl2/ddl.ts","../src/ddl2/javascriptadapter.ts","../src/ddl2/dashboard.ts","../src/ddl2/ddleditor.ts","../src/ddl2/graphadapter.ts","../src/ddl2/dsTable.ts","../src/ddl2/dvTable.ts","../src/ddl2/pipelinePanel.ts","../src/dashy.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n","import { IMonitorHandle, PropertyExt } from \"@hpcc-js/common\";\nimport { IField as WsEclField } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum, update } from \"@hpcc-js/util\";\n\nexport function stringify(obj_from_json) {\n if (Array.isArray(obj_from_json)) {\n // not an object, stringify using native function\n return \"[\" + obj_from_json.map(stringify).join(\", \") + \"]\";\n }\n if (typeof obj_from_json !== \"object\" || obj_from_json === null || obj_from_json === undefined) {\n // not an object, stringify using native function\n return JSON.stringify(obj_from_json);\n }\n // Implements recursive object serialization according to JSON spec\n // but without quotes around the keys.\n const props = Object\n .keys(obj_from_json)\n .map(key => `${key}: ${stringify(obj_from_json[key])}`)\n .join(\", \");\n return `{ ${props} }`;\n}\n\nexport function schemaType2IFieldType(type): \"boolean\" | \"number\" | \"number64\" | \"range\" | \"string\" {\n switch (type) {\n case \"boolean\":\n return \"boolean\";\n case \"xs:byte\":\n case \"xs:double\":\n case \"xs:decimal\":\n case \"xs:float\":\n case \"xs:int\":\n case \"xs:short\":\n case \"xs:unsignedInt\":\n case \"xs:unsignedShort\":\n case \"xs:unsignedByte\":\n case \"number\":\n return \"number\";\n case \"xs:integer\":\n case \"xs:long\":\n case \"xs:negativeInteger\":\n case \"xs:nonNegativeInteger\":\n case \"xs:nonPositiveInteger\":\n case \"xs:positiveInteger\":\n case \"xs:unsignedLong\":\n return \"number64\";\n case \"string\":\n return \"string\";\n case \"range\":\n return \"range\";\n }\n return \"string\";\n}\n\nexport function schemaRow2IField(row: any): DDL2.IField {\n if (row._children && row._children.length) {\n return {\n type: \"dataset\",\n id: row.name,\n children: row._children.map(schemaRow2IField)\n };\n } else {\n return {\n id: row.name,\n type: schemaType2IFieldType(row.type)\n };\n }\n}\n\nexport function wsEclSchemaRow2IField(row: WsEclField): DDL2.IField {\n return row;\n}\n\nexport type ReferencedFields = {\n inputs: { [activityID: string]: string[] },\n outputs: { [activityID: string]: string[] }\n};\n\nexport interface IActivityError {\n source: string;\n msg: string;\n hint: string;\n}\n\n/*\nexport const ROW_ID = \"__##__\"; // TODO: Should be Symbol\nexport function rowID(row: Readonly<object>): undefined | number {\n return row[ROW_ID] || row[\"__lparam\"];\n}\n*/\n\nexport abstract class Activity extends PropertyExt {\n private _sourceActivity: Activity;\n\n fixInt64(data) {\n if (!data || data.length === 0) return [];\n const int64Fields = this.outFields().filter(field => {\n switch (field.type) {\n case \"number\":\n // Test actual data for integer64 cases.\n return typeof data[0][field.id] !== \"number\";\n case \"number64\":\n return true;\n }\n return false;\n });\n if (int64Fields.length) {\n return data.map(row => {\n for (const int64Field of int64Fields) {\n row[int64Field.id] = +row[int64Field.id];\n }\n return row;\n });\n }\n return data;\n }\n\n sourceActivity(): Activity;\n sourceActivity(_: Activity): this;\n sourceActivity(_?: Activity): Activity | this {\n if (!arguments.length) return this._sourceActivity;\n this._sourceActivity = _;\n return this;\n }\n\n hash(more: object = {}): string {\n return hashSum({\n ...more\n });\n }\n\n refreshMeta(): Promise<void> {\n return this._sourceActivity ? this._sourceActivity.refreshMeta() : Promise.resolve();\n }\n\n exists(): boolean {\n return true;\n }\n\n validate(): IActivityError[] {\n return [];\n }\n\n label(): string {\n return this.id();\n }\n\n updatedBy(): string[] {\n return [];\n }\n\n private _emptyFields: ReadonlyArray<DDL2.IField> = [];\n inFields(): ReadonlyArray<DDL2.IField> {\n return this._sourceActivity ? this._sourceActivity.outFields() : this._emptyFields;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => inFields;\n }\n\n outFields(): ReadonlyArray<DDL2.IField> {\n return this.computeFields(this.inFields())();\n }\n\n localFields(): DDL2.IField[] {\n const inFieldIDs = this.inFields().map(field => field.id);\n return this.outFields().filter(field => inFieldIDs.indexOf(field.id) < 0);\n }\n\n fieldOrigin(fieldID: string): Activity | null {\n if (this.localFields().filter(field => field.id === fieldID).length) {\n return this;\n } else if (this.sourceActivity()) {\n return this.sourceActivity().fieldOrigin(fieldID);\n }\n return null;\n }\n\n resolveFields(refs: ReferencedFields, fieldIDs: string[]) {\n for (const fieldID of fieldIDs) {\n const fieldOrigin = this.fieldOrigin(fieldID);\n if (fieldOrigin) {\n if (!refs.outputs[fieldOrigin.id()]) {\n refs.outputs[fieldOrigin.id()] = [];\n }\n if (refs.outputs[fieldOrigin.id()].indexOf(fieldID) < 0) {\n refs.outputs[fieldOrigin.id()].push(fieldID);\n }\n }\n }\n }\n\n resolveInFields(refs: ReferencedFields, fieldIDs: string[]) {\n return this._sourceActivity && this._sourceActivity.resolveFields(refs, fieldIDs);\n }\n\n referencedFields(refs: ReferencedFields): void {\n this._sourceActivity?.referencedFields(refs);\n }\n\n exec(): Promise<void> {\n return this._sourceActivity ? this._sourceActivity.exec() : Promise.resolve();\n }\n\n _emptyData: ReadonlyArray<object> = [];\n inData(): ReadonlyArray<object> {\n return this._sourceActivity ? this._sourceActivity.outData() || this._emptyData : this._emptyData;\n }\n\n computeData(): ReadonlyArray<object> {\n return this.inData();\n }\n\n private _prevDataHash: string = \"\";\n private _prevInData: ReadonlyArray<object> = [];\n private _prevData: ReadonlyArray<object> = [];\n private cachedComputeData(inData: ReadonlyArray<object>): ReadonlyArray<object> {\n const hash = this.hash();\n if (this._prevDataHash !== hash || this._prevInData !== inData) {\n this._prevDataHash = hash;\n this._prevInData = inData;\n this._prevData = update(this._prevData, this.computeData());\n }\n return this._prevData;\n }\n\n outData(): ReadonlyArray<object> {\n return this.cachedComputeData(this.inData());\n }\n}\n\nexport class ActivityArray extends Activity {\n private _activities: Activity[] = [];\n\n activities(): Activity[];\n activities(_: Activity[]): this;\n activities(_?: Activity[]): Activity[] | this {\n if (!arguments.length) return this._activities;\n this._activities = _;\n return this;\n }\n}\nActivityArray.prototype._class += \" ActivityArray\";\n\nexport class ActivityPipeline extends ActivityArray {\n\n activities(): Activity[];\n activities(_: Activity[]): this;\n activities(_?: Activity[]): Activity[] | this {\n if (!arguments.length) return super.activities();\n super.activities(_);\n let prevActivity: Activity;\n for (const activity of _) {\n if (prevActivity) {\n activity.sourceActivity(prevActivity);\n }\n prevActivity = activity;\n }\n return this;\n }\n\n first(): Activity {\n const retVal = this.activities();\n return retVal[0];\n }\n\n last(): Activity | null {\n const retVal = this.activities();\n return retVal[retVal.length - 1];\n }\n\n protected calcUpdatedGraph(activity: Activity): Array<{ from: string, to: Activity }> {\n return activity.updatedBy().map(source => {\n return {\n from: source,\n to: activity\n };\n });\n }\n\n updatedByGraph(): Array<{ from: string, to: Activity }> {\n let retVal: Array<{ from: string, to: Activity }> = [];\n for (const activity of this.activities()) {\n retVal = retVal.concat(this.calcUpdatedGraph(activity));\n }\n return retVal;\n }\n\n fetch(from: number = 0, count: number = Number.MAX_VALUE): Promise<ReadonlyArray<object>> {\n return this.exec().then(() => {\n const data = this.outData();\n if (from === 0 && data.length <= count) {\n return data;\n }\n return data.slice(from, from + count);\n });\n }\n\n // Activity overrides ---\n hash(more: { [key: string]: any } = {}): string {\n return hashSum({\n activities: [this.activities().map(activity => activity.hash())],\n ...more\n });\n }\n\n refreshMeta(): Promise<void> {\n return this.last().refreshMeta();\n }\n\n updatedBy(): string[] {\n let retVal: string[] = [];\n for (const activity of this.activities()) {\n retVal = retVal.concat(activity.updatedBy());\n }\n return retVal;\n }\n\n inFields(): ReadonlyArray<DDL2.IField> {\n return this.first().inFields();\n }\n\n outFields(): ReadonlyArray<DDL2.IField> {\n return this.last().outFields();\n }\n\n localFields(): DDL2.IField[] {\n return this.last().localFields();\n }\n\n fieldOrigin(fieldID: string): Activity | null {\n return this.last().fieldOrigin(fieldID);\n }\n\n referencedFields(refs: ReferencedFields) {\n this.last().referencedFields(refs);\n }\n\n resolveInFields(refs: ReferencedFields, fieldIDs: string[]) {\n this.last().resolveInFields(refs, fieldIDs);\n }\n\n resolveFields(refs: ReferencedFields, fieldIDs: string[]) {\n this.last().resolveFields(refs, fieldIDs);\n }\n\n exec(): Promise<void> {\n return this.last().exec();\n }\n\n outData(): ReadonlyArray<object> {\n return this.last().outData();\n }\n}\nActivityPipeline.prototype._class += \" ActivitySequence\";\n\nexport class ActivitySelection extends ActivityArray {\n private _selection: Activity;\n private _monitorHandle: IMonitorHandle;\n\n selection(): Activity;\n selection(_: Activity): this;\n selection(_?: Activity): Activity | this {\n if (_ === undefined) return this._selection;\n if (this._monitorHandle) {\n this._monitorHandle.remove();\n }\n this._selection = _;\n this._monitorHandle = _.monitor((id, newVal, oldVal) => {\n this.broadcast(id, newVal, oldVal, _);\n });\n return this;\n }\n\n // Activity overrides ---\n hash(more: { [key: string]: any } = {}): string {\n return hashSum({\n selection: this.selection().hash(),\n ...more\n });\n }\n\n label(): string {\n return this.selection().label();\n }\n\n refreshMeta(): Promise<void> {\n return this.selection().refreshMeta();\n }\n\n updatedBy(): string[] {\n return this.selection().updatedBy();\n }\n\n inFields(): ReadonlyArray<DDL2.IField> {\n return this.selection().inFields();\n }\n\n outFields(): ReadonlyArray<DDL2.IField> {\n return this.selection().outFields();\n }\n\n localFields(): DDL2.IField[] {\n return this.selection().localFields();\n }\n\n fieldOrigin(fieldID: string): Activity | null {\n return this.selection().fieldOrigin(fieldID);\n }\n\n referencedFields(refs: ReferencedFields) {\n this.selection().referencedFields(refs);\n }\n\n resolveInFields(refs: ReferencedFields, fieldIDs: string[]) {\n this.selection().resolveInFields(refs, fieldIDs);\n }\n\n resolveFields(refs: ReferencedFields, fieldIDs: string[]) {\n this.selection().resolveFields(refs, fieldIDs);\n }\n\n exec(): Promise<void> {\n return this.selection().exec();\n }\n\n outData(): ReadonlyArray<object> {\n return this.selection().outData();\n }\n}\nActivitySelection.prototype._class += \" ActivitySelection\";\n","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Activity } from \"./activity.ts\";\nimport { Databomb } from \"./databomb.ts\";\nimport { Form } from \"./form.ts\";\nimport { LogicalFile } from \"./logicalfile.ts\";\nimport { RestResult, RestService } from \"./rest.ts\";\nimport { RoxieResult, RoxieService } from \"./roxie.ts\";\nimport { WU, WUResult } from \"./wuresult.ts\";\n\nlet datasourceID = 0;\nexport class Datasource extends Activity {\n\n constructor() {\n super();\n this._id = `ds_${++datasourceID}`;\n }\n}\n\nexport type DatasourceRefType = Databomb | Form | LogicalFile | RoxieResult | WUResult | RestResult;\nexport type DatasourceType = Databomb | Form | LogicalFile | RoxieService | WU | RestService;\n\nexport class DatasourceRef extends Activity {\n _origDatasource;\n declare _datasource: DatasourceRefType;\n\n constructor() {\n super();\n }\n\n hash(more: { [key: string]: any } = {}): string {\n return super.hash({\n datasource: this._datasource ? this._datasource.hash(more) : undefined,\n ...more\n });\n }\n\n toDDL(): DDL2.IDatabombRef {\n return {\n id: this.datasource().id()\n };\n }\n}\nDatasourceRef.prototype._class += \" DatasourceRef\";\n\nexport interface DatasourceRef {\n datasource(): DatasourceRefType;\n datasource(_: DatasourceRefType): this;\n}\n\nDatasourceRef.prototype.publish(\"datasource\", null, \"widget\", \"Datasource Reference\", null, { internal: true });\n\nDatasourceRef.prototype._origDatasource = DatasourceRef.prototype.datasource;\nDatasourceRef.prototype.datasource = function (this: DatasourceRef, _?) {\n const retVal = DatasourceRef.prototype._origDatasource.apply(this, arguments);\n if (_ !== undefined) {\n this.sourceActivity(_);\n }\n return retVal;\n};","import { PropertyExt } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Datasource } from \"./datasource.ts\";\n\ntype IField = DDL2.IFieldBoolean | DDL2.IFieldNumber | DDL2.IFieldString | DDL2.IFieldDataset;\n\nexport class FormField extends PropertyExt {\n protected _owner: Form;\n\n disableChildField(): boolean {\n return this.type() !== \"dataset\";\n }\n\n constructor() {\n super();\n }\n\n toDDL(): IField {\n return {\n type: this.type(),\n id: this.fieldID(),\n default: this.default(),\n children: this.type() === \"dataset\" ? this.childFields().map(cf => cf.toDDL()) : undefined\n } as IField;\n }\n\n fromDDL(ddl: IField): this {\n return this\n .type(ddl.type)\n .fieldID(ddl.id)\n .default(ddl.default)\n .childFields(ddl.type === \"dataset\" && ddl.children ? ddl.children.map(FormField.fromDDL) : [])\n ;\n }\n\n static fromDDL(ddl: IField): FormField {\n return new FormField().fromDDL(ddl);\n }\n\n owner(): Form;\n owner(_: Form): this;\n owner(_?: Form): Form | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.type() && !!this.fieldID();\n }\n\n coerceFunc(): (cell: any) => boolean | number | string {\n switch (this.type()) {\n case \"boolean\":\n return cell => !!cell;\n case \"number\":\n return cell => +cell;\n case \"string\":\n return cell => \"\" + cell;\n }\n return cell => cell;\n }\n\n calcValue() {\n return this.value_exists() ? this.value() : this.default();\n }\n}\n\nexport class Form extends Datasource {\n\n constructor() {\n super();\n }\n\n toDDL(): DDL2.IForm {\n return {\n type: \"form\",\n id: this.id(),\n fields: this.validFields().map(f => f.toDDL())\n };\n }\n\n fromDDL(ddl: DDL2.IForm, skipID = false): this {\n (skipID ? this : this.id(ddl.id))\n .formFields(ddl.fields.map(FormField.fromDDL))\n ;\n return this;\n }\n\n static fromDDL(ddl: DDL2.IForm, skipID = false): Form {\n return new Form().fromDDL(ddl, skipID);\n }\n\n validFields(): FormField[] {\n return this.formFields().filter(f => f.valid());\n }\n\n hash(more: object = {}): string {\n return super.hash({\n ddl: this.toDDL(),\n ...more\n });\n }\n\n refreshMeta(): Promise<void> {\n return Promise.resolve();\n }\n\n label(): string {\n return \"Form\";\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n const retVal: DDL2.IField[] = this.validFields().map(f => f.toDDL());\n return () => retVal;\n }\n\n exec(): Promise<void> {\n return Promise.resolve();\n }\n\n computeData(): ReadonlyArray<object> {\n const retVal = {};\n this.validFields().forEach(f => {\n retVal[f.fieldID()] = f.calcValue();\n });\n return [retVal];\n }\n\n // ===\n total(): number {\n return 1;\n }\n}\nForm.prototype._class += \" Form\";\n\nexport interface FormField {\n type(): \"boolean\" | \"number\" | \"string\" | \"dataset\";\n type(_: \"boolean\" | \"number\" | \"string\" | \"dataset\"): this;\n fieldID(): string;\n fieldID(_: string): this;\n default(): boolean | number | string | any[];\n default(_: boolean | number | string | any[]): this;\n value(): boolean | number | string;\n value(_: boolean | number | string): this;\n value_exists(): boolean;\n childFields(): FormField[];\n childFields(_: FormField[]): this;\n}\n\nexport interface Form {\n formFields(): FormField[];\n formFields(_: FormField[]): this;\n}\n\nFormField.prototype.publish(\"type\", \"string\", \"set\", \"FormField Type\", [\"boolean\", \"number\", \"string\", \"dataset\"]);\nFormField.prototype.publish(\"fieldID\", \"\", \"string\", \"FormField Label\");\nFormField.prototype.publish(\"default\", null, \"any\", \"Default Value\", null, { optional: true });\nFormField.prototype.publish(\"value\", null, \"any\", \"Default Value\", null, { optional: true });\nFormField.prototype.publish(\"childFields\", [], \"propertyArray\", \"Child Fields\", null, { autoExpand: FormField, disable: (w: FormField) => w.disableChildField() });\n\nForm.prototype.publish(\"formFields\", [], \"propertyArray\", \"Multi Fields\", null, { autoExpand: FormField });","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { IDatasource } from \"@hpcc-js/dgrid\";\nimport { isArray } from \"@hpcc-js/util\";\nimport { csvParse as d3CsvParse, tsvParse as d3TsvParse } from \"d3-dsv\";\nimport { Activity } from \"./activity.ts\";\nimport { Datasource } from \"./datasource.ts\";\nimport { FormField } from \"./form.ts\";\n\nfunction fieldType(field: any): DDL2.IFieldType {\n if (isArray(field)) {\n return \"dataset\";\n }\n const type = typeof field;\n switch (type) {\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"object\":\n return type;\n }\n return \"string\";\n}\n\nexport function rowToFields(row: object, _jsonData): DDL2.IField[] {\n // TODO: This heuristic will fail if there are empty nested rows in the first row...\n const retVal: DDL2.IField[] = [];\n for (const key in row) {\n const field = {\n type: fieldType(row[key]),\n id: key\n } as DDL2.IField;\n switch (field.type) {\n case \"object\":\n for (const row of _jsonData) {\n let found = false;\n for (const _childKey in row[key]) {\n const rowFields = rowToFields(row[key], [row[key]]);\n field.fields = {};\n if (rowFields.length) {\n rowFields.forEach(rf => field.fields[rf.id] = rf);\n found = true;\n }\n break;\n }\n if (found) break;\n }\n break;\n case \"dataset\":\n for (const row of _jsonData) {\n if (row[key] && row[key].length) {\n field.children = rowToFields(row[key][0], row[key]);\n break;\n }\n }\n break;\n }\n retVal.push(field);\n }\n return retVal;\n}\n\nexport class Databomb extends Datasource {\n\n private _jsonData: ReadonlyArray<object> = [];\n\n constructor() {\n super();\n }\n\n toDDL(skipPayload: boolean = false): DDL2.IDatabomb {\n return {\n type: \"databomb\",\n id: this.id(),\n format: this.format(),\n payload: skipPayload ? undefined : this.payload(),\n fields: this.validFields().map(f => f.toDDL())\n };\n }\n\n fromDDL(ddl: DDL2.IDatabomb, skipID = false): this {\n (skipID ? this : this.id(ddl.id))\n .format(ddl.format)\n .payload(ddl.payload)\n .databombFields(ddl.fields.map(FormField.fromDDL))\n ;\n return this;\n }\n\n static fromDDL(ddl: DDL2.IDatabomb, skipID = false): Databomb {\n return new Databomb().fromDDL(ddl, skipID);\n }\n\n validFields(): FormField[] {\n return this.databombFields().filter(f => f.valid());\n }\n\n updateJsonData() {\n try {\n switch (this.format()) {\n case \"csv\":\n this._jsonData = d3CsvParse(this.payload());\n break;\n case \"tsv\":\n this._jsonData = d3TsvParse(this.payload());\n break;\n case \"json\":\n default:\n this._jsonData = JSON.parse(this.payload());\n break;\n }\n this.databombFields(this.preCalcFields().map(FormField.fromDDL));\n } catch (e) {\n this.databombFields([]);\n this._jsonData = [];\n }\n }\n\n hash(more: object): string {\n return super.hash({\n ddl: this.toDDL(true),\n ...more\n }) + this.payload();\n }\n\n refreshMeta(): Promise<void> {\n return Promise.resolve();\n }\n\n label(): string {\n return \"Databomb\";\n }\n\n private preCalcFields(): DDL2.IField[] {\n if (this._jsonData.length === 0) return [];\n return rowToFields(this._jsonData[0], this._jsonData);\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => this.validFields().map(f => f.toDDL());\n }\n\n exec(): Promise<void> {\n return Promise.resolve();\n }\n\n computeData(): ReadonlyArray<object> {\n const coarceFuncMap = {};\n this.validFields().forEach(field => {\n coarceFuncMap[field.fieldID()] = field.coerceFunc();\n });\n return this._jsonData.map(row => {\n const retVal = {};\n for (const key in coarceFuncMap) {\n retVal[key] = coarceFuncMap[key](row[key]);\n }\n return retVal;\n });\n }\n\n // ===\n total(): number {\n return this._jsonData.length;\n }\n}\nDatabomb.prototype._class += \" Databomb\";\n\nexport interface Databomb {\n format(): \"json\" | \"csv\" | \"tsv\";\n format(_: \"json\" | \"csv\" | \"tsv\"): this;\n payload(): string;\n payload(_: string): this;\n databombFields(): FormField[];\n databombFields(_: FormField[]): this;\n}\n\nDatabomb.prototype.publish(\"format\", \"json\", \"set\", \"Databomb Format\", [\"json\", \"csv\", \"tsv\"]);\nDatabomb.prototype.publish(\"payload\", \"\", \"string\", \"Databomb array\", null, { multiline: true });\nDatabomb.prototype.publish(\"databombFields\", [], \"propertyArray\", \"Multi Fields\", null, { autoExpand: FormField });\n\nconst payloadFormat = Databomb.prototype.format;\nDatabomb.prototype.format = function (this: Databomb, _?) {\n const retVal = payloadFormat.apply(this, arguments);\n if (arguments.length) {\n this.updateJsonData();\n }\n return retVal;\n};\n\nconst databombPayloadOrig = Databomb.prototype.payload;\nDatabomb.prototype.payload = function (this: Databomb, _?) {\n const retVal = databombPayloadOrig.apply(this, arguments);\n if (arguments.length) {\n this.updateJsonData();\n }\n return retVal;\n};\n\nexport const emptyDatabomb = new Databomb().id(\"Empty\").payload(\"[]\");\n\nexport class DatasourceAdapt implements IDatasource {\n private _activity: Activity;\n\n constructor(activity: Activity) {\n this._activity = activity || emptyDatabomb;\n }\n\n exec(): Promise<void> {\n return this._activity.refreshMeta().then(() => {\n return this._activity.exec();\n });\n }\n\n id(): string {\n return this._activity.id();\n }\n hash(more: { [key: string]: any } = {}): string {\n return this._activity.hash(more);\n }\n label(): string {\n return this._activity.label();\n }\n outFields(): DDL2.IField[] {\n return this._activity && this._activity.outFields ? this._activity.outFields() as DDL2.IField[] : [];\n }\n total(): number {\n return this._activity ? this._activity.outData().length : 0;\n }\n fetch(from: number, count: number): Promise<ReadonlyArray<object>> {\n return this.exec().then(() => {\n const data = this._activity.outData();\n if (from === 0 && data.length <= count) {\n return Promise.resolve(data);\n }\n return Promise.resolve(data.slice(from, from + count));\n });\n }\n}\n","import { Result, Workunit, XSDXMLNode } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { AsyncOrderedQueue, debounce, hashSum } from \"@hpcc-js/util\";\nimport { ElementContainer } from \"../model/element.ts\";\nimport { schemaRow2IField } from \"./activity.ts\";\nimport { Datasource, DatasourceRef } from \"./datasource.ts\";\n\nexport abstract class ESPResult extends Datasource {\n protected _result: Result;\n protected _schema: XSDXMLNode[] = [];\n protected _meta: DDL2.IField[] = [];\n protected _total: number;\n private _data: ReadonlyArray<object> = [];\n\n constructor(protected _ec: ElementContainer) {\n super();\n this\n .samples(this._ec.samples())\n .sampleSize(this._ec.sampleSize())\n ;\n }\n\n hash(more: object = {}): string {\n return hashSum({\n samples: this.samples(),\n sampleSize: this.sampleSize(),\n ...more\n });\n }\n\n abstract _createResult(): Result;\n\n _prevMetaHash: string;\n refreshMetaPromise: Promise<void>;\n refreshMeta(): Promise<void> {\n if (this._prevMetaHash !== this.hash()) {\n this._prevMetaHash = this.hash();\n delete this.refreshMetaPromise;\n }\n if (!this.refreshMetaPromise) {\n this.refreshMetaPromise = super.refreshMeta().then(() => {\n this._result = this._createResult();\n if (this._result) {\n return this._result.refresh();\n }\n throw new Error(\"No valid result\");\n }).then(result => {\n this._total = result.Total;\n this._schema = result.fields();\n this._meta = this._meta && this._meta.length ? this._meta : this._schema.map(schemaRow2IField);\n }).catch(e => {\n this._total = 0;\n this._schema = [];\n this._meta = [];\n });\n }\n return this.refreshMetaPromise;\n }\n\n responseFields(): DDL2.IField[];\n responseFields(_: DDL2.IField[]): this;\n responseFields(_?: DDL2.IField[]): ReadonlyArray<DDL2.IField> | this {\n if (!arguments.length) return this._meta;\n this._meta = _;\n this.refreshMeta();\n return this;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => this.responseFields();\n }\n\n exec(): Promise<void> {\n return this._exec();\n }\n\n private _prevExecHash: string;\n private _exec = debounce((): Promise<void> => {\n if (this._prevExecHash !== this.hash()) {\n this._prevExecHash = this.hash();\n return super.exec().then(() => {\n return this.sample();\n }).then(response => {\n this._data = this.fixInt64(response);\n }).catch(e => {\n this._data = [];\n });\n } else {\n return Promise.resolve();\n }\n });\n\n inData(): ReadonlyArray<object> {\n return this._data;\n }\n\n computeData(): ReadonlyArray<object> {\n return this._data;\n }\n\n total(): number {\n return this._total;\n }\n\n // ---\n async fetch(from: number, count: number): Promise<any[]> {\n if (count > this.samples() * this.sampleSize()) {\n return this.sample();\n }\n return this._fetch(from, count);\n }\n\n private _fetchQ = new AsyncOrderedQueue();\n private _fetch(from: number, count: number): Promise<any[]> {\n return this._fetchQ.push(\n this._result ? this._result\n .fetchRows(from, count)\n .catch(e => {\n return [];\n }) :\n Promise.resolve([])\n );\n }\n\n private sample = debounce((samples: number = this.samples(), sampleSize: number = this.sampleSize()): Promise<any[]> => {\n const pages: Array<Promise<any[]>> = [];\n if (samples * sampleSize >= this.total()) {\n pages.push(this._fetch(0, this.total()));\n } else {\n const lastPage = this.total() - sampleSize;\n for (let i = 0; i < samples; ++i) {\n pages.push(this._fetch(Math.floor(i * lastPage / samples), sampleSize));\n }\n }\n return Promise.all(pages).then(responses => {\n let retVal2: any[] = [];\n for (const response of responses) {\n retVal2 = retVal2.concat(response);\n }\n return retVal2;\n });\n });\n}\nESPResult.prototype._class += \" ESPResult\";\n\nexport interface ESPResult {\n samples(): number;\n samples(_: number): this;\n sampleSize(): number;\n sampleSize(_: number): this;\n}\n\nexport class WUResult extends ESPResult {\n\n _origWu;\n _origResultName;\n\n declare _wu: WU;\n declare _resultName: string;\n\n constructor(_ec: ElementContainer) {\n super(_ec);\n this._wu = new WU(this._ec);\n }\n\n url(): string {\n return this._wu.url();\n }\n\n wuid(): string {\n return this._wu.wuid();\n }\n\n toDDL(): DDL2.IWUResult {\n return {\n type: \"wuresult\",\n id: this.id(),\n url: this._wu.url(),\n wuid: this.wuid(),\n outputs: {\n [this.resultName()]: {\n fields: this.responseFields()\n }\n }\n };\n }\n\n fromDDL(ddl: DDL2.IWUResult, skipID = false): this {\n if (ddl.outputs[this.resultName()]) {\n return this.responseFields(ddl.outputs[this.resultName()].fields);\n }\n return this;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.IWUResult, wu: WU, resultName: string, skipID = false): WUResult {\n return new WUResult(ec)\n .wu(wu)\n .resultName(resultName)\n .fromDDL(ddl)\n ;\n }\n\n _createResult(): Result {\n if (this._wu.url() && this.wuid() && this.resultName()) {\n return Result.attach({ baseUrl: this._wu.url(), hookSend: this._ec.hookSend() }, this.wuid(), this.resultName());\n }\n return undefined;\n }\n\n sourceHash(): string {\n return super.hash({\n wuid: this.wuid()\n });\n }\n\n hash(more: object): string {\n return super.hash({\n ddl: this.toDDL()\n });\n }\n\n label(): string {\n return `${this.wuid()}\\n${this.resultName()}`;\n }\n}\nWUResult.prototype._class += \" WUResult\";\n\nexport interface WUResult {\n wu(): WU;\n wu(_: WU): this;\n resultName(): string;\n resultName(_: string): this;\n}\n\nexport class WU extends Datasource {\n _origUrl;\n _origWuid;\n\n protected _workunit: Workunit;\n protected _outputs: { [id: string]: WUResult } = {};\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IWUResult {\n const ddlOutputs: DDL2.OutputDict = {};\n for (const resultName in this._outputs) {\n ddlOutputs[resultName] = {\n fields: this._outputs[resultName].responseFields()\n };\n }\n return {\n type: \"wuresult\",\n id: this.id(),\n url: this.url(),\n wuid: this.wuid(),\n outputs: ddlOutputs\n };\n }\n\n fromDDL(ddl: DDL2.IWUResult, skipID = false): this {\n (skipID ? this : this.id(ddl.id))\n .url(ddl.url)\n .wuid(ddl.wuid)\n ;\n const wuResults: { [id: string]: WUResult } = {};\n for (const resultName in ddl.outputs) {\n wuResults[resultName] = WUResult.fromDDL(this._ec, ddl, this, resultName);\n }\n this._outputs = wuResults;\n return this;\n }\n\n static fromDDL(elementContainer: ElementContainer, ddl: DDL2.IWUResult, skipID = false): WU {\n return new WU(elementContainer).fromDDL(ddl, skipID);\n }\n\n hash(): string {\n return hashSum({\n url: this.url(),\n wuid: this.wuid()\n });\n }\n\n label(): string {\n return this.wuid();\n }\n\n outputs(): WUResult[] {\n const retVal = [];\n for (const resultName in this._outputs) {\n retVal.push(this._outputs[resultName]);\n }\n return retVal;\n }\n\n outputDDL(): DDL2.OutputDict {\n const retVal: DDL2.OutputDict = {};\n for (const resultName in this._outputs) {\n retVal[resultName] = {\n fields: this._outputs[resultName].outFields() as DDL2.IField[]\n };\n }\n return retVal;\n }\n\n output(id: string): WUResult {\n return this._outputs[id];\n }\n\n private _prevSourceHash: string;\n private refreshMetaPromise: Promise<void>;\n private _resultNames: string[] = [];\n refreshMeta(): Promise<void> {\n if (!this.url() || !this.wuid()) {\n return Promise.resolve();\n }\n if (this._prevSourceHash !== this.hash()) {\n this._prevSourceHash = this.hash();\n delete this.refreshMetaPromise;\n }\n if (!this.refreshMetaPromise) {\n this.refreshMetaPromise = super.refreshMeta().then(() => {\n this._workunit = Workunit.attach({ baseUrl: this.url(), hookSend: this._ec.hookSend() }, this.wuid());\n return this._workunit.fetchResults();\n }).then(results => {\n this._resultNames = results.map(r => r.Name);\n }).catch(e => {\n });\n }\n return this.refreshMetaPromise;\n }\n\n resultNames(): string[] {\n return this._resultNames;\n }\n}\nWU.prototype._class += \" WU\";\n\nexport interface WU {\n url(): string;\n url(_: string): this;\n wuid(): string;\n wuid(_: string): this;\n}\n\nexport class WUResultRef extends DatasourceRef {\n\n datasource(): WUResult;\n datasource(_: WUResult): this;\n datasource(_?: WUResult): this | WUResult {\n return super.datasource.apply(this, arguments);\n }\n\n resultName(): string;\n resultName(_: string): this;\n resultName(_?: string): string | this {\n if (!arguments.length) return this.datasource().resultName();\n this.datasource().resultName(_);\n return this;\n }\n\n toDDL(): DDL2.IWUResultRef {\n return {\n id: this.datasource().wu().id(),\n output: this.resultName()\n };\n }\n}\nWUResultRef.prototype._class += \" WUResultRef\";\n\nESPResult.prototype.publish(\"samples\", 10, \"number\", \"Number of samples\");\nESPResult.prototype.publish(\"sampleSize\", 100, \"number\", \"Sample size\");\n\nWUResult.prototype.publish(\"wu\", null, \"widget\", \"Workunit\");\nWUResult.prototype.publish(\"resultName\", \"\", \"set\", \"Result Name\", function (this: WUResult): string[] {\n return this._wu !== undefined ? this._wu.resultNames() : [];\n});\n\nWUResult.prototype._origWu = WUResult.prototype.wu;\nWUResult.prototype.wu = function (this: WUResult, _?) {\n const retVal = WUResult.prototype._origWu.apply(this, arguments);\n if (_ !== undefined) {\n this._wu.refreshMeta();\n }\n return retVal;\n};\n\nWUResult.prototype._origResultName = WUResult.prototype.resultName;\nWUResult.prototype.resultName = function (this: WUResult, _?) {\n const prev = this._resultName;\n const retVal = WUResult.prototype._origResultName.apply(this, arguments);\n if (_ !== undefined && prev !== _) {\n this.responseFields([]);\n }\n return retVal;\n};\n\nWU.prototype.publish(\"url\", \"\", \"string\", \"ESP Url (http://x.x.x.x:8010)\");\nWU.prototype.publish(\"wuid\", \"\", \"string\", \"Workunit ID\");\n\nWU.prototype._origUrl = WU.prototype.url;\nWU.prototype.url = function (this: WU, _?) {\n const retVal = WU.prototype._origUrl.apply(this, arguments);\n if (_ !== undefined) {\n this.refreshMeta();\n }\n return retVal;\n};\n\nWU.prototype._origWuid = WU.prototype.wuid;\nWU.prototype.wuid = function (this: WU, _?) {\n const retVal = WU.prototype._origWuid.apply(this, arguments);\n if (_ !== undefined) {\n this.refreshMeta();\n }\n return retVal;\n};","import { Result } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { ElementContainer } from \"../model/element.ts\";\nimport { ESPResult } from \"./wuresult.ts\";\n\nexport class LogicalFile extends ESPResult {\n\n constructor(_ec: ElementContainer) {\n super(_ec);\n }\n\n toDDL(): DDL2.ILogicalFile {\n return {\n type: \"logicalfile\",\n id: this.id(),\n url: this.url(),\n logicalFile: this.logicalFile(),\n fields: this.responseFields()\n };\n }\n\n fromDDL(ddl: DDL2.ILogicalFile, skipID = false): this {\n (skipID ? this : this.id(ddl.id))\n .url(ddl.url)\n .logicalFile(ddl.logicalFile)\n ;\n return this;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.ILogicalFile, skipID = false): LogicalFile {\n return new LogicalFile(ec).fromDDL(ddl, skipID);\n }\n\n _createResult(): Result {\n return Result.attachLogicalFile({ baseUrl: this.url(), hookSend: this._ec.hookSend() }, this.nodeGroup(), this.logicalFile());\n }\n\n sourceHash(): string {\n return super.hash({\n logicalFile: this.logicalFile()\n });\n }\n\n hash(more: object): string {\n return super.hash({\n ddl: this.toDDL()\n });\n }\n\n label(): string {\n return `${this.logicalFile()}`;\n }\n}\nLogicalFile.prototype._class += \" LogicalFile\";\n\nexport interface LogicalFile {\n url(): string;\n url(_: string): this;\n nodeGroup(): string;\n nodeGroup(_: string): this;\n logicalFile(): string;\n logicalFile(_: string): this;\n}\nLogicalFile.prototype.publish(\"url\", \"\", \"string\", \"ESP Url (http://x.x.x.x:8010)\");\nLogicalFile.prototype.publish(\"nodeGroup\", \"\", \"string\", \"Node Group\");\nLogicalFile.prototype.publish(\"logicalFile\", \"\", \"string\", \"Logical File Name\");","import { PropertyExt } from \"@hpcc-js/common\";\nimport { createConnection } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { AsyncOrderedQueue, compare, hashSum } from \"@hpcc-js/util\";\nimport { Element, ElementContainer } from \"../model/element.ts\";\nimport { IActivityError, ReferencedFields } from \"./activity.ts\";\nimport { rowToFields } from \"./databomb.ts\";\nimport { Datasource, DatasourceRef } from \"./datasource.ts\";\n\nexport class RestField extends PropertyExt {\n protected _owner: RestService;\n\n constructor() {\n super();\n }\n\n toDDL(): DDL2.IFieldString {\n return {\n type: \"string\",\n id: this.fieldID()\n };\n }\n\n fromDDL(ddl: DDL2.IFieldString): this {\n return this\n .fieldID(ddl.id)\n ;\n }\n\n static fromDDL(ddl: DDL2.IFieldString): RestField {\n return new RestField().fromDDL(ddl);\n }\n\n owner(): RestService;\n owner(_: RestService): this;\n owner(_?: RestService): RestService | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.fieldID();\n }\n}\n\nexport class RestService extends Datasource {\n\n private _responseFields: { [outputID: string]: DDL2.IField[] } = {};\n\n constructor(readonly _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IRestService {\n return {\n type: \"rest\",\n id: this.id(),\n url: this.url(),\n action: this.action(),\n mode: this.mode(),\n inputs: this.validRequestFields().map(rf => rf.toDDL()),\n outputs: this.outputDDL()\n };\n }\n\n fromDDL(ddl: DDL2.IRestService, skipID = false): this {\n (skipID ? this : this.id(ddl.id))\n .url(ddl.url)\n .action(ddl.action)\n .mode(ddl.mode || \"get\")\n .requestFields(ddl.inputs.map(RestField.fromDDL))\n ;\n for (const key in ddl.outputs) {\n this.responseFields(key, ddl.outputs[key].fields);\n }\n return this;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.IRestService, skipID = false): RestService {\n return new RestService(ec).fromDDL(ddl, skipID);\n }\n\n hash(more: object = {}): string {\n return hashSum({\n url: this.url(),\n action: this.action(),\n mode: this.mode(),\n ...more\n });\n }\n\n label(): string {\n return this.action();\n }\n\n responseFields(resultName: string): DDL2.IField[];\n responseFields(resultName: string, _: DDL2.IField[]): this;\n responseFields(resultName: string, _?: DDL2.IField[]): DDL2.IField[] | this {\n if (arguments.length === 1) return this._responseFields[resultName] || [];\n this._responseFields[resultName] = _;\n return this;\n }\n\n validRequestFields(): RestField[] {\n return this.requestFields().filter(f => f.valid());\n }\n\n private _prevRequestHash;\n private _prevPromise;\n private _submitQ = new AsyncOrderedQueue();\n submit(request: { [key: string]: any }): Promise<{ [key: string]: any }> {\n const requestHash = hashSum(request);\n if (!this._prevPromise || this._prevRequestHash !== requestHash) {\n this._prevRequestHash = requestHash;\n const conn = createConnection({ baseUrl: this.url(), type: this.mode() });\n this._prevPromise = this._submitQ.push(conn.send(this.action(), request));\n }\n return this._prevPromise;\n }\n\n resultNames(): string[] {\n const retVal: string[] = [];\n for (const key in this._responseFields) {\n retVal.push(key);\n }\n return retVal;\n }\n\n outputDDL(): DDL2.OutputDict {\n const retVal: DDL2.OutputDict = {};\n this.resultNames().forEach(resultName => {\n retVal[resultName] = {\n fields: this._responseFields[resultName]\n };\n });\n return retVal;\n }\n}\nRestService.prototype._class += \" RestService\";\n\nexport class RestResult extends Datasource {\n\n _origService;\n\n declare _service: RestService;\n\n constructor(private _ec: ElementContainer) {\n super();\n this._service = new RestService(this._ec);\n }\n\n validRequestFields(): RestField[] {\n return this.service().validRequestFields();\n }\n\n toDDL(): DDL2.IRestService {\n return this.service().toDDL();\n }\n\n fromDDL(ddl: DDL2.IRestService): this {\n this.service().fromDDL(ddl);\n return this;\n }\n\n static fromDDL(ec: ElementContainer, rs: RestService, resultName: string): RestResult {\n return new RestResult(ec)\n .id(`${rs.id()}_${resultName}`)\n .service(rs)\n .resultName(resultName)\n ;\n }\n\n serviceID(): string {\n return `${this.service().url()}/${this.service().action()}}`;\n }\n\n sourceHash(): string {\n return this.service().hash();\n }\n\n requestFields(): DDL2.IField[] {\n return this.service().requestFields().map(rf => rf.toDDL());\n }\n\n responseFields(): DDL2.IField[];\n responseFields(_: DDL2.IField[]): this;\n responseFields(_?: DDL2.IField[]): this | DDL2.IField[] {\n if (!arguments.length) return this.service().responseFields(this.resultName());\n this.service().responseFields(this.resultName(), _);\n return this;\n }\n\n hash(more: object = {}): string {\n return hashSum({\n source: this.sourceHash(),\n resultName: this.resultName(),\n ...more\n });\n }\n\n label(): string {\n return `${this.service().label()}\\n${this.resultName()}`;\n }\n\n private _jsonData: object[] = [];\n private jsonDataFields(): DDL2.IField[] {\n if (!this._jsonData || !this._jsonData.length) return [];\n const retVal = rowToFields(this._jsonData[0], this._jsonData);\n this.responseFields(retVal);\n return retVal;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => this.jsonDataFields();\n }\n\n computeData(): ReadonlyArray<object> {\n return this._jsonData;\n }\n\n submit(request: { [key: string]: any }): Promise<{ [key: string]: any }> {\n return this.service().submit(request).then(response => {\n const resultName = this.resultName();\n const resultFields = resultName ? resultName.split(\".\") : [];\n for (const field of resultFields) {\n response = (response || {})[field];\n }\n this._jsonData = response as object[];\n return response;\n });\n }\n\n formatRequest() {\n const request = {};\n this.service().validRequestFields().forEach(f => {\n request[f.fieldID()] = \"\";\n });\n return request;\n }\n\n exec(): Promise<void> {\n return this.submit(this.formatRequest()).then(response => { });\n }\n}\nRestResult.prototype._class += \" RestResult\";\n\nexport class Param extends PropertyExt {\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.source_valid()) {\n retVal.push({\n source: `${prefix}.source.${this.source()}`,\n msg: `Invalid source: \"${this.source()}\"`,\n hint: `expected: ${JSON.stringify(this.visualizationIDs())}`\n });\n }\n if (!this.remoteField_valid()) {\n retVal.push({\n source: `${prefix}.remoteField`,\n msg: `Invalid remoteField: \"${this.remoteField()}\"`,\n hint: `expected: ${JSON.stringify(this.sourceOutFields())}`\n });\n }\n if (!this.value_valid()) {\n retVal.push({\n source: `${prefix}.value`,\n msg: `Invalid value: \"${this.value()}\"`,\n hint: \"expected: any value.\"\n });\n }\n return retVal;\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IRequestField {\n return {\n source: this.source(),\n remoteFieldID: this.remoteField(),\n localFieldID: this.localField(),\n value: this.value()\n };\n }\n\n fromDDL(ddl: DDL2.IRequestField): this {\n return this\n .source(ddl.source)\n .remoteField(ddl.remoteFieldID)\n .localField(ddl.localFieldID)\n .value(ddl.value)\n ;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.IRequestField): Param {\n return new Param(ec).fromDDL(ddl);\n }\n\n hash() {\n return hashSum({\n label: this.localField(),\n source: this.source(),\n sourceField: this.remoteField()\n });\n }\n\n visualizationIDs() {\n return this._ec.elementIDs();\n }\n\n sourceFields() {\n return this.sourceOutFields().map(field => field.id);\n }\n\n sourceViz(): Element {\n return this._ec.element(this.source());\n }\n\n sourceOutFields(): ReadonlyArray<DDL2.IField> {\n return this.sourceViz().hipiePipeline().selectionFields();\n }\n\n sourceSelection(): any[] {\n return this.sourceViz().selection();\n }\n\n calcValue(): Array<string | number | boolean> {\n if (this.source_exists() && this.remoteField_exists()) {\n const sourceSelection = this.sourceSelection();\n return sourceSelection.map(row => row[this.remoteField()]);\n } else if (this.value_exists()) {\n return [this.value()];\n }\n return [\"\"];\n }\n\n exists(): boolean {\n return this.localField_exists() && ((this.source_exists() && this.remoteField_exists()) || this.value_exists());\n }\n}\nParam.prototype._class += \" Param\";\n\nexport class RestResultRef extends DatasourceRef {\n\n serviceID(): string {\n return this.datasource().serviceID();\n }\n\n private _data: ReadonlyArray<object> = [];\n\n datasource(): RestResult;\n datasource(_: RestResult): this;\n datasource(_?: RestResult): this | RestResult {\n return super.datasource.apply(this, arguments);\n }\n\n url(): string {\n return this.datasource().service().url();\n }\n\n action(): string {\n return this.datasource().service().action();\n }\n\n resultName(): string {\n return this.datasource().resultName();\n }\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const filter of this.validParams()) {\n retVal = retVal.concat(filter.validate(\"request\"));\n }\n return retVal;\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IRoxieServiceRef {\n return {\n id: this.datasource().service().id(),\n output: this.resultName(),\n request: this.validParams().map((vp): DDL2.IRequestField => {\n return {\n source: vp.source(),\n remoteFieldID: vp.remoteField(),\n localFieldID: vp.localField(),\n value: vp.value()\n };\n })\n };\n }\n\n sourceHash(): string {\n return this.datasource().hash();\n }\n\n requestFieldRefs(): DDL2.IRequestField[];\n requestFieldRefs(_: DDL2.IRequestField[]): this;\n requestFieldRefs(_?: DDL2.IRequestField[]): DDL2.IRequestField[] | this {\n if (!arguments.length) return this.validParams().map(param => param.toDDL());\n this.request(_.map(fc => Param.fromDDL(this._ec, fc)));\n return this;\n }\n\n requestFields(): DDL2.IField[] {\n return this.datasource().requestFields();\n }\n\n responseFields(): DDL2.IField[] {\n return this.datasource().responseFields();\n }\n\n hash(): string {\n return this.datasource().hash({\n resultName: this.resultName(),\n request: this.formatRequest()\n });\n }\n\n label(): string {\n return `${this.datasource().label()}\\n${this.datasource().resultName()}`;\n }\n\n elementIDs() {\n return this._ec.elementIDs();\n }\n\n element(source) {\n return this._ec.element(source);\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n const localFieldIDs: string[] = [];\n for (const param of this.validParams()) {\n const filterSource = param.sourceViz().hipiePipeline();\n if (!refs.inputs[this.id()]) {\n refs.inputs[this.id()] = [];\n }\n refs.inputs[this.id()].push(param.localField());\n filterSource.resolveFields(refs, [param.remoteField()]);\n }\n super.resolveFields(refs, localFieldIDs);\n }\n\n validParams() {\n return this.request().filter(param => param.exists());\n }\n\n refreshMeta(): Promise<void> {\n return this.datasource().refreshMeta().then(() => {\n const oldParams = this.request();\n const diffs = compare(oldParams.map(p => p.localField()), this.datasource().validRequestFields().map(ff => ff.fieldID()));\n const newParams = oldParams.filter(op => diffs.update.indexOf(op.localField()) >= 0);\n this.request(newParams.concat(diffs.enter.map(label => new Param(this._ec).localField(label))));\n });\n }\n\n updatedBy(): string[] {\n return this.validParams().map(param => param.source());\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return this.datasource().computeFields(inFields);\n }\n\n formatRequest(): { [key: string]: any } {\n const request = this.datasource().formatRequest();\n this.request().forEach(f => {\n if (request[f.localField()] !== undefined) {\n request[f.localField()] = f.calcValue() || request[f.localField()];\n }\n });\n return request;\n }\n\n private _prevRequestHash;\n private _prevRequestPromise;\n exec(): Promise<void> {\n const request = this.formatRequest();\n const requestHash = hashSum({ hash: this.hash(), request });\n if (this._prevRequestHash !== requestHash) {\n this._prevRequestHash = requestHash;\n this._prevRequestPromise = this.datasource().submit(request).then((response: { [key: string]: any }) => {\n this._data = this.fixInt64(response);\n return this._data;\n });\n }\n return this._prevRequestPromise;\n }\n\n inData(): ReadonlyArray<object> {\n return this._data;\n }\n\n computeData(): ReadonlyArray<object> {\n return this._data;\n }\n}\nRestResultRef.prototype._class += \" RestResultRef\";\n\nexport interface RestField {\n fieldID(): string;\n fieldID(_: string): this;\n}\n\nRestField.prototype.publish(\"fieldID\", \"\", \"string\", \"RestField Label\");\n\nexport interface RestService {\n url(): string;\n url(_: string): this;\n action(): string;\n action(_: string): this;\n mode(): \"get\" | \"post\";\n mode(_: \"get\" | \"post\"): this;\n requestFields(): RestField[];\n requestFields(_: RestField[]): this;\n}\n\nRestService.prototype.publish(\"url\", \"\", \"string\", \"REST Url\");\nRestService.prototype.publish(\"action\", \"\", \"string\", \"Query Set\");\nRestService.prototype.publish(\"mode\", \"get\", \"set\", \"Request mode\", [\"get\", \"post\"]);\nRestService.prototype.publish(\"requestFields\", [], \"propertyArray\", \"Multi Fields\", null, { autoExpand: RestField });\n\nexport interface RestResult {\n service(): RestService;\n service(_: RestService): this;\n resultName(): string;\n resultName(_: string): this;\n}\n\nRestResult.prototype.publish(\"service\", null, \"widget\", \"Rest service\");\nRestResult.prototype.publish(\"resultName\", \"\", \"string\", \"Result Name\");\n\nRestResult.prototype._origService = RestResult.prototype.service;\nRestResult.prototype.service = function (this: RestResult, _?) {\n const retVal = RestResult.prototype._origService.apply(this, arguments);\n if (_ !== undefined) {\n this._service.refreshMeta();\n }\n return retVal;\n};\n\nexport interface Param {\n localField(): string;\n localField(_: string): this;\n localField_exists(): boolean;\n source(): string;\n source(_: string): this;\n source_exists(): boolean;\n source_valid(): boolean;\n source_disabled(): boolean;\n remoteField(): string;\n remoteField(_: string): this;\n remoteField_exists(): boolean;\n remoteField_valid(): boolean;\n remoteField_disabled(): boolean;\n value(): string;\n value(_: string): this;\n value_exists(): boolean;\n value_valid(): boolean;\n value_disabled(): boolean;\n}\n\nParam.prototype.publish(\"localField\", null, \"string\", \"Label\");\nParam.prototype.publish(\"source\", null, \"set\", \"Activity\", function (this: Param) { return this.visualizationIDs(); }, {\n optional: true,\n disable: (w: Param): boolean => w.value_exists(),\n validate: (w: Param): boolean => w.source_disabled() || w.visualizationIDs().indexOf(w.source()) >= 0\n});\nParam.prototype.publish(\"remoteField\", null, \"set\", \"Source Field\", function (this: Param) { return this.sourceFields(); }, {\n optional: true,\n disable: (w: Param): boolean => !w.source_exists() || w.value_exists(),\n validate: (w: Param): boolean => w.remoteField_disabled() || w.sourceFields().indexOf(w.remoteField()) >= 0\n});\nParam.prototype.publish(\"value\", null, \"string\", \"Static Value\", null, {\n optional: true,\n disable: (w: Param): boolean => w.source_exists(),\n validate: (w: Param): boolean => w.value_disabled() || w.value_exists()\n});\n\nexport interface RestResultRef {\n request(): Param[];\n request(_: Param[]): this;\n}\n\nRestResultRef.prototype.publish(\"request\", [], \"propertyArray\", \"Request Fields\");\n","import { Query as CommsQuery } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { AsyncOrderedQueue, compare, hashSum } from \"@hpcc-js/util\";\nimport { ElementContainer } from \"../model/element.ts\";\nimport { IActivityError, ReferencedFields } from \"./activity.ts\";\nimport { Datasource, DatasourceRef } from \"./datasource.ts\";\nimport { Param } from \"./rest.ts\";\n\nfunction parseUrl(_: string): { url: string, querySet: string, queryID: string } {\n // \"http://10.241.100.157:8002/WsEcl/submit/query/roxie/carmigjx_govbisgsavi.Ins4621360_Service_00000006/json\",\n const parts = _.split(\"/WsEcl/submit/query/\");\n if (parts.length < 2) throw new Error(`Invalid roxie URL: ${_}`);\n const urlParts = parts[0].split(\":\");\n if (urlParts.length < 3) throw new Error(`Invalid roxie URL: ${_}`);\n const roxieParts = parts[1].split(\"/\");\n if (roxieParts.length < 2) throw new Error(`Invalid roxie URL: ${_}`);\n return {\n url: `${urlParts[0]}:${urlParts[1]}:${urlParts[2] === \"18002\" ? \"18010\" : \"8010\"}`,\n querySet: roxieParts[0],\n queryID: roxieParts[1]\n };\n}\n\nfunction isHipieRequest(requestField: string): boolean {\n return requestField.length >= 8 && requestField.indexOf(\"_changed\") === requestField.length - 8;\n}\n\nfunction isHipieResponse(resultName: string): boolean {\n return (resultName.length >= 8 && resultName.indexOf(\"_changed\") === resultName.length - 8) ||\n ([\"HIPIE_DDL\", \"HIPIE_DDLGLOBALS\", \"hipieversion\"].indexOf(resultName) >= 0)\n ;\n}\n\nexport class RoxieService extends Datasource {\n private _query: CommsQuery;\n private _requestFields: DDL2.IField[];\n private _responseFields: { [outputID: string]: DDL2.IField[] } = {};\n private _type: \"roxie\" | \"hipie\" = \"roxie\";\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IRoxieService | DDL2.IHipieService {\n return {\n type: this._type,\n id: this.id(),\n url: this.url(),\n querySet: this.querySet(),\n queryID: this.queryID(),\n inputs: this.requestFields(),\n outputs: this.outputDDL()\n };\n }\n\n fromDDL(ddl: DDL2.IRoxieService | DDL2.IHipieService, skipID = false): this {\n this._type = ddl.type;\n (skipID ? this : this.id(ddl.id))\n .url(ddl.url)\n .querySet(ddl.querySet)\n .queryID(ddl.queryID)\n ;\n if (ddl.inputs && ddl.inputs.length) {\n this.requestFields(ddl.inputs);\n }\n for (const key in ddl.outputs) {\n this.responseFields(key, ddl.outputs[key].fields);\n }\n return this;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.IRoxieService | DDL2.IHipieService, skipID = false): RoxieService {\n return new RoxieService(ec).fromDDL(ddl, skipID);\n }\n\n hash(more: object = {}): string {\n return hashSum({\n url: this.url(),\n querySet: this.querySet(),\n queryId: this.queryID(),\n ignoreHipieRequest: this.ignoreHipieRequest(),\n ignoreHipieResponse: this.ignoreHipieResponse(),\n ...more\n });\n }\n\n label(): string {\n return this.queryID();\n }\n\n private _prevSourceHash: string;\n private refreshMetaPromise: Promise<void>;\n refreshMeta(): Promise<void> {\n if (this._prevSourceHash !== this.hash()) {\n this._prevSourceHash = this.hash();\n delete this.refreshMetaPromise;\n }\n if (!this.refreshMetaPromise) {\n const hasMeta = !!this._requestFields;\n this.refreshMetaPromise = new Promise<CommsQuery>((resolve, reject) => {\n const query = CommsQuery.attach({ baseUrl: this.url(), hookSend: this._ec.hookSend() }, this.querySet(), this.queryID());\n if (!hasMeta || this.ignoreHipieRequest() || this.ignoreHipieResponse()) {\n resolve(query.refresh());\n }\n resolve(query);\n }).then((query) => {\n this._query = query;\n if (!hasMeta || this.ignoreHipieRequest()) {\n this._requestFields = query.requestFields().filter(row => this._type === \"roxie\" || !isHipieRequest(row.id));\n }\n if (!hasMeta || this.ignoreHipieResponse()) {\n query.resultNames().filter(resultName => this._type === \"roxie\" || !isHipieResponse(resultName)).forEach(resultName => {\n this._responseFields[resultName] = query.resultFields(resultName);\n });\n }\n });\n }\n return this.refreshMetaPromise;\n }\n\n requestFields(): DDL2.IField[];\n requestFields(_: DDL2.IField[]): this;\n requestFields(_?: DDL2.IField[]): DDL2.IField[] | this {\n if (!arguments.length) return this._requestFields || [];\n this._requestFields = _;\n return this;\n }\n\n responseFields(resultName: string): DDL2.IField[];\n responseFields(resultName: string, _: DDL2.IField[]): this;\n responseFields(resultName: string, _?: DDL2.IField[]): DDL2.IField[] | this {\n if (arguments.length === 1) return this._responseFields[resultName] || [];\n this._responseFields[resultName] = _;\n return this;\n }\n\n private _prevRequestHash;\n private _prevPromise;\n private _submitQ = new AsyncOrderedQueue();\n submit(request: { [key: string]: any }): Promise<{ [key: string]: any }> {\n const requestHash = hashSum(request);\n if (!this._prevPromise || this._prevRequestHash !== requestHash) {\n this._prevRequestHash = requestHash;\n this._prevPromise = this._submitQ.push(this._query.submit(request));\n }\n return this._prevPromise;\n }\n\n resultNames(): string[] {\n const retVal: string[] = [];\n for (const key in this._responseFields) {\n retVal.push(key);\n }\n return retVal;\n }\n\n outputDDL(): DDL2.OutputDict {\n const retVal: DDL2.OutputDict = {};\n this.resultNames().forEach(resultName => {\n retVal[resultName] = {\n fields: this._responseFields[resultName]\n };\n });\n return retVal;\n }\n}\nRoxieService.prototype._class += \" RoxieService\";\n\nexport interface RoxieService {\n url(): string;\n url(_: string): this;\n querySet(): string;\n querySet(_: string): this;\n queryID(): string;\n queryID(_: string): this;\n ignoreHipieRequest(): boolean;\n ignoreHipieRequest(_: boolean): this;\n ignoreHipieResponse(): boolean;\n ignoreHipieResponse(_: boolean): this;\n}\n\nRoxieService.prototype.publish(\"url\", \"\", \"string\", \"ESP Url (http://x.x.x.x:8002)\");\nRoxieService.prototype.publish(\"querySet\", \"\", \"string\", \"Query Set\");\nRoxieService.prototype.publish(\"queryID\", \"\", \"string\", \"Query ID\");\nRoxieService.prototype.publish(\"ignoreHipieRequest\", false, \"boolean\", \"Ignore provided DDL request\");\nRoxieService.prototype.publish(\"ignoreHipieResponse\", false, \"boolean\", \"Ignore provided DDL response\");\n\nexport class RoxieResult extends Datasource {\n\n _origService;\n\n declare _service: RoxieService;\n\n constructor(private _ec: ElementContainer) {\n super();\n this._service = new RoxieService(this._ec);\n }\n\n toDDL(): DDL2.IRoxieService | DDL2.IHipieService {\n return this.service().toDDL();\n }\n\n fromDDL(ddl: DDL2.IRoxieService): this {\n this.service().fromDDL(ddl);\n return this;\n }\n\n static fromDDL(ec: ElementContainer, rs: RoxieService, resultName: string): RoxieResult {\n return new RoxieResult(ec)\n .id(`${rs.id()}_${resultName}`)\n .service(rs)\n .resultName(resultName)\n ;\n }\n\n serviceID(): string {\n return `${this.service().url()}/${this.service().querySet()}/${this.service().queryID()}`;\n }\n\n sourceHash(): string {\n return this.service().hash();\n }\n\n requestFields(): DDL2.IField[] {\n return this.service().requestFields();\n }\n\n responseFields(): DDL2.IField[];\n responseFields(_: DDL2.IField[]): this;\n responseFields(_?: DDL2.IField[]): this | DDL2.IField[] {\n if (!arguments.length) return this.service().responseFields(this.resultName());\n this.service().responseFields(this.resultName(), _);\n return this;\n }\n\n hash(more: object = {}): string {\n return hashSum({\n source: this.sourceHash(),\n resultName: this.resultName(),\n ...more\n });\n }\n\n label(): string {\n return `${this.service().label()}\\n${this.resultName()}`;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => this.service().responseFields(this.resultName());\n }\n\n refreshMeta(): Promise<void> {\n return this.service().refreshMeta();\n }\n\n submit(request: { [key: string]: any }): Promise<{ [key: string]: any }> {\n return this.service().submit(request);\n }\n}\nRoxieResult.prototype._class += \" RoxieResult\";\n\nexport interface RoxieResult {\n service(): RoxieService;\n service(_: RoxieService): this;\n resultName(): string;\n resultName(_: string): this;\n}\n\nRoxieResult.prototype.publish(\"service\", null, \"widget\", \"Roxie service\");\nRoxieResult.prototype.publish(\"resultName\", \"\", \"set\", \"Result Name\", function (this: RoxieResult): string[] {\n return this._service !== undefined ? this._service.resultNames() : [];\n});\n\nRoxieResult.prototype._origService = RoxieResult.prototype.service;\nRoxieResult.prototype.service = function (this: RoxieResult, _?) {\n const retVal = RoxieResult.prototype._origService.apply(this, arguments);\n if (_ !== undefined) {\n this._service.refreshMeta();\n }\n return retVal;\n};\n\nexport class RoxieResultRef extends DatasourceRef {\n\n serviceID(): string {\n return this.datasource().serviceID();\n }\n\n private _data: ReadonlyArray<object> = [];\n\n datasource(): RoxieResult;\n datasource(_: RoxieResult): this;\n datasource(_?: RoxieResult): this | RoxieResult {\n return super.datasource.apply(this, arguments);\n }\n\n url(): string {\n return this.datasource().service().url();\n }\n\n querySet(): string {\n return this.datasource().service().querySet();\n }\n\n queryID(): string {\n return this.datasource().service().queryID();\n }\n\n resultName(): string {\n return this.datasource().resultName();\n }\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const filter of this.validParams()) {\n retVal = retVal.concat(filter.validate(\"request\"));\n }\n return retVal;\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IRoxieServiceRef {\n return {\n id: this.datasource().service().id(),\n output: this.resultName(),\n request: this.validParams().map((vp): DDL2.IRequestField => {\n return {\n source: vp.source(),\n remoteFieldID: vp.remoteField(),\n localFieldID: vp.localField(),\n value: vp.value()\n };\n })\n };\n }\n\n sourceHash(): string {\n return this.datasource().hash();\n }\n\n requestFieldRefs(): DDL2.IRequestField[];\n requestFieldRefs(_: DDL2.IRequestField[]): this;\n requestFieldRefs(_?: DDL2.IRequestField[]): DDL2.IRequestField[] | this {\n if (!arguments.length) return this.validParams().map(param => param.toDDL());\n this.request(_.map(fc => Param.fromDDL(this._ec, fc)));\n return this;\n }\n\n requestFields(): DDL2.IField[] {\n return this.datasource().requestFields();\n }\n\n responseFields(): DDL2.IField[] {\n return this.datasource().responseFields();\n }\n\n hash(): string {\n return this.datasource().hash({\n resultName: this.resultName(),\n params: this.request().map(param => param.hash()),\n request: this.formatRequest()\n });\n }\n\n label(): string {\n return `${this.datasource().label()}\\n${this.datasource().resultName()}`;\n }\n\n elementIDs() {\n return this._ec.elementIDs();\n }\n\n element(source) {\n return this._ec.element(source);\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n const localFieldIDs: string[] = [];\n for (const param of this.validParams()) {\n localFieldIDs.push(param.localField());\n const filterSource = param.sourceViz().hipiePipeline();\n if (!refs.inputs[this.id()]) {\n refs.inputs[this.id()] = [];\n }\n refs.inputs[this.id()].push(param.localField());\n filterSource.resolveFields(refs, [param.remoteField()]);\n }\n super.resolveFields(refs, localFieldIDs);\n }\n\n validParams() {\n return this.request().filter(param => param.exists());\n }\n\n refreshMeta(): Promise<void> {\n return this.datasource().refreshMeta().then(() => {\n const oldParams = this.request();\n const diffs = compare(oldParams.map(p => p.localField()), this.datasource().requestFields().map(ff => ff.id));\n const newParams = oldParams.filter(op => diffs.update.indexOf(op.localField()) >= 0);\n this.request(newParams.concat(diffs.enter.map(label => new Param(this._ec).localField(label))));\n });\n }\n\n updatedBy(): string[] {\n return this.validParams().map(param => param.source());\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n return () => this.datasource().responseFields();\n }\n\n formatRequest(): { [key: string]: any } {\n const request: { [key: string]: any } = {};\n let hasRequest = false;\n const fields = this.datasource().requestFields();\n for (const param of this.validParams()) {\n const _value = param.calcValue();\n const field = fields.filter(row => row.id === param.localField())[0];\n let value;\n if (field.type === \"set\") {\n value = {\n Item: _value\n };\n } else {\n value = _value[0];\n }\n if (value !== undefined) {\n request[param.localField()] = value;\n }\n hasRequest = true;\n }\n if (!hasRequest) {\n request.refresh = true;\n }\n return request;\n }\n\n private _prevRequestHash;\n private _prevRequestPromise;\n exec(): Promise<void> {\n return super.exec().then(() => {\n const request = this.formatRequest();\n const requestHash = hashSum({ hash: this.hash(), request });\n if (this._prevRequestHash !== requestHash) {\n this._prevRequestHash = requestHash;\n this._prevRequestPromise = this.datasource().submit(request).then((response: { [key: string]: any }) => {\n const resultName = this.datasource().resultName();\n let result = response[resultName];\n if (!result) {\n // See: https://track.hpccsystems.com/browse/HPCC-21176 ---\n // \"Result 1\" => \"result_1\"\n result = response[resultName.toLowerCase().replace(/ /g, \"_\")];\n }\n return this.fixInt64(result);\n });\n }\n return this._prevRequestPromise;\n }).then(data => {\n this._data = data;\n });\n }\n\n inData(): ReadonlyArray<object> {\n return this._data;\n }\n\n computeData(): ReadonlyArray<object> {\n return this._data;\n }\n}\nRoxieResultRef.prototype._class += \" RoxieResultRef\";\n\nexport interface RoxieResultRef {\n request(): Param[];\n request(_: Param[]): this;\n}\n\nRoxieResultRef.prototype.publish(\"request\", [], \"propertyArray\", \"Request Fields\");\n\nexport class HipieResultRef extends RoxieResultRef {\n\n fullUrl(_: string): this {\n const info = parseUrl(_);\n this.datasource().service().url(info.url);\n this.datasource().service().querySet(info.querySet);\n this.datasource().service().queryID(info.queryID);\n return this;\n }\n\n formatRequest(): { [key: string]: any } {\n const _request = super.formatRequest();\n const request: { [key: string]: any } = {};\n for (const key in _request) {\n request[key] = _request[key];\n request[`${key}_changed`] = true;\n }\n return request;\n }\n}\nHipieResultRef.prototype._class += \" HipieResultRef\";","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { ElementContainer } from \"../model/element.ts\";\nimport { ActivitySelection, IActivityError } from \"./activity.ts\";\nimport { Databomb, emptyDatabomb } from \"./databomb.ts\";\nimport { DatasourceRef, DatasourceRefType } from \"./datasource.ts\";\nimport { Form } from \"./form.ts\";\nimport { LogicalFile } from \"./logicalfile.ts\";\nimport { RestResult, RestResultRef } from \"./rest.ts\";\nimport { HipieResultRef, RoxieResult, RoxieService } from \"./roxie.ts\";\nimport { WUResult, WUResultRef } from \"./wuresult.ts\";\n\nlet dsPickerID = 0;\nexport class DSPicker extends ActivitySelection {\n private _nullDatasource = emptyDatabomb;\n\n _origDatasourceID;\n _origDatasourceRef;\n\n declare _datasourceID: string; // DDL2.IDatasourceType;\n declare _datasourceRef: DatasourceRef;\n\n datasource(): DatasourceRefType {\n return this.datasourceRef().datasource();\n }\n\n refreshRef(id: string) {\n const ds: DatasourceRefType = this._ec.datasource(id);\n if (ds instanceof Databomb) {\n this.selection(new DatasourceRef().datasource(ds));\n } else if (ds instanceof Form) {\n this.selection(new DatasourceRef().datasource(ds));\n } else if (ds instanceof LogicalFile) {\n this.selection(new DatasourceRef().datasource(ds));\n } else if (ds instanceof RoxieService) {\n this.selection(new DatasourceRef().datasource(ds));\n } else if (ds instanceof WUResult) {\n this.selection(new WUResultRef().datasource(ds));\n } else if (ds instanceof RoxieResult) {\n this.selection(new HipieResultRef(this._ec).datasource(ds));\n } else if (ds instanceof RestResult) {\n this.selection(new RestResultRef(this._ec).datasource(ds));\n }\n }\n\n selection(): DatasourceRef;\n selection(_: DatasourceRef): this;\n selection(_?: DatasourceRef): DatasourceRef | this {\n const retVal = super.selection.apply(this, arguments);\n if (!arguments.length) return retVal || this._nullDatasource;\n if (this._datasourceID !== _.datasource().id()) {\n this._datasourceID = _.datasource().id();\n }\n return this;\n }\n\n validate(): IActivityError[] {\n return this.selection().validate();\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n this._id = `ds_${++dsPickerID}`;\n const ds = this._ec.datasources()[0];\n this.datasourceID(ds.id());\n }\n\n toDDL(): DDL2.IDatasourceRef {\n return {\n ...this.datasourceRef().toDDL(),\n id: this.datasourceID()\n };\n }\n\n // Activity overrides ---\n hash(more: { [key: string]: any } = {}): string {\n return super.hash({\n ...more\n });\n }\n\n datasourceIDs() {\n return this._ec.datasources().map(ds => {\n return {\n value: ds.id(),\n text: `${ds.label()} ${ds.id() !== ds.label() ? ` (${ds.id()})` : \"\"}`\n };\n });\n }\n}\nDSPicker.prototype._class += \" DSPicker\";\n\nexport interface DSPicker {\n datasourceID(): string;\n datasourceID(_: string): this;\n datasourceRef(): DatasourceRef;\n datasourceRef(_: DatasourceRef): this;\n}\n\nDSPicker.prototype.publish(\"datasourceID\", \"\", \"set\", \"Activity\", function (this: DSPicker) { return this.datasourceIDs(); }, { optional: false });\nDSPicker.prototype.publish(\"datasourceRef\", \"\", \"widget\", \"Activity\");\n\nDSPicker.prototype._origDatasourceID = DSPicker.prototype.datasourceID;\nDSPicker.prototype.datasourceID = function (this: DSPicker, _?) {\n const prev = this._datasourceID;\n const retVal = DSPicker.prototype._origDatasourceID.apply(this, arguments);\n if (_ !== undefined && prev !== _) {\n this.refreshRef(_);\n }\n return retVal;\n};\n\nDSPicker.prototype._origDatasourceRef = DSPicker.prototype.datasourceRef;\nDSPicker.prototype.datasourceRef = function (this: DSPicker, _?) {\n return ActivitySelection.prototype.selection.apply(this, arguments);\n};","import { PropertyExt } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { Element, ElementContainer } from \"../model/element.ts\";\nimport { Activity, IActivityError, ReferencedFields } from \"./activity.ts\";\n\nfunction createFilter(condition: DDL2.IMappingConditionType, lf: string, val: string | number): (localRow: any) => boolean {\n const isString = typeof val === \"string\";\n switch (condition) {\n case \"==\":\n return (localRow) => isString && typeof localRow[lf] === \"string\" ? localRow[lf].trim() === val : localRow[lf] === val;\n case \"!=\":\n return (localRow) => isString && typeof localRow[lf] === \"string\" ? localRow[lf].trim() !== val : localRow[lf] !== val;\n case \"<\":\n return (localRow) => localRow[lf] < val;\n case \"<=\":\n return (localRow) => localRow[lf] <= val;\n case \">\":\n return (localRow) => localRow[lf] > val;\n case \">=\":\n return (localRow) => localRow[lf] >= val;\n default:\n throw new Error(`Unknown filter condition: ${condition}`);\n }\n}\n\nexport class ColumnMapping extends PropertyExt {\n private _owner: RemoteFilter;\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.remoteField_valid()) {\n retVal.push({\n source: `${prefix}.remoteField`,\n msg: `Invalid remoteField: \"${this.remoteField()}\"`,\n hint: `expected: ${JSON.stringify(this.sourceOutFields())}`\n });\n }\n if (!this.localField_valid()) {\n retVal.push({\n source: `${prefix}.localField`,\n msg: `Invalid localField: \"${this.localField()}\"`,\n hint: `expected: ${JSON.stringify(this.localFields())}`\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): RemoteFilter;\n owner(_: RemoteFilter): this;\n owner(_?: RemoteFilter): RemoteFilter | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return this.localField_exists() || this.remoteField_exists();\n }\n\n toDDL(): DDL2.IMapping {\n return {\n remoteFieldID: this.remoteField(),\n localFieldID: this.localField(),\n condition: this.condition(),\n nullable: this.nullable()\n };\n }\n\n fromDDL(ddl: DDL2.IMapping): this {\n return this\n .remoteField(ddl.remoteFieldID)\n .localField(ddl.localFieldID)\n .condition(ddl.condition)\n .nullable(ddl.nullable)\n ;\n }\n\n static fromDDL(ddl: DDL2.IMapping): ColumnMapping {\n return new ColumnMapping().fromDDL(ddl);\n }\n\n hash() {\n return hashSum({\n remoteField: this.remoteField(),\n localField: this.localField(),\n condition: this.condition(),\n nullable: this.nullable()\n });\n }\n\n localFields(): string[] {\n return this._owner.inFields().map(field => field.id);\n }\n\n sourceOutFields(): string[] {\n return this._owner.sourceOutFields().map(field => field.id);\n }\n\n remoteValues(filterSelection: any[]): Array<number | string> {\n const rf = this.remoteField();\n return filterSelection.map(sel => {\n const retVal = sel[rf];\n if (typeof retVal === \"string\") {\n return retVal.trim();\n }\n return retVal;\n });\n }\n\n createFilterDescription(filterSelection: any[]): string {\n switch (this.condition()) {\n case \"in\":\n case \"range\":\n return `${this.localField()} ${this.condition()} [${this.remoteValues(filterSelection).join(\", \")}]`;\n default:\n return `${this.localField()} ${this.condition()} ${this.remoteValues(filterSelection)[0]}`;\n }\n }\n\n createFilter(filterSelection: any[]): (localRow: any) => boolean {\n const lf = this.localField();\n const fsArr = this.remoteValues(filterSelection);\n switch (this.condition()) {\n case \"range\":\n if (this.nullable() && (fsArr.length < 2 || fsArr[0] === fsArr[1])) {\n return (localRow) => true;\n }\n return (localRow) => localRow[lf] >= fsArr[0] && localRow[lf] <= fsArr[1];\n case \"in\":\n if (this.nullable() && fsArr.length === 0) {\n return (localRow) => true;\n }\n return (localRow) => fsArr.some(fs => typeof localRow[lf] === \"string\" ? localRow[lf].trim() === fs : localRow[lf] === fs);\n default:\n const fs0 = fsArr[0];\n if (this.nullable() && (fs0 === undefined || fs0 === null || fs0 === \"\")) {\n return (localRow) => true;\n }\n return createFilter(this.condition(), lf, fs0);\n }\n }\n}\nColumnMapping.prototype._class += \" ColumnMapping\";\n\nexport interface ColumnMapping {\n remoteField(): string;\n remoteField(_: string): this;\n remoteField_exists(): boolean;\n remoteField_valid(): boolean;\n localField(): string;\n localField(_: string): this;\n localField_exists(): boolean;\n localField_valid(): boolean;\n condition(): DDL2.IMappingConditionType;\n condition(_: DDL2.IMappingConditionType): this;\n nullable(): boolean;\n nullable(_: boolean): this;\n}\n\nexport class RemoteFilter extends PropertyExt {\n private _owner: Filters;\n\n validate(prefix: string): IActivityError[] {\n let retVal: IActivityError[] = [];\n if (!this.source_valid()) {\n retVal.push({\n source: `${prefix}.source.${this.source()}`,\n msg: `Invalid source: \"${this.source()}\"`,\n hint: `expected: ${JSON.stringify(this.visualizationIDs())}`\n });\n }\n if (this.source_exists() && this.validMappings().length === 0) {\n retVal.push({\n source: `${prefix}.source.${this.source()}`,\n msg: `Invalid mappings: \"${this.source()}\"`,\n hint: \"expected minimum of 1 mapping\"\n });\n }\n for (const mapping of this.validMappings()) {\n retVal = retVal.concat(mapping.validate(`${prefix}.${this.source()}.mappings`));\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): Filters;\n owner(_: Filters): this;\n owner(_?: Filters): Filters | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.source() && this.validMappings().length > 0;\n }\n\n toDDL(): DDL2.IFilterCondition {\n return {\n viewID: this.source(),\n mappings: this.ddlMappings()\n };\n }\n\n fromDDL(ddl: DDL2.IFilterCondition): this {\n return this\n .source(ddl.viewID)\n .ddlMappings(ddl.mappings)\n ;\n }\n\n static fromDDL(ddl: DDL2.IFilterCondition): RemoteFilter {\n return new RemoteFilter().fromDDL(ddl);\n }\n\n ddlMappings(): DDL2.IMapping[];\n ddlMappings(_: DDL2.IMapping[]): this;\n ddlMappings(_?: DDL2.IMapping[]): DDL2.IMapping[] | this {\n if (!arguments.length) return this.validMappings().map(mapping => mapping.toDDL());\n this.mappings(_.map(mapping => ColumnMapping.fromDDL(mapping)));\n return this;\n }\n\n visualizationIDs() {\n return this._owner.visualizationIDs();\n }\n\n hash(): string {\n return hashSum({\n source: this.source(),\n mappings: this.validMappings().map(mapping => mapping.hash()),\n selection: this.sourceSelection()\n });\n }\n\n validMappings(): ColumnMapping[] {\n return this.mappings().filter(mapping => mapping.valid());\n }\n\n appendMappings(mappings: Array<{ remoteField: string, localField: string, condition: DDL2.IMappingConditionType }>): this {\n for (const mapping of mappings) {\n this.mappings().push(new ColumnMapping()\n .owner(this)\n .remoteField(mapping.remoteField)\n .localField(mapping.localField)\n .condition(mapping.condition)\n );\n }\n return this;\n }\n\n inFields(): ReadonlyArray<DDL2.IField> {\n return this._owner.inFields();\n }\n\n sourceViz(): Element {\n return this._owner.visualization(this.source());\n }\n\n sourceOutFields(): ReadonlyArray<DDL2.IField> {\n return this.sourceViz().hipiePipeline().selectionFields();\n }\n\n sourceSelection(): any[] {\n return this.sourceViz().selection();\n }\n\n createFilter(): (localRow: any) => boolean {\n const selection = this.sourceSelection();\n const mappingFilters = this.validMappings().map(mapping => mapping.createFilter(selection));\n return (row: object): boolean => mappingFilters.every(mappingFilter => mappingFilter(row));\n }\n\n createFilterDescription(): string {\n const selection = this.sourceSelection();\n const mappingFilterDescs = this.validMappings().map(mapping => mapping.createFilterDescription(selection));\n return mappingFilterDescs.join(\", \");\n }\n}\nRemoteFilter.prototype._class += \" Filter\";\n\nexport interface RemoteFilter {\n source(): string;\n source(_: string): this;\n source_exists(): boolean;\n source_valid(): boolean;\n mappings(): ColumnMapping[];\n mappings(_: ColumnMapping[]): this;\n}\n\nexport class StaticFilter extends PropertyExt {\n private _owner: Filters;\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.localField_valid()) {\n retVal.push({\n source: `${prefix}.localField`,\n msg: `Invalid localField: \"${this.localField()}\"`,\n hint: `expected: ${JSON.stringify(this.localFields())}`\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): Filters;\n owner(_: Filters): this;\n owner(_?: Filters): Filters | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n coerceValue(): string | number;\n coerceValue(_: string | number): this;\n coerceValue(_?: string | number): string | number | this {\n if (arguments.length === 0) {\n switch (this.valueType()) {\n case \"number\":\n return +this.value();\n case \"string\":\n default:\n return \"\" + this.value();\n }\n }\n this.value(_);\n if (typeof _ === \"number\") {\n this.valueType(\"number\");\n } else {\n this.valueType(\"string\");\n }\n return this;\n }\n\n valid(): boolean {\n return this.localField_exists() && this.value_exists();\n }\n\n toDDL(): DDL2.IFilterStaticCondition {\n return {\n localFieldID: this.localField(),\n condition: this.condition(),\n value: this.coerceValue()\n };\n }\n\n fromDDL(ddl: DDL2.IFilterStaticCondition): this {\n return this\n .localField(ddl.localFieldID)\n .condition(ddl.condition)\n .coerceValue(ddl.value)\n ;\n }\n\n static fromDDL(ddl: DDL2.IFilterStaticCondition): StaticFilter {\n return new StaticFilter().fromDDL(ddl);\n }\n\n hash() {\n return hashSum({\n localField: this.localField(),\n condition: this.condition(),\n value: this.value(),\n valueType: this.valueType()\n });\n }\n\n localFields(): string[] {\n return this._owner.inFields().map(field => field.id);\n }\n\n createFilterDescription(): string {\n return `${this.localField()} ${this.condition()} ${this.coerceValue()}`;\n }\n\n createFilter(): (localRow: any) => boolean {\n return createFilter(this.condition(), this.localField(), this.coerceValue());\n }\n}\nStaticFilter.prototype._class += \" StaticFilter\";\n\nexport interface StaticFilter {\n localField(): string;\n localField(_: string): this;\n localField_exists(): boolean;\n localField_valid(): boolean;\n condition(): DDL2.IMappingConditionType;\n condition(_: DDL2.IMappingConditionType): this;\n value(): string | number | boolean;\n value(_: string | number | boolean): this;\n value_exists(): boolean;\n value_valid(): boolean;\n valueType(): \"number\" | \"string\";\n valueType(_: \"number\" | \"string\"): this;\n}\n\ntype FilterT = RemoteFilter | StaticFilter;\n\nexport class Filters extends Activity {\n static Filter = RemoteFilter;\n static Mapping = ColumnMapping;\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const filter of this.validFilters()) {\n retVal = retVal.concat(filter.validate(\"filter\"));\n }\n return retVal;\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n }\n\n toDDL(): DDL2.IFilter {\n return {\n type: \"filter\",\n conditions: this.conditions()\n };\n }\n\n fromDDL(ddl: DDL2.IFilter): this {\n return this\n .conditions(ddl.conditions)\n ;\n }\n\n static fromDDL(ec: ElementContainer, ddl: DDL2.IFilter): Filters {\n return new Filters(ec).fromDDL(ddl);\n }\n\n conditions(): DDL2.FilterCondition[];\n conditions(_: DDL2.FilterCondition[]): this;\n conditions(_?: DDL2.FilterCondition[]): DDL2.FilterCondition[] | this {\n if (!arguments.length) return this.validFilters().map(filter => filter.toDDL());\n const remoteFilters: RemoteFilter[] = [];\n const staticFilters: StaticFilter[] = [];\n _.forEach(fc => {\n if (DDL2.isIFilterCondition(fc)) {\n remoteFilters.push(RemoteFilter.fromDDL(fc));\n } else {\n staticFilters.push(StaticFilter.fromDDL(fc));\n }\n });\n this.remoteFilter(remoteFilters);\n this.staticFilter(staticFilters);\n return this;\n }\n\n visualizationIDs(): string[] {\n return this._ec.elementIDs();\n }\n\n visualization(sourceID: string | PropertyExt): Element {\n return this._ec.element(sourceID);\n }\n\n // Activity overrides ---\n hash(): string {\n return hashSum(this.validFilters().map(f => {\n return {\n filter: f.hash()\n };\n }));\n }\n\n exists(): boolean {\n return this.validFilters().length > 0;\n }\n\n updatedBy(): string[] {\n return this.validRemoteFilters().map(filter => filter.source());\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n const localFieldIDs: string[] = [];\n for (const filter of this.validRemoteFilters()) {\n const filterSource = filter.sourceViz().hipiePipeline();\n const remoteFieldIDs: string[] = [];\n for (const mapping of filter.validMappings()) {\n localFieldIDs.push(mapping.localField());\n remoteFieldIDs.push(mapping.remoteField());\n }\n filterSource.resolveFields(refs, remoteFieldIDs);\n }\n super.resolveInFields(refs, localFieldIDs);\n }\n\n exec(): Promise<void> {\n return super.exec();\n }\n\n computeData(): ReadonlyArray<object> {\n const data = super.computeData();\n if (data.length === 0 || !this.exists()) return data;\n const filters = this.validFilters().map(filter => filter.createFilter());\n return data.filter(row => {\n return filters.every(filter => filter(row));\n });\n }\n\n // --- --- ---\n validRemoteFilters(): RemoteFilter[] {\n return this.remoteFilter().filter(filter => filter.valid());\n }\n\n validStaticFilters(): StaticFilter[] {\n return this.staticFilter().filter(filter => filter.valid());\n }\n\n validFilters(): FilterT[] {\n return [...this.validRemoteFilters(), ...this.validStaticFilters()];\n }\n}\nFilters.prototype._class += \" Filters\";\n\nexport interface Filters {\n remoteFilter(): RemoteFilter[];\n remoteFilter(_: RemoteFilter[]): this;\n staticFilter(): StaticFilter[];\n staticFilter(_: StaticFilter[]): this;\n}\n\nColumnMapping.prototype.publish(\"remoteField\", null, \"set\", \"Filter Fields\", function (this: ColumnMapping) { return this.sourceOutFields(); }, {\n optional: true,\n disable: (w: ColumnMapping): boolean => !w[\"_owner\"].source(),\n validate: (w: ColumnMapping): boolean => w.sourceOutFields().indexOf(w.remoteField()) >= 0\n});\nColumnMapping.prototype.publish(\"localField\", null, \"set\", \"Local Fields\", function (this: ColumnMapping) { return this.localFields(); }, {\n optional: true,\n disable: (w: ColumnMapping): boolean => !w[\"_owner\"].source(),\n validate: (w: ColumnMapping): boolean => w.localFields().indexOf(w.localField()) >= 0\n});\nColumnMapping.prototype.publish(\"condition\", \"==\", \"set\", \"Filter Fields\", [\"==\", \"!=\", \">\", \">=\", \"<\", \"<=\", \"range\", \"in\"]);\nColumnMapping.prototype.publish(\"nullable\", false, \"boolean\", \"Ignore null filters\");\n\nRemoteFilter.prototype.publish(\"source\", null, \"set\", \"Activity\", function (this: RemoteFilter) { return this.visualizationIDs(); }, {\n optional: true,\n validate: (w: RemoteFilter): boolean => w.visualizationIDs().indexOf(w.source()) >= 0\n});\nRemoteFilter.prototype.publish(\"mappings\", [], \"propertyArray\", \"Mappings\", null, { autoExpand: ColumnMapping });\n\nStaticFilter.prototype.publish(\"localField\", null, \"set\", \"Local Fields\", function (this: ColumnMapping) { return this.localFields(); }, {\n optional: true,\n validate: (w: StaticFilter): boolean => w.localFields().indexOf(w.localField()) >= 0\n});\nStaticFilter.prototype.publish(\"condition\", \"==\", \"set\", \"Filter Fields\", [\"==\", \"!=\", \">\", \">=\", \"<\", \"<=\"]);\nStaticFilter.prototype.publish(\"value\", \"\", \"any\", \"Static Value\");\nStaticFilter.prototype.publish(\"valueType\", \"number\", \"set\", \"Static Value Type\", [\"number\", \"string\"]);\n\nFilters.prototype.publish(\"remoteFilter\", [], \"propertyArray\", \"Remote Filter\", null, { autoExpand: RemoteFilter });\nFilters.prototype.publish(\"staticFilter\", [], \"propertyArray\", \"Static Filter\", null, { autoExpand: StaticFilter });","import { PropertyExt } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { deviation as d3Deviation, max as d3Max, mean as d3Mean, median as d3Median, min as d3Min, sum as d3Sum, variance as d3Variance } from \"d3-array\";\nimport { nest as d3Nest } from \"d3-collection\";\nimport { Activity, IActivityError, ReferencedFields } from \"./activity.ts\";\n\nexport class GroupByColumn extends PropertyExt {\n private _owner: GroupBy;\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.label_valid()) {\n retVal.push({\n source: `${prefix}.label`,\n msg: `Invalid label: \"${this.label()}\"`,\n hint: `expected ${JSON.stringify(this.columns())}`\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): GroupBy;\n owner(_: GroupBy): this;\n owner(_?: GroupBy): GroupBy | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.label();\n }\n\n toDDL(): string {\n return this.label();\n }\n\n fromDDL(label: string): this {\n return this\n .label(label)\n ;\n }\n\n static fromDDL(label: string): GroupByColumn {\n return new GroupByColumn().fromDDL(label);\n }\n\n hash(): string {\n return hashSum(this.label());\n }\n\n columns() {\n return this._owner.inFieldIDs();\n }\n}\nGroupByColumn.prototype._class += \" GroupByColumn\";\n\nexport interface GroupByColumn {\n label(): string;\n label(_: string): this;\n label_valid(): boolean;\n}\n\n// ===========================================================================\nexport type AggrFuncCallback = (item: any) => number;\nexport type AggrFunc = (leaves: any[], callback: AggrFuncCallback) => number;\nfunction localCount(leaves: any[], callback: AggrFuncCallback): number {\n return leaves.length;\n}\n\nconst d3Aggr: { [key: string]: AggrFunc } = {\n count: localCount,\n min: d3Min,\n max: d3Max,\n mean: d3Mean,\n median: d3Median,\n variance: d3Variance,\n deviation: d3Deviation,\n sum: d3Sum\n};\n\nexport type AggregateType = \"count\" | \"min\" | \"max\" | \"sum\" | \"mean\" | \"median\" | \"variance\" | \"deviation\";\nexport class AggregateField extends PropertyExt {\n private _owner: GroupBy;\n\n disableAggrColumn(): boolean {\n return !this.fieldID() || !this.aggrType() || this.aggrType() === \"count\";\n }\n\n disableBaseCountColumn(): boolean {\n return !this.fieldID() || !this.aggrType() || this.aggrType() !== \"mean\";\n }\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.aggrColumn_valid()) {\n retVal.push({\n source: `${prefix}.${this.fieldID()}.aggrColumn`,\n msg: `Invalid aggrColumn: \"${this.aggrColumn()}\"`,\n hint: `expected ${JSON.stringify(this.columns())}`\n });\n }\n if (!this.baseCountColumn_valid()) {\n retVal.push({\n source: `${prefix}.${this.fieldID()}.aggrColumn`,\n msg: `Invalid baseCountColumn: \"${this.baseCountColumn()}\"`,\n hint: `expected ${JSON.stringify(this.columns())}`\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): GroupBy;\n owner(_: GroupBy): this;\n owner(_?: GroupBy): GroupBy | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.fieldID();\n }\n\n toDDL(): DDL2.IAggregate | DDL2.ICount {\n if (this.aggrType() === \"count\") {\n return {\n fieldID: this.fieldID(),\n type: \"count\"\n };\n }\n return {\n fieldID: this.fieldID(),\n type: this.aggrType() as DDL2.IAggregateType,\n inFieldID: this.aggrColumn(),\n baseCountFieldID: this.baseCountColumn()\n };\n }\n\n fromDDL(ddl: DDL2.IAggregate | DDL2.ICount): this {\n const retVal = this\n .fieldID(ddl.fieldID)\n .aggrType(ddl.type)\n ;\n if (ddl.type !== \"count\") {\n retVal.aggrColumn(ddl.inFieldID);\n retVal.baseCountColumn(ddl.baseCountFieldID);\n }\n return retVal;\n }\n\n static fromDDL(ddl: DDL2.IAggregate | DDL2.ICount): AggregateField {\n return new AggregateField().fromDDL(ddl);\n }\n\n hash(): string {\n return hashSum({\n label: this.fieldID(),\n aggrType: this.aggrType(),\n aggrColumn: this.aggrColumn()\n });\n }\n\n columns() {\n return this._owner.inFieldIDs();\n }\n\n hasColumn() {\n return this.columns().length;\n }\n\n aggregate(values: Array<{ [key: string]: any }>) {\n return d3Aggr[this.aggrType() as string](values, leaf => +leaf[this.aggrColumn()]);\n }\n\n aggrFunc(): (leaves: any[]) => number {\n const aggrFunc = d3Aggr[this.aggrType() as string];\n const aggrColumn = this.aggrColumn();\n const baseCountColumn = this.baseCountColumn();\n if (baseCountColumn) {\n return (values: any[]) => {\n return aggrFunc(values, leaf => +leaf[aggrColumn] / +leaf[baseCountColumn]);\n };\n } else {\n return (values: any[]) => {\n return aggrFunc(values, leaf => +leaf[aggrColumn]);\n };\n }\n }\n}\nAggregateField.prototype._class += \" AggregateField\";\n\nexport interface AggregateField {\n fieldID(): string;\n fieldID(_: string): this;\n aggrType(): AggregateType;\n aggrType(_: AggregateType): this;\n aggrColumn(): string;\n aggrColumn(_: string): this;\n aggrColumn_valid(): boolean;\n baseCountColumn(): string;\n baseCountColumn(_: string): this;\n baseCountColumn_valid(): boolean;\n}\n\n// ===========================================================================\nexport class GroupBy extends Activity {\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const gbColumn of this.validGroupBy()) {\n retVal = retVal.concat(gbColumn.validate(\"GroupBy.column\"));\n }\n for (const cfs of this.validComputedFields()) {\n retVal = retVal.concat(cfs.validate(\"GroupBy.computedFields\"));\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n toDDL(): DDL2.IGroupBy {\n return {\n type: \"groupby\",\n groupByIDs: this.fieldIDs(),\n aggregates: this.aggregates()\n };\n }\n\n fromDDL(ddl: DDL2.IGroupBy): this {\n return this\n .fieldIDs(ddl.groupByIDs)\n .aggregates(ddl.aggregates)\n ;\n }\n\n static fromDDL(ddl: DDL2.IGroupBy): GroupBy {\n return new GroupBy().fromDDL(ddl);\n }\n\n fieldIDs(): string[];\n fieldIDs(_: string[]): this;\n fieldIDs(_?: string[]): string[] | this {\n if (!arguments.length) return this.validGroupBy().map(gb => gb.toDDL());\n this.column(_.map(fieldID => GroupByColumn.fromDDL(fieldID)));\n return this;\n }\n\n aggregates(): DDL2.AggregateType[];\n aggregates(_: DDL2.AggregateType[]): this;\n aggregates(_?: DDL2.AggregateType[]): DDL2.AggregateType[] | this {\n if (!arguments.length) return this.validComputedFields().map(cf => cf.toDDL());\n this.computedFields(_.map(aggrType => AggregateField.fromDDL(aggrType)));\n return this;\n }\n\n // Activity\n hash(): string {\n return hashSum({\n groupBy: this.column().map(gb => gb.hash()),\n computedFields: this.computedFields().map(cf => cf.hash())\n });\n }\n\n appendGroupBys(columns: [{ field: string }]): this {\n for (const column of columns) {\n this.column().push(new GroupByColumn()\n .owner(this)\n .label(column.field)\n );\n }\n return this;\n }\n\n validGroupBy(): GroupByColumn[] {\n return this.column().filter(groupBy => groupBy.valid());\n }\n\n exists(): boolean {\n return this.validGroupBy().length > 0;\n }\n\n inFieldIDs(): string[] {\n return this.inFields().map(field => field.id);\n }\n\n field(fieldID: string): DDL2.IField | null {\n for (const field of this.inFields()) {\n if (field.id === fieldID) {\n return field;\n }\n }\n return null;\n }\n\n appendComputedFields(aggregateFields: [{ label: string, type: AggregateType, column?: string }]): this {\n for (const aggregateField of aggregateFields) {\n const aggrField = new AggregateField()\n .owner(this)\n .fieldID(aggregateField.label)\n .aggrType(aggregateField.type)\n ;\n if (aggregateField.column !== void 0) {\n aggrField.aggrColumn(aggregateField.column);\n }\n this.computedFields().push(aggrField);\n }\n return this;\n }\n\n validComputedFields() {\n return this.computedFields().filter(computedField => computedField.valid());\n }\n\n hasComputedFields(): boolean {\n return this.validComputedFields().length > 0;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n if (!this.exists()) return super.computeFields(inFields);\n const retVal: DDL2.IField[] = [];\n const groups: GroupByColumn[] = this.validGroupBy();\n for (const groupBy of groups) {\n const groupByField = this.field(groupBy.label());\n const field = {\n type: groupByField ? groupByField.type : \"string\",\n id: groupBy.label()\n } as DDL2.IField;\n retVal.push(field);\n }\n for (const cf of this.computedFields()) {\n if (cf.fieldID()) {\n const computedField: DDL2.IField = {\n id: cf.fieldID(),\n type: \"number\"\n };\n retVal.push(computedField);\n }\n }\n if (this.details()) {\n let detailsTarget: DDL2.IField[] = retVal;\n if (this.exists()) {\n const rows: DDL2.IField = {\n id: \"values\",\n type: \"dataset\",\n children: []\n };\n retVal.push(rows);\n detailsTarget = rows.children;\n }\n const columns = groups.map(groupBy => groupBy.label());\n detailsTarget.push(...this.inFields().filter(field => {\n return this.fullDetails() || columns.indexOf(field.id) < 0;\n }));\n }\n return () => retVal;\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n const fieldIDs: string[] = [];\n for (const gb of this.validGroupBy()) {\n fieldIDs.push(gb.label());\n }\n for (const cf of this.validComputedFields()) {\n if (cf.aggrColumn()) {\n fieldIDs.push(cf.aggrColumn());\n }\n }\n super.resolveInFields(refs, fieldIDs);\n }\n\n computeData(): ReadonlyArray<object> {\n const data = super.computeData();\n if (data.length === 0 || !this.exists()) return data;\n const columnLabels: string[] = this.validGroupBy().map(gb => gb.label());\n const computedFields = this.validComputedFields().map(cf => {\n return { label: cf.fieldID(), aggrFunc: cf.aggrFunc() };\n });\n const retVal = d3Nest()\n .key((row: { [key: string]: any }) => {\n let key = \"\";\n for (const groupByLabel of columnLabels) {\n key += \":\" + row[groupByLabel];\n }\n return key;\n })\n .entries(data as object[]).map(_row => {\n const row: {\n [key: string]: any\n } = _row;\n delete row.key;\n for (const groupByLabel of columnLabels) {\n row[groupByLabel] = row.values[0][groupByLabel];\n }\n for (const cf of computedFields) {\n row[cf.label] = cf.aggrFunc(row.values);\n }\n return row;\n })\n ;\n const outFields = this.outFields();\n return retVal.map(row => {\n const retVal = {};\n for (const field of outFields) {\n retVal[field.id] = row[field.id];\n }\n return retVal;\n });\n }\n}\nGroupBy.prototype._class += \" GroupBy\";\n\nexport interface GroupBy {\n column(): GroupByColumn[];\n column(_: GroupByColumn[]): this;\n computedFields(): AggregateField[];\n computedFields(_: AggregateField[]): this;\n details(): boolean;\n details(_: boolean): this;\n fullDetails(): boolean;\n fullDetails(_: boolean): this;\n}\n\nGroupByColumn.prototype.publish(\"label\", undefined, \"set\", \"Field\", function (this: GroupByColumn) { return this.columns(); }, {\n optional: true,\n validate: (w: GroupByColumn): boolean => w.columns().indexOf(w.label()) >= 0\n });\n\nAggregateField.prototype.publish(\"fieldID\", null, \"string\", \"new Field ID\", null, { optional: true, disable: (w: AggregateField) => !w.hasColumn() });\nAggregateField.prototype.publish(\"aggrType\", \"count\", \"set\", \"Aggregation Type\", [\"count\", \"min\", \"max\", \"sum\", \"mean\", \"median\", \"variance\", \"deviation\"], { optional: true, disable: (w: AggregateField) => !w.fieldID() });\nAggregateField.prototype.publish(\"aggrColumn\", null, \"set\", \"Aggregation Field\", function (this: AggregateField) { return this.columns(); }, {\n optional: true,\n disable: (w: AggregateField) => w.disableAggrColumn(),\n validate: (w: AggregateField): boolean => w.columns().indexOf(w.aggrColumn()) >= 0\n });\nAggregateField.prototype.publish(\"baseCountColumn\", null, \"set\", \"Base Count Field\", function (this: AggregateField) { return this.columns(); }, {\n optional: true,\n disable: (w: AggregateField) => w.disableBaseCountColumn(),\n validate: (w: AggregateField): boolean => w.columns().indexOf(w.baseCountColumn()) >= 0\n });\n\nGroupBy.prototype.publish(\"column\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: GroupByColumn });\nGroupBy.prototype.publish(\"computedFields\", [], \"propertyArray\", \"Computed Fields\", null, { autoExpand: AggregateField });\nGroupBy.prototype.publish(\"details\", false, \"boolean\", \"Show details\");\nGroupBy.prototype.publish(\"fullDetails\", false, \"boolean\", \"Show groupBy fileds in details\");","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { Activity } from \"./activity.ts\";\n\nexport class Limit extends Activity {\n\n constructor() {\n super();\n }\n\n toDDL(): DDL2.ILimit {\n return {\n type: \"limit\",\n limit: this.rows()\n };\n }\n\n fromDDL(ddl: DDL2.ILimit): this {\n return this\n .rows(ddl.limit)\n ;\n }\n\n static fromDDL(ddl: DDL2.ILimit): Limit {\n return new Limit().fromDDL(ddl);\n }\n\n hash(): string {\n return hashSum({\n limit: this.rows()\n });\n }\n\n exists(): boolean {\n return this.rows_exists() && this.rows() > 0;\n }\n\n computeData(): ReadonlyArray<object> {\n const data = super.computeData();\n if (data.length === 0 || !this.exists()) return data;\n return data.slice(0, Math.min(this.rows(), data.length));\n }\n}\nLimit.prototype._class += \" Limit\";\n\nexport interface Limit {\n rows(): number | undefined;\n rows(_: number | undefined): this;\n rows_exists(): boolean;\n}\nLimit.prototype.publish(\"rows\", undefined, \"number\", \"Limit output\");","import { PropertyExt, Utility } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum, isArray } from \"@hpcc-js/util\";\nimport { Activity, IActivityError, ReferencedFields } from \"./activity.ts\";\n\nexport class ComputedMapping extends PropertyExt {\n protected _owner: ComputedField;\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.value_valid()) {\n retVal.push({\n source: `${prefix}.value`,\n msg: `Invalid value: \"${this.value()}\"`,\n hint: 'expected: \"any\"'\n });\n }\n if (!this.newValue_valid()) {\n retVal.push({\n source: `${prefix}.newValue`,\n msg: `Invalid value: \"${this.newValue()}\"`,\n hint: 'expected: \"any\"'\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): ComputedField;\n owner(_: ComputedField): this;\n owner(_?: ComputedField): ComputedField | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.value() && !!this.newValue();\n }\n\n toDDL(): DDL2.IMapMapping {\n return {\n value: this.value(),\n newValue: this.newValue()\n };\n }\n\n fromDDL(ddl: DDL2.IMapMapping): this {\n return this\n .value(ddl.value)\n .newValue(ddl.newValue)\n ;\n }\n\n static fromDDL(ddl: DDL2.IMapMapping): ComputedMapping {\n return new ComputedMapping().fromDDL(ddl);\n }\n}\nComputedMapping.prototype._class += \" ComputedMapping\";\n\nexport interface ComputedMapping {\n value(): any;\n value(_: any): this;\n value_valid(): boolean;\n newValue(): any;\n newValue(_: any): this;\n newValue_valid(): boolean;\n}\n\nexport type ComputedType = \"=\" | \"*\" | \"/\" | \"+\" | \"-\" | \"scale\" | \"template\" | \"map\";\n\nexport interface IComputedFieldOwner extends PropertyExt {\n fieldIDs(): string[];\n field(fieldID: string): DDL2.IField | null;\n}\n\nexport class ComputedField extends PropertyExt {\n private _owner: IComputedFieldOwner;\n\n disableColumn1(): boolean {\n return !this.label() || [\"=\", \"*\", \"/\", \"+\", \"-\", \"scale\", \"map\"].indexOf(this.type()) < 0;\n }\n\n disableColumn2(): boolean {\n return !this.label() || [\"*\", \"/\", \"+\", \"-\"].indexOf(this.type()) < 0;\n }\n\n disableMapping(): boolean {\n return !this.label() || [\"map\"].indexOf(this.type()) < 0;\n }\n\n disableChildField(): boolean {\n return !this.hasChildren();\n }\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.column1_valid()) {\n retVal.push({\n source: `${prefix}.${this.label()}`,\n msg: `Invalid column1: \"${this.column1()}\"`,\n hint: `expected: ${JSON.stringify(this.columns())}`\n });\n }\n if (!this.column2_valid()) {\n retVal.push({\n source: `${prefix}.${this.label()}`,\n msg: `Invalid column2: \"${this.column2()}\"`,\n hint: `expected: ${JSON.stringify(this.columns())}`\n });\n }\n if (!this.disableMapping()) {\n this.validComputedMappings().forEach(cm => cm.validate(`${prefix}.mapping`));\n }\n if (!this.disableChildField()) {\n this.validChildFields().forEach(cf => cf.validate(`${prefix}.childField`));\n }\n return retVal;\n }\n\n hasChildren() {\n if (!this.label()) return false;\n if (this.type() !== \"=\") return false;\n if (!this.column1()) return false;\n const field = (this._owner as ProjectBase).field(this.column1());\n if (field && field.type === \"dataset\" && field.children) {\n return true;\n }\n return false;\n }\n\n children(): DDL2.IField[] {\n const field = (this._owner as ProjectBase).field(this.column1());\n if (field && field.type === \"dataset\") {\n return field.children;\n }\n return [];\n }\n\n constructor() {\n super();\n }\n\n owner(): IComputedFieldOwner;\n owner(_: IComputedFieldOwner): this;\n owner(_?: IComputedFieldOwner): IComputedFieldOwner | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.label();\n }\n\n validComputedMappings(): ComputedMapping[] {\n return this.mapping().filter(cf => cf.valid());\n }\n\n validChildFields() {\n return this.childField().filter(cf => cf.valid());\n }\n\n hasChildFields() {\n return this.validChildFields().length;\n }\n\n toDDL(): DDL2.MultiTransformationType {\n switch (this.type()) {\n case \"scale\":\n return {\n fieldID: this.label(),\n type: \"scale\",\n sourceFieldID: this.column1(),\n factor: this.constValue()\n };\n case \"template\":\n return {\n fieldID: this.label(),\n type: \"template\",\n template: this.template()\n };\n case \"=\":\n const transformations = this.validChildFields().map(cf => cf.toDDL());\n return {\n fieldID: this.label(),\n type: \"=\",\n sourceFieldID: this.column1(),\n transformations: transformations.length ? transformations : undefined\n };\n case \"map\":\n return {\n fieldID: this.label(),\n type: \"map\",\n sourceFieldID: this.column1(),\n default: this.default(),\n mappings: this.validComputedMappings().map(cm => cm.toDDL())\n };\n default:\n return {\n fieldID: this.label(),\n type: this.type() as DDL2.ICalculatedType,\n sourceFieldID1: this.column1(),\n sourceFieldID2: this.column2()\n };\n }\n }\n\n fromDDL(ddl: DDL2.MultiTransformationType): this {\n const retVal = this\n .label(ddl.fieldID)\n .type(ddl.type)\n ;\n switch (ddl.type) {\n case \"scale\":\n retVal\n .column1(ddl.sourceFieldID)\n .constValue(ddl.factor)\n ;\n break;\n case \"template\":\n retVal\n .template(ddl.template)\n ;\n break;\n case \"=\":\n retVal\n .column1(ddl.sourceFieldID)\n .childField(ddl.transformations ? ddl.transformations.map(transformation => ComputedField.fromDDL(transformation)) : [])\n ;\n break;\n case \"map\":\n retVal\n .column1(ddl.sourceFieldID)\n .default(ddl.default)\n .mapping(ddl.mappings ? ddl.mappings.map(mapping => ComputedMapping.fromDDL(mapping)) : [])\n ;\n break;\n default:\n retVal\n .column1(ddl.sourceFieldID1)\n .column2(ddl.sourceFieldID2)\n ;\n }\n return retVal;\n }\n\n static fromDDL(ddl: DDL2.MultiTransformationType): ComputedField {\n return new ComputedField().fromDDL(ddl);\n }\n\n hash(): string {\n return hashSum(this.toDDL());\n }\n\n columns(): string[] {\n return this._owner.fieldIDs();\n }\n\n computedField(): DDL2.IField {\n switch (this.type()) {\n case \"=\":\n let validChildFields = this.validChildFields();\n if (validChildFields.length === 0 && this.hasChildren()) {\n // Has children but no mappings - include all children by default...\n validChildFields = this.children().map((child: DDL2.IField) => {\n return new ComputedField()\n .owner(this)\n .label(child.id)\n .type(\"=\")\n .column1(child.id)\n ;\n });\n }\n return {\n ...this._owner.field(this.column1()),\n id: this.label(),\n children: validChildFields.length ? validChildFields.map(cf => cf.computedField()) : undefined\n } as DDL2.IField;\n case \"*\":\n case \"/\":\n case \"+\":\n case \"-\":\n case \"scale\":\n return { id: this.label(), type: \"number\" };\n case \"template\":\n return { id: this.label(), type: \"string\" };\n case \"map\":\n return { id: this.label(), type: \"object\" } as DDL2.IFieldObject;\n }\n return { id: this.label(), type: \"string\" };\n }\n\n projection(trim: boolean): (row: object) => object {\n const hasComputedFields = this.hasChildFields();\n const computedFields = this.validChildFields().map(cf => {\n return {\n label: cf.label(),\n func: cf.computeFunc(trim)\n };\n });\n return (row: object) => {\n const retVal = trim && hasComputedFields ? {} : { ...row };\n for (const cf of computedFields) {\n retVal[cf.label] = cf.func(row);\n }\n if (trim && hasComputedFields) {\n retVal[\"__lparam\"] = row;\n }\n return retVal;\n };\n }\n\n computeFunc(trim: boolean): (row: any) => any {\n const column1 = this.column1();\n const column2 = this.column2();\n switch (this.type()) {\n case \"=\":\n if (this.hasChildFields()) {\n return (row: object) => {\n // TODO Move to function factory ---\n const r = row[column1].Row && isArray(row[column1].Row) ? row[column1].Row : row[column1];\n return r.map(this.projection(trim));\n };\n }\n return (row: object) => {\n return row[column1];\n };\n case \"*\":\n return (row: any) => {\n return +row[column1] * +row[column2];\n };\n case \"/\":\n return (row: any) => {\n return +row[column1] / +row[column2];\n };\n case \"+\":\n return (row: any) => {\n return +row[column1] + +row[column2];\n };\n case \"-\":\n return (row: any) => {\n return +row[column1] - +row[column2];\n };\n case \"scale\":\n const constValue = this.constValue();\n return (row: any) => {\n return +row[column1] * constValue;\n };\n case \"template\":\n const template = this.template();\n return (row: any) => {\n return Utility.template(template, row);\n };\n case \"map\":\n const defValue = this.default();\n const mappings = {};\n for (const mapping of this.mapping()) {\n mappings[mapping.value()] = mapping.newValue();\n }\n return (row: any) => {\n return mappings[row[column1]] || defValue;\n };\n default:\n return (row: any) => {\n return row[column1];\n };\n }\n }\n\n // IComputedFieldOwner ---\n fieldIDs(): string[] {\n const field = (this._owner as ProjectBase).field(this.column1());\n if (field) {\n switch (field.type) {\n case \"dataset\":\n return field.children.map(field => field.id);\n case \"object\":\n return Object.keys(field.fields);\n }\n }\n return [];\n }\n\n field(fieldID: string): DDL2.IField | undefined {\n const field = (this._owner as ProjectBase).field(this.column1());\n if (field) {\n switch (field.type) {\n case \"dataset\":\n for (const f of field.children) {\n if (f.id === fieldID) {\n return f;\n }\n }\n break;\n case \"object\":\n return field.fields[fieldID];\n }\n }\n return undefined;\n }\n}\nComputedField.prototype._class += \" ComputedField\";\n\nexport interface ComputedField {\n label(): string;\n label(_: string): this;\n type(): ComputedType;\n type(_: ComputedType): this;\n column1(): string;\n column1(_: string): this;\n column1_valid(): boolean;\n column2(): string;\n column2(_: string): this;\n column2_valid(): boolean;\n constValue(): number;\n constValue(_: number): this;\n template(): string;\n template(_: string): this;\n default(): any;\n default(_: any): this;\n mapping(): ComputedMapping[];\n mapping(_: ComputedMapping[]): this;\n childField(): ComputedField[];\n childField(_: ComputedField[]): this;\n}\n\n// ===========================================================================\nexport class MultiField extends PropertyExt implements IComputedFieldOwner {\n private _owner: IComputedFieldOwner;\n\n constructor() {\n super();\n }\n\n hash() {\n return hashSum(this.toDDL());\n }\n\n owner(): IComputedFieldOwner;\n owner(_: IComputedFieldOwner): this;\n owner(_?: IComputedFieldOwner): IComputedFieldOwner | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.label() && this.validMultiFields().length > 0;\n }\n\n validate(prefix: string): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const cf of this.validMultiFields()) {\n retVal = retVal.concat(cf.validate(`${prefix}.computedFields`));\n }\n return retVal;\n }\n\n toDDL(): DDL2.IMulti {\n return {\n fieldID: this.label(),\n type: \"multi\",\n transformations: this.transformations()\n };\n }\n\n fromDDL(ddl: DDL2.IMulti): this {\n return this\n .label(ddl.fieldID)\n .transformations(ddl.transformations)\n ;\n }\n\n static fromDDL(ddl: DDL2.IMulti): MultiField {\n return new MultiField().fromDDL(ddl);\n }\n\n validMultiFields(): ComputedField[] {\n return this.multiFields().filter(computedField => computedField.valid());\n }\n\n transformations(): DDL2.MultiTransformationType[];\n transformations(_: DDL2.MultiTransformationType[]): this;\n transformations(_?: DDL2.MultiTransformationType[]): DDL2.MultiTransformationType[] | this {\n if (!arguments.length) return this.validMultiFields().map(cf => cf.toDDL());\n this.multiFields(_.map(transformation => ComputedField.fromDDL(transformation)));\n return this;\n }\n\n // IComputedFieldOwner ---\n fieldIDs(): string[] {\n return this._owner.fieldIDs();\n }\n\n field(fieldID: string): DDL2.IField | null {\n return this._owner.field(fieldID);\n }\n}\nMultiField.prototype._class += \" MultiField\";\n\nexport interface MultiField {\n label(): string;\n label(_: string): this;\n multiFields(): ComputedField[];\n multiFields(_: ComputedField[]): this;\n}\n\n// ===========================================================================\nexport class ProjectBase extends Activity {\n static ComputedField = ComputedField;\n\n _includeLParam = false;\n _trim = false;\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const cf of this.validComputedFields()) {\n retVal = retVal.concat(cf.validate(`${this.classID()}.computedFields`));\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n transformations(): DDL2.ProjectTransformationType[];\n transformations(_: DDL2.ProjectTransformationType[]): this;\n transformations(_?: DDL2.ProjectTransformationType[]): DDL2.ProjectTransformationType[] | this {\n if (!arguments.length) return this.validComputedFields().map(cf => cf.toDDL());\n this.computedFields(_.map(transformation => {\n switch (transformation.type) {\n case \"multi\":\n return MultiField.fromDDL(transformation);\n default:\n return ComputedField.fromDDL(transformation);\n }\n }));\n return this;\n }\n\n exists(): boolean {\n return this.validComputedFields().length > 0;\n }\n\n // IComputedFieldOwner ---\n fieldIDs(): string[] {\n return this.inFields().map(field => field.id);\n }\n\n field(fieldID: string): DDL2.IField | null {\n for (const field of this.inFields()) {\n if (field.id === fieldID) {\n return field;\n }\n }\n return null;\n }\n // ---\n\n clearComputedFields() {\n this.computedFields([]);\n }\n\n appendComputedFields(computedFields: [{ label: string, type: ComputedType, column?: string }]): this {\n for (const aggregateField of computedFields) {\n const aggrField = new ComputedField()\n .owner(this)\n .label(aggregateField.label)\n .type(aggregateField.type)\n ;\n if (aggregateField.column !== void 0) {\n aggrField.column1(aggregateField.column);\n }\n this.computedFields().push(aggrField);\n }\n return this;\n }\n\n validComputedFields() {\n return this.computedFields().filter(computedField => computedField.valid());\n }\n\n hasComputedFields() {\n return this.validComputedFields().length;\n }\n\n computeFields(inFields: ReadonlyArray<DDL2.IField>): () => ReadonlyArray<DDL2.IField> {\n if (!this.exists()) return super.computeFields(inFields);\n let retVal: DDL2.IField[] = [];\n const retValMap: { [key: string]: boolean } = {};\n for (const cf of this.validComputedFields()) {\n if (cf instanceof MultiField) {\n for (const cf2 of cf.validMultiFields()) {\n const computedField = cf2.computedField();\n retVal.push(computedField);\n retValMap[computedField.id] = true;\n }\n } else {\n const computedField = cf.computedField();\n retVal.push(computedField);\n retValMap[computedField.id] = true;\n }\n }\n if (this._trim && this.hasComputedFields()) {\n if (this._includeLParam) {\n const computedField = {\n id: \"__lparam\",\n type: \"object\"\n } as DDL2.IField;\n retVal.push(computedField);\n retValMap[computedField.id] = true;\n }\n } else {\n retVal = retVal.concat(inFields.filter(field => !retValMap[field.id]));\n }\n return () => retVal;\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n const fieldIDs: string[] = [];\n for (const cf of this.validComputedFields()) {\n if (cf instanceof MultiField) {\n for (const cf2 of cf.validMultiFields()) {\n fieldIDs.push(cf2.column1());\n if (cf2.column2()) {\n fieldIDs.push(cf2.column2());\n }\n }\n } else {\n if (cf.type() === \"template\") {\n for (const fieldID of Utility.templateFields(cf.template())) {\n fieldIDs.push(fieldID);\n }\n } else {\n fieldIDs.push(cf.column1());\n if (cf.column2()) {\n fieldIDs.push(cf.column2());\n }\n }\n }\n }\n super.resolveInFields(refs, fieldIDs);\n }\n\n projection(): (row: object) => object {\n const trim = this._trim;\n const hasComputedFields = this.hasComputedFields();\n const computedFields = [];\n for (const cf of this.validComputedFields()) {\n if (cf instanceof MultiField) {\n for (const cf2 of cf.validMultiFields()) {\n computedFields.push({\n label: cf2.label(),\n func: cf2.computeFunc(trim)\n });\n }\n } else {\n computedFields.push({\n label: cf.label(),\n func: cf.computeFunc(trim)\n });\n }\n }\n return (row: object) => {\n const retVal = trim && hasComputedFields ? {} : { ...row };\n for (const cf of computedFields) {\n retVal[cf.label] = cf.func(row);\n }\n if (trim && hasComputedFields) {\n if (this._includeLParam) {\n retVal[\"__lparam\"] = row;\n }\n }\n return retVal;\n };\n }\n\n computeData(): ReadonlyArray<object> {\n const data = super.computeData();\n if (data.length === 0 || !this.exists()) return data;\n return data.map(this.projection());\n }\n}\n\nexport class Project extends ProjectBase {\n\n toDDL(): DDL2.IProject {\n return {\n type: \"project\",\n transformations: this.transformations()\n };\n }\n\n fromDDL(ddl: DDL2.IProject): this {\n return this.transformations(ddl.transformations);\n }\n\n static fromDDL(ddl: DDL2.IProject): Project {\n return new Project().fromDDL(ddl);\n }\n\n hash(more: object = {}): string {\n return super.hash({\n ddl: this.toDDL(),\n ...more\n });\n }\n}\nProject.prototype._class += \" Project\";\n\nexport class Mappings extends ProjectBase {\n\n constructor() {\n super();\n this._trim = true;\n this._includeLParam = true;\n }\n\n toDDL(): DDL2.IMappings {\n return {\n type: \"mappings\",\n transformations: this.transformations()\n };\n }\n\n fromDDL(_ddl: DDL2.IMappings): this {\n const ddl = _ddl || { transformations: [] };\n return this\n .transformations(ddl.transformations)\n ;\n }\n\n static fromDDL(ddl: DDL2.IMappings): Mappings {\n return new Mappings().fromDDL(ddl);\n }\n\n hash(more: object = {}): string {\n return super.hash({\n ddl: this.toDDL(),\n ...more\n });\n }\n\n referencedFields(refs: ReferencedFields): void {\n if (this.hasComputedFields()) {\n return super.referencedFields(refs);\n }\n this.resolveInFields(refs, this.inFields().filter(f => f.id !== \"__lparam\").map(f => f.id));\n }\n}\nMappings.prototype._class += \" Mappings\";\n\nComputedMapping.prototype.publish(\"value\", null, \"any\", \"Compare Value\", undefined, {\n validate: (w: ComputedMapping): boolean => (!w.value() && !w.newValue()) || (!!w.value() && !!w.newValue())\n});\nComputedMapping.prototype.publish(\"newValue\", null, \"any\", \"New Value\", undefined, {\n validate: (w: ComputedMapping): boolean => (!w.value() && !w.newValue()) || (!!w.value() && !!w.newValue())\n});\n\nComputedField.prototype.publish(\"label\", null, \"string\", \"Label\", null, { optional: true });\nComputedField.prototype.publish(\"type\", \"mapping\", \"set\", \"Project type\", [\"=\", \"*\", \"/\", \"+\", \"-\", \"scale\", \"template\", \"map\"], { optional: true, disable: w => !w.label() });\nComputedField.prototype.publish(\"column1\", null, \"set\", \"Param 1\", function (this: ComputedField) { return this.columns(); }, {\n optional: true,\n disable: (w: ComputedField) => w.disableColumn1(),\n validate: (w: ComputedField): boolean => w.columns().indexOf(w.column1()) >= 0\n});\nComputedField.prototype.publish(\"column2\", null, \"set\", \"Param 2\", function (this: ComputedField) { return this.columns(); }, {\n optional: true,\n disable: (w: ComputedField) => w.disableColumn2(),\n validate: (w: ComputedField): boolean => w.columns().indexOf(w.column2()) >= 0\n});\nComputedField.prototype.publish(\"constValue\", null, \"number\", \"Const value\", null, { optional: true, disable: (w: ComputedField) => !w.label() || [\"scale\"].indexOf(w.type()) < 0 });\nComputedField.prototype.publish(\"template\", null, \"string\", \"template\", null, { optional: true, disable: (w: ComputedField) => !w.label() || [\"template\"].indexOf(w.type()) < 0 });\nComputedField.prototype.publish(\"default\", null, \"any\", \"Default Value\", null, { optional: true, disable: (w: ComputedField) => !w.label() || [\"map\"].indexOf(w.type()) < 0 });\nComputedField.prototype.publish(\"mapping\", [], \"propertyArray\", \"Mapped Values\", null, { autoExpand: ComputedMapping, disable: (w: ComputedField) => w.disableMapping() });\nComputedField.prototype.publish(\"childField\", [], \"propertyArray\", \"Child Fields\", null, { autoExpand: ComputedField, disable: (w: ComputedField) => w.disableChildField() });\n\nMultiField.prototype.publish(\"label\", \"\", \"string\", \"Label\");\nMultiField.prototype.publish(\"multiFields\", [], \"propertyArray\", \"Multi Fields\", null, { autoExpand: ComputedField });\n\nexport interface ProjectBase {\n computedFields(): Array<ComputedField | MultiField>;\n computedFields(_: Array<ComputedField | MultiField>): this;\n}\n\nProjectBase.prototype.publish(\"computedFields\", [], \"propertyArray\", \"Computed Fields\", null, { autoExpand: ComputedField });","import { PropertyExt } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { ascending as d3Ascending, descending as d3Descending } from \"d3-array\";\nimport { Activity, IActivityError, ReferencedFields } from \"./activity.ts\";\n\nexport class SortColumn extends PropertyExt {\n private _owner: Sort;\n\n validate(prefix: string): IActivityError[] {\n const retVal: IActivityError[] = [];\n if (!this.fieldID_valid()) {\n retVal.push({\n source: `${prefix}.fieldID`,\n msg: `Invalid fieldID: ${this.fieldID()}`,\n hint: `expected ${JSON.stringify(this.fieldIDs())}`\n });\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n owner(): Sort;\n owner(_: Sort): this;\n owner(_?: Sort): Sort | this {\n if (!arguments.length) return this._owner;\n this._owner = _;\n return this;\n }\n\n valid(): boolean {\n return !!this.fieldID();\n }\n\n toDDL(): DDL2.ISortCondition {\n return {\n fieldID: this.fieldID(),\n descending: this.descending()\n };\n }\n\n fromDDL(ddl: DDL2.ISortCondition): this {\n return this\n .fieldID(ddl.fieldID)\n .descending(ddl.descending)\n ;\n }\n\n static fromDDL(ddl: DDL2.ISortCondition): SortColumn {\n return new SortColumn().fromDDL(ddl);\n }\n\n hash(): string {\n return hashSum({\n sortColumn: this.fieldID(),\n descending: this.descending()\n });\n }\n\n fieldIDs() {\n return this._owner.fieldIDs();\n }\n\n field(id: string): DDL2.IField | undefined {\n return this._owner.inFields().filter(field =>\n field.id === id\n )[0];\n }\n}\nSortColumn.prototype._class += \" SortColumn\";\n\nexport interface SortColumn {\n fieldID(): string;\n fieldID(_: string): this;\n fieldID_valid(): boolean;\n descending(): boolean;\n descending(_: boolean): this;\n}\n\n// ===========================================================================\nexport class Sort extends Activity {\n static Column = SortColumn;\n\n validate(): IActivityError[] {\n let retVal: IActivityError[] = [];\n for (const sb of this.validSortBy()) {\n retVal = retVal.concat(sb.validate(\"Sort.column\"));\n }\n return retVal;\n }\n\n constructor() {\n super();\n }\n\n toDDL(): DDL2.ISort {\n return {\n type: \"sort\",\n conditions: this.conditions()\n };\n }\n\n fromDDL(ddl: DDL2.ISort): this {\n this.conditions(ddl.conditions);\n return this;\n }\n\n static fromDDL(ddl: DDL2.ISort) {\n return new Sort().fromDDL(ddl);\n }\n\n conditions(): DDL2.ISortCondition[];\n conditions(_: DDL2.ISortCondition[]): this;\n conditions(_?: DDL2.ISortCondition[]): DDL2.ISortCondition[] | this {\n if (!arguments.length) return this.validSortBy().map(column => column.toDDL());\n this.column(_.map(condition => SortColumn.fromDDL(condition)));\n return this;\n }\n\n // Activitiy ---\n hash(): string {\n return hashSum({\n Sort: this.column().map(sb => sb.hash())\n });\n }\n\n referencedFields(refs: ReferencedFields): void {\n super.referencedFields(refs);\n super.resolveInFields(refs, this.validSortBy().map(sortBy => sortBy.fieldID()));\n }\n\n validSortBy(): SortColumn[] {\n return this.column().filter(sortBy => sortBy.fieldID());\n }\n\n exists(): boolean {\n return this.validSortBy().length > 0;\n }\n\n fieldIDs(): string[] {\n return this.inFields().map(field => field.id);\n }\n\n computeData(): ReadonlyArray<object> {\n const data = super.computeData();\n const sortByArr: Array<{ compare: (l, r) => number, id: string }> = [];\n for (const sortBy of this.validSortBy()) {\n sortByArr.push({\n compare: sortBy.descending() ? d3Descending : d3Ascending,\n id: sortBy.fieldID()\n });\n }\n\n if (sortByArr.length) {\n return [...data].sort((l: any, r: any) => {\n for (const item of sortByArr) {\n const retVal2 = item.compare(l[item.id], r[item.id]);\n if (retVal2 !== 0) {\n return retVal2;\n }\n }\n return 0;\n });\n\n }\n return data;\n }\n}\nSort.prototype._class += \" Sort\";\n\nexport interface Sort {\n column(): SortColumn[];\n column(_: SortColumn[]): this;\n}\n\nSortColumn.prototype.publish(\"fieldID\", null, \"set\", \"Sort Field\", function (this: SortColumn) { return this.fieldIDs(); }, {\n optional: true,\n validate: (w: SortColumn): boolean => w.fieldIDs().indexOf(w.fieldID()) >= 0\n });\nSortColumn.prototype.publish(\"descending\", false, \"boolean\", \"Sort Field\");\n\nSort.prototype.publish(\"column\", [], \"propertyArray\", \"Source Columns\", null, { autoExpand: SortColumn });","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { ElementContainer } from \"../model/element.ts\";\nimport { Activity, ActivityPipeline } from \"./activity.ts\";\nimport { DatasourceRefType } from \"./datasource.ts\";\nimport { DSPicker } from \"./dspicker.ts\";\nimport { Filters } from \"./filter.ts\";\nimport { GroupBy } from \"./groupby.ts\";\nimport { Limit } from \"./limit.ts\";\nimport { Project } from \"./project.ts\";\nimport { Sort } from \"./sort.ts\";\n\nexport class HipiePipeline extends ActivityPipeline {\n\n _origDatasource;\n _origFilters;\n _origProject;\n _origGroupBy;\n _origSort;\n _origLimit;\n\n declare _datasource: DSPicker | DatasourceRefType;\n declare _filters: Filters;\n declare _project: Project;\n declare _groupBy: GroupBy;\n declare _sort: Sort;\n declare _limit: Limit;\n\n constructor(private _ec: ElementContainer, viewID: string) {\n super();\n this._id = viewID;\n this._datasource = new DSPicker(this._ec);\n this._filters = new Filters(this._ec);\n this._project = new Project();\n this._groupBy = new GroupBy();\n this._sort = new Sort();\n this._limit = new Limit();\n this.updateSequence();\n }\n\n activities(): Activity[];\n activities(_: Activity[]): this;\n activities(_?: Activity[]): Activity[] | this {\n const retVal = super.activities.apply(this, arguments);\n return retVal;\n }\n\n private updateSequence() {\n this.activities([\n this.datasource() as Activity,\n this.filters(),\n this.project(),\n this.groupBy(),\n this.sort(),\n this.limit()\n ]);\n }\n\n selectionFields(): ReadonlyArray<DDL2.IField> {\n return this.last().outFields();\n }\n}\n\nexport interface HipiePipeline {\n datasource(): DSPicker | DatasourceRefType;\n datasource(_: DSPicker | DatasourceRefType): this;\n filters(): Filters;\n filters(_: Filters): this;\n project(): Project;\n project(_: Project): this;\n groupBy(): GroupBy;\n groupBy(_: GroupBy): this;\n sort(): Sort;\n sort(_: Sort): this;\n limit(): Limit;\n limit(_: Limit): this;\n}\n\nHipiePipeline.prototype.publish(\"datasource\", null, \"widget\", \"Data Source 2\");\nHipiePipeline.prototype.publish(\"filters\", null, \"widget\", \"Client Filters\");\nHipiePipeline.prototype.publish(\"project\", null, \"widget\", \"Project\");\nHipiePipeline.prototype.publish(\"groupBy\", null, \"widget\", \"Group By\");\nHipiePipeline.prototype.publish(\"sort\", null, \"widget\", \"Sort\");\nHipiePipeline.prototype.publish(\"limit\", null, \"widget\", \"Limit output\");\n\nfunction wrapHipiePipelineProperty(prop: string) {\n const origKey = `_orig${prop.charAt(0).toUpperCase() + prop.slice(1)}`;\n HipiePipeline.prototype[origKey] = HipiePipeline.prototype[prop];\n HipiePipeline.prototype[prop] = function (_?) {\n const retVal = HipiePipeline.prototype[origKey].apply(this, arguments);\n if (_ !== undefined) {\n this.updateSequence();\n }\n return retVal;\n };\n}\nwrapHipiePipelineProperty(\"datasource\");\nwrapHipiePipelineProperty(\"filters\");\nwrapHipiePipelineProperty(\"project\");\nwrapHipiePipelineProperty(\"groupBy\");\nwrapHipiePipelineProperty(\"sort\");\nwrapHipiePipelineProperty(\"limit\");","import { HipiePipeline } from \"./hipiepipeline.ts\";\n\nexport class NullView extends HipiePipeline {\n hash(): string {\n return super.hash();\n }\n\n _fetch(from: number, count: number): Promise<any[]> {\n return Promise.resolve([]);\n }\n}\nNullView.prototype._class += \" NullView\";\n","import { Spacer, ToggleButton, Widget } from \"@hpcc-js/common\";\nimport { ChartPanel, Modal } from \"@hpcc-js/layout\";\n\nexport interface IVizPopupPanelOwner {\n vizActivation(viz);\n}\n\nexport class VizPopupPanel extends Modal {\n\n private _owner: IVizPopupPanelOwner;\n private _ownerLParam;\n\n constructor(owner: IVizPopupPanelOwner, ownerLParam) {\n super();\n this._owner = owner;\n this._ownerLParam = ownerLParam;\n this._drawStartPos = \"origin\";\n this.visible(false);\n this.minHeight_default(\"240px\");\n this.minWidth_default(\"320px\");\n this.overflowY_default(\"hidden\");\n }\n\n private _host: VizChartPanel;\n host(_?: VizChartPanel): VizChartPanel | this {\n if (!arguments.length) return this._host;\n if (this._host && this._host !== _) {\n this._host._togglePopup\n .selected(false)\n .render()\n ;\n }\n this._host = _;\n this._owner.vizActivation(this._ownerLParam);\n return this;\n }\n\n enter(domNode, element) {\n domNode.parentElement.style.position = \"absolute\";\n const widgetTitle = (this.widget() as ChartPanel).title();\n if (widgetTitle) {\n this.title(widgetTitle);\n (this.widget() as ChartPanel).titleVisible(false);\n }\n super.enter(domNode, element);\n }\n\n update(domNode, element) {\n this.fixedTop(this._pos.y + \"px\");\n this.fixedLeft(this._pos.x + \"px\");\n super.update(domNode, element);\n }\n\n exit(domNode, element) {\n super.exit(domNode, element);\n const widgetTitle = (this.widget() as ChartPanel).title();\n if (widgetTitle) {\n (this.widget() as ChartPanel).titleVisible(true);\n }\n }\n\n closeModal() {\n super.closeModal();\n if (this._host) {\n this._host._togglePopup\n .selected(false)\n .render()\n ;\n }\n }\n}\nVizPopupPanel.prototype._class += \" marshaller_VizPopupPanel\";\n\nexport interface VizPopupPanel {\n widget(_: Widget): this;\n widget(): Widget;\n widget_exists(): boolean;\n minHeight_default(_: string);\n minWidth_default(_: string);\n overflowY_default(_: string);\n}\n\n// ===========================================================================\n\nexport interface VizChartPanel {\n}\n\nexport class VizChartPanel extends ChartPanel {\n\n private _popup: VizPopupPanel;\n _togglePopup = new ToggleButton().faChar(\"fa-filter\").tooltip(\"Filter\")\n .on(\"click\", () => {\n this._popup.host(this);\n const dp = this.locateClosestAncestor([\"marshaller_DashboardDockPanel\", \"marshaller_DashboardGrid\"]);\n const dpBBox = dp.getBBox(true);\n const cp = this._popup.widget() as VizChartPanel;\n const tbBBox = this._togglePopup.getBBox();\n this._popup\n .pos({\n x: -dpBBox.x + tbBBox.x + tbBBox.width - cp.minWidth(),\n y: -dpBBox.y + tbBBox.y + tbBBox.height\n })\n .resize({ width: cp.minWidth(), height: cp.minHeight() })\n .visible(this._togglePopup.selected())\n .render((popup: any) => {\n const widgetSelector = \"#\" + popup.id() + \" .layout_Carousel .common_Widget\";\n const node = popup.element().node();\n if (node) {\n const { height, width } = node.querySelector(widgetSelector).getBoundingClientRect();\n popup.resizeBodySync(width, height);\n }\n })\n ;\n });\n\n private _origButtons: Widget[];\n private _filterButtons: Widget[];\n\n constructor() {\n super();\n\n this._origButtons = this.buttons();\n this._filterButtons = [this._togglePopup, new Spacer(), ...this._origButtons];\n }\n\n popup(_?: VizPopupPanel): VizPopupPanel | this {\n if (!arguments.length) return this._popup;\n this._popup = _;\n if (!this._popup) {\n this._togglePopup.selected(false);\n }\n this.buttons(this._popup ? this._filterButtons : this._origButtons);\n return this;\n }\n}\nVizChartPanel.prototype._class += \" marshaller_VizChartPanel\";\n\nexport interface VizChartPanel {\n minWidth(): number;\n minWidth(_: number): this;\n minWidth(_: number): this;\n minWidth_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n}\nVizChartPanel.prototype.publish(\"descriptionTemplate\", \"\", \"string\");\nVizChartPanel.prototype.publish(\"minWidth\", 320, \"number\", \"Min Width\");\nVizChartPanel.prototype.publish(\"minHeight\", 240, \"number\", \"Min Height\");\n","import { Area, Bar, Bubble, Column, Contour, HexBin, Line, Pie, Radar, RadialBar, Scatter, Step, WordCloud } from \"@hpcc-js/chart\";\nimport { Database, EntityRectList, InputField, PropertyExt, Widget } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { FieldForm } from \"@hpcc-js/form\";\nimport { AdjacencyGraph, DataGraph } from \"@hpcc-js/graph\";\nimport { ChoroplethCounties, ChoroplethStates, Leaflet } from \"@hpcc-js/map\";\nimport { isArray } from \"@hpcc-js/util\";\nimport { HipiePipeline } from \"../activities/hipiepipeline.ts\";\nimport { ComputedField, Mappings, MultiField } from \"../activities/project.ts\";\nimport { ElementContainer } from \"./element.ts\";\nimport { VizChartPanel } from \"./vizChartPanel.ts\";\n\nexport type VizType = \"Table\" | \"FieldForm\" |\n \"Area\" | \"Bubble\" | \"Bar\" | \"Column\" | \"Contour\" | \"HexBin\" | \"Line\" | \"Pie\" | \"WordCloud\" | \"Radar\" | \"RadialBar\" | \"Scatter\" | \"Step\" |\n \"USCountiesChoropleth\" | \"USStatesChoropleth\" | \"ClusterPins\" |\n \"EntityRectList\" | \"AdjacencyGraph\" | \"DataGraph\";\nconst VizTypeMap: { [key: string]: new (...args: any[]) => object } = {\n Table, FieldForm,\n Area, Bubble, Bar, Column, Contour, HexBin, Line, Pie, Radar, RadialBar, Scatter, Step, WordCloud,\n USCountiesChoropleth: ChoroplethCounties, USStatesChoropleth: ChoroplethStates, ClusterPins: Leaflet.ClusterPins,\n EntityRectList, AdjacencyGraph, DataGraph\n};\nexport const VizTypeSet = [];\nfor (const key in VizTypeMap) {\n VizTypeSet.push(key);\n}\n\nfunction typeClass(type: VizType): any {\n const retVal = VizTypeMap[type];\n return retVal || Table;\n}\n\nfunction typeNew(type: VizType): Widget {\n const ChartClass = VizTypeMap[type];\n const retVal = new (ChartClass || Table)() as Widget;\n\n // Override default properties as needed ---\n if (retVal instanceof FieldForm) {\n retVal\n .validate(false)\n .allowEmptyRequest(true)\n ;\n } else if (retVal instanceof AdjacencyGraph) {\n retVal\n .uidColumn(\"uid\")\n .labelColumn(\"label\")\n .iconColumn(\"icon\")\n .linksColumn(\"links\")\n .linkUidColumn(\"uid\")\n .linkLabelColumn(\"label\")\n ;\n }\n return retVal;\n}\n\nfunction typeInputs(type: VizType): InputField[] {\n return typeClass(type).__inputs || [];\n}\n\nexport class Visualization extends PropertyExt {\n\n _origVisibility;\n _origChartType;\n _origChartPanel;\n\n declare _visibility: DDL2.VisibilityType;\n declare _chartType: VizType;\n declare _chartPanel: VizChartPanel;\n\n protected _hipiePipeline: HipiePipeline;\n constructor(protected _ec: ElementContainer, hipiePipeline: HipiePipeline) {\n super();\n this._hipiePipeline = hipiePipeline;\n this.mappings(new Mappings());\n this.chartPanel(new VizChartPanel());\n this.typeChanged();\n }\n\n visualizationIDs(): string[] {\n return this._ec.elementIDs().filter(id => id !== this.id());\n }\n\n _prevChartType;\n typeChanged() {\n if (this._prevChartType !== this._chartType) {\n this._prevChartType = this._chartType;\n this.refreshMappings();\n const chart = typeNew(this._chartType);\n this.chartPanel().widget(chart);\n }\n }\n\n properties(): DDL2.IWidgetProperties;\n properties(_: DDL2.IWidgetProperties): this;\n properties(_?: DDL2.IWidgetProperties): DDL2.IWidgetProperties | this {\n if (!arguments.length) return this.chartPanel().serialize();\n this.chartPanel().deserialize(_);\n\n return this;\n }\n\n refreshMappings(): this {\n const mappings = this.mappings();\n mappings.sourceActivity(this._hipiePipeline);\n const cfs = mappings.validComputedFields();\n const inFields = mappings.inFields();\n const taken = {};\n mappings.computedFields(typeInputs(this._chartType).map((input, idx) => {\n let retVal: MultiField | ComputedField = cfs[idx];\n if (retVal) {\n if (retVal instanceof MultiField) {\n } else {\n retVal.label(input.id);\n }\n } else {\n if (input.multi) {\n retVal = new MultiField()\n .owner(mappings)\n .label(input.id)\n ;\n const computedFields: ComputedField[] = [];\n for (const inField of inFields) {\n if ((input.type === \"any\" || input.type === inField.type) && !taken[inField.id]) {\n taken[inField.id] = true;\n computedFields.push(new ComputedField()\n .label(inField.id)\n .type(\"=\")\n .column1(inField.id)\n );\n }\n }\n retVal.multiFields(computedFields);\n } else {\n retVal = new ComputedField()\n .owner(mappings)\n .label(input.id)\n .type(\"=\")\n ;\n for (const inField of inFields) {\n if ((input.type === \"any\" || input.type === inField.type) && !taken[inField.id]) {\n taken[inField.id] = true;\n retVal.column1(inField.id);\n break;\n }\n }\n }\n }\n return retVal;\n }));\n return this;\n }\n\n _prevFields: ReadonlyArray<DDL2.IField> = [];\n _prevLinkFields: ReadonlyArray<DDL2.IField> = [];\n _prevData: ReadonlyArray<object> = [];\n refreshData(): Promise<void> {\n const mappings = this.mappings();\n\n const fields = mappings.outFields();\n const dbFields = this.toDBFields(fields);\n let linkFields: ReadonlyArray<DDL2.IField>;\n let dbLinkFields = [];\n const se = this._ec.element(this.secondaryDataviewID());\n if (se) {\n linkFields = se.mappings().outFields();\n dbLinkFields = this.toDBFields(linkFields);\n }\n\n const fieldsChanged = this._prevFields !== fields || this._prevLinkFields !== linkFields;\n if (fieldsChanged) {\n this._prevFields = fields;\n if (this.chartType() === \"DataGraph\") {\n const dataGraph = this.chartPanel().widget() as DataGraph;\n dataGraph.vertexColumns(dbFields.map(f => f.label()));\n dataGraph.edgeColumns(dbLinkFields.map(f => f.label()));\n } else {\n this.chartPanel().fields(dbFields.filter(f => f.id() !== \"__lparam\"));\n }\n } else {\n console.warn(`***${this.id()} Immutable Fields***`);\n }\n\n const data = mappings.outData();\n const dataChanged = this._prevData !== data;\n if (dataChanged) {\n this._prevData = data;\n const mappedData = this.toDBData(dbFields, data);\n if (this.chartType() === \"DataGraph\") {\n const dataGraph = this.chartPanel().widget() as DataGraph;\n dataGraph.vertices(mappedData);\n if (se) {\n const linkData = se.mappings().outData();\n const mappedLinkData = this.toDBData(dbLinkFields, linkData);\n dataGraph.edges(mappedLinkData);\n }\n } else {\n this.chartPanel().data(mappedData);\n }\n } else {\n console.warn(`${this.id()} Immutable Data!`);\n }\n\n if (fieldsChanged || dataChanged) {\n return this.chartPanel().renderPromise().then(() => { });\n }\n return Promise.resolve();\n }\n\n private fieldTypeTodbFieldType(type: DDL2.IFieldType): Database.FieldType {\n switch (type) {\n case \"dataset\":\n return \"nested\";\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n default:\n return \"string\";\n }\n }\n\n toDBFields(fields: ReadonlyArray<DDL2.IField>): Database.Field[] {\n const retVal: Database.Field[] = [];\n for (const field of fields || []) {\n const f = new Database.Field()\n .type(this.fieldTypeTodbFieldType(field.type))\n .id(field.id)\n .label(field.id)\n ;\n switch (field.type) {\n case \"dataset\":\n f.children(this.toDBFields(field.children));\n break;\n case \"object\":\n // TODO: For __lparam we should do nothing - not 100% if that is correct for \"real\" data (we don't really support \"object\" anyway)?\n break;\n }\n retVal.push(f);\n }\n return retVal;\n }\n\n toDBData(fields: Database.Field[], data: ReadonlyArray<object> | Readonly<object>) {\n const _data: ReadonlyArray<object> = isArray(data) ? data : [data];\n return _data.map((row: any) => {\n const retVal = [];\n for (const field of fields) {\n if (field.type() === \"nested\") {\n retVal.push(this.toDBData(field.children() as Database.Field[], row[field.id()].Row || row[field.id()]));\n } else {\n retVal.push(row[field.label()]);\n }\n }\n return retVal;\n });\n }\n\n exec(): Promise<void[]> {\n const promises = [];\n if (this.secondaryDataviewID_exists()) {\n const secondaryElementID = this.secondaryDataviewID();\n const secondaryElement = this._ec.element(secondaryElementID);\n if (secondaryElement) {\n promises.push(secondaryElement.visualization().exec());\n }\n }\n\n const mappings = this.mappings();\n mappings.sourceActivity(this._hipiePipeline);\n promises.push(mappings.refreshMeta().then(() => {\n return mappings.exec();\n }));\n\n return Promise.all(promises);\n }\n\n refresh(): Promise<void> {\n if (this.chartPanel().startProgress) {\n this.chartPanel().startProgress();\n }\n return this.exec().then(() => {\n if (this.chartPanel().finishProgress) {\n this.chartPanel().finishProgress();\n }\n return this.refreshData();\n });\n }\n\n // Events ---\n click(row: any, col: string, sel: boolean, more?) {\n }\n\n vertex_click(row: any, col: string, sel: boolean) {\n }\n}\nVisualization.prototype._class += \" Visualization\";\n\nexport interface Visualization {\n title(): string;\n title(_: string): this;\n description(): string;\n description(_: string): this;\n visibility(): DDL2.VisibilityType;\n visibility(_: DDL2.VisibilityType): this;\n chartType(): VizType;\n chartType(_: VizType, props?: { [prop: string]: any }): this;\n secondaryDataviewID(): string;\n secondaryDataviewID(_: string): this;\n secondaryDataviewID_exists(): boolean;\n secondaryDataviewID_valid(): boolean;\n mappings(): Mappings;\n mappings(_: Mappings): this;\n chartPanel(): VizChartPanel;\n chartPanel(_: VizChartPanel): this;\n}\n\nVisualization.prototype.publishProxy(\"title\", \"_chartPanel\");\nVisualization.prototype.publishProxy(\"description\", \"_chartPanel\");\nVisualization.prototype.publish(\"visibility\", DDL2.VisibilitySet[0], \"set\", \"Type\", DDL2.VisibilitySet);\nVisualization.prototype.publish(\"chartType\", \"Table\", \"set\", \"Type\", VizTypeSet);\nVisualization.prototype.publish(\"secondaryDataviewID\", null, \"set\", \"Secondary Data View (e.g. graph edges)\", function (this: Visualization) { return this.visualizationIDs(); }, { optional: true });\nVisualization.prototype.publish(\"mappings\", null, \"widget\", \"Mappings\", undefined, { render: false, internal: true });\nVisualization.prototype.publish(\"chartPanel\", [], \"widget\", \"Widget\");\n\nVisualization.prototype._origVisibility = Visualization.prototype.visibility;\nVisualization.prototype.visibility = function (this: Visualization, _?) {\n const prev = this._visibility;\n const retVal = Visualization.prototype._origVisibility.apply(this, arguments);\n if (_ !== undefined && prev !== _) {\n this.chartPanel().target(null);\n }\n return retVal;\n};\n\nVisualization.prototype._origChartType = Visualization.prototype.chartType;\nVisualization.prototype.chartType = function (this: Visualization, _?, props?) {\n if (_ !== undefined && VizTypeSet.indexOf(_) === -1) {\n _ = \"Table\";\n }\n const retVal = Visualization.prototype._origChartType.apply(this, arguments);\n if (_ !== undefined) {\n this.typeChanged();\n if (props) {\n const widget = this.chartPanel().widget();\n for (const prop in props) {\n if (typeof widget[prop] === \"function\") {\n widget[prop](props[prop]);\n }\n }\n }\n }\n return retVal;\n};\n\nVisualization.prototype._origChartPanel = Visualization.prototype.chartPanel;\nVisualization.prototype.chartPanel = function (this: Visualization, _?) {\n const retVal = Visualization.prototype._origChartPanel.apply(this, arguments);\n if (_ !== undefined) {\n this._chartPanel\n .on(\"click\", (row: any, col: string, sel: boolean, more) => this.click(row, col, sel, more))\n .on(\"vertex_click\", (row: any, col: string, sel: boolean) => this.vertex_click(row, col, sel))\n ;\n for (const key in VizTypeMap) {\n if (this._chartPanel.widget() instanceof VizTypeMap[key]) {\n this._chartType = key as VizType;\n break;\n }\n }\n }\n return retVal;\n};","import { PropertyExt, Widget } from \"@hpcc-js/common\";\nimport { IOptionsSend } from \"@hpcc-js/comms\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { find, hashSum, isArray } from \"@hpcc-js/util\";\nimport { Activity, IActivityError } from \"../activities/activity.ts\";\nimport { emptyDatabomb } from \"../activities/databomb.ts\";\nimport { DatasourceRefType } from \"../activities/datasource.ts\";\nimport { HipiePipeline } from \"../activities/hipiepipeline.ts\";\nimport { Mappings } from \"../activities/project.ts\";\nimport { Visualization } from \"./visualization.ts\";\nimport { VizChartPanel } from \"./vizChartPanel.ts\";\n\nexport class State extends PropertyExt {\n\n constructor() {\n super();\n this.selection([]);\n }\n\n set(_: Array<{ [key: string]: any }>): boolean {\n const currSelHash = hashSum(this.selection());\n const newSelHash = hashSum(_);\n if (currSelHash !== newSelHash) {\n this.selection(_);\n return true;\n }\n return false;\n }\n\n removeInvalid(data: ReadonlyArray<object>): boolean {\n const currSelection = this.selection();\n const newSelection: object[] = [];\n for (const selRow of currSelection) {\n if (find(data, (row: { [key: string]: any }, index): boolean => {\n for (const column in selRow) {\n if (selRow[column] !== row[column]) {\n return false;\n }\n }\n return true;\n })) {\n newSelection.push(selRow);\n }\n }\n if (newSelection.length !== currSelection.length) {\n this.selection(newSelection);\n return true;\n }\n return false;\n }\n}\nState.prototype._class += \" State\";\nexport interface State {\n selection(): Array<{ [key: string]: any }>;\n selection(_: Array<{ [key: string]: any }>): this;\n}\nState.prototype.publish(\"selection\", [], \"array\", \"State\");\n\nlet vizID = 0;\nexport class Element extends PropertyExt {\n private _vizChartPanel: Visualization;\n\n _origVisualization;\n\n declare _visualization: Visualization;\n\n constructor(private _ec: ElementContainer) {\n super();\n while (true) {\n vizID++;\n this._id = `e_${vizID}`;\n if (!this._ec.elementExists(this._id)) {\n break;\n }\n }\n const view = new HipiePipeline(this._ec, this._id);\n this.hipiePipeline(view);\n this._vizChartPanel = new Visualization(this._ec, this.hipiePipeline())\n .id(`viz_${vizID}`)\n .title(`Element ${vizID}`)\n ;\n this._vizChartPanel.chartPanel().id(`cp_${vizID}`);\n this.visualization(this._vizChartPanel);\n this.state(new State());\n }\n\n id(): string;\n id(_: string): this;\n id(_?: string): string | this {\n const retVal = super.id.apply(this, arguments);\n if (arguments.length) {\n this._vizChartPanel.id(_);\n }\n return retVal;\n }\n\n chartType(): string {\n return this._vizChartPanel.chartType();\n }\n\n chartPanel(): VizChartPanel;\n chartPanel(_: VizChartPanel): this;\n chartPanel(_?: VizChartPanel): VizChartPanel | this {\n if (!arguments.length) return this._vizChartPanel.chartPanel();\n this._vizChartPanel.chartPanel(_);\n return this;\n }\n\n chart(): Widget {\n return this._vizChartPanel.chartPanel().widget();\n }\n\n mappings(): Mappings;\n mappings(_: Mappings): this;\n mappings(_?: Mappings): Mappings | this {\n if (!arguments.length) return this._vizChartPanel.mappings();\n this._vizChartPanel.mappings(_);\n return this;\n }\n\n pipeline(activities: Activity[]): this {\n this.hipiePipeline()\n .activities(activities)\n ;\n return this;\n }\n\n updatedBy(): string[] {\n const retVal = this.hipiePipeline().updatedBy();\n if (this.visualization().secondaryDataviewID_exists()) {\n retVal.push(this.visualization().secondaryDataviewID());\n }\n return retVal;\n }\n\n dataProps(): PropertyExt {\n return this.hipiePipeline();\n }\n\n vizProps(): Widget {\n return this.visualization().chartPanel();\n }\n\n stateProps(): PropertyExt {\n return this.state();\n }\n\n private _errors: IElementError[] = [];\n errors(): IElementError[] {\n return this._errors;\n }\n\n validate(): IElementError[] {\n if (!this._initialized) {\n return [];\n }\n this._errors = [];\n const pipeline = this.hipiePipeline();\n for (const activity of [...pipeline.activities(), this.mappings()]) {\n for (const error of activity.validate()) {\n this._errors.push({\n elementID: this.id(),\n ...error\n });\n }\n }\n return this._errors;\n }\n\n private _initialized = false;\n refresh(): Promise<void> {\n const filters = this.hipiePipeline().filters().validFilters();\n const desc: string[] = filters.map(f => f.createFilterDescription());\n this.visualization().chartPanel().description(desc.join(\", \"));\n return this.visualization().refresh().then(() => {\n this._initialized = true;\n const data = this.hipiePipeline().outData();\n if (this.visualization().chartType() === \"FieldForm\") {\n if (this.state().set([...data])) {\n this.selectionChanged();\n }\n } else {\n if (this.state().removeInvalid(data)) {\n this.selectionChanged();\n }\n }\n });\n }\n\n // Selection ---\n selection(): object[];\n selection(_: object[]): this;\n selection(_?: object[]): object[] | this {\n if (!arguments.length) return this.state().selection();\n this.state().selection(_);\n this.selectionChanged();\n return this;\n }\n\n // Events ---\n selectionChanged() {\n const promises: Array<Promise<void>> = [];\n for (const filteredViz of this._ec.filteredBy(this.id())) {\n promises.push(filteredViz.refresh());\n }\n Promise.all(promises).then(() => {\n this._ec.vizStateChanged(this);\n });\n }\n\n monitor(func: (id: string, newVal: any, oldVal: any, source: PropertyExt) => void): { remove: () => void; } {\n return this.hipiePipeline().monitor(func);\n }\n}\nElement.prototype._class += \" Viz\";\n\nexport interface Element {\n hipiePipeline(): HipiePipeline;\n hipiePipeline(_: HipiePipeline): this;\n visualization(): Visualization;\n visualization(_: Visualization): this;\n state(): State;\n state(_: State): this;\n}\n\nElement.prototype.publish(\"hipiePipeline\", null, \"widget\", \"Data View\");\nElement.prototype.publish(\"visualization\", null, \"widget\", \"Visualization\");\nElement.prototype.publish(\"state\", null, \"widget\", \"State\");\n\nElement.prototype._origVisualization = Element.prototype.visualization;\nElement.prototype.visualization = function (this: Element, _?) {\n const retVal = Element.prototype._origVisualization.apply(this, arguments);\n if (_ !== undefined) {\n this._visualization\n .on(\"click\", (_row: object | object[], col: string, sel: boolean, more?) => {\n if (more && more.selection) {\n this.selection(sel ? more.selection.map(r => r.__lparam || r) : []);\n } else {\n const row: any[] = isArray(_row) ? _row : [_row];\n this.selection(sel ? row.map(r => r.__lparam || r) : []);\n }\n })\n .on(\"vertex_click\", (_row: object | object[], col: string, sel: boolean) => {\n const row: any[] = isArray(_row) ? _row : [_row];\n this.selection(sel ? row.map(r => r.__lparam || r) : []);\n })\n ;\n }\n return retVal;\n};\n\nexport interface IPersist {\n ddl: DDL2.Schema;\n layout: any;\n}\n\nexport interface IElementError extends IActivityError {\n elementID: string;\n}\n\nexport class ElementContainer extends PropertyExt {\n\n private _nullElement;\n\n private _datasources: DatasourceRefType[] = [emptyDatabomb];\n private _elements: Element[] = [];\n\n constructor() {\n super();\n this.clear();\n this._nullElement = new Element(this);\n }\n\n clear(eid?: string) {\n this._datasources = eid === undefined ? [emptyDatabomb] : this._datasources;\n this._elements = eid === undefined ? [] : this._elements.filter(d => d.id() !== eid);\n }\n\n private _hookSend: IOptionsSend;\n hookSend(): IOptionsSend;\n hookSend(_: IOptionsSend): this;\n hookSend(_?: IOptionsSend): IOptionsSend | this {\n if (!arguments.length) return this._hookSend;\n this._hookSend = _;\n return this;\n }\n\n datasources(): DatasourceRefType[];\n datasources(_: DatasourceRefType[]): this;\n datasources(_?: DatasourceRefType[]): DatasourceRefType[] | this {\n if (!arguments.length) return this._datasources;\n this._datasources = _;\n return this;\n }\n\n datasource(id): DatasourceRefType {\n return this._datasources.filter(ds => ds.id() === id)[0];\n }\n\n appendDatasource(ds: DatasourceRefType): this {\n this._datasources.push(ds);\n return this;\n }\n\n removeDatasource(ds: DatasourceRefType): this {\n this._datasources = this._datasources.filter(row => row !== ds);\n return this;\n }\n\n elements(): Element[] {\n return [...this._elements];\n }\n\n element(w: string | PropertyExt | VizChartPanel): Element {\n let retVal: Element[];\n if (typeof w === \"string\") {\n retVal = this._elements.filter(viz => viz.id() === w);\n } else if (w instanceof VizChartPanel) {\n retVal = this._elements.filter(v => v.chartPanel() === w);\n } else {\n retVal = this._elements.filter(v => v.vizProps() === w);\n }\n if (retVal.length) {\n return retVal[0];\n }\n return this._nullElement;\n }\n\n elementExists(w: string | PropertyExt): boolean {\n return this.element(w) !== this._nullElement;\n }\n\n elementIDs() {\n return this._elements.map(viz => viz.id());\n }\n\n append(element: Element): this {\n this._elements.push(element);\n return this;\n }\n\n filteredBy(elemID: string): Element[] {\n return this._elements.filter(otherViz => {\n const filterIDs = otherViz.updatedBy();\n return filterIDs.indexOf(elemID) >= 0;\n });\n }\n\n views(): HipiePipeline[] {\n return this._elements.map(viz => viz.hipiePipeline());\n }\n\n view(id: string): HipiePipeline | undefined {\n return this.views().filter(view => view.id() === id)[0];\n }\n\n normalizePersist(seri: any): { [key: string]: { [key: string]: any } } {\n const ret = {};\n seri.__properties.content.map((n) => {\n const _is_MegaChart = !!n.__properties.widget.__properties.chart;\n const _cell = n;\n const _panel = n.__properties.widget;\n const _widget = _is_MegaChart ? n.__properties.widget.__properties.chart : n.__properties.widget.__properties.widget;\n const _id = n.__properties.widget.__id ? n.__properties.widget.__id : n.__properties.widget.__properties.widget.__id;\n ret[_id] = {\n id: _id,\n package: _widget.__class.split(\"_\")[0],\n object: _widget.__class.split(\"_\")[1],\n cell: _get_params(_cell, [\"chart\", \"widget\", \"fields\"]),\n panel: _get_params(_panel, [\"chart\", \"widget\", \"fields\"]),\n widget: _get_params(_widget, [\"fields\"])\n };\n });\n return ret;\n function _get_params(_o, exclude_list) {\n const ret = {};\n Object.keys(_o.__properties)\n .filter(n => exclude_list.indexOf(n) === -1)\n .forEach(n => ret[n] = _o.__properties[n]);\n return ret;\n }\n }\n\n validate(): IElementError[] {\n let retVal: IElementError[] = [];\n this._elements.forEach(elem => {\n retVal = retVal.concat(elem.validate());\n });\n return retVal;\n }\n\n refresh(): Promise<this> {\n return Promise.all(this.elements().map(element => element.refresh())).then(() => {\n return this;\n });\n }\n\n // Events ---\n vizStateChanged(viz: Element) {\n }\n}\nElementContainer.prototype._class += \" dashboard_ElementContainer\";\n\nexport interface ElementContainer {\n samples(): number;\n samples(_: number): this;\n sampleSize(): number;\n sampleSize(_: number): this;\n}\n\nElementContainer.prototype.publish(\"samples\", 10, \"number\", \"Number of samples\");\nElementContainer.prototype.publish(\"sampleSize\", 100, \"number\", \"Sample size\");","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import { IMonitorHandle, Widget } from \"@hpcc-js/common\";\nimport { compare } from \"@hpcc-js/util\";\nimport { ElementContainer } from \"./model/element.ts\";\nimport { IVizPopupPanelOwner, VizChartPanel, VizPopupPanel } from \"./model/vizChartPanel.ts\";\n\nexport class PopupManager extends Widget implements IVizPopupPanelOwner {\n protected _ec: ElementContainer;\n protected _popups: VizPopupPanel[] = [];\n protected _popupIdx: {\n [id: string]: {\n panel: VizPopupPanel,\n monitorHandle: IMonitorHandle\n }\n } = {};\n\n popupPanels(): VizPopupPanel[] {\n if (!this._popups) this._popups = [];\n if (!this._popupIdx) this._popupIdx = {};\n return this._popups;\n }\n\n popupChartPanels(): VizChartPanel[] {\n return this.popupPanels().map(p => p.widget() as VizChartPanel);\n }\n\n addPopup(cp: VizChartPanel) {\n const elem = this._ec.element(cp);\n const targetNode = this.element().node();\n const pp = new VizPopupPanel(this, elem)\n .target(targetNode)\n .widget(cp)\n .relativeTargetId(this.id())\n .size({\n width: cp.minWidth(),\n height: cp.minHeight()\n });\n this._popups.push(pp);\n this._popupIdx[cp.id()] = {\n panel: pp,\n monitorHandle: cp.monitor((id) => {\n switch (id) {\n case \"minWidth\":\n case \"minHeight\":\n pp\n .resize({ width: cp.minWidth(), height: cp.minHeight() })\n .render()\n ;\n break;\n }\n })\n };\n this._ec.filteredBy(elem.id()).forEach(otherElem => {\n otherElem.visualization().chartPanel().popup(pp);\n });\n }\n\n removePopup(cp: VizChartPanel) {\n const elem = this._ec.element(cp);\n this._ec.filteredBy(elem.id()).forEach(otherElem => {\n otherElem.visualization().chartPanel().popup(null);\n });\n this._popupIdx[cp.id()].panel.target(null);\n this._popupIdx[cp.id()].monitorHandle.remove();\n cp.target(null);\n delete this._popupIdx[cp.id()];\n this._popups = this._popups.filter(p => p.widget() !== cp);\n }\n\n syncPopups() {\n const prevPopups = this.popupChartPanels();\n const diffPopups = compare(prevPopups, this._ec.elements()\n .filter(e => e.visualization().visibility() === \"flyout\")\n .map((elem: any) => elem.visualization().chartPanel()))\n ;\n\n for (const w of diffPopups.exit) {\n this.removePopup(w);\n }\n\n for (const w of diffPopups.enter) {\n this.addPopup(w);\n }\n\n return this;\n }\n\n vizActivation() {\n }\n}\n","import { Widget } from \"@hpcc-js/common\";\nimport { DockPanel, IClosable, WidgetAdapter } from \"@hpcc-js/phosphor\";\nimport { compare } from \"@hpcc-js/util\";\nimport { select as d3Select } from \"d3-selection\";\nimport { Element, ElementContainer } from \"./model/element.ts\";\nimport { IVizPopupPanelOwner } from \"./model/vizChartPanel.ts\";\nimport { PopupManager } from \"./PopupManager.ts\";\n\nexport class DashboardDockPanel extends DockPanel implements IClosable, IVizPopupPanelOwner {\n\n constructor(private _ec: ElementContainer) {\n super();\n\n }\n\n tabTitle(element: Element): string {\n if (this.hideSingleTabs()) {\n return element.visualization().title ? element.visualization().title() : element.visualization().id();\n }\n return element.id();\n }\n\n titleClassed(wa: WidgetAdapter, classID: string, include: boolean) {\n let classes = wa.title.className.split(\" \");\n if (include && classes.indexOf(classID) < 0) {\n classes.push(classID);\n } else if (!include && classes.indexOf(classID) > 0) {\n classes = classes.filter(c => c !== classID);\n }\n wa.title.className = classes.join(\" \");\n }\n\n updateTitle(w: Widget) {\n const wa: WidgetAdapter = this.getWidgetAdapter(w);\n const element: Element = this._ec.element(w);\n const errors = element.validate();\n wa.title.label = this.tabTitle(element);\n this.titleClassed(wa, \"error\", errors.length > 0);\n wa.title.caption = errors.map(err => `${err.source}: ${err.msg}`).join(\"\\n\");\n }\n\n activate(element: Element) {\n const wa = this.getWidgetAdapter(element.visualization().chartPanel());\n if (wa) {\n wa.activate();\n }\n }\n\n syncMinSize(w: any): boolean {\n if (w.minWidth_exists() || w.minHeight_exists()) {\n const wa = this.getWidgetAdapter(w);\n d3Select(wa.node)\n .style(\"min-width\", `${w.minWidth()}px`)\n .style(\"min-height\", `${w.minHeight()}px`)\n ;\n return true;\n }\n return false;\n }\n\n syncWidgets() {\n const prevWidgets = this.widgets();\n const diffWidgets = compare(prevWidgets, this._ec.elements().filter(e => e.visualization().visibility() === \"normal\").map(viz => viz.visualization().chartPanel()));\n\n let refit = false;\n for (const w of diffWidgets.exit) {\n this.removeWidget(w);\n }\n\n for (const w of diffWidgets.enter) {\n const element: Element = this._ec.element(w);\n this.addWidget(w, this.tabTitle(element), \"split-bottom\", undefined, this.hideSingleTabs() ? undefined : this);\n refit = this.syncMinSize(w) || refit; // ensure syncMinSize is called\n }\n\n for (const w of diffWidgets.update) {\n this.updateTitle(w);\n refit = this.syncMinSize(w) || refit; // ensure syncMinSize is called\n }\n\n if (refit) {\n this.refit();\n }\n\n return this;\n }\n\n // Events ---\n childActivation(w: Widget, wa: WidgetAdapter) {\n super.childActivation(w, wa);\n this.vizActivation(this._ec.element(w));\n for (const wa2 of this.widgetAdapters()) {\n if (wa2 === wa) {\n wa2.addClass(\"active\");\n this.titleClassed(wa2, \"active\", true);\n wa2.title.iconClass = \"active\";\n } else {\n wa2.removeClass(\"active\");\n this.titleClassed(wa2, \"active\", false);\n wa2.title.iconClass = \"\";\n }\n }\n }\n\n vizActivation(viz: Element) {\n }\n\n // IClosable ---\n canClose(w: Widget, wa: WidgetAdapter): boolean {\n const id = this._ec.element(w).id();\n const retVal = window.confirm(`Remove Widget \"${id}\"?`);\n if (retVal) {\n this._ec.clear(id);\n this.syncWidgets();\n this.vizActivation(undefined);\n }\n return retVal;\n }\n\n syncPopups() { }\n}\nDashboardDockPanel.prototype._class += \" marshaller_DashboardDockPanel\";\nDashboardDockPanel.prototype.mixin(PopupManager);\n","import { Widget } from \"@hpcc-js/common\";\nimport { Cell, Grid } from \"@hpcc-js/layout\";\nimport { IClosable, WidgetAdapter } from \"@hpcc-js/phosphor\";\nimport { compare } from \"@hpcc-js/util\";\nimport { IDockPanel } from \"./dashboard.ts\";\nimport { Element, ElementContainer } from \"./model/element.ts\";\nimport { IVizPopupPanelOwner } from \"./model/vizChartPanel.ts\";\nimport { PopupManager } from \"./PopupManager.ts\";\n\nexport class DashboardGrid extends Grid implements IClosable, IVizPopupPanelOwner, IDockPanel {\n private _layoutCache = [];\n constructor(private _ec: ElementContainer) {\n super();\n\n this.designMode(false);\n this.surfacePadding(\"0\");\n this.surfaceBorderWidth(0);\n }\n updateGrid(resize, transitionDuration: number = 0, _noRender: boolean = false) {\n super.updateGrid(resize, transitionDuration, _noRender);\n this._layoutCache = this.content().map(cellWidget => {\n return {\n id: cellWidget.widget().id(),\n position: [\n cellWidget.gridCol(),\n cellWidget.gridRow(),\n cellWidget.gridColSpan(),\n cellWidget.gridRowSpan()\n ]\n };\n });\n }\n layoutObj(_: object | null): this {\n if (_) {\n if ((_ as any).main) {\n const convertedLayout = ddl2_layout(_, 10, 10);\n this._layoutCache = convertedLayout;\n } else if (_ instanceof Array) {\n this._layoutCache = _;\n }\n }\n return this;\n\n function ddl2_layout(layoutObject, rows, cols) {\n const ret = [];\n dive(layoutObject.main, 0, 0, rows, cols);\n return ret;\n function dive(o, x, y, w, h) {\n if (o.children) {\n if (o.type === \"split-area\") {\n if (o.orientation === \"horizontal\") {\n o.children.forEach((child, i) => {\n const _w = o.sizes[i] * w;\n const _h = h;\n const _x = i === 0 ? x : x + o.sizes[0] * w;\n const _y = y;\n dive(o.children[i], _x, _y, _w, _h);\n });\n } else if (o.orientation === \"vertical\") {\n o.children.forEach((child, i) => {\n const _w = w;\n const _h = o.sizes[i] * h;\n const _x = x;\n const _y = i === 0 ? y : y + o.sizes[0] * h;\n dive(o.children[i], _x, _y, _w, _h);\n });\n } else {\n console.error(\"wtf\");\n }\n } else if (o.type === \"tab-area\") {\n o.children.forEach((child, i) => {\n const _w = w;\n const _h = o.sizes[i] * h;\n const _x = x;\n const _y = i === 0 ? y : y + o.sizes[0] * h;\n dive(o.children[i], _x, _y, _w, _h);\n });\n }\n } else {\n ret.push([x, y, w, h].map(Math.round));\n }\n }\n }\n }\n layout() {\n return this._layoutCache;\n }\n widgets() {\n return this.content().map(c => c.widget());\n }\n hideSingleTabs() {\n return true;\n }\n getWidgetAdapter() {\n }\n\n tabTitle(element: Element): string {\n if (this.hideSingleTabs()) {\n return element.visualization().title ? element.visualization().title() : element.visualization().id();\n }\n return element.id();\n }\n\n updateTitle(w: Widget) {\n const cell: Cell = this.getWidgetCell(w.id());\n const element: Element = this._ec.element(w);\n const tabTitle = this.tabTitle(element);\n (cell.widget() as any)\n .title(tabTitle)\n ;\n }\n\n activate(element: Element) {\n }\n\n removeWidget(w: Widget) {\n const cell = this.getWidgetCell(w.id());\n this.clearContent(cell);\n }\n\n syncMinSize(w: any): boolean {\n if (w.minWidth_exists() || w.minHeight_exists()) {\n const cell: Cell = this.getWidgetCell(w.id());\n cell.element()\n .style(\"min-width\", `${w.minWidth()}px`)\n .style(\"min-height\", `${w.minHeight()}px`)\n ;\n return true;\n }\n return false;\n }\n\n syncWidgets() {\n const prevWidgets = this.widgets();\n const diffWidgets = compare(prevWidgets, this._ec.elements().filter(e => e.visualization().visibility() === \"normal\").map(viz => viz.visualization().chartPanel()));\n\n for (const w of diffWidgets.exit) {\n this.removeWidget(w);\n }\n let maxX = 0;\n let maxY = 0;\n const no_layout_added = [];\n for (const widget of diffWidgets.enter) {\n const element: Element = this._ec.element(widget);\n const i = this.content().length;\n if (this._layoutCache && this._layoutCache[i]) {\n const layout = (this._layoutCache as any).find(n => n.id === widget.id());\n if (layout) {\n const [x, y, w, h] = layout.position;\n this.setContent(y, x, element.visualization().chartPanel(), \"\", h, w);\n if (x + w > maxX) maxX = x + w;\n if (y + h > maxY) maxY = y + h;\n } else {\n no_layout_added.push(element.visualization().chartPanel());\n }\n } else {\n no_layout_added.push(element.visualization().chartPanel());\n }\n }\n let freeRow = this.content().reduce((prev, curr) => Math.max(prev, curr.gridRow() + curr.gridRowSpan()), 0);\n no_layout_added.forEach(cp => {\n this.setContent(freeRow, 0, cp, \"\", 3, 3);\n freeRow += 3;\n });\n for (const w of diffWidgets.update) {\n this.updateTitle(w);\n }\n return this;\n }\n\n // Events ---\n childActivation(w: Widget, wa?: WidgetAdapter) {\n this.vizActivation(this._ec.element(w));\n }\n\n postSelectionChange() {\n super.postSelectionChange();\n const selected = this._selectionBag.get();\n if (selected.length > 0) {\n this.childActivation(selected[0].widget.widget());\n }\n }\n\n vizActivation(viz: Element) {\n }\n\n // IClosable ---\n canClose(w: Widget, wa: WidgetAdapter): boolean {\n const id = this._ec.element(w).id();\n const retVal = window.confirm(`Remove Widget \"${id}\"?`);\n if (retVal) {\n this._ec.clear(id);\n this.syncWidgets();\n this.vizActivation(undefined);\n }\n return retVal;\n }\n\n syncPopups() { }\n}\nDashboardGrid.prototype._class += \" marshaller_DashboardGrid\";\nDashboardGrid.prototype.mixin(PopupManager);\n","import { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { scopedLogger } from \"@hpcc-js/util\";\nimport { BUILD_VERSION, PKG_NAME, PKG_VERSION } from \"../__package__.ts\";\nimport { ActivityPipeline, ReferencedFields } from \"./activities/activity.ts\";\nimport { Databomb } from \"./activities/databomb.ts\";\nimport { DatasourceRef, DatasourceRefType, DatasourceType } from \"./activities/datasource.ts\";\nimport { DSPicker } from \"./activities/dspicker.ts\";\nimport { Filters } from \"./activities/filter.ts\";\nimport { Form } from \"./activities/form.ts\";\nimport { GroupBy } from \"./activities/groupby.ts\";\nimport { Limit } from \"./activities/limit.ts\";\nimport { LogicalFile } from \"./activities/logicalfile.ts\";\nimport { Mappings, Project } from \"./activities/project.ts\";\nimport { Param, RestResult, RestResultRef, RestService } from \"./activities/rest.ts\";\nimport { HipieResultRef, RoxieResult, RoxieResultRef, RoxieService } from \"./activities/roxie.ts\";\nimport { Sort } from \"./activities/sort.ts\";\nimport { WU, WUResult, WUResultRef } from \"./activities/wuresult.ts\";\nimport { Dashboard } from \"./dashboard.ts\";\nimport { Element, ElementContainer } from \"./model/element.ts\";\nimport { Visualization } from \"./model/visualization.ts\";\n\nconst logger = scopedLogger(\"marshaller/ddl2/ddl\");\n\ntype DatasourceRefTypeMap = { [key: string]: { refType: DatasourceRefType, ref: DatasourceRef } };\ntype ServerRefTypeMap = { [key: string]: { ds: DatasourceType, result: DatasourceRefTypeMap } };\n\nclass DDLDatasourceAdapter {\n private _dsDedup: ServerRefTypeMap;\n\n constructor() {\n }\n\n clear() {\n this._dsDedup = {};\n }\n\n id(dsT: DatasourceType): string {\n if (dsT instanceof WU) {\n return `${dsT.url()}/${dsT.wuid()}`;\n } else if (dsT instanceof RoxieService) {\n return `${dsT.url()}/${dsT.querySet()}/${dsT.queryID()}`;\n } else if (dsT instanceof RestService) {\n return `${dsT.url()}/${dsT.action()}`;\n }\n return dsT.id();\n }\n\n _resolveID(dsT: DatasourceType): string {\n return this._dsDedup[this.id(dsT)].ds.id();\n }\n\n resolveID(dsRef: DatasourceRef): string | undefined {\n if (dsRef instanceof WUResultRef) {\n return this._resolveID(dsRef.datasource().wu());\n } else if (dsRef instanceof RoxieResultRef) {\n return this._resolveID(dsRef.datasource().service());\n } else if (dsRef instanceof HipieResultRef) {\n return this._resolveID(dsRef.datasource().service());\n } else if (dsRef instanceof RestResultRef) {\n return this._resolveID(dsRef.datasource().service());\n }\n }\n\n append(pDS: DSPicker | DatasourceRefType) {\n const refType: DatasourceRefType = pDS instanceof DSPicker ? pDS.datasource() : pDS;\n const ref: DatasourceRef = pDS instanceof DSPicker ? pDS.datasourceRef() : undefined;\n const dsTID = refType.id();\n const ds: DatasourceType = refType instanceof WUResult ? refType.wu() : refType instanceof RoxieResult ? refType.service() : refType instanceof RestResult ? refType.service() : refType;\n const dsID = this.id(ds);\n if (!this._dsDedup[dsID]) {\n this._dsDedup[dsID] = {\n ds,\n result: {}\n };\n }\n if (!this._dsDedup[dsID].result[dsTID]) {\n this._dsDedup[dsID].result[dsTID] = {\n refType,\n ref\n };\n }\n }\n\n getAll(): DDL2.DatasourceType[] {\n const retVal: DDL2.DatasourceType[] = [];\n for (const key in this._dsDedup) {\n const ddl = this._dsDedup[key].ds.toDDL();\n\n // Inputs ---\n if (ddl.type === \"roxie\" || ddl.type === \"hipie\" || ddl.type === \"rest\") {\n const inputs: { [fieldID: string]: DDL2.IField } = {};\n for (const key2 in this._dsDedup[key].result) {\n const ddl2 = this._dsDedup[key].result[key2].refType.toDDL();\n const refs: ReferencedFields = {\n inputs: {},\n outputs: {}\n };\n this._dsDedup[key].result[key2].ref.referencedFields(refs);\n for (const inElementID in refs.inputs) {\n refs.inputs[inElementID].forEach(fieldID => {\n inputs[fieldID] = (ddl2 as any).inputs.filter(row => row.id === fieldID)[0];\n });\n }\n }\n ddl.inputs = [];\n for (const key in inputs) {\n ddl.inputs.push(inputs[key]);\n }\n }\n\n // Outputs ---\n if (ddl.type === \"wuresult\" || ddl.type === \"roxie\" || ddl.type === \"hipie\" || ddl.type === \"rest\") {\n const outputs: { [fieldID: string]: DDL2.IOutput } = {};\n for (const key2 in this._dsDedup[key].result) {\n const ddl2 = this._dsDedup[key].result[key2].refType.toDDL();\n if (ddl2.type === \"wuresult\" || ddl2.type === \"roxie\" || ddl2.type === \"hipie\" || ddl2.type === \"rest\") {\n for (const outputID in ddl2.outputs) {\n outputs[outputID] = ddl2.outputs[outputID];\n }\n }\n }\n ddl.outputs = {};\n for (const key in outputs) {\n ddl.outputs[key] = outputs[key];\n }\n }\n retVal.push(ddl);\n }\n return retVal;\n }\n}\n\nexport class DDLAdapter {\n private _dashboard: Dashboard;\n private _ec: ElementContainer;\n private _dsWriteDedup: DDLDatasourceAdapter = new DDLDatasourceAdapter();\n private _dsReadDedup: { [id: string]: WU | RoxieService | RestService } = {};\n\n constructor(dashboard: Dashboard) {\n this._dashboard = dashboard;\n this._ec = this._dashboard.elementContainer();\n }\n\n writeDatasources(): DDL2.DatasourceType[] {\n for (const viz of this._ec.elements()) {\n this._dsWriteDedup.append(viz.hipiePipeline().datasource());\n }\n return this._dsWriteDedup.getAll();\n }\n\n writeFilters(filters: Filters): DDL2.IFilter {\n if (!filters.exists()) return undefined;\n return filters.toDDL();\n }\n\n readFilters(ddlFilter: DDL2.IFilter, ec: ElementContainer): Filters {\n return Filters.fromDDL(ec, ddlFilter);\n }\n\n writeProject(project: Project): DDL2.IProject {\n if (!project.exists()) return undefined;\n return project.toDDL();\n }\n\n readProject(ddlProject: DDL2.IProject): Project {\n return Project.fromDDL(ddlProject);\n }\n\n writeMappings(mappings: Mappings): DDL2.IMappings {\n if (!mappings.exists()) return { type: \"mappings\", transformations: [] };\n return mappings.toDDL();\n }\n\n readMappings(ddlProject: DDL2.IMappings): Mappings {\n return Mappings.fromDDL(ddlProject);\n }\n\n writeGroupBy(gb: GroupBy): DDL2.IGroupBy {\n if (!gb.exists()) return undefined;\n return gb.toDDL();\n }\n\n readGroupBy(ddlGB: DDL2.IGroupBy): GroupBy {\n return GroupBy.fromDDL(ddlGB);\n }\n\n writeSort(sort: Sort): DDL2.ISort {\n if (!sort.exists()) return undefined;\n return sort.toDDL();\n }\n\n readSort(ddlSort: DDL2.ISort): Sort {\n return Sort.fromDDL(ddlSort);\n }\n\n writeLimit(limit: Limit): DDL2.ILimit {\n if (!limit.exists()) return undefined;\n return limit.toDDL();\n }\n\n readLimit(ddlLimit: DDL2.ILimit): Limit {\n return Limit.fromDDL(ddlLimit);\n }\n\n readDatasourceRef(ddlDSRef: DDL2.IDatasourceRef, dsPicker: DSPicker, elementContainer: ElementContainer): this {\n if (DDL2.isWUResultRef(ddlDSRef)) {\n const wu = this._dsReadDedup[ddlDSRef.id] as WU;\n dsPicker.datasourceID(wu.output(ddlDSRef.output).id());\n } else if (DDL2.isRoxieServiceRef(ddlDSRef)) {\n dsPicker.datasourceID(`${ddlDSRef.id}_${ddlDSRef.output}`);\n const dsRef = dsPicker.datasourceRef() as RoxieResultRef | RestResultRef;\n dsRef\n .request(ddlDSRef.request.map(rf => {\n return Param.fromDDL(this._ec, rf);\n }))\n ;\n } else {\n dsPicker.datasourceID(ddlDSRef.id);\n }\n return this;\n }\n\n writeActivities(view: ActivityPipeline): DDL2.ActivityType[] {\n return view.activities().map(activity => {\n if (activity instanceof Filters) {\n return this.writeFilters(activity);\n } else if (activity instanceof Project) {\n return this.writeProject(activity);\n } else if (activity instanceof GroupBy) {\n return this.writeGroupBy(activity);\n } else if (activity instanceof Sort) {\n return this.writeSort(activity);\n } else if (activity instanceof Limit) {\n return this.writeLimit(activity);\n } else if (activity instanceof Mappings) {\n return this.writeMappings(activity);\n } else if (activity instanceof DSPicker) {\n // Fall through ---\n } else {\n logger.warning(`Unknown activity type: ${activity.classID()}`);\n }\n }).filter(activity => !!activity);\n }\n\n writeVisualization(visualization: Visualization): DDL2.IVisualization {\n return {\n id: visualization.chartPanel().id(),\n title: visualization.title(),\n description: visualization.description(),\n visibility: visualization.visibility(),\n chartType: visualization.chartType(),\n __class: visualization.chartPanel().widget().classID(),\n mappings: this.writeMappings(visualization.mappings()),\n properties: visualization.properties()\n };\n }\n\n readVisualization(ddlViz: DDL2.IVisualization, visualization: Visualization): this {\n const mappings = this.readMappings(ddlViz.mappings);\n visualization.chartPanel().id(ddlViz.id);\n visualization\n .title(ddlViz.title)\n .description(ddlViz.description)\n .visibility(ddlViz.visibility)\n .chartType(ddlViz.chartType as any)\n .properties(ddlViz.properties)\n .mappings(mappings)\n ;\n return this;\n }\n\n writeViewDatasource(dsRef: DatasourceRef) {\n const retVal = dsRef.toDDL();\n retVal.id = this._dsWriteDedup.resolveID(dsRef) || retVal.id;\n return retVal;\n }\n\n writeDDLViews(): DDL2.IView[] {\n // Gather referenced fields ---\n const refFields: ReferencedFields = { inputs: {}, outputs: {} };\n for (const element of this._ec.elements()) {\n element.visualization().mappings().referencedFields(refFields);\n }\n\n return this._ec.elements().map(element => {\n const view = element.hipiePipeline();\n const dsPicker = view.datasource();\n if (dsPicker instanceof DSPicker) {\n const dsRef = dsPicker.datasourceRef();\n const retVal = {\n id: element.id(),\n datasource: this.writeViewDatasource(dsRef),\n activities: this.writeActivities(view),\n visualization: this.writeVisualization(element.visualization())\n };\n return retVal;\n }\n throw new Error(\"Missing DSPicker?\");\n });\n }\n\n writeProperties(): DDL2.IProperties {\n return {\n name: PKG_NAME,\n version: PKG_VERSION,\n buildVersion: BUILD_VERSION,\n layout: this._dashboard.layout() as any\n };\n }\n\n readDDLViews(ddlViews: DDL2.IView[]) {\n for (const ddlView of ddlViews) {\n const element = new Element(this._ec).id(ddlView.id);\n this._ec.append(element);\n const hipiePipeline = element.hipiePipeline();\n this.readDatasourceRef(ddlView.datasource, hipiePipeline.datasource() as DSPicker, this._ec);\n for (const activity of ddlView.activities) {\n if (DDL2.isProjectActivity(activity)) {\n const project = this.readProject(activity);\n hipiePipeline.project(project);\n }\n if (DDL2.isFilterActivity(activity)) {\n const filters = this.readFilters(activity, this._ec);\n hipiePipeline.filters(filters);\n }\n if (DDL2.isGroupByActivity(activity)) {\n const groupBy = this.readGroupBy(activity);\n hipiePipeline.groupBy(groupBy);\n }\n if (DDL2.isSortActivity(activity)) {\n const sort = this.readSort(activity);\n hipiePipeline.sort(sort);\n }\n if (DDL2.isLimitActivity(activity)) {\n const limit = this.readLimit(activity);\n hipiePipeline.limit(limit);\n }\n }\n this.readVisualization(ddlView.visualization, element.visualization());\n }\n }\n\n readProperties(properties: DDL2.IProperties) {\n if (properties && properties.layout) {\n this._dashboard.layoutObj(properties.layout as object);\n }\n }\n\n write(): DDL2.Schema {\n this._dsWriteDedup.clear();\n const retVal: DDL2.Schema = {\n version: \"2.2.1\",\n createdBy: {\n name: PKG_NAME,\n version: PKG_VERSION\n },\n datasources: this.writeDatasources(),\n dataviews: this.writeDDLViews(),\n properties: this.writeProperties(),\n hipieProperties: this._dashboard.hipieProps()\n };\n return retVal;\n }\n\n read(ddl: DDL2.Schema) {\n this._dsWriteDedup.clear();\n for (const ddlDS of ddl.datasources) {\n switch (ddlDS.type) {\n case \"databomb\":\n this._ec.appendDatasource(Databomb.fromDDL(ddlDS));\n break;\n case \"form\":\n this._ec.appendDatasource(Form.fromDDL(ddlDS));\n break;\n case \"logicalfile\":\n this._ec.appendDatasource(LogicalFile.fromDDL(this._ec, ddlDS));\n break;\n case \"wuresult\":\n const wu = WU.fromDDL(this._ec, ddlDS);\n this._dsReadDedup[wu.id()] = wu;\n for (const resultName in ddlDS.outputs) {\n this._ec.appendDatasource(wu.output(resultName));\n }\n break;\n case \"roxie\":\n case \"hipie\":\n const rs = RoxieService.fromDDL(this._ec, ddlDS);\n this._dsReadDedup[rs.id()] = rs;\n for (const resultName in ddlDS.outputs) {\n this._ec.appendDatasource(RoxieResult.fromDDL(this._ec, rs, resultName));\n }\n break;\n case \"rest\":\n const rs2 = RestService.fromDDL(this._ec, ddlDS);\n this._dsReadDedup[rs2.id()] = rs2;\n for (const resultName in ddlDS.outputs) {\n this._ec.appendDatasource(RestResult.fromDDL(this._ec, rs2, resultName));\n }\n break;\n default:\n logger.warning(`Unknown ddl datasource type: ${(ddlDS as any).type} `);\n }\n }\n this.readDDLViews(ddl.dataviews);\n this.readProperties(ddl.properties);\n this._dashboard.hipieProps(ddl.hipieProperties);\n }\n}\n","import { PropertyExt } from \"@hpcc-js/common\";\nimport { DDL2 } from \"@hpcc-js/ddl-shim\";\nimport { classID2Meta, ClassMeta, isArray } from \"@hpcc-js/util\";\nimport { Activity, stringify } from \"./activities/activity.ts\";\nimport { Dashboard } from \"./dashboard.ts\";\nimport { DDLAdapter } from \"./ddl.ts\";\nimport { ElementContainer } from \"./model/element.ts\";\n\ntype WidgetImport = { [moduleID: string]: { [classID: string]: boolean } };\n\nclass Imports {\n _moduleMap: WidgetImport = {};\n\n append(widgetMeta: ClassMeta) {\n if (!this._moduleMap[widgetMeta.module]) {\n this._moduleMap[widgetMeta.module] = {};\n }\n this._moduleMap[widgetMeta.module][widgetMeta.class] = true;\n }\n\n write(): string {\n const importJS: string[] = [];\n for (const moduleID in this._moduleMap) {\n const classIDs: string[] = [];\n for (const classID in this._moduleMap[moduleID]) {\n classIDs.push(classID);\n }\n classIDs.sort();\n importJS.push(`import { ${classIDs.join(\", \")} } from \"${moduleID}\";`);\n }\n return importJS.join(\"\\n\");\n }\n}\n\nexport function createProps(pe: PropertyExt): { [key: string]: any } {\n const retVal: { [key: string]: any } = {};\n for (const meta of pe.publishedProperties()) {\n if (pe[meta.id + \"_modified\"]() && meta.id !== \"fields\") {\n const val = pe[meta.id]();\n switch (meta.type) {\n case \"propertyArray\":\n const serialization = val.map(createProps);\n if (serialization) {\n retVal[meta.id] = serialization;\n }\n break;\n default:\n retVal[meta.id] = val;\n }\n }\n }\n return retVal;\n}\n\nexport class JavaScriptAdapter {\n private _dashboard: Dashboard;\n private _ec: ElementContainer;\n private _ddlAdapter: DDLAdapter;\n private _ddlSchema: DDL2.Schema;\n\n constructor(dashboard: Dashboard) {\n this._dashboard = dashboard;\n this._ec = this._dashboard.elementContainer();\n this._ddlAdapter = new DDLAdapter(this._dashboard);\n this._ddlSchema = this._ddlAdapter.write();\n }\n\n createProps(prefix: string, pe: PropertyExt, postfix: string = \"\"): string[] {\n let retVal: string[] = [];\n for (const meta of pe.publishedProperties()) {\n if ((pe as any)[meta.id + \"_exists\"]()) {\n switch (meta.type) {\n case \"string\":\n case \"set\":\n retVal.push(`${prefix}.${meta.id}(\"${(pe as any)[meta.id]()}\")${postfix};`);\n break;\n case \"number\":\n case \"boolean\":\n retVal.push(`${prefix}.${meta.id}(${(pe as any)[meta.id]()})${postfix};`);\n break;\n case \"widget\":\n retVal = retVal.concat(this.createProps(`${prefix}.${meta.id}()`, (pe as any)[meta.id]()));\n break;\n case \"propertyArray\":\n if (meta.ext)\n retVal.push(`${prefix}.${meta.id}([${(pe as any)[meta.id]()}])${postfix};`);\n break;\n default:\n break;\n }\n }\n }\n return retVal;\n }\n\n writeMeta(dsDetails: Activity) {\n return \"\";\n }\n\n private safeID(id: string): string {\n if (!id) return id;\n return id.replace(/ /g, \"_\").replace(/\\./g, \"_\");\n }\n\n private datasourceRefID(view: DDL2.IView): string {\n const datasourceRef = view.datasource;\n if (DDL2.isRoxieServiceRef(datasourceRef)) {\n return `${this.safeID(datasourceRef.id)}_${this.safeID(datasourceRef.output)}_${this.safeID(view.id)}`;\n } else if (DDL2.isWUResultRef(datasourceRef)) {\n return `${this.safeID(datasourceRef.id)}_${this.safeID(datasourceRef.output)}`;\n }\n return `${this.safeID(datasourceRef.id)}`;\n }\n\n _dedup: { [key: string]: boolean } = {};\n private writeDatasource(view: DDL2.IView): string[] {\n const datasourceRef = view.datasource;\n const retVal: string[] = [];\n const datasource = this._ddlSchema.datasources.filter(ds => ds.id === datasourceRef.id)[0];\n const outputID = (datasourceRef as any).output;\n const id = this.datasourceRefID(view);\n if (!this._dedup[id]) {\n this._dedup[id] = true;\n switch (datasource.type) {\n case \"wuresult\":\n const wuID = this.safeID(view.datasource.id);\n if (!this._dedup[wuID]) {\n this._dedup[wuID] = true;\n retVal.push(` export const ${wuID} = new marshaller.WU()\n .url(\"${datasource.url}\")\n .wuid(\"${datasource.wuid}\")\n ;`);\n }\n retVal.push(` export const ${id} = new marshaller.WUResult()\n .wu(${wuID})\n .resultName(\"${outputID}\")\n .responseFields(${stringify(datasource.outputs[outputID].fields)})\n ;`);\n break;\n case \"logicalfile\":\n retVal.push(` export const ${id} = new marshaller.LogicalFile()\n .url(\"${datasource.url}\")\n .logicalFile(\"${datasource.logicalFile}\")\n .responseFields(${stringify(datasource.fields)})\n ;`);\n break;\n case \"hipie\":\n case \"roxie\":\n const serviceID = this.safeID(view.datasource.id);\n if (!this._dedup[serviceID]) {\n this._dedup[serviceID] = true;\n retVal.push(` export const ${serviceID} = new marshaller.RoxieService(ec)\n .url(\"${datasource.url}\")\n .querySet(\"${datasource.querySet}\")\n .queryID(\"${datasource.queryID}\")\n .requestFields(${stringify(datasource.inputs)})\n ;`);\n }\n const resultID = serviceID + \"_\" + this.safeID(outputID);\n if (!this._dedup[resultID]) {\n this._dedup[resultID] = true;\n retVal.push(` export const ${resultID} = new marshaller.RoxieResult(ec)\n .service(${serviceID})\n .resultName(\"${outputID}\")\n .responseFields(${stringify(datasource.outputs[outputID].fields)})\n ;`);\n }\n retVal.push(` export const ${id} = new marshaller.HipieResultRef(ec)\n .datasource(${resultID})\n .requestFieldRefs(${stringify((datasourceRef as DDL2.IRoxieServiceRef).request)})\n ;`);\n break;\n case \"databomb\":\n {\n retVal.push(` export const ${id} = new marshaller.Databomb()\n .format(\"${datasource.format}\")\n .payload(${JSON.stringify(datasource.payload)})\n ;`);\n }\n break;\n case \"form\":\n {\n const fromFields: string[] = [];\n for (const field of datasource.fields) {\n fromFields.push(`new marshaller.FormField().fieldID(\"${field.id}\").default(\"${field.default || \"\"}\")`);\n }\n retVal.push(` export const ${id} = new marshaller.Form()\n .formFields([\n ${fromFields.join(\",\\n \")}\n ])\n ;`);\n }\n break;\n }\n }\n return retVal;\n }\n\n private writeActivity(activity: DDL2.ActivityType): string {\n switch (activity.type) {\n case \"filter\":\n return `new marshaller.Filters(ec).conditions(${stringify(activity.conditions)})`;\n case \"project\":\n return `new marshaller.Project().transformations(${stringify(activity.transformations)})`;\n case \"groupby\":\n return `new marshaller.GroupBy().fieldIDs(${JSON.stringify(activity.groupByIDs)}).aggregates(${stringify(activity.aggregates)})`;\n case \"sort\":\n return `new marshaller.Sort().conditions(${stringify(activity.conditions)})`;\n case \"limit\":\n return `new marshaller.Limit().rows(${activity.limit})`;\n case \"mappings\":\n return `new marshaller.Mappings().transformations(${stringify(activity.transformations)})`;\n }\n }\n\n writeWidgetProps(pe: PropertyExt): string[] {\n const retVal: string[] = [];\n for (const meta of pe.publishedProperties()) {\n if ((pe as any)[meta.id + \"_modified\"]() && meta.id !== \"fields\") {\n retVal.push(`.${meta.id}(${JSON.stringify((pe as any)[meta.id]())})`);\n }\n }\n return retVal;\n }\n\n private joinWithPrefix(props: DDL2.IWidgetProperties, imports: Imports, joinStr: string, postFix: string): string {\n let retVal: string = \"\";\n let meta: ClassMeta;\n if (props.__class) {\n meta = classID2Meta(props.__class);\n imports.append(meta);\n retVal += `new ${meta.class}()`;\n }\n for (const prop in props) {\n if (prop === \"__class\") {\n } else if (isArray(props[prop])) {\n const arr = `${(props[prop] as any[]).map(item => this.joinWithPrefix(item, imports, joinStr + \" \", \"\")).join(`,${joinStr} `)}`;\n if (arr) {\n retVal += `${joinStr} .${prop}([${joinStr} ${arr}${joinStr} ])${postFix}`;\n }\n } else {\n retVal += `${joinStr} .${prop}(${JSON.stringify(props[prop])})${postFix}`;\n }\n }\n return retVal;\n }\n\n private writeWidget(dataview: DDL2.IView, imports: Imports): string {\n return ` export const ${dataview.visualization.id} = new marshaller.VizChartPanel()\n .id(\"${dataview.visualization.id}\")\n .title(\"${dataview.visualization.title}\")\n .widget(${this.joinWithPrefix(dataview.visualization.properties[\"widget\"] as any, imports, \"\\n \", \"\")})\n ;`;\n }\n\n private writeElement(dataview: DDL2.IView) {\n const activities: string[] = [`data.${this.datasourceRefID(dataview)}`];\n for (const activity of dataview.activities) {\n activities.push(this.writeActivity(activity));\n }\n const updates: string[] = [];\n for (const filteredViz of this._ec.filteredBy(dataview.id)) {\n updates.push(`${filteredViz.id()}.refresh();`);\n }\n return `\nconst ${dataview.id} = new marshaller.Element(ec)\n .id(\"${dataview.id}\")\n .pipeline([\n ${activities.join(\",\\n \")}\n ])\n .mappings(new marshaller.Mappings().transformations(${stringify(dataview.visualization.mappings.transformations)}))\n .chartPanel(viz.${dataview.visualization.id})\n .on(\"selectionChanged\", () => {\n ${updates.join(\"\\n \")}\n }, true)\n ;\n${dataview.id}.visualization()\n .visibility(\"${dataview.visualization.visibility}\")\n .secondaryDataviewID(\"${dataview.visualization.secondaryDataviewID || \"\"}\")\n ;\nec.append(${dataview.id});\n`;\n }\n\n private writeDatasources(): string[] {\n let retVal: string[] = [];\n for (const dataview of this._ddlSchema.dataviews) {\n retVal = retVal.concat(this.writeDatasource(dataview));\n }\n return retVal;\n }\n\n private writeWidgets(): { widgetImports: string, widgetDefs: string } {\n const jsDef: string[] = [];\n const imports = new Imports();\n for (const dataview of this._ddlSchema.dataviews) {\n jsDef.push(this.writeWidget(dataview, imports));\n }\n return {\n widgetImports: imports.write(),\n widgetDefs: jsDef.join(\"\\n\\n\")\n };\n }\n\n private writeElements(): string {\n let retVal = \"\";\n for (const dataview of this._ddlSchema.dataviews) {\n retVal += this.writeElement(dataview);\n }\n return retVal;\n }\n\n createJavaScript(): string {\n const widgets = this.writeWidgets();\n\n return `\\\n${widgets.widgetImports}\nimport * as marshaller from \"@hpcc-js/marshaller\";\n\n// Dashboard Element Container (Model) ---\nconst ec = new marshaller.ElementContainer();\n\nnamespace data {\n${this.writeDatasources().join(\"\\n\")}\n}\n\nnamespace viz {\n${widgets.widgetDefs}\n}\n\n// Dashboard Elements (Controller) ---\n${this.writeElements().trim()}\n\nec.refresh();\n\n// Optional ---\nconst errors = ec.validate();\nfor (const error of errors) {\n console.error(error.elementID + \" (\" + error.source + \"): \" + error.msg);\n}\n\nexport const dashboard = new marshaller.Dashboard(ec)\n .target(\"placeholder\")\n .titleVisible(false)\n .hideSingleTabs(true)\n .layoutObj(${stringify(this._dashboard.layout())})\n .render()\n ;\n\n// @ts-ignore\nconst ddl = ${JSON.stringify(this._ddlSchema)};\n`;\n }\n}\n","import { Button, Spacer, ToggleButton, Widget } from \"@hpcc-js/common\";\nimport { DDL1, DDL2, isDDL2Schema, upgrade } from \"@hpcc-js/ddl-shim\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { text as d3Text } from \"d3-fetch\";\nimport { Activity } from \"./activities/activity.ts\";\nimport { Databomb } from \"./activities/databomb.ts\";\nimport { DSPicker } from \"./activities/dspicker.ts\";\nimport { Filters } from \"./activities/filter.ts\";\nimport { Form, FormField } from \"./activities/form.ts\";\nimport { GroupBy } from \"./activities/groupby.ts\";\nimport { Limit } from \"./activities/limit.ts\";\nimport { Project } from \"./activities/project.ts\";\nimport { Sort } from \"./activities/sort.ts\";\nimport { DashboardDockPanel } from \"./dashboardDockPanel.ts\";\nimport { DashboardGrid } from \"./dashboardGrid.ts\";\nimport { DDLAdapter } from \"./ddl.ts\";\nimport { JavaScriptAdapter } from \"./javascriptadapter.ts\";\nimport { Element, ElementContainer } from \"./model/element.ts\";\n\nimport \"../../src/ddl2/dashboard.css\";\n\nexport interface IDockPanel {\n layoutObj(_: object | null): this;\n layout();\n widgets();\n activate(element: Element);\n hideSingleTabs(bool?: boolean);\n syncWidgets();\n syncPopups();\n}\n\nexport class Dashboard extends ChartPanel {\n\n private _dockPanel: IDockPanel;\n\n private _designModeButton = new ToggleButton().faChar(\"fa-object-group\").tooltip(\"Design Mode...\")\n .selected(true)\n .on(\"click\", () => {\n if (this._dockPanel instanceof DashboardGrid) {\n this._dockPanel\n .designMode(this._designModeButton.selected())\n .lazyRender()\n ;\n }\n });\n\n private _addButton = new Button().faChar(\"fa-plus\").tooltip(\"Add...\")\n .on(\"click\", () => {\n const newElem = new Element(this._ec);\n this._ec.append(newElem);\n this.renderPromise().then(() => {\n newElem.refresh().then(() => {\n this.activate(newElem);\n });\n });\n });\n\n private _removeButton = new Button().faChar(\"fa-minus\").tooltip(\"Remove...\")\n .enabled(false)\n .on(\"click\", () => {\n const elem = this._prevActive;\n if (elem && window.confirm(`Remove Widget \"${elem.id()}\"?`)) {\n this._ec.clear(elem.id());\n this.renderPromise().then(() => {\n this.vizActivation(undefined);\n });\n }\n });\n\n private _reloadButton = new Button().faChar(\"fa-refresh\").tooltip(\"Reload...\")\n .on(\"click\", () => {\n const json = this.save();\n this._ec.clear();\n this.vizActivation(undefined);\n this.renderPromise().then(() => {\n this.restore(json);\n this.renderPromise().then(() => {\n this._ec.refresh().then(() => {\n });\n });\n });\n });\n\n private _addSamples = new Button().faChar(\"fa-database\").tooltip(\"Add Samples\")\n .on(\"click\", () => {\n Promise.all([\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/airports.csv\"),\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/carriers.csv\"),\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/stats.csv\")\n ]).then(([airports, carriers, stats]) => {\n const popupElement = this.addForm(\"popup\", {\n type: \"form\",\n id: \"global_filter\",\n fields: [{\n type: \"string\",\n id: \"Airport\"\n }, {\n type: \"string\",\n id: \"Airline\"\n }]\n });\n popupElement.visualization()\n .title(\"Global Filter\")\n .visibility(\"flyout\")\n .chartType(\"FieldForm\")\n ;\n const airportsElement = this.addDatabomb(\"airports\", airports, \"csv\",\n [\n new FormField().fieldID(\"code\").type(\"string\"),\n new FormField().fieldID(\"name\").type(\"string\"),\n new FormField().fieldID(\"count\").type(\"number\")\n ],\n new Filters(this._ec).remoteFilter([\n new Filters.Filter().source(popupElement.id()).mappings([new Filters.Mapping().remoteField(\"Airport\").localField(\"code\").nullable(true)])\n ]),\n new Sort().column([new Sort.Column().fieldID(\"count\").descending(true)])\n );\n airportsElement.chartPanel().title(\"Airports\");\n const carrierElement = this.addDatabomb(\"carriers\", carriers, \"csv\",\n [\n new FormField().fieldID(\"code\").type(\"string\"),\n new FormField().fieldID(\"name\").type(\"string\"),\n new FormField().fieldID(\"count\").type(\"number\")\n ],\n new Filters(this._ec).remoteFilter([\n new Filters.Filter().source(popupElement.id()).mappings([new Filters.Mapping().remoteField(\"Airline\").localField(\"code\").nullable(true)])\n ]),\n new Sort().column([new Sort.Column().fieldID(\"count\").descending(true)])\n );\n carrierElement.chartPanel().title(\"Airlines\");\n const statsElement = this.addDatabomb(\"stats\", stats, \"csv\",\n [],\n new Filters(this._ec).remoteFilter([\n new Filters.Filter().source(airportsElement.id()).mappings([new Filters.Mapping().remoteField(\"code\").localField(\"airport\")]),\n new Filters.Filter().source(carrierElement.id()).mappings([new Filters.Mapping().remoteField(\"code\").localField(\"carrier\").nullable(true)])\n ]));\n statsElement.chartPanel().title(\"Stats\");\n return Promise.all([\n popupElement.refresh(),\n airportsElement.refresh(),\n carrierElement.refresh(),\n statsElement.refresh()\n ]);\n }).then(() => {\n this.render();\n });\n });\n\n addDatabomb(label: string, payload: string, format: \"csv\" | \"tsv\" | \"json\" = \"csv\", databombFields: FormField[], ...activities: Activity[]): Element {\n const databomb = new Databomb().id(label).format(format).payload(payload);\n if (databombFields.length > 0) {\n databomb.databombFields(databombFields);\n }\n this._ec.appendDatasource(databomb);\n const newElem = new Element(this._ec);\n const ds = newElem.hipiePipeline().datasource();\n if (ds instanceof DSPicker) {\n ds.datasourceID(databomb.id());\n }\n for (const activity of activities) {\n if (activity instanceof Filters) {\n newElem.hipiePipeline().filters(activity);\n } else if (activity instanceof Project) {\n newElem.hipiePipeline().project(activity);\n } else if (activity instanceof GroupBy) {\n newElem.hipiePipeline().groupBy(activity);\n } else if (activity instanceof Sort) {\n newElem.hipiePipeline().sort(activity);\n } else if (activity instanceof Limit) {\n newElem.hipiePipeline().limit(activity);\n }\n }\n this._ec.append(newElem);\n return newElem;\n }\n\n addForm(label: string, ddl: DDL2.IForm): Element {\n const databomb = new Form().id(label).fromDDL(ddl);\n this._ec.appendDatasource(databomb);\n const newElem = new Element(this._ec);\n const ds = newElem.hipiePipeline().datasource();\n if (ds instanceof DSPicker) {\n ds.datasourceID(databomb.id());\n }\n this._ec.append(newElem);\n return newElem;\n }\n\n static create(target: string, ddl: DDL2.Schema): Promise<Dashboard> {\n return new Promise((resolve, reject) => {\n const ec = new ElementContainer();\n const dashboard = new Dashboard(ec)\n .target(target)\n .hideSingleTabs(true)\n .titleVisible(false)\n .restore(ddl)\n .render(w => {\n ec.refresh().then(() => {\n resolve(dashboard);\n });\n });\n });\n }\n\n constructor(private _ec: ElementContainer) {\n super();\n this._ec.on(\"vizStateChanged\", (viz) => {\n this.vizStateChanged(viz);\n });\n this.buttons([this._designModeButton, new Spacer(), this._addButton, this._removeButton, new Spacer(), this._reloadButton, new Spacer(), this._addSamples]);\n this.ensureDockPanel(\"dock\");\n }\n\n ensureDockPanel(mode: \"dock\" | \"grid\" = \"dock\") {\n if ((mode === \"dock\" && !(this._dockPanel instanceof DashboardDockPanel)) || (mode === \"grid\" && !(this._dockPanel instanceof DashboardGrid))) {\n this._dockPanel = (mode === \"dock\" ? new DashboardDockPanel(this._ec) : new DashboardGrid(this._ec).designMode(this.titleVisible()))\n .on(\"vizActivation\", (elem: Element) => {\n this.vizActivation(elem);\n })\n ;\n this.widget(this._dockPanel as any);\n }\n }\n\n elementContainer(): ElementContainer {\n return this._ec;\n }\n\n private _hipieProps;\n hipieProps(): DDL2.IProperties;\n hipieProps(_: DDL2.IProperties): this;\n hipieProps(_?: DDL2.IProperties): DDL2.IProperties | this {\n if (!arguments.length) return this._hipieProps;\n this._hipieProps = _;\n return this;\n }\n\n ddl(): DDL2.Schema;\n ddl(_: DDL2.Schema): this;\n ddl(_?: DDL2.Schema): DDL2.Schema | this {\n const ddlAdapter = new DDLAdapter(this);\n if (!arguments.length) return ddlAdapter.write();\n this._ec.clear();\n ddlAdapter.read(_);\n return this;\n }\n\n // Used to delay load a layout after a render...\n layoutObj(_: object | null): this {\n this._dockPanel.layoutObj(_);\n return this;\n }\n\n save(): DDL2.Schema {\n const ddlAdapter = new DDLAdapter(this);\n return ddlAdapter.write();\n }\n\n serializeDDL(): string {\n return JSON.stringify(this.save());\n }\n\n deserializeDDL(json: string): this {\n return this.restore(JSON.parse(json) as DDL2.Schema);\n }\n\n restore(_: DDL2.Schema, render: boolean = false): this {\n this.ensureDockPanel(_ && _.properties && _.properties.layout instanceof Array ? \"grid\" : \"dock\");\n this._ec.clear();\n const ddlAdapter = new DDLAdapter(this);\n ddlAdapter.read(_);\n if (render) {\n this.renderPromise().then(() => {\n this._ec.refresh();\n });\n }\n return this;\n }\n\n importDDL(ddl: DDL1.DDLSchema | DDL2.Schema, baseUrl?: string, wuid?: string, dermatologyJson: object = {}): this {\n const ddl2: DDL2.Schema = isDDL2Schema(ddl) ? ddl : upgrade(ddl, baseUrl, wuid, true, dermatologyJson);\n return this.restore(ddl2, true);\n }\n\n javascript(): string {\n const jsAdapter = new JavaScriptAdapter(this);\n return jsAdapter.createJavaScript();\n }\n\n layout() {\n return this._dockPanel.layout();\n }\n\n widgets(): Widget[] {\n return this._dockPanel.widgets();\n }\n\n activate(element: Element) {\n this._dockPanel.activate(element);\n }\n\n hideSingleTabs(): boolean;\n hideSingleTabs(_: boolean): this;\n hideSingleTabs(_?: boolean): boolean | this {\n if (!arguments.length) return this._dockPanel.hideSingleTabs();\n this._dockPanel.hideSingleTabs(_);\n return this;\n }\n\n updateButtonState() {\n this._designModeButton.enabled(this._dockPanel instanceof DashboardGrid).render();\n this._removeButton.enabled(this._prevActive !== undefined).render();\n }\n\n update(domNode: HTMLElement, element) {\n this._dockPanel.syncWidgets();\n super.update(domNode, element);\n this.updateButtonState();\n }\n\n private _prevActive: Element;\n vizActivation(viz: Element) {\n this._prevActive = viz;\n this._removeButton.enabled(viz !== undefined).render();\n }\n\n vizStateChanged(viz: Element) {\n }\n\n render(callback?): this {\n this._dockPanel.syncPopups();\n return super.render(w => {\n if (callback) {\n callback(w);\n }\n });\n }\n}\nDashboard.prototype._class += \" dashboard_dashboard\";\n","import { JSONEditor } from \"@hpcc-js/codemirror\";\nimport { DDL2, validate2 } from \"@hpcc-js/ddl-shim\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { SplitPanel } from \"@hpcc-js/phosphor\";\n\nimport \"../../src/ddl2/ddleditor.css\";\n\nexport class DDLEditor extends SplitPanel {\n summary: string = \"0 Errors\";\n _ddlEditor = new JSONEditor().on(\"changes\", (changes) => {\n this.checkSyntax();\n });\n _errorTable = new Table()\n .columns([\"dataPath\", \"keyword\", \"message\", \"params\"])\n ;\n\n ddl(): object;\n ddl(_: object): this;\n ddl(_?: object): object | this {\n if (!arguments.length) return this._ddlEditor.json();\n this._ddlEditor.json(_);\n this.checkSyntax();\n return this;\n }\n\n checkSyntax() {\n try {\n const json = this.ddl();\n try {\n const { success, errors } = validate2(json as DDL2.Schema);\n if (success) {\n this._errorTable.data([]);\n } else {\n this._errorTable.data(errors.map(error => [error.instancePath, error.keyword, error.message, JSON.stringify(error.params)]));\n }\n } catch (e) {\n this._errorTable.data([[\"\", \"Validation Failed\", \"\", \"\"]]);\n }\n } catch (e) {\n this._errorTable.data([[\"ALL\", \"Invalid JSON\", \"\", \"\"]]);\n }\n if (this._renderCount) {\n this._errorTable.lazyRender();\n }\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this\n .addWidget(this._ddlEditor)\n .addWidget(this._errorTable)\n ;\n }\n\n update(domNode, _element) {\n super.update(domNode, _element);\n }\n\n}\nDDLEditor.prototype._class += \" codemirror_DDLEditor\";\n","import { Widget } from \"@hpcc-js/common\";\nimport { Edge, IGraphData, Lineage, Subgraph, Vertex } from \"@hpcc-js/graph\";\nimport { Activity } from \"./activities/activity.ts\";\nimport { Databomb } from \"./activities/databomb.ts\";\nimport { DSPicker } from \"./activities/dspicker.ts\";\nimport { Form } from \"./activities/form.ts\";\nimport { LogicalFile } from \"./activities/logicalfile.ts\";\nimport { RestResult, RestResultRef } from \"./activities/rest.ts\";\nimport { RoxieResult, RoxieResultRef } from \"./activities/roxie.ts\";\nimport { WUResult } from \"./activities/wuresult.ts\";\nimport { Element, ElementContainer, State } from \"./model/element.ts\";\nimport { Visualization } from \"./model/visualization.ts\";\nimport { VizChartPanel } from \"./model/vizChartPanel.ts\";\n\nexport interface VertexData {\n view?: Element;\n activity?: Activity;\n visualization?: Visualization;\n chartPanel?: VizChartPanel;\n state?: State;\n}\n\nexport class GraphAdapter {\n private subgraphMap: { [key: string]: Subgraph } = {};\n private vertexMap: { [key: string]: Vertex } = {};\n private edgeMap: { [key: string]: Edge } = {};\n private hierarchy: Lineage[] = [];\n private vertices: Widget[] = [];\n private edges: Edge[] = [];\n\n constructor(private _ec: ElementContainer) {\n }\n\n clear() {\n this.subgraphMap = {};\n this.vertexMap = {};\n this.edgeMap = {};\n\n this.hierarchy = [];\n this.vertices = [];\n this.edges = [];\n }\n\n createSubgraph(id: string, label: string, data?: VertexData): Subgraph {\n let retVal: Subgraph = this.subgraphMap[id];\n if (!retVal) {\n retVal = new Subgraph()\n // .classed({ subgraph: true })\n // .showIcon(false)\n .columns([\"DS\"])\n .data([[data]])\n ;\n this.subgraphMap[id] = retVal;\n }\n this.vertices.push(retVal);\n retVal.title(`${label}`);\n retVal.getBBox(true);\n return retVal;\n }\n\n createVertex(id: string, label: string, data?: VertexData, tooltip: string = \"\", fillColor: string = \"#dcf1ff\"): Vertex {\n let retVal: Vertex = this.vertexMap[id];\n if (!retVal) {\n retVal = new Vertex()\n .columns([\"DS\"])\n .data([[data]])\n .icon_diameter(0)\n ;\n this.vertexMap[id] = retVal;\n }\n this.vertices.push(retVal);\n retVal\n .textbox_shape_colorFill(fillColor)\n .text(tooltip ? `${label}\\n${tooltip}` : `${label}`)\n .tooltip(tooltip)\n ;\n retVal.getBBox(true);\n return retVal;\n }\n\n createEdge(sourceID: string, targetID: string) {\n const edgeID = `${sourceID}->${targetID}`;\n let retVal = this.edgeMap[edgeID];\n if (!retVal) {\n retVal = new Edge()\n .sourceVertex(this.vertexMap[sourceID])\n .targetVertex(this.vertexMap[targetID])\n ;\n this.edgeMap[edgeID] = retVal;\n }\n this.edges.push(retVal);\n return retVal;\n }\n\n createDatasource(dsDetails: Activity): string {\n if (dsDetails instanceof DSPicker) {\n dsDetails = dsDetails.selection().datasource();\n }\n if (dsDetails instanceof WUResult) {\n const serverID = `${dsDetails.url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const wuID = `${dsDetails.url()}/${dsDetails.wuid()}`;\n const wu: Subgraph = this.createSubgraph(wuID, `${dsDetails.wuid()}`);\n this.hierarchy.push({ parent: server, child: wu });\n const resultID = `${wuID}/${dsDetails.resultName()}`;\n const result: Vertex = this.createVertex(resultID, dsDetails.resultName(), { activity: dsDetails });\n this.hierarchy.push({ parent: wu, child: result });\n return resultID;\n } else if (dsDetails instanceof LogicalFile) {\n const serverID = `${dsDetails.url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const lfID = `${serverID}/${dsDetails.logicalFile()}`;\n const lf: Vertex = this.createVertex(lfID, dsDetails.logicalFile(), { activity: dsDetails });\n this.hierarchy.push({ parent: server, child: lf });\n return lfID;\n } else if (dsDetails instanceof RoxieResultRef) {\n const serverID = `${dsDetails.url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const surfaceID = dsDetails.serviceID(); // `${dsDetails.url()}/${dsDetails.querySet()}`;\n const surface: Subgraph = this.createSubgraph(surfaceID, dsDetails.querySet());\n this.hierarchy.push({ parent: server, child: surface });\n const roxieID = surfaceID;\n this.hierarchy.push({\n parent: surface,\n child: this.createVertex(roxieID, dsDetails.queryID())\n });\n const roxieResultID = `${surfaceID}/${dsDetails.resultName()}`;\n this.hierarchy.push({\n parent: surface,\n child: this.createVertex(roxieResultID, dsDetails.resultName(), { activity: dsDetails })\n });\n this.createEdge(roxieID, roxieResultID);\n return roxieResultID;\n } else if (dsDetails instanceof RoxieResult) {\n const serverID = `${dsDetails.service().url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const querySetID = dsDetails.serviceID();\n const querySet: Subgraph = this.createSubgraph(querySetID, dsDetails.service().querySet());\n this.hierarchy.push({ parent: server, child: querySet });\n const queryID = `${querySetID}/${dsDetails.service().queryID()}`;\n const query: Subgraph = this.createSubgraph(queryID, dsDetails.service().queryID());\n this.hierarchy.push({ parent: querySet, child: query });\n const resultID = `${queryID}/${dsDetails.resultName()}`;\n this.hierarchy.push({\n parent: query,\n child: this.createVertex(resultID, dsDetails.resultName(), { activity: dsDetails })\n });\n this.createEdge(queryID, resultID);\n return resultID;\n } else if (dsDetails instanceof RestResultRef) {\n const serverID = `${dsDetails.url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const surfaceID = dsDetails.serviceID();\n const surface: Subgraph = this.createSubgraph(surfaceID, dsDetails.action());\n this.hierarchy.push({ parent: server, child: surface });\n const roxieID = surfaceID;\n this.hierarchy.push({\n parent: surface,\n child: this.createVertex(roxieID, dsDetails.action())\n });\n const roxieResultID = `${surfaceID}/${dsDetails.resultName()}`;\n this.hierarchy.push({\n parent: surface,\n child: this.createVertex(roxieResultID, dsDetails.resultName(), { activity: dsDetails })\n });\n this.createEdge(roxieID, roxieResultID);\n return roxieResultID;\n } else if (dsDetails instanceof RestResult) {\n const serverID = `${dsDetails.service().url()}`;\n const server: Subgraph = this.createSubgraph(serverID, `${serverID}`);\n const serviceID = dsDetails.serviceID();\n const actionID = `${serverID}/${dsDetails.service().action()}`;\n const action: Subgraph = this.createSubgraph(serviceID, dsDetails.service().action());\n this.hierarchy.push({ parent: server, child: action });\n const resultID = `${actionID}/${dsDetails.resultName()}`;\n this.hierarchy.push({\n parent: action,\n child: this.createVertex(resultID, dsDetails.resultName(), { activity: dsDetails })\n });\n this.createEdge(actionID, resultID);\n return resultID;\n } else if (dsDetails instanceof Form) {\n const id = dsDetails.hash();\n this.createVertex(id, dsDetails.label(), { activity: dsDetails });\n return id;\n } else if (dsDetails instanceof Databomb) {\n const id = dsDetails.id();\n this.createVertex(id, dsDetails.label(), { activity: dsDetails });\n return id;\n } else {\n const id = dsDetails.hash();\n this.createVertex(id, dsDetails.label(), { activity: dsDetails });\n return id;\n }\n }\n\n createActivity(sourceID: string, view: Element, activity: Activity, label?: string): string {\n const surface: Subgraph = this.createSubgraph(view.id(), `${view.id()}`, { view });\n let fillColor = null;\n let tooltip = \"\";\n if (activity.exists()) {\n const errors = activity.validate();\n if (errors.length) {\n fillColor = \"pink\";\n tooltip = errors.map(error => `${error.source}: ${error.msg}`).join(\"\\n\");\n }\n } else {\n fillColor = \"lightgrey\";\n }\n const vertex: Vertex = this.createVertex(activity.id(), label || `${activity.classID()}`, { view, activity }, tooltip, fillColor);\n if (sourceID) {\n this.createEdge(sourceID, activity.id());\n }\n this.hierarchy.push({ parent: surface, child: vertex });\n return activity.id();\n }\n\n createGraph(): IGraphData {\n this.hierarchy = [];\n this.vertices = [];\n this.edges = [];\n\n this._ec.elements().forEach(e => {\n this.createDatasource(e.hipiePipeline().datasource());\n });\n\n const lastID: { [key: string]: string } = {};\n for (const view of this._ec.elements()) {\n const pipeline = view.hipiePipeline();\n let prevID = this.createDatasource(pipeline.datasource());\n for (const activity of pipeline.activities()) {\n prevID = this.createActivity(prevID, view, activity);\n }\n const visualization = view.visualization();\n const mappings = visualization.mappings();\n const mappingVertexID = this.createActivity(prevID, view, mappings, \"Mappings\");\n const vizSubgraphID = `${visualization.id()}-sg`;\n const surface: Subgraph = this.createSubgraph(vizSubgraphID, \"Visualization\", { visualization });\n this.hierarchy.push({\n parent: this.subgraphMap[view.id()],\n child: surface\n });\n this.hierarchy.push({\n parent: surface,\n child: this.vertexMap[mappings.id()]\n });\n const vizVertexID = `${visualization.id()}-viz`;\n const widgetVertex: Vertex = this.createVertex(vizVertexID, visualization.chartPanel().widget().classID(), { view, chartPanel: visualization.chartPanel() });\n this.createEdge(mappingVertexID, vizVertexID);\n this.hierarchy.push({\n parent: surface,\n child: widgetVertex\n });\n const stateVertexID = `${visualization.id()}-state`;\n const stateVertex: Vertex = this.createVertex(stateVertexID, \"Selection\", { view, state: view.state() });\n this.createEdge(vizVertexID, stateVertexID)\n .weight(10)\n .strokeDasharray(\"1,5\")\n .text(\"updates\")\n ;\n this.createEdge(prevID, stateVertexID);\n this.hierarchy.push({\n parent: this.subgraphMap[view.id()],\n child: stateVertex\n });\n prevID = stateVertexID;\n lastID[pipeline.id()] = prevID;\n }\n\n // Mapping Secondary Sources ---\n for (const view of this._ec.elements()) {\n const visualization = view.visualization();\n const secondaryElement = this._ec.element(visualization.secondaryDataviewID());\n if (secondaryElement) {\n const mappings = secondaryElement.visualization().mappings();\n this.createEdge(mappings.id(), `${visualization.id()}-viz`);\n }\n }\n\n for (const viz of this._ec.elements()) {\n const view = viz.hipiePipeline();\n for (const updateInfo of view.updatedByGraph()) {\n this.createEdge(lastID[this._ec.element(updateInfo.from).hipiePipeline().id()], updateInfo.to.id())\n .weight(10)\n .strokeDasharray(\"1,5\")\n .text(\"updates\")\n ;\n }\n }\n\n return {\n vertices: this.vertices,\n edges: this.edges,\n hierarchy: this.hierarchy\n };\n }\n}\n","import { Button, Spacer } from \"@hpcc-js/common\";\nimport { Table } from \"@hpcc-js/dgrid\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { CommandRegistry, ContextMenu } from \"@hpcc-js/phosphor\";\nimport { text as d3Text } from \"d3-fetch\";\nimport { Databomb } from \"./activities/databomb.ts\";\nimport { DatasourceRefType } from \"./activities/datasource.ts\";\nimport { DSPicker } from \"./activities/dspicker.ts\";\nimport { Form, FormField } from \"./activities/form.ts\";\nimport { LogicalFile } from \"./activities/logicalfile.ts\";\nimport { RestField, RestResult, RestService } from \"./activities/rest.ts\";\nimport { RoxieResult, RoxieService } from \"./activities/roxie.ts\";\nimport { WU, WUResult } from \"./activities/wuresult.ts\";\nimport { ElementContainer } from \"./model/element.ts\";\n\nexport class DSTable extends ChartPanel {\n\n private _addButton = new Button().faChar(\"fa-plus\").tooltip(\"Add...\")\n .on(\"click\", () => {\n const node = this._addButton.element().node();\n const rect = node.getBoundingClientRect();\n if (this._contextMenu.open({\n target: node,\n currentTarget: node,\n clientX: rect.left,\n clientY: rect.bottom\n })) {\n }\n });\n\n private _removeButton = new Button().faChar(\"fa-minus\").tooltip(\"Remove...\")\n .enabled(false)\n .on(\"click\", () => {\n this.remove();\n });\n\n private _cloneButton = new Button().faChar(\"fa-clone\").tooltip(\"Clone...\")\n .enabled(false)\n .on(\"click\", () => {\n if (this._selectedDS2) {\n if (this._selectedDS2 instanceof Databomb) {\n this.add(Databomb.fromDDL(this._selectedDS2.toDDL(), true));\n } else if (this._selectedDS2 instanceof Form) {\n this.add(Form.fromDDL(this._selectedDS2.toDDL(), true));\n } else if (this._selectedDS2 instanceof LogicalFile) {\n this.add(LogicalFile.fromDDL(this._ec, this._selectedDS2.toDDL(), true));\n } else if (this._selectedDS2 instanceof RestResult) {\n this.add(new RestResult(this._ec)\n .service(RestService.fromDDL(this._ec, this._selectedDS2.service().toDDL(), true))\n .resultName(this._selectedDS2.resultName())\n );\n } else if (this._selectedDS2 instanceof WUResult) {\n this.add(new WUResult(this._ec)\n .wu(WU.fromDDL(this._ec, this._selectedDS2.wu().toDDL(), true))\n .resultName(this._selectedDS2.resultName())\n );\n } else if (this._selectedDS2 instanceof RoxieResult) {\n this.add(new RoxieResult(this._ec)\n .service(RoxieService.fromDDL(this._ec, this._selectedDS2.service().toDDL(), true))\n .resultName(this._selectedDS2.resultName())\n );\n } else {\n console.warn(\"Unknown datasoure type\");\n }\n }\n });\n\n private _addSamples = new Button().faChar(\"fa-database\").tooltip(\"Add Samples\")\n .on(\"click\", () => {\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/airports.csv\").then(csv => {\n this.add(new Databomb().format(\"csv\").payload(csv));\n });\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/carriers.csv\").then(csv => {\n this.add(new Databomb().format(\"csv\").payload(csv));\n });\n d3Text(\"https://raw.githubusercontent.com/hpcc-systems/Visualization/candidate-2.x.x/utils/data/data/stats.csv\").then(csv => {\n this.add(new Databomb().format(\"csv\").payload(csv));\n });\n this.add(new RestResult(this._ec)\n .service(new RestService(this._ec)\n .url(\"https://cmsapi.pulselive.com/\")\n .action(\"rugby/rankings/mru\")\n .requestFields([\n new RestField().fieldID(\"xxx\"),\n new RestField().fieldID(\"date\")\n ]))\n .resultName(\"entries\")\n );\n this.add(new WUResult(this._ec)\n .wu(new WU(this._ec).url(\"http://localhost:8010\").wuid(\"W20190802-112509\"))\n .resultName(\"Result 1\")\n );\n this.add(new LogicalFile(this._ec)\n .url(\"http://localhost:8010\")\n .logicalFile(\"progguide::exampledata::peopleaccts\")\n );\n this.add(new LogicalFile(this._ec)\n .url(\"http://localhost:8010\")\n .logicalFile(\"progguide::exampledata::people\")\n );\n const vmRoxie = new RoxieService(this._ec)\n .url(\"http://localhost:8002\")\n .querySet(\"roxie\")\n .queryID(\"peopleaccounts\")\n ;\n this.add(new RoxieResult(this._ec)\n .service(vmRoxie)\n .resultName(\"Accounts\")\n );\n this.add(new Form()\n .formFields([\n new FormField().type(\"number\").fieldID(\"id\").value(8),\n new FormField().fieldID(\"first_name\").value(\"John\"),\n new FormField().fieldID(\"last_name\").value(\"Doe\"),\n new FormField().fieldID(\"gender\").default(\"M\"),\n new FormField().type(\"number\").fieldID(\"age\")\n ])\n );\n this.render();\n });\n\n private _dstable = new Table();\n private _selectedDS;\n private _selectedDS2;\n\n private _contextMenu;\n\n constructor(private _ec: ElementContainer) {\n super();\n this\n .buttons([this._addButton, this._removeButton, new Spacer(), this._cloneButton, new Spacer(), this._addSamples])\n .widget(this._dstable)\n .columns([\"ID\", \"Type\", \"References\"])\n .on(\"click\", (row, col, sel) => {\n this._selectedDS2 = row.__lparam;\n if (sel && row.References === 0 && row.ID !== \"Empty\") {\n this._selectedDS = row.__lparam;\n } else {\n delete this._selectedDS;\n }\n this._removeButton.enabled(this._selectedDS !== undefined).render();\n this._cloneButton.enabled(this._selectedDS2 !== undefined).render();\n })\n ;\n\n this.initMenu();\n }\n\n initMenu() {\n const commands = new CommandRegistry();\n\n // Dashboard Commands ---\n commands.addCommand(\"add_wu_result\", {\n label: \"Workunit Result\",\n execute: () => {\n this.add(new WUResult(this._ec));\n }\n });\n\n commands.addCommand(\"add_logicalfile\", {\n label: \"Logical File\",\n execute: () => {\n this.add(new LogicalFile(this._ec));\n }\n });\n\n commands.addCommand(\"add_roxie\", {\n label: \"Roxie Service\",\n execute: () => {\n this.add(new RoxieResult(this._ec));\n }\n });\n\n commands.addCommand(\"add_rest\", {\n label: \"Rest\",\n execute: () => {\n this.add(new RestResult(this._ec));\n }\n });\n\n commands.addCommand(\"add_databomb\", {\n label: \"Databomb\",\n execute: () => {\n this.add(new Databomb());\n }\n });\n\n commands.addCommand(\"add_form\", {\n label: \"Form\",\n execute: () => {\n this.add(new Form());\n }\n });\n\n this._contextMenu = new ContextMenu({ commands });\n this._contextMenu.addItem({ command: \"add_wu_result\", selector: \".common_Button\" });\n this._contextMenu.addItem({ command: \"add_logicalfile\", selector: \".common_Button\" });\n this._contextMenu.addItem({ command: \"add_roxie\", selector: \".common_Button\" });\n this._contextMenu.addItem({ command: \"add_rest\", selector: \".common_Button\" });\n this._contextMenu.addItem({ command: \"add_databomb\", selector: \".common_Button\" });\n this._contextMenu.addItem({ command: \"add_form\", selector: \".common_Button\" });\n }\n\n add(ds: DatasourceRefType) {\n this._ec.appendDatasource(ds);\n this.render();\n }\n\n remove() {\n if (this._selectedDS) {\n this._ec.removeDatasource(this._selectedDS);\n this.render();\n }\n }\n\n private _prevDataID;\n render(callback?) {\n const refs = {};\n this._ec.elements().forEach(e => {\n let ds = e.hipiePipeline().datasource();\n if (ds instanceof DSPicker) {\n ds = ds.datasource();\n }\n if (refs[ds.id()] === undefined) {\n refs[ds.id()] = 0;\n }\n refs[ds.id()]++;\n });\n const data = this._ec.datasources().filter(ds => ds.id() !== \"Empty\").map(ds => {\n if (refs[ds.id()] === undefined) {\n refs[ds.id()] = 0;\n }\n return [ds.id(), ds.classID(), refs[ds.id()] || 0, ds];\n });\n const dataID = JSON.stringify(refs);\n if (this._prevDataID !== dataID) {\n this._prevDataID = dataID;\n this.data(data);\n }\n return super.render(callback);\n }\n}\n","import { Table } from \"@hpcc-js/dgrid\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { hashSum } from \"@hpcc-js/util\";\nimport { ElementContainer } from \"./model/element.ts\";\n\nexport class DVTable extends ChartPanel {\n\n private _dvtable = new Table();\n\n constructor(private _ec: ElementContainer) {\n super();\n this\n .titleVisible(false)\n .widget(this._dvtable)\n .columns([\"ID\", \"Title\"])\n ;\n }\n\n private _prevDataID;\n render(callback?) {\n const data = this._ec.elements().map(elem => {\n return [elem.id(), elem.visualization().title(), elem];\n });\n const dataID = hashSum(data.map(row => row[0]));\n if (this._prevDataID !== dataID) {\n this._prevDataID = dataID;\n this.data(data);\n }\n return super.render(callback);\n }\n}\n","import { JSONEditor } from \"@hpcc-js/codemirror\";\nimport { Button, PropertyExt, SelectionBar, SelectionButton, Spacer } from \"@hpcc-js/common\";\nimport { DatasourceTable } from \"@hpcc-js/dgrid\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { PropertyEditor } from \"@hpcc-js/other\";\nimport { SplitPanel, TabPanel } from \"@hpcc-js/phosphor\";\nimport { Activity } from \"./activities/activity.ts\";\nimport { DatasourceAdapt } from \"./activities/databomb.ts\";\nimport { Datasource } from \"./activities/datasource.ts\";\nimport { DSPicker } from \"./activities/dspicker.ts\";\nimport { Filters } from \"./activities/filter.ts\";\nimport { GroupBy } from \"./activities/groupby.ts\";\nimport { Limit } from \"./activities/limit.ts\";\nimport { Mappings, Project } from \"./activities/project.ts\";\nimport { Sort } from \"./activities/sort.ts\";\nimport { Element as ModelElement, IElementError, State } from \"./model/element.ts\";\nimport { Visualization } from \"./model/visualization.ts\";\n\nimport \"../../src/ddl2/pipelinePanel.css\";\n\nclass PipelineSelectionButton extends SelectionButton {\n\n _label: string;\n label(): string;\n label(_: string): this;\n label(_?: string): string | this {\n if (!arguments.length) return this._label;\n this._label = _;\n this.tooltip(_);\n return this;\n }\n\n _elementErrors: IElementError[] = [];\n errors(): IElementError[];\n errors(_: IElementError[]): this;\n errors(_?: IElementError[]): IElementError[] | this {\n if (!arguments.length) return this._elementErrors;\n this._elementErrors = _;\n this.classed(\"error\", _.length > 0);\n // this.element().classed(\"error\", _.length > 0);\n if (_.length) {\n this.tooltip(_.map(err => {\n const errSourceParts = err.source.split(\".\");\n errSourceParts.splice(0, 1);\n return `${errSourceParts.join(\".\")}: ${err.msg}`;\n }).join(\"\\n\"));\n } else {\n this.tooltip(this._label);\n }\n this.render();\n return this;\n }\n}\n\nclass PipelinePanel extends ChartPanel {\n _owner: PipelineSplitPanel;\n\n datasource = new PipelineSelectionButton().faChar(\"fa-database\").label(\"Datasource\").selected(true);\n filter = new PipelineSelectionButton().faChar(\"fa-filter\").label(\"Filter\");\n project = new PipelineSelectionButton().faChar(\"fa-random\").label(\"Project\");\n groupBy = new PipelineSelectionButton().faChar(\"fa-object-group\").label(\"Group By\");\n sort = new PipelineSelectionButton().faChar(\"fa-sort-alpha-asc\").label(\"Sort\");\n limit = new PipelineSelectionButton().faChar(\"fa-list-ol\").label(\"Limit\");\n mappings = new PipelineSelectionButton().faChar(\"fa-random\").label(\"Mappings\");\n chartPanel = new PipelineSelectionButton().faChar(\"fa-area-chart\").label(\"Visualization\");\n state = new PipelineSelectionButton().faChar(\"fa-check-square-o\").label(\"State\");\n debug = new PipelineSelectionButton().faChar(\"fa-bug\").label(\"Debug\");\n all = new PipelineSelectionButton().faChar(\"fa-list\").label(\"All\");\n\n _propEditor: PropertyEditor = new PropertyEditor()\n .show_header(false)\n .show_settings(false)\n .showFields(false)\n ;\n\n private _buttons = [\n this.datasource,\n this.filter,\n this.project,\n this.groupBy,\n this.sort,\n this.limit,\n new Spacer(),\n this.mappings,\n this.chartPanel,\n new Spacer(),\n this.state,\n this.debug,\n new Spacer(),\n this.all\n ];\n _pipelineButton: PipelineSelectionButton = this.datasource;\n private _pipelineSelection = new SelectionBar()\n .buttons(this._buttons).on(\"selected\", sb => {\n this._pipelineButton = sb;\n this.title(sb.label()).render();\n });\n\n constructor(owner: PipelineSplitPanel) {\n super();\n this._owner = owner;\n this.buttons([this._pipelineSelection]);\n this.title(this.datasource.label());\n super.widget(this._propEditor);\n this._propEditor.monitor((id: string, newValue: any, oldValue: any, source: PropertyExt) => {\n if (source !== this._propEditor) {\n this.propChanged(id, newValue, oldValue, source);\n this.updateState();\n }\n });\n }\n\n selectionButtons(): PipelineSelectionButton[] {\n return this._pipelineSelection.buttons().filter(b => b instanceof PipelineSelectionButton) as PipelineSelectionButton[];\n }\n\n private _propExt: PropertyExt;\n propExt(): PropertyExt;\n propExt(_: PropertyExt): this;\n propExt(_?: PropertyExt): PropertyExt | this {\n if (!arguments.length) return this._propExt;\n this._propExt = _;\n return this;\n }\n\n private peAsDatasource(): Datasource {\n if (this._propExt instanceof Datasource) {\n return this._propExt;\n } else if (this._propExt instanceof DSPicker) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().datasource();\n }\n }\n\n private peAsFilter(): Filters {\n if (this._propExt instanceof Filters) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().filters();\n }\n }\n\n private peAsProject(): Project {\n if (this._propExt instanceof Project) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().project();\n }\n }\n\n private peAsGroupBy(): GroupBy {\n if (this._propExt instanceof GroupBy) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().groupBy();\n }\n }\n\n private peAsSort(): Sort {\n if (this._propExt instanceof Sort) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().sort();\n }\n }\n\n private peAsLimit(): Limit {\n if (this._propExt instanceof Limit) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.hipiePipeline().limit();\n }\n }\n\n private peAsMappings(): Mappings {\n if (this._propExt instanceof Mappings) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.visualization().mappings();\n } else if (this._propExt instanceof Visualization) {\n return this._propExt.mappings();\n }\n }\n\n private peAsChartPanel(): ChartPanel | Visualization {\n if (this._propExt instanceof ChartPanel) {\n return this._propExt;\n } else if (this._propExt instanceof Visualization) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.visualization();\n }\n }\n\n private peAsState(): State {\n if (this._propExt instanceof State) {\n return this._propExt;\n } else if (this._propExt instanceof ModelElement) {\n return this._propExt.state();\n }\n }\n\n selectionButton(): PipelineSelectionButton {\n if (this._pipelineButton && this._pipelineButton.enabled()) {\n return this._pipelineButton;\n }\n for (const pb of this.selectionButtons()) {\n if (pb.enabled()) {\n pb.selected(true);\n return pb;\n }\n }\n return undefined;\n }\n\n _prevPropExt: PropertyExt;\n _prevPipelineButton: SelectionButton;\n update(domNode, element) {\n super.update(domNode, element);\n this.updateState();\n const pipelineButton = this.selectionButton();\n if (this._prevPropExt !== this._propExt || this._prevPipelineButton !== pipelineButton) {\n this._prevPropExt = this._propExt;\n this._prevPipelineButton = pipelineButton;\n if (this._propExt && pipelineButton) {\n switch (pipelineButton) {\n case this.datasource:\n this._propEditor.widget(this.peAsDatasource());\n break;\n case this.filter:\n this._propEditor.widget(this.peAsFilter());\n break;\n case this.project:\n this._propEditor.widget(this.peAsProject());\n break;\n case this.groupBy:\n this._propEditor.widget(this.peAsGroupBy());\n break;\n case this.sort:\n this._propEditor.widget(this.peAsSort());\n break;\n case this.limit:\n this._propEditor.widget(this.peAsLimit());\n break;\n case this.mappings:\n this._propEditor.widget(this.peAsMappings());\n break;\n case this.chartPanel:\n this._propEditor.widget(this.peAsChartPanel());\n break;\n case this.state:\n this._propEditor.widget(this.peAsState());\n break;\n case this.all:\n this._propEditor.widget(this._propExt);\n break;\n }\n } else {\n this._propEditor.widget(undefined);\n }\n this._owner.loadPreview(this._propEditor.widget());\n }\n }\n\n updateButtonState(pe, sb) {\n sb.enabled(!!pe);\n sb.errors(!!pe && pe.validate() || []);\n }\n\n updateState() {\n this.selectionButtons().forEach(sb => {\n if (sb instanceof PipelineSelectionButton) {\n if (this.disableActivities().indexOf(sb.label()) >= 0) {\n this.updateButtonState(undefined, sb);\n return;\n }\n }\n\n switch (sb) {\n case this.datasource:\n this.updateButtonState(this.peAsDatasource(), sb);\n break;\n case this.filter:\n this.updateButtonState(this.peAsFilter(), sb);\n break;\n case this.project:\n this.updateButtonState(this.peAsProject(), sb);\n break;\n case this.groupBy:\n this.updateButtonState(this.peAsGroupBy(), sb);\n break;\n case this.sort:\n this.updateButtonState(this.peAsSort(), sb);\n break;\n case this.limit:\n this.updateButtonState(this.peAsLimit(), sb);\n break;\n case this.mappings:\n this.updateButtonState(this.peAsMappings(), sb);\n break;\n case this.chartPanel:\n const cp = this.peAsChartPanel();\n sb.enabled(!!cp);\n break;\n case this.state:\n const st = this.peAsState();\n sb.enabled(!!st);\n break;\n case this.debug:\n sb.enabled(false);\n break;\n case this.all:\n sb.enabled(!!this._propExt);\n break;\n }\n if (sb.selected()) {\n this.title(sb.enabled() ? sb.label() : \"\");\n }\n });\n }\n\n // Events ---\n propChanged(id: string, newValue: any, oldValue: any, source: PropertyExt) {\n }\n}\nPipelinePanel.prototype._class += \" marshaller_PipelinePanel\";\n\ninterface PipelinePanel {\n disableActivities(): string[];\n disableActivities(_: string[]): this;\n}\n\nclass DDLPreview extends ChartPanel {\n\n private _save = new Button().faChar(\"fa-save\").tooltip(\"Save\")\n .on(\"click\", () => {\n const activity = this.activity();\n if (activity && (activity as any).fromDDL) {\n (activity as any).fromDDL(this._jsonEditor.json());\n }\n this.updateToolbar();\n });\n\n private _reset = new Button().faChar(\"fa-undo\").tooltip(\"Reset\")\n .on(\"click\", () => {\n this._jsonEditor\n .text(this.jsonText())\n .lazyRender()\n ;\n this.updateToolbar();\n });\n\n private _jsonEditor = new JSONEditor()\n .on(\"changes\", (changes: object[]) => {\n this.updateToolbar();\n });\n\n constructor() {\n super();\n this._titleBar.buttons([this._save, this._reset]);\n this.widget(this._jsonEditor);\n }\n\n private _activity: PropertyExt;\n activity(_: PropertyExt): this;\n activity(): PropertyExt;\n activity(_?: PropertyExt): PropertyExt | this {\n if (_ === void 0) return this._activity;\n if (this._activity !== _) {\n this._activity = _;\n delete this._prevJson;\n }\n return this;\n }\n\n jsonText(): string {\n const activity = this.activity();\n return activity && (activity as any).toDDL ? JSON.stringify((activity as any).toDDL(), undefined, 4) : \"\";\n }\n\n private _prevJson: string;\n update(domNode, element) {\n super.update(domNode, element);\n const json = this.jsonText();\n const editorJson = this._jsonEditor.text();\n if ((this._prevJson === undefined || this._prevJson === editorJson) && this._prevJson !== json) {\n this._prevJson = json;\n this._jsonEditor.text(json);\n }\n this.updateToolbar();\n }\n\n updateToolbar() {\n const activity = this.activity() as any;\n const json = this.jsonText();\n const editorJson = this._jsonEditor.text();\n this._save.enabled(activity && activity.fromDDL && json !== editorJson).lazyRender();\n this._reset.enabled(json !== editorJson).lazyRender();\n }\n}\n\nexport class PipelineSplitPanel extends SplitPanel {\n private _rhsPropsPanel = new PipelinePanel(this).on(\"propChanged\", (id: string, newValue: any, oldValue: any, source: PropertyExt) => {\n this.propChanged(id, newValue, oldValue, source);\n });\n private _previewPanel = new TabPanel();\n private _rhsDDLPreview = new DDLPreview();\n private _rhsDataPreview = new DatasourceTable().pagination(true);\n\n constructor() {\n super();\n this._previewPanel\n .addWidget(this._rhsDataPreview, \"Data\")\n .addWidget(this._rhsDDLPreview, \"DDL\")\n ;\n this\n .addWidget(this._rhsPropsPanel)\n .addWidget(this._previewPanel)\n ;\n }\n\n loadDataProps(pe: PropertyExt) {\n this._rhsPropsPanel\n .propExt(pe)\n .render()\n ;\n }\n\n loadPreview(activity: undefined | PropertyExt) {\n activity = activity instanceof Visualization ? activity.mappings() : activity;\n this._rhsDataPreview\n .datasource(new DatasourceAdapt(activity instanceof Activity ? activity : undefined))\n .lazyRender()\n ;\n this._rhsDDLPreview\n .activity(activity) // instanceof DSPicker ? activity.datasourceRef() : activity)\n .lazyRender()\n ;\n }\n\n refreshPreview() {\n const ds = this._rhsDataPreview.datasource() as DatasourceAdapt;\n if (ds) {\n ds.exec().then(() => {\n this._rhsDataPreview\n .invalidate()\n .lazyRender()\n ;\n this._rhsDDLPreview\n .lazyRender()\n ;\n });\n } else {\n this._rhsDDLPreview\n .lazyRender()\n ;\n }\n }\n\n // Events ---\n propChanged(id: string, newValue: any, oldValue: any, source: PropertyExt) {\n }\n}\n\nexport interface PipelineSplitPanel {\n disableActivities(): string[];\n disableActivities(_: string[]): this;\n}\n\nPipelinePanel.prototype.publish(\"disableActivities\", [], \"array\", \"Disabled pipeline items\");\n\nPipelineSplitPanel.prototype.publishProxy(\"disableActivities\", \"_rhsPropsPanel\");","import { JSEditor, JSONEditor } from \"@hpcc-js/codemirror\";\nimport { Button, PropertyExt, Utility, Widget } from \"@hpcc-js/common\";\nimport { DDL1, DDL2, ddl2Schema, isDDL2Schema, upgrade } from \"@hpcc-js/ddl-shim\";\nimport { Graph } from \"@hpcc-js/graph\";\nimport { ChartPanel } from \"@hpcc-js/layout\";\nimport { CommandPalette, CommandRegistry, ContextMenu, SplitPanel, TabPanel, WidgetAdapter } from \"@hpcc-js/phosphor\";\nimport { scopedLogger } from \"@hpcc-js/util\";\nimport { Activity } from \"./ddl2/activities/activity.ts\";\nimport { Databomb } from \"./ddl2/activities/databomb.ts\";\nimport { DSPicker } from \"./ddl2/activities/dspicker.ts\";\nimport { Dashboard } from \"./ddl2/dashboard.ts\";\nimport { DSTable } from \"./ddl2/dsTable.ts\";\nimport { DVTable } from \"./ddl2/dvTable.ts\";\nimport { GraphAdapter, VertexData } from \"./ddl2/graphadapter.ts\";\nimport { Element, ElementContainer, State } from \"./ddl2/model/element.ts\";\nimport { Visualization } from \"./ddl2/model/visualization.ts\";\nimport { VizChartPanel } from \"./ddl2/model/vizChartPanel.ts\";\nimport { PipelineSplitPanel } from \"./ddl2/pipelinePanel.ts\";\n\nconst logger = scopedLogger(\"marshaller/dashy\");\n\nimport \"../src/dashy.css\";\n\nexport type FocusType = Element | Activity | Visualization | VizChartPanel | State | undefined;\n\nclass DDLPreview extends ChartPanel {\n\n private _save = new Button().faChar(\"fa-save\").tooltip(\"Save\")\n .on(\"click\", () => {\n const obj = JSON.parse(this._jsonEditor.text());\n this._dashy.importDDL(obj);\n this.updateToolbar();\n });\n\n private _reset = new Button().faChar(\"fa-undo\").tooltip(\"Reset\")\n .on(\"click\", () => {\n this._jsonEditor\n .text(this._ddl)\n .lazyRender()\n ;\n this.updateToolbar();\n });\n\n private _jsonEditor = new JSONEditor()\n .on(\"changes\", (changes: object[]) => {\n this.updateToolbar();\n });\n\n constructor(private _dashy: Dashy) {\n super();\n this._titleBar.buttons([this._save, this._reset]);\n this.widget(this._jsonEditor);\n }\n\n private _ddl;\n ddl(_: DDL2.Schema): this {\n this._ddl = JSON.stringify(_, undefined, 4);\n return this;\n }\n\n private _prevJson: string;\n update(domNode, element) {\n super.update(domNode, element);\n if (this._prevJson !== this._ddl) {\n this._prevJson = this._ddl;\n this._jsonEditor.text(this._ddl);\n }\n this.updateToolbar();\n }\n\n updateToolbar() {\n const editorJson = this._jsonEditor.text();\n this._save.enabled(this._ddl !== editorJson).lazyRender();\n this._reset.enabled(this._ddl !== editorJson).lazyRender();\n }\n}\n\nexport class Dashy extends SplitPanel {\n\n private _elementContainer: ElementContainer = new ElementContainer();\n\n private _lhsSheet = new TabPanel();\n private _lhsDashboard: Dashboard = new Dashboard(this._elementContainer)\n .on(\"vizActivation\", (elem: Element, wa: WidgetAdapter) => {\n this.focus(this._lhsDashboard, elem);\n })\n .on(\"vizStateChanged\", (elem: Element) => {\n for (const filteredViz of this._elementContainer.filteredBy(elem.id())) {\n if (this.focus() === filteredViz) {\n this._rhsSplitView.refreshPreview();\n }\n }\n })\n ;\n private _lhsDataviews: DVTable = new DVTable(this._elementContainer)\n .on(\"click\", (row: any, col: string, sel: boolean, ext: any) => {\n this.focus(this._lhsDataviews, row.__lparam);\n this._rhsSplitView.refreshPreview();\n })\n ;\n private _lhsDatasources: DSTable = new DSTable(this._elementContainer)\n .on(\"click\", (row: any, col: string, sel: boolean, ext: any) => {\n this.focus(this._lhsDatasources, row.__lparam);\n this._rhsSplitView.refreshPreview();\n })\n ;\n private _graphAdapter = new GraphAdapter(this._elementContainer);\n private _lhsPipeline: Graph = new Graph()\n .layout(\"Hierarchy\")\n .allowDragging(false)\n .applyScaleOnLayout(true)\n .on(\"vertex_click\", (row: any, col: string, sel: boolean, ext: any) => {\n const obj: VertexData = row.__lparam[0] || {};\n this.focus(this._lhsPipeline, obj.state || obj.chartPanel || obj.visualization || obj.activity || obj.view);\n })\n .on(\"vertex_contextmenu\", (row: any, col: string, sel: boolean, ext: any) => {\n })\n ;\n private _lhsDebugSheet = new TabPanel();\n private _lhsDebugDDLEditor = new DDLPreview(this);\n private _lhsDebugDDLSchema = new JSONEditor().json(ddl2Schema);\n private _lhsDebugJSEditor = new JSEditor();\n private _lhsDebugCloneEC: ElementContainer = new ElementContainer();\n private _lhsDebugClone: Dashboard = new Dashboard(this._lhsDebugCloneEC).hideSingleTabs(true).titleVisible(false);\n private _lhsDebugDDLv1 = new JSONEditor();\n private _lhsDebugDDLv2 = new JSONEditor();\n\n private _rhsSplitView = new PipelineSplitPanel();\n\n private _fileOpen;\n\n static create(target: string, ddl?: DDL1.DDLSchema | DDL2.Schema, baseUrl?: string, wuid?: string): Promise<Dashy> {\n return new Promise((resolve, reject) => {\n const dashy = new Dashy()\n .target(target)\n .render((w: Dashy) => {\n if (ddl) {\n w.importDDL(ddl, baseUrl, wuid).then(() => {\n resolve(dashy);\n });\n } else {\n resolve(dashy);\n }\n });\n });\n }\n\n constructor() {\n super(\"horizontal\");\n }\n\n elementContainer(): ElementContainer {\n return this._elementContainer;\n }\n\n clear(): Promise<void> {\n this._lhsDebugSheet.removeWidget(this._lhsDebugDDLv1);\n this._lhsDebugSheet.removeWidget(this._lhsDebugDDLv2);\n this._elementContainer.clear();\n this._graphAdapter.clear();\n this.focus(this._lhsDashboard, undefined);\n return this.loadDashboard().then(() => {\n return this._elementContainer.refresh();\n }).then(ec => {\n return;\n });\n }\n\n save(): DDL2.Schema {\n return this._lhsDashboard.save();\n }\n\n serializeDDL(): string {\n return JSON.stringify(this.save());\n }\n\n deserializeDDL(json: string): Promise<void> {\n return this.restore(JSON.parse(json) as DDL2.Schema);\n }\n\n restore(json: DDL2.Schema): Promise<void> {\n this._lhsSheet.active(this._lhsDashboard);\n return this.clear().then(() => {\n this._lhsDashboard.restore(json);\n this._lhsDataviews.render();\n this._lhsDatasources.render();\n return this._lhsDashboard.renderPromise().then(() => {\n const elements = this._elementContainer.elements();\n if (elements.length) {\n this._lhsDashboard.activate(elements[0]);\n }\n return this._elementContainer.refresh();\n }).then(() => {\n let hasError = false;\n for (const error of this._elementContainer.validate()) {\n hasError = true;\n logger.warning(error.elementID + \" (\" + error.source + \"): \" + error.msg);\n }\n if (hasError) {\n // Re-render to highlight errrors ---\n this._lhsDashboard.renderPromise();\n }\n });\n });\n }\n\n importDDL(ddl: DDL1.DDLSchema | DDL2.Schema, baseUrl?: string, wuid?: string, dermatologyJson: object = {}): Promise<void> {\n const ddl2: DDL2.Schema = isDDL2Schema(ddl) ? ddl : upgrade(ddl, baseUrl, wuid, true, dermatologyJson);\n const retVal = this.restore(ddl2);\n if (isDDL2Schema(ddl)) {\n this._lhsDebugDDLv2.json(ddl2);\n this._lhsDebugSheet\n .addWidget(this._lhsDebugDDLv2, \"orig v2\")\n ;\n } else {\n this._lhsDebugDDLv1.json(ddl);\n this._lhsDebugDDLv2.json(ddl2);\n this._lhsDebugSheet\n .addWidget(this._lhsDebugDDLv1, \"v1\")\n .addWidget(this._lhsDebugDDLv2, \"v1 -> v2\")\n ;\n }\n return retVal;\n }\n\n activeLHS(): Widget {\n let retVal = this._lhsSheet.active();\n if (retVal === this._lhsDebugSheet) {\n retVal = this._lhsDebugSheet.active();\n }\n return retVal;\n }\n\n activeRHS(): Widget {\n return this._rhsSplitView;\n }\n\n private _currSelection: { [sourceID: string]: FocusType } = {};\n\n private focusAsElement(): Element | undefined {\n const currSelection = this.focus();\n return currSelection instanceof Element ? currSelection : undefined;\n }\n\n private focus(): FocusType;\n private focus(source: Widget, item: FocusType): this;\n private focus(source?: Widget, item?: FocusType): FocusType | this {\n if (!arguments.length) return this._currSelection[this.activeLHS().id()];\n if (this._currSelection[source.id()] !== item) {\n this._currSelection[source.id()] = item;\n this.loadRHSSplit();\n }\n return this;\n }\n\n loadRHSSplit() {\n this._rhsSplitView.loadDataProps(this.focus());\n }\n\n loadDataviews(): Promise<Widget | undefined> {\n if (this.activeLHS() === this._lhsDataviews) {\n return this._lhsDataviews.renderPromise();\n }\n return Promise.resolve(undefined);\n }\n\n loadDatasources(): Promise<Widget | undefined> {\n if (this.activeLHS() === this._lhsDatasources) {\n return this._lhsDatasources.renderPromise();\n }\n return Promise.resolve(undefined);\n }\n\n loadDashboard(): Promise<Widget | undefined> {\n if (this.activeLHS() === this._lhsDashboard) {\n this._elementContainer.validate();\n return this._lhsDashboard.renderPromise();\n }\n return Promise.resolve(undefined);\n }\n\n loadGraph() {\n this._lhsPipeline\n .data({ ...this._graphAdapter.createGraph() }, true)\n ;\n if (this.activeLHS() === this._lhsPipeline) {\n this._lhsPipeline\n .lazyRender()\n ;\n }\n }\n\n loadDDL() {\n this._lhsDebugDDLEditor\n .ddl(this._lhsDashboard.ddl())\n ;\n if (this.activeLHS() === this._lhsDebugDDLEditor) {\n this._lhsDebugDDLEditor\n .lazyRender()\n ;\n }\n }\n\n loadJavaScript() {\n this._lhsDebugJSEditor\n .javascript(this._lhsDashboard.javascript())\n ;\n if (this.activeLHS() === this._lhsDebugJSEditor) {\n this._lhsDebugJSEditor\n .lazyRender()\n ;\n }\n }\n\n loadClone() {\n const json = this.save();\n this._lhsDebugCloneEC.clear();\n this._lhsDebugClone.renderPromise().then(() => {\n this._lhsDebugClone.restore(json);\n this._lhsDebugClone.renderPromise().then(() => {\n return this._lhsDebugCloneEC.refresh();\n }).then(() => {\n for (const error of this._lhsDebugCloneEC.validate()) {\n logger.warning(error.elementID + \" (\" + error.source + \"): \" + error.msg);\n }\n });\n });\n }\n\n initMenu() {\n const commands = new CommandRegistry();\n\n // Dashboard Commands ---\n commands.addCommand(\"dash_add\", {\n label: \"Add View\",\n execute: () => {\n const newElem = new Element(this._elementContainer);\n this._elementContainer.append(newElem);\n this.loadDashboard().then(() => {\n newElem.refresh().then(() => {\n this._lhsDashboard.activate(newElem);\n });\n });\n }\n });\n\n commands.addCommand(\"dash_clear\", {\n label: \"Clear\",\n execute: () => {\n this.clear();\n }\n });\n\n commands.addCommand(\"dash_save\", {\n label: \"Save\",\n execute: () => {\n const text = JSON.stringify(this.save(), null, \" \");\n Utility.downloadString(\"JSON\", text, \"dashy\");\n }\n });\n\n commands.addCommand(\"dash_load\", {\n label: \"Open\",\n execute: () => {\n this._fileOpen.property(\"accept\", \".dashy,.json\");\n this._fileOpen.node().click();\n }\n });\n\n // Model Commands ---\n const palette = new CommandPalette({ commands });\n palette.addItem({ command: \"addWUResult\", category: \"Notebook\" });\n palette.addItem({ command: \"addView\", category: \"Notebook\" });\n palette.addItem({ command: \"remove\", category: \"Notebook\" });\n palette.id = \"palette\";\n\n const contextMenu = new ContextMenu({ commands });\n\n contextMenu.addItem({ command: \"dash_add\", selector: `#${this._lhsDashboard.id()}` });\n contextMenu.addItem({ command: \"dash_clear\", selector: `#${this._lhsDashboard.id()}` });\n contextMenu.addItem({ type: \"separator\", selector: `#${this._lhsDashboard.id()}` });\n\n contextMenu.addItem({ command: \"dash_load\", selector: `#${this.id()}` });\n contextMenu.addItem({ command: \"dash_save\", selector: `#${this.id()}` });\n\n document.addEventListener(\"contextmenu\", (event: MouseEvent) => {\n if (contextMenu.open(event)) {\n event.preventDefault();\n }\n });\n }\n\n addDatabomb(label: string, payload: string, format: \"csv\" | \"tsv\" | \"json\") {\n const databomb = new Databomb().id(label).format(format).payload(payload);\n this._elementContainer.appendDatasource(databomb);\n const newElem = new Element(this._elementContainer);\n const ds = newElem.hipiePipeline().datasource();\n if (ds instanceof DSPicker) {\n ds.datasourceID(databomb.id());\n }\n this._elementContainer.append(newElem);\n this.loadDashboard().then(() => {\n newElem.refresh().then(() => {\n this._lhsDashboard.activate(newElem);\n });\n });\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this\n .addWidget(this._lhsSheet)\n .addWidget(this._rhsSplitView)\n ;\n this._lhsSheet\n .addWidget(this._lhsDashboard, \"Dashboard\")\n .addWidget(this._lhsDataviews, \"Dataviews\")\n .addWidget(this._lhsDatasources, \"Datasources\")\n .addWidget(this._lhsPipeline, \"Pipeline\")\n .addWidget(this._lhsDebugSheet, \"Debug\")\n .on(\"childActivation\", (w: Widget) => {\n switch (w) {\n case this._lhsDataviews:\n this.loadRHSSplit();\n break;\n case this._lhsDatasources:\n this.loadRHSSplit();\n break;\n case this._lhsDashboard:\n this.loadRHSSplit();\n break;\n case this._lhsPipeline:\n this.loadRHSSplit();\n this.loadGraph();\n break;\n case this._lhsDebugSheet:\n this._lhsDebugSheet.childActivation(this._lhsDebugSheet.active());\n break;\n }\n })\n ;\n this._lhsDebugSheet\n .addWidget(this._lhsDebugDDLEditor, \"v2\")\n .addWidget(this._lhsDebugDDLSchema, \"Schema\")\n .addWidget(this._lhsDebugJSEditor, \"TS\")\n .addWidget(this._lhsDebugClone, \"Clone\")\n .on(\"childActivation\", (w: Widget) => {\n switch (w) {\n case this._lhsDebugDDLEditor:\n this.loadRHSSplit();\n this.loadDDL();\n break;\n case this._lhsDebugJSEditor:\n this.loadRHSSplit();\n this.loadJavaScript();\n break;\n case this._lhsDebugClone:\n this.loadClone();\n break;\n }\n })\n ;\n\n this.initMenu();\n this._rhsSplitView.on(\"propChanged\", (id: string, newValue: any, oldValue: any, source: PropertyExt) => {\n const currElement = this.focusAsElement();\n if (currElement) {\n currElement.refresh().then(() => {\n this._rhsSplitView.refreshPreview();\n });\n } else {\n this._rhsSplitView.refreshPreview();\n }\n switch (this.activeLHS()) {\n case this._lhsDashboard:\n this.loadDashboard();\n break;\n case this._lhsDatasources:\n this._elementContainer.refresh();\n break;\n case this._lhsPipeline:\n this.loadGraph();\n break;\n case this._lhsDebugDDLEditor:\n this.loadDDL();\n break;\n case this._lhsDebugClone:\n this.loadClone();\n break;\n }\n });\n\n const context = this;\n this._fileOpen = element.append(\"input\")\n .attr(\"type\", \"file\")\n .property(\"accept\", \".dashy,.json\")\n .style(\"display\", \"none\")\n .on(\"change\", function () {\n const i = 0;\n const f = this.files[i];\n while (f) {\n const reader = new FileReader();\n reader.onload = (function (theFile) {\n return function (e) {\n try {\n const result = Array.isArray(e.target.result) ? e.target.result[0] : e.target.result;\n const json = JSON.parse(result);\n context.importDDL(json);\n } catch (ex) {\n alert(\"ex when trying to parse json = \" + ex);\n }\n };\n })(f);\n reader.readAsText(f);\n break;\n }\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n }\n}\nDashy.prototype._class += \" composite_Dashy\";\n\nexport interface Dashy {\n disableActivities(): string[];\n disableActivities(_: string[]): this;\n}\nDashy.prototype.publishProxy(\"disableActivities\", \"_rhsSplitView\");"],"x_google_ignoreList":[20],"mappings":"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"}