feat(saved): saved, shared, starred, scheduled and widget analyses, export, SQL handoff
Extension 1.4.0: saved analyses of every kind re-run as the viewer (fields they cannot analyze are dropped), owner-or-shared READ through core record locks with owner-only writes (and a database CHECK so a private row can never lose its read owner), personal stars, schedules that run as the owner and mail only recipients who could run the analysis themselves, CSV/XLSX export, the SQL Workbench handoff, an analysis dashboard widget, and an Analyses home built from standard widgets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
43c7571864
commit
d2c9871d98
42 files changed
+3786
-296
No files matched your search
@@ -30,6 +30,8 @@ import com.kingsrook.qqq.backend.core.model.metadata.QSupplementalInstanceMetaDa
|
||||
public class DataAnalysisRuntime implements QSupplementalInstanceMetaData
|
||||
{
|
||||
private final transient DataAnalysisService service;
|
||||
private final transient com.kingsrook.qbits.dataanalysis.schedule.ScheduleRunner schedules;
|
||||
private final transient com.kingsrook.qbits.dataanalysis.saved.SavedAnalyses saved;
|
||||
private final transient com.kingsrook.qbits.dataanalysis.watch.WatchEvaluator watches;
|
||||
|
||||
/*******************************************************************************
|
||||
@@ -38,6 +40,8 @@ public class DataAnalysisRuntime implements QSupplementalInstanceMetaData
|
||||
public DataAnalysisRuntime(DataAnalysisQBitConfig config)
|
||||
{
|
||||
service = new DataAnalysisService(config);
|
||||
schedules = new com.kingsrook.qbits.dataanalysis.schedule.ScheduleRunner(config, service);
|
||||
saved = new com.kingsrook.qbits.dataanalysis.saved.SavedAnalyses(service);
|
||||
watches = new com.kingsrook.qbits.dataanalysis.watch.WatchEvaluator(config, service);
|
||||
}
|
||||
|
||||
@@ -80,4 +84,20 @@ public class DataAnalysisRuntime implements QSupplementalInstanceMetaData
|
||||
{
|
||||
return (((DataAnalysisRuntime) QContext.getQInstance().getSupplementalMetaData("dataAnalysisRuntime")).watches);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** Saved operations share the instance's engine and serialize star toggles.
|
||||
*******************************************************************************/
|
||||
public static com.kingsrook.qbits.dataanalysis.saved.SavedAnalyses saved()
|
||||
{
|
||||
return (((DataAnalysisRuntime) QContext.getQInstance().getSupplementalMetaData("dataAnalysisRuntime")).saved);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
** Shared schedule runner for manual and automatic delivery.
|
||||
*******************************************************************************/
|
||||
public static com.kingsrook.qbits.dataanalysis.schedule.ScheduleRunner schedules()
|
||||
{
|
||||
return (((DataAnalysisRuntime) QContext.getQInstance().getSupplementalMetaData("dataAnalysisRuntime")).schedules);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user