UI: Remove null properties from objects generated by json schema.

This commit is contained in:
Igor Kulikov 2017-09-29 17:14:42 +03:00
parent 2cf25e78ca
commit 8d962cb57a
2 changed files with 27 additions and 3 deletions

View File

@ -136,6 +136,7 @@ function Utils($mdColorPalette, $rootScope, $window, $translate, $q, $timeout, t
var service = {
getDefaultDatasource: getDefaultDatasource,
generateObjectFromJsonSchema: generateObjectFromJsonSchema,
getDefaultDatasourceJson: getDefaultDatasourceJson,
getDefaultAlarmDataKeys: getDefaultAlarmDataKeys,
getMaterialColor: getMaterialColor,
@ -277,11 +278,34 @@ function Utils($mdColorPalette, $rootScope, $window, $translate, $q, $timeout, t
function getDefaultDatasource(dataKeySchema) {
var datasource = angular.copy(defaultDatasource);
if (angular.isDefined(dataKeySchema)) {
datasource.dataKeys[0].settings = jsonSchemaDefaults(dataKeySchema);
datasource.dataKeys[0].settings = generateObjectFromJsonSchema(dataKeySchema);
}
return datasource;
}
function generateObjectFromJsonSchema(schema) {
var obj = jsonSchemaDefaults(schema);
deleteNullProperties(obj);
return obj;
}
function deleteNullProperties(obj) {
if (angular.isUndefined(obj) || obj == null) {
return;
}
for (var propName in obj) {
if (obj[propName] === null || angular.isUndefined(obj[propName])) {
delete obj[propName];
} else if (angular.isObject(obj[propName])) {
deleteNullProperties(obj[propName]);
} else if (angular.isArray(obj[propName])) {
for (var i=0;i<obj[propName].length;i++) {
deleteNullProperties(obj[propName][i]);
}
}
}
}
function getDefaultDatasourceJson(dataKeySchema) {
return angular.toJson(getDefaultDatasource(dataKeySchema));
}

View File

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import jsonSchemaDefaults from 'json-schema-defaults';
import thingsboardTypes from '../../common/types.constant';
import thingsboardUtils from '../../common/utils.service';
import thingsboardEntityAliasSelect from '../entity-alias-select.directive';
@ -421,7 +421,7 @@ function WidgetConfig($compile, $templateCache, $rootScope, $translate, $timeout
}
if (angular.isDefined(scope.datakeySettingsSchema.schema)) {
result.settings = jsonSchemaDefaults(scope.datakeySettingsSchema.schema);
result.settings = utils.generateObjectFromJsonSchema(scope.datakeySettingsSchema.schema);
}
return result;