Add config core validation panel (#206)

This commit is contained in:
Paulus Schoutsen 2017-02-12 11:32:09 -08:00 committed by GitHub
parent fd798a8f29
commit a6b2c36982
2 changed files with 86 additions and 4 deletions

View File

@ -18,16 +18,35 @@
<dom-module id="ha-config-section-core"> <dom-module id="ha-config-section-core">
<template> <template>
<style include="iron-flex ha-style"> <style include="iron-flex ha-style">
.header { .validate-container {
font-size: 16px; @apply(--layout-vertical);
@apply(--layout-center-center);
height: 140px;
}
.validate-result {
color: var(--google-green-500);
font-weight: 500;
margin-bottom: 1em; margin-bottom: 1em;
} }
.header .status { .config-invalid {
font-size: 14px; margin: 1em 0;
}
.config-invalid .text {
color: var(--google-red-500);
font-weight: 500;
}
.config-invalid paper-button {
float: right; float: right;
} }
.validate-log {
white-space: pre-wrap;
}
.card-actions.warning ha-call-service-button { .card-actions.warning ha-call-service-button {
color: var(--google-red-500); color: var(--google-red-500);
} }
@ -41,6 +60,30 @@
Changing your configuration can be a tiresome process. We know. This section will try to make your life a little bit easier. Changing your configuration can be a tiresome process. We know. This section will try to make your life a little bit easier.
</span> </span>
<paper-card heading='Configuration Validation'>
<div class='card-content'>
Validate your configuration if you recently made some changes to your configuration and want to make sure that it is all valid.
<template is='dom-if' if='[[!validateLog]]'>
<div class='validate-container'>
<template is='dom-if' if='[[!validating]]'>
<div class='validate-result' id='result'>[[validateResult]]</div>
<paper-button raised on-tap='validateConfig'>check config</paper-button>
</template>
<template is='dom-if' if='[[validating]]'>
<paper-spinner active></paper-spinner>
</template>
</div>
</template>
<template is='dom-if' if='[[validateLog]]'>
<div class='config-invalid'>
<span class='text'>Configuration invalid.</span>
<paper-button raised on-tap='validateConfig'>check config</paper-button>
</div>
<div id='configLog' class='validate-log'>[[validateLog]]</div>
</template>
</div>
</paper-card>
<paper-card heading='Configuration Reloading'> <paper-card heading='Configuration Reloading'>
<div class='card-content'> <div class='card-content'>
Some parts of Home Assistant can reload without requiring a restart. Hitting reload will unload their current configuration and load the new one. Some parts of Home Assistant can reload without requiring a restart. Hitting reload will unload their current configuration and load the new one.
@ -105,6 +148,21 @@ Polymer({
type: Boolean, type: Boolean,
value: false, value: false,
}, },
validating: {
type: Boolean,
value: false,
},
validateResult: {
type: String,
value: '',
},
validateLog: {
type: String,
value: '',
},
}, },
groupLoaded: function (hass) { groupLoaded: function (hass) {
@ -114,5 +172,25 @@ Polymer({
automationLoaded: function (hass) { automationLoaded: function (hass) {
return window.hassUtil.isComponentLoaded(hass, 'automation'); return window.hassUtil.isComponentLoaded(hass, 'automation');
}, },
validateConfig: function () {
this.validating = true;
this.validateLog = '';
this.validateResult = '';
var el = this;
this.hass.callApi('POST', 'config/core/check_config')
.then(function (result) {
el.validating = false;
var isValid = el.configValid = result.result === 'valid';
if (isValid) {
el.validateResult = 'Valid!';
} else {
el.validateLog = result.errors;
}
});
}
}); });
</script> </script>

View File

@ -13,6 +13,9 @@
app-header-layout { app-header-layout {
background-color: #fafafa; background-color: #fafafa;
} }
.spacer {
height: 32px;
}
</style> </style>
<app-header-layout has-scrolling-region> <app-header-layout has-scrolling-region>
<app-header fixed> <app-header fixed>
@ -35,6 +38,7 @@
hass='[[hass]]' hass='[[hass]]'
></ha-config-section-hassbian> ></ha-config-section-hassbian>
</template> </template>
<div class='spacer'></div>
</app-header-layout> </app-header-layout>
</template> </template>
</dom-module> </dom-module>