Merge pull request #18612 from nextcloud/bugfix/flow-style

Workflow validity checks
This commit is contained in:
Roeland Jago Douma 2020-01-02 15:05:23 +01:00 committed by GitHub
commit dbbe687456
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 60 additions and 55 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -62,10 +62,6 @@ class Application extends \OCP\AppFramework\App {
class_exists(Template::class, true);
}
style(self::APP_ID, [
'admin',
]);
script('core', [
'files/fileinfo',
'files/client',

View File

@ -25,7 +25,7 @@
class="option"
@input="updateCheck"
@valid="(valid=true) && validate()"
@invalid="(valid=false) && validate()" />
@invalid="!(valid=false) && validate()" />
<input v-else
v-model="check.value"
type="text"
@ -111,7 +111,7 @@ export default {
if (this.check.class === null) {
this.$nextTick(() => this.$refs.checkSelector.$el.focus())
}
this.check.invalid = !this.validate()
this.validate()
},
methods: {
showDelete() {
@ -124,7 +124,8 @@ export default {
if (this.currentOption && this.currentOption.validate) {
this.valid = !!this.currentOption.validate(this.check)
}
return this.valid
this.check.invalid = !this.valid
this.$emit('validate', this.valid)
},
updateCheck() {
const matchingOperator = this.operators.findIndex((operator) => this.check.operator === operator.operator)
@ -134,7 +135,7 @@ export default {
this.check.class = this.currentOption.class
this.check.operator = this.currentOperator.operator
this.check.invalid = !this.validate()
this.validate()
this.$emit('update', this.check)
},

View File

@ -50,6 +50,9 @@ export default {
},
}
},
mounted() {
this.validate()
},
methods: {
updateInternalValue(value) {
try {
@ -66,17 +69,23 @@ export default {
}
},
validate() {
return this.newValue.startTime && this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null
this.valid = this.newValue.startTime && this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null
&& this.newValue.endTime && this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null
&& moment.tz.zone(this.newValue.timezone) !== null
if (this.valid) {
this.$emit('valid')
} else {
this.$emit('invalid')
}
return this.valid
},
update() {
if (this.newValue.timezone === null) {
this.newValue.timezone = moment.tz.guess()
}
if (this.validate()) {
const output = `["${this.newValue.startTime} ${this.newValue.timezone}","${this.newValue.endTime} ${this.newValue.timezone}"]`
this.$emit('input', output)
this.valid = true
} else {
this.valid = false
}
},
},

View File

@ -10,6 +10,7 @@
<Check :check="check"
:rule="rule"
@update="updateRule"
@validate="validate"
@remove="removeCheck(check)" />
</p>
<p>
@ -77,7 +78,6 @@ export default {
checks: [],
error: null,
dirty: this.rule.id < 0,
checking: false,
originalRule: null,
}
},
@ -93,7 +93,7 @@ export default {
tooltip: { placement: 'bottom', show: true, content: this.error },
}
}
if (!this.dirty || this.checking) {
if (!this.dirty) {
return { title: t('workflowengine', 'Active'), class: 'icon icon-checkmark' }
}
return { title: t('workflowengine', 'Save'), class: 'icon-confirm-white primary' }
@ -112,22 +112,17 @@ export default {
this.$set(this.rule, 'operation', operation)
await this.updateRule()
},
async updateRule() {
this.checking = true
validate(state) {
this.error = null
this.$store.dispatch('updateRule', this.rule)
},
updateRule() {
if (!this.dirty) {
this.dirty = true
}
try {
// TODO: add new verify endpoint
// let result = await axios.post(OC.generateUrl(`/apps/workflowengine/operations/test`), this.rule)
this.error = null
this.checking = false
this.$store.dispatch('updateRule', this.rule)
} catch (e) {
console.error('Failed to update operation', e)
this.error = e.response.ocs.meta.message
this.checking = false
}
this.error = null
this.$store.dispatch('updateRule', this.rule)
},
async saveRule() {
try {

View File

@ -114,7 +114,9 @@ const store = new Vuex.Store({
context.commit('removeRule', rule)
},
async pushUpdateRule(context, rule) {
await confirmPassword()
if (context.state.scope === 0) {
await confirmPassword()
}
let result
if (rule.id < 0) {
result = await axios.post(getApiUrl(''), rule)

View File

@ -20,6 +20,8 @@
*
*/
import '@babel/polyfill'
import Vue from 'vue'
import Vuex from 'vuex'
import store from './store'