@bluecopa/core 0.1.13 → 0.1.15
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/api/definition/getDescription.d.ts +8 -0
- package/dist/api/definition/runDefinition.d.ts +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/statement/createNewRun.d.ts +25 -0
- package/dist/api/statement/getData.d.ts +20 -0
- package/dist/api/statement/getRunResultById.d.ts +8 -0
- package/dist/api/statement/getRunsByViewId.d.ts +8 -0
- package/dist/api/statement/getViewById.d.ts +8 -0
- package/dist/api/statement/getViewsBySheetId.d.ts +8 -0
- package/dist/api/statement/index.d.ts +6 -0
- package/dist/index.es.js +811 -55
- package/dist/index.es.js.map +1 -1
- package/dist/types/statement.d.ts +47 -0
- package/dist/utils/common/generatePushId.d.ts +11 -0
- package/dist/utils/common/generateRandomName.d.ts +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/inputTable/inputTableDefinition.d.ts +1 -1
- package/dist/utils/metric/analysisMethods.d.ts +8 -35
- package/dist/utils/metric/filterUtils.d.ts +1 -1
- package/dist/utils/metric/getMetricDefinition.d.ts +1 -1
- package/dist/utils/statement/filterConverters.d.ts +11 -0
- package/dist/utils/statement/filterUtils.d.ts +14 -0
- package/dist/utils/statement/hydrateStatement.d.ts +7 -0
- package/package.json +2 -2
package/dist/index.es.js
CHANGED
|
@@ -54,7 +54,7 @@ const createApiClient = () => {
|
|
|
54
54
|
config.baseURL = copaConfig.apiBaseUrl;
|
|
55
55
|
}
|
|
56
56
|
if (copaConfig.accessToken && config.headers) {
|
|
57
|
-
config.headers["X-COPA-TOKEN"] =
|
|
57
|
+
config.headers["X-COPA-TOKEN"] = `${copaConfig.accessToken}`;
|
|
58
58
|
}
|
|
59
59
|
if (copaConfig.workspaceId && config.headers) {
|
|
60
60
|
config.headers["X-COPA-WORKSPACE-ID"] = copaConfig.workspaceId;
|
|
@@ -99,7 +99,7 @@ async function getLoggedInUserDetails() {
|
|
|
99
99
|
throw { message, status };
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
|
-
const index$
|
|
102
|
+
const index$c = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
103
103
|
__proto__: null,
|
|
104
104
|
getLoggedInUserDetails
|
|
105
105
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -158,7 +158,7 @@ const getWorkflowInstanceStatusById = async (request) => {
|
|
|
158
158
|
throw { message, status };
|
|
159
159
|
}
|
|
160
160
|
};
|
|
161
|
-
const index$
|
|
161
|
+
const index$b = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
162
162
|
__proto__: null,
|
|
163
163
|
WorkflowStatus,
|
|
164
164
|
getWorkflowInstanceStatusById,
|
|
@@ -183,7 +183,7 @@ async function getFileUrlByFileId({
|
|
|
183
183
|
throw { message, status };
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
|
-
const index$
|
|
186
|
+
const index$a = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
187
187
|
__proto__: null,
|
|
188
188
|
getFileUrlByFileId
|
|
189
189
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -220,23 +220,42 @@ const runSampleDefinition = async (props) => {
|
|
|
220
220
|
);
|
|
221
221
|
};
|
|
222
222
|
const runDefinition = async (props) => {
|
|
223
|
+
var _a, _b, _c, _d;
|
|
223
224
|
const { definition, variable, inputs, limit, source } = props;
|
|
224
225
|
if (!definition) {
|
|
225
|
-
throw
|
|
226
|
+
throw {
|
|
227
|
+
message: "Definition is required for definition run",
|
|
228
|
+
status: 400
|
|
229
|
+
};
|
|
226
230
|
}
|
|
227
231
|
if (!variable) {
|
|
228
|
-
throw
|
|
232
|
+
throw {
|
|
233
|
+
message: "Variable name is required for definition run",
|
|
234
|
+
status: 400
|
|
235
|
+
};
|
|
229
236
|
}
|
|
230
237
|
if (!inputs) {
|
|
231
|
-
throw
|
|
238
|
+
throw {
|
|
239
|
+
message: "Inputs are required for definition run",
|
|
240
|
+
status: 400
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
try {
|
|
244
|
+
const response = await apiClient.post(
|
|
245
|
+
"/definition/run",
|
|
246
|
+
{ inputs, definition, variable, limit },
|
|
247
|
+
{ cancelToken: source == null ? void 0 : source.token }
|
|
248
|
+
);
|
|
249
|
+
return response.data;
|
|
250
|
+
} catch (error) {
|
|
251
|
+
throw {
|
|
252
|
+
message: ((_b = (_a = error.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message) || "Failed to run definition",
|
|
253
|
+
status: ((_c = error.response) == null ? void 0 : _c.status) || 500,
|
|
254
|
+
data: (_d = error.response) == null ? void 0 : _d.data
|
|
255
|
+
};
|
|
232
256
|
}
|
|
233
|
-
return apiClient.post(
|
|
234
|
-
"/definition/run",
|
|
235
|
-
{ inputs, definition, variable, limit },
|
|
236
|
-
{ cancelToken: source == null ? void 0 : source.token }
|
|
237
|
-
);
|
|
238
257
|
};
|
|
239
|
-
const index$
|
|
258
|
+
const index$9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
240
259
|
__proto__: null,
|
|
241
260
|
runDefinition,
|
|
242
261
|
runPublishedDefinition,
|
|
@@ -274,7 +293,7 @@ const getWorksheetsByType = async (type) => {
|
|
|
274
293
|
throw { message, status };
|
|
275
294
|
}
|
|
276
295
|
};
|
|
277
|
-
const index$
|
|
296
|
+
const index$8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
278
297
|
__proto__: null,
|
|
279
298
|
getWorksheets,
|
|
280
299
|
getWorksheetsByType
|
|
@@ -651,7 +670,7 @@ const getFiltersToBeAppliedOnDrilldown = (props) => {
|
|
|
651
670
|
const getMetricFilterRule = (inputs) => {
|
|
652
671
|
const isInputsArray = Array.isArray(inputs);
|
|
653
672
|
const input = isInputsArray ? inputs[0] : inputs;
|
|
654
|
-
return (input == null ? void 0 : input["rule_pivot"]) ?? defaultFilterRule;
|
|
673
|
+
return (input == null ? void 0 : input["rule_pivot"]) ?? defaultFilterRule$1;
|
|
655
674
|
};
|
|
656
675
|
const getColumnSettingsToSelectOptions = (columnSettings) => {
|
|
657
676
|
return _.chain(columnSettings).filter((c) => !c.field.includes("__bc_") && !c.aggFunc).map((c) => {
|
|
@@ -670,7 +689,7 @@ const getColumnSettingsToSelectOptions = (columnSettings) => {
|
|
|
670
689
|
};
|
|
671
690
|
}).value();
|
|
672
691
|
};
|
|
673
|
-
const defaultFilterRule = {
|
|
692
|
+
const defaultFilterRule$1 = {
|
|
674
693
|
is_not: false,
|
|
675
694
|
rule_type: "and_cond",
|
|
676
695
|
rules: []
|
|
@@ -933,13 +952,14 @@ const updatePromotedFiltersAndDateRangeToMetadataAndInputs = (props) => {
|
|
|
933
952
|
["filterOnAggregates"]: _.get(
|
|
934
953
|
inputs,
|
|
935
954
|
"filterOnAggregates",
|
|
936
|
-
defaultFilterRule
|
|
955
|
+
defaultFilterRule$1
|
|
937
956
|
),
|
|
938
957
|
["rule_pivot"]: updatedFilterRule,
|
|
939
958
|
date_range: updatedDateRange,
|
|
940
959
|
to_currency: updateCurrencyFilterValue,
|
|
941
960
|
showDimensionMappingValues: metadata.showDimensionMappingValues ?? false,
|
|
942
|
-
showBinSortOrderValues: ((_a = metadata == null ? void 0 : metadata.inputs) == null ? void 0 : _a.showBinSortOrderValues) ?? false
|
|
961
|
+
showBinSortOrderValues: ((_a = metadata == null ? void 0 : metadata.inputs) == null ? void 0 : _a.showBinSortOrderValues) ?? false,
|
|
962
|
+
groupsSortOrder: (inputs == null ? void 0 : inputs.groupsSortOrder) ?? inputs.groupByInput.map((r) => [r, "asc"])
|
|
943
963
|
};
|
|
944
964
|
const updatedMetadata = {
|
|
945
965
|
...metadata,
|
|
@@ -1053,6 +1073,7 @@ const getInputsArray = (props) => {
|
|
|
1053
1073
|
projectAsInput,
|
|
1054
1074
|
showDimensionMappingValues,
|
|
1055
1075
|
showBinSortOrderValues,
|
|
1076
|
+
groupsSortOrder: groupByInput.map((r) => [r, "asc"]),
|
|
1056
1077
|
...sortPivotInputsKey ? { [sortPivotInputsKey]: sortPivotInputsValue } : {}
|
|
1057
1078
|
});
|
|
1058
1079
|
});
|
|
@@ -1075,6 +1096,7 @@ const getInputsArray = (props) => {
|
|
|
1075
1096
|
projectAsInput,
|
|
1076
1097
|
showDimensionMappingValues,
|
|
1077
1098
|
showBinSortOrderValues,
|
|
1099
|
+
groupsSortOrder: _.map(rowsToGroupBy[0], (r) => [r, "asc"]),
|
|
1078
1100
|
...sortPivotInputsKey ? { [sortPivotInputsKey]: sortPivotInputsValue } : {}
|
|
1079
1101
|
};
|
|
1080
1102
|
});
|
|
@@ -1094,6 +1116,7 @@ const getInputsArray = (props) => {
|
|
|
1094
1116
|
projectAsInput,
|
|
1095
1117
|
showDimensionMappingValues,
|
|
1096
1118
|
showBinSortOrderValues,
|
|
1119
|
+
groupsSortOrder: _.map(rowsToGroupBy[0], (r) => [r, "asc"]),
|
|
1097
1120
|
...sortPivotInputsKey ? { [sortPivotInputsKey]: sortPivotInputsValue } : {}
|
|
1098
1121
|
}
|
|
1099
1122
|
];
|
|
@@ -4824,13 +4847,18 @@ class CentrifugoWebsocket {
|
|
|
4824
4847
|
this.centrifuge = null;
|
|
4825
4848
|
this.subscriptions = {};
|
|
4826
4849
|
this.isConnected = false;
|
|
4827
|
-
}
|
|
4828
|
-
connect() {
|
|
4829
4850
|
if (!this.accessToken) {
|
|
4830
|
-
throw new Error("
|
|
4851
|
+
throw new Error("AccessToken is required");
|
|
4852
|
+
}
|
|
4853
|
+
if (!this.userId) {
|
|
4854
|
+
throw new Error("UserId is required");
|
|
4831
4855
|
}
|
|
4856
|
+
if (!this.connectionUrl) {
|
|
4857
|
+
throw new Error("ConnectionUrl is required");
|
|
4858
|
+
}
|
|
4859
|
+
}
|
|
4860
|
+
connect() {
|
|
4832
4861
|
if (!this.centrifuge) {
|
|
4833
|
-
const token = atob(this.accessToken);
|
|
4834
4862
|
this.centrifuge = new Centrifuge(
|
|
4835
4863
|
[
|
|
4836
4864
|
{
|
|
@@ -4839,7 +4867,7 @@ class CentrifugoWebsocket {
|
|
|
4839
4867
|
}
|
|
4840
4868
|
],
|
|
4841
4869
|
{
|
|
4842
|
-
token
|
|
4870
|
+
token: this.accessToken
|
|
4843
4871
|
}
|
|
4844
4872
|
);
|
|
4845
4873
|
this.centrifuge.on("connecting", () => {
|
|
@@ -4870,12 +4898,11 @@ class CentrifugoWebsocket {
|
|
|
4870
4898
|
subscription.on("publication", (data) => {
|
|
4871
4899
|
callback(_.get(data, "data", data));
|
|
4872
4900
|
});
|
|
4873
|
-
subscription.on("subscribing", (
|
|
4874
|
-
console.log("subscribing"
|
|
4901
|
+
subscription.on("subscribing", () => {
|
|
4902
|
+
console.log("subscribing");
|
|
4875
4903
|
});
|
|
4876
|
-
subscription.on("subscribed", (
|
|
4877
|
-
console.log("subscribed to", channelName
|
|
4878
|
-
console.log("subscribed", data);
|
|
4904
|
+
subscription.on("subscribed", () => {
|
|
4905
|
+
console.log("subscribed to", channelName);
|
|
4879
4906
|
});
|
|
4880
4907
|
subscription.subscribe();
|
|
4881
4908
|
}
|
|
@@ -4927,12 +4954,320 @@ const websocketProviderFactory = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ O
|
|
|
4927
4954
|
__proto__: null,
|
|
4928
4955
|
WebsocketContextFactory
|
|
4929
4956
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
4930
|
-
const
|
|
4957
|
+
const getDescription = async (props) => {
|
|
4958
|
+
var _a, _b, _c, _d;
|
|
4959
|
+
const { definition, variable, inputs, source } = props;
|
|
4960
|
+
if (!definition) {
|
|
4961
|
+
throw {
|
|
4962
|
+
message: "Definition is required for description lookup",
|
|
4963
|
+
status: 400
|
|
4964
|
+
};
|
|
4965
|
+
}
|
|
4966
|
+
if (!variable) {
|
|
4967
|
+
throw {
|
|
4968
|
+
message: "Variable name is required for description lookup",
|
|
4969
|
+
status: 400
|
|
4970
|
+
};
|
|
4971
|
+
}
|
|
4972
|
+
if (!inputs) {
|
|
4973
|
+
throw {
|
|
4974
|
+
message: "Inputs are required for description lookup",
|
|
4975
|
+
status: 400
|
|
4976
|
+
};
|
|
4977
|
+
}
|
|
4978
|
+
try {
|
|
4979
|
+
const response = await apiClient.post(
|
|
4980
|
+
"/definition/describe",
|
|
4981
|
+
{ definition, variable, inputs },
|
|
4982
|
+
{ cancelToken: source == null ? void 0 : source.token }
|
|
4983
|
+
);
|
|
4984
|
+
return response.data;
|
|
4985
|
+
} catch (error) {
|
|
4986
|
+
throw {
|
|
4987
|
+
message: ((_b = (_a = error.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message) || "Failed to fetch variable description",
|
|
4988
|
+
status: ((_c = error.response) == null ? void 0 : _c.status) || 500,
|
|
4989
|
+
data: (_d = error.response) == null ? void 0 : _d.data
|
|
4990
|
+
};
|
|
4991
|
+
}
|
|
4992
|
+
};
|
|
4993
|
+
const defaultFilterRule = {
|
|
4994
|
+
is_not: false,
|
|
4995
|
+
rule_type: "and_cond",
|
|
4996
|
+
rules: []
|
|
4997
|
+
};
|
|
4998
|
+
const createFilterRuleFromValues = (column, values) => {
|
|
4999
|
+
return {
|
|
5000
|
+
rule_type: "and_cond",
|
|
5001
|
+
is_not: false,
|
|
5002
|
+
is_case_sensitive: false,
|
|
5003
|
+
rules: [
|
|
5004
|
+
{
|
|
5005
|
+
rule_type: "cond",
|
|
5006
|
+
col: column,
|
|
5007
|
+
operator: "in_op",
|
|
5008
|
+
value: values,
|
|
5009
|
+
is_not: false
|
|
5010
|
+
}
|
|
5011
|
+
]
|
|
5012
|
+
};
|
|
5013
|
+
};
|
|
5014
|
+
const getSheetById = (sheets, sheetId) => sheets.find((s) => s.id === sheetId);
|
|
5015
|
+
const convertToPromotedFilter = (statementFilter, statement) => {
|
|
5016
|
+
var _a;
|
|
5017
|
+
try {
|
|
5018
|
+
const sheet = getSheetById(statement.sheets || [], statementFilter.sheetId);
|
|
5019
|
+
if (!sheet) {
|
|
5020
|
+
console.warn(
|
|
5021
|
+
`Sheet ${statementFilter.sheetId} not found for promoted filter`
|
|
5022
|
+
);
|
|
5023
|
+
return null;
|
|
5024
|
+
}
|
|
5025
|
+
const metadata = (_a = sheet.customModel) == null ? void 0 : _a.metadata;
|
|
5026
|
+
const definitionModel = sheet.definitionModel;
|
|
5027
|
+
if (!metadata || !definitionModel) {
|
|
5028
|
+
console.warn(`Metadata or definition not found for sheet ${sheet.id}`);
|
|
5029
|
+
return null;
|
|
5030
|
+
}
|
|
5031
|
+
const columnSettings = metadata.columnSettings || [];
|
|
5032
|
+
const sheetDetails = {
|
|
5033
|
+
sheetId: statementFilter.sheetId,
|
|
5034
|
+
definitionModel,
|
|
5035
|
+
parentTableVariable: metadata.parentTableVariable || "",
|
|
5036
|
+
inputs: metadata.inputs || {}
|
|
5037
|
+
};
|
|
5038
|
+
const rule = createFilterRuleFromValues(
|
|
5039
|
+
statementFilter.column,
|
|
5040
|
+
statementFilter.values
|
|
5041
|
+
);
|
|
5042
|
+
const appliedOnBlocks = statementFilter.lineIds.map((lineId) => {
|
|
5043
|
+
const lineSheet = getSheetById(statement.sheets || [], lineId);
|
|
5044
|
+
return {
|
|
5045
|
+
blockId: lineId,
|
|
5046
|
+
blockName: (lineSheet == null ? void 0 : lineSheet.name) || lineId,
|
|
5047
|
+
applied: true
|
|
5048
|
+
};
|
|
5049
|
+
});
|
|
5050
|
+
const columnSetting = columnSettings.find(
|
|
5051
|
+
(c) => c.field === statementFilter.column
|
|
5052
|
+
);
|
|
5053
|
+
const promotedFilter = {
|
|
5054
|
+
name: statementFilter.name,
|
|
5055
|
+
rule,
|
|
5056
|
+
filterColumnsBy: metadata.filterColumnsBy || {},
|
|
5057
|
+
sheetDetails,
|
|
5058
|
+
appliedOnBlocks,
|
|
5059
|
+
datasetId: statementFilter.datasetId,
|
|
5060
|
+
datasetName: statementFilter.datasetName || "",
|
|
5061
|
+
blockColumnSettings: columnSettings,
|
|
5062
|
+
blockId: statementFilter.sheetId,
|
|
5063
|
+
uniqueValueCount: columnSetting == null ? void 0 : columnSetting.unique_count,
|
|
5064
|
+
id: statementFilter.column
|
|
5065
|
+
};
|
|
5066
|
+
return promotedFilter;
|
|
5067
|
+
} catch (error) {
|
|
5068
|
+
console.error("Error converting to promoted filter:", error);
|
|
5069
|
+
return null;
|
|
5070
|
+
}
|
|
5071
|
+
};
|
|
5072
|
+
const convertToCommonFilter = async (statementFilter, statement) => {
|
|
5073
|
+
var _a;
|
|
5074
|
+
try {
|
|
5075
|
+
const sheet = getSheetById(statement.sheets || [], statementFilter.sheetId);
|
|
5076
|
+
if (!sheet) {
|
|
5077
|
+
console.warn(
|
|
5078
|
+
`Sheet ${statementFilter.sheetId} not found for common filter`
|
|
5079
|
+
);
|
|
5080
|
+
return null;
|
|
5081
|
+
}
|
|
5082
|
+
const metadata = (_a = sheet.customModel) == null ? void 0 : _a.metadata;
|
|
5083
|
+
const definitionModel = sheet.definitionModel;
|
|
5084
|
+
if (!metadata || !definitionModel) {
|
|
5085
|
+
console.warn(`Metadata or definition not found for sheet ${sheet.id}`);
|
|
5086
|
+
return null;
|
|
5087
|
+
}
|
|
5088
|
+
const columnSettings = metadata.columnSettings || [];
|
|
5089
|
+
const sheetDetails = {
|
|
5090
|
+
sheetId: statementFilter.sheetId,
|
|
5091
|
+
definitionModel,
|
|
5092
|
+
parentTableVariable: metadata.parentTableVariable || "",
|
|
5093
|
+
inputs: metadata.inputs || {}
|
|
5094
|
+
};
|
|
5095
|
+
const rule = createFilterRuleFromValues(
|
|
5096
|
+
statementFilter.column,
|
|
5097
|
+
statementFilter.values
|
|
5098
|
+
);
|
|
5099
|
+
const appliedOnBlocks = statementFilter.linesToApply.map((lineMapping) => {
|
|
5100
|
+
var _a2, _b;
|
|
5101
|
+
const lineSheet = getSheetById(
|
|
5102
|
+
statement.sheets || [],
|
|
5103
|
+
lineMapping.lineId
|
|
5104
|
+
);
|
|
5105
|
+
const lineColumnSettings = (_b = (_a2 = lineSheet == null ? void 0 : lineSheet.customModel) == null ? void 0 : _a2.metadata) == null ? void 0 : _b.columnSettings;
|
|
5106
|
+
const columnSelectOptions = _.map(lineColumnSettings, (cs) => ({
|
|
5107
|
+
label: cs.headerName,
|
|
5108
|
+
value: cs.field,
|
|
5109
|
+
option: cs
|
|
5110
|
+
}));
|
|
5111
|
+
return {
|
|
5112
|
+
blockId: lineMapping.lineId,
|
|
5113
|
+
blockName: (lineSheet == null ? void 0 : lineSheet.name) || lineMapping.lineId,
|
|
5114
|
+
applied: true,
|
|
5115
|
+
column: lineMapping.column,
|
|
5116
|
+
columnSettings: columnSelectOptions
|
|
5117
|
+
};
|
|
5118
|
+
});
|
|
5119
|
+
const datasetDefinitionModel = {
|
|
5120
|
+
imports: [
|
|
5121
|
+
{
|
|
5122
|
+
loc: statementFilter.datasetId,
|
|
5123
|
+
to: statementFilter.datasetName,
|
|
5124
|
+
import_type: "dataset"
|
|
5125
|
+
}
|
|
5126
|
+
],
|
|
5127
|
+
loads: [],
|
|
5128
|
+
variables: [],
|
|
5129
|
+
metrics: [],
|
|
5130
|
+
permissions: [],
|
|
5131
|
+
exports: [],
|
|
5132
|
+
inputs: {
|
|
5133
|
+
date_range: {}
|
|
5134
|
+
}
|
|
5135
|
+
};
|
|
5136
|
+
let columnDescResult;
|
|
5137
|
+
try {
|
|
5138
|
+
const response = await getDescription({
|
|
5139
|
+
inputs: {},
|
|
5140
|
+
definition: datasetDefinitionModel,
|
|
5141
|
+
variable: statementFilter.datasetName
|
|
5142
|
+
});
|
|
5143
|
+
const descriptionResults = response.data;
|
|
5144
|
+
columnDescResult = _.find(
|
|
5145
|
+
descriptionResults,
|
|
5146
|
+
(desc) => desc.name === statementFilter.column
|
|
5147
|
+
);
|
|
5148
|
+
} catch (error) {
|
|
5149
|
+
console.warn(
|
|
5150
|
+
`Failed to get description for dataset ${statementFilter.datasetName}:`,
|
|
5151
|
+
error
|
|
5152
|
+
);
|
|
5153
|
+
columnDescResult = {
|
|
5154
|
+
name: statementFilter.column,
|
|
5155
|
+
data_type: "string",
|
|
5156
|
+
is_currency_column: false,
|
|
5157
|
+
datasetId: statementFilter.datasetId,
|
|
5158
|
+
datasetName: statementFilter.datasetName
|
|
5159
|
+
};
|
|
5160
|
+
}
|
|
5161
|
+
const filterColumnsBy = metadata.filterColumnsBy ? metadata.filterColumnsBy : { [statementFilter.column]: "value" };
|
|
5162
|
+
const commonFilter = {
|
|
5163
|
+
name: statementFilter.name,
|
|
5164
|
+
column: columnDescResult,
|
|
5165
|
+
rule,
|
|
5166
|
+
sheetDetails,
|
|
5167
|
+
filterColumnsBy,
|
|
5168
|
+
appliedOnBlocks,
|
|
5169
|
+
datasetName: statementFilter.datasetName || "",
|
|
5170
|
+
datasetId: statementFilter.datasetId,
|
|
5171
|
+
columnSettings,
|
|
5172
|
+
uniqueValueCount: columnDescResult == null ? void 0 : columnDescResult["unique_count"],
|
|
5173
|
+
id: statementFilter.column
|
|
5174
|
+
};
|
|
5175
|
+
return commonFilter;
|
|
5176
|
+
} catch (error) {
|
|
5177
|
+
console.error("Error converting to common filter:", error);
|
|
5178
|
+
return null;
|
|
5179
|
+
}
|
|
5180
|
+
};
|
|
5181
|
+
const convertStatementFiltersToFullTypes = async (promotedFilters, commonFilters, statement) => {
|
|
5182
|
+
const convertedPromoted = promotedFilters.map((f) => convertToPromotedFilter(f, statement)).filter((f) => f !== null);
|
|
5183
|
+
const convertedCommonPromises = commonFilters.map(
|
|
5184
|
+
(f) => convertToCommonFilter(f, statement)
|
|
5185
|
+
);
|
|
5186
|
+
const convertedCommon = (await Promise.all(convertedCommonPromises)).filter(
|
|
5187
|
+
(f) => f !== null
|
|
5188
|
+
);
|
|
5189
|
+
return {
|
|
5190
|
+
promotedFilters: convertedPromoted,
|
|
5191
|
+
commonFilters: convertedCommon
|
|
5192
|
+
};
|
|
5193
|
+
};
|
|
5194
|
+
const filterConverters = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
4931
5195
|
__proto__: null,
|
|
4932
|
-
|
|
4933
|
-
|
|
4934
|
-
|
|
4935
|
-
|
|
5196
|
+
convertStatementFiltersToFullTypes,
|
|
5197
|
+
convertToCommonFilter,
|
|
5198
|
+
convertToPromotedFilter,
|
|
5199
|
+
createFilterRuleFromValues,
|
|
5200
|
+
defaultFilterRule
|
|
5201
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
5202
|
+
const addFilterToRunInputs = (runInputs, lineValue, filter) => {
|
|
5203
|
+
if (!runInputs[lineValue]) {
|
|
5204
|
+
runInputs[lineValue] = filter;
|
|
5205
|
+
} else if (Array.isArray(runInputs[lineValue])) {
|
|
5206
|
+
runInputs[lineValue].push(filter);
|
|
5207
|
+
} else {
|
|
5208
|
+
runInputs[lineValue] = [runInputs[lineValue], filter];
|
|
5209
|
+
}
|
|
5210
|
+
};
|
|
5211
|
+
const convertFiltersToRunInputs = (promotedFilters, commonFilters, statementSheet) => {
|
|
5212
|
+
var _a, _b;
|
|
5213
|
+
const runInputs = {};
|
|
5214
|
+
const allLines = ((_b = (_a = statementSheet.customModel) == null ? void 0 : _a.sections) == null ? void 0 : _b.flatMap((section) => section.lines)) ?? [];
|
|
5215
|
+
_.forEach(promotedFilters, (filter) => {
|
|
5216
|
+
_.forEach(filter.lineIds, (lineId) => {
|
|
5217
|
+
var _a2;
|
|
5218
|
+
const lineValue = (_a2 = _.find(allLines, (l) => l.id === lineId)) == null ? void 0 : _a2.value;
|
|
5219
|
+
if (!lineValue) {
|
|
5220
|
+
console.warn(`Line with id ${lineId} not found in statement sheet`);
|
|
5221
|
+
return;
|
|
5222
|
+
}
|
|
5223
|
+
const lineFilter = {
|
|
5224
|
+
dataset_id: filter.datasetId,
|
|
5225
|
+
filter_input_key: "rule_pivot",
|
|
5226
|
+
filter_value: createFilterRuleFromValues(filter.column, filter.values)
|
|
5227
|
+
};
|
|
5228
|
+
addFilterToRunInputs(runInputs, lineValue, lineFilter);
|
|
5229
|
+
});
|
|
5230
|
+
});
|
|
5231
|
+
_.forEach(commonFilters, (filter) => {
|
|
5232
|
+
_.forEach(filter.linesToApply, (lineMapping) => {
|
|
5233
|
+
var _a2;
|
|
5234
|
+
const lineValue = (_a2 = _.find(
|
|
5235
|
+
allLines,
|
|
5236
|
+
(l) => l.id === lineMapping.lineId
|
|
5237
|
+
)) == null ? void 0 : _a2.value;
|
|
5238
|
+
if (!lineValue) {
|
|
5239
|
+
console.warn(
|
|
5240
|
+
`Line with id ${lineMapping.lineId} not found in statement sheet`
|
|
5241
|
+
);
|
|
5242
|
+
return;
|
|
5243
|
+
}
|
|
5244
|
+
const columnName = lineMapping.column;
|
|
5245
|
+
const lineFilter = {
|
|
5246
|
+
dataset_id: filter.datasetId,
|
|
5247
|
+
filter_input_key: "rule_pivot",
|
|
5248
|
+
filter_value: createFilterRuleFromValues(columnName, filter.values)
|
|
5249
|
+
};
|
|
5250
|
+
addFilterToRunInputs(runInputs, lineValue, lineFilter);
|
|
5251
|
+
});
|
|
5252
|
+
});
|
|
5253
|
+
return runInputs;
|
|
5254
|
+
};
|
|
5255
|
+
const separateColumnFilters = (columnFilters) => {
|
|
5256
|
+
const promotedFilters = [];
|
|
5257
|
+
const commonFilters = [];
|
|
5258
|
+
_.forEach(columnFilters, (filter) => {
|
|
5259
|
+
if (filter.filterType === "promoted") {
|
|
5260
|
+
promotedFilters.push(filter);
|
|
5261
|
+
} else if (filter.filterType === "common") {
|
|
5262
|
+
commonFilters.push(filter);
|
|
5263
|
+
}
|
|
5264
|
+
});
|
|
5265
|
+
return { promotedFilters, commonFilters };
|
|
5266
|
+
};
|
|
5267
|
+
const filterUtils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5268
|
+
__proto__: null,
|
|
5269
|
+
convertFiltersToRunInputs,
|
|
5270
|
+
separateColumnFilters
|
|
4936
5271
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
4937
5272
|
async function downloadFile(loc, contentType) {
|
|
4938
5273
|
if (!loc) return null;
|
|
@@ -4961,6 +5296,157 @@ async function downloadFile(loc, contentType) {
|
|
|
4961
5296
|
throw error;
|
|
4962
5297
|
}
|
|
4963
5298
|
}
|
|
5299
|
+
const hydrateStatement = async (workbook) => {
|
|
5300
|
+
var _a;
|
|
5301
|
+
const workbookModel = {
|
|
5302
|
+
...workbook,
|
|
5303
|
+
sheets: [...workbook.sheets]
|
|
5304
|
+
};
|
|
5305
|
+
const sheetsGroupedByType = _.groupBy(workbookModel.sheets, "type");
|
|
5306
|
+
const statementSheet = (_a = sheetsGroupedByType.STATEMENT_SHEET) == null ? void 0 : _a[0];
|
|
5307
|
+
if (!statementSheet) {
|
|
5308
|
+
throw new Error("No STATEMENT_SHEET found in workbook");
|
|
5309
|
+
}
|
|
5310
|
+
if (!statementSheet.externalDataId) {
|
|
5311
|
+
throw new Error("STATEMENT_SHEET is missing required externalDataId");
|
|
5312
|
+
}
|
|
5313
|
+
if (!statementSheet.modelId) {
|
|
5314
|
+
throw new Error("STATEMENT_SHEET is missing required modelId");
|
|
5315
|
+
}
|
|
5316
|
+
const statementSheetDefinitionModelId = statementSheet.externalDataId;
|
|
5317
|
+
const statementSheetCustomModelId = statementSheet.modelId;
|
|
5318
|
+
const modelResultsPromises = [
|
|
5319
|
+
downloadFile(statementSheetDefinitionModelId, "application/json"),
|
|
5320
|
+
downloadFile(statementSheetCustomModelId, "application/json")
|
|
5321
|
+
];
|
|
5322
|
+
if (!_.isEmpty(sheetsGroupedByType.PIVOT)) {
|
|
5323
|
+
const commonDefinitionModelId = sheetsGroupedByType.PIVOT[0].externalDataId;
|
|
5324
|
+
const commonCustomModelId = sheetsGroupedByType.PIVOT[0].modelId;
|
|
5325
|
+
modelResultsPromises.push(
|
|
5326
|
+
downloadFile(commonDefinitionModelId, "application/json")
|
|
5327
|
+
);
|
|
5328
|
+
modelResultsPromises.push(
|
|
5329
|
+
downloadFile(commonCustomModelId, "application/json")
|
|
5330
|
+
);
|
|
5331
|
+
} else {
|
|
5332
|
+
modelResultsPromises.push(Promise.resolve({}), Promise.resolve({}));
|
|
5333
|
+
}
|
|
5334
|
+
if (!_.isEmpty(sheetsGroupedByType.PLAN)) {
|
|
5335
|
+
const commonPlanDefinitionModelId = sheetsGroupedByType.PLAN[0].externalDataId;
|
|
5336
|
+
const commonPlanCustomModelId = sheetsGroupedByType.PLAN[0].modelId;
|
|
5337
|
+
modelResultsPromises.push(
|
|
5338
|
+
downloadFile(commonPlanDefinitionModelId, "application/json")
|
|
5339
|
+
);
|
|
5340
|
+
modelResultsPromises.push(
|
|
5341
|
+
downloadFile(commonPlanCustomModelId, "application/json")
|
|
5342
|
+
);
|
|
5343
|
+
} else {
|
|
5344
|
+
modelResultsPromises.push(Promise.resolve({}), Promise.resolve({}));
|
|
5345
|
+
}
|
|
5346
|
+
const results = await Promise.allSettled(modelResultsPromises);
|
|
5347
|
+
let commonDefinitionModel = {};
|
|
5348
|
+
let commonCustomModel = {};
|
|
5349
|
+
let planCommonDefinitionModel = {};
|
|
5350
|
+
let planCommonCustomModel = {};
|
|
5351
|
+
const [
|
|
5352
|
+
resStatementDef,
|
|
5353
|
+
resStatementCustom,
|
|
5354
|
+
resPivotDef,
|
|
5355
|
+
resPivotCustom,
|
|
5356
|
+
resPlanDef,
|
|
5357
|
+
resPlanCustom
|
|
5358
|
+
] = results;
|
|
5359
|
+
if (resStatementDef.status !== "fulfilled") {
|
|
5360
|
+
throw new Error(
|
|
5361
|
+
`Failed to download STATEMENT definition model: ${resStatementDef.reason ?? "unknown error"}`
|
|
5362
|
+
);
|
|
5363
|
+
}
|
|
5364
|
+
if (resStatementCustom.status !== "fulfilled") {
|
|
5365
|
+
throw new Error(
|
|
5366
|
+
`Failed to download STATEMENT custom model: ${resStatementCustom.reason ?? "unknown error"}`
|
|
5367
|
+
);
|
|
5368
|
+
}
|
|
5369
|
+
statementSheet.definitionModel = resStatementDef.value;
|
|
5370
|
+
statementSheet.customModel = resStatementCustom.value;
|
|
5371
|
+
if (resPivotDef && resPivotDef.status === "fulfilled") {
|
|
5372
|
+
commonDefinitionModel = resPivotDef.value;
|
|
5373
|
+
}
|
|
5374
|
+
if (resPivotCustom && resPivotCustom.status === "fulfilled") {
|
|
5375
|
+
commonCustomModel = resPivotCustom.value;
|
|
5376
|
+
}
|
|
5377
|
+
if (resPlanDef && resPlanDef.status === "fulfilled") {
|
|
5378
|
+
planCommonDefinitionModel = resPlanDef.value;
|
|
5379
|
+
}
|
|
5380
|
+
if (resPlanCustom && resPlanCustom.status === "fulfilled") {
|
|
5381
|
+
planCommonCustomModel = resPlanCustom.value;
|
|
5382
|
+
}
|
|
5383
|
+
_.forEach(sheetsGroupedByType.PIVOT, (sheet) => {
|
|
5384
|
+
sheet.customModel = commonCustomModel[sheet.id];
|
|
5385
|
+
sheet.definitionModel = commonDefinitionModel[sheet.id];
|
|
5386
|
+
});
|
|
5387
|
+
_.forEach(sheetsGroupedByType.PLAN, (sheet) => {
|
|
5388
|
+
sheet.customModel = planCommonCustomModel[sheet.id];
|
|
5389
|
+
sheet.definitionModel = planCommonDefinitionModel[sheet.id];
|
|
5390
|
+
});
|
|
5391
|
+
return workbookModel;
|
|
5392
|
+
};
|
|
5393
|
+
const generatePushID = function() {
|
|
5394
|
+
const PUSH_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
|
5395
|
+
const pushCharLength = PUSH_CHARS.length;
|
|
5396
|
+
let lastPushTime = 0;
|
|
5397
|
+
const lastRandChars = [];
|
|
5398
|
+
return function() {
|
|
5399
|
+
let now = (/* @__PURE__ */ new Date()).getTime();
|
|
5400
|
+
const duplicateTime = now === lastPushTime;
|
|
5401
|
+
lastPushTime = now;
|
|
5402
|
+
const timeStampChars = new Array(8);
|
|
5403
|
+
for (let i2 = 7; i2 >= 0; i2--) {
|
|
5404
|
+
timeStampChars[i2] = PUSH_CHARS.charAt(now % pushCharLength);
|
|
5405
|
+
now = Math.floor(now / pushCharLength);
|
|
5406
|
+
}
|
|
5407
|
+
if (now !== 0)
|
|
5408
|
+
throw new Error("We should have converted the entire timestamp.");
|
|
5409
|
+
let id = timeStampChars.join("");
|
|
5410
|
+
let i;
|
|
5411
|
+
if (!duplicateTime) {
|
|
5412
|
+
for (i = 0; i < 12; i++) {
|
|
5413
|
+
lastRandChars[i] = Math.floor(Math.random() * pushCharLength);
|
|
5414
|
+
}
|
|
5415
|
+
} else {
|
|
5416
|
+
for (i = 11; i >= 0 && lastRandChars[i] === pushCharLength - 1; i--) {
|
|
5417
|
+
lastRandChars[i] = 0;
|
|
5418
|
+
}
|
|
5419
|
+
lastRandChars[i]++;
|
|
5420
|
+
}
|
|
5421
|
+
for (i = 0; i < 12; i++) {
|
|
5422
|
+
id += PUSH_CHARS.charAt(lastRandChars[i]);
|
|
5423
|
+
}
|
|
5424
|
+
if (id.length != 20) throw new Error("Length should be 20.");
|
|
5425
|
+
return id;
|
|
5426
|
+
};
|
|
5427
|
+
}();
|
|
5428
|
+
const getUniqueDuplicateName = (name, collectionToCheckIn, suffix = "Copy", concatChar = "_") => {
|
|
5429
|
+
if (!name) {
|
|
5430
|
+
throw new Error("Invalid name provided to getUniqueDuplicateName");
|
|
5431
|
+
}
|
|
5432
|
+
let newName = `${name}${concatChar}${suffix}`.trim();
|
|
5433
|
+
for (let i = 1; collectionToCheckIn.includes(newName); i++) {
|
|
5434
|
+
newName = `${name}${concatChar}${suffix}${concatChar}${i}`;
|
|
5435
|
+
}
|
|
5436
|
+
return newName.trim();
|
|
5437
|
+
};
|
|
5438
|
+
const index$7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5439
|
+
__proto__: null,
|
|
5440
|
+
formatDate,
|
|
5441
|
+
generatePushID,
|
|
5442
|
+
getMetricDefinition,
|
|
5443
|
+
getUniqueDuplicateName,
|
|
5444
|
+
hydrateStatement,
|
|
5445
|
+
inputTableUtils: inputTableDefinition,
|
|
5446
|
+
statementFilterConverters: filterConverters,
|
|
5447
|
+
statementFilterUtils: filterUtils,
|
|
5448
|
+
websocketUtils: websocketProviderFactory
|
|
5449
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
4964
5450
|
const hydrateWorksheet = async (sheet) => {
|
|
4965
5451
|
try {
|
|
4966
5452
|
if (!sheet) return sheet;
|
|
@@ -4988,7 +5474,7 @@ const hydrateWorksheet = async (sheet) => {
|
|
|
4988
5474
|
throw error;
|
|
4989
5475
|
}
|
|
4990
5476
|
};
|
|
4991
|
-
const getData$
|
|
5477
|
+
const getData$3 = async (metricSheetId, options) => {
|
|
4992
5478
|
var _a, _b, _c, _d, _e, _f;
|
|
4993
5479
|
const worksheets = await getWorksheets([metricSheetId]);
|
|
4994
5480
|
if (_.isEmpty(worksheets)) return {};
|
|
@@ -5114,9 +5600,9 @@ const getData$2 = async (metricSheetId, options) => {
|
|
|
5114
5600
|
resultData = _.flatten(resultData);
|
|
5115
5601
|
return { data: resultData };
|
|
5116
5602
|
};
|
|
5117
|
-
const index$
|
|
5603
|
+
const index$6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5118
5604
|
__proto__: null,
|
|
5119
|
-
getData: getData$
|
|
5605
|
+
getData: getData$3
|
|
5120
5606
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
5121
5607
|
async function createThread(request) {
|
|
5122
5608
|
var _a, _b, _c;
|
|
@@ -5265,7 +5751,7 @@ async function checkSubscriptionStatus(userId, threadId) {
|
|
|
5265
5751
|
throw { message, status };
|
|
5266
5752
|
}
|
|
5267
5753
|
}
|
|
5268
|
-
const index$
|
|
5754
|
+
const index$5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5269
5755
|
__proto__: null,
|
|
5270
5756
|
checkSubscriptionStatus,
|
|
5271
5757
|
createThread,
|
|
@@ -5405,7 +5891,7 @@ class DefinitionBuilder {
|
|
|
5405
5891
|
});
|
|
5406
5892
|
}
|
|
5407
5893
|
}
|
|
5408
|
-
const getData$
|
|
5894
|
+
const getData$2 = async (datasetId, options) => {
|
|
5409
5895
|
var _a, _b, _c;
|
|
5410
5896
|
try {
|
|
5411
5897
|
if (!datasetId) {
|
|
@@ -5469,10 +5955,10 @@ const getAllDatasets = async () => {
|
|
|
5469
5955
|
throw { message, status };
|
|
5470
5956
|
}
|
|
5471
5957
|
};
|
|
5472
|
-
const index$
|
|
5958
|
+
const index$4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5473
5959
|
__proto__: null,
|
|
5474
5960
|
getAllDatasets,
|
|
5475
|
-
getData: getData$
|
|
5961
|
+
getData: getData$2,
|
|
5476
5962
|
getSampleData
|
|
5477
5963
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
5478
5964
|
const getPublishedWorkbookById = async ({
|
|
@@ -5525,7 +6011,7 @@ const getTableById = async (tableId) => {
|
|
|
5525
6011
|
throw { message, status };
|
|
5526
6012
|
}
|
|
5527
6013
|
};
|
|
5528
|
-
const getData = async ({
|
|
6014
|
+
const getData$1 = async ({
|
|
5529
6015
|
inputTableId: inputTableWorkbookId,
|
|
5530
6016
|
inputTableViewId,
|
|
5531
6017
|
pageParams = {},
|
|
@@ -5656,9 +6142,9 @@ const getInputTables = async () => {
|
|
|
5656
6142
|
throw { message, status };
|
|
5657
6143
|
}
|
|
5658
6144
|
};
|
|
5659
|
-
const index$
|
|
6145
|
+
const index$3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5660
6146
|
__proto__: null,
|
|
5661
|
-
getData,
|
|
6147
|
+
getData: getData$1,
|
|
5662
6148
|
getInputTables,
|
|
5663
6149
|
getTableById
|
|
5664
6150
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
@@ -5678,24 +6164,294 @@ const getWorkbooksByType = async (type) => {
|
|
|
5678
6164
|
throw { message, status };
|
|
5679
6165
|
}
|
|
5680
6166
|
};
|
|
5681
|
-
const index$
|
|
6167
|
+
const index$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5682
6168
|
__proto__: null,
|
|
5683
6169
|
getPublishedWorkbookById,
|
|
5684
6170
|
getWorkbooksByType
|
|
5685
6171
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
6172
|
+
const getViewsBySheetId = async (sheetId) => {
|
|
6173
|
+
var _a, _b, _c;
|
|
6174
|
+
if (!sheetId) {
|
|
6175
|
+
throw { message: "Sheet ID is required", status: 400 };
|
|
6176
|
+
}
|
|
6177
|
+
try {
|
|
6178
|
+
const response = await apiClient.get(
|
|
6179
|
+
`/statement/get-views-by-sheet-id/${sheetId}`
|
|
6180
|
+
);
|
|
6181
|
+
if (!response.data) {
|
|
6182
|
+
throw { message: "Failed to fetch statement views", status: 500 };
|
|
6183
|
+
}
|
|
6184
|
+
return response.data;
|
|
6185
|
+
} catch (error) {
|
|
6186
|
+
const message = error.message || ((_b = (_a = error.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message) || "An unexpected error occurred while fetching statement views";
|
|
6187
|
+
const status = error.status || ((_c = error.response) == null ? void 0 : _c.status) || 500;
|
|
6188
|
+
throw { message, status };
|
|
6189
|
+
}
|
|
6190
|
+
};
|
|
6191
|
+
const getRunsByViewId = async (viewId) => {
|
|
6192
|
+
var _a, _b, _c;
|
|
6193
|
+
if (!viewId) {
|
|
6194
|
+
throw { message: "View ID is required", status: 400 };
|
|
6195
|
+
}
|
|
6196
|
+
try {
|
|
6197
|
+
const response = await apiClient.get(
|
|
6198
|
+
`/statement/get-runs-by-view-id/${viewId}`
|
|
6199
|
+
);
|
|
6200
|
+
if (!response.data) {
|
|
6201
|
+
throw { message: "Failed to fetch view runs", status: 500 };
|
|
6202
|
+
}
|
|
6203
|
+
return response.data;
|
|
6204
|
+
} catch (error) {
|
|
6205
|
+
const message = error.message || ((_b = (_a = error.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message) || "An unexpected error occurred while fetching view runs";
|
|
6206
|
+
const status = error.status || ((_c = error.response) == null ? void 0 : _c.status) || 500;
|
|
6207
|
+
throw { message, status };
|
|
6208
|
+
}
|
|
6209
|
+
};
|
|
6210
|
+
const getData = async ({
|
|
6211
|
+
statementId,
|
|
6212
|
+
viewId,
|
|
6213
|
+
runId
|
|
6214
|
+
}) => {
|
|
6215
|
+
var _a, _b, _c;
|
|
6216
|
+
try {
|
|
6217
|
+
if (!statementId) {
|
|
6218
|
+
throw { message: "Statement ID is required", status: 400 };
|
|
6219
|
+
}
|
|
6220
|
+
const statement = await getPublishedWorkbookById({
|
|
6221
|
+
type: "STATEMENT",
|
|
6222
|
+
id: statementId
|
|
6223
|
+
});
|
|
6224
|
+
if (!statement || !statement.sheets) {
|
|
6225
|
+
throw { message: "Statement not found or has no sheets", status: 404 };
|
|
6226
|
+
}
|
|
6227
|
+
const statementSheet = statement.sheets.find(
|
|
6228
|
+
(sheet) => sheet.type === "STATEMENT_SHEET"
|
|
6229
|
+
);
|
|
6230
|
+
if (!statementSheet || !statementSheet.id) {
|
|
6231
|
+
throw {
|
|
6232
|
+
message: "Statement sheet not found in the workbook",
|
|
6233
|
+
status: 404
|
|
6234
|
+
};
|
|
6235
|
+
}
|
|
6236
|
+
const statementViews = await getViewsBySheetId(statementSheet.id);
|
|
6237
|
+
if (_.isEmpty(statementViews)) {
|
|
6238
|
+
throw { message: "No views found for this statement", status: 404 };
|
|
6239
|
+
}
|
|
6240
|
+
let targetView;
|
|
6241
|
+
if (viewId) {
|
|
6242
|
+
targetView = statementViews.find((v) => v.id === viewId);
|
|
6243
|
+
if (!targetView) {
|
|
6244
|
+
throw { message: `View with ID ${viewId} not found`, status: 404 };
|
|
6245
|
+
}
|
|
6246
|
+
} else {
|
|
6247
|
+
const defaultView = _.find(
|
|
6248
|
+
statementViews,
|
|
6249
|
+
(v) => {
|
|
6250
|
+
var _a2;
|
|
6251
|
+
return Boolean((_a2 = v.customFields) == null ? void 0 : _a2.isDefault);
|
|
6252
|
+
}
|
|
6253
|
+
);
|
|
6254
|
+
if (defaultView) {
|
|
6255
|
+
targetView = defaultView;
|
|
6256
|
+
} else {
|
|
6257
|
+
targetView = statementViews[0];
|
|
6258
|
+
}
|
|
6259
|
+
}
|
|
6260
|
+
if (!targetView) {
|
|
6261
|
+
throw { message: "No valid view found for this statement", status: 404 };
|
|
6262
|
+
}
|
|
6263
|
+
const results = await getRunsByViewId(targetView.id);
|
|
6264
|
+
if (_.isEmpty(results)) {
|
|
6265
|
+
throw { message: "No runs found for this view", status: 404 };
|
|
6266
|
+
}
|
|
6267
|
+
const latestResult = _.orderBy(
|
|
6268
|
+
results,
|
|
6269
|
+
[(r) => r.lastModifiedDate || r.createdDate],
|
|
6270
|
+
["desc"]
|
|
6271
|
+
)[0];
|
|
6272
|
+
let runToFetchResult = latestResult;
|
|
6273
|
+
if (runId) {
|
|
6274
|
+
runToFetchResult = _.find(results, (r) => r.id === runId);
|
|
6275
|
+
if (!runToFetchResult) {
|
|
6276
|
+
throw { message: `Run with ID ${runId} not found.`, status: 404 };
|
|
6277
|
+
}
|
|
6278
|
+
}
|
|
6279
|
+
if (runToFetchResult.status === "FAILED") {
|
|
6280
|
+
throw { message: "Latest run has failed", status: 500 };
|
|
6281
|
+
}
|
|
6282
|
+
if (runToFetchResult.status === "SCHEDULED" || runToFetchResult.status === "RUNNING") {
|
|
6283
|
+
throw { message: "Run in progress", status: 202 };
|
|
6284
|
+
}
|
|
6285
|
+
if (!runToFetchResult.artifactLocation) {
|
|
6286
|
+
throw { message: "Latest result does not have a data path", status: 500 };
|
|
6287
|
+
}
|
|
6288
|
+
const dataResponse = await downloadFile(
|
|
6289
|
+
runToFetchResult.artifactLocation,
|
|
6290
|
+
"application/json"
|
|
6291
|
+
);
|
|
6292
|
+
return dataResponse;
|
|
6293
|
+
} catch (error) {
|
|
6294
|
+
const message = error.message || ((_b = (_a = error.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message) || "An unexpected error occurred while fetching statement data";
|
|
6295
|
+
const status = error.status || ((_c = error.response) == null ? void 0 : _c.status) || 500;
|
|
6296
|
+
throw { message, status };
|
|
6297
|
+
}
|
|
6298
|
+
};
|
|
6299
|
+
const getViewById = async (viewId) => {
|
|
6300
|
+
var _a, _b, _c;
|
|
6301
|
+
if (!viewId) {
|
|
6302
|
+
throw { message: "View ID is required", status: 400 };
|
|
6303
|
+
}
|
|
6304
|
+
try {
|
|
6305
|
+
const response = await apiClient.get(`/statement/get-view-by-id/${viewId}`);
|
|
6306
|
+
if (!response.data) {
|
|
6307
|
+
throw { message: "Failed to fetch statement view", status: 500 };
|
|
6308
|
+
}
|
|
6309
|
+
return response.data;
|
|
6310
|
+
} catch (error) {
|
|
6311
|
+
const message = error.message || ((_b = (_a = error.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message) || "An unexpected error occurred while fetching statement view";
|
|
6312
|
+
const status = error.status || ((_c = error.response) == null ? void 0 : _c.status) || 500;
|
|
6313
|
+
throw { message, status };
|
|
6314
|
+
}
|
|
6315
|
+
};
|
|
6316
|
+
const createNewRun = async ({
|
|
6317
|
+
statementId,
|
|
6318
|
+
viewId,
|
|
6319
|
+
runId,
|
|
6320
|
+
options
|
|
6321
|
+
}) => {
|
|
6322
|
+
var _a, _b, _c;
|
|
6323
|
+
if (!statementId) {
|
|
6324
|
+
throw { message: "Statement ID is required", status: 400 };
|
|
6325
|
+
}
|
|
6326
|
+
try {
|
|
6327
|
+
const workbook = await getPublishedWorkbookById({
|
|
6328
|
+
type: "STATEMENT",
|
|
6329
|
+
id: statementId
|
|
6330
|
+
});
|
|
6331
|
+
const statement = await hydrateStatement(workbook);
|
|
6332
|
+
if (!statement || !statement.sheets) {
|
|
6333
|
+
throw { message: "Statement not found or has no sheets", status: 404 };
|
|
6334
|
+
}
|
|
6335
|
+
const statementSheet = statement.sheets.find(
|
|
6336
|
+
(sheet) => sheet.type === "STATEMENT_SHEET"
|
|
6337
|
+
);
|
|
6338
|
+
if (!statementSheet || !statementSheet.id) {
|
|
6339
|
+
throw {
|
|
6340
|
+
message: "Statement sheet not found in the statement",
|
|
6341
|
+
status: 404
|
|
6342
|
+
};
|
|
6343
|
+
}
|
|
6344
|
+
const statementViews = await getViewsBySheetId(statementSheet.id);
|
|
6345
|
+
if (_.isEmpty(statementViews)) {
|
|
6346
|
+
throw { message: "No views found for this statement", status: 404 };
|
|
6347
|
+
}
|
|
6348
|
+
let targetView;
|
|
6349
|
+
if (viewId) {
|
|
6350
|
+
targetView = statementViews.find((v) => v.id === viewId);
|
|
6351
|
+
if (!targetView) {
|
|
6352
|
+
throw { message: `View with ID ${viewId} not found`, status: 404 };
|
|
6353
|
+
}
|
|
6354
|
+
} else {
|
|
6355
|
+
const defaultView = _.find(
|
|
6356
|
+
statementViews,
|
|
6357
|
+
(v) => {
|
|
6358
|
+
var _a2;
|
|
6359
|
+
return Boolean((_a2 = v.customFields) == null ? void 0 : _a2.isDefault);
|
|
6360
|
+
}
|
|
6361
|
+
);
|
|
6362
|
+
if (defaultView) {
|
|
6363
|
+
targetView = defaultView;
|
|
6364
|
+
} else {
|
|
6365
|
+
targetView = statementViews[0];
|
|
6366
|
+
}
|
|
6367
|
+
}
|
|
6368
|
+
if (!targetView) {
|
|
6369
|
+
throw { message: "No valid view found for this statement", status: 404 };
|
|
6370
|
+
}
|
|
6371
|
+
const results = await getRunsByViewId(targetView.id);
|
|
6372
|
+
const sortedResults = _.orderBy(
|
|
6373
|
+
results,
|
|
6374
|
+
[(r) => r.lastModifiedDate || r.createdDate],
|
|
6375
|
+
["desc"]
|
|
6376
|
+
);
|
|
6377
|
+
const runName = (options == null ? void 0 : options.name) ? options.name : getUniqueDuplicateName("Run", _.map(sortedResults, "name"), "", " ");
|
|
6378
|
+
let runInputs = void 0;
|
|
6379
|
+
let customFields = {};
|
|
6380
|
+
if ((options == null ? void 0 : options.columnFilters) && options.columnFilters.length > 0) {
|
|
6381
|
+
const { promotedFilters, commonFilters } = separateColumnFilters(
|
|
6382
|
+
options.columnFilters
|
|
6383
|
+
);
|
|
6384
|
+
runInputs = convertFiltersToRunInputs(
|
|
6385
|
+
promotedFilters,
|
|
6386
|
+
commonFilters,
|
|
6387
|
+
statementSheet
|
|
6388
|
+
);
|
|
6389
|
+
const fullFilters = await convertStatementFiltersToFullTypes(
|
|
6390
|
+
promotedFilters,
|
|
6391
|
+
commonFilters,
|
|
6392
|
+
statement
|
|
6393
|
+
);
|
|
6394
|
+
customFields = {
|
|
6395
|
+
promotedFilters: fullFilters.promotedFilters,
|
|
6396
|
+
commonFilters: fullFilters.commonFilters
|
|
6397
|
+
};
|
|
6398
|
+
}
|
|
6399
|
+
const finalRunId = runId ?? generatePushID();
|
|
6400
|
+
await apiClient.post(`/statement/run/create/${targetView.id}`, {
|
|
6401
|
+
runId: finalRunId,
|
|
6402
|
+
name: runName,
|
|
6403
|
+
runInputs,
|
|
6404
|
+
customFields
|
|
6405
|
+
});
|
|
6406
|
+
return { runId: finalRunId };
|
|
6407
|
+
} catch (error) {
|
|
6408
|
+
const message = error.message || ((_b = (_a = error.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message) || "An unexpected error occurred while creating a new run";
|
|
6409
|
+
const status = error.status || ((_c = error.response) == null ? void 0 : _c.status) || 500;
|
|
6410
|
+
throw { message, status };
|
|
6411
|
+
}
|
|
6412
|
+
};
|
|
6413
|
+
const getRunResultById = async (runId) => {
|
|
6414
|
+
var _a, _b, _c;
|
|
6415
|
+
if (!runId) {
|
|
6416
|
+
throw { message: "Run ID is required", status: 400 };
|
|
6417
|
+
}
|
|
6418
|
+
try {
|
|
6419
|
+
const response = await apiClient.get(
|
|
6420
|
+
`/statement/run/get-result-by-run-id/${runId}`
|
|
6421
|
+
);
|
|
6422
|
+
if (!response.data) {
|
|
6423
|
+
throw { message: "Failed to fetch run result", status: 404 };
|
|
6424
|
+
}
|
|
6425
|
+
return response.data;
|
|
6426
|
+
} catch (error) {
|
|
6427
|
+
const message = error.message || ((_b = (_a = error.response) == null ? void 0 : _a.data) == null ? void 0 : _b.message) || "An unexpected error occurred while fetching run result";
|
|
6428
|
+
const status = error.status || ((_c = error.response) == null ? void 0 : _c.status) || 500;
|
|
6429
|
+
throw { message, status };
|
|
6430
|
+
}
|
|
6431
|
+
};
|
|
6432
|
+
const index$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
6433
|
+
__proto__: null,
|
|
6434
|
+
createNewRun,
|
|
6435
|
+
getData,
|
|
6436
|
+
getRunResultById,
|
|
6437
|
+
getRunsByViewId,
|
|
6438
|
+
getViewById,
|
|
6439
|
+
getViewsBySheetId
|
|
6440
|
+
}, Symbol.toStringTag, { value: "Module" }));
|
|
5686
6441
|
const index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
5687
6442
|
__proto__: null,
|
|
5688
6443
|
apiClient,
|
|
5689
|
-
chat: index$
|
|
5690
|
-
dataset: index$
|
|
5691
|
-
definition: index$
|
|
5692
|
-
files: index$
|
|
5693
|
-
inputTable: index$
|
|
5694
|
-
metric: index$
|
|
5695
|
-
|
|
5696
|
-
|
|
5697
|
-
|
|
5698
|
-
|
|
6444
|
+
chat: index$5,
|
|
6445
|
+
dataset: index$4,
|
|
6446
|
+
definition: index$9,
|
|
6447
|
+
files: index$a,
|
|
6448
|
+
inputTable: index$3,
|
|
6449
|
+
metric: index$6,
|
|
6450
|
+
statement: index$1,
|
|
6451
|
+
user: index$c,
|
|
6452
|
+
workbook: index$2,
|
|
6453
|
+
workflow: index$b,
|
|
6454
|
+
worksheet: index$8
|
|
5699
6455
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
5700
6456
|
const bluecopaTailwindConfig = {
|
|
5701
6457
|
darkMode: "class",
|
|
@@ -5859,6 +6615,6 @@ export {
|
|
|
5859
6615
|
getConfig as copaGetConfig,
|
|
5860
6616
|
setConfig as copaSetConfig,
|
|
5861
6617
|
bluecopaTailwindConfig as copaTailwindConfig,
|
|
5862
|
-
index$
|
|
6618
|
+
index$7 as copaUtils
|
|
5863
6619
|
};
|
|
5864
6620
|
//# sourceMappingURL=index.es.js.map
|