getDataSourcesData method
dynamic
getDataSourcesData()
Implementation
getDataSourcesData() async {
qsParams['params'] = widget.params;
qsParams['datasources'] = new Map<String, dynamic>();
datasources = (widget.uiProps?['datasources'] as List?)
?.map<LMDataSourceConfig>(
(ds) => LMDataSourceConfig.fromJson(convertMapStringDynamic(ds)))
.toList();
datasources = datasources?.reversed.toList();
List<LMDataSourceConfig> cachedDataSources = [];
List<LMDataSourceConfig> nonCachedDataSources = [];
for (LMDataSourceConfig ds in datasources ?? []) {
if (ds.enableCache == true) {
cachedDataSources.add(ds);
} else {
nonCachedDataSources.add(ds);
}
}
try {
for (LMDataSourceConfig ds in cachedDataSources) {
if (ds.id == null || ds.id == "") continue;
var path = getPathForSource(ds.id!);
var data = await getData(
ds.id!,
path: path,
);
qsParams['datasources'][ds.id] = data;
}
setState(() {
loading = false;
});
} catch (e) {
setState(() {
loading = false;
});
}
widget.onParametersInitialized?.call(qsParams);
try {
List<Future<void>> tasks = [];
for (LMDataSourceConfig ds in nonCachedDataSources) {
if (ds.id == null || ds.id == "") continue;
tasks.add(() async {
var path = getPathForSource(ds.id!);
var data = await getData(
ds.id!,
path: path,
);
qsParams['datasources'][ds.id] = data;
}());
}
await Future.wait(tasks);
} catch (e) {
} finally {
fieldValues.replaceValuesByContextData(qsParams);
setState(() {
loading = false;
});
}
widget.onParametersInitialized?.call(qsParams);
}