Some styling improvements for errors
This commit is contained in:
parent
e45aa82b4b
commit
8da5ece3b8
|
@ -6,6 +6,12 @@ import { enrichSchemaError, limitErrors } from '../utils/schemaUtils'
|
||||||
import { jsonToData, dataToJson, patchData } from '../jsonData'
|
import { jsonToData, dataToJson, patchData } from '../jsonData'
|
||||||
import ModeButton from './menu/ModeButton'
|
import ModeButton from './menu/ModeButton'
|
||||||
|
|
||||||
|
const AJV_OPTIONS = {
|
||||||
|
allErrors: true,
|
||||||
|
verbose: true,
|
||||||
|
jsonPointers: true
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TextMode
|
* TextMode
|
||||||
*
|
*
|
||||||
|
@ -59,6 +65,7 @@ export default class TextMode extends Component {
|
||||||
|
|
||||||
/** @protected */
|
/** @protected */
|
||||||
renderMenu () {
|
renderMenu () {
|
||||||
|
// TODO: move Menu into a separate Component
|
||||||
return h('div', {class: 'jsoneditor-menu'}, [
|
return h('div', {class: 'jsoneditor-menu'}, [
|
||||||
h('button', {
|
h('button', {
|
||||||
class: 'jsoneditor-format',
|
class: 'jsoneditor-format',
|
||||||
|
@ -86,7 +93,7 @@ export default class TextMode extends Component {
|
||||||
|
|
||||||
/** @protected */
|
/** @protected */
|
||||||
renderSchemaErrors () {
|
renderSchemaErrors () {
|
||||||
// TODO: move the JSON Schema stuff into a separate Component?
|
// TODO: move the JSON Schema stuff into a separate Component
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// TODO: only validate again when json is changed since last validation
|
// TODO: only validate again when json is changed since last validation
|
||||||
|
@ -99,9 +106,13 @@ export default class TextMode extends Component {
|
||||||
const allErrors = this.state.compiledSchema.errors.map(enrichSchemaError)
|
const allErrors = this.state.compiledSchema.errors.map(enrichSchemaError)
|
||||||
const limitedErrors = limitErrors(allErrors)
|
const limitedErrors = limitErrors(allErrors)
|
||||||
|
|
||||||
return h('table', {class: 'jsoneditor-text-errors'},
|
console.log('errors', allErrors)
|
||||||
|
|
||||||
|
return h('div', { class: 'jsoneditor-errors'},
|
||||||
|
h('table', {},
|
||||||
h('tbody', {}, limitedErrors.map(TextMode.renderSchemaError))
|
h('tbody', {}, limitedErrors.map(TextMode.renderSchemaError))
|
||||||
)
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return null
|
return null
|
||||||
|
@ -126,7 +137,7 @@ export default class TextMode extends Component {
|
||||||
static renderSchemaError (error) {
|
static renderSchemaError (error) {
|
||||||
const icon = h('input', {type: 'button', class: 'jsoneditor-schema-error'})
|
const icon = h('input', {type: 'button', class: 'jsoneditor-schema-error'})
|
||||||
|
|
||||||
if (error && error.data && error.schema) {
|
if (error && error.schema && error.schemaPath) {
|
||||||
// this is an ajv error message
|
// this is an ajv error message
|
||||||
return h('tr', {}, [
|
return h('tr', {}, [
|
||||||
h('td', {}, icon),
|
h('td', {}, icon),
|
||||||
|
@ -136,6 +147,7 @@ export default class TextMode extends Component {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// any other error message
|
// any other error message
|
||||||
|
console.log('error???', error)
|
||||||
return h('tr', {},
|
return h('tr', {},
|
||||||
h('td', {}, icon),
|
h('td', {}, icon),
|
||||||
h('td', {colSpan: 2}, h('code', {}, String(error)))
|
h('td', {colSpan: 2}, h('code', {}, String(error)))
|
||||||
|
@ -150,8 +162,7 @@ export default class TextMode extends Component {
|
||||||
*/
|
*/
|
||||||
setSchema (schema) {
|
setSchema (schema) {
|
||||||
if (schema) {
|
if (schema) {
|
||||||
const ajv = this.props.options.ajv ||
|
const ajv = this.props.options.ajv || Ajv && Ajv(AJV_OPTIONS)
|
||||||
Ajv && Ajv({ allErrors: true, verbose: true })
|
|
||||||
|
|
||||||
if (!ajv) {
|
if (!ajv) {
|
||||||
throw new Error('Cannot validate JSON: ajv not available. ' +
|
throw new Error('Cannot validate JSON: ajv not available. ' +
|
||||||
|
|
|
@ -576,24 +576,27 @@ div.jsoneditor-code {
|
||||||
|
|
||||||
/* JSON schema errors displayed at the bottom of the editor in mode text and code */
|
/* JSON schema errors displayed at the bottom of the editor in mode text and code */
|
||||||
|
|
||||||
.jsoneditor-text-errors {
|
.jsoneditor-errors {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-collapse: collapse;
|
|
||||||
background-color: #ffef8b;
|
background-color: #ffef8b;
|
||||||
border-top: 1px solid #ffd700;
|
border-top: 1px solid #ffd700;
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
|
||||||
font-family: @fontFamily;
|
font-family: @fontFamily;
|
||||||
font-size: @fontSize;
|
font-size: @fontSize;
|
||||||
|
|
||||||
td {
|
td {
|
||||||
padding: 3px 6px;
|
padding: 3px 6px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
code {
|
||||||
display: block;
|
display: block;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.jsoneditor-schema-error {
|
.jsoneditor-schema-error {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
|
|
Loading…
Reference in New Issue