Skip to content

Commit 2e96c56

Browse files
committed
Add many default views
1 parent 2e83678 commit 2e96c56

File tree

4 files changed

+47
-3
lines changed

4 files changed

+47
-3
lines changed

LDK/src/org/labkey/ldk/query/DefaultTableCustomizer.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,11 @@ private void setDetailsUrl(AbstractTableInfo ti)
139139
keyFields = Collections.singletonList(alternatePK);
140140
}
141141

142-
if (keyFields.size() != 1)
142+
if (keyFields.isEmpty())
143+
{
144+
return;
145+
}
146+
else if (keyFields.size() > 1)
143147
{
144148
_log.error("Table: " + ti.getUserSchema().getSchemaName() + "." + ti.getPublicName() + " has more than 1 PK: " + StringUtils.join(keyFields, ";") + ", cannot apply custom links - please update the TableCustomizer properties");
145149
return;
@@ -186,13 +190,17 @@ else if (_settings.isSetEditLinkOverrides())
186190
keyFields = Collections.singletonList(alternatePK);
187191
}
188192

189-
if (keyFields.size() != 1)
193+
if (keyFields.isEmpty())
194+
{
195+
return;
196+
}
197+
else if (keyFields.size() != 1)
190198
{
191199
_log.error("Table: " + schemaName + "." + queryName + " has more than 1 PK: " + StringUtils.join(keyFields, ";") + ", cannot apply custom links - please update the TableCustomizer properties");
192200
return;
193201
}
194202

195-
if (schemaName != null && queryName != null && !keyFields.isEmpty())
203+
if (schemaName != null && queryName != null)
196204
{
197205
String keyField = keyFields.get(0);
198206
if (!AbstractTableInfo.LINK_DISABLER_ACTION_URL.equals(ti.getImportDataURL(ti.getUserSchema().getContainer())))

laboratory/api-src/org/labkey/api/laboratory/LaboratoryService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.labkey.api.exp.api.ExpProtocol;
2727
import org.labkey.api.exp.api.ExpRun;
2828
import org.labkey.api.laboratory.assay.AssayDataProvider;
29+
import org.labkey.api.laboratory.query.TabbedReportFilterProvider;
2930
import org.labkey.api.ldk.table.ButtonConfigFactory;
3031
import org.labkey.api.module.Module;
3132
import org.labkey.api.query.ValidationException;
@@ -125,6 +126,8 @@ static public void setInstance(LaboratoryService instance)
125126

126127
abstract public void clearDataProviderCache();
127128

129+
abstract public void registerTabbedReportFilterProvider(TabbedReportFilterProvider provider);
130+
128131
public static enum NavItemCategory
129132
{
130133
samples(),
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.labkey.api.laboratory.query;
2+
3+
import org.labkey.api.data.Container;
4+
import org.labkey.api.security.User;
5+
import org.labkey.api.view.template.ClientDependency;
6+
7+
import java.util.Collection;
8+
9+
public interface TabbedReportFilterProvider
10+
{
11+
boolean isAvailable(Container c, User u);
12+
13+
Collection<ClientDependency> getClientDependencies();
14+
15+
String getXType();
16+
17+
String getLabel();
18+
19+
String getInputValue();
20+
}

laboratory/src/org/labkey/laboratory/LaboratoryServiceImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.labkey.api.laboratory.TabbedReportItem;
4444
import org.labkey.api.laboratory.assay.AssayDataProvider;
4545
import org.labkey.api.laboratory.assay.SimpleAssayDataProvider;
46+
import org.labkey.api.laboratory.query.TabbedReportFilterProvider;
4647
import org.labkey.api.ldk.table.ButtonConfigFactory;
4748
import org.labkey.api.module.Module;
4849
import org.labkey.api.module.ModuleLoader;
@@ -85,6 +86,7 @@ public class LaboratoryServiceImpl extends LaboratoryService
8586
private final Map<String, DataProvider> _dataProviders = new HashMap<>();
8687
private final Map<String, Map<String, List<Pair<Module, Class<? extends TableCustomizer>>>>> _tableCustomizers = new CaseInsensitiveHashMap<>();
8788
private final List<DemographicsProvider> _demographicsProviders = new ArrayList<>();
89+
private final List<TabbedReportFilterProvider> _tabbedReportFilterProviders = new ArrayList<>();
8890

8991
public static final String DEMOGRAPHICS_PROPERTY_CATEGORY = "laboratory.demographicsSource";
9092
public static final String DATASOURCE_PROPERTY_CATEGORY = "laboratory.additionalDataSource";
@@ -719,4 +721,15 @@ public void clearDataProviderCache()
719721
{
720722
LaboratoryDataProvider.clearCache();
721723
}
724+
725+
@Override
726+
public void registerTabbedReportFilterProvider(TabbedReportFilterProvider provider)
727+
{
728+
_tabbedReportFilterProviders.add(provider);
729+
}
730+
731+
public List<TabbedReportFilterProvider> getTabbedReportFilterProviderProviders(final Container c, final User u)
732+
{
733+
return _tabbedReportFilterProviders.stream().filter(d -> d.isAvailable(c, u)).toList();
734+
}
722735
}

0 commit comments

Comments
 (0)