Skip to content
Merged
38 changes: 19 additions & 19 deletions api/src/org/labkey/api/data/CompareType.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public abstract class CompareType
public static final CompareType EQUAL = new CompareType("Equals", "eq", "EQUAL", true, " = ?", OperatorType.EQ)
{
@Override
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
return new EqualsCompareClause(fieldKey, this, value);
}
Expand Down Expand Up @@ -135,7 +135,7 @@ public boolean meetsCriteria(ColumnRenderProperties col, Object value, Object[]
public static final CompareType NEQ = new CompareType("Does Not Equal", "neq", "NOT_EQUAL", true, " <> ?", OperatorType.NEQ)
{
@Override
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
return new NotEqualsCompareClause(fieldKey, this, value);
}
Expand Down Expand Up @@ -383,7 +383,7 @@ public boolean meetsCriteria(ColumnRenderProperties col, Object value, Object[]
{
// Each compare type uses CompareClause by default
@Override
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
if (value instanceof Collection)
{
Expand Down Expand Up @@ -418,7 +418,7 @@ public String getValueSeparator()
{
// Each compare type uses CompareClause by default
@Override
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
if (value instanceof Collection)
{
Expand Down Expand Up @@ -450,7 +450,7 @@ public String getValueSeparator()
{
// Each compare type uses CompareClause by default
@Override
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
if (value instanceof Collection)
{
Expand Down Expand Up @@ -492,7 +492,7 @@ public String getValueSeparator()
{
// Each compare type uses CompareClause by default
@Override
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
if (value instanceof Collection)
{
Expand Down Expand Up @@ -534,7 +534,7 @@ public String getValueSeparator()
{
// Each compare type uses CompareClause by default
@Override
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
String namedSet = null;
if (value != null && StringUtils.isNotBlank(value.toString()))
Expand All @@ -553,7 +553,7 @@ public boolean meetsCriteria(ColumnRenderProperties col, Object value, Object[]
{
// Each compare type uses CompareClause by default
@Override
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
String namedSet = null;
if (value != null && StringUtils.isNotBlank(value.toString()))
Expand All @@ -571,7 +571,7 @@ public boolean meetsCriteria(ColumnRenderProperties col, Object value, Object[]
public static final CompareType BETWEEN = new CompareType("Between", "between", "BETWEEN", true, " BETWEEN ? AND ?", OperatorType.BETWEEN)
{
@Override
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
if (value instanceof Collection)
{
Expand Down Expand Up @@ -622,7 +622,7 @@ public String getValueSeparator()
public static final CompareType NOT_BETWEEN = new CompareType("Not Between", "notbetween", "NOT_BETWEEN", true, " NOT BETWEEN ? AND ?", OperatorType.NOTBETWEEN)
{
@Override
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
if (value instanceof Collection)
{
Expand Down Expand Up @@ -673,7 +673,7 @@ public String getValueSeparator()
public static final CompareType MEMBER_OF = new CompareType("Is Member Of", "memberof", "MEMBER_OF", true, " is member of", OperatorType.MEMBEROF)
{
@Override
protected MemberOfClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public MemberOfClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
return new MemberOfClause(fieldKey, value);
}
Expand Down Expand Up @@ -736,7 +736,7 @@ public String getFilterValueText()
public static final CompareType MV_INDICATOR = new CompareType("Has An MV Indicator", new String[] { "hasmvvalue", "hasqcvalue" }, false, " has a missing value indicator", "MV_INDICATOR", OperatorType.HASMVVALUE)
{
@Override
protected MvClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public MvClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
return new MvClause(fieldKey, false);
}
Expand All @@ -751,7 +751,7 @@ public boolean meetsCriteria(ColumnRenderProperties col, Object value, Object[]
public static final CompareType NO_MV_INDICATOR = new CompareType("Does Not Have An MV Indicator", new String[] { "nomvvalue", "noqcvalue" }, false, " does not have a missing value indicator", "NO_MV_INDICATOR", OperatorType.NOMVVALUE)
{
@Override
protected MvClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public MvClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
return new MvClause(fieldKey, true);
}
Expand All @@ -771,7 +771,7 @@ public boolean meetsCriteria(ColumnRenderProperties col, Object value, Object[]
public static final CompareType Q = new CompareType("Search", "q", "Q", true /* dataValueRequired */, "sql", OperatorType.Q)
{
@Override
protected QClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public QClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
return new QClause((String) value);
}
Expand Down Expand Up @@ -1073,7 +1073,7 @@ public boolean meetsCriteria(ColumnRenderProperties col, Object value, Object[]
}

// Each compare type uses CompareClause by default
protected FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
return new CompareClause(fieldKey, this, value);
}
Expand Down Expand Up @@ -1503,7 +1503,7 @@ public static Calendar addOneDay(Calendar d)
assert d.get(Calendar.SECOND) == 0;
assert d.get(Calendar.MINUTE) == 0;
assert d.get(Calendar.HOUR_OF_DAY) == 0;

Calendar cal = (Calendar)d.clone();
cal.add(Calendar.DAY_OF_MONTH, 1);
return cal;
Expand Down Expand Up @@ -1670,7 +1670,7 @@ protected boolean meetsCriteria(ColumnRenderProperties col, Object value)
return dateValue.compareTo(param) >= 0;
}
}


static class DateGteCompareClause extends DateCompareClause
{
Expand Down Expand Up @@ -1967,7 +1967,7 @@ public ContainsClause(FieldKey fieldKey, Object value)
@Override
String toWhereClause(SqlDialect dialect, String alias)
{
return dialect.getColumnSelectName(alias) + " " + dialect.getCaseInsensitiveLikeOperator() + " " + dialect.concatenate("'%'", "?", "'%'") + sqlEscape();
return dialect.getColumnSelectName(alias) + " " + dialect.getCaseInsensitiveLikeOperator() + " " + dialect.concatenate("'%'", "?", "'%'") + sqlEscape();
}

@Override
Expand Down Expand Up @@ -1997,7 +1997,7 @@ public DoesNotContainClause(FieldKey fieldKey, Object value)
@Override
String toWhereClause(SqlDialect dialect, String alias)
{
return "(" + dialect.getColumnSelectName(alias) + " IS NULL OR " + dialect.getColumnSelectName(alias) + " NOT " + dialect.getCaseInsensitiveLikeOperator() + " " + dialect.concatenate("'%'", "?", "'%'") + sqlEscape() + ")";
return "(" + dialect.getColumnSelectName(alias) + " IS NULL OR " + dialect.getColumnSelectName(alias) + " NOT " + dialect.getCaseInsensitiveLikeOperator() + " " + dialect.concatenate("'%'", "?", "'%'") + sqlEscape() + ")";
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ private Collection<Trigger> getDefaultTriggers(Container c, TableInfo table, @No
FileUtil.makeLegalName(title) + ".js");

Collection<Trigger> titleTriggers = checkPaths(c, table, svc, pathLabel);
// Remove those that might be case-only differences with already resolved scripts
titleTriggers.removeAll(scripts);
scripts.addAll(titleTriggers);

if (!titleTriggers.isEmpty())
Expand Down
2 changes: 1 addition & 1 deletion api/src/org/labkey/api/ldk/table/QueryCache.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ public TableInfo getTableInfo(Container targetContainer, User u, String schemaPa
TableInfo ti = qd.getTable(errors, true);
if (errors.size() > 0)
{
_log.error("Unable to create tabbed report item for query: " + schemaPath + "." + queryName);
_log.error("Unable to create tabbed report item for query: " + schemaPath + "." + queryName + " in " + targetContainer.getPath());
for (QueryException e : errors)
{
_log.error(e.getMessage(), e);
Expand Down
3 changes: 2 additions & 1 deletion api/src/org/labkey/api/websocket/BrowserEndpoint.java
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,8 @@ public void onOpen(Session session, EndpointConfig endpointConfig) throws URISyn
public void onClose(Session session, CloseReason closeReason)
{
LOG.debug("BrowserEndpoint.onClose()");
serverEndpoint.close();
if (null != serverEndpoint)
serverEndpoint.close();
}

@OnError
Expand Down
12 changes: 6 additions & 6 deletions core/resources/styles/js/navigation.js
Original file line number Diff line number Diff line change
Expand Up @@ -379,13 +379,13 @@
// if toggle element is in left half of screen then left align the menu
var inLeftHemisphere = (me.offset().left + 100) < (win.width() / 2);

if (spaceDown < 0) {
if (spaceUp > 0 || spaceUp > spaceDown) {
me.removeClass('dropdown').addClass('dropup');
} else {
me.removeClass('dropup').addClass('dropdown');
}
// Issue 41102 - See if we have enough space below to render the whole menu
if (spaceDown < 0 && spaceUp > 0) {
// We've got enough space to render up, so use it
me.removeClass('dropdown').addClass('dropup');
} else {
// Whether we have enough space to render down or not, expand downwards because the whole page will extend
// to let the user get to the rest of the menu items as needed
me.removeClass('dropup').addClass('dropdown');
}

Expand Down
4 changes: 4 additions & 0 deletions core/resources/styles/scss/labkey/_labkey.scss
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ legend {
margin-top: 8px;
}

a:hover {
cursor: pointer;
}

/* Expose the theme color for use with text and borders in labkey pages */
.lk-text-theme-dark {
color: $lk-theme-dark-accent;
Expand Down
3 changes: 3 additions & 0 deletions core/src/org/labkey/core/user/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -1022,6 +1022,9 @@ public void validateCommand(QueryUpdateForm form, Errors errors)
{
for (Map.Entry<String, Object> entry : form.getTypedColumns().entrySet())
{
if (entry.getKey().equals("ExpirationDate") && !AuthenticationManager.canSetUserExpirationDate(getUser(), getContainer()))
errors.reject(ERROR_MSG, "User does not have permission to edit the ExpirationDate field.");

if (entry.getValue() != null)
{
ColumnInfo col = table.getColumn(FieldKey.fromParts(entry.getKey()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public ChildOfCompareType()
}

@Override
protected SimpleFilter.FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public SimpleFilter.FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
return new ChildOfClause(fieldKey, value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public LineageCompareType()
}

@Override
protected SimpleFilter.FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public SimpleFilter.FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
Object[] values;
Object collection;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public ParentOfCompareType()
}

@Override
protected SimpleFilter.FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public SimpleFilter.FilterClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
return new ParentOfClause(fieldKey, value);
}
Expand Down
2 changes: 1 addition & 1 deletion query/src/org/labkey/query/QueryServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ public void moduleChanged(Module module)
public static final CompareType WHERE = new CompareType("WHERE", "where", "WHERE", true /* dataValueRequired */, "sql", OperatorType.WHERE)
{
@Override
protected WhereClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
public WhereClause createFilterClause(@NotNull FieldKey fieldKey, Object value)
{
return new WhereClause((String) value);
}
Expand Down