Merge pull request #18612 from nextcloud/bugfix/flow-style
Workflow validity checks
This commit is contained in:
commit
dbbe687456
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -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',
|
||||
|
|
|
@ -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)
|
||||
},
|
||||
|
|
|
@ -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
|
||||
}
|
||||
},
|
||||
},
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
*
|
||||
*/
|
||||
|
||||
import '@babel/polyfill'
|
||||
|
||||
import Vue from 'vue'
|
||||
import Vuex from 'vuex'
|
||||
import store from './store'
|
||||
|
|
Loading…
Reference in New Issue