6 changed files with 13 additions and 1798 deletions
@ -1,87 +0,0 @@ |
|||||
///
|
|
||||
/// Copyright © 2016-2022 The Thingsboard Authors
|
|
||||
///
|
|
||||
/// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||
/// you may not use this file except in compliance with the License.
|
|
||||
/// You may obtain a copy of the License at
|
|
||||
///
|
|
||||
/// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||
///
|
|
||||
/// Unless required by applicable law or agreed to in writing, software
|
|
||||
/// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||
/// See the License for the specific language governing permissions and
|
|
||||
/// limitations under the License.
|
|
||||
///
|
|
||||
|
|
||||
import { JsonSettingsSchema } from '@shared/models/widget.models'; |
|
||||
|
|
||||
export function initSchema(): JsonSettingsSchema { |
|
||||
return { |
|
||||
schema: { |
|
||||
type: 'object', |
|
||||
properties: {}, |
|
||||
required: [] |
|
||||
}, |
|
||||
form: [], |
|
||||
groupInfoes: [] |
|
||||
}; |
|
||||
} |
|
||||
|
|
||||
export function addGroupInfo(schema: JsonSettingsSchema, title: string) { |
|
||||
schema.groupInfoes.push({ |
|
||||
formIndex: schema.groupInfoes?.length || 0, |
|
||||
GroupTitle: title |
|
||||
}); |
|
||||
} |
|
||||
|
|
||||
export function addToSchema(schema: JsonSettingsSchema, newSchema: JsonSettingsSchema) { |
|
||||
Object.assign(schema.schema.properties, newSchema.schema.properties); |
|
||||
schema.schema.required = schema.schema.required.concat(newSchema.schema.required); |
|
||||
schema.form.push(newSchema.form); |
|
||||
} |
|
||||
|
|
||||
export function mergeSchemes(schemes: JsonSettingsSchema[]): JsonSettingsSchema { |
|
||||
return schemes.reduce((finalSchema: JsonSettingsSchema, schema: JsonSettingsSchema) => { |
|
||||
return { |
|
||||
schema: { |
|
||||
properties: { |
|
||||
...finalSchema.schema.properties, |
|
||||
...schema.schema.properties |
|
||||
}, |
|
||||
required: [ |
|
||||
...finalSchema.schema.required, |
|
||||
...schema.schema.required |
|
||||
] |
|
||||
}, |
|
||||
form: [ |
|
||||
...finalSchema.form, |
|
||||
...schema.form |
|
||||
] |
|
||||
} as JsonSettingsSchema; |
|
||||
}, initSchema()); |
|
||||
} |
|
||||
|
|
||||
export function addCondition(schema: JsonSettingsSchema, condition: string, exclude: string[] = []): JsonSettingsSchema { |
|
||||
schema.form = schema.form.map(element => { |
|
||||
if (!exclude.includes(element) && !exclude.includes(element.key)) { |
|
||||
if (typeof element === 'string') { |
|
||||
return { |
|
||||
key: element, |
|
||||
condition |
|
||||
}; |
|
||||
} |
|
||||
if (typeof element === 'object') { |
|
||||
if (element.condition) { |
|
||||
element.condition += ' && ' + condition; |
|
||||
} |
|
||||
else { |
|
||||
element.condition = condition; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
return element; |
|
||||
}); |
|
||||
return schema; |
|
||||
} |
|
||||
|
|
||||
File diff suppressed because it is too large
Loading…
Reference in new issue