From ad976c66fd9a78e6d90224091634b04a25a08f40 Mon Sep 17 00:00:00 2001 From: Julius Härtl Date: Tue, 6 Aug 2019 17:40:30 +0200 Subject: Unified workflow management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/workflowengine/src/components/Operation.vue | 83 ++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 apps/workflowengine/src/components/Operation.vue (limited to 'apps/workflowengine/src/components/Operation.vue') diff --git a/apps/workflowengine/src/components/Operation.vue b/apps/workflowengine/src/components/Operation.vue new file mode 100644 index 00000000000..f7a8f56cede --- /dev/null +++ b/apps/workflowengine/src/components/Operation.vue @@ -0,0 +1,83 @@ + + + + + \ No newline at end of file -- cgit v1.2.3 From 9f8ccf1036ff18d961949bfb644c9d445caa8a23 Mon Sep 17 00:00:00 2001 From: Julius Härtl Date: Mon, 19 Aug 2019 17:13:33 +0200 Subject: Use entity/event definitions from backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/workflowengine/src/components/Check.vue | 16 +-- apps/workflowengine/src/components/Event.vue | 24 +++- apps/workflowengine/src/components/Operation.vue | 25 ++-- apps/workflowengine/src/components/Rule.vue | 8 +- apps/workflowengine/src/components/Workflow.vue | 21 +-- apps/workflowengine/src/services/Operation.js | 168 ++++++++++++----------- 6 files changed, 141 insertions(+), 121 deletions(-) (limited to 'apps/workflowengine/src/components/Operation.vue') diff --git a/apps/workflowengine/src/components/Check.vue b/apps/workflowengine/src/components/Check.vue index c8c7c46aa87..8cfe5a89020 100644 --- a/apps/workflowengine/src/components/Check.vue +++ b/apps/workflowengine/src/components/Check.vue @@ -15,6 +15,7 @@ \ No newline at end of file + diff --git a/apps/workflowengine/src/services/Operation.js b/apps/workflowengine/src/services/Operation.js index 1de7d2a95ad..a24d97ef226 100644 --- a/apps/workflowengine/src/services/Operation.js +++ b/apps/workflowengine/src/services/Operation.js @@ -1,5 +1,41 @@ import ConvertToPdf from './../components/Operations/ConvertToPdf' import Tag from './../components/Operations/Tag' + +const ALL_CHECKS = [ + 'OCA\\WorkflowEngine\\Check\\FileMimeType', + 'OCA\\WorkflowEngine\\Check\\FileName', + 'OCA\\WorkflowEngine\\Check\\FileSize', + 'OCA\\WorkflowEngine\\Check\\FileSystemTags', + 'OCA\\WorkflowEngine\\Check\\RequestRemoteAddress', + 'OCA\\WorkflowEngine\\Check\\RequestTime', + 'OCA\\WorkflowEngine\\Check\\RequestURL', + 'OCA\\WorkflowEngine\\Check\\RequestUserAgent', + 'OCA\\WorkflowEngine\\Check\\UserGroupMembership' +] + +const Entities = OCP.InitialState.loadState('workflowengine', 'entities').map(entity => { + return { + ...entity, + // TODO: see if we should have this defined in the backend as well + checks: [...ALL_CHECKS] + } +}) + +const Checks = Object.values(OCA.WorkflowEngine.Plugins).map((plugin) => { + if (plugin.component) { + return {...plugin.getCheck(), component: plugin.component} + } + return plugin.getCheck() +}).reduce((obj, item) => { + obj[item.class] = item + return obj +}, {}) + +/** + * Register operations + * TODO: should be provided by the backend + */ + class OperationService { constructor() { @@ -20,92 +56,63 @@ class OperationService { } } - -class EventService { - - constructor() { - this.events = {} - } - registerEvent(event) { - this.events[event.id] = event - } - - getAll() { - return this.events - } - - get(id) { - return this.events[id] - } - -} - const operationService = new OperationService() -const eventService = new EventService() - - -const ALL_CHECKS = [ - 'OCA\\WorkflowEngine\\Check\\FileMimeType', - 'OCA\\WorkflowEngine\\Check\\FileName', - 'OCA\\WorkflowEngine\\Check\\FileSize', - 'OCA\\WorkflowEngine\\Check\\FileSystemTags', - 'OCA\\WorkflowEngine\\Check\\RequestRemoteAddress', - 'OCA\\WorkflowEngine\\Check\\RequestTime', - 'OCA\\WorkflowEngine\\Check\\RequestURL', - 'OCA\\WorkflowEngine\\Check\\RequestUserAgent', - 'OCA\\WorkflowEngine\\Check\\UserGroupMembership' -] - -/** - * TODO: move to separate apps - * TODO: fetch from initial state api - **/ -const EVENT_FILE_ACCESS = 'EVENT_FILE_ACCESS' -const EVENT_FILE_CHANGED = 'EVENT_FILE_CHANGED' -const EVENT_FILE_TAGGED = 'EVENT_FILE_TAGGED' - -eventService.registerEvent({ - id: EVENT_FILE_ACCESS, - name: 'File is accessed', - icon: 'icon-desktop', - checks: ALL_CHECKS, -}) - -eventService.registerEvent({ - id: EVENT_FILE_CHANGED, - name: 'File was updated', - icon: 'icon-folder', - checks: ALL_CHECKS, -}) - - -eventService.registerEvent({ - id: EVENT_FILE_TAGGED, - name: 'File was tagged', - icon: 'icon-tag', - checks: ALL_CHECKS, -}) operationService.registerOperation({ class: 'OCA\\FilesAccessControl\\Operation', title: 'Block access', - description: 'todo', + description: 'Deny access to files when they are accessed', icon: 'icon-block', color: 'var(--color-error)', + entites: [ + 'WorkflowEngine_Entity_File' + ], events: [ - EVENT_FILE_ACCESS + // TODO: this is probably handled differently since there is no regular event for files access control + 'WorkflowEngine_Entity_File::postTouch' ], operation: 'deny' }) +operationService.registerOperation({ + class: 'OCA\\TestExample\\Operation1', + title: 'Rename file', + description: '🚧 For UI mocking only', + icon: 'icon-address-white', + color: 'var(--color-success)', + entites: [], + events: [], + operation: 'deny' +}) +operationService.registerOperation({ + class: 'OCA\\TestExample\\Operation2', + title: 'Notify me', + description: '🚧 For UI mocking only', + icon: 'icon-comment-white', + color: 'var(--color-warning)', + entites: [], + events: [], + operation: 'deny' +}) +operationService.registerOperation({ + class: 'OCA\\TestExample\\Operation3', + title: 'Call a web hook', + description: '🚧 For UI mocking only', + icon: 'icon-category-integration icon-invert', + color: 'var(--color-primary)', + entites: [], + events: [], + operation: 'deny' +}) + operationService.registerOperation({ class: 'OCA\\FilesAutomatedTagging\\Operation', title: 'Tag a file', - description: 'todo', - icon: 'icon-tag', + description: 'Assign a tag to a file', + icon: 'icon-tag-white', events: [ - EVENT_FILE_CHANGED, - EVENT_FILE_TAGGED + 'WorkflowEngine_Entity_File::postWrite', + //'WorkflowEngine_Entity_File::postTagged', ], options: Tag @@ -114,28 +121,23 @@ operationService.registerOperation({ operationService.registerOperation({ class: 'OCA\\WorkflowPDFConverter\\Operation', title: 'Convert to PDF', - description: 'todo', + description: 'Generate a PDF file', color: '#dc5047', icon: 'icon-convert-pdf', events: [ - EVENT_FILE_CHANGED, + 'WorkflowEngine_Entity_File::postWrite', //EVENT_FILE_TAGGED ], options: ConvertToPdf }) +console.debug('[InitialState] Entities', Entities) +console.debug('[WorkflowEngine] Checks', Checks) +console.debug('[WorkflowEngine] Operations', operationService.operations) -const legacyChecks = Object.values(OCA.WorkflowEngine.Plugins).map((plugin) => { - if (plugin.component) { - return {...plugin.getCheck(), component: plugin.component} - } - return plugin.getCheck() -}).reduce((obj, item) => { - obj[item.class] = item - return obj -}, {}) export { - eventService, + Entities, + Checks, operationService -} \ No newline at end of file +} -- cgit v1.2.3 From aa00f401b39c2b63cba7e5e8f6cdec8528466069 Mon Sep 17 00:00:00 2001 From: Julius Härtl Date: Wed, 28 Aug 2019 18:27:37 +0200 Subject: Adjust to new backend URLs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/workflowengine/src/components/Check.vue | 2 +- apps/workflowengine/src/components/Event.vue | 16 ++++++---- apps/workflowengine/src/components/Operation.vue | 6 ++++ apps/workflowengine/src/components/Rule.vue | 38 ++++++++++++++---------- apps/workflowengine/src/components/Workflow.vue | 33 ++++++++++++-------- apps/workflowengine/src/services/Operation.js | 4 +-- 6 files changed, 62 insertions(+), 37 deletions(-) (limited to 'apps/workflowengine/src/components/Operation.vue') diff --git a/apps/workflowengine/src/components/Check.vue b/apps/workflowengine/src/components/Check.vue index 8cfe5a89020..86005dae268 100644 --- a/apps/workflowengine/src/components/Check.vue +++ b/apps/workflowengine/src/components/Check.vue @@ -48,7 +48,7 @@ this.currentOption = Checks[this.check.class] this.currentOperator = this.operators.find((operator) => operator.operator === this.check.operator) this.$nextTick(() => { - this.$refs.checkSelector.$el.focus() + //this.$refs.checkSelector.$el.focus() }) }, computed: { diff --git a/apps/workflowengine/src/components/Event.vue b/apps/workflowengine/src/components/Event.vue index caf5c7631bd..7b39ea571fb 100644 --- a/apps/workflowengine/src/components/Event.vue +++ b/apps/workflowengine/src/components/Event.vue @@ -28,12 +28,15 @@ required: true } }, + mounted() { + this.updateEvent(this.currentEvent) + }, computed: { currentEvent() { - if (typeof this.rule.event === 'undefined') { + if (!this.rule.event) { return this.allEvents.length > 0 ? this.allEvents[0] : null } - return this.allEvents.find(event => event.id === this.rule.event) + return this.allEvents.find(event => event.entity === this.rule.entity && event.event === this.rule.event) }, allEvents() { return this.operation.events.map((entityEventName) => { @@ -45,7 +48,7 @@ return { entity: entityId, id: entityEventName, - event: eventName, + events: eventName, name: Event.displayName, icon: Entity.icon, checks: Entity.checks, @@ -58,8 +61,11 @@ }, methods: { updateEvent(event) { - this.$set(this.rule, 'event', event.id) - this.$emit('update', this.rule) + if (this.rule.entity !== event.entity || this.rule.events !== '["' + event.event + '"]') { + this.$set(this.rule, 'entity', event.entity) + this.$set(this.rule, 'event', event.event) + this.$emit('update', this.rule) + } } } } diff --git a/apps/workflowengine/src/components/Operation.vue b/apps/workflowengine/src/components/Operation.vue index 3e5de3198ca..30f26eb6ec4 100644 --- a/apps/workflowengine/src/components/Operation.vue +++ b/apps/workflowengine/src/components/Operation.vue @@ -71,6 +71,12 @@ } } + .actions__item:not(.colored) { + .icon { + filter: invert(1); + } + } + /* TODO: those should be provided by the backend, remove once ready */ .icon-block { background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8' standalone='no'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' height='32' width='32' version='1.1' viewBox='0 0 32 32'%3E%3Cpath fill='%23fff' d='m10.203 2-8.203 8.203v11.594l8.203 8.203h11.594l8.203-8.203v-11.594l-8.203-8.203h-11.594zm11.097 5.3092 3.345 3.3448-5.346 5.346 5.346 5.346-3.299 3.299-5.346-5.346-5.346 5.346-3.2992-3.299 5.3462-5.346-5.3462-5.346 3.2992-3.2992 5.346 5.3462 5.3-5.3918z'/%3E%3C/svg%3E"); diff --git a/apps/workflowengine/src/components/Rule.vue b/apps/workflowengine/src/components/Rule.vue index 59d66e43091..d1f5a088f51 100644 --- a/apps/workflowengine/src/components/Rule.vue +++ b/apps/workflowengine/src/components/Rule.vue @@ -1,5 +1,5 @@ diff --git a/apps/workflowengine/src/components/Values/SizeValue.vue b/apps/workflowengine/src/components/Values/SizeValue.vue index 03b28f18947..3e59b70453f 100644 --- a/apps/workflowengine/src/components/Values/SizeValue.vue +++ b/apps/workflowengine/src/components/Values/SizeValue.vue @@ -1,6 +1,6 @@ diff --git a/apps/workflowengine/src/services/Operation.js b/apps/workflowengine/src/services/Operation.js index ed996593cb4..58c20d6db14 100644 --- a/apps/workflowengine/src/services/Operation.js +++ b/apps/workflowengine/src/services/Operation.js @@ -1,6 +1,3 @@ -import ConvertToPdf from './../components/Operations/ConvertToPdf' -import Tag from './../components/Operations/Tag' - const ALL_CHECKS = [ 'OCA\\WorkflowEngine\\Check\\FileMimeType', 'OCA\\WorkflowEngine\\Check\\FileName', @@ -13,27 +10,10 @@ const ALL_CHECKS = [ 'OCA\\WorkflowEngine\\Check\\UserGroupMembership' ] -const Operators = OCP.InitialState.loadState('workflowengine', 'operators') - +const Operators = {} /** * Extend operators for testing */ -Operators['OCA\\FilesAccessControl\\Operation'] = { - ...Operators['OCA\\FilesAccessControl\\Operation'], - color: 'var(--color-error)', - entities: [ - 'OCA\\WorkflowEngine\\Entity\\File' - ], - operation: 'deny' -} -Operators['OCA\\WorkflowPDFConverter\\Operation'] = { - id: 'OCA\\WorkflowPDFConverter\\Operation', - name: 'Convert to PDF', - description: 'Generate a PDF file', - color: '#dc5047', - iconClass: 'icon-convert-pdf', - options: ConvertToPdf -} Operators['OCA\\TestExample\\Operation1'] = { id: 'OCA\\TestExample\\Operation1', @@ -51,14 +31,6 @@ Operators['OCA\\TestExample\\Operation2'] = { color: 'var(--color-warning)', operation: 'deny' } -Operators['OCA\\FilesAutomatedTagging\\Operation'] = { - id: 'OCA\\FilesAutomatedTagging\\Operation', - name: 'Tag a file', - description: 'Assign a tag to a file', - iconClass: 'icon-tag-white', - color: 'var(--color-primary)', - options: Tag -} export { Operators, diff --git a/apps/workflowengine/src/store.js b/apps/workflowengine/src/store.js index 34cee256757..b38bef0e6ea 100644 --- a/apps/workflowengine/src/store.js +++ b/apps/workflowengine/src/store.js @@ -24,7 +24,7 @@ import Vue from 'vue' import Vuex from 'vuex' import axios from 'nextcloud-axios' import { getApiUrl } from './helpers/api' -import { ALL_CHECKS, Operators } from './services/Operation' +import { ALL_CHECKS } from './services/Operation' import confirmPassword from 'nextcloud-password-confirmation' Vue.use(Vuex) @@ -33,8 +33,7 @@ const store = new Vuex.Store({ state: { rules: [], scope: OCP.InitialState.loadState('workflowengine', 'scope'), - // TODO: move to backend data - operations: Operators, + operations: OCP.InitialState.loadState('workflowengine', 'operators'), plugins: Vue.observable({ checks: {}, @@ -74,7 +73,10 @@ const store = new Vuex.Store({ Vue.set(state.plugins.checks, plugin.class, plugin) }, addPluginOperator(state, plugin) { - Vue.set(state.plugins.operators, plugin.class, plugin) + plugin = Object.assign( + { color: 'var(--color-primary-element)' }, + plugin, state.operations[plugin.id] || {}) + Vue.set(state.operations, plugin.id, plugin) } }, actions: { @@ -88,7 +90,8 @@ const store = new Vuex.Store({ let entity = null let events = [] if (rule.isComplex === false && rule.fixedEntity === '') { - entity = context.state.entities.find((item) => rule.entities[0] === item.id) + entity = context.state.entities.find((item) => rule.entities && rule.entities[0] === item.id) + entity = entity ? entity : Object.values(context.state.entities)[0] events = [entity.events[0].eventName] } diff --git a/apps/workflowengine/src/workflowengine.js b/apps/workflowengine/src/workflowengine.js index 6e22852b829..cae85c3c24a 100644 --- a/apps/workflowengine/src/workflowengine.js +++ b/apps/workflowengine/src/workflowengine.js @@ -4,6 +4,7 @@ import store from './store' import Settings from './components/Workflow' import FileValues from './components/Values/file' +import {Operators} from './services/Operation'; /** * A plugin for displaying a custom value field for checks @@ -21,7 +22,7 @@ import FileValues from './components/Values/file' * A plugin for extending the admin page repesentation of a operator * * @typedef {Object} OperatorPlugin - * @property {string} class - The PHP class name of the check + * @property {string} id - The PHP class name of the check * @property {string} operation - Default value for the operation field * @property {string} color - Custom color code to be applied for the operator selector * @property {Vue} component - A vue component to handle the rendering of options @@ -40,6 +41,8 @@ import FileValues from './components/Values/file' * Public javascript api for apps to register custom plugins */ window.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, { + + /** * * @param {CheckPlugin} Plugin @@ -58,6 +61,7 @@ window.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, { // Register shipped checks for file entity FileValues.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin)) +Object.values(Operators).forEach((operatorPlugin) => window.OCA.WorkflowEngine.registerOperator(operatorPlugin)) Vue.use(Vuex) Vue.prototype.t = t -- cgit v1.2.3 From 2364fc84d78df931c5fc020f7fd052d980f8a7bb Mon Sep 17 00:00:00 2001 From: Julius Härtl Date: Mon, 2 Sep 2019 12:11:19 +0200 Subject: Make rule listing more compact MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/workflowengine/src/components/Operation.vue | 20 ++++++++++++++++++-- apps/workflowengine/src/components/Rule.vue | 4 ++-- 2 files changed, 20 insertions(+), 4 deletions(-) (limited to 'apps/workflowengine/src/components/Operation.vue') diff --git a/apps/workflowengine/src/components/Operation.vue b/apps/workflowengine/src/components/Operation.vue index 346b28e6b9d..45b0f24223d 100644 --- a/apps/workflowengine/src/components/Operation.vue +++ b/apps/workflowengine/src/components/Operation.vue @@ -1,8 +1,10 @@ @@ -32,7 +34,7 @@ export default { padding: 10px; border-radius: var(--border-radius-large); margin-right: 20px; - margin-bottom: 20px; + margin-bottom: 5px; } .icon { display: block; @@ -44,9 +46,11 @@ export default { margin-bottom: 20px; background-repeat: no-repeat; } + .actions__item__description { + text-align: center; + } h3, small { padding: 6px; - text-align: center; display: block; } h3 { @@ -66,7 +70,19 @@ export default { } .actions__item:not(.colored) { + flex-direction: row; + + .actions__item__description { + padding-top: 5px; + text-align: left; + small { + padding: 0; + } + } .icon { + width: 50px; + margin: 0; + margin-right: 10px; filter: invert(1); } } diff --git a/apps/workflowengine/src/components/Rule.vue b/apps/workflowengine/src/components/Rule.vue index 88129525eb3..d3cf7291af4 100644 --- a/apps/workflowengine/src/components/Rule.vue +++ b/apps/workflowengine/src/components/Rule.vue @@ -155,6 +155,7 @@ export default { transition: 0.5s ease all; display: block; margin: auto; + margin-right: 0; } .status-button.primary { padding-left: 32px; @@ -194,7 +195,7 @@ export default { } } .icon-confirm { - background-position: right center; + background-position: right 27px; padding-right: 20px; margin-right: 20px; } @@ -202,7 +203,6 @@ export default { .trigger p, .action p { display: flex; align-items: center; - margin-bottom: 5px; & > span { min-width: 50px; -- cgit v1.2.3 From 24aec9b9d27378ab19ebe028f46f26bcf0a1b901 Mon Sep 17 00:00:00 2001 From: Julius Härtl Date: Mon, 9 Sep 2019 13:53:03 +0200 Subject: Frontend polishing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- apps/workflowengine/src/components/Check.vue | 4 ++ .../src/components/Checks/RequestTime.vue | 2 +- .../src/components/Checks/request.js | 4 +- apps/workflowengine/src/components/Operation.vue | 17 ++++++-- .../src/components/Operations/ConvertToPdf.vue | 46 ---------------------- .../src/components/Operations/Tag.vue | 31 --------------- apps/workflowengine/src/components/Rule.vue | 10 +++-- apps/workflowengine/src/components/Workflow.vue | 6 +-- apps/workflowengine/src/workflowengine.js | 23 ----------- apps/workflowengine/webpack.js | 12 ------ 10 files changed, 27 insertions(+), 128 deletions(-) delete mode 100644 apps/workflowengine/src/components/Operations/ConvertToPdf.vue delete mode 100644 apps/workflowengine/src/components/Operations/Tag.vue (limited to 'apps/workflowengine/src/components/Operation.vue') diff --git a/apps/workflowengine/src/components/Check.vue b/apps/workflowengine/src/components/Check.vue index 508b8a4a1f4..8f7fbca2865 100644 --- a/apps/workflowengine/src/components/Check.vue +++ b/apps/workflowengine/src/components/Check.vue @@ -138,6 +138,10 @@ export default { margin-top: -5px; margin-bottom: -5px; } + button.action-item.action-item--single.icon-delete { + height: 34px; + width: 34px; + } .invalid { border: 1px solid var(--color-error) !important; } diff --git a/apps/workflowengine/src/components/Checks/RequestTime.vue b/apps/workflowengine/src/components/Checks/RequestTime.vue index 2f09693232a..9ea211874fe 100644 --- a/apps/workflowengine/src/components/Checks/RequestTime.vue +++ b/apps/workflowengine/src/components/Checks/RequestTime.vue @@ -74,7 +74,7 @@ export default { display: flex; flex-grow: 1; flex-wrap: wrap; - max-width: 200px; + max-width: 180px; .multiselect { width: 100%; diff --git a/apps/workflowengine/src/components/Checks/request.js b/apps/workflowengine/src/components/Checks/request.js index d2e4eaa3565..8b36b89a9e8 100644 --- a/apps/workflowengine/src/components/Checks/request.js +++ b/apps/workflowengine/src/components/Checks/request.js @@ -42,7 +42,6 @@ const RequestChecks = [ { operator: 'in', name: t('workflowengine', 'between') }, { operator: '!in', name: t('workflowengine', 'not between') } ], - // TODO: implement component component: RequestTime }, { @@ -54,7 +53,8 @@ const RequestChecks = [ { operator: 'matches', name: t('workflowengine', 'matches') }, { operator: '!matches', name: t('workflowengine', 'does not match') } ], - component: RequestUserAgent + // TODO: implement component + // component: RequestUserAgent }, { class: 'OCA\\WorkflowEngine\\Check\\UserGroupMembership', diff --git a/apps/workflowengine/src/components/Operation.vue b/apps/workflowengine/src/components/Operation.vue index 45b0f24223d..3cd7378f0df 100644 --- a/apps/workflowengine/src/components/Operation.vue +++ b/apps/workflowengine/src/components/Operation.vue @@ -5,7 +5,9 @@

{{ operation.name }}

{{ operation.description }} - +
+ +
@@ -28,13 +30,14 @@ export default { diff --git a/apps/workflowengine/src/components/Operations/ConvertToPdf.vue b/apps/workflowengine/src/components/Operations/ConvertToPdf.vue deleted file mode 100644 index 5fa1676e092..00000000000 --- a/apps/workflowengine/src/components/Operations/ConvertToPdf.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - - - diff --git a/apps/workflowengine/src/components/Operations/Tag.vue b/apps/workflowengine/src/components/Operations/Tag.vue deleted file mode 100644 index 7a27e2b572d..00000000000 --- a/apps/workflowengine/src/components/Operations/Tag.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/apps/workflowengine/src/components/Rule.vue b/apps/workflowengine/src/components/Rule.vue index 82e19dbe82b..c5c6094879a 100644 --- a/apps/workflowengine/src/components/Rule.vue +++ b/apps/workflowengine/src/components/Rule.vue @@ -1,6 +1,5 @@