Changeset 7957
- Timestamp:
- Jun 3, 2021, 9:39:33 AM (20 months ago)
- Location:
- branches/3.18-stable
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.18-stable/src/clients/web/net/sf/basedb/clients/web/Base.java
r7895 r7957 532 532 { 533 533 cc.setObject("defaultColumns", defaultContext.getObject("defaultColumns")); 534 cc.setObject("defaultColumns.sticky", defaultContext.getObject("defaultColumns.sticky")); 534 535 } 535 536 if (request != null) … … 567 568 // Visible columns 568 569 cc.setSetting("columns", Values.getString(Values.getStringOrNull(request.getParameter("columns")), cc.getSetting("columns"))); 570 // Sticky column 571 String stickyCol = Values.getStringOrNull(request.getParameter("sticky_column")); 572 if (stickyCol != null) cc.setSetting("columns.sticky", stickyCol); 569 573 570 574 // Page settings, ignore negative values, 'rowsperpage' setting may come as an … … 991 995 992 996 /** 997 Create a default context where the sortProperty is also used as 998 the default sticky column. 999 @see #createDefaultContext(String, String, String) 1000 */ 1001 public static ItemContext createDefaultContext(String sortProperty, String defaultColumns) 1002 { 1003 return createDefaultContext(sortProperty, defaultColumns, sortProperty); 1004 } 1005 1006 /** 993 1007 Create a default <code>ItemContext</code> with settings for default 994 1008 visible columns and sort property. 'MINE' and 'SHARED' objects are set to be included. … … 996 1010 a '-', the sort is made in descending order (and the minus is removed) 997 1011 @param defaultColumns The visible columns as a comma separated String. 1012 @param stickyColumn The default sticky column or null to not use a sticky column 998 1013 @return an {@link net.sf.basedb.core.ItemContext} object 999 */ 1000 public static ItemContext createDefaultContext(String sortProperty, String defaultColumns) 1014 @since 3.18.2 1015 */ 1016 public static ItemContext createDefaultContext(String sortProperty, String defaultColumns, String stickyColumn) 1001 1017 { 1002 1018 SortDirection sortDirection = SortDirection.ASC; … … 1009 1025 cc.setSetting("columns", defaultColumns); 1010 1026 cc.setObject("defaultColumns", defaultColumns); 1027 if (stickyColumn != null) 1028 { 1029 cc.setSetting("columns.sticky", stickyColumn); 1030 cc.setObject("defaultColumns.sticky", stickyColumn); 1031 } 1011 1032 cc.getInclude().add(Include.MINE); 1012 1033 cc.getInclude().add(Include.SHARED); -
branches/3.18-stable/src/clients/web/net/sf/basedb/clients/web/taglib/table/Table.java
r7935 r7957 742 742 addHidden("sortby", getSortby()); 743 743 addHidden("direction", getDirection().name()); 744 if (hasStickyHeaders()) addHidden("sticky_column", getStickyCol()); 744 745 745 746 if (sc != null && itemType != null) -
branches/3.18-stable/src/core/net/sf/basedb/core/ItemContext.java
r7911 r7957 1425 1425 { 1426 1426 return settings == null ? null : settings.get(name); 1427 } 1428 1429 /** 1430 Get a value from the settings or the default value 1431 if no current value exists. 1432 @since 3.18.2 1433 */ 1434 public String getSetting(String name, String defaultValue) 1435 { 1436 String s = getSetting(name); 1437 return s == null ? defaultValue : s; 1427 1438 } 1428 1439 -
branches/3.18-stable/www/common/columns/configure.js
r7853 r7957 28 28 var columnDefs; 29 29 var currentColumns; 30 var currentStickyColumn; 30 31 31 32 var configure = {}; … … 41 42 columnDefs = window.opener.Table.getColumnDefs(tableId); 42 43 currentColumns = window.opener.Table.getColumns(tableId); 44 currentStickyColumn = window.opener.Table.getStickyColumn(tableId); 43 45 44 46 // Initialize the visible and hidden columns lists 45 configure.initColumns(currentColumns );47 configure.initColumns(currentColumns, currentStickyColumn); 46 48 47 49 // Buttons … … 78 80 @param columns A comma-separated string with visible columns 79 81 */ 80 configure.initColumns = function(columns )81 { 82 var frm = document.forms['columns']; 83 // Remove all entries from the 'visible' and 'hidden' lists82 configure.initColumns = function(columns, stickyColumn) 83 { 84 var frm = document.forms['columns']; 85 // Remove all entries from the 'visible', 'hidden' and 'sticky' lists 84 86 var visible = frm.visible; 85 87 var hidden = frm.hidden; 88 var sticky = frm.sticky; 86 89 visible.length = 0; 87 90 hidden.length = 0; 91 if (sticky) 92 { 93 sticky.length = 0; 94 sticky[0] = new Option('- none -', '_'); 95 } 88 96 89 97 // The visibled columns (comma-separated) … … 96 104 { 97 105 var col = columnDefs[i]; 98 if (!col.alwaysHide) configure.addColumn(toList, col); 106 if (!col.alwaysHide) 107 { 108 configure.addColumn(toList, col); 109 if (sticky) 110 { 111 configure.addColumn(sticky, col); 112 if (col.id == stickyColumn) sticky.selectedIndex = sticky.length-1; 113 } 114 } 99 115 } 100 116 … … 139 155 var option = new Option(column.title, column.id); 140 156 option.title = column.title; 141 if (column.alwaysShow )157 if (column.alwaysShow && list.multiple) 142 158 { 143 159 option.style.fontWeight = 'bold'; … … 156 172 var presets = frm.presets; 157 173 var columns = presets.value; 174 var stickyColumn = Data.get(presets[presets.selectedIndex], 'sticky-column'); 158 175 if (columns == '') return; 159 if (columns == '_default_') columns = Data.get('page-data', 'default-columns'); 160 if (columns == '_current_') columns = currentColumns; 176 if (columns == '_default_') 177 { 178 columns = Data.get('page-data', 'default-columns'); 179 stickyColumn = Data.get('page-data', 'default-sticky'); 180 } 181 if (columns == '_current_') 182 { 183 columns = currentColumns; 184 stickyColumn = currentStickyColumn; 185 } 161 186 if (columns == '_minimal_') 162 187 { … … 169 194 columns = temp.join(','); 170 195 } 171 configure.initColumns(columns); 196 if (stickyColumn == null && frm.sticky) stickyColumn = frm.sticky.value; 197 configure.initColumns(columns, stickyColumn); 172 198 presets.selectedIndex = 0; 173 199 } … … 179 205 { 180 206 var visible = configure.getVisibleColumns(); 207 var frm = document.forms['columns']; 208 181 209 var url = 'save_preset.jsp?ID='+App.getSessionId(); 182 210 url += '&item_type='+Data.get('page-data', 'item-type'); 183 211 url += '&subcontext='+Data.get('page-data', 'subcontext', ''); 184 212 url += '&settingName='+Data.get('page-data', 'setting-name'); 185 url += '&columns='+visible; 213 url += '&columns='+encodeURIComponent(visible); 214 if (frm.sticky) url += '&stickyColumn='+encodeURIComponent(frm.sticky.value) 186 215 Dialogs.openPopup(url, 'SavePreset', 450, 300); 187 216 } … … 209 238 var item = event.detail; 210 239 var colId = 'ia'+item.id; 211 // Do not add duplicates212 for (var i = 0; i < frm.visible.length; i++)213 {214 if (frm.visible[i].value == colId) return;215 }216 240 // Remove from 'hidden' list 217 241 for (var i = frm.hidden.length-1; i >= 0; i--) … … 219 243 if (frm.hidden[i].value == colId) frm.hidden[i] = null; 220 244 } 221 frm.visible[frm.visible.length] = new Option(item.name + ' [I]', colId); 245 configure.addUniqueOption(frm.visible, new Option(item.name + ' [I]', colId)); 246 if (frm.sticky) 247 { 248 configure.addUniqueOption(frm.sticky, new Option(item.name + ' [I]', colId)); 249 } 250 222 251 } 223 252 … … 235 264 var frm = document.forms['columns']; 236 265 var data = event.detail; 237 // Do not add duplicates 238 for (var i = 0; i < frm.visible.length; i++) 239 { 240 if (frm.visible[i].value == data.property) return; 241 } 242 frm.visible[frm.visible.length] = new Option(data.title, data.property); 266 configure.addUniqueOption(frm.visible, new Option(data.title, data.property)); 267 if (frm.sticky) 268 { 269 configure.addUniqueOption(frm.sticky, new Option(data.title, data.property)); 270 } 243 271 } 244 272 … … 256 284 var frm = document.forms['columns']; 257 285 var data = event.detail; 258 // Do not add duplicates 259 for (var i = 0; i < frm.visible.length; i++) 260 { 261 if (frm.visible[i].value == data.property) return; 262 } 263 frm.visible[frm.visible.length] = new Option(data.title, data.property); 286 configure.addUniqueOption(frm.visible, new Option(data.title, data.property)); 287 if (frm.sticky) 288 { 289 configure.addUniqueOption(frm.sticky, new Option(data.title, data.property)); 290 } 291 } 292 293 /** 294 Add the option to the list if there is no other options with the 295 same value. 296 */ 297 configure.addUniqueOption = function(list, option) 298 { 299 for (var i = 0; i < list.length; i++) 300 { 301 if (list[i].value == option.value) return; 302 } 303 list[list.length] = option; 264 304 } 265 305 … … 269 309 configure.save = function() 270 310 { 311 var frm = document.forms['columns']; 271 312 var tableId = Data.get('page-data', 'table-id'); 272 313 var visible = configure.getVisibleColumns(); 273 window.opener.Table.setColumns(tableId, visible );314 window.opener.Table.setColumns(tableId, visible, frm.sticky ? frm.sticky.value : null); 274 315 window.close(); 275 316 } -
branches/3.18-stable/www/common/columns/configure.jsp
r7851 r7957 56 56 final boolean enableRelatedItemColumns = Values.getBoolean(request.getParameter("enableRelatedItemColumns")); 57 57 final boolean enableLinkedItemColumns = Values.getBoolean(request.getParameter("enableLinkedItemColumns")); 58 final boolean enableStickyColumn = Values.getBoolean(request.getParameter("enableStickyColumn")); 58 59 final ItemContext cc = sc.getCurrentContext(itemType, subContext); 59 60 60 61 final String defaultColumns = cc.getObject("defaultColumns"); 62 final String defaultSticky = cc.getObject("defaultColumns.sticky"); 61 63 final String settingName = Values.getString(request.getParameter("settingName"), "columns"); 62 64 %> … … 69 71 data-table-id="<%=tableId%>" 70 72 data-default-columns="<%=HTML.encodeTags(defaultColumns) %>" 73 data-default-sticky="<%=HTML.encodeTags(defaultSticky) %>" 71 74 data-item-type="<%=itemType.name() %>" 72 75 data-subcontext="<%=subContext %>" … … 160 163 </tr> 161 164 <tr> 162 <td colspan="4" > 165 <td></td> 166 <% 167 // The layout will be different depending on if the "Sticky column" option 168 // is available or not 169 if (enableStickyColumn) 170 { 171 // We display the "Sticky column" and "Presets" side-by-side 172 %> 173 <td> 174 <b>Sticky column</b><br> 175 <select name="sticky" id="sticky" style="width: calc(100% - 10px);"></select> 176 </td> 177 <td></td> 178 <td> 179 <b>Presets</b><br> 180 <table style="width: 100%;"> 181 <tr> 182 <td> 183 <% 184 } 185 else 186 { 187 // We display the "Presets" centered 188 %> 189 <td colspan="3"> 163 190 <table style="margin-left: auto; margin-right: auto;"> 164 191 <tr> 165 <td> 166 <b>Presets</b> 167 <select name="presets" id="presets"> 168 <option value="">-- predefined -- 169 <option value="all">All 170 <option value="_minimal_">Required 171 <option value="_current_">Current 172 <% 173 if (defaultColumns != null) 192 <td style="padding-right: 0.5em;"><b>Presets</b></td> 193 <td> 194 <% 195 } 196 %> 197 <select name="presets" id="presets" style="width: calc(100% - 10px);"> 198 <option value="">-- predefined -- 199 <option value="all">All 200 <option value="_minimal_">Required 201 <option value="_current_">Current 202 <% 203 if (defaultColumns != null) 204 { 205 %> 206 <option value="_default_">Default 207 <% 208 } 209 %> 210 <option value="">-- user defined -- 211 <% 212 Enumeration<Integer, String> contexts = sc.getContextNames(itemType, subContext); 213 for (int i = 0; i < contexts.size(); ++i) 214 { 215 ItemContext context = sc.getContext(contexts.getKey(i)); 216 if (context != null && !ItemContext.DEFAULT_NAME.equals(context.getName())) 217 { 218 String columns = context.getSetting(settingName); 219 String stickyColumn = context.getSetting(settingName+".sticky"); 220 if (columns != null) 174 221 { 175 222 %> 176 <option value="_default_">Default 223 <option value="<%=columns%>" 224 <%if (stickyColumn != null){%> 225 data-sticky-column="<%=stickyColumn%>" 226 <%}%> 227 ><%=HTML.encodeTags(context.getName())%> 177 228 <% 178 229 } 179 %>180 <option value="">-- user defined --181 <%182 Enumeration<Integer, String> contexts = sc.getContextNames(itemType, subContext);183 for (int i = 0; i < contexts.size(); ++i)184 {185 ItemContext context = sc.getContext(contexts.getKey(i));186 if (context != null && !ItemContext.DEFAULT_NAME.equals(context.getName()))187 {188 String columns = context.getSetting(settingName);189 if (columns != null)190 {191 %>192 <option value="<%=columns%>"><%=HTML.encodeTags(context.getName())%>193 <%194 }195 }196 }197 %>198 </select>199 </td>200 <%201 if (request.getParameter("nosavedelete") == null)202 {203 %>204 <td><base:button id="btnSavePreset" title="Save as…" /></td>205 <%206 230 } 207 %> 208 </tr> 209 </table> 210 211 <div class="padded" style="text-align: right;"> 212 <b>×</b> = This column cannot be hidden 213 </div> 214 215 </td> 231 } 232 %> 233 </select> 234 </td> 235 <% 236 if (request.getParameter("nosavedelete") == null) 237 { 238 %> 239 <td><base:button id="btnSavePreset" title="Save as…" /></td> 240 <% 241 } 242 %> 243 </tr> 244 </table> 245 </td> 246 </tr> 247 <tr> 248 <td colspan="4" > 249 <div class="padded" style="text-align: right;"> 250 <b>×</b> = This column cannot be hidden 251 </div> 252 </td> 216 253 </tr> 217 254 </table> -
branches/3.18-stable/www/common/columns/save_preset.jsp
r6607 r7957 42 42 final String columns = request.getParameter("columns"); 43 43 final String settingName = Values.getString(request.getParameter("settingName"), "columns"); 44 final String stickyColumn = Values.getStringOrNull(request.getParameter("stickyColumn")); 44 45 %> 45 46 <base:page type="popup" title="Save preset"> … … 55 56 <input type="hidden" name="subcontext" value="<%=subContext%>"> 56 57 <input type="hidden" name="settingName" value="<%=settingName%>"> 57 58 58 <% 59 if (stickyColumn != null) 60 { 61 %> 62 <input type="hidden" name="stickyColumn" value="<%=HTML.encodeTags(stickyColumn)%>"> 63 <% 64 } 65 %> 59 66 <div class="content"> 60 67 <table class="fullform input100 smaller bottomborder"> -
branches/3.18-stable/www/common/columns/submit_preset.jsp
r6192 r7957 54 54 final String name = request.getParameter("name"); 55 55 final String settingName = Values.getString(request.getParameter("settingName"), "columns"); 56 final String stickyColumn = Values.getStringOrNull(request.getParameter("stickyColumn")); 56 57 final ItemContext cc = sc.getCurrentContext(itemType, subContext); 57 58 String forward = null; … … 62 63 String columns = request.getParameter("columns"); 63 64 cc.setSetting(settingName, columns); 65 if (stickyColumn != null) cc.setSetting(settingName+".sticky", stickyColumn); 64 66 sc.saveCurrentContextAs(itemType, subContext, name, true, false); 65 67 } -
branches/3.18-stable/www/include/scripts/table.js
r7936 r7957 841 841 @param columns Comma-separated list of column ID:s of the visible columns, or the value 'all' 842 842 */ 843 table.setColumns = function(tableDiv, columns) 844 { 845 tableDiv = Doc.element(tableDiv); 846 var frm = document.forms[tableDiv.id]; 843 table.setColumns = function(tableDiv, columns, stickyColumn) 844 { 845 tableDiv = Doc.element(tableDiv); 846 var frm = document.forms[tableDiv.id]; 847 var submit = false; 847 848 if (frm.columns.value != columns) 848 849 { 849 850 frm.columns.value = columns; 850 Forms.submit(frm); 851 } 851 submit = true; 852 } 853 if (stickyColumn && frm.sticky_column && frm.sticky_column.value != stickyColumn) 854 { 855 frm.sticky_column.value = stickyColumn; 856 submit = true; 857 } 858 if (submit) Forms.submit(frm); 852 859 } 853 860 … … 880 887 } 881 888 889 table.getStickyColumn = function(tableDiv) 890 { 891 tableDiv = Doc.element(tableDiv); 892 var frm = document.forms[tableDiv.id]; 893 return frm.sticky_column ? frm.sticky_column.value : null; 894 } 882 895 883 896 /** … … 928 941 { 929 942 tableDiv = Doc.element(tableDiv); 943 var frm = document.forms[tableDiv.id]; 930 944 var itemType = Data.get(tableDiv, 'item-type'); 931 945 var subContext = Data.get(tableDiv, 'subcontext', ''); … … 939 953 if (enableRelatedItemColumns) url += '&enableRelatedItemColumns=1'; 940 954 if (!disableLinkedItemColumns) url += '&enableLinkedItemColumns=1'; 955 if (frm.sticky_column) url += '&enableStickyColumn=1'; 941 956 942 957 if (settingName) url += '&settingName='+settingName; -
branches/3.18-stable/www/views/rawbioassays/list_rawbioassays.jsp
r7935 r7957 204 204 data-inherited-annotations="true" 205 205 data-relateditem-columns="true" 206 stickyheaders=" name"206 stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>" 207 207 > 208 208 <tbl:hidden
Note: See TracChangeset
for help on using the changeset viewer.