@hpcc-js/marshaller 3.2.0 → 3.2.2
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 +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +17 -17
package/dist/index.umd.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.cjs","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","d3Min","max","d3Max","mean","d3Mean","median","d3Median","variance","d3Variance","deviation","d3Deviation","sum","d3Sum","_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.umd.cjs","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","d3Min","max","d3Max","mean","d3Mean","median","d3Median","variance","d3Variance","deviation","d3Deviation","sum","d3Sum","_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]}
|