Former-commit-id: 457692b979f7f76a07de1e17f47729b3ff1df1ec
Former-commit-id: 5df39f3689b4c81195d8d45361528a874b5c5119
TSXN
wanggang 5 years ago
parent fe3a564606
commit 7cb666c5b5

@ -0,0 +1,2 @@
Vue.prototype.valid2 = function () {
}

@ -22,10 +22,10 @@
<component :is="getDisplayComponent(key)" :title="value.title" :name="key" :value="data.model[key]" :data="data.data" v-if="data.model" /> <component :is="getDisplayComponent(key)" :title="value.title" :name="key" :value="data.model[key]" :data="data.data" v-if="data.model" />
</template> </template>
<template v-else> <template v-else>
<component :is="getEditComponent(key)" mode="'edit'" :title="value.title" :name="key" :value.sync="data.model[key]" @change="change" :data="data.data" /> <component :is="getEditComponent(key)" mode="edit" :title="value.title" :name="key" :value.sync="data.model[key]" :data="data.data" :nullable="value.nullable" @change="change" />
</template> </template>
<div style="height:1em;"> <div style="height:1em;">
<span v-if="hasErrors(key)" class="field-validation-error text-danger">{{getErrors(key)}}</span> <span v-if="hasErrors(key)" class="field-validation-error text-danger">{{getErrorList(key)}}</span>
<span v-else class="text-danger field-validation-valid"></span> <span v-else class="text-danger field-validation-valid"></span>
</div> </div>
</div> </div>
@ -90,10 +90,21 @@
vm.data = response.data; vm.data = response.data;
}); });
}, },
getSchema: function () {
return this.data.schema;
},
getModel: function () {
return this.data.model;
},
getErrors: function () {
return this.data.errors;
},
change: function (name) { change: function (name) {
var vm = this; var vm = this;
var value = this.data.model[name]; var schema = this.getSchema();
var property = this.data.schema.properties[name]; var model = this.getModel();
var property = schema.properties[name];
var value = model[name];
var list = []; var list = [];
list.push( list.push(
this.validInternal(property.required, name, o => Promise.resolve(value !== undefined && value !== null)) this.validInternal(property.required, name, o => Promise.resolve(value !== undefined && value !== null))
@ -156,8 +167,9 @@
}, },
valid: function () { valid: function () {
var vm = this; var vm = this;
var schema = this.getSchema();
var list = []; var list = [];
_.forIn(this.data.schema.properties, function (value, key) { _.forIn(schema.properties, function (value, key) {
list.push(vm.change(key)); list.push(vm.change(key));
}); });
return Promise.all(list); return Promise.all(list);
@ -167,33 +179,19 @@
var vm = this; var vm = this;
message = message || validator.message; message = message || validator.message;
return valid().then(function (value) { return valid().then(function (value) {
var error = Enumerable.from(vm.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase());
if (value) { if (value) {
vm.removeError(name, message);
}
else {
vm.updateError(name, message);
}
});
}
return Promise.resolve('');
},
camelCased: function (name) {
return name[0].toLowerCase() + name.substr(1);
},
removeError: function (name, message) {
var error = Enumerable.from(this.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase());
if (error) { if (error) {
if (Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) { if (Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) {
error.value.errors = Enumerable.from(error.value.errors).where(o => o.errorMessage !== message).toArray(); error.value.errors = Enumerable.from(error.value.errors).where(o => o.errorMessage !== message).toArray();
} }
if (error.value.errors.length === 0) { if (error.value.errors.length === 0) {
var index = _.findIndex(this.data.errors, o => o.key.toLowerCase() === name.toLowerCase()); var index = _.findIndex(vm.data.errors, o => o.key.toLowerCase() === name.toLowerCase());
this.data.errors.splice(index, 1); vm.getErrors().splice(index, 1);
} }
} }
}, }
updateError: function (name, message) { else {
var error = Enumerable.from(this.data.errors).firstOrDefault(o => o.key.toLowerCase() === name.toLowerCase());
if (!error) { if (!error) {
error = { error = {
key: name, key: name,
@ -201,16 +199,23 @@
errors: [{ errorMessage: message }] errors: [{ errorMessage: message }]
} }
}; };
this.data.errors.push(error); vm.data.errors.push(error);
} }
else { else {
if (!Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) { if (!Enumerable.from(error.value.errors).any(o => o.errorMessage === message)) {
error.value.errors.push({ errorMessage: message }); error.value.errors.push({ errorMessage: message });
} }
} }
}
});
}
return Promise.resolve('');
},
camelCased: function (name) {
return name[0].toLowerCase() + name.substr(1);
}, },
getValidationSummary: function (excludePropertyErrors) { getValidationSummary: function (excludePropertyErrors) {
var query = Enumerable.from(this.data.errors); var query = Enumerable.from(this.getErrors());
if (excludePropertyErrors) { if (excludePropertyErrors) {
query = query.where(o => o.key === '') query = query.where(o => o.key === '')
} }
@ -218,11 +223,11 @@
}, },
hasErrors: function (key) { hasErrors: function (key) {
key = key.toLowerCase(); key = key.toLowerCase();
return Enumerable.from(this.data.errors).any(o => o.key.toLowerCase() === key); return Enumerable.from(this.getErrors()).any(o => o.key.toLowerCase() === key);
}, },
getErrors: function (key) { getErrorList: function (key) {
key = key.toLowerCase(); key = key.toLowerCase();
return Enumerable.from(this.data.errors) return Enumerable.from(this.getErrors())
.where(o => o.key.toLowerCase() === key).selectMany(o => o.value.errors).select(o => o.errorMessage).toArray().join(','); .where(o => o.key.toLowerCase() === key).selectMany(o => o.value.errors).select(o => o.errorMessage).toArray().join(',');
}, },
hasPermission: function () { hasPermission: function () {

Loading…
Cancel
Save