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()); }
protected void updateFolders(List<AppFolder> reloadedFolders) { List<AppFolder> folders = appFoldersTree.getItems() .collect(Collectors.toList()); for (AppFolder folder : reloadedFolders) { int index = reloadedFolders.indexOf(folder); AppFolder f = folders.get(index); if (f != null) { f.setItemStyle(folder.getItemStyle()); f.setQuantity(folder.getQuantity()); } } }
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); } } } }
return; folder.setName(nameField.getValue()); folder.setTabName(tabNameField.getValue()); folder.setSortOrder(null); } else { String value = sortOrderField.getValue(); return; folder.setSortOrder(sortOrder); folder.setParent((Folder) parent); } else { folder.setParent(null); folder.setVisibilityScript(scriptText); folder.setQuantityScript(scriptText); folder.setApplyDefault(Boolean.valueOf(applyDefaultCb.getValue().toString()));
boolean evaluatedVisibilityScript = true; try { if (!StringUtils.isBlank(folder.getVisibilityScript())) { binding.setVariable("folder", folder); Boolean visible = runScript(folder.getVisibilityScript(), binding); if (BooleanUtils.isFalse(visible)) { iterator.remove(); folder.getId(), folder.getName(), e);
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"); } } }
@Override protected void fillParentSelect() { parentSelect.removeAllItems(); String root = getMessage("folders.appFoldersRoot"); parentSelect.addItem(root); parentSelect.setNullSelectionItemId(root); FoldersService service = AppBeans.get(FoldersService.NAME); List<AppFolder> list = service.loadAppFolders(); for (AppFolder folder : list) { if (!folder.equals(this.folder)) { parentSelect.addItem(folder); parentSelect.setItemCaption(folder, getMessage(folder.getName())); } } } }
@Override public String toString() { return getName() + " (" + quantity + ")"; } }
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(""); }
if (StringUtils.isBlank(folder.getQuantityScript())) { folder.setQuantity(null); folder.setItemStyle(null); if (StringUtils.isBlank(folder.getQuantityScript())) { reloadSingleParentFolder(folder, null);