petriNets.engine-processes.preference_item.xml Maven / Gradle / Ivy
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://petriflow.com/petriflow.schema.xsd"> <id>preference_item</id> <initials>PRI</initials> <title>Preference Item</title> <icon>check_box_outline_blank</icon> <defaultRole>true</defaultRole> <anonymousRole>false</anonymousRole> <transitionRole>false</transitionRole> <roleRef> <id>system</id> <caseLogic> <create>true</create> <delete>true</delete> <view>true</view> </caseLogic> </roleRef> <roleRef> <id>admin</id> <caseLogic> <create>true</create> <delete>true</delete> <view>true</view> </caseLogic> </roleRef> <roleRef> <id>default</id> <caseLogic> <create>false</create> <delete>false</delete> <view>true</view> </caseLogic> </roleRef> <caseEvents> <event type="delete"> <id>preference_item_delete</id> <actions phase="pre"> <action id="0"> removeItemChildCases(useCase) </action> </actions> </event> </caseEvents> <role> <id>system</id> <title>System</title> </role> <role> <id>admin</id> <title>Admin</title> </role> <function scope="process" name="removeItemChildCases"> { com.netgrif.application.engine.workflow.domain.Case useCase -> def childCaseIds = useCase.dataSet['childItemIds'].value if (childCaseIds == null || childCaseIds.isEmpty()) { return } removeChildItemFromParent(useCase.dataSet['parentId'].value[0], useCase) def childCases = workflowService.findAllById(childCaseIds) async.run { childCases.each { workflowService.deleteCase(it) } } } </function> <function scope="process" name="updateFilterAutocompleteOptions"> { com.netgrif.application.engine.petrinet.domain.dataset.EnumerationMapField filterAutocomplete, com.netgrif.application.engine.petrinet.domain.dataset.TaskField previewTaskRef, com.netgrif.application.engine.petrinet.domain.dataset.CaseField selectedFilterRef, com.netgrif.application.engine.petrinet.domain.dataset.ButtonField updateBtn, com.netgrif.application.engine.petrinet.domain.Transition trans, boolean taskTypeOnly -> if (filterAutocomplete.getOptions().containsKey(filterAutocomplete.value)) { change previewTaskRef value { return [findTask({it.caseId.eq(filterAutocomplete.value).and(it.transitionId.eq("view_filter"))}).stringId] } make updateBtn,editable on trans when { true } } else { change filterAutocomplete options { def findAllPredicate if (taskTypeOnly) { findAllPredicate = { filterCase -> !selectedFilterRef.value.contains(filterCase.stringId) && filterCase.dataSet["filter_type"].value == "Task" } } else { findAllPredicate = { filterCase -> !selectedFilterRef.value.contains(filterCase.stringId) } } return findFilters(filterAutocomplete.value != null ? filterAutocomplete.value : "") .findAll(findAllPredicate) .collectEntries({filterCase -> [filterCase.stringId, filterCase.title]}) } change previewTaskRef value { [] } make updateBtn,visible on trans when { true } } } </function> <function scope="process" name="updateOptionsBasedOnValue"> { com.netgrif.application.engine.petrinet.domain.dataset.EnumerationMapField toBeUpdated, com.netgrif.application.engine.petrinet.domain.dataset.MultichoiceMapField valueSelector, com.netgrif.application.engine.petrinet.domain.dataset.EnumerationMapField optionsHolder -> def existingOptions = optionsHolder.options def selectedValues = valueSelector.value def newOptions = [:] if (selectedValues != null) { existingOptions.each { key, value -> if (selectedValues.contains(key)) { newOptions.put(key, value) } } } if (!newOptions.containsKey(toBeUpdated.value)) { change toBeUpdated value { null } } change toBeUpdated options { newOptions } } </function> <data type="caseRef"> <id>parentId</id> <title/> <allowedNets> <allowedNet>preference_item</allowedNet> </allowedNets> </data> <data type="text"> <id>move_previous_dest_uri</id> <title/> </data> <data type="multichoice_map"> <id>move_dest_uri</id> <title name="move_dest_uri">Destination URI</title> <desc name="move_dest_uri_desc">List of nodes representing destination URI</desc> <component> <name>autocomplete</name> </component> <action trigger="get"> moveDestUri: f.move_dest_uri; String uriNodeId = elasticCaseService.findUriNodeId(useCase) def node = uriService.findById(uriNodeId) updateMultichoiceWithCurrentNode(moveDestUri, node) </action> <action trigger="set"> prevDestUri: f.move_previous_dest_uri, moveDestUri: f.move_dest_uri; String newUri = moveDestUri.value.join("/") newUri = newUri.replace("//","/") String corrected = getCorrectedUri(newUri) if (corrected == newUri) { def node = uriService.findByUri(newUri) change moveDestUri options { findOptionsBasedOnSelectedNode(node) } } else { change moveDestUri value { splitUriPath(corrected) } } </action> </data> <data type="text"> <id>move_dest_uri_new_node</id> <title name="move_dest_uri_new_node">New node to be added</title> <desc name="move_dest_uri_new_node_desc">Enter new node name</desc> </data> <data type="button"> <id>move_add_node</id> <title/> <placeholder name="move_add_node">Add</placeholder> <component> <name>raised</name> </component> <action trigger="set"> newNodeName: f.move_dest_uri_new_node, selectedUri: f.move_dest_uri; if (newNodeName.value == null || newNodeName.value == "") { return } String prefixUri = selectedUri.value.join("/") prefixUri = prefixUri.replace("//","/") String newUri = prefixUri + uriService.getUriSeparator() + newNodeName.value def newNode = uriService.getOrCreate(newUri, com.netgrif.application.engine.petrinet.domain.UriContentType.CASE) change selectedUri value { splitUriPath(newNode.uriPath) } change newNodeName value { null } </action> </data> <data type="i18n"> <id>duplicate_new_title</id> <title name="duplicate_new_title">Title of duplicated view</title> </data> <data type="text"> <id>duplicate_view_identifier</id> <title name="duplicate_view_identifier">View identifier</title> <desc name="duplicate_view_identifier_desc">Must be unique</desc> </data> <data type="caseRef" immediate="true"> <id>childItemIds</id> <title/> <allowedNets> <allowedNet>preference_item</allowedNet> </allowedNets> </data> <data type="taskRef"> <id>childItemForms</id> <title/> </data> <data type="boolean" immediate="true"> <id>hasChildren</id> <title/> </data> <data type="button"> <id>duplicate_reset_childItemIds</id> <title/> <action trigger="set"> hasChildren: f.hasChildren, childItemIds: f.childItemIds; change childItemIds value { [] } change hasChildren value { false } </action> </data> <data type="text" immediate="true"> <id>menu_item_identifier</id> <title name="menu_item_identifier">Menu item identifier</title> </data> <data type="text" immediate="true"> <id>nodePath</id> <title name="nodePath">Item URI</title> <event type="set"> <id>0</id> <actions phase="post"> <action> nodePath: f.nodePath, menu_item_identifier: f.menu_item_identifier; change menu_item_identifier value { def idx = nodePath.value.lastIndexOf(uriService.getUriSeparator()) return nodePath.value.substring(idx + 1) } </action> </actions> </event> </data> <!-- GENERAL CONFIGURATION DATA --> <data type="text" immediate="true"> <id>menu_icon</id> <title name="icon_identifier">Menu icon identifier</title> <desc name="icon_identifier_desc">Material icon identifier. List of icons with identifiers is available online.</desc> <action trigger="set"> icon: f.this, iconPreview: f.menu_icon_preview; changeCaseProperty "icon" about { icon.value; } if (icon.value == "") { change iconPreview value {<![CDATA["""<span></span>"""]]>} return; } change iconPreview value { <![CDATA["""<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"><span class="material-icons">"""]]> + icon.value + <![CDATA["""</span>"""]]> } </action> </data> <data type="text"> <id>menu_icon_preview</id> <title name="icon_preview">Menu icon preview</title> <component> <name>htmltextarea</name> </component> </data> <data type="enumeration"> <id>menu_name_as_visible</id> <title name="name">Name of the item</title> <desc name="name_desc">Is shown in the menu</desc> <component> <name>autocomplete</name> </component> </data> <data type="i18n" immediate="true"> <id>menu_name</id> <title name="name">Name of the item</title> <desc name="name_desc">Will be shown in the menu</desc> <action trigger="set"> menu_name_as_visible: f.menu_name_as_visible, name: f.menu_name; changeCaseProperty "title" about { name.value } change menu_name_as_visible choices { [name.value] } change menu_name_as_visible value { name.value } </action> </data> <data type="text" immediate="true"> <id>tab_icon</id> <title name="tab_icon">Tab icon identifier</title> <desc name="tab_icon_identifier_desc">Material icon identifier. List of icons with identifiers is available online.</desc> <action trigger="set"> icon: f.this, iconPreview: f.tab_icon_preview; if (icon.value == "") { change iconPreview value {<![CDATA["""<span></span>"""]]>} return; } change iconPreview value { <![CDATA["""<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"><span class="material-icons">"""]]> + icon.value + <![CDATA["""</span>"""]]> } </action> </data> <data type="text"> <id>tab_icon_preview</id> <title>Tab icon preview</title> <component> <name>htmltextarea</name> </component> </data> <data type="boolean" immediate="true"> <id>use_tab_icon</id> <title name="display_tab_icon">Display tab icon?</title> <init>true</init> </data> <data type="i18n" immediate="true"> <id>tab_name</id> <title name="tab_name">Name of the item</title> <desc name="tab_name_desc">Will be shown in tab</desc> </data> <data type="button"> <id>add_allowed_roles</id> <title/> <placeholder name="allow_roles">Allow view for roles</placeholder> <action trigger="set"> allowedRoles: f.allowed_roles, processesAvailable: f.processes_available, rolesAvailable: f.roles_available; change allowedRoles options {return configurableMenuService.addSelectedRoles(allowedRoles, processesAvailable, rolesAvailable)} change rolesAvailable value {[]} change rolesAvailable options {[:]} change processesAvailable value {null} </action> </data> <data type="button"> <id>remove_allowed_roles</id> <title/> <placeholder name="remove_from_allowed_roles">Remove from allowed roles</placeholder> <action trigger="set"> allowedRoles: f.allowed_roles, processesAvailable: f.processes_available, rolesAvailable: f.roles_available; change allowedRoles options {return configurableMenuService.removeSelectedRoles(allowedRoles)} change allowedRoles value {[]} change rolesAvailable value {[]} change rolesAvailable options {[:]} change processesAvailable value {null} </action> </data> <data type="button"> <id>add_banned_roles</id> <title/> <placeholder name="ban_roles">Ban view for roles</placeholder> <action trigger="set"> bannedRoles: f.banned_roles, processesAvailable: f.processes_available, rolesAvailable: f.roles_available; change bannedRoles options {return configurableMenuService.addSelectedRoles(bannedRoles, processesAvailable, rolesAvailable)} change rolesAvailable value {[]} change rolesAvailable options {[:]} change processesAvailable value {null} </action> </data> <data type="button"> <id>remove_banned_roles</id> <title/> <placeholder name="remove_from_banned_roles">Remove from banned roles</placeholder> <action trigger="set"> bannedRoles: f.banned_roles, processesAvailable: f.processes_available, rolesAvailable: f.roles_available; change bannedRoles options { return configurableMenuService.removeSelectedRoles(bannedRoles) } change bannedRoles value { [] } change rolesAvailable value { [] } change rolesAvailable options { [:] } change processesAvailable value { null } </action> </data> <data type="enumeration_map" immediate="true"> <id>processes_available</id> <title name="available_processes">Your processes</title> <desc name="available_processes_desc">Select a process containing roles you wish to add to allowed or banned roles lists.</desc> <action trigger="get"> processes: f.this; change processes options { return configurableMenuService.getNetsByAuthorAsMapOptions(loggedUser(), org.springframework.context.i18n.LocaleContextHolder.locale) } </action> <action trigger="set"> processes: f.this, allowedRoles: f.allowed_roles, bannedRoles: f.banned_roles, rolesAvailable: f.roles_available; if (processes.value != null) { change rolesAvailable options { return configurableMenuService.getAvailableRolesFromNet(processes, allowedRoles, bannedRoles) } } else { change rolesAvailable options { [:] } } change rolesAvailable value { [] } </action> </data> <data type="multichoice_map" immediate="true"> <id>roles_available</id> <title name="available_roles">Available roles from selected process</title> </data> <data type="multichoice_map" immediate="true"> <id>allowed_roles</id> <title name="roles_allowed">Allowed roles</title> <desc name="roles_allowed_desc">List of roles allowed to view this menu entry.</desc> <options> <init dynamic="true">[:]</init> </options> </data> <data type="multichoice_map" immediate="true"> <id>banned_roles</id> <title name="roles_banned">Banned roles</title> <desc name="roles_banned_desc">List of roles not allowed to view this menu entry.</desc> <options> <init dynamic="true">[:]</init> </options> </data> <data type="taskRef"> <id>selected_filter_preview</id> <title/> </data> <data type="taskRef"> <id>current_filter_preview</id> <title/> </data> <data type="i18n"> <id>filter_header</id> <title/> <init name="filter_header">Current filter</init> <component> <name>divider</name> </component> </data> <data type="text"> <id>new_filter_id</id> <title/> </data> <data type="enumeration_map"> <id>filter_autocomplete_selection</id> <title name="filter_autocomplete_selection">Select new filter</title> <component> <name>autocomplete_dynamic</name> </component> <action trigger="set"> trans: t.item_settings, useCustomView: f.use_custom_view, filterAutocomplete: f.this, filter_case: f.filter_case, update_filter: f.update_filter, previewTaskRef: f.selected_filter_preview; updateFilterAutocompleteOptions(filterAutocomplete, previewTaskRef, filter_case, update_filter, trans, false) make update_filter,hidden on trans when { useCustomView.value } </action> <action trigger="get"> trans: t.item_settings, useCustomView: f.use_custom_view, filterAutocomplete: f.this, filter_case: f.filter_case, update_filter: f.update_filter, previewTaskRef: f.selected_filter_preview; updateFilterAutocompleteOptions(filterAutocomplete, previewTaskRef, filter_case, update_filter, trans, false) make update_filter,hidden on trans when { useCustomView.value } </action> </data> <data type="button"> <id>update_filter</id> <title/> <placeholder name="update_filter">Update view with selected filter</placeholder> <component> <name>raised</name> </component> <action trigger="set"> trans: t.item_settings, update_filter: f.update_filter, filter_case: f.filter_case, filterAutocomplete: f.filter_autocomplete_selection; change filter_case value { [filterAutocomplete.value] } change filterAutocomplete value { "" } make update_filter,visible on trans when { true } </action> </data> <data type="caseRef"> <id>filter_case</id> <title/> <action trigger="set"> additionalFilterCase: f.additional_filter_case, additionalAutocomplete: f.additional_filter_autocomplete_selection, additionalUpdate: f.update_additional_filter, additionalFilterPreview: f.selected_additional_filter_preview, mergeFilters: f.merge_filters, filterHeader: f.filter_header, currentAdditionalFilterPreview: f.current_additional_filter_preview, taskSettingsTrans: t.task_view_settings, settingsTrans: t.item_settings, caseViewHeader: f.case_view_header, caseViewSettingsTaskRef: f.case_view_settings_taskRef, taskViewHeader: f.task_view_header, taskViewSettingsTaskRef: f.task_view_settings_taskRef, filterTaskRef: f.current_filter_preview, filterCaseRef: f.filter_case; if (filterCaseRef.value == null || filterCaseRef.value == []) { return } def filterCase = findCase({it._id.eq(filterCaseRef.value[0])}) change filterTaskRef value {return [findTask({it.caseId.eq(filterCase.stringId).and(it.transitionId.eq("view_filter"))}).stringId]} if (filterCase.dataSet["filter_type"].value == "Case") { make caseViewHeader,editable on settingsTrans when { true } make caseViewSettingsTaskRef,editable on settingsTrans when { true } make additionalAutocomplete,editable on taskSettingsTrans when { true } make additionalUpdate,visible on taskSettingsTrans when { true } make additionalFilterPreview,visible on taskSettingsTrans when { true } make mergeFilters,visible on taskSettingsTrans when { true } make filterHeader,visible on taskSettingsTrans when { true } make currentAdditionalFilterPreview,visible on taskSettingsTrans when { true } } else { make caseViewHeader,hidden on settingsTrans when { true } make caseViewSettingsTaskRef,hidden on settingsTrans when { true } make additionalAutocomplete,hidden on taskSettingsTrans when { true } make additionalUpdate,hidden on taskSettingsTrans when { true } make additionalFilterPreview,hidden on taskSettingsTrans when { true } make mergeFilters,hidden on taskSettingsTrans when { true } make filterHeader,hidden on taskSettingsTrans when { true } make currentAdditionalFilterPreview,hidden on taskSettingsTrans when { true } } make taskViewHeader,editable on settingsTrans when { true } make taskViewSettingsTaskRef,editable on settingsTrans when { true } change additionalFilterCase value { [] } </action> <allowedNets> <allowedNet>filter</allowedNet> </allowedNets> </data> <data type="boolean" immediate="true"> <id>use_custom_view</id> <title name="use_custom_view">Use custom view?</title> <init>false</init> </data> <data type="text" immediate="true"> <id>custom_view_selector</id> <title name="custom_view_selector">Custom view configuration selector</title> <desc name="custom_view_selector_desc">Example: "demo-tabbed-views"</desc> </data> <!-- CASE VIEW CONFIGURATION DATA --> <data type="enumeration_map" immediate="true"> <id>case_view_search_type</id> <title name="case_view_search_type">Search type for case view</title> <options> <option key="hidden" name="hidden">Hidden</option> <option key="fulltext" name="fulltext">Fulltext</option> <option key="fulltext_advanced" name="fulltext_advanced">Fulltext and advanced</option> </options> <init>fulltext_advanced</init> </data> <data type="text" immediate="true"> <id>create_case_button_title</id> <title name="create_case_button_title">"New case" button title</title> </data> <data type="text"> <id>create_case_button_icon_preview</id> <title name="create_case_button_icon_preview">Icon preview</title> <init><![CDATA[<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"><span class="material-icons">add</span>]]></init> <component> <name>htmltextarea</name> </component> </data> <data type="text" immediate="true"> <id>create_case_button_icon</id> <title name="create_case_button_icon">"New case" button icon identifier</title> <init>add</init> <action trigger="set"> create_case_button_icon_preview: f.create_case_button_icon_preview, create_case_button_icon: f.create_case_button_icon; if (create_case_button_icon.value == "") { change create_case_button_icon_preview value {<![CDATA["""<span></span>"""]]>} return; } change create_case_button_icon_preview value { <![CDATA["""<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"><span class="material-icons">"""]]> + create_case_button_icon.value + <![CDATA["""</span>"""]]> } </action> </data> <data type="boolean" immediate="true"> <id>show_create_case_button</id> <title name="show_create_case_button">Show create case button?</title> <init>true</init> </data> <data type="boolean" immediate="true"> <id>case_require_title_in_creation</id> <title name="case_require_title_in_creation">Require title input in case creation?</title> <init>true</init> </data> <data type="text" immediate="true"> <id>case_banned_nets_in_creation</id> <title name="case_banned_nets_in_creation">Banned processes for creation</title> <desc name="case_banned_nets_in_creation_desc">Write down process identifiers separated by comma. Example: mynet1,mynet2</desc> <action trigger="set"> bannedNets: f.this; String trimmed = bannedNets.value?.replaceAll("\\s","") if (bannedNets.value != trimmed) { change bannedNets value { trimmed } } </action> </data> <data type="i18n"> <id>case_view_header</id> <title/> <init name="case_view_header">Case view</init> <component> <name>divider</name> </component> </data> <data type="taskRef"> <id>case_view_settings_taskRef</id> <title/> <init>case_view_settings</init> </data> <data type="boolean" immediate="true"> <id>case_show_more_menu</id> <title name="case_show_more_menu">Show more menu for case item?</title> <init>false</init> </data> <data type="boolean" immediate="true"> <id>case_allow_header_table_mode</id> <title name="allow_header_table_mode">Allow table mode for headers?</title> <init>true</init> </data> <data type="multichoice_map" immediate="true"> <id>case_headers_mode</id> <title name="headers_mode">Header mode</title> <options> <option key="sort" name="sort">Sort</option> <option key="search" name="search">Search</option> <option key="edit" name="edit">Edit</option> </options> <init>sort,edit,search</init> <action trigger="set"> headersMode: f.case_headers_mode, defaultMode: f.case_headers_default_mode, holder: f.case_headers_options_holder; updateOptionsBasedOnValue(defaultMode, headersMode, holder) </action> <action trigger="get"> headersMode: f.case_headers_mode, defaultMode: f.case_headers_default_mode, holder: f.case_headers_options_holder; updateOptionsBasedOnValue(defaultMode, headersMode, holder) </action> </data> <data type="enumeration_map" immediate="true"> <id>case_headers_default_mode</id> <title name="headers_default_mode">Default header mode</title> <options> <option key="sort" name="sort">Sort</option> <option key="search" name="search">Search</option> <option key="edit" name="edit">Edit</option> </options> <init>sort</init> </data> <data type="enumeration_map"> <id>case_headers_options_holder</id> <title/> <options> <option key="sort" name="sort">Sort</option> <option key="search" name="search">Search</option> <option key="edit" name="edit">Edit</option> </options> </data> <data type="boolean" immediate="true"> <id>case_is_header_mode_changeable</id> <title name="is_header_mode_changeable">Can header mode be changed?</title> <init>true</init> </data> <data type="boolean" immediate="true"> <id>use_case_default_headers</id> <title name="case_default_headers">Use custom default headers?</title> <init>true</init> </data> <data type="text" immediate="true"> <id>case_default_headers</id> <title name="default_headers">Set default headers</title> <desc name="default_headers_desc">Example: "meta-title,meta-visualId"</desc> <action trigger="set"> defaultHeaders: f.this; String trimmed = defaultHeaders.value?.replaceAll("\\s","") if (defaultHeaders.value != trimmed) { change defaultHeaders value { trimmed } } </action> </data> <!-- TASK VIEW CONFIGURATION DATA --> <data type="taskRef"> <id>selected_additional_filter_preview</id> <title/> </data> <data type="taskRef"> <id>current_additional_filter_preview</id> <title/> </data> <data type="enumeration_map"> <id>additional_filter_autocomplete_selection</id> <title name="filter_autocomplete_selection">Select new filter</title> <component> <name>autocomplete_dynamic</name> </component> <action trigger="set"> trans: t.task_view_settings, filterAutocomplete: f.this, filterCase: f.additional_filter_case, updateFilter: f.update_additional_filter, previewTaskRef: f.selected_additional_filter_preview; updateFilterAutocompleteOptions(filterAutocomplete, previewTaskRef, filterCase, updateFilter, trans, true) </action> <action trigger="get"> trans: t.task_view_settings, filterAutocomplete: f.this, filterCase: f.additional_filter_case, updateFilter: f.update_additional_filter, previewTaskRef: f.selected_additional_filter_preview; updateFilterAutocompleteOptions(filterAutocomplete, previewTaskRef, filterCase, updateFilter, trans, true) </action> </data> <data type="button"> <id>update_additional_filter</id> <title/> <placeholder name="update_filter">Update view with selected filter</placeholder> <component> <name>raised</name> </component> <action trigger="set"> trans: t.task_view_settings, updateFilter: f.update_additional_filter, filterCase: f.additional_filter_case, filterAutocomplete: f.additional_filter_autocomplete_selection; change filterCase value { [filterAutocomplete.value] } change filterAutocomplete value { "" } make updateFilter,visible on trans when { true } </action> </data> <data type="button"> <id>remove_additional_filter</id> <title/> <placeholder name="remove_additional_filter">Remove additional filter</placeholder> <component> <name>raised</name> </component> <action trigger="set"> filterCase: f.additional_filter_case; change filterCase value { [] } </action> </data> <data type="caseRef"> <id>additional_filter_case</id> <title/> <action trigger="set"> taskViewTrans: t.task_view_settings, mergeFilters: f.merge_filters, filterHeader: f.filter_header, filterTaskRef: f.current_additional_filter_preview, removeButton: f.remove_additional_filter, filterCaseRef: f.additional_filter_case; if (filterCaseRef.value[0] == null) { make mergeFilters,hidden on taskViewTrans when { true } make filterHeader,hidden on taskViewTrans when { true } make removeButton,hidden on taskViewTrans when { true } change filterTaskRef value { [] } return } def filterCase = findCase({ it._id.eq(filterCaseRef.value[0]) }) change filterTaskRef value { return [findTask({it.caseId.eq(filterCase.stringId).and(it.transitionId.eq("view_filter"))}).stringId] } make mergeFilters,editable on taskViewTrans when { true } make filterHeader,visible on taskViewTrans when { true } make removeButton,editable on taskViewTrans when { true } </action> <allowedNets> <allowedNet>filter</allowedNet> </allowedNets> </data> <data type="boolean" immediate="true"> <id>merge_filters</id> <title name="merge_filters">Merge with base filter?</title> <init>true</init> </data> <data type="taskRef"> <id>task_view_settings_taskRef</id> <title/> <init>task_view_settings</init> </data> <data type="i18n"> <id>task_view_header</id> <title/> <init name="task_view_header">Task view</init> <component> <name>divider</name> </component> </data> <data type="enumeration_map" immediate="true"> <id>task_view_search_type</id> <title name="task_view_search_type">Search type for task view</title> <options> <option key="hidden" name="hidden">Hidden</option> <option key="fulltext" name="fulltext">Fulltext</option> <option key="fulltext_advanced" name="fulltext_advanced">Fulltext and advanced</option> </options> <init>fulltext_advanced</init> </data> <data type="multichoice_map" immediate="true"> <id>task_headers_mode</id> <title name="headers_mode">Header mode</title> <options> <option key="sort" name="sort">Sort</option> <option key="edit" name="edit">Edit</option> </options> <init>sort,edit</init> <action trigger="set"> headersMode: f.task_headers_mode, defaultMode: f.task_headers_default_mode, holder: f.task_headers_options_holder; updateOptionsBasedOnValue(defaultMode, headersMode, holder) </action> <action trigger="get"> headersMode: f.case_headers_mode, defaultMode: f.case_headers_default_mode, holder: f.case_headers_options_holder; updateOptionsBasedOnValue(defaultMode, headersMode, holder) </action> </data> <data type="enumeration_map" immediate="true"> <id>task_headers_default_mode</id> <title name="headers_default_mode">Default header mode</title> <options> <option key="sort" name="sort">Sort</option> <option key="edit" name="edit">Edit</option> </options> <init>sort</init> </data> <data type="enumeration_map"> <id>task_headers_options_holder</id> <title/> <options> <option key="sort" name="sort">Sort</option> <option key="edit" name="edit">Edit</option> </options> </data> <data type="boolean" immediate="true"> <id>task_is_header_mode_changeable</id> <title name="is_header_mode_changeable">Can header mode be changed?</title> <init>true</init> </data> <data type="boolean" immediate="true"> <id>task_allow_header_table_mode</id> <title name="allow_header_table_mode">Allow table mode for headers?</title> <init>true</init> </data> <data type="boolean" immediate="true"> <id>use_task_default_headers</id> <title name="use_default_headers">Use custom default headers?</title> <init>true</init> </data> <data type="text" immediate="true"> <id>task_default_headers</id> <title name="task_default_headers">Set default headers</title> <desc name="task_default_headers_desc">Example: "meta-title,meta-user"</desc> <action trigger="set"> defaultHeaders: f.this; String trimmed = defaultHeaders.value?.replaceAll("\\s","") if (defaultHeaders.value != trimmed) { change defaultHeaders value { trimmed } } </action> </data> <data type="boolean" immediate="true"> <id>task_show_more_menu</id> <title name="task_show_more_menu">Show more menu for task item?</title> <init>true</init> </data> <data type="button"> <id>order_down</id> <title/> <placeholder>south</placeholder> <component> <name>icon</name> <property key="stretch">true</property> </component> <action trigger="set"> parentId: f.parentId; def parentCase = workflowService.findOne(parentId.value[0]) def taskId = useCase.tasks.find { it.transition == "row_for_ordering" }.task def taskRefValue = parentCase.dataSet['childItemForms'].value int taskRefValueSize = taskRefValue.size() def caseRefValue = parentCase.dataSet['childItemIds'].value int caseRefValueSize = caseRefValue.size() int idxInTaskRef = taskRefValue.indexOf(taskId) if (idxInTaskRef < taskRefValueSize - 1) { Collections.swap(taskRefValue, idxInTaskRef, idxInTaskRef + 1) } int idxInCaseRef = caseRefValue.indexOf(useCase.stringId) if (idxInCaseRef < caseRefValueSize - 1) { Collections.swap(caseRefValue, idxInCaseRef, idxInCaseRef + 1) } setData("children_order", parentCase, [ "childItemForms" : [ "value" : taskRefValue, "type" : "taskRef" ], "childItemIds" : [ "value" : caseRefValue, "type" : "caseRef" ] ]) </action> </data> <data type="button"> <id>order_up</id> <title/> <placeholder>north</placeholder> <component> <name>icon</name> <property key="stretch">true</property> </component> <action trigger="set"> parentId: f.parentId; def parentCase = workflowService.findOne(parentId.value[0]) def taskId = useCase.tasks.find { it.transition == "row_for_ordering" }.task def taskRefValue = parentCase.dataSet['childItemForms'].value def caseRefValue = parentCase.dataSet['childItemIds'].value int idxInTaskRef = taskRefValue.indexOf(taskId) if (idxInTaskRef > 0) { Collections.swap(taskRefValue, idxInTaskRef - 1, idxInTaskRef) } else { return } int idxInCaseRef = caseRefValue.indexOf(useCase.stringId) if (idxInCaseRef > 0) { Collections.swap(caseRefValue, idxInCaseRef - 1, idxInCaseRef) } else { return } setData("children_order", parentCase, [ "childItemForms" : [ "value" : taskRefValue, "type" : "taskRef" ], "childItemIds" : [ "value" : caseRefValue, "type" : "caseRef" ] ]) </action> </data> <!-- I18NS --> <i18n locale="sk"> <i18nString name="icon_preview">Náhľad ikony</i18nString> <i18nString name="icon_identifier">Identifikátor ikony</i18nString> <i18nString name="icon_identifier_desc">Identifikátor Material ikony. Zoznam ikon s identifikátormi je dostupný online.</i18nString> <i18nString name="allow_roles">Pridaj k povoleným roliam</i18nString> <i18nString name="remove_from_allowed_roles">Odstráň z povolených rolí</i18nString> <i18nString name="ban_roles">Pridaj k zakázaným roliam</i18nString> <i18nString name="remove_from_banned_roles">Odstráň zo zakázaných rolí</i18nString> <i18nString name="available_processes">Vaše procesy</i18nString> <i18nString name="available_processes_desc">Vyberte proces obsahujúci roly ktoré chcete pridať do zoznamu povolených alebo zakázaných rolí.</i18nString> <i18nString name="available_roles">Dostupné roly</i18nString> <i18nString name="create_case_button_title">Názov tlačidla "Nová inštancia"</i18nString> <i18nString name="create_case_button_icon">Identifikátor ikony tlačidla "Nová inštancia"</i18nString> <i18nString name="create_case_button_icon_preview">Náhľad ikony</i18nString> <i18nString name="default_headers">Predvolené hlavičky</i18nString> <i18nString name="default_headers_desc">Napríklad: "meta-title,meta-visualId"</i18nString> <i18nString name="filter_autocomplete_selection">Zvoľte nový filter</i18nString> <i18nString name="move_dest_uri">Cieľové URI</i18nString> <i18nString name="duplicate_new_title">Názov duplikovanej položky</i18nString> <i18nString name="duplicate_view_identifier">Identifikátor duplikovanej položky</i18nString> <i18nString name="duplicate_view_identifier_desc">Musí byť jedinečný</i18nString> <i18nString name="name">Názov položky</i18nString> <i18nString name="name_desc">Bude zobrazený v menu</i18nString> <i18nString name="tab_icon">Identifikátor ikony v karte</i18nString> <i18nString name="tab_icon_identifier_desc">Identifikátor Material ikony. Zoznam ikon s identifikátormi je dostupný online.</i18nString> <i18nString name="display_tab_icon">Zobraziť ikonu v karte?</i18nString> <i18nString name="tab_name">Názov položky</i18nString> <i18nString name="tab_name_desc">Bude zobrazený v karte</i18nString> <i18nString name="update_filter">Aktualizovať zobrazenie s vybraným filtrom</i18nString> <i18nString name="use_custom_view">Použiť vlastné zobrazenie?</i18nString> <i18nString name="custom_view_selector">Konfiguračný identifikátor vlastného zobrazenia</i18nString> <i18nString name="custom_view_selector_desc">Napríklad: "demo-tabbed-views"</i18nString> <i18nString name="case_view_search_type">Typ vyhľadávania prípadov</i18nString> <i18nString name="hidden">Skryté</i18nString> <i18nString name="fulltext">Fulltext</i18nString> <i18nString name="fulltext_advanced">Fulltext a rozšírené</i18nString> <i18nString name="case_require_title_in_creation">Vyžadovať názov inštancii pri vytváraní?</i18nString> <i18nString name="case_banned_nets_in_creation">Zakázané siete pri vytváraní</i18nString> <i18nString name="case_banned_nets_in_creation_desc">Uveďte identifikátory procesov oddelené čiarkou. Napríklad: mynet1,mynet2</i18nString> <i18nString name="show_create_case_button">Zobraziť tlačidlo na vytvorenie prípadu?</i18nString> <i18nString name="case_show_more_menu">Zobrazovať menu pre prípadovú položku?</i18nString> <i18nString name="sort">Zoraďovanie</i18nString> <i18nString name="search">Vyhľadávanie</i18nString> <i18nString name="edit">Upravovanie</i18nString> <i18nString name="merge_filters">Zjednotiť filter so základným filtrom?</i18nString> <i18nString name="task_view_search_type">Typ vyhľadávania úloh</i18nString> <i18nString name="headers_mode">Mód hlavičiek</i18nString> <i18nString name="headers_default_mode">Predvolený mód hlavičiek</i18nString> <i18nString name="is_header_mode_changeable">Môže byť mód hlavičiek zmenený?</i18nString> <i18nString name="allow_header_table_mode">Povoliť tabuľkový mód pre hlavičky?</i18nString> <i18nString name="use_default_headers">Použiť vlastné predvolené hlavičky?</i18nString> <i18nString name="task_default_headers">Predvolené hlavičky</i18nString> <i18nString name="task_default_headers_desc">Napríklad: "meta-title,meta-user"</i18nString> <i18nString name="task_show_more_menu">Zobrazovať menu pre úlohovú položku?</i18nString> <i18nString name="item_settings">Nastavenie položky</i18nString> <i18nString name="roles_management_title">Roly</i18nString> <i18nString name="filter_update_title">Filter</i18nString> <i18nString name="move_item">Presunúť položku</i18nString> <i18nString name="move_item_finish">Presunúť</i18nString> <i18nString name="duplicate_item">Duplikovať položku</i18nString> <i18nString name="duplicate_item_finish">Duplikovať</i18nString> <i18nString name="additional_filter_update">Dodatočný filter</i18nString> <i18nString name="filter_header">Súčasný filter</i18nString> <i18nString name="case_view_header">Zobrazenie prípadov</i18nString> <i18nString name="task_view_header">Zobrazenie úloh</i18nString> <i18nString name="roles_allowed">Povolené roly</i18nString> <i18nString name="roles_allowed_desc">Zoznam povolených rolí, ktoré môžu zobraziť túto položku</i18nString> <i18nString name="roles_banned">Zakázané roly</i18nString> <i18nString name="roles_banned_desc">Zoznam zakázaných rolí, ktoré nemôžu zobraziť túto položku</i18nString> <i18nString name="item_settings_general">Všeobecné</i18nString> <i18nString name="menu_item_identifier">Identifikátor položky</i18nString> <i18nString name="remove_additional_filter">Odstrániť dodatočný filter</i18nString> <i18nString name="nodePath">URI položky</i18nString> <i18nString name="move_dest_uri_new_node">Nový uzol</i18nString> <i18nString name="move_dest_uri_new_node_desc">Uveďte názov uzlu, ktorý chcete pridať</i18nString> <i18nString name="move_dest_uri_desc">Zoznam uzlov reprezentujúce cieľovú URI</i18nString> <i18nString name="move_add_node">Pridať</i18nString> </i18n> <i18n locale="de"> <i18nString name="icon_preview">Ikonevorschau</i18nString> <i18nString name="icon_identifier">Ikone ID</i18nString> <i18nString name="icon_identifier_desc">Material Ikone ID. Liste den Ikonen mit IDs ist online verfügbar.</i18nString> <i18nString name="allow_roles">Zu zulässigen Rollen hinzufügen</i18nString> <i18nString name="remove_from_allowed_roles">Aus zulässigen Rollen entfernen</i18nString> <i18nString name="ban_roles">Zu verbotenen Rollen hinzufügen</i18nString> <i18nString name="remove_from_banned_roles">Aus verbotenen Rollen entfernen</i18nString> <i18nString name="available_processes">Ihre Prozesse</i18nString> <i18nString name="available_processes_desc">Wählen Sie einen Prozess mit Rollen aus, die Sie zu Listen mit zulässigen oder verbotenen Rollen hinzufügen möchten.</i18nString> <i18nString name="available_roles">Verfügbare Rollen</i18nString> <i18nString name="create_case_button_title">Schaltflächentitel "Neuer Fall"</i18nString> <i18nString name="create_case_button_icon">Ikone ID</i18nString> <i18nString name="create_case_button_icon_preview">Ikonevorschau</i18nString> <i18nString name="default_headers">Anzuzeigende Attributmenge auswählen</i18nString> <i18nString name="filter_autocomplete_selection">Neue Filter auswählen</i18nString> <i18nString name="default_headers_desc">Beispiel: "meta-title,meta-visualId"</i18nString> <i18nString name="tab_icon_identifier_desc">Material Ikone ID. Liste den Ikonen mit IDs ist online verfügbar.</i18nString> <i18nString name="custom_view_selector_desc">Beispiel: "demo-tabbed-views"</i18nString> <i18nString name="hidden">Versteckt</i18nString> <i18nString name="fulltext">Einfacher Suchmodus</i18nString> <i18nString name="sort">Sortieren</i18nString> <i18nString name="search">Suchen</i18nString> <i18nString name="edit">Bearbeiten</i18nString> <i18nString name="headers_mode">Kopfzeilenmodus</i18nString> <i18nString name="headers_default_mode">Standardkopfzeilenmodus</i18nString> <i18nString name="is_header_mode_changeable">Erlaube Änderung des Kopfzeilenmodus?</i18nString> <i18nString name="allow_header_table_mode">Erlaube Tabellenmodus?</i18nString> <i18nString name="use_default_headers">Eigene Kopfzeilen verwenden?</i18nString> <i18nString name="task_default_headers">Anzuzeigende Attributmenge auswählen</i18nString> <i18nString name="task_default_headers_desc">Beispiel: "meta-title,meta-user"</i18nString> <i18nString name="roles_management_title">Rollen</i18nString> <i18nString name="filter_update_title">Filter</i18nString> <i18nString name="additional_filter_update">Zusätzlicher Filter</i18nString> <i18nString name="filter_header">Aktueller Filter</i18nString> <i18nString name="roles_allowed">Zulässige Rollen</i18nString> <i18nString name="item_settings_general">Allgemein</i18nString> <i18nString name="menu_item_identifier">Identifikationsnummer des Menüeintrages</i18nString> <i18nString name="remove_additional_filter">Zusatzfilter entfernen</i18nString> <i18nString name="nodePath">Menüeintrag-URI</i18nString> <i18nString name="move_dest_uri_new_node">Neuer Knoten</i18nString> <i18nString name="move_add_node">Hinzufügen</i18nString> <i18nString name="move_dest_uri">Ziel URI</i18nString> <i18nString name="duplicate_new_title">Titel der kopierten Ansicht</i18nString> <i18nString name="duplicate_view_identifier">Identifikator der kopierten Ansicht</i18nString> <i18nString name="duplicate_view_identifier_desc">Muss einzigartig sein</i18nString> <i18nString name="name">Titel des Eintrages</i18nString> <i18nString name="name_desc">Wird im Menü angezeigt</i18nString> <i18nString name="tab_icon">Ikonen Identifikator der Registerkarte</i18nString> <i18nString name="display_tab_icon">Zeige die Registerkarte Ikone an?</i18nString> <i18nString name="tab_name">Titel der Registerkarte</i18nString> <i18nString name="tab_name_desc">Wird in der Registerkarte angezeigt</i18nString> <i18nString name="update_filter">Aktualisiere die Ansicht mit dem ausgewählten Filter</i18nString> <i18nString name="use_custom_view">Eigener Ansicht anwenden?</i18nString> <i18nString name="custom_view_selector">Konfigurationsidentifikator der eigenen Ansicht</i18nString> <i18nString name="case_view_search_type">Suchmodus im Fallansicht</i18nString> <i18nString name="fulltext_advanced">Einfacher und erweiterter Suchmodus</i18nString> <i18nString name="case_require_title_in_creation">Erforde den Titel beim erzeugen von Fällen?</i18nString> <i18nString name="case_banned_nets_in_creation">Ausgeschlossene Prozesse</i18nString> <i18nString name="case_banned_nets_in_creation_desc">Trenne die Prozessidentifikatoren mit einer Komma. z.B.: netz1,netz2</i18nString> <i18nString name="show_create_case_button">Schaltfläche „Fall erstellen“ anzeigen?</i18nString> <i18nString name="case_show_more_menu">"Erweiterte Optionen" Taste bei einzelnen Fällen anzeigen</i18nString> <i18nString name="merge_filters">Mit dem Basisfilter kombinieren?</i18nString> <i18nString name="task_view_search_type">Suchmodus im Aufgabenansicht</i18nString> <i18nString name="task_show_more_menu">"Erweiterte Optionen" Taste bei einzelnen Aufgaben anzeigen</i18nString> <i18nString name="item_settings">Menüeintrageinstellungen</i18nString> <i18nString name="move_item">Menüeintrag verschieben</i18nString> <i18nString name="move_item_finish">verschieben</i18nString> <i18nString name="duplicate_item">Menüeintrag duplizieren</i18nString> <i18nString name="duplicate_item_finish">duplizieren</i18nString> <i18nString name="case_view_header">Fallansicht</i18nString> <i18nString name="task_view_header">Aufgabenansicht</i18nString> <i18nString name="roles_allowed_desc">Rollen mit Zugriff auf diesen Menüeintrag</i18nString> <i18nString name="roles_banned">Verbotene Rollen</i18nString> <i18nString name="roles_banned_desc">Rollen, für die wird den Menüeintrag ausgeblendet</i18nString> <i18nString name="move_dest_uri_new_node_desc">Nächste URI-Teil angeben</i18nString> <i18nString name="move_dest_uri_desc">Teile der Ziel URI</i18nString> </i18n> <!-- TRANSITIONS --> <transition> <id>initialize</id> <x>340</x> <y>220</y> <label>initialize [await sync]</label> <icon>hourglass_empty</icon> <roleRef> <id>admin</id> <logic> <perform>true</perform> <view>true</view> <cancel>true</cancel> <assign>true</assign> </logic> </roleRef> <dataGroup> <id>view</id> <dataRef> <id>filter_case</id> <logic> <behavior>forbidden</behavior> <action trigger="set"> filterCaseRef: f.filter_case, menu_name: f.menu_name; if (filterCaseRef.value == null || filterCaseRef.value == []) { return } def filterCase = findCase({it._id.eq(filterCaseRef.value[0])}) if (!menu_name.value) { change menu_name value {return filterCase.dataSet["i18n_filter_name"].value} } </action> </logic> </dataRef> </dataGroup> </transition> <transition> <id>item_settings</id> <x>460</x> <y>100</y> <label name="item_settings">Item settings</label> <icon>settings</icon> <assignPolicy>auto</assignPolicy> <roleRef> <id>admin</id> <logic> <perform>true</perform> <view>true</view> <cancel>true</cancel> <assign>true</assign> </logic> </roleRef> <dataGroup> <id>pre_general</id> <cols>4</cols> <layout>grid</layout> <dataRef> <id>menu_item_identifier</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>2</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>nodePath</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>2</x> <y>0</y> <rows>1</rows> <cols>2</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> <dataGroup> <id>general_0</id> <cols>4</cols> <layout>grid</layout> <title name="item_settings_general">General</title> <dataRef> <id>menu_name</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>2</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>menu_icon</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>2</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>menu_icon_preview</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>3</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> <dataRef> <id>tab_name</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>use_tab_icon</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>1</x> <y>1</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> </layout> <event type="set"> <id>0</id> <actions phase="post"> <action> trans: t.this, iconPreview: f.tab_icon_preview, icon: f.tab_icon, useIcon: f.use_tab_icon; make iconPreview,visible on trans when { useIcon.value } make icon,editable on trans when { useIcon.value } make iconPreview,hidden on trans when { !useIcon.value } make icon,hidden on trans when { !useIcon.value } </action> </actions> </event> </dataRef> <dataRef> <id>tab_icon</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>2</x> <y>1</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>tab_icon_preview</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>3</x> <y>1</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> <dataRef> <id>use_custom_view</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>0</x> <y>2</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> <event type="set"> <id>0</id> <actions phase="post"> <action> trans: t.this, caseHeader: f.case_view_header, caseTaskRef: f.case_view_settings_taskRef, taskHeader: f.task_view_header, taskTaskRef: f.task_view_settings_taskRef, useTabIcon: f.use_tab_icon, tabIconPreview: f.tab_icon_preview, tabName: f.tab_name, tabIcon: f.tab_icon, filterSelection: f.filter_autocomplete_selection, updateFilter: f.update_filter, selectedFilterPreview: f.selected_filter_preview, currentFilterHeader: f.filter_header, currentFilterPreview: f.current_filter_preview, use: f.use_custom_view, selector: f.custom_view_selector; make selector,editable on trans when { use.value } make selector,visible on trans when { !use.value } make caseHeader,visible on trans when { !use.value } make caseHeader,hidden on trans when { use.value } make caseTaskRef,editable on trans when { !use.value } make caseTaskRef,hidden on trans when { use.value } make taskHeader,visible on trans when { !use.value } make taskHeader,hidden on trans when { use.value } make taskTaskRef,editable on trans when { !use.value } make taskTaskRef,hidden on trans when { use.value } make useTabIcon,editable on trans when { !use.value } make useTabIcon,hidden on trans when { use.value } make tabIconPreview,visible on trans when { !use.value } make tabIconPreview,hidden on trans when { use.value } make tabName,editable on trans when { !use.value } make tabName,hidden on trans when { use.value } make tabIcon,editable on trans when { !use.value } make tabIcon,hidden on trans when { use.value } make filterSelection,editable on trans when { !use.value } make filterSelection,hidden on trans when { use.value } make updateFilter,visible on trans when { !use.value } make updateFilter,hidden on trans when { use.value } make selectedFilterPreview,visible on trans when { !use.value } make selectedFilterPreview,hidden on trans when { use.value } make currentFilterHeader,visible on trans when { !use.value } make currentFilterHeader,hidden on trans when { use.value } make currentFilterPreview,visible on trans when { !use.value } make currentFilterPreview,hidden on trans when { use.value } </action> </actions> </event> </dataRef> <dataRef> <id>custom_view_selector</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>1</x> <y>2</y> <rows>1</rows> <cols>3</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> <dataGroup> <id>roles_management</id> <cols>5</cols> <layout>grid</layout> <title name="roles_management_title">Roles</title> <dataRef> <id>processes_available</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>2</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>roles_available</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>1</x> <y>0</y> <rows>2</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>add_allowed_roles</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>2</x> <y>0</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> </layout> </dataRef> <dataRef> <id>allowed_roles</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>3</x> <y>0</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>remove_allowed_roles</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>4</x> <y>0</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> </layout> </dataRef> <dataRef> <id>add_banned_roles</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>2</x> <y>1</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> </layout> </dataRef> <dataRef> <id>banned_roles</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>3</x> <y>1</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>remove_banned_roles</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>4</x> <y>1</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> </layout> </dataRef> </dataGroup> <dataGroup> <id>filter_update</id> <cols>4</cols> <layout>grid</layout> <title name="filter_update_title">Filter</title> <dataRef> <id>filter_autocomplete_selection</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>3</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>update_filter</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>3</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> <dataRef> <id>selected_filter_preview</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> </dataGroup> <dataGroup> <id>current_filter</id> <cols>4</cols> <layout>grid</layout> <dataRef> <id>filter_header</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>current_filter_preview</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> </dataGroup> <dataGroup> <id>case_view_settings_dataGroup</id> <cols>4</cols> <layout>grid</layout> <dataRef> <id>case_view_header</id> <logic> <behavior>hidden</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>case_view_settings_taskRef</id> <logic> <behavior>hidden</behavior> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> <dataGroup> <id>task_view_settings_dataGroup</id> <cols>4</cols> <layout>grid</layout> <dataRef> <id>task_view_header</id> <logic> <behavior>hidden</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>task_view_settings_taskRef</id> <logic> <behavior>hidden</behavior> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> </transition> <transition> <id>move_item</id> <x>580</x> <y>100</y> <label name="move_item">Move item</label> <icon>move_down</icon> <assignPolicy>auto</assignPolicy> <roleRef> <id>admin</id> <logic> <perform>true</perform> <view>true</view> <cancel>true</cancel> <assign>true</assign> </logic> </roleRef> <dataGroup> <id>move</id> <cols>4</cols> <layout>grid</layout> <dataRef> <id>move_dest_uri</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>2</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>move_dest_uri_new_node</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>2</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>move_add_node</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>3</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> <event type="finish"> <id>finish</id> <actions phase="pre"> <action> dest: f.move_dest_uri; if (dest.value == null || dest.value == []) { throw new IllegalArgumentException("URI must not be empty!") } String newUri = dest.value.join("/") newUri = newUri.replace("//","/") changeMenuItem useCase uri { newUri } </action> </actions> <title name="move_item_finish">Move</title> </event> </transition> <transition> <id>duplicate_item</id> <x>580</x> <y>340</y> <label name="duplicate_item">Duplicate item</label> <icon>content_copy</icon> <assignPolicy>auto</assignPolicy> <roleRef> <id>admin</id> <logic> <perform>true</perform> <view>true</view> <cancel>true</cancel> <assign>true</assign> </logic> </roleRef> <dataGroup> <id>duplicate</id> <cols>4</cols> <layout>grid</layout> <dataRef> <id>duplicate_new_title</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>duplicate_view_identifier</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> <event type="finish"> <id>finish</id> <actions phase="pre"> <action> identifier: f.duplicate_view_identifier, title: f.duplicate_new_title; duplicateMenuItem(useCase, title.value, identifier.value) </action> </actions> <title name="duplicate_item_finish">Duplicate</title> </event> </transition> <transition> <id>change_filter</id> <x>460</x> <y>340</y> <label>[Change filter]</label> <roleRef> <id>system</id> <logic> <perform>true</perform> </logic> </roleRef> <dataRef> <id>new_filter_id</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <event type="set"> <id>set_event_0</id> <actions phase="post"> <action> new_filter_id: f.new_filter_id, filterTaskRef: f.current_filter_preview, filterCaseRef: f.filter_case; change filterCaseRef value { [new_filter_id.value] } def filterCase = findCase({it._id.eq(filterCaseRef.value[0])}) change filterTaskRef value {return [findTask({it.caseId.eq(filterCase.stringId).and(it.transitionId.eq("view_filter"))}).stringId]} </action> </actions> </event> </dataRef> </transition> <transition> <id>case_view_settings</id> <x>340</x> <y>100</y> <label>Case view settings [referenced]</label> <roleRef> <id>system</id> <logic> <perform>true</perform> </logic> </roleRef> <dataGroup> <id>case_view_dataGroup</id> <cols>4</cols> <layout>grid</layout> <dataRef> <id>case_view_search_type</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>2</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>show_create_case_button</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>2</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>case_show_more_menu</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>3</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>create_case_button_title</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>create_case_button_icon</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>1</x> <y>1</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>create_case_button_icon_preview</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>2</x> <y>1</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> <dataRef> <id>case_require_title_in_creation</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>3</x> <y>1</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> <dataRef> <id>case_banned_nets_in_creation</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>0</x> <y>2</y> <rows>1</rows> <cols>4</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> <dataGroup> <id>case_view_headers</id> <cols>5</cols> <layout>grid</layout> <dataRef> <id>case_is_header_mode_changeable</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> <action trigger="set"> trans: t.this, isChangeable: f.case_is_header_mode_changeable, mode: f.case_headers_mode, defaultMode: f.case_headers_default_mode; make mode,editable on trans when { isChangeable.value } make mode,required on trans when { isChangeable.value } make defaultMode,editable on trans when { isChangeable.value } make defaultMode,required on trans when { isChangeable.value } make mode,hidden on trans when { !isChangeable.value } make mode,optional on trans when { !isChangeable.value } make defaultMode,hidden on trans when { !isChangeable.value } make defaultMode,optional on trans when { !isChangeable.value } </action> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>case_allow_header_table_mode</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>1</x> <y>0</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>case_headers_mode</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>2</x> <y>0</y> <rows>1</rows> <cols>2</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>case_headers_default_mode</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>4</x> <y>0</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>use_case_default_headers</id> <logic> <behavior>editable</behavior> <action trigger="set"> trans: t.this, use: f.use_case_default_headers, headers: f.case_default_headers; make headers,editable on trans when { use.value } make headers,visible on trans when { !use.value } </action> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>case_default_headers</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>1</x> <y>1</y> <rows>1</rows> <cols>4</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> </transition> <transition> <id>task_view_settings</id> <x>340</x> <y>340</y> <label>Task view settings [referenced]</label> <roleRef> <id>system</id> <logic> <perform>true</perform> </logic> </roleRef> <dataGroup> <id>task_view_dataGroup</id> <cols>4</cols> <layout>grid</layout> <dataRef> <id>task_view_search_type</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>3</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>task_show_more_menu</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>3</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> <dataGroup> <id>task_view_headers</id> <cols>5</cols> <layout>grid</layout> <dataRef> <id>task_is_header_mode_changeable</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> <action trigger="set"> trans: t.this, isChangeable: f.task_is_header_mode_changeable, mode: f.task_headers_mode, defaultMode: f.task_headers_default_mode; make mode,editable on trans when { isChangeable.value } make mode,required on trans when { isChangeable.value } make defaultMode,editable on trans when { isChangeable.value } make defaultMode,required on trans when { isChangeable.value } make mode,hidden on trans when { !isChangeable.value } make mode,optional on trans when { !isChangeable.value } make defaultMode,hidden on trans when { !isChangeable.value } make defaultMode,optional on trans when { !isChangeable.value } </action> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>task_allow_header_table_mode</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>1</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>task_headers_mode</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>2</x> <y>0</y> <rows>1</rows> <cols>2</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>task_headers_default_mode</id> <logic> <behavior>editable</behavior> <behavior>required</behavior> </logic> <layout> <x>4</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>use_task_default_headers</id> <logic> <behavior>editable</behavior> <action trigger="set"> trans: t.this, use: f.use_task_default_headers, headers: f.task_default_headers; make headers,editable on trans when { use.value } make headers,visible on trans when { !use.value } </action> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>1</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>task_default_headers</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>1</x> <y>1</y> <rows>1</rows> <cols>4</cols> <offset>0</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> <dataGroup> <id>additional_filter_update</id> <cols>4</cols> <layout>grid</layout> <title name="additional_filter_update">Additional filter</title> <dataRef> <id>additional_filter_autocomplete_selection</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>3</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>update_additional_filter</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>3</x> <y>0</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> <dataRef> <id>selected_additional_filter_preview</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> </dataGroup> <dataGroup> <id>current_additional_filter</id> <cols>4</cols> <layout>grid</layout> <dataRef> <id>filter_header</id> <logic> <behavior>hidden</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>current_additional_filter_preview</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>0</x> <y>1</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> <dataRef> <id>merge_filters</id> <logic> <behavior>hidden</behavior> </logic> <layout> <x>0</x> <y>2</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> <dataRef> <id>remove_additional_filter</id> <logic> <behavior>hidden</behavior> </logic> <layout> <x>1</x> <y>2</y> <rows>1</rows> <cols>1</cols> <template>material</template> <appearance>standard</appearance> </layout> </dataRef> </dataGroup> </transition> <transition> <id>children_order</id> <x>580</x> <y>220</y> <label>Manage item order</label> <icon>low_priority</icon> <assignPolicy>auto</assignPolicy> <roleRef> <id>admin</id> <logic> <perform>true</perform> <view>true</view> <cancel>true</cancel> <assign>true</assign> </logic> </roleRef> <dataGroup> <id>children_order_0</id> <cols>4</cols> <layout>grid</layout> <dataRef> <id>childItemForms</id> <logic> <behavior>editable</behavior> <action trigger="get"> forms: f.childItemForms, ids: f.childItemIds; def orderedTaskIds = ids.value?.collect { id -> workflowService.findOne(id).tasks.find { it.transition == "row_for_ordering" }.task } change forms value { orderedTaskIds } </action> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>4</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> </transition> <transition> <id>row_for_ordering</id> <x>741</x> <y>219</y> <label>Row for ordering [referenced]</label> <roleRef> <id>system</id> <logic> <perform>true</perform> <view>true</view> <cancel>true</cancel> <assign>true</assign> </logic> </roleRef> <dataGroup> <id>row_for_ordering_0</id> <cols>6</cols> <layout>grid</layout> <dataRef> <id>menu_item_identifier</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>0</x> <y>0</y> <rows>1</rows> <cols>2</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>menu_name_as_visible</id> <logic> <behavior>visible</behavior> </logic> <layout> <x>2</x> <y>0</y> <rows>1</rows> <cols>2</cols> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>order_down</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>4</x> <y>0</y> <rows>1</rows> <cols>1</cols> <offset>1</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> <dataRef> <id>order_up</id> <logic> <behavior>editable</behavior> </logic> <layout> <x>5</x> <y>0</y> <rows>1</rows> <cols>1</cols> <offset>1</offset> <template>material</template> <appearance>outline</appearance> </layout> </dataRef> </dataGroup> <event type="finish"> <id>finish</id> <title></title> </event> <event type="delegate"> <id>delegate</id> <title></title> </event> </transition> <!-- PLACES--> <place> <id>uninitialized</id> <x>220</x> <y>220</y> <label>uninitialized</label> <tokens>1</tokens> <static>false</static> </place> <place> <id>initialized</id> <x>460</x> <y>220</y> <label>initialized</label> <tokens>0</tokens> <static>false</static> </place> <!-- ARCS--> <arc> <id>a1</id> <type>regular</type> <sourceId>uninitialized</sourceId> <destinationId>initialize</destinationId> <multiplicity>1</multiplicity> </arc> <arc> <id>a7</id> <type>read</type> <sourceId>initialized</sourceId> <destinationId>item_settings</destinationId> <multiplicity>1</multiplicity> </arc> <arc> <id>a8</id> <type>regular</type> <sourceId>initialize</sourceId> <destinationId>initialized</destinationId> <multiplicity>1</multiplicity> </arc> <arc> <id>a9</id> <type>read</type> <sourceId>initialized</sourceId> <destinationId>move_item</destinationId> <multiplicity>1</multiplicity> </arc> <arc> <id>a10</id> <type>read</type> <sourceId>initialized</sourceId> <destinationId>duplicate_item</destinationId> <multiplicity>1</multiplicity> </arc> <arc> <id>a12</id> <type>read</type> <sourceId>initialized</sourceId> <destinationId>change_filter</destinationId> <multiplicity>1</multiplicity> </arc> <arc> <id>a13</id> <type>read</type> <sourceId>initialized</sourceId> <destinationId>children_order</destinationId> <multiplicity>1</multiplicity> </arc> </document>
© 2015 - 2025 Weber Informatics LLC | Privacy Policy