diff options
author | blizzz <blizzz@arthur-schiwon.de> | 2019-09-10 16:05:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-10 16:05:17 +0200 |
commit | bfec3715eef9878fe8ba0d27087b104c6b2e75dd (patch) | |
tree | 0fcbc976cf0f03b49e3593e483ee828cc24c1fe9 /apps/workflowengine/src/workflowengine.js | |
parent | f889ea83739448bc39aa39cf64c9ddd8548c7701 (diff) | |
parent | 7683208dfa4cf5f0ff196ee0cabdacf8046592eb (diff) | |
download | nextcloud-server-bfec3715eef9878fe8ba0d27087b104c6b2e75dd.tar.gz nextcloud-server-bfec3715eef9878fe8ba0d27087b104c6b2e75dd.zip |
Merge pull request #16706 from nextcloud/workflow-frontend
Workflow frontend overhaul
Diffstat (limited to 'apps/workflowengine/src/workflowengine.js')
-rw-r--r-- | apps/workflowengine/src/workflowengine.js | 82 |
1 files changed, 70 insertions, 12 deletions
diff --git a/apps/workflowengine/src/workflowengine.js b/apps/workflowengine/src/workflowengine.js index 207d2311bcc..2eb8161fc87 100644 --- a/apps/workflowengine/src/workflowengine.js +++ b/apps/workflowengine/src/workflowengine.js @@ -1,12 +1,70 @@ -import './admin' -import './filemimetypeplugin' -import './filenameplugin' -import './filesizeplugin' -import './filesystemtagsplugin' -import './requestremoteaddressplugin' -import './requesttimeplugin' -import './requesturlplugin' -import './requestuseragentplugin' -import './usergroupmembershipplugin' - -window.OCA.WorkflowEngine = OCA.WorkflowEngine +import Vue from 'vue' +import Vuex from 'vuex' +import store from './store' +import Settings from './components/Workflow' +import ShippedChecks from './components/Checks' + +/** + * A plugin for displaying a custom value field for checks + * + * @typedef {Object} CheckPlugin + * @property {string} class - The PHP class name of the check + * @property {Comparison[]} operators - A list of possible comparison operations running on the check + * @property {Vue} component - A vue component to handle the rendering of options + * The component should handle the v-model directive properly, + * so it needs a value property to receive data and emit an input + * event once the data has changed + * @property {callable} placeholder - Return a placeholder of no custom component is used + * @property {callable} validate - validate a check if no custom component is used + **/ + +/** + * A plugin for extending the admin page repesentation of a operator + * + * @typedef {Object} OperatorPlugin + * @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 + * The component should handle the v-model directive properly, + * so it needs a value property to receive data and emit an input + * event once the data has changed + */ + +/** + * @typedef {Object} Comparison + * @property {string} operator - value the comparison should have, e.g. !less, greater + * @property {string} name - Translated readable text, e.g. less or equals + **/ + +/** + * Public javascript api for apps to register custom plugins + */ +window.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, { + + /** + * + * @param {CheckPlugin} Plugin + */ + registerCheck: function (Plugin) { + store.commit('addPluginCheck', Plugin) + }, + /** + * + * @param {OperatorPlugin} Plugin + */ + registerOperator: function (Plugin) { + store.commit('addPluginOperator', Plugin) + } +}) + +// Register shipped checks +ShippedChecks.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin)) + +Vue.use(Vuex) +Vue.prototype.t = t + +const View = Vue.extend(Settings) +new View({ + store +}).$mount('#workflowengine') |