protected void reloadParentFolders(List<AppFolder> reloadedFolders) { for (AppFolder folder : reloadedFolders) { if (StringUtils.isBlank(folder.getQuantityScript())) { if (appFoldersTree.isExpanded(folder)) { folder.setQuantity(null); folder.setItemStyle(""); } else { reloadSingleParentFolder(folder, reloadedFolders); } } } }
protected void reloadSingleParentFolder(AppFolder parentFolder, @Nullable List<AppFolder> reloadedFolders) { Collection<AppFolder> childFolders = getChildFolders(parentFolder); int sumOfChildQuantity = 0; Set<String> childFoldersStyleSet = new HashSet<>(); for (AppFolder childFolder : childFolders) { if (reloadedFolders != null) { childFolder = reloadedFolders.get(reloadedFolders.indexOf(childFolder)); } sumOfChildQuantity += !StringUtils.isBlank(childFolder.getQuantityScript()) && childFolder.getQuantity() != null ? childFolder.getQuantity() : 0; if (childFolder.getItemStyle() != null) childFoldersStyleSet.add(childFolder.getItemStyle()); } parentFolder.setQuantity(sumOfChildQuantity); if (!childFoldersStyleSet.isEmpty()) { parentFolder.setItemStyle(StringUtils.join(childFoldersStyleSet, " ")); } else parentFolder.setItemStyle(""); }
protected boolean loadFolderQuantity(Binding binding, AppFolder folder) { if (!StringUtils.isBlank(folder.getQuantityScript())) { binding.setVariable("folder", folder); String styleVariable = "style"; binding.setVariable(styleVariable, null); try { Number qty = runScript(folder.getQuantityScript(), binding); folder.setItemStyle((String) binding.getVariable(styleVariable)); folder.setQuantity(qty == null ? null : qty.intValue()); } catch (Exception e) { log.warn("Unable to evaluate AppFolder quantity script for folder: id: {} , name: {}", folder.getId(), folder.getName(), e); return false; } } return true; }
@Override public void copyFrom(AbstractSearchFolder srcFolder) { super.copyFrom(srcFolder); setVisibilityScript(((AppFolder) srcFolder).getVisibilityScript()); setQuantityScript(((AppFolder) srcFolder).getQuantityScript()); }
if (StringUtils.isBlank(folder.getQuantityScript())) { folder.setQuantity(null); folder.setItemStyle(null); appFoldersTree.addCollapseListener(event -> { AppFolder folder = event.getCollapsedItem(); if (StringUtils.isBlank(folder.getQuantityScript())) { reloadSingleParentFolder(folder, null);
public AppFolderEditWindow(boolean adding, AppFolder folder, Presentations presentations, Runnable commitHandler) { super(adding, folder, presentations, commitHandler); if (!adding) { ThemeConstants theme = App.getInstance().getThemeConstants(); setWidth(theme.get("cuba.web.AppFolderEditWindow.width")); layout.setWidth("100%"); visibilityScriptField = new CubaSourceCodeEditor(); visibilityScriptField.setMode(AceMode.groovy); visibilityScriptField.setWidth(100, Unit.PERCENTAGE); visibilityScriptField.setCaption(getMessage("folders.visibilityScript")); String vScript = StringUtils.trimToEmpty(folder.getVisibilityScript()); visibilityScriptField.setValue(vScript); layout.addComponent(visibilityScriptField, 3); quantityScriptField = new CubaSourceCodeEditor(); String qScript = StringUtils.trimToEmpty(folder.getQuantityScript()); quantityScriptField.setValue(qScript); quantityScriptField.setMode(AceMode.groovy); quantityScriptField.setWidth(100, Unit.PERCENTAGE); quantityScriptField.setCaption(getMessage("folders.quantityScript")); layout.addComponent(quantityScriptField, 4); if (AppUI.getCurrent().isTestMode()) { this.setCubaId("appFolderEditWindow"); visibilityScriptField.setCubaId("visibilityScriptField"); quantityScriptField.setCubaId("quantityScriptField"); } } }