From eccd9d2a0d4df7196d6cc4c1c462796fb6ac6310 Mon Sep 17 00:00:00 2001 From: lsyer Date: Tue, 29 Dec 2020 17:19:07 +0800 Subject: [PATCH 01/12] Update 'locale.constant-zh_CN.json' --- .../assets/locale/locale.constant-zh_CN.json | 4077 ++++++++++------- 1 file changed, 2486 insertions(+), 1591 deletions(-) diff --git a/ui-ngx/src/assets/locale/locale.constant-zh_CN.json b/ui-ngx/src/assets/locale/locale.constant-zh_CN.json index 1b70a7f643..28e38022a9 100644 --- a/ui-ngx/src/assets/locale/locale.constant-zh_CN.json +++ b/ui-ngx/src/assets/locale/locale.constant-zh_CN.json @@ -1,1608 +1,2503 @@ { - "access": { - "unauthorized": "未授权", - "unauthorized-access": "未授权访问", - "unauthorized-access-text": "您需要登陆才能访问这个资源!", - "access-forbidden": "禁止访问", - "access-forbidden-text": "您没有访问此位置的权限
如果您仍希望访问此位置,请尝试使用其他用户登录。", - "refresh-token-expired": "会话已过期", - "refresh-token-failed": "无法刷新会话" + "access": { + "access-forbidden": "禁止访问", + "access-forbidden-text": "您没有访问此位置的权限
如果您仍希望访问此位置,请尝试使用其他用户登录。", + "permission-denied": "权限被拒绝", + "permission-denied-text": "您没有执行此操作的权限!", + "refresh-token-expired": "会话已过期", + "refresh-token-failed": "无法刷新会话", + "unauthorized": "未授权", + "unauthorized-access": "未授权访问", + "unauthorized-access-text": "您需要登陆才能访问这个资源!" + }, + "action": { + "activate": "激活", + "add": "添加", + "apply": "应用", + "apply-changes": "应用更改", + "assign": "分配", + "back": "后退", + "cancel": "取消", + "clear-search": "清除查询", + "close": "关闭", + "continue": "继续", + "copy": "复制", + "copy-reference": "复制引用", + "create": "创建", + "decline-changes": "撤销更改", + "delete": "删除", + "discard-changes": "放弃更改", + "download": "下载", + "drag": "拖拽", + "edit": "编辑", + "edit-mode": "编辑模式", + "enter-edit-mode": "进入编辑模式", + "export": "导出", + "hide": "隐藏", + "import": "导入", + "make-private": "私有", + "next-with-label": "下一个:{{label}}", + "no": "否", + "ok": "确定", + "paste": "粘贴", + "paste-reference": "粘贴引用", + "read-more": "阅读更多", + "refresh": "刷新", + "remove": "移除", + "run": "运行", + "save": "保存", + "saveAs": "另存为", + "search": "查询", + "select": "选择", + "share": "分享", + "share-via": "通过 {{provider}}分享", + "sign-in": "登录!", + "suspend": "暂停", + "unassign": "取消分配", + "undo": "撤销", + "update": "更新", + "view": "查看", + "yes": "是" + }, + "admin": { + "aws-access-key-id": "AWS访问密钥ID", + "aws-access-key-id-required": "需要访问AWS密钥ID", + "aws-region": "AWS地区", + "aws-region-required": "AWS 区域必填", + "aws-secret-access-key": "AWS秘密访问密钥", + "aws-secret-access-key-required": "AWS 访问密钥必填", + "base-url": "基本URL", + "base-url-required": "基本URL必填。", + "domain-name": "域名", + "domain-name-unique": "域名和协议必须是唯一的。", + "enable-proxy": "启用代理", + "enable-tls": "启用TLS", + "error-verification-url": "域名不应包含符号 “/” 和 “:”。例:thingsboard.io", + "general": "总则", + "general-policy": "General policy", + "general-settings": "常规设置", + "mail-from": "邮件来自", + "mail-from-required": "邮件发件人必填。", + "max-failed-login-attempts": "登录失败之前的最大登录尝试次数", + "minimum-digits": "最小位数", + "minimum-digits-range": "最小位数不能为负数", + "minimum-lowercase-letters": "最小小写字母数", + "minimum-lowercase-letters-range": "小写字母的最小数目不能为负数", + "minimum-max-failed-login-attempts-range": "登录失败次数不能为负数", + "minimum-password-length": "最小密码长度", + "minimum-password-length-range": "最小密码长度应在5到50之间", + "minimum-password-length-required": "最小密码长度必填", + "minimum-special-characters": "最小特殊字符数", + "minimum-special-characters-range": "特殊字符的最小数目不能为负数", + "minimum-uppercase-letters": "最小大写字母数", + "minimum-uppercase-letters-range": "大写字母的最小数目不能为负数", + "number-from": "来自的电话号码", + "number-from-required": "发送方电话号码必填。", + "number-to": "电话号码至", + "number-to-required": "电话号码必填。", + "oauth2": { + "access-token-uri": "访问令牌URI", + "access-token-uri-required": "访问令牌 URI 必填。", + "activate-user": "激活用户", + "add-domain": "添加域", + "add-provider": "添加 Provider", + "allow-user-creation": "允许用户创建", + "always-fullscreen": "始终全屏", + "authorization-uri": "授权URI", + "authorization-uri-required": "授权 URI 必填。", + "client-authentication-method": "客户端身份验证方法", + "client-id": "客户端ID", + "client-id-required": "客户端 ID 必填。", + "client-secret": "客户机密", + "client-secret-required": "需要客户端密码。", + "copy-redirect-uri": "复制重定向URI", + "custom-setting": "自定义设置", + "customer-name-pattern": "客户名称模式", + "default-dashboard-name": "默认仪表板名称", + "delete-domain": "删除域", + "delete-domain-text": "注意,确认后域和所有 provider data 将不可用。", + "delete-domain-title": "确实要删除域 '{{domainName}}' 的设置吗?", + "delete-provider": "删除 Provider", + "delete-registration-text": "请注意:确认后 provider data 将不可用。", + "delete-registration-title": "确实要删除 provider '{{name}}' 吗?", + "domain-schema-http": "HTTP", + "domain-schema-https": "HTTPS", + "domain-schema-mixed": "HTTP+HTTPS", + "email-attribute-key": "电子邮件属性键", + "email-attribute-key-required": "电子邮件属性密钥必填。", + "enable": "启用OAuth2设置", + "first-name-attribute-key": "名字属性键", + "general": "General", + "jwk-set-uri": "JSON Web Key URI", + "last-name-attribute-key": "姓氏属性键", + "login-button-icon": "登录按钮图标", + "login-button-label": "Provider 标签", + "login-button-label-placeholder": "使用 $(Provider label) 登录", + "login-button-label-required": "标签必填。", + "login-provider": "Login provider", + "mapper": "Mapper", + "new-domain": "新建域", + "oauth2": "OAuth2", + "protocol": "协议", + "redirect-uri-template": "重定向URI模板", + "registration-id": "注册ID", + "registration-id-required": "注册 ID 必填。", + "registration-id-unique": "系统的注册ID必须是唯一的。", + "scope": "范围", + "scope-required": "范围必填。", + "tenant-name-pattern": "租户名称模式", + "tenant-name-pattern-required": "租户名称模式必填。", + "tenant-name-strategy": "租户名称策略", + "type": "映射器类型", + "uri-pattern-error": "无效的URI格式。", + "url": "统一资源定位地址", + "url-pattern": "无效的URL格式。", + "url-required": "URL 必填。", + "user-info-uri": "用户信息URI", + "user-info-uri-required": "用户信息 URI 必填。", + "user-name-attribute-name": "用户名属性键", + "user-name-attribute-name-required": "用户名属性密钥必填" }, - "action": { - "activate": "激活", - "suspend": "暂停", - "save": "保存", - "saveAs": "另存为", - "cancel": "取消", - "ok": "确定", - "delete": "删除", - "add": "添加", - "yes": "是", - "no": "否", - "update": "更新", - "remove": "移除", - "search": "查询", - "clear-search": "清除查询", - "assign": "分配", - "unassign": "取消分配", - "share": "分享", - "make-private": "私有", - "apply": "应用", - "apply-changes": "应用更改", - "edit-mode": "编辑模式", - "enter-edit-mode": "进入编辑模式", - "decline-changes": "撤销更改", - "close": "关闭", - "back": "后退", - "run": "运行", - "sign-in": "登录!", - "edit": "编辑", - "view": "查看", - "create": "创建", - "drag": "拖拽", - "refresh": "刷新", - "undo": "撤销", - "copy": "复制", - "paste": "粘贴", - "copy-reference": "复制引用", - "paste-reference": "粘贴引用", - "import": "导入", - "export": "导出", - "share-via": "通过 {{provider}}分享" + "outgoing-mail": "发送邮件", + "outgoing-mail-settings": "发送邮件设置", + "password-expiration-period-days": "密码有效期(天)", + "password-expiration-period-days-range": "密码过期期限(天)不能为负", + "password-policy": "密码策略", + "password-reuse-frequency-days": "密码重用频率(天)", + "password-reuse-frequency-days-range": "天内密码重用频率不能为负", + "phone-number-hint": "E.164格式的电话号码,例如+19995550123", + "phone-number-pattern": "电话号码无效。应为E.164格式,例如+19995550123。", + "prohibit-different-url": "禁止从客户端请求头中使用主机名", + "prohibit-different-url-hint": "应为生产环境启用此设置。禁用时可能会导致安全问题", + "proxy-host": "代理主机", + "proxy-host-required": "代理主机必填。", + "proxy-password": "代理密码", + "proxy-port": "代理端口", + "proxy-port-range": "代理端口应在1到65535之间。", + "proxy-port-required": "代理端口必填。", + "proxy-user": "代理用户", + "security-settings": "安全设置", + "send-test-mail": "发送测试邮件", + "send-test-sms": "发送测试短信", + "sms-message": "短信", + "sms-message-max-length": "短信长度不能超过1600个字符", + "sms-message-required": "短消息内容必填。", + "sms-provider": "SMS provider", + "sms-provider-settings": "SMS provider 设置", + "sms-provider-type": "SMS provider 类型", + "sms-provider-type-aws-sns": "亚马逊社交网站", + "sms-provider-type-required": "SMS provider 类型必填。", + "sms-provider-type-twilio": "Twilio", + "smtp-host": "SMTP主机", + "smtp-host-required": "SMTP主机必填。", + "smtp-port": "SMTP端口", + "smtp-port-invalid": "这看起来不是有效的smtp端口。", + "smtp-port-required": "您必须提供一个smtp端口。", + "smtp-protocol": "SMTP协议", + "system-settings": "系统设置", + "test-mail-sent": "测试邮件发送成功!", + "test-sms-sent": "测试短信发送成功!", + "timeout-invalid": "这看起来不像有效的超时值。", + "timeout-msec": "超时(ms)", + "timeout-required": "超时必填。", + "tls-version": "TLS版本", + "twilio-account-sid": "Twilio帐户SID", + "twilio-account-sid-required": "Twilio 帐户的 SID 必填", + "twilio-account-token": "Twilio帐户令牌", + "twilio-account-token-required": "Twilio 帐户令牌必填", + "user-lockout-notification-email": "如果用户帐户锁定,请发送通知到电子邮件" + }, + "aggregation": { + "aggregation": "聚合", + "avg": "平均值", + "count": "计数", + "function": "数据聚合功能", + "group-interval": "分组间隔", + "limit": "最大值", + "max": "最大值", + "min": "最少值", + "none": "空", + "sum": "求和" + }, + "alarm": { + "ack-time": "确认时间", + "acknowledge": "应答", + "aknowledge-alarm-text": "确定要确认报警吗?", + "aknowledge-alarm-title": "确认报警", + "aknowledge-alarms-text": "确定要确认 { count, plural, 1 {1 个警告} other {# 个警告} }?", + "aknowledge-alarms-title": "确认 { count, plural, 1 {1 个警告} other {# 个警告} }", + "alarm": "警告", + "alarm-details": "报警详细信息", + "alarm-filter": "报警过滤器", + "alarm-required": "警告必填", + "alarm-severity-list": "警报严重性列表", + "alarm-status": "警告状态", + "alarm-status-filter": "报警状态过滤器", + "alarm-status-list": "报警状态列表", + "alarm-type-list": "报警类型列表", + "alarms": "警告", + "any-severity": "任何严重程度", + "any-status": "任何状态", + "any-type": "任何类型", + "clear": "清除", + "clear-alarm-text": "确定要清除警报吗?", + "clear-alarm-title": "清除警报", + "clear-alarms-text": "确定要清除 { count, plural, 1 {1 个警告} other {# 个警告} }?", + "clear-alarms-title": "清除 { count, plural, 1 {1 个警告} other {# 个警告} }", + "clear-time": "清除时间", + "created-time": "创建时间", + "details": "细节", + "display-status": { + "ACTIVE_ACK": "Active 已确认", + "ACTIVE_UNACK": "Active 未确认", + "CLEARED_ACK": "清除已确认", + "CLEARED_UNACK": "清除未确认" }, - "aggregation": { - "aggregation": "聚合", - "function": "数据聚合功能", - "limit": "最大值", - "group-interval": "分组间隔", - "min": "最少值", - "max": "最大值", - "avg": "平均值", - "sum": "求和", - "count": "计数", - "none": "空" + "end-time": "结束时间", + "fetch-size": "获取大小", + "fetch-size-error-min": "最小值为10。", + "fetch-size-required": "Fetch size 必填。", + "max-count-load": "要加载的最大报警数(0-无限制)", + "max-count-load-error-min": "最小值为0。", + "max-count-load-required": "加载的最大报警数必填。", + "min-polling-interval-message": "轮询间隔至少是1秒。", + "no-alarms-matching": "没有找到匹配 '{{entity}}' 的警告", + "no-alarms-prompt": "未发现警告", + "no-data": "无数据显示", + "originator": "Originator", + "originator-type": "Originator 类型", + "polling-interval": "警告轮询间隔(秒)", + "polling-interval-required": "警告轮询间隔必填。", + "search": "搜索警告", + "search-propagated-alarms": "检索已传递的警报", + "search-status": { + "ACK": "已确认", + "ACTIVE": "Active", + "ANY": "所有", + "CLEARED": "已清除", + "UNACK": "未确认" }, - "admin": { - "general": "常规", - "general-settings": "常规设置", - "outgoing-mail": "发送邮件", - "outgoing-mail-settings": "发送邮件设置", - "system-settings": "系统设置", - "test-mail-sent": "测试邮件发送成功!", - "base-url": "基本URL", - "base-url-required": "基本URL必填。", - "mail-from": "邮件来自", - "mail-from-required": "邮件发件人必填。", - "smtp-protocol": "SMTP协议", - "smtp-host": "SMTP主机", - "smtp-host-required": "SMTP主机必填。", - "smtp-port": "SMTP端口", - "smtp-port-required": "您必须提供一个smtp端口。", - "smtp-port-invalid": "这看起来不是有效的smtp端口。", - "timeout-msec": "超时(ms)", - "timeout-required": "超时必填。", - "timeout-invalid": "这看起来不像有效的超时值。", - "enable-tls": "启用TLS", - "tls-version" : "TLS版本", - "send-test-mail": "发送测试邮件" - }, - "alarm": { - "alarm": "警告", - "alarms": "警告", - "select-alarm": "选择警告", - "no-alarms-matching": "没有找到匹配 '{{entity}}' 的警告", - "alarm-required": "警告必填", - "alarm-status": "警告状态", - "search-status": { - "ANY": "所有", - "ACTIVE": "已激活", - "CLEARED": "已清除", - "ACK": "已应答", - "UNACK": "未应答" - }, - "display-status": { - "ACTIVE_UNACK": "激活未应答", - "ACTIVE_ACK": "激活已应答", - "CLEARED_UNACK": "清除未应答", - "CLEARED_ACK": "清除已应答" - }, - "no-alarms-prompt": "未发现警告", - "created-time": "创建时间", - "type": "类型", - "severity": "严重程度", - "originator": "起因", - "originator-type": "起因类型", - "details": "详情", - "status": "状态", - "alarm-details": "警告详情", - "start-time": "开始时间", - "end-time": "结束时间", - "ack-time": "应答时间", - "clear-time": "创建时间", - "severity-critical": "危险", - "severity-major": "重要", - "severity-minor": "次要", - "severity-warning": "警告", - "severity-indeterminate": "不确定", - "acknowledge": "应答", - "clear": "清除", - "search": "搜索警告", - "selected-alarms": "已选择 { count, plural, 1 {1 警告} other {# 警告} } ", - "no-data": "无数据显示", - "polling-interval": "警告轮询间隔(秒)", - "polling-interval-required": "警告轮询间隔必填。", - "min-polling-interval-message": "轮询间隔至少是1秒。", - "aknowledge-alarms-title": "应答 { count, plural, 1 {1 警告} other {# 警告} }", - "aknowledge-alarms-text": "确定要应答 { count, plural, 1 {1 警告} other {# 警告} }?", - "clear-alarms-title": "清除 { count, plural, 1 {1 警告} other {# 警告} }", - "clear-alarms-text": "确定要清除 { count, plural, 1 {1 警告} other {# 警告} }?" - }, - "alias": { - "add": "添加别名", - "edit": "编辑别名", - "name": "别名", - "name-required": "别名必填", - "duplicate-alias": "别名已经存在。", - "filter-type-single-entity": "单个实体", - "filter-type-entity-list": "实体列表", - "filter-type-entity-name": "实体名称", - "filter-type-state-entity": "实体(仪表板状态)", - "filter-type-state-entity-description": "实体令牌(仪表板状态参数)", - "filter-type-asset-type": "资产类型", - "filter-type-asset-type-description": "类型为 '{{assetType}}' 的资产", - "filter-type-asset-type-and-name-description": "类型为 '{{assetType}}' 且以 '{{prefix}}' 开头的资产", - "filter-type-device-type": "设备类型", - "filter-type-device-type-description": "类型为 '{{deviceType}}' 的设备", - "filter-type-device-type-and-name-description": "类型为 '{{deviceType}}' 且以 '{{prefix}}' 开头的设备", - "filter-type-entity-view-type": "实体视图类型", - "filter-type-entity-view-type-description": "类型为 '{{entityView}}' 的实体视图", - "filter-type-entity-view-type-and-name-description": "类型为 {{entityView}}' 且以 '{{prefix}}' 开头的实体视图", - "filter-type-relations-query": "关系查询", - "filter-type-relations-query-description": "具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的 {{entities}} ", - "filter-type-asset-search-query": "资产搜索查询", - "filter-type-asset-search-query-description": "类型为 {{assetTypes}} 且具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的资产", - "filter-type-device-search-query": "设备搜索查询", - "filter-type-device-search-query-description": "类型为 {{deviceTypes}} 且具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的设备", - "filter-type-entity-view-search-query": "实体视图搜索查询", - "filter-type-entity-view-search-query-description": "类型为 {{entityViewTypes}} 且具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的实体视图", - "entity-filter": "实体过滤", - "resolve-multiple": "解决为多实体", - "filter-type": "过滤类型", - "filter-type-required": "过滤类型必填。", - "entity-filter-no-entity-matched": "未找到符合指定过滤条件的实体。", - "no-entity-filter-specified": "没有指定实体过滤条件", - "root-state-entity": "使用仪表板状态实体作为根实体", - "root-entity": "根实体", - "state-entity-parameter-name": "状态实体参数名称", - "default-state-entity": "默认状态实体", - "default-entity-parameter-name": "默认", - "max-relation-level": "最大关系层级", - "unlimited-level": "不限层级", - "state-entity": "仪表板状态实体", - "all-entities": "所有实体", - "any-relation": "不限" - }, - "asset": { - "asset": "资产", - "assets": "资产", - "management": "资产管理", - "view-assets": "查看资产", - "add": "添加资产", - "assign-to-customer": "分配给客户", - "assign-asset-to-customer": "将资产分配给客户", - "assign-asset-to-customer-text": "请选择要分配给客户的资产", - "no-assets-text": "未找到资产", - "assign-to-customer-text": "请选择客户以分配资产", - "public": "公开", - "assignedToCustomer": "分配客户", - "make-public": "资产设为公开", - "make-private": "资产设为私有", - "unassign-from-customer": "取消分配客户", - "delete": "删除资产", - "asset-public": "资产公开", - "asset-type": "资产类型", - "asset-type-required": "资产类型必填。", - "select-asset-type": "选择资产类型", - "enter-asset-type": "输入资产类型", - "any-asset": "任何资产", - "no-asset-types-matching": "没有找到匹配 '{{entitySubtype}}' 的资产类型。", - "asset-type-list-empty": "资产类型未选择。", - "asset-types": "资产类型", - "name": "名称", - "name-required": "名称必填。", - "description": "描述", - "type": "类型", - "type-required": "类型必填。", - "details": "详情", - "events": "事件", - "add-asset-text": "添加新资产", - "asset-details": "资产详情", - "assign-assets": "分配资产", - "assign-assets-text": "分配 { count, plural, 1 {1 资产} other {# 资产} } 给客户", - "delete-assets": "删除资产", - "unassign-assets": "取消分配资产", - "unassign-assets-action-title": "从客户处取消分配 { count, plural, 1 {1 资产} other {# 资产} } ", - "assign-new-asset": "分配新资产", - "delete-asset-title": "确定要删除资产 '{{assetName}}'?", - "delete-asset-text": "小心!确认后资产及其所有相关数据将不可恢复。", - "delete-assets-title": "确定要删除 { count, plural, 1 {1 资产} other {# 资产} }?", - "delete-assets-action-title": "删除 { count, plural, 1 {1 资产} other {# 资产} }", - "delete-assets-text": "小心,确认后,所有选定的资产将被删除,所有相关的数据将变得不可恢复。", - "make-public-asset-title": "你确定你想创建公开'{{assetName}}'资产?", - "make-public-asset-text": "确认后,资产及其所有数据将被公开并被他人访问。", - "make-private-asset-title": "你确定你想创建私有 '{{assetName}}' 资产?", - "make-private-asset-text": "确认后,资产及其所有数据将被私有化,无法被他人访问。", - "unassign-asset-title": "您确定要取消对'{{assetName}}'资产的分配吗?", - "unassign-asset-text": "确认后,资产将未分配,客户无法访问。", - "unassign-asset": "未分配资产", - "unassign-assets-title": "您确定要取消分配 { count, plural, 1 {1 资产} other {# 资产} }吗?", - "unassign-assets-text": "确认后,所有选定的资产将被分配,客户无法访问。", - "copyId": "复制资产ID", - "idCopiedMessage": "资产ID已经复制到粘贴板", - "select-asset": "选择资产", - "no-assets-matching": "没有找到匹配 '{{entity}}' 的资产。", - "asset-required": "资产必填", - "name-starts-with": "资产名称以此开头", - "label": "标签" - }, - "attribute": { - "attributes": "属性", - "latest-telemetry": "最新遥测", - "attributes-scope": "设备属性范围", - "scope-latest-telemetry": "最新遥测", - "scope-client": "客户端属性", - "scope-server": "服务端属性", - "scope-shared": "共享属性", - "add": "添加属性", - "key": "键", - "last-update-time": "最后更新时间", - "key-required": "属性键必填。", - "value": "值", - "value-required": "属性值必填。", - "delete-attributes-title": "您确定要删除 { count, plural, 1 {1 属性} other {# 属性} }吗?", - "delete-attributes-text": "注意,确认后所有选中的属性都会被删除。", - "delete-attributes": "删除属性", - "enter-attribute-value": "输入属性值", - "show-on-widget": "在部件上显示", - "widget-mode": "部件模式", - "next-widget": "下一个部件", - "prev-widget": "上一个部件", - "add-to-dashboard": "添加到仪表板", - "add-widget-to-dashboard": "将部件添加到仪表板", - "selected-attributes": "{ count, plural, 1 {1 属性} other {# 属性} } 被选中", - "selected-telemetry": "{ count, plural, 1 {1 遥测} other {# 遥测} } 被选中" - }, - "audit-log": { - "audit": "审计", - "audit-logs": "审计日志", - "timestamp": "时间戳", - "entity-type": "实体类型", - "entity-name": "实体名称", - "user": "用户", - "type": "类型", - "status": "状态", - "details": "详情", - "type-added": "添加", - "type-deleted": "删除", - "type-updated": "更新", - "type-attributes-updated": "更新属性", - "type-attributes-deleted": "删除属性", - "type-rpc-call": "RPC调用", - "type-credentials-updated": "更新凭证", - "type-assigned-to-customer": "分配给客户", - "type-unassigned-from-customer": "未分配给客户", - "type-activated": "激活", - "type-suspended": "暂停", - "type-credentials-read": "读取凭证", - "type-attributes-read": "读取属性", - "status-success": "成功", - "status-failure": "失败", - "audit-log-details": "审计日志详情", - "no-audit-logs-prompt": "找不到日志", - "action-data": "活动数据", - "failure-details": "失败详情", - "search": "查找审计日志", - "clear-search": "清空查找" - }, - "confirm-on-exit": { - "message": "您有未保存的更改。确定要离开此页吗?", - "html-message": "您有未保存的更改。
确定要离开此页面吗?", - "title": "未保存的更改" - }, - "contact": { - "country": "国家", - "city": "城市", - "state": "州", - "postal-code": "邮政编码", - "postal-code-invalid": "只允许数字。", - "address": "地址", - "address2": "地址2", - "phone": "手机", - "email": "邮箱", - "no-address": "无地址" - }, - "common": { - "username": "用户名", - "password": "密码", - "enter-username": "输入用户名", - "enter-password": "输入密码", - "enter-search": "输入检索条件", - "created-time": "创建时间" - }, - "content-type": { - "json": "Json", - "text": "Text", - "binary": "Binary (Base64)" - }, - "customer": { - "customer": "客户", - "customers": "客户", - "management": "客户管理", - "dashboard": "客户仪表板", - "dashboards": "客户仪表板", - "devices": "客户设备", - "entity-views": "客户实体视图", - "assets": "客户资产", - "public-dashboards": "公共仪表板", - "public-devices": "公共设备", - "public-assets": "公共资产", - "public-entity-views": "公共实体视图", - "add": "添加客户", - "delete": "删除客户", - "manage-customer-users": "管理客户用户", - "manage-customer-devices": "管理客户设备", - "manage-customer-dashboards": "管理客户仪表板", - "manage-public-devices": "管理公共设备", - "manage-public-dashboards": "管理公共仪表板", - "manage-customer-assets": "管理客户资产", - "manage-public-assets": "管理公共资产", - "add-customer-text": "添加新客户", - "no-customers-text": "没有找到客户", - "customer-details": "客户详情", - "delete-customer-title": "您确定要删除客户'{{customerTitle}}'吗?", - "delete-customer-text": "小心!确认后,客户及其所有相关数据将不可恢复。", - "delete-customers-title": "您确定要删除 { count, plural, 1 {1 客户} other {# 客户} }吗?", - "delete-customers-action-title": "删除 { count, plural, 1 {1 客户} other {# 客户} }", - "delete-customers-text": "小心!确认后,所有选定的客户将被删除,所有相关数据将不可恢复。", - "manage-users": "管理用户", - "manage-assets": "管理资产", - "manage-devices": "管理设备", - "manage-dashboards": "管理仪表板", - "title": "标题", - "title-required": "需要标题", - "description": "描述", - "details": "详情", - "events": "事件", - "copyId": "复制客户ID", - "idCopiedMessage": "客户ID已复制到粘贴板", - "select-customer": "选择客户", - "no-customers-matching": "没有找到匹配 '{{entity}}' 的客户。", - "customer-required": "客户是必选项", - "select-default-customer": "选择默认的客户", - "default-customer": "默认客户", - "default-customer-required": "为了调试租户级别上的仪表板,需要默认客户。" - }, - "datetime": { - "date-from": "日期从", - "time-from": "时间从", - "date-to": "日期到", - "time-to": "时间到" - }, - "dashboard": { - "dashboard": "仪表板", - "dashboards": "仪表板库", - "management": "仪表板管理", - "view-dashboards": "查看仪表板", - "add": "添加仪表板", - "assign-dashboard-to-customer": "将仪表板分配给客户", - "assign-dashboard-to-customer-text": "请选择要分配给客户的仪表板", - "assign-to-customer-text": "请选择客户分配仪表板", - "assign-to-customer": "分配给客户", - "unassign-from-customer": "取消分配客户", - "make-public": "仪表板设为公开", - "make-private": "仪表板设为私有", - "manage-assigned-customers": "管理已分配的客户", - "assigned-customers": "已分配的客户", - "assign-to-customers": "将仪表板分配给客户", - "assign-to-customers-text": "请选择客户指定仪表板", - "unassign-from-customers": "客户未分配仪表板", - "unassign-from-customers-text": "请选择从仪表板中取消分配的客户", - "no-dashboards-text": "没有找到仪表板", - "no-widgets": "没有配置部件", - "add-widget": "添加新的部件", - "title": "标题", - "select-widget-title": "选择部件", - "select-widget-subtitle": "可用的部件类型列表", - "delete": "删除仪表板", - "title-required": "需要标题。", - "description": "描述", - "details": "详情", - "dashboard-details": "仪表板详情", - "add-dashboard-text": "添加新的仪表板", - "assign-dashboards": "分配仪表板", - "assign-new-dashboard": "分配新的仪表板", - "assign-dashboards-text": "分配 { count, plural, 1 {1 仪表板} other {# 仪表板} } 给客户", - "unassign-dashboards-action-text": "未分配 { count, plural, 1 {1 仪表板} other {# 仪表板} } 给客户", - "delete-dashboards": "删除仪表板", - "unassign-dashboards": "取消分配仪表板", - "unassign-dashboards-action-title": "从客户处取消分配 { count, plural, 1 {1 仪表板} other {# 仪表板} } ", - "delete-dashboard-title": "您确定要删除仪表板 '{{dashboardTitle}}'吗?", - "delete-dashboard-text": "小心!确认后仪表板及其所有相关数据将不可恢复。", - "delete-dashboards-title": "你确定你要删除 { count, plural, 1 {1 仪表板} other {# 仪表板} }吗?", - "delete-dashboards-action-title": "删除 { count, plural, 1 {1 仪表板} other {# 仪表板} }", - "delete-dashboards-text": "小心!确认后所有选定的仪表板将被删除,所有相关数据将不可恢复。", - "unassign-dashboard-title": "您确定要取消分配仪表板 '{{dashboardTitle}}'吗?", - "unassign-dashboard-text": "确认后,面板将被取消分配,客户将无法访问。", - "unassign-dashboard": "取消分配仪表板", - "unassign-dashboards-title": "您确定要取消分配仪表板 { count, plural, 1 {1 仪表板} other {# 仪表板} } 吗?", - "unassign-dashboards-text": "确认后,所有选定的仪表板将被取消分配,客户将无法访问。", - "public-dashboard-title": "仪表板现已公布", - "public-dashboard-text": "你的仪表板 {{dashboardTitle}} 已被公开,可通过如下 链接访问:", - "public-dashboard-notice": "提示: 不要忘记将相关设备公开以访问其数据。", - "make-private-dashboard-title": "您确定要将仪表板 '{{dashboardTitle}}' 设为私有吗?", - "make-private-dashboard-text": "确认后,仪表板将被设为私有,不能被其他人访问。", - "make-private-dashboard": "仪表板设为私有", - "socialshare-text": "'{{dashboardTitle}}' 由Thingsboard提供支持", - "socialshare-title": "'{{dashboardTitle}}' 由Thingsboard提供支持", - "select-dashboard": "选择仪表板", - "no-dashboards-matching": "找不到符合 '{{entity}}' 的仪表板。", - "dashboard-required": "仪表板必填。", - "select-existing": "选择现有仪表板", - "create-new": "创建新的仪表板", - "new-dashboard-title": "新仪表板标题", - "open-dashboard": "打开仪表板", - "set-background": "设置背景", - "background-color": "背景颜色", - "background-image": "背景图片", - "background-size-mode": "背景大小模式", - "no-image": "无图像选择", - "drop-image": "拖拽图像或单击以选择要上传的文件。", - "settings": "设置", - "columns-count": "列数", - "columns-count-required": "需要列数。", - "min-columns-count-message": "只允许最少10列", - "max-columns-count-message": "只允许最多1000列", - "widgets-margins": "部件间边距", - "horizontal-margin": "水平边距", - "horizontal-margin-required": "需要水平边距值。", - "min-horizontal-margin-message": "只允许0作为最小水平边距值。", - "max-horizontal-margin-message": "只允许50作为最大水平边距值。", - "vertical-margin": "垂直边距", - "vertical-margin-required": "需要垂直边距值。", - "min-vertical-margin-message": "只允许0作为最小垂直边距值。", - "max-vertical-margin-message": "只允许50作为最大垂直边距值。", - "autofill-height": "自动填充布局高度", - "mobile-layout": "移动端布局设置", - "mobile-row-height": "移动端行高距(px)", - "mobile-row-height-required": "移动端行高距必填。", - "min-mobile-row-height-message": "移动端行高距至少5px。", - "max-mobile-row-height-message": "移动端行高距最多200px。", - "display-title": "显示仪表板标题", - "toolbar-always-open": "工具栏常驻", - "title-color": "标题颜色", - "display-dashboards-selection": "显示仪表板选项", - "display-entities-selection": "显示实体选项", - "display-dashboard-timewindow": "显示时间窗口", - "display-dashboard-export": "显示导出", - "import": "导入仪表板", - "export": "导出仪表板", - "export-failed-error": "无法导出仪表板: {{error}}", - "create-new-dashboard": "创建新的仪表板", - "dashboard-file": "仪表板文件", - "invalid-dashboard-file-error": "无法导入仪表板: 仪表板数据结构无效。", - "dashboard-import-missing-aliases-title": "配置导入仪表板使用的别名", - "create-new-widget": "创建新部件", - "import-widget": "导入部件", - "widget-file": "部件文件", - "invalid-widget-file-error": "无法导入窗口部件: 窗口部件数据结构无效。", - "widget-import-missing-aliases-title": "配置导入的窗口部件使用的别名", - "open-toolbar": "打开仪表板工具栏", - "close-toolbar": "关闭工具栏", - "configuration-error": "配置错误", - "alias-resolution-error-title": "仪表板别名配置错误", - "invalid-aliases-config": "无法找到与某些别名过滤器匹配的任何设备。
请联系您的管理员以解决此问题。", - "select-devices": "选择设备", - "assignedToCustomer": "分配给客户", - "public": "公共", - "public-link": "公共链接", - "copy-public-link": "复制公共链接", - "public-link-copied-message": "仪表板的公共链接已被复制到剪贴板", - "manage-states": "仪表板状态管理", - "states": "仪表板状态", - "search-states": "仪表板状态检索", - "selected-states": "{ count, plural, 1 {1 仪表板状态} other {# 仪表板状态} } 选中", - "edit-state": "仪表板状态编辑", - "delete-state": "删除仪表板状态", - "add-state": "添加仪表板状态", - "state": "仪表板状态", - "state-name": "状态名", - "state-name-required": "仪表板状态名必填。", - "state-id": "状态ID", - "state-id-required": "仪表板状态ID必填。", - "state-id-exists": "仪表板状态ID已经存在。", - "is-root-state": "根状态", - "delete-state-title": "删除仪表板状态", - "delete-state-text": "确定要删除仪表板状态 '{{stateName}}' 吗?", - "show-details": "显示详情", - "hide-details": "隐藏详情", - "select-state": "选择目标状态", - "state-controller": "状态控制" - }, - "datakey": { - "settings": "设置", - "advanced": "高级", - "label": "标签", - "color": "颜色", - "units": "单位符号", - "decimals": "小数位数", - "data-generation-func": "数据生成功能", - "use-data-post-processing-func": "使用数据后处理功能", - "configuration": "数据键配置", - "timeseries": "时间序列", - "attributes": "属性", - "alarm": "报警字段", - "timeseries-required": "需要设备时间序列。", - "timeseries-or-attributes-required": "设备时间/属性必填。", - "maximum-timeseries-or-attributes": "最大允许 { count, plural, 1 {1 时间序列/属性} other {# 时间序列/属性} }", - "alarm-fields-required": "警告字段必填。", - "function-types": "函数类型", - "function-types-required": "需要函数类型。", - "maximum-function-types": "至少需要 { count, plural, 1 {1 函数类型} other {# 函数类型} }" - }, - "datasource": { - "type": "数据源类型", - "name": "数据源名称", - "add-datasource-prompt": "请添加数据源" - }, - "details": { - "edit-mode": "编辑模式", - "toggle-edit-mode": "切换编辑模式" - }, - "device": { - "device": "设备", - "device-required": "设备必填", - "devices": "设备", - "management": "设备管理", - "view-devices": "查看设备", - "device-alias": "设备别名", - "aliases": "设备别名", - "no-alias-matching": "'{{alias}}' 没有找到。", - "no-aliases-found": "找不到别名。", - "no-key-matching": "'{{key}}' 没有找到。", - "no-keys-found": "找不到密钥。", - "create-new-alias": "创建一个新的!", - "create-new-key": "创建一个新的!", - "duplicate-alias-error": "找到重复别名 '{{alias}}'。
设备别名必须是唯一的。", - "configure-alias": "配置 '{{alias}}' 别名", - "no-devices-matching": "找不到与 '{{entity}}' 匹配的设备。", - "alias": "别名", - "alias-required": "需要设备别名。", - "remove-alias": "删除设备别名", - "add-alias": "添加设备别名", - "name-starts-with": "名称前缀", - "device-list": "设备列表", - "use-device-name-filter": "使用过滤器", - "device-list-empty": "没有被选中的设备", - "device-name-filter-required": "设备名称过滤器必填。", - "device-name-filter-no-device-matched": "找不到以'{{device}}' 开头的设备。", - "add": "添加设备", - "assign-to-customer": "分配给客户", - "assign-device-to-customer": "将设备分配给客户", - "assign-device-to-customer-text": "请选择要分配给客户的设备", - "make-public": "公开", - "make-private": "私有", - "no-devices-text": "找不到设备", - "assign-to-customer-text": "请选择客户分配设备", - "device-details": "设备详细信息", - "add-device-text": "添加新设备", - "credentials": "凭据", - "manage-credentials": "管理凭据", - "delete": "删除设备", - "assign-devices": "分配设备", - "assign-devices-text": "将{count,plural,1 {1 设备} other {# 设备} }分配给客户", - "delete-devices": "删除设备", - "unassign-from-customer": "取消分配客户", - "unassign-devices": "取消分配设备", - "unassign-devices-action-title": "从客户处取消分配{count,plural,1 {1 设备} other {# 设备} }", - "assign-new-device": "分配新设备", - "make-public-device-title": "您确定要将设备 '{{deviceName}}' 设为公开吗?", - "make-public-device-text": "确认后,设备及其所有数据将被设为公开并可被其他人访问。", - "make-private-device-title": "您确定要将设备 '{{deviceName}}' 设为私有吗?", - "make-private-device-text": "确认后,设备及其所有数据将被设为私有,不被其他人访问。", - "view-credentials": "查看凭据", - "delete-device-title": "您确定要删除设备的{{deviceName}}吗?", - "delete-device-text": "小心!确认后设备及其所有相关数据将不可恢复。", - "delete-devices-title": "您确定要删除{count,plural,1 {1 设备} other {# 设备} } 吗?", - "delete-devices-action-title": "删除 {count,plural,1 {1 设备} other {# 设备} }", - "delete-devices-text": "小心!确认后所有选定的设备将被删除,所有相关数据将不可恢复。", - "unassign-device-title": "您确定要取消分配设备 '{{deviceName}}'?", - "unassign-device-text": "确认后,设备将被取消分配,客户将无法访问。", - "unassign-device": "取消分配设备", - "unassign-devices-title": "您确定要取消分配{count,plural,1 {1 设备} other {# 设备} } 吗?", - "unassign-devices-text": "确认后,所有选定的设备将被取消分配,并且客户将无法访问。", - "device-credentials": "设备凭据", - "credentials-type": "凭据类型", - "access-token": "访问令牌", - "access-token-required": "需要访问令牌", - "access-token-invalid": "访问令牌长度必须为1到20个字符。", - "rsa-key": "RSA公钥", - "rsa-key-required": "需要RSA公钥", - "secret": "密钥", - "secret-required": "密钥必填", - "device-type": "设备类型", - "device-type-required": "设备类型必填。", - "select-device-type": "选择设备类型", - "enter-device-type": "输入设备类型", - "any-device": "任意设备", - "no-device-types-matching": "没有找到符合 '{{entitySubtype}}' 的设备类型。", - "device-type-list-empty": "未选择设备类型", - "device-types": "设备类型", - "name": "名称", - "name-required": "名称必填。", - "description": "说明", - "events": "事件", - "details": "详细信息", - "copyId": "复制设备ID", - "copyAccessToken": "复制访问令牌", - "idCopiedMessage": "设备ID已复制到剪贴板", - "accessTokenCopiedMessage": "设备访问令牌已复制到剪贴板", - "assignedToCustomer": "分配给客户", - "unable-delete-device-alias-title": "无法删除设备别名", - "unable-delete-device-alias-text": "设备别名 '{{deviceAlias}}' 不能够被删除,因为它被下列部件所使用:
{{widgetsList}}", - "is-gateway": "是网关", - "public": "公开", - "device-public": "设备公开", - "select-device": "选择设备" - }, - "dialog": { - "close": "关闭对话框" - }, - "error": { - "unable-to-connect": "无法连接到服务器!请检查您的互联网连接。", - "unhandled-error-code": "未处理的错误代码: {{errorCode}}", - "unknown-error": "未知错误" - }, - "entity": { - "entity": "实体", - "entities": "实体", - "aliases": "实体别名", - "entity-alias": "实体别名", - "unable-delete-entity-alias-title": "无法删除实体别名", - "unable-delete-entity-alias-text": "实体别名 '{{entityAlias}}' 被以下部件使用不能删除:
{{widgetsList}}", - "duplicate-alias-error": "别名 '{{alias}}' 重复。
同一仪表板别名必须唯一。", - "missing-entity-filter-error": "别名 '{{alias}}' 缺少过滤器", - "configure-alias": "别名 '{{alias}}' 配置", - "alias": "别名", - "alias-required": "实体别名必填。", - "remove-alias": "移除实体别名", - "add-alias": "添加实体别名", - "entity-list": "实体列表", - "entity-type": "实体类型", - "entity-types": "实体类型", - "entity-type-list": "实体类型列表", - "any-entity": "任意实体", - "enter-entity-type": "输入实体类型", - "no-entities-matching": "没有找到符合 '{{entity}}' 的实体。", - "no-entity-types-matching": "没有找到符合 '{{entityType}}' 类型的实体。", - "name-starts-with": "名称开始于", - "use-entity-name-filter": "用户过滤", - "entity-list-empty": "没有选择实体。", - "entity-type-list-empty": "没有选择实体类型。", - "entity-name-filter-required": "实体名过滤器必填。", - "entity-name-filter-no-entity-matched": "没有找到以 '{{entity}}' 开头的实体", - "all-subtypes": "所有", - "select-entities": "选择实体", - "no-aliases-found": "没有找到别名", - "no-alias-matching": "没有找到 '{{alias}}'", - "create-new-alias": "创建新别名", - "key": "键", - "key-name": "键名", - "no-keys-found": "没有找到键", - "no-key-matching": "没有找到键 '{{key}}'", - "create-new-key": "创建新键", - "type": "类型", - "type-required": "实体类型必填。", - "type-device": "设备", - "type-devices": "设备", - "list-of-devices": "{ count, plural, 1 {设备} other {# 设备列表} }", - "device-name-starts-with": "以 '{{prefix}}' 开头的设备", - "type-asset": "资产", - "type-assets": "资产", - "list-of-assets": "{ count, plural, 1 {资产} other {# 资产列表} }", - "asset-name-starts-with": "以 '{{prefix}}' 开头的资产", - "type-entity-view": "实体视图", - "type-entity-views": "实体视图", - "list-of-entity-views": "{ count, plural, 1 {实体视图} other {# 实体视图列表} }", - "entity-view-name-starts-with": "以 '{{prefix}}' 开头的实体视图", - "type-rule": "规则", - "type-rules": "规则", - "list-of-rules": "{ count, plural, 1 {规则} other {# 规则列表} }", - "rule-name-starts-with": "以 '{{prefix}}' 开头的规则", - "type-plugin": "插件", - "type-plugins": "插件", - "list-of-plugins": "{ count, plural, 1 {插件} other {# 插件列表} }", - "plugin-name-starts-with": "以 '{{prefix}}' 开头的插件", - "type-tenant": "租户", - "type-tenants": "租户", - "list-of-tenants": "{ count, plural, 1 {租户} other {# 租户列表} }", - "tenant-name-starts-with": "以 '{{prefix}}' 开头的租户", - "type-customer": "客户", - "type-customers": "客户", - "list-of-customers": "{ count, plural, 1 {客户} other {# 客户列表} }", - "customer-name-starts-with": "以 '{{prefix}}' 开头的客户", - "type-user": "用户", - "type-users": "用户", - "list-of-users": "{ count, plural, 1 {用户} other {# 用户列表} }", - "user-name-starts-with": "以 '{{prefix}}' 开头的用户", - "type-dashboard": "仪表板", - "type-dashboards": "仪表板", - "list-of-dashboards": "{ count, plural, 1 {仪表板} other {# 仪表板列表} }", - "dashboard-name-starts-with": "以 '{{prefix}}' 开头的仪表板", - "type-alarm": "警告", - "type-alarms": "警告", - "list-of-alarms": "{ count, plural, 1 {警告} other {# 警告列表} }", - "alarm-name-starts-with": "以 '{{prefix}}' 开头的警告", - "type-rulechain": "规则链", - "type-rulechains": "规则链库", - "list-of-rulechains": "{ count, plural, 1 {一个规则链} other {# 规则链列表} }", - "rulechain-name-starts-with": "规则链前缀名称 '{{prefix}}'", - "type-current-customer": "当前客户", - "search": "实体检索", - "selected-entities": "{ count, plural, 1 {1 实体} other {# 实体} } 被选中", - "entity-name": "实体名", - "details": "实体详情", - "no-entities-prompt": "没有找到实体", - "no-data": "无数据" - }, - "entity-view": { - "entity-view": "实体视图", - "entity-view-required": "实体视图必填。", - "entity-views": "实体视图", - "management": "实体视图管理", - "view-entity-views": "查看实体视图", - "entity-view-alias": "实体视图别名", - "aliases": "实体视图别名", - "no-alias-matching": "'{{alias}}' 没有找到。", - "no-aliases-found": "找不到别名。", - "no-key-matching": "'{{key}}' 没有找到。", - "no-keys-found": "找不到密钥。", - "create-new-alias": "创建一个新的!", - "create-new-key": "创建一个新的!", - "duplicate-alias-error": "找到重复别名 '{{alias}}'。
实体视图别名必须是唯一的。", - "configure-alias": "配置 '{{alias}}' 别名", - "no-devices-matching": "找不到与 '{{entity}}' 匹配的实体视图。", - "alias": "别名", - "alias-required": "需要实体视图别名。", - "remove-alias": "删除实体视图别名", - "add-alias": "添加实体视图别名", - "name-starts-with": "名称前缀", - "entity-view-list": "实体视图列表", - "use-entity-view-name-filter": "使用过滤器", - "entity-view-list-empty": "没有被选中的实体视图", - "entity-view-name-filter-required": "实体视图名称过滤器必填。", - "entity-view-name-filter-no-entity-view-matched": "找不到以'{{entityView}}' 开头的实体视图。", - "add": "添加实体视图", - "assign-to-customer": "分配给客户", - "assign-entity-view-to-customer": "将实体视图分配给客户", - "assign-entity-view-to-customer-text": "请选择要分配给客户的实体视图", - "no-entity-views-text": "找不到实体视图", - "assign-to-customer-text": "请选择客户分配实体视图", - "entity-view-details": "实体视图详细信息", - "add-entity-view-text": "添加新实体视图", - "delete": "删除实体视图", - "assign-entity-views": "分配实体视图", - "assign-entity-views-text": "分配 { count, plural, 1 {1 实体视图} other {# 实体视图} } 给客户", - "delete-entity-views": "删除实体视图", - "unassign-from-customer": "取消分配客户", - "unassign-entity-views": "取消分配实体视图", - "unassign-entity-views-action-title": "从客户处取消分配{count,plural,1 {1 实体视图} other {# 实体视图} }", - "assign-new-entity-view": "分配新实体视图", - "delete-entity-view-title": "确定要删除实体视图 '{{entityViewName}}'?", - "delete-entity-view-text": "小心!确认后实体视图及其所有相关数据将不可恢复。", - "delete-entity-views-title": "确定要删除 { count, plural, 1 {1 实体视图} other {# 实体视图} }?", - "delete-entity-views-action-title": "删除 { count, plural, 1 {1 实体视图} other {# 实体视图} }", - "delete-entity-views-text": "B小心,确认后,所有选定的实体视图将被删除,所有相关的数据将变得不可恢复。", - "unassign-entity-view-title": "您确定要取消对 '{{entityViewName}}'实体视图的分配吗?", - "unassign-entity-view-text": "确认后,实体视图将未分配,客户无法访问。", - "unassign-entity-view": "未分配实体视图", - "unassign-entity-views-title": "您确定要取消分配 { count, plural, 1 {1 实体视图} other {# 实体视图} }吗?", - "unassign-entity-views-text": "确认后,所有选定的实体视图将被分配,客户无法访问。", - "entity-view-type": "实体视图类型", - "entity-view-type-required": "实体视图类型必填。", - "select-entity-view-type": "选择实体视图类型", - "enter-entity-view-type": "输入实体视图类型", - "any-entity-view": "任何实体视图", - "no-entity-view-types-matching": "没有找到匹配 '{{entitySubtype}}' 的实体视图类型。", - "entity-view-type-list-empty": "实体视图类型未选择。", - "entity-view-types": "实体视图类型", - "name": "名称", - "name-required": "名称必填。", - "description": "描述", - "events": "事件", - "details": "详情", - "copyId": "复制实体视图ID", - "assignedToCustomer": "分配给客户", - "unable-entity-view-device-alias-title": "无法删除实体视图别名", - "unable-entity-view-device-alias-text": "实体视图别名 '{{entityViewAlias}}' 不能够被删除,因为它被下列部件所使用:
{{widgetsList}}", - "select-entity-view": "选择实体视图", - "make-public": "实体视图设为公开", - "make-private": "实体视图设为私有", - "start-date": "开始日期", - "start-ts": "开始时间", - "end-date": "结束日期", - "end-ts": "结束时间", - "date-limits": "日期限制", - "client-attributes": "客户端属性", - "shared-attributes": "共享属性", - "server-attributes": "服务端属性", - "timeseries": "时间序列", - "client-attributes-placeholder": "客户端属性", - "shared-attributes-placeholder": "共享属性", - "server-attributes-placeholder": "服务端属性", - "timeseries-placeholder": "时间序列", - "target-entity": "目标实体", - "attributes-propagation": "属性传播", - "attributes-propagation-hint": "每次保存或更新这个实体视图时,实体视图将自动从目标实体复制指定的属性。由于性能原因,目标实体属性不会在每次属性更改时传播到实体视图。您可以通过配置\"copy to view\"规则链中的规则节点,并将\"Post attributes\"和\"attributes Updated\"消息链接到新规则节点,从而启用自动传播。", - "timeseries-data": "时间序列数据", - "timeseries-data-hint": "配置目标实体的时间序列数据键,以便实体视图可以访问这些键。这个时间序列数据是只读的。", - "make-public-entity-view-title": "你确定你想创建公开 '{{entityViewName}}' 实体视图?", - "make-public-entity-view-text": "确认后,实体视图 及其所有数据将被公开并被他人访问。", - "make-private-entity-view-title": "你确定你想创建私有 '{{entityViewName}}' 实体视图?", - "make-private-entity-view-text": "确认后,实体视图及其所有数据将被私有化,无法被他人访问。" - }, - "event": { - "event-type": "事件类型", - "type-error": "错误", - "type-lc-event": "生命周期事件", - "type-stats": "类型统计", - "type-debug-rule-node": "调试", - "type-debug-rule-chain": "调试", - "no-events-prompt": "找不到事件", - "error": "错误", - "alarm": "报警", - "event-time": "事件时间", - "server": "服务器", - "body": "整体", - "method": "方法", - "type": "类型", - "entity": "实体", - "message-id": "消息ID", - "message-type": "消息类型", - "data-type": "数据类型", - "relation-type": "关系类型", - "metadata": "元数据", - "data": "数据", - "event": "事件", - "status": "状态", - "success": "成功", - "failed": "失败", - "messages-processed": "消息处理", - "errors-occurred": "错误发生" - }, - "extension": { - "extensions": "扩展", - "selected-extensions": "{ count, plural, 1 {1 扩展} other {# 扩展} } 被选择", - "type": "类型", - "key": "键名", - "value": "值", - "id": "ID", - "extension-id": "扩展ID", - "extension-type": "扩展类型", - "transformer-json": "JSON *", - "unique-id-required": "当前扩展ID已经存在。", - "delete": "删除扩展", - "add": "添加扩展", - "edit": "编辑扩展", - "delete-extension-title": "确实要删除扩展名'{{extensionId}}'吗?", - "delete-extension-text": "小心,确认后,扩展和所有相关数据将变得不可恢复。", - "delete-extensions-title": "您确定要删除 { count, plural, 1 {1 表达式} other {# 表达式} }吗?", - "delete-extensions-text": "小心,确认后,所有选定的扩展将被删除。", - "converters": "转换器", - "converter-id": "转换器序号", - "configuration": "配置", - "converter-configurations": "转换器的配置", - "token": "安全令牌", - "add-converter": "添加转换器", - "add-config": "添加转换器配置", - "device-name-expression": "设备名称表达式", - "device-type-expression": "设备类型表达式", - "custom": "顾客", - "to-double": "加倍", - "transformer": "转换器", - "json-required": "转换器JSON必填。", - "json-parse": "无法解析转换器JSON。", - "attributes": "属性", - "add-attribute": "添加属性", - "add-map": "添加映射元素", - "timeseries": "时间序列", - "add-timeseries": "添加时间序列", - "field-required": "必填字段", - "brokers": "代理服务器组", - "add-broker": "添加代理服务器", - "host": "主机", - "port": "端口", - "port-range": "端口应该在1到65535的范围内。", - "ssl": "Ssl", - "credentials": "证书", - "username": "用户名", - "password": "密码", - "retry-interval": "以毫秒为单位的重试间隔", - "anonymous": "匿名", - "basic": "Basic", - "pem": "PEM", - "ca-cert": "CA证书文件 *", - "private-key": "私钥文件 *", - "cert": "证书文件 *", - "no-file": "没有选择文件。", - "drop-file": "删除文件或单击以选择要上载的文件。", - "mapping": "映射", - "topic-filter": "主题滤波", - "converter-type": "转换类型", - "converter-json": "Json", - "json-name-expression": "设备名称JSON表达式", - "topic-name-expression": "设备名称主题表达式", - "json-type-expression": "设备类型JSON表达式", - "topic-type-expression": "设备类型主题表达式", - "attribute-key-expression": "属性关键字表达式", - "attr-json-key-expression": "属性键JSON表达式", - "attr-topic-key-expression": "属性关键字主题表达式", - "request-id-expression": "请求ID表达式", - "request-id-json-expression": "请求ID JSON表达式", - "request-id-topic-expression": "请求ID主题表达式", - "response-topic-expression": "响应主题表达式", - "value-expression": "值表达式", - "topic": "主题", - "timeout": "毫秒超时", - "converter-json-required": "转换JSON是必需的。", - "converter-json-parse": "无法解析转换JSON。", - "filter-expression": "过滤表达式", - "connect-requests": "连接请求", - "add-connect-request": "添加连接请求", - "disconnect-requests": "断开请求", - "add-disconnect-request": "添加断开请求", - "attribute-requests": "属性请求", - "add-attribute-request": "添加属性请求", - "attribute-updates": "属性更新", - "add-attribute-update": "添加属性更新", - "server-side-rpc": "服务端RPC", - "add-server-side-rpc-request": "添加服务端RPC请求", - "device-name-filter": "设备名称滤波", - "attribute-filter": "属性滤波", - "method-filter": "方法滤波", - "request-topic-expression": "请求主题表达式", - "response-timeout": "毫秒内响应超时", - "topic-expression": "主题表达", - "client-scope": "客户范围", - "add-device": "添加服务器", - "opc-server": "服务器组", - "opc-add-server": "添加服务器", - "opc-add-server-prompt": "请添加服务器", - "opc-application-name": "应用名称", - "opc-application-uri": "应用URI", - "opc-scan-period-in-seconds": "秒级扫描周期", - "opc-security": "安全性", - "opc-identity": "身份", - "opc-keystore": "密钥库", - "opc-type": "类型", - "opc-keystore-type": "类型", - "opc-keystore-location": "位置 *", - "opc-keystore-password": "密码", - "opc-keystore-alias": "别名", - "opc-keystore-key-password": "密钥密码", - "opc-device-node-pattern": "设备节点模式", - "opc-device-name-pattern": "设备名称模式", - "modbus-server": "Servers/slaves", - "modbus-add-server": "添加 server/slave", - "modbus-add-server-prompt": "请添加 server/slave", - "modbus-transport": "传输", - "modbus-port-name": "串口名称", - "modbus-encoding": "编码", - "modbus-parity": "奇偶性", - "modbus-baudrate": "波特率", - "modbus-databits": "数据位", - "modbus-stopbits": "停止位", - "modbus-databits-range": "数据位应该在7到8的范围内。", - "modbus-stopbits-range": "停止位应该在1到2的范围内。", - "modbus-unit-id": "单位编号", - "modbus-unit-id-range": "单位ID应该在1到247的范围内", - "modbus-device-name": "设备名称", - "modbus-poll-period": "轮询周期 (ms)", - "modbus-attributes-poll-period": "轮询属性周期 (ms)", - "modbus-timeseries-poll-period": "时间序列轮询周期 (ms)", - "modbus-poll-period-range": "轮询周期应为正值。", - "modbus-tag": "标签", - "modbus-function": "函数", - "modbus-register-address": "寄存器地址", - "modbus-register-address-range": "寄存器地址应该在0到65535的范围内。", - "modbus-register-bit-index": "位索引", - "modbus-register-bit-index-range": "位索引应该在0到15的范围内。", - "modbus-register-count": "寄存器计数", - "modbus-register-count-range": "寄存器计数应该是一个正值。", - "modbus-byte-order": "字节顺序", - "sync": { - "status": "状态", - "sync": "同步", - "not-sync": "不同步", - "last-sync-time": "最后同步时间", - "not-available": "无法使用" - }, - "export-extensions-configuration": "导出扩展配置", - "import-extensions-configuration": "导入扩展配置", - "import-extensions": "导入扩展", - "import-extension": "导入扩展", - "export-extension": "导出扩展", - "file": "扩展文件", - "invalid-file-error": "无效的扩展文件" - }, - "fullscreen": { - "expand": "展开到全屏", - "exit": "退出全屏", - "toggle": "切换全屏模式", - "fullscreen": "全屏" - }, - "function": { - "function": "函数" - }, - "grid": { - "delete-item-title": "您确定要删除此项吗?", - "delete-item-text": "注意,确认后此项及其所有相关数据将变得不可恢复。", - "delete-items-title": "你确定你要删除 { count, plural, 1 {1 项} other {# 项} }吗?", - "delete-items-action-title": "删除 { count, plural, 1 {1 项} other {# 项} }", - "delete-items-text": "注意,确认后所有选择的项目将被删除,所有相关数据将不可恢复。", - "add-item-text": "添加新项目", - "no-items-text": "没有找到项目", - "item-details": "项目详细信息", - "delete-item": "删除项目", - "delete-items": "删除项目", - "scroll-to-top": "滚动到顶部" - }, - "help": { - "goto-help-page": "转到帮助页面" - }, - "home": { - "home": "首页", - "profile": "属性", - "logout": "注销", - "menu": "菜单", - "avatar": "头像", - "open-user-menu": "打开用户菜单" - }, - "import": { - "no-file": "没有选择文件", - "drop-file": "拖动一个JSON文件或者单击以选择要上传的文件。" - }, - "item": { - "selected": "选择" - }, - "js-func": { - "no-return-error": "函数必须返回值!", - "return-type-mismatch": "函数必须返回 '{{type}}' 类型的值!", - "tidy": "整洁" - }, - "key-val": { - "key": "键名", - "value": "值", - "remove-entry": "删除条目", - "add-entry": "增加条目", - "no-data": "没有条目" - }, - "layout": { - "layout": "布局", - "manage": "布局管理", - "settings": "布局设置", - "color": "颜色", - "main": "主体", - "right": "右侧", - "select": "选择目标布局" - }, - "legend": { - "position": "图例位置", - "show-max": "显示最大值", - "show-min": "显示最小值", - "show-avg": "显示平均值", - "show-total": "显示总数", - "settings": "图例设置", - "min": "最小值", - "max": "最大值", - "avg": "平均值", - "total": "总数" - }, - "login": { - "login": "登录", - "request-password-reset": "请求密码重置", - "reset-password": "重置密码", - "create-password": "创建密码", - "passwords-mismatch-error": "输入的密码必须相同!", - "password-again": "再次输入密码", - "sign-in": "登录 ", - "username": "用户名(电子邮件)", - "remember-me": "记住我", - "forgot-password": "忘记密码?", - "password-reset": "密码重置", - "new-password": "新密码", - "new-password-again": "再次输入新密码", - "password-link-sent-message": "密码重置链接已成功发送!", - "email": "电子邮件" - }, - "position": { - "top": "顶部", - "bottom": "底部", - "left": "左侧", - "right": "右侧" - }, - "profile": { - "profile": "属性", - "change-password": "更改密码", - "current-password": "当前密码" - }, - "relation": { - "relations": "关联", - "direction": "方向", - "search-direction": { - "FROM": "从", - "TO": "到" - }, - "direction-type": { - "FROM": "从", - "TO": "到" - }, - "from-relations": "向外的关联", - "to-relations": "向内的关联", - "selected-relations": "{ count, plural, 1 {1 关联} other {# 关联} } 被选中", - "type": "类型", - "to-entity-type": "到实体类型", - "to-entity-name": "到实体名称", - "from-entity-type": "从实体类型", - "from-entity-name": "从实体类型", - "to-entity": "到实体", - "from-entity": "从实体", - "delete": "删除关联", - "relation-type": "关联类型", - "relation-type-required": "关联类型必填", - "any-relation-type": "任意类型", - "add": "添加关联", - "edit": "编辑关联", - "delete-to-relation-title": "确定要删除实体 '{{entityName}}' 的关联吗?", - "delete-to-relation-text": "确定删除后实体 '{{entityName}}' 将取消与当前实体的关联关系。", - "delete-to-relations-title": "确定要删除 { count, plural, 1 {1 关联} other {# 关联} }?", - "delete-to-relations-text": "确定删除所有选择的关联关系后,与当前实体对应的所有关联关系将被移除。", - "delete-from-relation-title": "确定要从实体 '{{entityName}}' 删除关联吗?", - "delete-from-relation-text": "确定删除后,当前实体将与实体 '{{entityName}}' 取消关联", - "delete-from-relations-title": "确定删除 { count, plural, 1 {1 关联} other {# 关联} } 吗?", - "delete-from-relations-text": "确定删除所有选择的关联关系后,当前实体将与对应的实体取消关联", - "remove-relation-filter": "移除关联过滤器", - "add-relation-filter": "添加关联过滤器", - "any-relation": "任意关联", - "relation-filters": "关联过滤器", - "additional-info": "附加信息 (JSON)", - "invalid-additional-info": "无法解析附加信息json。" - }, - "rulechain": { - "rulechain": "规则链", - "rulechains": "规则链库", - "root": "根实体", - "delete": "删除规则", - "activate": "激活规则", - "suspend": "暂停规则", - "active": "激活", - "suspended": "暂停", - "name": "名称", - "name-required": "名称必填。", - "description": "描述", - "add": "添加规则", - "set-root": "创建规则链根", - "set-root-rulechain-title": "您确定要生成规则链'{{RuleChainName}}'根吗?", - "set-root-rulechain-text": "确认之后,规则链将变为根规格链,并将处理所有传入的传输消息。", - "delete-rulechain-title": " 确实要删除规则链'{{ruleChainName}}'吗?", - "delete-rulechain-text": "小心,在确认规则链和所有相关数据将变得不可恢复。", - "delete-rulechains-title": "确实要删除{count, plural, 1 { 1 规则链} other {# 规则链库} }吗?", - "delete-rulechains-action-title": "删除 { count, plural, 1 {1 规则链} other {# 规则链库} }", - "delete-rulechains-text": "小心,确认后,所有选定的规则链将被删除,所有相关的数据将变得不可恢复。", - "add-rulechain-text": "添加新的规则链", - "no-rulechains-text": "规则链没有发现", - "rulechain-details": "规则链详情", - "details": "详情", - "events": "事件", - "system": "系统", - "import": "导入规则", - "export": "导出规则", - "export-failed-error": "无法导出规则:{{error}}", - "create-new-rulechain": "创建新的规则链", - "rulechain-file": "规则链文件", - "invalid-rulechain-file-error": "不能导入规则链:无效的规则链数据格式。", - "copyId": "复制规则链ID", - "idCopiedMessage": "规则ID已经复制到粘贴板", - "select-rulechain": "选择规则链", - "no-rulechains-matching": "没有发现匹配'{{entity}}'的规则链。", - "rulechain-required": "规则链必填", - "management": "规则集管理", - "debug-mode": "调试模式" - }, - "rulenode": { - "details": "详情", - "events": "事件", - "search": "搜索节点", - "open-node-library": "打开节点库", - "add": "添加规则节点", - "name": "名称", - "name-required": "名称必填。", - "type": "类型", - "description": "描述", - "delete": "删除规则节点", - "select-all-objects": "选择所有节点和连接", - "deselect-all-objects": "取消选择所有节点和连接", - "delete-selected-objects": "删除选定的节点和连接", - "delete-selected": "删除选定", - "select-all": "选择全部", - "copy-selected": "选择副本", - "deselect-all": "取消选择", - "rulenode-details": "规则节点详情", - "debug-mode": "调试模式", - "configuration": "配置", - "link": "链接", - "link-details": "规则节点链接详情", - "add-link": "添加链接", - "link-label": "链接标签", - "link-label-required": "链接标签必填", - "custom-link-label": "自定义链接标签", - "custom-link-label-required": "自定义链接标签必填", - "type-filter": "滤波器", - "type-filter-details": "使用配置条件过滤传入消息", - "type-enrichment": "属性集", - "type-enrichment-details": "向消息元数据中添加附加信息", - "type-transformation": "变换", - "type-transformation-details": "更改消息有效载荷和元数据", - "type-action": "动作", - "type-action-details": "执行特别动作", - "type-external": "外部的", - "type-external-details": "与外部系统交互", - "type-rule-chain": "规则链", - "type-rule-chain-details": "将传入消息转发到指定的规则链", - "type-input": "输入", - "type-input-details": "规则链的逻辑输入,将传入消息转发到下一个相关规则节点", - "directive-is-not-loaded": "定义的配置指令 '{{directiveName}}' 不可用。", - "ui-resources-load-error": "加载配置UI资源失败。", - "invalid-target-rulechain": "无法解析目标规则链!", - "test-script-function": "测试脚本功能", - "message": "消息", - "message-type": "消息类型", - "message-type-required": "消息类型必填", - "metadata": "元数据", - "metadata-required": "元数据项不能为空。", - "output": "输出", - "test": "测试", - "help": "帮助" - }, - "tenant": { - "tenant": "租户", - "tenants": "租户", - "management": "租户管理", - "add": "添加租户", - "admins": "管理员", - "manage-tenant-admins": "管理租户管理员", - "delete": "删除租户", - "add-tenant-text": "添加新租户", - "no-tenants-text": "没有找到租户", - "tenant-details": "租客详情", - "delete-tenant-title": "您确定要删除租户'{{tenantTitle}}'吗?", - "delete-tenant-text": "小心!确认后,租户和所有相关数据将不可恢复。", - "delete-tenants-title": "您确定要删除 {count,plural,1 {1 租户} other {# 租户} } 吗?", - "delete-tenants-action-title": "删除 { count, plural, 1 {1 租户} other {# 租户} }", - "delete-tenants-text": "小心!确认后,所有选定的租户将被删除,所有相关数据将不可恢复。", - "title": "标题", - "title-required": "标题必填。", - "description": "描述", - "details": "详情", - "events": "事件", - "copyId": "复制租户ID", - "idCopiedMessage": "租户ID已经复制到粘贴板", - "select-tenant": "选择租户", - "no-tenants-matching": "没有找到符合 '{{entity}}' 的租户", - "tenant-required": "租户必填" - }, - "timeinterval": { - "seconds-interval": "{ seconds, plural, 1 {1 秒} other {# 秒} }", - "minutes-interval": "{ minutes, plural, 1 {1 分} other {# 分} }", - "hours-interval": "{ hours, plural, 1 {1 小时} other {# 小时} }", - "days-interval": "{ days, plural, 1 {1 天} other {# 天} }", - "days": "天", - "hours": "时", - "minutes": "分", - "seconds": "秒", - "advanced": "高级" + "select-alarm": "选择警告", + "selected-alarms": "已选择 { count, plural, 1 {1 个警告} other {# 个警告} }", + "severity": "严重程度", + "severity-critical": "危险", + "severity-indeterminate": "不确定", + "severity-major": "重要", + "severity-minor": "次要", + "severity-warning": "警告", + "start-time": "开始时间", + "status": "状态", + "type": "类型" + }, + "alias": { + "add": "添加别名", + "all-entities": "所有实体", + "any-relation": "不限", + "default-entity-parameter-name": "默认", + "default-state-entity": "默认状态实体", + "duplicate-alias": "别名已经存在。", + "edit": "编辑别名", + "entity-filter": "实体过滤", + "entity-filter-no-entity-matched": "未找到符合指定过滤条件的实体。", + "filter-type": "过滤类型", + "filter-type-apiUsageState": "Api使用状态", + "filter-type-asset-search-query": "资产搜索查询", + "filter-type-asset-search-query-description": "类型为 {{assetTypes}} 且具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的资产", + "filter-type-asset-type": "资产类型", + "filter-type-asset-type-and-name-description": "类型为 '{{assetType}}' 且以 '{{prefix}}' 开头的资产", + "filter-type-asset-type-description": "类型为 '{{assetType}}' 的资产", + "filter-type-device-search-query": "设备搜索查询", + "filter-type-device-search-query-description": "类型为 {{deviceTypes}} 且具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的设备", + "filter-type-device-type": "设备类型", + "filter-type-device-type-and-name-description": "类型为 '{{deviceType}}' 且以 '{{prefix}}' 开头的设备", + "filter-type-device-type-description": "类型为 '{{deviceType}}' 的设备", + "filter-type-entity-list": "实体列表", + "filter-type-entity-name": "实体名称", + "filter-type-entity-view-search-query": "实体视图搜索查询", + "filter-type-entity-view-search-query-description": "类型为 {{entityViewTypes}} 且具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的实体视图", + "filter-type-entity-view-type": "实体视图类型", + "filter-type-entity-view-type-and-name-description": "类型为 {{entityView}}' 且以 '{{prefix}}' 开头的实体视图", + "filter-type-entity-view-type-description": "类型为 '{{entityView}}' 的实体视图", + "filter-type-relations-query": "关联查询", + "filter-type-relations-query-description": "具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的 {{entities}} ", + "filter-type-required": "过滤类型必填。", + "filter-type-single-entity": "单个实体", + "filter-type-state-entity": "实体(仪表板状态)", + "filter-type-state-entity-description": "实体令牌(仪表板状态参数)", + "last-level-relation": "仅获取最后一级关联", + "max-relation-level": "最大关联层级", + "name": "别名", + "name-required": "别名必填", + "no-entity-filter-specified": "没有指定实体过滤条件", + "resolve-multiple": "解决为多实体", + "root-entity": "根实体", + "root-state-entity": "使用仪表板状态实体作为根实体", + "state-entity": "仪表板状态实体", + "state-entity-parameter-name": "状态实体参数名称", + "unlimited-level": "不限层级" + }, + "api-usage": { + "api-usage": "Api 使用统计", + "data-points": "数据点", + "data-points-storage-days": "数据点存储天数", + "email": "Email", + "email-messages": "Email messages", + "email-messages-daily-activity": "Email messages daily activity", + "email-messages-hourly-activity": "Email messages hourly activity", + "email-messages-monthly-activity": "Email messages monthly activity", + "exceptions": "Exceptions", + "executions": "Executions", + "javascript": "JavaScript", + "javascript-executions": "JavaScript executions", + "javascript-functions": "JavaScript functions", + "javascript-functions-daily-activity": "JavaScript functions daily activity", + "javascript-functions-hourly-activity": "JavaScript functions hourly activity", + "javascript-functions-monthly-activity": "JavaScript functions monthly activity", + "latest-error": "最新错误", + "messages": "信息", + "permanent-failures": "${entityName} 永久性故障", + "permanent-timeouts": "${entityName} 永久超时", + "processing-failures": "${entityName} 处理失败", + "processing-failures-and-timeouts": "处理失败和超时", + "processing-timeouts": "${entityName} 处理超时", + "queue-stats": "队列统计信息", + "rule-chain": "规则链", + "rule-engine": "规则引擎", + "rule-engine-daily-activity": "Rule Engine daily activity", + "rule-engine-executions": "Rule Engine executions", + "rule-engine-hourly-activity": "Rule Engine hourly activity", + "rule-engine-monthly-activity": "Rule Engine monthly activity", + "rule-engine-statistics": "规则引擎统计信息", + "rule-node": "规则节点", + "sms": "SMS", + "sms-messages": "短信", + "sms-messages-daily-activity": "SMS messages daily activity", + "sms-messages-hourly-activity": "SMS messages hourly activity", + "sms-messages-monthly-activity": "SMS messages monthly activity", + "successful": "${entityName} 成功", + "telemetry": "遥测数据", + "telemetry-persistence": "Telemetry persistence", + "telemetry-persistence-daily-activity": "Telemetry persistence daily activity", + "telemetry-persistence-hourly-activity": "Telemetry persistence hourly activity", + "telemetry-persistence-monthly-activity": "Telemetry persistence monthly activity", + "transport": "Transport", + "transport-daily-activity": "运输日常活动", + "transport-data-points": "传输数据点", + "transport-hourly-activity": "Transport hourly activity", + "transport-messages": "传输消息", + "transport-monthly-activity": "运输月度活动", + "view-details": "查看详细信息", + "view-statistics": "查看统计信息" + }, + "asset": { + "add": "添加资产", + "add-asset-text": "添加新资产", + "any-asset": "任何资产", + "asset": "资产", + "asset-details": "资产详情", + "asset-file": "资产档案", + "asset-public": "资产公开", + "asset-required": "资产必填", + "asset-type": "资产类型", + "asset-type-list-empty": "资产类型未选择。", + "asset-type-required": "资产类型必填。", + "asset-types": "资产类型", + "assets": "资产", + "assign-asset-to-customer": "将资产分配给客户", + "assign-asset-to-customer-text": "请选择要分配给客户的资产", + "assign-assets": "分配资产", + "assign-assets-text": "分配 { count, plural, 1 {1 个资产} other {# 个资产} } 给客户", + "assign-new-asset": "分配新资产", + "assign-to-customer": "分配给客户", + "assign-to-customer-text": "请选择客户以分配资产", + "assignedToCustomer": "分配客户", + "copyId": "复制资产ID", + "delete": "删除资产", + "delete-asset-text": "小心!确认后资产及其所有相关数据将不可恢复。", + "delete-asset-title": "确定要删除资产 '{{assetName}}'?", + "delete-assets": "删除资产", + "delete-assets-action-title": "删除 { count, plural, 1 {1 个资产} other {# 个资产} }", + "delete-assets-text": "请注意:确认后,所有选定的资产将被删除,所有相关的数据将变得不可恢复。", + "delete-assets-title": "确定要删除 { count, plural, 1 {1 个资产} other {# 个资产} }?", + "description": "说明", + "details": "细节", + "enter-asset-type": "输入资产类型", + "events": "事件", + "idCopiedMessage": "资产ID已经复制到粘贴板", + "import": "导入资产", + "label": "标签", + "make-private": "资产设为私有", + "make-private-asset-text": "确认后,资产及其所有数据将被私有化,无法被他人访问。", + "make-private-asset-title": "你确定你想创建私有 '{{assetName}}' 资产?", + "make-public": "资产设为公开", + "make-public-asset-text": "确认后,资产及其所有数据将被公开并被他人访问。", + "make-public-asset-title": "你确定你想创建公开'{{assetName}}'资产?", + "management": "资产管理", + "name": "名称", + "name-required": "名称必填。", + "name-starts-with": "资产名称以此开头", + "no-asset-types-matching": "没有找到匹配 '{{entitySubtype}}' 的资产类型。", + "no-assets-matching": "没有找到匹配 '{{entity}}' 的资产。", + "no-assets-text": "未找到资产", + "public": "公开", + "search": "搜索资产", + "select-asset": "选择资产", + "select-asset-type": "选择资产类型", + "selected-assets": "已选择 { count, plural, 1 {1 个资产} other {# 个资产} }", + "type": "类型", + "type-required": "类型必填。", + "unassign-asset": "未分配资产", + "unassign-asset-text": "确认后,资产将未分配,客户无法访问。", + "unassign-asset-title": "您确定要取消对'{{assetName}}'资产的分配吗?", + "unassign-assets": "取消分配资产", + "unassign-assets-action-title": "从客户处取消分配 { count, plural, 1 {1 个资产} other {# 个资产} }", + "unassign-assets-text": "确认后,所有选定的资产将被分配,客户无法访问。", + "unassign-assets-title": "您确定要取消分配 { count, plural, 1 {1 个资产} other {# 个资产} }吗?", + "unassign-from-customer": "取消分配客户", + "view-assets": "查看资产" + }, + "attribute": { + "add": "添加属性", + "add-to-dashboard": "添加到仪表板", + "add-widget-to-dashboard": "将部件添加到仪表板", + "attributes": "属性", + "attributes-scope": "设备属性范围", + "delete-attributes": "删除属性", + "delete-attributes-text": "注意,确认后所有选中的属性都会被删除。", + "delete-attributes-title": "您确定要删除 { count, plural, 1 {1 个属性} other {# 个属性} }吗?", + "enter-attribute-value": "输入属性值", + "key": "键名", + "key-required": "属性键必填。", + "last-update-time": "最后更新时间", + "latest-telemetry": "最新遥测数据", + "next-widget": "下一个部件", + "no-attributes-text": "找不到属性", + "no-telemetry-text": "未找到遥测数据", + "prev-widget": "上一个部件", + "scope-client": "客户端属性", + "scope-latest-telemetry": "最新遥测数据", + "scope-server": "服务端属性", + "scope-shared": "共享属性", + "selected-attributes": "已选择{ count, plural, 1 {1 个属性} other {# 个属性} }", + "selected-telemetry": "已选择 { count, plural, 1 {1 telemetry unit} other {# telemetry units} }", + "show-on-widget": "在部件上显示", + "value": "价值", + "value-required": "属性值必填。", + "widget-mode": "部件模式" + }, + "audit-log": { + "action-data": "活动数据", + "audit": "审计", + "audit-log-details": "审计日志详情", + "audit-logs": "审计日志", + "clear-search": "清空查找", + "details": "细节", + "entity-name": "实体名称", + "entity-type": "实体类型", + "failure-details": "失败详情", + "no-audit-logs-prompt": "找不到日志", + "search": "查找审计日志", + "status": "状态", + "status-failure": "失败", + "status-success": "成功", + "timestamp": "时间戳", + "type": "类型", + "type-activated": "激活", + "type-added": "添加", + "type-alarm-ack": "已确认", + "type-alarm-clear": "已清除", + "type-assigned-from-tenant": "从租户分配", + "type-assigned-to-customer": "分配给客户", + "type-assigned-to-tenant": "分配给租户", + "type-attributes-deleted": "删除属性", + "type-attributes-read": "读取属性", + "type-attributes-updated": "更新属性", + "type-credentials-read": "读取凭证", + "type-credentials-updated": "更新凭证", + "type-deleted": "删除", + "type-lockout": "锁定", + "type-login": "登录", + "type-logout": "注销", + "type-provision-failure": "设备预配置失败", + "type-provision-success": "设备已预配置", + "type-relation-add-or-update": "关联已更新", + "type-relation-delete": "关联已删除", + "type-relations-delete": "删除所有关联", + "type-rpc-call": "RPC调用", + "type-suspended": "暂停", + "type-timeseries-deleted": "遥测数据已删除", + "type-timeseries-updated": "遥测数据已更新", + "type-unassigned-from-customer": "未分配给客户", + "type-updated": "更新", + "user": "用户" + }, + "common": { + "created-time": "创建时间", + "enter-password": "输入密码", + "enter-search": "输入检索条件", + "enter-username": "输入用户名", + "loading": "Loading...", + "password": "密码", + "username": "用户名" + }, + "confirm-on-exit": { + "html-message": "您有未保存的更改。
确定要离开此页面吗?", + "message": "您有未保存的更改。确定要离开此页吗?", + "title": "未保存的更改" + }, + "contact": { + "address": "地址", + "address2": "地址2", + "city": "城市", + "country": "国家", + "email": "电子邮件", + "no-address": "无地址", + "phone": "电话", + "postal-code": "邮政编码", + "postal-code-invalid": "只允许数字。", + "state": "州" + }, + "content-type": { + "binary": "Binary (Base64)", + "json": "Json", + "text": "Text" + }, + "custom": { + "widget-action": { + "action-cell-button": "动作单元格按钮", + "element-click": "点击HTML元素时", + "marker-click": "点击标记时", + "node-selected": "选择节点时", + "pie-slice-click": "点击切片时", + "polygon-click": "单击多边形", + "row-click": "点击行时", + "row-double-click": "双击行时", + "tooltip-tag-action": "Tooltip tag action" + } + }, + "customer": { + "add": "添加客户", + "add-customer-text": "添加新客户", + "assets": "客户资产", + "copyId": "复制客户ID", + "customer": "客户", + "customer-details": "客户详情", + "customer-required": "客户必填", + "customers": "客户", + "dashboard": "客户仪表板", + "dashboards": "客户仪表板", + "default-customer": "默认客户", + "default-customer-required": "为了调试租户级别上的仪表板,需要默认客户。", + "delete": "删除此客户", + "delete-customer-text": "小心!确认后,客户及其所有相关数据将不可恢复。", + "delete-customer-title": "您确定要删除客户'{{customerTitle}}'吗?", + "delete-customers-action-title": "删除 { count, plural, 1 {1 个客户} other {# 个客户} }", + "delete-customers-text": "小心!确认后,所有选定的客户将被删除,所有相关数据将不可恢复。", + "delete-customers-title": "您确定要删除 { count, plural, 1 {1 个客户} other {# 个客户} }吗?", + "description": "说明", + "details": "细节", + "devices": "客户设备", + "entity-views": "客户实体视图", + "events": "事件", + "idCopiedMessage": "客户ID已复制到粘贴板", + "manage-assets": "管理资产", + "manage-customer-assets": "管理客户资产", + "manage-customer-dashboards": "管理客户仪表板", + "manage-customer-devices": "管理客户设备", + "manage-customer-users": "管理客户用户", + "manage-dashboards": "管理仪表板", + "manage-devices": "管理设备", + "manage-public-assets": "管理公共资产", + "manage-public-dashboards": "管理公共仪表板", + "manage-public-devices": "管理公共设备", + "manage-users": "管理用户", + "management": "客户管理", + "no-customers-matching": "没有找到匹配 '{{entity}}' 的客户。", + "no-customers-text": "没有找到客户", + "public-assets": "公共资产", + "public-dashboards": "公共仪表板", + "public-devices": "公共设备", + "public-entity-views": "公共实体视图", + "search": "搜索客户", + "select-customer": "选择客户", + "select-default-customer": "选择默认的客户", + "selected-customers": "已选择 { count, plural, 1 {1 个客户} other {# 个客户} }", + "title": "标题", + "title-required": "标题必填。" + }, + "dashboard": { + "add": "添加仪表板", + "add-dashboard-text": "添加新的仪表板", + "add-state": "添加仪表板状态", + "add-widget": "添加新的部件", + "alias-resolution-error-title": "仪表板别名配置错误", + "assign-dashboard-to-customer": "将仪表板分配给客户", + "assign-dashboard-to-customer-text": "请选择要分配给客户的仪表板", + "assign-dashboards": "分配仪表板", + "assign-dashboards-text": "分配 { count, plural, 1 {1 个仪表板} other {# 个仪表板} } 给客户", + "assign-new-dashboard": "分配新的仪表板", + "assign-to-customer": "分配给客户", + "assign-to-customer-text": "请选择客户分配仪表板", + "assign-to-customers": "将仪表板分配给客户", + "assign-to-customers-text": "请选择客户指定仪表板", + "assigned-customers": "已分配的客户", + "assignedToCustomer": "分配给客户", + "assignedToCustomers": "分配给客户", + "autofill-height": "自动填充布局高度", + "background-color": "背景颜色", + "background-image": "背景图片", + "background-size-mode": "背景大小模式", + "close-toolbar": "关闭工具栏", + "columns-count": "列数", + "columns-count-required": "需要列数。", + "configuration-error": "配置错误", + "copy-public-link": "复制公共链接", + "create-new": "创建新的仪表板", + "create-new-dashboard": "创建新的仪表板", + "create-new-widget": "创建新部件", + "dashboard": "仪表板", + "dashboard-details": "仪表板详情", + "dashboard-file": "仪表板文件", + "dashboard-import-missing-aliases-title": "配置导入仪表板使用的别名", + "dashboard-required": "仪表板必填。", + "dashboards": "仪表板库", + "delete": "删除仪表板", + "delete-dashboard-text": "小心!确认后仪表板及其所有相关数据将不可恢复。", + "delete-dashboard-title": "您确定要删除仪表板 '{{dashboardTitle}}'吗?", + "delete-dashboards": "删除仪表板", + "delete-dashboards-action-title": "删除 { count, plural, 1 {1 个仪表板} other {# 个仪表板} }", + "delete-dashboards-text": "小心!确认后所有选定的仪表板将被删除,所有相关数据将不可恢复。", + "delete-dashboards-title": "确定要删除 { count, plural, 1 {1 个仪表板} other {# 个仪表板} }吗?", + "delete-state": "删除仪表板状态", + "delete-state-text": "确定要删除仪表板状态 '{{stateName}}' 吗?", + "delete-state-title": "删除仪表板状态", + "description": "说明", + "details": "细节", + "display-dashboard-export": "显示导出", + "display-dashboard-timewindow": "显示时间窗口", + "display-dashboards-selection": "显示仪表板选项", + "display-entities-selection": "显示实体选项", + "display-filters": "显示过滤器", + "display-title": "显示仪表板标题", + "drop-image": "拖拽图像或单击以选择要上传的文件。", + "edit-state": "仪表板状态编辑", + "export": "导出仪表板", + "export-failed-error": "无法导出仪表板: {{error}}", + "hide-details": "隐藏详情", + "horizontal-margin": "水平边距", + "horizontal-margin-required": "需要水平边距值。", + "import": "导入仪表板", + "import-widget": "导入部件", + "invalid-aliases-config": "无法找到与某些别名过滤器匹配的任何设备。
请联系您的管理员以解决此问题。", + "invalid-dashboard-file-error": "无法导入仪表板: 仪表板数据结构无效。", + "invalid-widget-file-error": "无法导入窗口部件: 窗口部件数据结构无效。", + "is-root-state": "根状态", + "make-private": "仪表板设为私有", + "make-private-dashboard": "仪表板设为私有", + "make-private-dashboard-text": "确认后,仪表板将被设为私有,不能被其他人访问。", + "make-private-dashboard-title": "您确定要将仪表板 '{{dashboardTitle}}' 设为私有吗?", + "make-public": "仪表板设为公开", + "manage-assigned-customers": "管理已分配的客户", + "manage-states": "仪表板状态管理", + "management": "仪表板管理", + "margin-required": "边距值必填。", + "max-columns-count-message": "只允许最多1000列", + "max-horizontal-margin-message": "只允许50作为最大水平边距值。", + "max-margin-message": "仅允许50作为最大边距值。", + "max-mobile-row-height-message": "移动端行高距最多200px。", + "max-vertical-margin-message": "只允许50作为最大垂直边距值。", + "min-columns-count-message": "只允许最少10列", + "min-horizontal-margin-message": "只允许0作为最小水平边距值。", + "min-margin-message": "最小边距值只允许为0。", + "min-mobile-row-height-message": "移动端行高距至少5px。", + "min-vertical-margin-message": "只允许0作为最小垂直边距值。", + "mobile-layout": "移动端布局设置", + "mobile-row-height": "移动端行高距(px)", + "mobile-row-height-required": "移动端行高距必填。", + "new-dashboard-title": "新仪表板标题", + "no-dashboards-matching": "找不到符合 '{{entity}}' 的仪表板。", + "no-dashboards-text": "没有找到仪表板", + "no-image": "无图像选择", + "no-states-text": "找不到状态", + "no-widgets": "没有配置部件", + "open-dashboard": "打开仪表板", + "open-toolbar": "打开仪表板工具栏", + "public": "公开", + "public-dashboard-notice": "提示: 不要忘记将相关设备公开以访问其数据。", + "public-dashboard-text": "你的仪表板 {{dashboardTitle}} 已被公开,可通过如下 链接访问:", + "public-dashboard-title": "仪表板现已公开", + "public-link": "公共链接", + "public-link-copied-message": "仪表板的公共链接已被复制到剪贴板", + "search": "搜索仪表板", + "search-states": "仪表板状态检索", + "select-dashboard": "选择仪表板", + "select-devices": "选择设备", + "select-existing": "选择现有仪表板", + "select-state": "选择目标状态", + "select-widget-subtitle": "可用的部件类型列表", + "select-widget-title": "选择部件", + "selected-dashboards": "已选择 { count, plural, 1 {1 个仪表盘} other {# 个仪表盘} }", + "selected-states": "已选择 { count, plural, 1 {1 个仪表板状态} other {# 个仪表板状态} }", + "set-background": "设置背景", + "settings": "设置", + "show-details": "显示详情", + "socialshare-text": "'{{dashboardTitle}}' 由Thingsboard提供支持", + "socialshare-title": "'{{dashboardTitle}}' 由Thingsboard提供支持", + "state": "仪表板状态", + "state-controller": "状态控制", + "state-id": "状态ID", + "state-id-exists": "仪表板状态ID已经存在。", + "state-id-required": "仪表板状态ID必填。", + "state-name": "名称", + "state-name-required": "仪表板状态名必填。", + "states": "仪表板状态", + "title": "标题", + "title-color": "标题颜色", + "title-required": "标题必填。", + "toolbar-always-open": "工具栏常驻", + "unassign-dashboard": "取消分配仪表板", + "unassign-dashboard-text": "确认后,面板将被取消分配,客户将无法访问。", + "unassign-dashboard-title": "您确定要取消分配仪表板 '{{dashboardTitle}}'吗?", + "unassign-dashboards": "取消分配仪表板", + "unassign-dashboards-action-text": "取消分配 { count, plural, 1 {1 个仪表板} other {# 个仪表板} } 给客户", + "unassign-dashboards-action-title": "取消分配此客户 { count, plural, 1 {1 个仪表板} other {# 个仪表板} }", + "unassign-dashboards-text": "确认后,所有选定的仪表板将被取消分配,客户将无法访问。", + "unassign-dashboards-title": "确定要取消分配仪表板 { count, plural, 1 {1 个仪表板} other {# 个仪表板} } 吗?", + "unassign-from-customer": "取消分配客户", + "unassign-from-customers": "客户未分配仪表板", + "unassign-from-customers-text": "请选择从仪表板中取消分配的客户", + "vertical-margin": "垂直边距", + "vertical-margin-required": "需要垂直边距值。", + "view-dashboards": "查看仪表板", + "widget-file": "部件文件", + "widget-import-missing-aliases-title": "配置导入的窗口部件使用的别名", + "widgets-margins": "部件间边距" + }, + "datakey": { + "advanced": "高级", + "alarm": "报警字段", + "alarm-fields-required": "警告字段必填。", + "alarm-fields-timeseries-or-attributes-required": "报警字段或实体 Timeseries/属性必填。", + "attributes": "属性", + "color": "颜色", + "configuration": "数据键配置", + "data-generation-func": "数据生成功能", + "decimals": "小数位数", + "entity-field": "实体字段", + "function-types": "函数类型", + "function-types-required": "需要函数类型。", + "label": "标签", + "maximum-function-types": "最多允许 { count, plural, 1 {1 个函数类型} other {# 个函数类型} }", + "maximum-timeseries-or-attributes": "最多允许 { count, plural, 1 {1 个 timeseries/属性。} other {# 个 timeseries/属性。} }", + "prev-orig-value-description": "先前的原始值;", + "prev-value-description": "上一次函数调用的结果;", + "settings": "设置", + "time-description": "当前值的时间戳;", + "time-prev-description": "上一个值的时间戳;", + "timeseries": "Timeseries", + "timeseries-or-attributes-required": "实体 Timeseries/属性必填。", + "timeseries-required": "实体 Timeseries 必填。", + "units": "单位符号", + "use-data-post-processing-func": "使用数据后处理功能", + "value-description": "当前值;" + }, + "datasource": { + "add-datasource-prompt": "请添加数据源", + "name": "名称", + "type": "数据源类型" + }, + "datetime": { + "date-from": "日期从", + "date-to": "日期到", + "time-from": "时间从", + "time-to": "时间到" + }, + "details": { + "details": "细节", + "edit-json": "编辑JSON", + "edit-mode": "编辑模式", + "toggle-edit-mode": "切换编辑模式" + }, + "device-profile": { + "add": "添加设备配置", + "add-alarm-rule": "添加报警规则", + "add-alarm-rule-details": "添加详细信息", + "add-clear-alarm-rule": "添加清除条件", + "add-create-alarm-rule": "添加创建条件", + "add-create-alarm-rule-prompt": "请添加创建报警规则", + "advanced-settings": "高级设置", + "alarm-details": "报警详细信息", + "alarm-rule-condition": "报警规则条件", + "alarm-rule-details": "细节", + "alarm-rule-relation-types-list": "要传递的关联类型", + "alarm-rule-relation-types-list-hint": "如果未选择传递关联类型,则将不按关联类型过滤而传递报警。", + "alarm-rules": "报警规则", + "alarm-rules-with-count": "报警规则 ({{count}})", + "alarm-severity-required": "报警严重级别必填。", + "alarm-type": "报警类型", + "alarm-type-required": "报警类型必填。", + "alarm-type-unique": "警报类型在设备配置警报规则中必须唯一。", + "all-device-profiles": "全部", + "attributes-proto-schema": "Attributes proto schema", + "attributes-proto-schema-required": "Attributes proto schema 必填。", + "attributes-topic-filter": "Attributes topic filter", + "attributes-topic-filter-required": "Attributes topic 筛选器必填。", + "clear-alarm-rule": "清除报警规则", + "condition": "条件", + "condition-duration": "条件持续时间", + "condition-duration-time-unit": "时间单位", + "condition-duration-time-unit-required": "时间单位必填。", + "condition-duration-value": "持续时间值", + "condition-duration-value-pattern": "持续时间值应为整数。", + "condition-duration-value-range": "持续时间值应在1到2147483647之间。", + "condition-duration-value-required": "持续时间值必填。", + "condition-during": "在 {{during}} 期间", + "condition-repeat-times": "重复 { count, plural, 1 {1 次} other {# 次} }", + "condition-repeating-value": "事件计数", + "condition-repeating-value-pattern": "事件计数应为整数。", + "condition-repeating-value-range": "事件计数应在1到2147483647之间。", + "condition-repeating-value-required": "事件计数值必填。", + "condition-type": "条件类型", + "condition-type-duration": "持续时间", + "condition-type-repeating": "重复", + "condition-type-required": "条件类型必填。", + "condition-type-simple": "简单", + "copy-provision-key": "复制预配置密钥名", + "copy-provision-secret": "复制预配置密钥", + "copyId": "复制设备配置 ID", + "create-alarm-pattern": "创建 {{alarmType}} 报警", + "create-alarm-rules": "创建报警规则", + "create-new-device-profile": "创建一个新的!", + "default": "默认", + "default-rule-chain": "默认规则链", + "delete": "删除设备配置", + "delete-device-profile-text": "注意,确认后设备配置和所有相关数据将不可恢复。", + "delete-device-profile-title": "是否确实要删除设备配置 '{{deviceProfileName}}'?", + "delete-device-profiles-text": "请注意:确认后,所有选定的设备配置将被删除,所有相关数据将不可恢复。", + "delete-device-profiles-title": "确定要删除 { count, plural, 1 {1 个设备配置} other {# 个设备配置} }?", + "description": "说明", + "device-profile": "设备配置", + "device-profile-details": "设备配置详情", + "device-profile-required": "设备配置必填", + "device-profiles": "设备配置", + "device-provisioning": "设备预配置", + "edit": "编辑设备配置", + "edit-alarm-rule": "编辑报警规则", + "edit-alarm-rule-condition": "编辑报警规则条件", + "edit-schedule": "编辑报警日程表", + "enter-alarm-rule-condition-prompt": "请添加报警规则条件", + "idCopiedMessage": "设备配置 Id 已复制到剪贴板", + "mqtt-device-payload-type": "MQTT 设备 Payload", + "mqtt-device-payload-type-json": "JSON", + "mqtt-device-payload-type-proto": "Protobuf", + "mqtt-device-topic-filters": "MQTT 设备 Topic 筛选器", + "mqtt-device-topic-filters-unique": "MQTT设备 Topic 筛选器必须唯一。", + "mqtt-payload-type-required": "荷载类型必填。", + "multi-level-wildcards-hint": "[#]可以替换 topic filter 本身,并且必须是 topic 的最后一个符号。例如:# or v1/devices/me/#。", + "name": "名称", + "name-required": "名称是必需的。", + "new-device-profile-name": "设备配置名称", + "new-device-profile-name-required": "设备配置名称必填。", + "no-alarm-rules": "未配置报警规则", + "no-clear-alarm-rule": "未配置明确条件", + "no-create-alarm-rules": "未配置创建条件", + "no-device-profiles-found": "找不到设备配置。", + "no-device-profiles-matching": "找不到与 '{{entity}}' 匹配的设备配置。", + "no-device-profiles-text": "找不到设备配置", + "not-valid-multi-character": "多级通配符的使用无效", + "not-valid-pattern-topic-filter": "无效的 Topic 筛选器模式", + "not-valid-single-character": "单级通配符的使用无效", + "profile-configuration": "配置", + "propagate-alarm": "传递警报", + "provision-device-key": "预配置设备密钥名", + "provision-device-key-required": "预配置设备密钥名必填。", + "provision-device-secret": "预配置设备密钥", + "provision-device-secret-required": "预配置设备密钥必填。", + "provision-key-copied-message": "预配置密钥名已复制到剪贴板", + "provision-secret-copied-message": "预配置密钥已复制到剪贴板", + "provision-strategy": "预配置策略", + "provision-strategy-check-pre-provisioned": "检查预配置的设备", + "provision-strategy-created-new": "允许创建新设备", + "provision-strategy-disabled": "禁用", + "provision-strategy-required": "预配置策略必填。", + "rpc-response-topic-filter": "RPC响应 Topic 筛选器", + "rpc-response-topic-filter-required": "RPC响应 Topic 筛选器必填。", + "schedule": "地铁列车时刻表", + "schedule-any-time": "Active all the time", + "schedule-custom": "定制", + "schedule-day": { + "friday": "星期五", + "monday": "星期一", + "saturday": "星期六", + "sunday": "星期日", + "thursday": "星期四", + "tuesday": "星期二", + "wednesday": "星期三" }, - "timewindow": { - "days": "{ days, plural, 1 { 天 } other {# 天 } }", - "hours": "{ hours, plural, 0 { 小时 } 1 {1 小时 } other {# 小时 } }", - "minutes": "{ minutes, plural, 0 { 分 } 1 {1 分 } other {# 分 } }", - "seconds": "{ seconds, plural, 0 { 秒 } 1 {1 秒 } other {# 秒 } }", - "realtime": "实时", - "history": "历史", - "last-prefix": "最后", - "period": "从 {{ startTime }} 到 {{ endTime }}", - "edit": "编辑时间窗口", - "date-range": "日期范围", - "last": "最后", - "time-period": "时间段" + "schedule-days": "天", + "schedule-days-of-week-required": "每周至少选择一天。", + "schedule-specific-time": "在特定时间活跃", + "schedule-time": "时间", + "schedule-time-from": "从", + "schedule-time-to": "到", + "schedule-type": "计划程序类型", + "schedule-type-required": "计划类型必填。", + "search": "搜索设备配置", + "select-alarm-severity": "选择报警严重性", + "select-queue-hint": "从下拉列表中选择或添加自定义名称。", + "selected-device-profiles": "已选择 { count, plural, 1 {1 个设备配置} other {# 个设备配置} }", + "set-default": "设为默认设备配置", + "set-default-device-profile-text": "确认后,设备配置将被标记为默认,并将用于未指定配置的新设备。", + "set-default-device-profile-title": "确实要将设备配置 '{{deviceProfileName}}' 设为默认值吗?", + "single-level-wildcards-hint": "[+] is suitable for any topic filter level。例如:v1/devices/+/telemetry or +/devices/+/attributes。", + "support-level-wildcards": "支持单[+]和多级[#]通配符。", + "telemetry-proto-schema": "遥测数据 proto schema", + "telemetry-proto-schema-required": "遥测数据 proto schema 必填。", + "telemetry-topic-filter": "遥测数据 topic 筛选器", + "telemetry-topic-filter-required": "遥测数据 topic 筛选器必填。", + "transport-configuration": "传输配置", + "transport-type": "传输方式", + "transport-type-default": "默认", + "transport-type-default-hint": "支持基本MQTT、HTTP和CoAP传输", + "transport-type-lwm2m": "LWM2M", + "transport-type-lwm2m-hint": "LWM2M传输类型", + "transport-type-mqtt": "MQTT", + "transport-type-mqtt-hint": "启用高级MQTT传输设置", + "transport-type-required": "传输方式必填。", + "type": "配置类型", + "type-default": "默认", + "type-required": "配置类型必填。" + }, + "device": { + "access-token": "访问令牌", + "access-token-invalid": "访问令牌长度必须为1到20个字符。", + "access-token-required": "访问令牌必填", + "accessTokenCopiedMessage": "设备访问令牌已复制到剪贴板", + "add": "添加设备", + "add-alias": "添加设备别名", + "add-device-text": "添加新设备", + "alias": "别名", + "alias-required": "设备别名必填。", + "aliases": "设备别名", + "any-device": "任意设备", + "assign-device-to-customer": "将设备分配给客户", + "assign-device-to-customer-text": "请选择要分配给客户的设备", + "assign-devices": "分配设备", + "assign-devices-text": "将 {count,plural,1 {1 个设备} other {# 个设备} }分配给客户", + "assign-new-device": "分配新设备", + "assign-to-customer": "分配给客户", + "assign-to-customer-text": "请选择客户分配设备", + "assignedToCustomer": "分配给客户", + "client-id": "客户端ID", + "client-id-or-user-name-necessary": "客户端ID和/或用户名是必需的", + "client-id-pattern": "包含无效字符。", + "configure-alias": "配置 '{{alias}}' 别名", + "copy-mqtt-authentication": "复制MQTT凭据", + "copyAccessToken": "复制访问令牌", + "copyId": "复制设备ID", + "create-new-alias": "创建一个新的!", + "create-new-key": "创建一个新的!", + "credentials": "凭据", + "credentials-type": "凭据类型", + "delete": "删除设备", + "delete-device-text": "小心!确认后设备及其所有相关数据将不可恢复。", + "delete-device-title": "您确定要删除设备的{{deviceName}}吗?", + "delete-devices": "删除设备", + "delete-devices-action-title": "删除 {count,plural,1 {1 个设备} other {# 个设备} }", + "delete-devices-text": "小心!确认后所有选定的设备将被删除,所有相关数据将不可恢复。", + "delete-devices-title": "确定要删除{count,plural,1 {1 个设备} other {# 个设备} } 吗?", + "description": "说明", + "details": "细节", + "device": "设备", + "device-alias": "设备别名", + "device-configuration": "设备配置", + "device-credentials": "设备凭据", + "device-details": "设备详细信息", + "device-file": "设备文件", + "device-list": "设备列表", + "device-list-empty": "没有被选中的设备", + "device-name-filter-no-device-matched": "找不到以'{{device}}' 开头的设备。", + "device-name-filter-required": "设备名称过滤器必填。", + "device-public": "设备公开", + "device-required": "设备必填", + "device-type": "设备类型", + "device-type-list-empty": "未选择设备类型", + "device-type-required": "设备类型必填。", + "device-types": "设备类型", + "devices": "设备", + "duplicate-alias-error": "找到重复别名 '{{alias}}'。
设备别名必须是唯一的。", + "enter-device-type": "输入设备类型", + "events": "事件", + "idCopiedMessage": "设备ID已复制到剪贴板", + "import": "导入设备", + "is-gateway": "是否网关", + "label": "标签", + "make-private": "私有", + "make-private-device-text": "确认后,设备及其所有数据将被设为私有,不被其他人访问。", + "make-private-device-title": "您确定要将设备 '{{deviceName}}' 设为私有吗?", + "make-public": "公开", + "make-public-device-text": "确认后,设备及其所有数据将被设为公开并可被其他人访问。", + "make-public-device-title": "您确定要将设备 '{{deviceName}}' 设为公开吗?", + "manage-credentials": "管理凭据", + "management": "设备管理", + "mqtt-authentication-copied-message": "设备MQTT身份验证已复制到剪贴板", + "name": "名称", + "name-required": "名称必填。", + "name-starts-with": "名称前缀", + "no-alias-matching": "'{{alias}}' 没有找到。", + "no-aliases-found": "找不到别名。", + "no-device-types-matching": "没有找到符合 '{{entitySubtype}}' 的设备类型。", + "no-devices-matching": "找不到与 '{{entity}}' 匹配的设备。", + "no-devices-text": "找不到设备", + "no-key-matching": "'{{key}}' 没有找到。", + "no-keys-found": "找不到密钥。", + "password": "密码", + "public": "公开", + "remove-alias": "删除设备别名", + "rsa-key": "RSA公钥", + "rsa-key-required": "RSA公钥必填", + "search": "搜索设备", + "secret": "密钥", + "secret-required": "密钥必填", + "select-device": "选择设备", + "select-device-type": "选择设备类型", + "selected-devices": "已选择 { count, plural, 1 {1 个设备} other {# 个设备} }", + "transport-configuration": "传输配置", + "unable-delete-device-alias-text": "设备别名 '{{deviceAlias}}' 不能够被删除,因为它被下列部件所使用:
{{widgetsList}}", + "unable-delete-device-alias-title": "无法删除设备别名", + "unassign-device": "取消分配设备", + "unassign-device-text": "确认后,设备将被取消分配,客户将无法访问。", + "unassign-device-title": "您确定要取消分配设备 '{{deviceName}}'?", + "unassign-devices": "取消分配设备", + "unassign-devices-action-title": "取消分配此客户 {count,plural,1 {1 个设备} other {# 个设备} }", + "unassign-devices-text": "确认后,所有选定的设备将被取消分配,并且客户将无法访问。", + "unassign-devices-title": "确定要取消分配 {count,plural,1 {1 个设备} other {# 个设备} } 吗?", + "unassign-from-customer": "取消分配客户", + "use-device-name-filter": "使用过滤器", + "user-name": "用户名", + "user-name-required": "用户名必填。", + "view-credentials": "查看凭据", + "view-devices": "查看设备", + "wizard": { + "add-credential": "添加凭据", + "customer-to-assign-device": "客户分配设备", + "device-details": "设备详细信息", + "device-wizard": "设备向导", + "existing-device-profile": "选择已有设备配置", + "new-device-profile": "新建设备配置", + "specific-configuration": "指定配置" + } + }, + "dialog": { + "close": "关闭对话框" + }, + "direction": { + "column": "列", + "row": "排" + }, + "entity-field": { + "address": "地址", + "address2": "地址2", + "city": "城市", + "country": "国家", + "created-time": "创建时间", + "email": "电子邮件", + "first-name": "名字", + "label": "标签", + "last-name": "姓", + "name": "名称", + "phone": "电话", + "state": "省/州", + "title": "标题", + "type": "类型", + "zip": "邮政编码" + }, + "entity-view": { + "add": "添加实体视图", + "add-alias": "添加实体视图别名", + "add-entity-view-text": "添加新实体视图", + "alias": "别名", + "alias-required": "实体视图别名必填。", + "aliases": "实体视图别名", + "any-entity-view": "任何实体视图", + "assign-entity-view-to-customer": "将实体视图分配给客户", + "assign-entity-view-to-customer-text": "请选择要分配给客户的实体视图", + "assign-entity-views": "分配实体视图", + "assign-entity-views-text": "分配 { count, plural, 1 {1 个实体视图} other {# 个实体视图} } 给客户", + "assign-new-entity-view": "分配新实体视图", + "assign-to-customer": "分配给客户", + "assign-to-customer-text": "请选择客户分配实体视图", + "assignedToCustomer": "分配给客户", + "attributes-propagation": "属性传播", + "attributes-propagation-hint": "每次保存或更新这个实体视图时,实体视图将自动从目标实体复制指定的属性。由于性能原因,目标实体属性不会在每次属性更改时传递到实体视图。您可以通过配置\"copy to view\"规则链中的规则节点,并将\"Post attributes\"和\"attributes Updated\"消息链接到新规则节点,从而启用自动传递。", + "client-attributes": "客户端属性", + "client-attributes-placeholder": "客户端属性", + "configure-alias": "配置 '{{alias}}' 别名", + "copyId": "复制实体视图ID", + "create-new-alias": "创建一个新的!", + "create-new-key": "创建一个新的!", + "created-time": "创建时间", + "date-limits": "日期限制", + "delete": "删除实体视图", + "delete-entity-view-text": "小心!确认后实体视图及其所有相关数据将不可恢复。", + "delete-entity-view-title": "确定要删除实体视图 '{{entityViewName}}'?", + "delete-entity-views": "删除实体视图", + "delete-entity-views-action-title": "删除 { count, plural, 1 {1 个实体视图} other {# 个实体视图} }", + "delete-entity-views-text": "请注意:确认后,所有选定的实体视图将被删除,所有相关的数据将变得不可恢复。", + "delete-entity-views-title": "确定要删除 { count, plural, 1 {1 实体视图} other {# 实体视图} }?", + "description": "说明", + "details": "细节", + "duplicate-alias-error": "找到重复别名 '{{alias}}'。
实体视图别名必须是唯一的。", + "end-date": "结束日期", + "end-ts": "结束时间", + "enter-entity-view-type": "输入实体视图类型", + "entity-view": "实体视图", + "entity-view-alias": "实体视图别名", + "entity-view-details": "实体视图详细信息", + "entity-view-list": "实体视图列表", + "entity-view-list-empty": "没有被选中的实体视图", + "entity-view-name-filter-no-entity-view-matched": "找不到以'{{entityView}}' 开头的实体视图。", + "entity-view-name-filter-required": "实体视图名称过滤器必填。", + "entity-view-public": "实体视图是公共的", + "entity-view-required": "实体视图必填。", + "entity-view-type": "实体视图类型", + "entity-view-type-list-empty": "实体视图类型未选择。", + "entity-view-type-required": "实体视图类型必填。", + "entity-view-types": "实体视图类型", + "entity-views": "实体视图", + "events": "事件", + "idCopiedMessage": "实体视图Id已复制到剪贴板", + "make-private": "实体视图设为私有", + "make-private-entity-view-text": "确认后,实体视图及其所有数据将被私有化,无法被他人访问。", + "make-private-entity-view-title": "你确定你想创建私有 '{{entityViewName}}' 实体视图?", + "make-public": "实体视图设为公开", + "make-public-entity-view-text": "确认后,实体视图 及其所有数据将被公开并被他人访问。", + "make-public-entity-view-title": "你确定你想创建公开 '{{entityViewName}}' 实体视图?", + "management": "实体视图管理", + "name": "名称", + "name-required": "名称必填。", + "name-starts-with": "名称前缀", + "no-alias-matching": "'{{alias}}' 没有找到。", + "no-aliases-found": "找不到别名。", + "no-entity-view-types-matching": "没有找到匹配 '{{entitySubtype}}' 的实体视图类型。", + "no-entity-views-matching": "找不到与 '{{entity}}' 匹配的实体视图。", + "no-entity-views-text": "找不到实体视图", + "no-key-matching": "'{{key}}' 没有找到。", + "no-keys-found": "找不到密钥。", + "public": "公开", + "remove-alias": "删除实体视图别名", + "search": "搜索实体视图", + "select-entity-view": "选择实体视图", + "select-entity-view-type": "选择实体视图类型", + "selected-entity-views": "已选择 { count, plural, 1 {1 个实体视图} other {# 个实体视图} }", + "server-attributes": "服务端属性", + "server-attributes-placeholder": "服务端属性", + "shared-attributes": "共享属性", + "shared-attributes-placeholder": "共享属性", + "start-date": "开始日期", + "start-ts": "开始时间", + "target-entity": "目标实体", + "timeseries": "时间序列", + "timeseries-data": "时间序列数据", + "timeseries-data-hint": "配置目标实体的 Timeseries 数据键,以便实体视图可以访问这些键。此 Timeseries 数据是只读的。", + "timeseries-placeholder": "时间序列", + "unable-entity-view-device-alias-text": "实体视图别名 '{{entityViewAlias}}' 不能够被删除,因为它被下列部件所使用:
{{widgetsList}}", + "unable-entity-view-device-alias-title": "无法删除实体视图别名", + "unassign-entity-view": "未分配实体视图", + "unassign-entity-view-text": "确认后,实体视图将未分配,客户无法访问。", + "unassign-entity-view-title": "您确定要取消对 '{{entityViewName}}'实体视图的分配吗?", + "unassign-entity-views": "取消分配实体视图", + "unassign-entity-views-action-title": "从客户处取消分配{count,plural,1 {1 实体视图} other {# 实体视图} }", + "unassign-entity-views-text": "确认后,所有选定的实体视图将被分配,客户无法访问。", + "unassign-entity-views-title": "确定要取消分配 { count, plural, 1 {1 个实体视图} other {# 个实体视图} }吗?", + "unassign-from-customer": "取消分配客户", + "use-entity-view-name-filter": "使用过滤器", + "view-entity-views": "查看实体视图" + }, + "entity": { + "add-alias": "添加实体别名", + "alarm-name-starts-with": "以 '{{prefix}}' 开头的警告", + "alias": "别名", + "alias-required": "实体别名必填。", + "aliases": "实体别名", + "all-subtypes": "全部", + "any-entity": "任意实体", + "asset-name-starts-with": "以 '{{prefix}}' 开头的资产", + "columns-to-display": "要显示的列", + "configure-alias": "别名 '{{alias}}' 配置", + "create-new-alias": "创建一个新的!", + "create-new-key": "创建一个新的!", + "customer-name-starts-with": "以 '{{prefix}}' 开头的客户", + "dashboard-name-starts-with": "以 '{{prefix}}' 开头的仪表板", + "details": "实体详情", + "device-name-starts-with": "以 '{{prefix}}' 开头的设备", + "device-profile-name-starts-with": "名称以 '{{prefix}}' 开头的设备配置", + "duplicate-alias-error": "别名 '{{alias}}' 重复。
同一仪表板别名必须唯一。", + "enter-entity-type": "输入实体类型", + "entities": "实体", + "entity": "实体", + "entity-alias": "实体别名", + "entity-label": "实体标签", + "entity-list": "实体列表", + "entity-list-empty": "没有选择实体。", + "entity-name": "实体名", + "entity-name-filter-no-entity-matched": "没有找到以 '{{entity}}' 开头的实体", + "entity-name-filter-required": "实体名过滤器必填。", + "entity-type": "实体类型", + "entity-type-list": "实体类型列表", + "entity-type-list-empty": "没有选择实体类型。", + "entity-types": "实体类型", + "entity-view-name-starts-with": "以 '{{prefix}}' 开头的实体视图", + "key": "键名", + "key-name": "密钥名称", + "list-of-alarms": "{ count, plural, 1 {个警告} other {# 个警告} }", + "list-of-assets": "{ count, plural, 1 {个资产} other {# 个资产} }", + "list-of-customers": "{ count, plural, 1 {个客户} other {# 个客户} }", + "list-of-dashboards": "{ count, plural, 1 {个仪表板} other {# 个仪表板} }", + "list-of-device-profiles": "{ count, plural, 1 {个设备配置} other {# 个设备配置} }", + "list-of-devices": "{ count, plural, 1 {个设备} other {# 个设备} }", + "list-of-entity-views": "{ count, plural, 1 {个实体视图} other {# 个实体视图} }", + "list-of-plugins": "{ count, plural, 1 {个插件} other {# 个插件} }", + "list-of-rulechains": "{ count, plural, 1 {个规则链} other {# 个规则链} }", + "list-of-rulenodes": "{ count, plural, 1 {个规则节点} other {# 个规则节点} }", + "list-of-rules": "{ count, plural, 1 {个规则} other {# 个规则} }", + "list-of-tenant-profiles": "{ count, plural, 1 {个租户配置} other {# 个租户配置} }", + "list-of-tenants": "{ count, plural, 1 {个租户} other {# 个租户} }", + "list-of-users": "{ count, plural, 1 {个用户} other {# 个用户} }", + "missing-entity-filter-error": "别名 '{{alias}}' 缺少筛选器", + "name-starts-with": "名称开始于", + "no-alias-matching": "没有找到 '{{alias}}'", + "no-aliases-found": "没有找到别名", + "no-data": "无数据", + "no-entities-matching": "没有找到符合 '{{entity}}' 的实体。", + "no-entities-prompt": "没有找到实体", + "no-entity-types-matching": "没有找到符合 '{{entityType}}' 类型的实体。", + "no-key-matching": "没有找到键 '{{key}}'", + "no-keys-found": "没有找到键", + "plugin-name-starts-with": "以 '{{prefix}}' 开头的插件", + "remove-alias": "移除实体别名", + "rule-name-starts-with": "以 '{{prefix}}' 开头的规则", + "rulechain-name-starts-with": "规则链前缀名称 '{{prefix}}'", + "rulenode-name-starts-with": "名称以 '{{prefix}}' 开头的规则节点", + "search": "实体检索", + "select-entities": "选择实体", + "selected-entities": "已选择 { count, plural, 1 {1 个实体} other {# 个实体} }", + "tenant-name-starts-with": "以 '{{prefix}}' 开头的租户", + "tenant-profile-name-starts-with": "名称以 '{{prefix}}' 开头的租户配置", + "type": "类型", + "type-alarm": "警告", + "type-alarms": "警告", + "type-api-usage-state": "Api使用状态", + "type-asset": "资产", + "type-assets": "资产", + "type-current-customer": "当前客户", + "type-current-tenant": "当前租户", + "type-current-user": "当前用户", + "type-current-user-owner": "当前用户所有者", + "type-customer": "客户", + "type-customers": "客户", + "type-dashboard": "仪表板", + "type-dashboards": "仪表板", + "type-device": "设备", + "type-device-profile": "设备配置", + "type-device-profiles": "设备配置", + "type-devices": "设备", + "type-entity-view": "实体视图", + "type-entity-views": "实体视图", + "type-plugin": "插件", + "type-plugins": "插件", + "type-required": "实体类型必填。", + "type-rule": "规则", + "type-rulechain": "规则链", + "type-rulechains": "规则链库", + "type-rulenode": "规则节点", + "type-rulenodes": "规则节点", + "type-rules": "规则", + "type-tenant": "租户", + "type-tenant-profile": "租户简介", + "type-tenant-profiles": "租户配置", + "type-tenants": "租户", + "type-user": "用户", + "type-users": "用户", + "unable-delete-entity-alias-text": "实体别名 '{{entityAlias}}' 被以下部件使用不能删除:
{{widgetsList}}", + "unable-delete-entity-alias-title": "无法删除实体别名", + "use-entity-name-filter": "用户过滤", + "user-name-starts-with": "以 '{{prefix}}' 开头的用户" + }, + "error": { + "unable-to-connect": "无法连接到服务器!请检查您的互联网连接。", + "unhandled-error-code": "未处理的错误代码: {{errorCode}}", + "unknown-error": "未知错误" + }, + "event": { + "alarm": "报警", + "body": "整体", + "data": "数据", + "data-type": "数据类型", + "entity": "实体", + "error": "错误", + "errors-occurred": "错误发生", + "event": "事件", + "event-time": "事件时间", + "event-type": "事件类型", + "failed": "失败", + "message-id": "消息ID", + "message-type": "消息类型", + "messages-processed": "消息处理", + "metadata": "元数据", + "method": "方法", + "no-events-prompt": "找不到事件", + "relation-type": "关联类型", + "server": "服务器", + "status": "状态", + "success": "成功", + "type": "类型", + "type-debug-rule-chain": "调试", + "type-debug-rule-node": "调试", + "type-error": "错误", + "type-lc-event": "生命周期事件", + "type-stats": "类型统计" + }, + "extension": { + "add": "添加扩展", + "add-attribute": "添加属性", + "add-attribute-request": "添加属性请求", + "add-attribute-update": "添加属性更新", + "add-broker": "添加代理服务器", + "add-config": "添加转换器配置", + "add-connect-request": "添加连接请求", + "add-converter": "添加转换器", + "add-device": "添加服务器", + "add-disconnect-request": "添加断开请求", + "add-map": "添加映射元素", + "add-server-side-rpc-request": "添加服务端RPC请求", + "add-timeseries": "添加 Timeseries", + "anonymous": "匿名", + "attr-json-key-expression": "属性键JSON表达式", + "attr-topic-key-expression": "属性关键字主题表达式", + "attribute-filter": "属性筛选器", + "attribute-key-expression": "属性关键字表达式", + "attribute-requests": "属性请求", + "attribute-updates": "属性更新", + "attributes": "属性", + "basic": "Basic", + "brokers": "代理服务器组", + "ca-cert": "CA证书文件 *", + "cert": "证书文件 *", + "client-scope": "客户范围", + "configuration": "配置", + "connect-requests": "连接请求", + "converter-configurations": "转换器的配置", + "converter-id": "转换器序号", + "converter-json": "Json", + "converter-json-parse": "无法解析转换JSON。", + "converter-json-required": "Converter JSON 必填。", + "converter-type": "转换类型", + "converters": "转换器", + "credentials": "证书", + "custom": "定制", + "delete": "删除扩展", + "delete-extension-text": "请注意:确认后,扩展和所有相关数据将变得不可恢复。", + "delete-extension-title": "确实要删除扩展名'{{extensionId}}'吗?", + "delete-extensions-text": "请注意:确认后,所有选定的扩展将被删除。", + "delete-extensions-title": "确定要删除 { count, plural, 1 {1 个扩展} other {# 个扩展} }吗?", + "device-name-expression": "设备名称表达式", + "device-name-filter": "设备名称筛选器", + "device-type-expression": "设备类型表达式", + "disconnect-requests": "断开请求", + "drop-file": "删除文件或单击以选择要上载的文件。", + "edit": "编辑扩展", + "export-extension": "导出扩展", + "export-extensions-configuration": "导出扩展配置", + "extension-id": "扩展ID", + "extension-type": "扩展类型", + "extensions": "扩展", + "field-required": "必填字段", + "file": "扩展文件", + "filter-expression": "过滤表达式", + "host": "主机", + "id": "ID", + "import-extension": "导入扩展", + "import-extensions": "导入扩展", + "import-extensions-configuration": "导入扩展配置", + "invalid-file-error": "无效的扩展文件", + "json-name-expression": "设备名称JSON表达式", + "json-parse": "无法解析转换器JSON。", + "json-required": "Transformer JSON 必填。", + "json-type-expression": "设备类型JSON表达式", + "key": "键名", + "mapping": "映射", + "method-filter": "方法筛选器", + "modbus-add-server": "添加 server/slave", + "modbus-add-server-prompt": "请添加 server/slave", + "modbus-attributes-poll-period": "轮询属性周期 (ms)", + "modbus-baudrate": "波特率", + "modbus-byte-order": "字节顺序", + "modbus-databits": "数据位", + "modbus-databits-range": "数据位应该在7到8的范围内。", + "modbus-device-name": "设备名称", + "modbus-encoding": "编码", + "modbus-function": "函数", + "modbus-parity": "奇偶性", + "modbus-poll-period": "轮询周期 (ms)", + "modbus-poll-period-range": "轮询周期应为正值。", + "modbus-port-name": "串口名称", + "modbus-register-address": "寄存器地址", + "modbus-register-address-range": "寄存器地址应该在0到65535的范围内。", + "modbus-register-bit-index": "位索引", + "modbus-register-bit-index-range": "位索引应该在0到15的范围内。", + "modbus-register-count": "寄存器计数", + "modbus-register-count-range": "寄存器计数应该是一个正值。", + "modbus-rtu-over-tcp": "RTU over TCP", + "modbus-server": "Servers/slaves", + "modbus-stopbits": "停止位", + "modbus-stopbits-range": "停止位应该在1到2的范围内。", + "modbus-tag": "标签", + "modbus-tcp-reconnect": "自动重新连接", + "modbus-timeseries-poll-period": "Timeseries 轮询周期 (ms)", + "modbus-transport": "Transport", + "modbus-unit-id": "单位编号", + "modbus-unit-id-range": "单位ID应该在1到247的范围内", + "no-file": "没有选择文件。", + "opc-add-server": "添加服务器", + "opc-add-server-prompt": "请添加服务器", + "opc-application-name": "应用名称", + "opc-application-uri": "应用URI", + "opc-device-name-pattern": "设备名称模式", + "opc-device-node-pattern": "设备节点模式", + "opc-identity": "身份", + "opc-keystore": "密钥库", + "opc-keystore-alias": "别名", + "opc-keystore-key-password": "密钥密码", + "opc-keystore-location": "位置 *", + "opc-keystore-password": "密码", + "opc-keystore-type": "类型", + "opc-scan-period-in-seconds": "秒级扫描周期", + "opc-security": "安全性", + "opc-server": "服务器组", + "opc-type": "类型", + "password": "密码", + "pem": "PEM", + "port": "端口", + "port-range": "端口应该在1到65535的范围内。", + "private-key": "私钥文件 *", + "request-id-expression": "请求ID表达式", + "request-id-json-expression": "请求ID JSON表达式", + "request-id-topic-expression": "请求ID主题表达式", + "request-topic-expression": "请求主题表达式", + "response-timeout": "毫秒内响应超时", + "response-topic-expression": "响应主题表达式", + "retry-interval": "以毫秒为单位的重试间隔", + "selected-extensions": "已选择 { count, plural, 1 {1 个扩展} other {# 个扩展} }", + "server-side-rpc": "服务端RPC", + "ssl": "Ssl", + "sync": { + "last-sync-time": "最后同步时间", + "not-available": "无法使用", + "not-sync": "不同步", + "status": "状态", + "sync": "同步" }, - "user": { - "user": "用户", - "users": "用户", - "customer-users": "客户用户", - "tenant-admins": "租户管理员", - "sys-admin": "系统管理员", - "tenant-admin": "租户管理员", - "customer": "客户", - "anonymous": "匿名", - "add": "添加用户", - "delete": "删除用户", - "add-user-text": "添加新用户", - "no-users-text": "找不到用户", - "user-details": "用户详细信息", - "delete-user-title": "您确定要删除用户 '{{userEmail}}' 吗?", - "delete-user-text": "小心!确认后,用户和所有相关数据将不可恢复。", - "delete-users-title": "你确定你要删除 { count, plural, 1 {1 用户} other {# 用户} } 吗?", - "delete-users-action-title": "删除 { count, plural, 1 {1 用户} other {# 用户} }", - "delete-users-text": "小心!确认后,所有选定的用户将被删除,所有相关数据将不可恢复。", - "activation-email-sent-message": "激活电子邮件已成功发送!", - "resend-activation": "重新发送激活", - "email": "电子邮件", - "email-required": "电子邮件必填。", - "invalid-email-format": "无效的邮件格式。", - "first-name": "名字", - "last-name": "姓", - "description": "描述", - "default-dashboard": "默认面板", - "always-fullscreen": "始终全屏", - "select-user": "选择用户", - "no-users-matching": "没有找到符合 '{{entity}}' 的用户。", - "user-required": "用户必填", - "activation-method": "激活方式", - "display-activation-link": "显示激活链接", - "send-activation-mail": "发送激活邮件", - "activation-link": "用户激活链接", - "activation-link-text": "使用该链接 激活 激活用户:", - "copy-activation-link": "复制用户激活链接", - "activation-link-copied-message": "用户激活链接已经复制到粘贴板", - "details": "详细信息" + "timeout": "毫秒超时", + "timeseries": "Timeseries", + "to-double": "加倍", + "token": "安全令牌", + "topic": "主题", + "topic-expression": "主题表达", + "topic-filter": "主题滤波", + "topic-name-expression": "设备名称主题表达式", + "topic-type-expression": "设备类型主题表达式", + "transformer": "转换器", + "transformer-json": "JSON *", + "type": "类型", + "unique-id-required": "当前扩展ID已经存在。", + "username": "用户名", + "value": "价值", + "value-expression": "值表达式" + }, + "filter": { + "add": "添加筛选器", + "add-complex": "Add complex", + "add-complex-filter": "添加复合筛选器", + "add-filter": "添加筛选器", + "add-filter-prompt": "请添加筛选器", + "add-key-filter": "添加密钥筛选器", + "autogenerated-label": "自动生成标签", + "complex-filter": "复合筛选器", + "create-new-filter": "创建一个新的!", + "current-customer": "当前客户", + "current-device": "当前设备", + "current-tenant": "当前租户", + "current-user": "当前用户", + "date": "日期", + "default-value": "默认值", + "display-label": "要显示的标签", + "duplicate-filter": "同名筛选器已存在。", + "duplicate-filter-error": "找到重复的筛选器 '{{filter}}'。
筛选器在仪表板中必须是唯一的。", + "dynamic-source-type": "动态源类型", + "edit": "编辑筛选器", + "edit-complex-filter": "编辑复合筛选器", + "edit-filter-user-params": "编辑筛选器谓词用户参数", + "edit-key-filter": "Edit key filter", + "editable": "可编辑", + "filter": "筛选器", + "filter-required": "筛选器必填。", + "filter-user-params": "过滤谓词用户参数", + "filters": "过滤器", + "ignore-case": "忽略大小写", + "key-filter": "Key filter", + "key-filters": "Key filters", + "key-name": "Key name", + "key-name-required": "Key name 必填。", + "key-type": { + "attribute": "属性", + "entity-field": "实体字段", + "key-type": "Key type", + "timeseries": "Timeseries" }, - "value": { - "type": "值类型", - "string": "字符串", - "string-value": "字符串值", - "integer": "数字", - "integer-value": "数字值", - "invalid-integer-value": "整数值无效", - "double": "双精度小数", - "double-value": "双精度小数值", - "boolean": "布尔", - "boolean-value": "布尔值", - "false": "假", - "true": "真", - "long": "Long" + "key-value-type-change-message": "如果您确认新的值类型,所有输入的键过滤器将被删除。", + "key-value-type-change-title": "是否确实要更改键值类型?", + "missing-key-filters-error": "Key filters is missing for filter '{{filter}}'.", + "name": "筛选器名称", + "name-required": "筛选器名称必填。", + "no-dynamic-value": "无动态值", + "no-filter-matching": "找不到 '{{filter}}' 。", + "no-filter-text": "未指定筛选器", + "no-filters": "未配置筛选器", + "no-filters-found": "找不到筛选器。", + "no-key-filters": "未配置密钥筛选器", + "operation": { + "and": "和", + "contains": "包含", + "ends-with": "结束于", + "equal": "平等的", + "greater": "大于", + "greater-or-equal": "大于或等于", + "less": "小于", + "less-or-equal": "小于或等于", + "not-contains": "不包含", + "not-equal": "不相等", + "operation": "操作", + "or": "或", + "starts-with": "开始于" }, - "widget": { - "widget-library": "部件库", - "widget-bundle": "部件包", - "select-widgets-bundle": "选择部件包", - "management": "管理部件", - "editor": "部件编辑器", - "widget-type-not-found": "加载部件配置出错。
可能关联的\n 部件已经删除了。", - "widget-type-load-error": "由于以下错误未加载小部件:", - "remove": "删除部件", - "edit": "编辑部件", - "remove-widget-title": "确实要删除 '{{widgetTitle}}'部件吗?", - "remove-widget-text": "确认后,控件和所有相关数据将变得不可恢复。", - "timeseries": "时间序列", - "search-data": "搜索数据", - "no-data-found": "没有找到数据", - "latest-values": "最新值", - "rpc": "控件部件", - "alarm": "警告部件", - "static": "静态部件", - "select-widget-type": "选择窗口部件类型", - "missing-widget-title-error": "部件标题必须指定!", - "widget-saved": "部件已保存", - "unable-to-save-widget-error": "无法保存部件!控件有错误!", - "save": "保存部件", - "saveAs": "部件另存为", - "save-widget-type-as": "部件类型另存为", - "save-widget-type-as-text": "请输入新的部件标题或选择目标部件包", - "toggle-fullscreen": "切换全屏", - "run": "运行部件", - "title": "部件标题", - "title-required": "需要部件标题。", - "type": "部件类型", - "resources": "资源", - "resource-url": "JavaScript/CSS URL", - "remove-resource": "删除资源", - "add-resource": "添加资源", - "html": "HTML", - "tidy": "整理", - "css": "CSS", - "settings-schema": "设置模式", - "datakey-settings-schema": "数据键设置模式", - "javascript": "Javascript", - "remove-widget-type-title": "您确定要删除部件类型 '{{widgetName}}'吗?", - "remove-widget-type-text": "确认后,窗口部件类型和所有相关数据将不可恢复。", - "remove-widget-type": "删除部件类型", - "add-widget-type": "添加新的部件类型", - "widget-type-load-failed-error": "无法加载部件类型!", - "widget-template-load-failed-error": "无法加载部件模板!", - "add": "添加部件", - "undo": "撤消部件更改", - "export": "导出部件" + "order-priority": "字段顺序优先级", + "preview": "筛选器预览", + "remove-filter": "删除筛选器", + "remove-key-filter": "Remove key filter", + "source-attribute": "源属性", + "switch-to-default-value": "切换到默认值", + "switch-to-dynamic-value": "切换到动态值", + "time": "时间", + "unable-delete-filter-text": "无法删除筛选器 '{{filter}}' ,因为它由以下小部件使用:
{{widgetsList}}", + "unable-delete-filter-title": "无法删除筛选器", + "user-parameters": "用户参数", + "value": "价值", + "value-type-required": "键值类型是必需的。", + "value-type": { + "boolean": "布尔值", + "date-time": "日期时间", + "numeric": "数字", + "string": "字符串", + "value-type": "值类型" + } + }, + "fullscreen": { + "exit": "退出全屏", + "expand": "展开到全屏", + "fullscreen": "全屏", + "toggle": "切换全屏模式" + }, + "function": { + "function": "函数" + }, + "gateway": { + "add-entry": "添加配置", + "connector-add": "添加新连接器", + "connector-enabled": "启用连接器", + "connector-name": "连接器名称", + "connector-name-required": "Connector 名称必填。", + "connector-type": "连接器类型", + "connector-type-required": "Connector 类型必填。", + "connectors": "连接器配置", + "create-new-gateway": "创建新网关", + "create-new-gateway-text": "是否确实要创建名为 '{{gatewayName}}' 的新网关?", + "delete": "删除配置", + "download-tip": "下载配置", + "gateway": "网关", + "gateway-exists": "同名设备已存在。", + "gateway-name": "网关名称", + "gateway-name-required": "网关名称必填。", + "gateway-saved": "已成功保存网关配置。", + "json-parse": "无效的JSON。", + "json-required": "字段不能为空。", + "no-connectors": "无连接器", + "no-data": "没有配置", + "no-gateway-found": "找不到网关。", + "no-gateway-matching": "找不到 '{{item}}' 。", + "path-logs": "日志文件的路径", + "path-logs-required": "路径是必需的。", + "remote": "远程配置", + "remote-logging-level": "日志记录级别", + "remove-entry": "删除配置", + "save-tip": "保存配置", + "security-type": "安全类型", + "security-types": { + "access-token": "访问令牌", + "tls": "TLS" }, - "widget-action": { - "header-button": "部件顶部按钮", - "open-dashboard-state": "切换到新仪表板状态", - "update-dashboard-state": "更新当前仪表板状态", - "open-dashboard": "切换到另一个仪表板", - "custom": "自定义动作", - "target-dashboard-state": "目标仪表板状态", - "target-dashboard-state-required": "目标仪表板状态必填", - "set-entity-from-widget": "从部件中设置实体", - "target-dashboard": "目标仪表板", - "open-right-layout": "打开右侧布局 (移动端视图)" + "storage": "Storage", + "storage-max-file-records": "文件中的最大记录数", + "storage-max-files": "最大文件数", + "storage-max-files-min": "最小值为1。", + "storage-max-files-pattern": "数字无效。", + "storage-max-files-required": "数字是必需的。", + "storage-max-records": "存储中的最大记录数", + "storage-max-records-min": "最小记录数为1。", + "storage-max-records-pattern": "数字无效。", + "storage-max-records-required": "最大记录项必填。", + "storage-pack-size": "最大事件包大小", + "storage-pack-size-min": "最小值为1。", + "storage-pack-size-pattern": "数字无效。", + "storage-pack-size-required": "最大事件包大小必填。", + "storage-path": "存储路径", + "storage-path-required": "存储路径必填。", + "storage-type": "存储类型", + "storage-types": { + "file-storage": "文件存储", + "memory-storage": "存储器" }, - "widgets-bundle": { - "current": "当前包", - "widgets-bundles": "部件包", - "add": "添加部件包", - "delete": "删除部件包", - "title": "标题", - "title-required": "标题必填。", - "add-widgets-bundle-text": "添加新的部件包", - "no-widgets-bundles-text": "找不到部件包", - "empty": "部件包是空的", - "details": "详情", - "widgets-bundle-details": "部件包详细信息", - "delete-widgets-bundle-title": "您确定要删除部件包 '{{widgetsBundleTitle}}'吗?", - "delete-widgets-bundle-text": "小心!确认后,部件包和所有相关数据将不可恢复。", - "delete-widgets-bundles-title": "你确定你要删除 { count, plural, 1 {1 部件包} other {# 部件包} } 吗?", - "delete-widgets-bundles-action-title": "删除 { count, plural, 1 {1 部件包} other {# 部件包} }", - "delete-widgets-bundles-text": "小心!确认后,所有选定的部件包将被删除,所有相关数据将不可恢复。", - "no-widgets-bundles-matching": "没有找到与 '{{widgetsBundle}}' 匹配的部件包。", - "widgets-bundle-required": "需要部件包。", - "system": "系统", - "import": "导入部件包", - "export": "导出部件包", - "export-failed-error": "无法导出部件包: {{error}}", - "create-new-widgets-bundle": "创建新的部件包", - "widgets-bundle-file": "部件包文件", - "invalid-widgets-bundle-file-error": "无法导入部件包:无效的部件包数据结构。" + "thingsboard": "ThingsBoard", + "thingsboard-host": "ThingsBoard主机", + "thingsboard-host-required": "主机必填。", + "thingsboard-port": "ThingsBoard端口", + "thingsboard-port-max": "最大端口号为65535。", + "thingsboard-port-min": "最小端口号为1。", + "thingsboard-port-pattern": "端口无效。", + "thingsboard-port-required": "端口必填。", + "tidy": "整洁", + "tidy-tip": "整理配置JSON", + "title-connectors-json": "连接器 {{typeName}} 配置", + "tls-path-ca-certificate": "网关上CA证书的路径", + "tls-path-client-certificate": "网关上客户端证书的路径", + "tls-path-private-key": "网关上私钥的路径", + "toggle-fullscreen": "切换全屏", + "transformer-json-config": "配置JSON*", + "update-config": "添加/更新配置JSON" + }, + "grid": { + "add-item-text": "添加新项目", + "delete-item": "删除项目", + "delete-item-text": "注意,确认后此项及其所有相关数据将变得不可恢复。", + "delete-item-title": "您确定要删除此项吗?", + "delete-items": "删除项目", + "delete-items-action-title": "删除 { count, plural, 1 {1 个元素} other {# 个元素} }", + "delete-items-text": "注意,确认后所有选择的项目将被删除,所有相关数据将不可恢复。", + "delete-items-title": "确定你要删除 { count, plural, 1 {1 项} other {# 项} }吗?", + "item-details": "项目详细信息", + "no-items-text": "没有找到项目", + "scroll-to-top": "滚动到顶部" + }, + "help": { + "goto-help-page": "转到帮助页面" + }, + "home": { + "avatar": "头像", + "home": "首页", + "logout": "注销", + "menu": "菜单", + "open-user-menu": "打开用户菜单", + "profile": "属性" + }, + "icon": { + "icon": "图标", + "material-icons": "素材图标", + "select-icon": "选择图标", + "show-all": "显示所有图标" + }, + "import": { + "column-example": "示例值数据", + "column-key": "属性/遥测键", + "column-title": "标题", + "column-type": { + "access-token": "访问令牌", + "client-attribute": "客户端属性", + "column-type": "列类型", + "description": "说明", + "entity-field": "实体字段", + "isgateway": "Is网关", + "label": "标签", + "name": "名称", + "server-attribute": "服务器属性", + "shared-attribute": "共享属性", + "timeseries": "Timeseries", + "type": "类型" }, - "widget-config": { - "data": "数据", - "settings": "设置", - "advanced": "高级", - "title": "标题", - "general-settings": "常规设置", - "display-title": "显示标题", - "drop-shadow": "阴影", - "enable-fullscreen": "启用全屏", - "background-color": "背景颜色", - "text-color": "文字颜色", - "padding": "填充", - "margin": "边缘", - "widget-style": "部件风格", - "title-style": "标题风格", - "mobile-mode-settings": "移动端设置", - "order": "顺序", - "height": "高度", - "units": "特殊符号展示值", - "decimals": "浮点数后的位数", - "timewindow": "时间窗口", - "use-dashboard-timewindow": "使用仪表板的时间窗口", - "display-legend": "显示图例", - "datasources": "数据源", - "maximum-datasources": "最大允许 { count, plural, 1 {1 数据} other {# 数据} }", - "datasource-type": "类型", - "datasource-parameters": "参数", - "remove-datasource": "移除数据源", - "add-datasource": "添加数据源", - "target-device": "目标设备", - "alarm-source": "警告源", - "actions": "动作", - "action": "动作", - "add-action": "添加动作", - "search-actions": "动作检索", - "action-source": "动作源", - "action-source-required": "动作源必填", - "action-name": "动作名称", - "action-name-required": "动作名称必填。", - "action-name-not-unique": "动作名称已经存在。
统一动作源的动作名称必须唯一。", - "action-icon": "图标", - "action-type": "类型", - "action-type-required": "类型必填", - "edit-action": "编辑动作", - "delete-action": "删除动作", - "delete-action-title": "删除部件动作", - "delete-action-text": "确定要删除部件动作 '{{actionName}}' 吗?" + "column-value": "价值", + "csv-delimiter": "CSV分隔符", + "csv-first-line-header": "第一行包含列名", + "csv-update-data": "更新属性/遥测", + "drop-file": "拖动一个JSON文件或者单击以选择要上传的文件。", + "drop-file-csv": "删除CSV文件或单击以选择要上载的文件。", + "import-csv-invalid-format-error": "文件格式无效。行: '{{line}}'", + "import-csv-number-columns-error": "一个文件至少应该包含两列", + "message": { + "create-entities": "{{count}} 个新实体已成功创建。", + "error-entities": "创建 {{count}} 个实体时出错。", + "update-entities": "{{count}} 个实体已成功更新。" }, - "widget-type": { - "import": "导入部件类型", - "export": "导出部件类型", - "export-failed-error": "无法导出部件类型: {{error}}", - "create-new-widget-type": "创建新的部件类型", - "widget-type-file": "部件类型文件", - "invalid-widget-type-file-error": "无法导入部件类型:无效的部件类型数据结构。" + "no-file": "没有选择文件", + "stepper-text": { + "column-type": "选择列类型", + "configuration": "导入配置", + "creat-entities": "创建新实体", + "done": "多恩", + "select-file": "选择一个文件" + } + }, + "item": { + "selected": "选择" + }, + "js-func": { + "mini": "迷你", + "no-return-error": "函数必须返回值!", + "return-type-mismatch": "函数必须返回 '{{type}}' 类型的值!", + "tidy": "整洁" + }, + "key-val": { + "add-entry": "增加条目", + "key": "键名", + "no-data": "没有条目", + "remove-entry": "删除条目", + "value": "价值" + }, + "language": { + "language": "语言", + "locales": { + "cs_CZ": "Česky", + "de_DE": "Deutsch", + "el_GR": "Ελληνικά", + "en_US": "English", + "es_ES": "Español", + "fa_IR": "فارسي", + "fr_FR": "Français", + "it_IT": "Italiano", + "ja_JA": "日本語", + "ka_GE": "ქართული", + "ko_KR": "한글", + "lv_LV": "Latviešu", + "pt_BR": "Português do Brasil", + "ro_RO": "Română", + "ru_RU": "Русский", + "sl_SI": "Slovenščina", + "tr_TR": "Türkçe", + "uk_UA": "Українська", + "zh_CN": "简体中文", + "zh_TW": "繁體中文" + } + }, + "layout": { + "color": "颜色", + "layout": "布局", + "main": "主体", + "manage": "布局管理", + "right": "右侧", + "select": "选择目标布局", + "settings": "布局设置" + }, + "legend": { + "avg": "平均值", + "comparison-time-ago": { + "days": "(一天前)", + "months": "(一个月前)", + "weeks": "(一周前)", + "years": "(一年前)" }, - "widgets": { - "date-range-navigator": { - "localizationMap": { - "Sun": "周日", - "Mon": "周一", - "Tue": "周二", - "Wed": "周三", - "Thu": "周四", - "Fri": "周五", - "Sat": "周六", - "Jan": "1月", - "Feb": "2月", - "Mar": "3月", - "Apr": "4月", - "May": "5月", - "Jun": "6月", - "Jul": "7月", - "Aug": "8月", - "Sep": "9月", - "Oct": "10月", - "Nov": "11月", - "Dec": "12月", - "January": "一月", - "February": "二月", - "March": "三月", - "April": "四月", - "June": "六月", - "July": "七月", - "August": "八月", - "September": "九月", - "October": "十月", - "November": "十一月", - "December": "十二月", - "Custom Date Range": "自定义日期范围", - "Date Range Template": "日期范围模板", - "Today": "今天", - "Yesterday": "昨天", - "This Week": "本星期", - "Last Week": "上个星期", - "This Month": "这个月", - "Last Month": "上个月", - "Year": "年", - "This Year": "今年", - "Last Year": "去年", - "Date picker": "日期选择器", - "Hour": "小时", - "Day": "天", - "Week": "周", - "2 weeks": "2周", - "Month": "月", - "3 months": "3个月", - "6 months": "6个月", - "Custom interval": "自定义间隔", - "Interval": "间隔", - "Step size": "步长", - "Ok": "Ok" - } - } + "direction": "图例方向", + "max": "最大值", + "min": "最小值", + "position": "图例位置", + "settings": "图例设置", + "show-avg": "显示平均值", + "show-max": "显示最大值", + "show-min": "显示最小值", + "show-total": "显示总数", + "sort-legend": "在图例中排序数据键", + "total": "总数" + }, + "login": { + "create-password": "创建密码", + "email": "电子邮件", + "error": "登录错误", + "expired-password-reset-message": "您的凭据已过期!请创建新密码。", + "forgot-password": "忘记密码?", + "login": "登录", + "login-with": "使用 {{name}} 登录", + "new-password": "新密码", + "new-password-again": "再次输入新密码", + "or": "或", + "password-again": "再次输入密码", + "password-link-sent-message": "密码重置链接已成功发送!", + "password-reset": "密码重置", + "passwords-mismatch-error": "输入的密码必须相同!", + "remember-me": "记住我", + "request-password-reset": "请求密码重置", + "reset-password": "重置密码", + "sign-in": "登录 ", + "username": "用户名(电子邮件)" + }, + "position": { + "bottom": "底部", + "left": "左侧", + "right": "右侧", + "top": "顶部" + }, + "profile": { + "change-password": "更改密码", + "current-password": "当前密码", + "last-login-time": "最后登录", + "profile": "属性" + }, + "queue": { + "name": "队列名称", + "name_required": "队列名称必填!", + "select_name": "选择队列名称" + }, + "relation": { + "add": "添加关联", + "add-relation-filter": "添加关联过滤器", + "additional-info": "附加信息 (JSON)", + "any-relation": "任意关联", + "any-relation-type": "任何类型", + "delete": "删除关联", + "delete-from-relation-text": "确定删除后,当前实体将与实体 '{{entityName}}' 取消关联", + "delete-from-relation-title": "确定要从实体 '{{entityName}}' 删除关联吗?", + "delete-from-relations-text": "确定删除所有选择的关联关系后,当前实体将与对应的实体取消关联", + "delete-from-relations-title": "确定删除 { count, plural, 1 {1 个关联} other {# 个关联} } 吗?", + "delete-to-relation-text": "确定删除后实体 '{{entityName}}' 将取消与当前实体的关联关系。", + "delete-to-relation-title": "确定要删除实体 '{{entityName}}' 的关联吗?", + "delete-to-relations-text": "确定删除所有选择的关联关系后,与当前实体对应的所有关联关系将被移除。", + "delete-to-relations-title": "确定要删除 { count, plural, 1 {1 个关联} other {# 个关联} }?", + "direction": "方向", + "direction-type": { + "FROM": "从", + "TO": "到" }, - "icon": { - "icon": "图标", - "select-icon": "选择图标", - "material-icons": "素材图标", - "show-all": "显示所有图标" + "edit": "编辑关联", + "from-entity": "从实体", + "from-entity-name": "从实体类型", + "from-entity-type": "从实体类型", + "from-relations": "向外的关联", + "invalid-additional-info": "无法解析附加信息JSON。", + "no-relations-text": "未找到关联", + "relation-filters": "关联过滤器", + "relation-type": "关联类型", + "relation-type-required": "关联类型必填", + "relations": "关联", + "remove-relation-filter": "移除关联过滤器", + "search-direction": { + "FROM": "从", + "TO": "到" }, - "custom": { - "widget-action": { - "action-cell-button": "动作单元格按钮", - "row-click": "点击行", - "marker-click": "点击标记", - "polygon-click": "单击多边形", - "tooltip-tag-action": "提示标签动作" - } + "selected-relations": "已选择{ count, plural, 1 {1 个关联} other {# 个关联} }", + "to-entity": "到实体", + "to-entity-name": "到实体名称", + "to-entity-type": "到实体类型", + "to-relations": "向内的关联", + "type": "类型" + }, + "rulechain": { + "add": "添加规则链", + "add-rulechain-text": "添加新的规则链", + "copyId": "复制规则链ID", + "create-new-rulechain": "创建新的规则链", + "debug-mode": "调试模式", + "delete": "删除规则链", + "delete-rulechain-text": "小心,在确认规则链和所有相关数据将变得不可恢复。", + "delete-rulechain-title": " 确实要删除规则链'{{ruleChainName}}'吗?", + "delete-rulechains-action-title": "删除 { count, plural, 1 {1 个规则链} other {# 个规则链} }", + "delete-rulechains-text": "请注意:确认后,所有选定的规则链将被删除,所有相关的数据将变得不可恢复。", + "delete-rulechains-title": "确实要删除{count, plural, 1 { 1 个规则链} other {# 个规则链} }吗?", + "description": "说明", + "details": "细节", + "events": "事件", + "export": "导出规则链", + "export-failed-error": "无法导出规则链:{{error}}", + "idCopiedMessage": "规则ID已经复制到粘贴板", + "import": "导入规则链", + "invalid-rulechain-file-error": "不能导入规则链:无效的规则链数据格式。", + "management": "规则集管理", + "name": "名称", + "name-required": "名称必填。", + "no-rulechains-matching": "没有发现匹配'{{entity}}'的规则链。", + "no-rulechains-text": "未找到规则链", + "open-rulechain": "打开规则链", + "root": "是否根链", + "rulechain": "规则链", + "rulechain-details": "规则链详情", + "rulechain-file": "规则链文件", + "rulechain-required": "规则链必填", + "rulechains": "规则链库", + "search": "搜索规则链", + "select-rulechain": "选择规则链", + "selected-rulechains": "已选择 { count, plural, 1 {1 个规则链} other {# 个规则链} }", + "set-root": "设置为根规则链", + "set-root-rulechain-text": "确认之后,规则链将变为根规格链,并将处理所有传入的传输消息。", + "set-root-rulechain-title": "您确定要生成规则链'{{RuleChainName}}'根吗?", + "system": "系统" + }, + "rulenode": { + "add": "添加规则节点", + "add-link": "添加链接", + "configuration": "配置", + "copy-selected": "选择副本", + "create-new-link-label": "创建一个新的!", + "custom-link-label": "自定义链接标签", + "custom-link-label-required": "自定义链接标签必填", + "debug-mode": "调试模式", + "delete": "删除规则节点", + "delete-selected": "删除选定", + "delete-selected-objects": "删除选定的节点和连接", + "description": "说明", + "deselect-all": "取消选择", + "deselect-all-objects": "取消选择所有节点和连接", + "details": "细节", + "directive-is-not-loaded": "定义的配置指令 '{{directiveName}}' 不可用。", + "events": "事件", + "help": "帮助", + "invalid-target-rulechain": "无法解析目标规则链!", + "link": "链接", + "link-details": "规则节点链接详情", + "link-label": "链接标签", + "link-label-required": "链接标签必填", + "link-labels": "链接标签", + "link-labels-required": "链接标签必填。", + "message": "消息", + "message-type": "消息类型", + "message-type-required": "消息类型必填", + "metadata": "元数据", + "metadata-required": "元数据项不能为空。", + "name": "名称", + "name-required": "名称必填。", + "no-link-label-matching": "找不到'{{label}}'。", + "no-link-labels-found": "找不到链接标签", + "open-node-library": "打开节点库", + "output": "输出", + "reset-debug-mode": "重置所有节点中的调试模式", + "rulenode-details": "规则节点详情", + "search": "搜索节点", + "select-all": "选择全部", + "select-all-objects": "选择所有节点和连接", + "select-message-type": "选择消息类型", + "test": "测试", + "test-script-function": "测试脚本功能", + "type": "类型", + "type-action": "动作", + "type-action-details": "执行特别动作", + "type-enrichment": "属性集", + "type-enrichment-details": "向消息元数据中添加附加信息", + "type-external": "外部的", + "type-external-details": "与外部系统交互", + "type-filter": "过滤器", + "type-filter-details": "使用配置条件过滤传入消息", + "type-input": "输入", + "type-input-details": "规则链的逻辑输入,将传入消息转发到下一个相关规则节点", + "type-rule-chain": "规则链", + "type-rule-chain-details": "将传入消息转发到指定的规则链", + "type-transformation": "变换", + "type-transformation-details": "更改消息有效载荷和元数据", + "type-unknown": "未知", + "type-unknown-details": "未解析的规则节点", + "ui-resources-load-error": "加载配置UI资源失败。" + }, + "tenant-profile": { + "add": "添加租户配置", + "copyId": "复制租户配置Id", + "create-new-tenant-profile": "创建一个新的!", + "data": "纵断面数据", + "default": "默认", + "default-storage-ttl-days": "默认存储TTL天(0-无限制)", + "default-storage-ttl-days-range": "不能为负存储天数", + "default-storage-ttl-days-required": "默认存储 TTL 天数必填。", + "delete": "删除租户配置", + "delete-tenant-profile-text": "请注意:确认后,租户配置和所有相关数据将不可。", + "delete-tenant-profile-title": "确实要删除租户配置 '{{tenantProfileName}}'吗?", + "delete-tenant-profiles-text": "请注意:确认后,所有选定的租户配置将被删除,所有相关数据将不可恢复。", + "delete-tenant-profiles-title": "确定要删除 { count, plural, 1 {1 个租户配置} other {# 个租户配置} }?", + "description": "说明", + "edit": "编辑租户配置", + "idCopiedMessage": "租户配置Id已复制到剪贴板", + "max-d-p-storage-days": "最大数据点存储天数(0-无限制)", + "max-d-p-storage-days-range": "最大数据点存储天数不能为负数", + "max-d-p-storage-days-required": "最大数据点存储天数必填。", + "max-emails": "发送的最大电子邮件数(0-无限制)", + "max-emails-range": "发送的最大电子邮件数不能为负数", + "max-emails-required": "最大电子邮件发送数必填。", + "max-j-s-executions": "最大JavaScript执行数(0-不受限制)", + "max-j-s-executions-range": "JavaScript的最大执行数不能为负数", + "max-j-s-executions-required": "最大JavaScript执行数必填。", + "max-r-e-executions": "最大规则引擎执行数(0-不受限制)", + "max-r-e-executions-range": "规则引擎执行的最大数目不能为负", + "max-r-e-executions-required": "最大规则引擎执行数必填。", + "max-rule-node-executions-per-message": "每条消息的最大规则节点执行数(0-无限制)", + "max-rule-node-executions-per-message-range": "每条消息的最大规则节点执行数不能为负", + "max-rule-node-executions-per-message-required": "每个消息的最大规则节点执行数必填。", + "max-sms": "发送的最大短信数(0-无限制)", + "max-sms-range": "发送的最大短信数不能为负数", + "max-sms-required": "最大短信发送数必填。", + "max-transport-data-points": "传输数据点的最大数量(0-无限制)", + "max-transport-data-points-range": "传输数据点的最大数目不能为负", + "max-transport-data-points-required": "最大传输数据点数必填。", + "max-transport-messages": "最大传输消息数(0-无限制)", + "max-transport-messages-range": "传输消息的最大数目不能为负数", + "max-transport-messages-required": "最大传输消息数必填。", + "maximum-assets": "最大资产数量(0-无限)", + "maximum-assets-range": "最大资产数不能为负数", + "maximum-assets-required": "最大资产数必填。", + "maximum-customers": "最大客户数(0-无限制)", + "maximum-customers-range": "最大客户数不能为负数", + "maximum-customers-required": "最大客户数必填。", + "maximum-dashboards": "仪表板的最大数量(0-无限制)", + "maximum-dashboards-range": "仪表板的最大数量不能为负数", + "maximum-dashboards-required": "最大仪表板数必填。", + "maximum-devices": "最大设备数(0-无限制)", + "maximum-devices-range": "最小设备数不能为负数", + "maximum-devices-required": "最大设备数必填。", + "maximum-rule-chains": "最大规则链数(0-无限制)", + "maximum-rule-chains-range": "最大规则链数不能为负数", + "maximum-rule-chains-required": "最大规则链数必填。", + "maximum-users": "最大用户数(0-无限制)", + "maximum-users-range": "最大用户数不能为负数", + "maximum-users-required": "最大用户数必填。", + "name": "名称", + "name-required": "名称必填。", + "no-tenant-profiles-found": "找不到租户配置。", + "no-tenant-profiles-matching": "找不到与 '{{entity}}' 匹配的租户配置。", + "no-tenant-profiles-text": "找不到租户配置", + "profile-configuration": "配置设置", + "search": "搜索租户配置", + "selected-tenant-profiles": "已选择 { count, plural, 1 {1 个租户配置} other {# 个租户配置} }", + "set-default": "设置该租户配置为默认", + "set-default-tenant-profile-text": "确认后,此租户配置将被标记为默认配置,并将用于未指定配置的新租户。", + "set-default-tenant-profile-title": "确实要将租户配置 '{{tenantProfileName}}' 设为默认值吗?", + "tenant-profile": "租户简介", + "tenant-profile-details": "租户配置详细信息", + "tenant-profile-required": "租户配置必填", + "tenant-profiles": "租户配置", + "transport-device-msg-rate-limit": "传输设备消息速率限制。", + "transport-device-telemetry-data-points-rate-limit": "设备遥测数据点速率限制。", + "transport-device-telemetry-msg-rate-limit": "设备遥测消息速率限制。", + "transport-tenant-msg-rate-limit": "传输租户消息速率限制。", + "transport-tenant-telemetry-data-points-rate-limit": "租户遥测数据点速率限制。", + "transport-tenant-telemetry-msg-rate-limit": "租户遥测消息速率限制。" + }, + "tenant": { + "add": "添加租户", + "add-tenant-text": "添加新租户", + "admins": "管理员", + "copyId": "复制租户ID", + "delete": "删除租户", + "delete-tenant-text": "小心!确认后,租户和所有相关数据将不可恢复。", + "delete-tenant-title": "您确定要删除租户'{{tenantTitle}}'吗?", + "delete-tenants-action-title": "删除 { count, plural, 1 {1 个租户} other {# 个租户} }", + "delete-tenants-text": "小心!确认后,所有选定的租户将被删除,所有相关数据将不可恢复。", + "delete-tenants-title": "确定要删除 {count,plural,1 {1 个租户} other {# 个租户} } 吗?", + "description": "说明", + "details": "细节", + "events": "事件", + "idCopiedMessage": "租户ID已经复制到粘贴板", + "isolated-tb-core": "隔离板芯容器中的加工", + "isolated-tb-core-details": "每个独立租户需要单独的微服务", + "isolated-tb-rule-engine": "在独立的ThingsBoard规则引擎容器中处理", + "isolated-tb-rule-engine-details": "每个独立租户需要单独的微服务", + "manage-tenant-admins": "管理租户管理员", + "management": "租户管理", + "no-tenants-matching": "没有找到符合 '{{entity}}' 的租户", + "no-tenants-text": "没有找到租户", + "search": "搜索租户", + "select-tenant": "选择租户", + "selected-tenants": "已选择 { count, plural, 1 {1 个租户} other {# 个租户} }", + "tenant": "租户", + "tenant-details": "租客详情", + "tenant-required": "租户必填", + "tenants": "租户", + "title": "标题", + "title-required": "标题必填。" + }, + "timeinterval": { + "advanced": "高级", + "days": "天", + "days-interval": "{ days, plural, 1 {1 天} other {# 天} }", + "hours": "小时", + "hours-interval": "{ hours, plural, 1 {1 小时} other {# 小时} }", + "minutes": "分钟", + "minutes-interval": "{ minutes, plural, 1 {1 分} other {# 分} }", + "seconds": "秒", + "seconds-interval": "{ seconds, plural, 1 {1 秒} other {# 秒} }" + }, + "timeunit": { + "days": "天", + "hours": "小时", + "minutes": "分钟", + "seconds": "秒" + }, + "timewindow": { + "date-range": "日期范围", + "days": "{ days, plural, 1 { 天 } other {# 天 } }", + "edit": "编辑时间窗口", + "hide": "隐藏", + "history": "历史", + "hours": "{ hours, plural, 0 { 小时 } 1 {1 小时 } other {# 小时 } }", + "last": "最后", + "last-prefix": "最后", + "minutes": "{ minutes, plural, 0 { 分 } 1 {1 分 } other {# 分 } }", + "period": "从 {{ startTime }} 到 {{ endTime }}", + "realtime": "实时", + "seconds": "{ seconds, plural, 0 { 秒 } 1 {1 秒 } other {# 秒 } }", + "time-period": "时间段" + }, + "timezone": { + "no-timezones-matching": "No timezones matching '{{timezone}}' were found.", + "select-timezone": "选择时区", + "timezone": "时区", + "timezone-required": "时区必填。" + }, + "user": { + "activation-email-sent-message": "激活电子邮件已成功发送!", + "activation-link": "用户激活链接", + "activation-link-copied-message": "用户激活链接已经复制到粘贴板", + "activation-link-text": "使用该链接 激活 激活用户:", + "activation-method": "激活方式", + "add": "添加用户", + "add-user-text": "添加新用户", + "always-fullscreen": "始终全屏", + "anonymous": "匿名", + "copy-activation-link": "复制用户激活链接", + "customer": "客户", + "customer-users": "客户用户", + "default-dashboard": "默认面板", + "delete": "删除用户", + "delete-user-text": "小心!确认后,用户和所有相关数据将不可恢复。", + "delete-user-title": "您确定要删除用户 '{{userEmail}}' 吗?", + "delete-users-action-title": "删除 { count, plural, 1 {1 个用户} other {# 个用户} }", + "delete-users-text": "小心!确认后,所有选定的用户将被删除,所有相关数据将不可恢复。", + "delete-users-title": "确定要删除 { count, plural, 1 {1 个用户} other {# 个用户} } 吗?", + "description": "说明", + "details": "细节", + "disable-account": "禁用用户帐户", + "disable-account-message": "已成功禁用用户帐户!", + "display-activation-link": "显示激活链接", + "email": "电子邮件", + "email-required": "电子邮件必填。", + "enable-account": "启用用户帐户", + "enable-account-message": "已成功启用用户帐户!", + "first-name": "名字", + "invalid-email-format": "无效的邮件格式。", + "last-name": "姓", + "login-as-customer-user": "以客户用户身份登录", + "login-as-tenant-admin": "以租户管理员身份登录", + "no-users-matching": "没有找到符合 '{{entity}}' 的用户。", + "no-users-text": "找不到用户", + "resend-activation": "重新发送激活", + "search": "搜索用户", + "select-user": "选择用户", + "selected-users": "已选择 { count, plural, 1 {1 个用户} other {# 个用户} }", + "send-activation-mail": "发送激活邮件", + "sys-admin": "系统管理员", + "tenant-admin": "租户管理员", + "tenant-admins": "租户管理员", + "user": "用户", + "user-details": "用户详细信息", + "user-required": "用户必填", + "users": "用户" + }, + "value": { + "boolean": "布尔值", + "boolean-value": "布尔值", + "double": "双精度小数", + "double-value": "双精度小数值", + "double-value-required": "需要双精度值", + "false": "假", + "integer": "数字", + "integer-value": "数字值", + "integer-value-required": "整数值必填", + "invalid-integer-value": "整数值无效", + "json": "JSON", + "json-value": "JSON值", + "json-value-invalid": "JSON值的格式无效", + "json-value-required": "JSON值必填。", + "long": "Long", + "string": "字符串", + "string-value": "字符串值", + "string-value-required": "字符串值必填", + "true": "真", + "type": "值类型" + }, + "widget-action": { + "custom": "自定义动作", + "custom-pretty": "自定义操作(使用HTML模板)", + "header-button": "部件顶部按钮", + "open-dashboard": "切换到另一个仪表板", + "open-dashboard-state": "切换到新仪表板状态", + "open-right-layout": "打开右侧布局 (移动端视图)", + "set-entity-from-widget": "从部件中设置实体", + "target-dashboard": "目标仪表板", + "target-dashboard-state": "目标仪表板状态", + "target-dashboard-state-required": "目标仪表板状态必填", + "update-dashboard-state": "更新当前仪表板状态" + }, + "widget-config": { + "action": "Action", + "action-icon": "图标", + "action-name": "名称", + "action-name-not-unique": "Action 名称已经存在。
相同 Action Source 的 Action 名称必须唯一。", + "action-name-required": "Action 名称必填。", + "action-source": "Action Source", + "action-source-required": "Action Source 必填", + "action-type": "类型", + "action-type-required": "类型必填", + "actions": "Actions", + "add-action": "添加 Action", + "add-datasource": "添加数据源", + "advanced": "高级", + "alarm-source": "警告源", + "background-color": "背景颜色", + "data": "数据", + "datasource-parameters": "参数", + "datasource-type": "类型", + "datasources": "数据源", + "decimals": "浮点数后的位数", + "delete-action": "删除 Action", + "delete-action-text": "确定要删除部件动作 '{{actionName}}' 吗?", + "delete-action-title": "删除 Widget Action", + "display-icon": "显示标题图标", + "display-legend": "显示图例", + "display-timewindow": "显示时间窗口", + "display-title": "显示标题", + "drop-shadow": "阴影", + "edit-action": "编辑 Action", + "enable-fullscreen": "启用全屏", + "general-settings": "常规设置", + "height": "高度", + "icon-color": "图标颜色", + "icon-size": "图标大小", + "margin": "边缘", + "maximum-datasources": "最大允许 { count, plural, 1 {1 个数据源。} other {# 个数据源。} }", + "mobile-mode-settings": "移动端设置", + "no-actions-text": "找不到 Action", + "order": "顺序", + "padding": "填充", + "remove-datasource": "移除数据源", + "search-actions": "Action 检索", + "settings": "设置", + "target-device": "目标设备", + "text-color": "文字颜色", + "timewindow": "时间窗口", + "title": "标题", + "title-style": "标题风格", + "title-tooltip": "标题工具提示", + "units": "特殊符号展示值", + "use-dashboard-timewindow": "使用仪表板的时间窗口", + "widget-style": "部件风格" + }, + "widget-type": { + "create-new-widget-type": "创建新的部件类型", + "export": "导出部件类型", + "export-failed-error": "无法导出部件类型: {{error}}", + "import": "导入部件类型", + "invalid-widget-type-file-error": "无法导入部件类型:无效的部件类型数据结构。", + "widget-type-file": "部件类型文件" + }, + "widget": { + "add": "添加部件", + "add-resource": "添加资源", + "add-widget-type": "添加新的部件类型", + "alarm": "警告部件", + "alarm-data-overflow": "Widget displays alarms for {{allowedEntities}} (maximum allowed) entities out of {{totalEntities}} entities", + "css": "CSS", + "data-overflow": "Widget displays {{count}} out of {{total}} entities", + "datakey-settings-schema": "数据键设置模式", + "edit": "编辑部件", + "editor": "部件编辑器", + "export": "导出部件", + "html": "HTML", + "javascript": "Javascript", + "js": "JS", + "latest-values": "最新值", + "management": "管理部件", + "missing-widget-title-error": "部件标题必须指定!", + "no-data": "小部件上没有要显示的数据", + "no-data-found": "没有找到数据", + "remove": "删除部件", + "remove-resource": "删除资源", + "remove-widget-text": "确认后,控件和所有相关数据将变得不可恢复。", + "remove-widget-title": "确实要删除 '{{widgetTitle}}'部件吗?", + "remove-widget-type": "删除部件类型", + "remove-widget-type-text": "确认后,窗口部件类型和所有相关数据将不可恢复。", + "remove-widget-type-title": "您确定要删除部件类型 '{{widgetName}}'吗?", + "resource-is-module": "Is module", + "resource-url": "JavaScript/CSS URL", + "resources": "资源", + "rpc": "控件部件", + "run": "运行部件", + "save": "保存部件", + "save-widget-type-as": "部件类型另存为", + "save-widget-type-as-text": "请输入新的部件标题或选择目标部件组", + "saveAs": "部件另存为", + "search-data": "搜索数据", + "select-widget-type": "选择窗口部件类型", + "select-widgets-bundle": "选择部件组", + "settings-schema": "设置模式", + "static": "静态部件", + "tidy": "Tidy", + "timeseries": "Timeseries", + "title": "部件标题", + "title-required": "部件标题必填。", + "toggle-fullscreen": "切换全屏", + "type": "部件类型", + "unable-to-save-widget-error": "无法保存部件!控件有错误!", + "undo": "撤消部件更改", + "widget-bundle": "部件组", + "widget-library": "部件库", + "widget-saved": "部件已保存", + "widget-template-load-failed-error": "无法加载部件模板!", + "widget-type-load-error": "由于以下错误未加载小部件:", + "widget-type-load-failed-error": "无法加载部件类型!", + "widget-type-not-found": "加载部件配置出错。
可能关联的部件已经删除了。" + }, + "widgets-bundle": { + "add": "添加部件组", + "add-widgets-bundle-text": "添加新的部件组", + "create-new-widgets-bundle": "创建新的部件组", + "current": "当前组", + "delete": "删除部件组", + "delete-widgets-bundle-text": "小心!确认后,部件组和所有相关数据将不可恢复。", + "delete-widgets-bundle-title": "您确定要删除部件组 '{{widgetsBundleTitle}}'吗?", + "delete-widgets-bundles-action-title": "删除 { count, plural, 1 {1 个部件组} other {# 个部件组} }", + "delete-widgets-bundles-text": "小心!确认后,所有选定的部件组将被删除,所有相关数据将不可恢复。", + "delete-widgets-bundles-title": "确定要删除 { count, plural, 1 {1 个部件组} other {# 个部件组} } 吗?", + "details": "细节", + "empty": "部件组是空的", + "export": "导出部件组", + "export-failed-error": "无法导出部件组: {{error}}", + "import": "导入部件组", + "invalid-widgets-bundle-file-error": "无法导入部件组:无效的部件组数据结构。", + "no-widgets-bundles-matching": "没有找到与 '{{widgetsBundle}}' 匹配的部件组。", + "no-widgets-bundles-text": "找不到部件组", + "open-widgets-bundle": "打开部件组", + "search": "搜索部件组", + "selected-widgets-bundles": "已选择 { count, plural, 1 {1 个部件组} other {# 个部件组} }", + "system": "系统", + "title": "标题", + "title-required": "标题必填。", + "widgets-bundle-details": "部件组详细信息", + "widgets-bundle-file": "部件组文件", + "widgets-bundle-required": "部件组必填。", + "widgets-bundles": "部件包" + }, + "widgets": { + "date-range-navigator": { + "localizationMap": { + "2 weeks": "2周", + "3 months": "3个月", + "6 months": "6个月", + "Apr": "4月", + "April": "四月", + "Aug": "8月", + "August": "八月", + "Custom Date Range": "自定义日期范围", + "Custom interval": "自定义间隔", + "Date Range Template": "日期范围模板", + "Date picker": "日期选择器", + "Day": "天", + "Dec": "12月", + "December": "十二月", + "Feb": "2月", + "February": "二月", + "Fri": "周五", + "Hour": "小时", + "Interval": "间隔", + "Jan": "1月", + "January": "一月", + "Jul": "7月", + "July": "七月", + "Jun": "6月", + "June": "六月", + "Last Month": "上个月", + "Last Week": "上个星期", + "Last Year": "去年", + "Mar": "3月", + "March": "三月", + "May": "5月", + "Mon": "周一", + "Month": "月", + "Nov": "11月", + "November": "十一月", + "Oct": "10月", + "October": "十月", + "Ok": "Ok", + "Sat": "周六", + "Sep": "9月", + "September": "九月", + "Step size": "步长", + "Sun": "周日", + "This Month": "这个月", + "This Week": "本星期", + "This Year": "今年", + "Thu": "周四", + "Today": "今天", + "Tue": "周二", + "Wed": "周三", + "Week": "周", + "Year": "年", + "Yesterday": "昨天" + } }, - "language": { - "language": "语言" + "input-widgets": { + "attribute-not-allowed": "属性参数不能在此小部件中使用", + "blocked-location": "在浏览器中阻止地理位置", + "claim-device": "声明设备", + "claim-failed": "声明设备失败!", + "claim-not-found": "找不到设备!", + "claim-successful": "设备已成功申领!", + "date": "日期", + "device-name": "设备名称", + "device-name-required": "设备名称必填", + "discard-changes": "放弃更改", + "enable-https-use-widget": "请启用HTTPS以使用此部件", + "entity-attribute-required": "实体属性必填", + "entity-coordinate-required": "纬度和经度两个字段都是必需的", + "entity-timeseries-required": "实体 Timeseries 必填", + "get-location": "获取当前位置", + "invalid-date": "无效日期", + "latitude": "纬度", + "longitude": "经度", + "max-value-error": "最大值是{{value}}", + "min-value-error": "最小值是{{value}}", + "no-attribute-selected": "未选择任何属性", + "no-coordinate-specified": "未指定纬度/经度的数据键", + "no-datakey-selected": "未选择数据键", + "no-entity-selected": "未选择实体", + "no-found-your-camera": "找不到摄像机", + "no-image": "没有图像", + "no-permission-camera": "权限被用户拒绝/此站点无权使用摄像机", + "no-support-geolocation": "您的浏览器不支持地理定位", + "no-support-web-camera": "您的浏览器不支持摄像头", + "no-timeseries-selected": "未选择 Timeseries", + "not-allowed-entity": "所选实体不能具有共享属性", + "secret-key": "密钥", + "secret-key-required": "密钥必填", + "switch-attribute-value": "切换实体属性值", + "switch-camera": "切换摄像机", + "switch-timeseries-value": "切换实体 Timeseries 值", + "take-photo": "拍照", + "time": "时间", + "timeseries-not-allowed": "Timeseries 参数不能用于此部件", + "update-attribute": "更新 attribute", + "update-failed": "更新失败", + "update-successful": "更新成功", + "update-timeseries": "更新 Timeseries", + "value": "价值" } -} + } +} \ No newline at end of file From 6ec9b9c7e131061a9249a6803c4f27a6125219e7 Mon Sep 17 00:00:00 2001 From: Serhii Mikhnytskyi Date: Tue, 5 Jan 2021 13:52:32 +0200 Subject: [PATCH 02/12] added - hide flot tooltip on chart destroying, prevent showing tooltip on flot hover, if edit mode is on. --- .../app/modules/home/components/widget/lib/flot-widget.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/flot-widget.ts b/ui-ngx/src/app/modules/home/components/widget/lib/flot-widget.ts index b7962a098d..b779c3bf43 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/flot-widget.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/flot-widget.ts @@ -718,6 +718,10 @@ export class TbFlot { public destroy() { this.cleanup(); + if (this.tooltip) { + this.tooltip.stop(true); + this.tooltip.hide(); + } if (this.plot) { this.plot.destroy(); this.plot = null; @@ -1170,7 +1174,7 @@ export class TbFlot { if (!this.plot) { return; } - if (!this.tooltipIndividual || item) { + if ((!this.tooltipIndividual || item) && !this.ctx.isEdit) { const multipleModeTooltip = !this.tooltipIndividual; if (multipleModeTooltip) { this.plot.unhighlight(); From d31358b2ea24356223f064996714b602504293c7 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Mon, 11 Jan 2021 13:42:16 +0200 Subject: [PATCH 03/12] Update license header - set 2021 year --- application/pom.xml | 2 +- application/src/main/conf/logback.xml | 2 +- application/src/main/conf/thingsboard.conf | 2 +- application/src/main/data/upgrade/1.3.0/schema_update.cql | 2 +- application/src/main/data/upgrade/1.3.1/schema_update.sql | 2 +- application/src/main/data/upgrade/1.4.0/schema_update.cql | 2 +- application/src/main/data/upgrade/1.4.0/schema_update.sql | 2 +- application/src/main/data/upgrade/2.0.0/schema_update.cql | 2 +- application/src/main/data/upgrade/2.0.0/schema_update.sql | 2 +- application/src/main/data/upgrade/2.1.1/schema_update.cql | 2 +- application/src/main/data/upgrade/2.1.1/schema_update.sql | 2 +- application/src/main/data/upgrade/2.1.2/schema_update.cql | 2 +- application/src/main/data/upgrade/2.1.2/schema_update.sql | 2 +- application/src/main/data/upgrade/2.2.0/schema_update.sql | 2 +- application/src/main/data/upgrade/2.3.1/schema_update.sql | 2 +- application/src/main/data/upgrade/2.4.0/schema_update.sql | 2 +- application/src/main/data/upgrade/2.4.2/schema_update.sql | 2 +- .../data/upgrade/2.4.3/schema_update_psql_drop_partitions.sql | 2 +- .../src/main/data/upgrade/2.4.3/schema_update_psql_ts.sql | 2 +- .../src/main/data/upgrade/2.4.3/schema_update_timescale_ts.sql | 2 +- application/src/main/data/upgrade/2.4.3/schema_update_ttl.sql | 2 +- application/src/main/data/upgrade/3.0.1/schema_ts_latest.sql | 2 +- .../src/main/data/upgrade/3.0.1/schema_update_to_uuid.sql | 2 +- application/src/main/data/upgrade/3.1.0/schema_update.sql | 2 +- .../src/main/data/upgrade/3.1.1/schema_update_after.sql | 2 +- .../src/main/data/upgrade/3.1.1/schema_update_before.sql | 2 +- .../org/thingsboard/server/ThingsboardInstallApplication.java | 2 +- .../org/thingsboard/server/ThingsboardServerApplication.java | 2 +- .../java/org/thingsboard/server/actors/ActorSystemContext.java | 2 +- .../server/actors/TbEntityTypeActorIdPredicate.java | 2 +- .../main/java/org/thingsboard/server/actors/app/AppActor.java | 2 +- .../java/org/thingsboard/server/actors/app/AppInitMsg.java | 2 +- .../java/org/thingsboard/server/actors/device/DeviceActor.java | 2 +- .../thingsboard/server/actors/device/DeviceActorCreator.java | 2 +- .../server/actors/device/DeviceActorMessageProcessor.java | 2 +- .../java/org/thingsboard/server/actors/device/SessionInfo.java | 2 +- .../thingsboard/server/actors/device/SessionInfoMetaData.java | 2 +- .../server/actors/device/SessionTimeoutCheckMsg.java | 2 +- .../server/actors/device/ToDeviceRpcRequestMetadata.java | 2 +- .../server/actors/device/ToServerRpcRequestMetadata.java | 2 +- .../thingsboard/server/actors/ruleChain/DefaultTbContext.java | 2 +- .../thingsboard/server/actors/ruleChain/RuleChainActor.java | 2 +- .../actors/ruleChain/RuleChainActorMessageProcessor.java | 2 +- .../server/actors/ruleChain/RuleChainManagerActor.java | 2 +- .../server/actors/ruleChain/RuleChainToRuleChainMsg.java | 2 +- .../server/actors/ruleChain/RuleChainToRuleNodeMsg.java | 2 +- .../org/thingsboard/server/actors/ruleChain/RuleNodeActor.java | 2 +- .../server/actors/ruleChain/RuleNodeActorMessageProcessor.java | 2 +- .../org/thingsboard/server/actors/ruleChain/RuleNodeCtx.java | 2 +- .../thingsboard/server/actors/ruleChain/RuleNodeRelation.java | 2 +- .../actors/ruleChain/RuleNodeToRuleChainTellNextMsg.java | 2 +- .../server/actors/ruleChain/RuleNodeToSelfErrorMsg.java | 2 +- .../thingsboard/server/actors/ruleChain/RuleNodeToSelfMsg.java | 2 +- .../org/thingsboard/server/actors/service/ActorService.java | 2 +- .../org/thingsboard/server/actors/service/ComponentActor.java | 2 +- .../thingsboard/server/actors/service/ContextAwareActor.java | 2 +- .../thingsboard/server/actors/service/ContextBasedCreator.java | 2 +- .../thingsboard/server/actors/service/DefaultActorService.java | 2 +- .../server/actors/shared/AbstractContextAwareMsgProcessor.java | 2 +- .../thingsboard/server/actors/shared/ActorTerminationMsg.java | 2 +- .../server/actors/shared/ComponentMsgProcessor.java | 2 +- .../java/org/thingsboard/server/actors/stats/StatsActor.java | 2 +- .../org/thingsboard/server/actors/stats/StatsPersistMsg.java | 2 +- .../org/thingsboard/server/actors/stats/StatsPersistTick.java | 2 +- .../thingsboard/server/actors/tenant/DebugTbRateLimits.java | 2 +- .../java/org/thingsboard/server/actors/tenant/TenantActor.java | 2 +- .../org/thingsboard/server/config/AuditLogLevelProperties.java | 2 +- .../config/CustomOAuth2AuthorizationRequestResolver.java | 2 +- .../main/java/org/thingsboard/server/config/JwtSettings.java | 2 +- .../java/org/thingsboard/server/config/MvcCorsProperties.java | 2 +- .../thingsboard/server/config/RateLimitProcessingFilter.java | 2 +- .../org/thingsboard/server/config/SchedulingConfiguration.java | 2 +- .../org/thingsboard/server/config/SwaggerConfiguration.java | 2 +- .../server/config/ThingsboardMessageConfiguration.java | 2 +- .../server/config/ThingsboardSecurityConfiguration.java | 2 +- .../src/main/java/org/thingsboard/server/config/WebConfig.java | 2 +- .../org/thingsboard/server/config/WebSocketConfiguration.java | 2 +- .../org/thingsboard/server/controller/AdminController.java | 2 +- .../org/thingsboard/server/controller/AlarmController.java | 2 +- .../org/thingsboard/server/controller/AssetController.java | 2 +- .../org/thingsboard/server/controller/AuditLogController.java | 2 +- .../java/org/thingsboard/server/controller/AuthController.java | 2 +- .../java/org/thingsboard/server/controller/BaseController.java | 2 +- .../server/controller/ComponentDescriptorController.java | 2 +- .../org/thingsboard/server/controller/CustomerController.java | 2 +- .../org/thingsboard/server/controller/DashboardController.java | 2 +- .../org/thingsboard/server/controller/DeviceController.java | 2 +- .../thingsboard/server/controller/DeviceProfileController.java | 2 +- .../thingsboard/server/controller/EntityQueryController.java | 2 +- .../server/controller/EntityRelationController.java | 2 +- .../thingsboard/server/controller/EntityViewController.java | 2 +- .../org/thingsboard/server/controller/EventController.java | 2 +- .../thingsboard/server/controller/HttpValidationCallback.java | 2 +- .../server/controller/OAuth2ConfigTemplateController.java | 2 +- .../org/thingsboard/server/controller/OAuth2Controller.java | 2 +- .../org/thingsboard/server/controller/QueueController.java | 2 +- .../java/org/thingsboard/server/controller/RpcController.java | 2 +- .../org/thingsboard/server/controller/RuleChainController.java | 2 +- .../java/org/thingsboard/server/controller/TbUrlConstants.java | 2 +- .../org/thingsboard/server/controller/TelemetryController.java | 2 +- .../org/thingsboard/server/controller/TenantController.java | 2 +- .../thingsboard/server/controller/TenantProfileController.java | 2 +- .../java/org/thingsboard/server/controller/UserController.java | 2 +- .../thingsboard/server/controller/WidgetTypeController.java | 2 +- .../thingsboard/server/controller/WidgetsBundleController.java | 2 +- .../server/controller/plugin/TbWebSocketHandler.java | 2 +- .../exception/ThingsboardCredentialsExpiredResponse.java | 2 +- .../thingsboard/server/exception/ThingsboardErrorResponse.java | 2 +- .../server/exception/ThingsboardErrorResponseHandler.java | 2 +- .../server/install/ThingsboardInstallConfiguration.java | 2 +- .../server/install/ThingsboardInstallException.java | 2 +- .../thingsboard/server/install/ThingsboardInstallService.java | 2 +- .../server/service/apiusage/DefaultTbApiUsageStateService.java | 2 +- .../server/service/apiusage/TbApiUsageStateService.java | 2 +- .../server/service/apiusage/TenantApiUsageState.java | 2 +- .../service/component/AnnotationComponentDiscoveryService.java | 2 +- .../server/service/component/ComponentDiscoveryService.java | 2 +- .../server/service/device/DeviceProvisionServiceImpl.java | 2 +- .../server/service/executors/DbCallbackExecutorService.java | 2 +- .../server/service/executors/ExternalCallExecutorService.java | 2 +- .../server/service/executors/SharedEventLoopGroupService.java | 2 +- .../install/AbstractCassandraDatabaseUpgradeService.java | 2 +- .../service/install/AbstractSqlTsDatabaseUpgradeService.java | 2 +- .../install/CassandraAbstractDatabaseSchemaService.java | 2 +- .../service/install/CassandraTsDatabaseSchemaService.java | 2 +- .../service/install/CassandraTsDatabaseUpgradeService.java | 2 +- .../install/CassandraTsLatestDatabaseSchemaService.java | 2 +- .../server/service/install/DatabaseEntitiesUpgradeService.java | 2 +- .../org/thingsboard/server/service/install/DatabaseHelper.java | 2 +- .../server/service/install/DatabaseSchemaService.java | 2 +- .../server/service/install/DatabaseTsUpgradeService.java | 2 +- .../server/service/install/DefaultSystemDataLoaderService.java | 2 +- .../server/service/install/EntityDatabaseSchemaService.java | 2 +- .../service/install/HsqlEntityDatabaseSchemaService.java | 2 +- .../server/service/install/HsqlTsDatabaseSchemaService.java | 2 +- .../org/thingsboard/server/service/install/InstallScripts.java | 2 +- .../service/install/PsqlEntityDatabaseSchemaService.java | 2 +- .../server/service/install/PsqlTsDatabaseSchemaService.java | 2 +- .../server/service/install/PsqlTsDatabaseUpgradeService.java | 2 +- .../service/install/SqlAbstractDatabaseSchemaService.java | 2 +- .../server/service/install/SqlDatabaseUpgradeService.java | 2 +- .../server/service/install/SystemDataLoaderService.java | 2 +- .../service/install/TimescaleTsDatabaseSchemaService.java | 2 +- .../service/install/TimescaleTsDatabaseUpgradeService.java | 2 +- .../server/service/install/TsDatabaseSchemaService.java | 2 +- .../server/service/install/TsLatestDatabaseSchemaService.java | 2 +- .../server/service/install/cql/CQLStatementsParser.java | 2 +- .../server/service/install/cql/CassandraDbHelper.java | 2 +- .../install/migrate/CassandraEntitiesToSqlMigrateService.java | 2 +- .../server/service/install/migrate/CassandraToSqlColumn.java | 2 +- .../service/install/migrate/CassandraToSqlColumnData.java | 2 +- .../service/install/migrate/CassandraToSqlColumnType.java | 2 +- .../service/install/migrate/CassandraToSqlEventTsColumn.java | 2 +- .../server/service/install/migrate/CassandraToSqlTable.java | 2 +- .../install/migrate/CassandraTsLatestToSqlMigrateService.java | 2 +- .../server/service/install/migrate/EntitiesMigrateService.java | 2 +- .../server/service/install/migrate/TsLatestMigrateService.java | 2 +- .../thingsboard/server/service/install/sql/SqlDbHelper.java | 2 +- .../server/service/install/update/DataUpdateService.java | 2 +- .../service/install/update/DefaultDataUpdateService.java | 2 +- .../server/service/install/update/PaginatedUpdater.java | 2 +- .../thingsboard/server/service/mail/DefaultMailService.java | 2 +- .../thingsboard/server/service/mail/MailExecutorService.java | 2 +- .../server/service/profile/DefaultTbDeviceProfileCache.java | 2 +- .../server/service/profile/TbDeviceProfileCache.java | 2 +- .../server/service/query/DefaultEntityQueryService.java | 2 +- .../thingsboard/server/service/query/EntityQueryService.java | 2 +- .../server/service/queue/DefaultTbClusterService.java | 2 +- .../server/service/queue/DefaultTbCoreConsumerService.java | 2 +- .../service/queue/DefaultTbRuleEngineConsumerService.java | 2 +- .../server/service/queue/DefaultTenantRoutingInfoService.java | 2 +- .../org/thingsboard/server/service/queue/TbClusterService.java | 2 +- .../server/service/queue/TbCoreConsumerService.java | 2 +- .../thingsboard/server/service/queue/TbCoreConsumerStats.java | 2 +- .../thingsboard/server/service/queue/TbMsgPackCallback.java | 2 +- .../server/service/queue/TbMsgPackProcessingContext.java | 2 +- .../thingsboard/server/service/queue/TbMsgProfilerInfo.java | 2 +- .../org/thingsboard/server/service/queue/TbPackCallback.java | 2 +- .../server/service/queue/TbPackProcessingContext.java | 2 +- .../server/service/queue/TbRuleEngineConsumerService.java | 2 +- .../server/service/queue/TbRuleEngineConsumerStats.java | 2 +- .../server/service/queue/TbRuleNodeProfilerInfo.java | 2 +- .../server/service/queue/TbTenantRuleEngineStats.java | 2 +- .../service/queue/processing/AbstractConsumerService.java | 2 +- .../queue/processing/AbstractTbRuleEngineSubmitStrategy.java | 2 +- .../queue/processing/BatchTbRuleEngineSubmitStrategy.java | 2 +- .../queue/processing/BurstTbRuleEngineSubmitStrategy.java | 2 +- .../thingsboard/server/service/queue/processing/IdMsgPair.java | 2 +- .../SequentialByEntityIdTbRuleEngineSubmitStrategy.java | 2 +- .../SequentialByOriginatorIdTbRuleEngineSubmitStrategy.java | 2 +- .../SequentialByTenantIdTbRuleEngineSubmitStrategy.java | 2 +- .../queue/processing/SequentialTbRuleEngineSubmitStrategy.java | 2 +- .../queue/processing/TbRuleEngineProcessingDecision.java | 2 +- .../service/queue/processing/TbRuleEngineProcessingResult.java | 2 +- .../queue/processing/TbRuleEngineProcessingStrategy.java | 2 +- .../processing/TbRuleEngineProcessingStrategyFactory.java | 2 +- .../service/queue/processing/TbRuleEngineSubmitStrategy.java | 2 +- .../queue/processing/TbRuleEngineSubmitStrategyFactory.java | 2 +- .../server/service/rpc/DefaultTbCoreDeviceRpcService.java | 2 +- .../server/service/rpc/DefaultTbRuleEngineRpcService.java | 2 +- .../thingsboard/server/service/rpc/FromDeviceRpcResponse.java | 2 +- .../thingsboard/server/service/rpc/LocalRequestMetaData.java | 2 +- .../thingsboard/server/service/rpc/TbCoreDeviceRpcService.java | 2 +- .../server/service/rpc/TbRuleEngineDeviceRpcService.java | 2 +- .../server/service/rpc/ToDeviceRpcRequestActorMsg.java | 2 +- .../server/service/script/AbstractJsInvokeService.java | 2 +- .../server/service/script/AbstractNashornJsInvokeService.java | 2 +- .../thingsboard/server/service/script/JsExecutorService.java | 2 +- .../org/thingsboard/server/service/script/JsInvokeRequest.java | 2 +- .../thingsboard/server/service/script/JsInvokeResponse.java | 2 +- .../org/thingsboard/server/service/script/JsInvokeService.java | 2 +- .../org/thingsboard/server/service/script/JsScriptType.java | 2 +- .../org/thingsboard/server/service/script/JsStatCallback.java | 2 +- .../server/service/script/NashornJsInvokeService.java | 2 +- .../server/service/script/RemoteJsInvokeService.java | 2 +- .../server/service/script/RemoteJsRequestEncoder.java | 2 +- .../server/service/script/RemoteJsResponseDecoder.java | 2 +- .../server/service/script/RuleNodeJsScriptEngine.java | 2 +- .../server/service/script/RuleNodeScriptFactory.java | 2 +- .../thingsboard/server/service/security/AccessValidator.java | 2 +- .../server/service/security/ValidationCallback.java | 2 +- .../thingsboard/server/service/security/ValidationResult.java | 2 +- .../server/service/security/ValidationResultCode.java | 2 +- .../service/security/auth/AbstractJwtAuthenticationToken.java | 2 +- .../server/service/security/auth/JwtAuthenticationToken.java | 2 +- .../service/security/auth/RefreshAuthenticationToken.java | 2 +- .../service/security/auth/jwt/JwtAuthenticationProvider.java | 2 +- .../auth/jwt/JwtTokenAuthenticationProcessingFilter.java | 2 +- .../security/auth/jwt/RefreshTokenAuthenticationProvider.java | 2 +- .../security/auth/jwt/RefreshTokenProcessingFilter.java | 2 +- .../service/security/auth/jwt/RefreshTokenRepository.java | 2 +- .../server/service/security/auth/jwt/RefreshTokenRequest.java | 2 +- .../service/security/auth/jwt/SkipPathRequestMatcher.java | 2 +- .../security/auth/jwt/extractor/JwtHeaderTokenExtractor.java | 2 +- .../security/auth/jwt/extractor/JwtQueryTokenExtractor.java | 2 +- .../service/security/auth/jwt/extractor/TokenExtractor.java | 2 +- .../security/auth/oauth2/AbstractOAuth2ClientMapper.java | 2 +- .../server/service/security/auth/oauth2/BasicMapperUtils.java | 2 +- .../service/security/auth/oauth2/BasicOAuth2ClientMapper.java | 2 +- .../service/security/auth/oauth2/CustomOAuth2ClientMapper.java | 2 +- .../service/security/auth/oauth2/GithubOAuth2ClientMapper.java | 2 +- .../service/security/auth/oauth2/OAuth2ClientMapper.java | 2 +- .../security/auth/oauth2/OAuth2ClientMapperProvider.java | 2 +- .../auth/oauth2/Oauth2AuthenticationFailureHandler.java | 2 +- .../auth/oauth2/Oauth2AuthenticationSuccessHandler.java | 2 +- .../server/service/security/auth/rest/LoginRequest.java | 2 +- .../server/service/security/auth/rest/PublicLoginRequest.java | 2 +- .../service/security/auth/rest/RestAuthenticationDetails.java | 2 +- .../security/auth/rest/RestAuthenticationDetailsSource.java | 2 +- .../service/security/auth/rest/RestAuthenticationProvider.java | 2 +- .../auth/rest/RestAwareAuthenticationFailureHandler.java | 2 +- .../auth/rest/RestAwareAuthenticationSuccessHandler.java | 2 +- .../service/security/auth/rest/RestLoginProcessingFilter.java | 2 +- .../security/auth/rest/RestPublicLoginProcessingFilter.java | 2 +- .../service/security/device/DefaultDeviceAuthService.java | 2 +- .../security/exception/AuthMethodNotSupportedException.java | 2 +- .../service/security/exception/JwtExpiredTokenException.java | 2 +- .../security/exception/UserPasswordExpiredException.java | 2 +- .../server/service/security/model/SecurityUser.java | 2 +- .../server/service/security/model/UserPrincipal.java | 2 +- .../server/service/security/model/token/AccessJwtToken.java | 2 +- .../server/service/security/model/token/JwtToken.java | 2 +- .../server/service/security/model/token/JwtTokenFactory.java | 2 +- .../server/service/security/model/token/RawAccessJwtToken.java | 2 +- .../service/security/permission/AbstractPermissions.java | 2 +- .../service/security/permission/AccessControlService.java | 2 +- .../service/security/permission/CustomerUserPermissions.java | 2 +- .../security/permission/DefaultAccessControlService.java | 2 +- .../server/service/security/permission/Operation.java | 2 +- .../server/service/security/permission/PermissionChecker.java | 2 +- .../server/service/security/permission/Permissions.java | 2 +- .../server/service/security/permission/Resource.java | 2 +- .../service/security/permission/SysAdminPermissions.java | 2 +- .../service/security/permission/TenantAdminPermissions.java | 2 +- .../service/security/system/DefaultSystemSecurityService.java | 2 +- .../server/service/security/system/SystemSecurityService.java | 2 +- .../service/session/DefaultDeviceSessionCacheService.java | 2 +- .../server/service/session/DeviceSessionCacheService.java | 2 +- .../org/thingsboard/server/service/sms/AbstractSmsSender.java | 2 +- .../server/service/sms/DefaultSmsSenderFactory.java | 2 +- .../org/thingsboard/server/service/sms/DefaultSmsService.java | 2 +- .../org/thingsboard/server/service/sms/SmsExecutorService.java | 2 +- .../org/thingsboard/server/service/sms/aws/AwsSmsSender.java | 2 +- .../thingsboard/server/service/sms/twilio/TwilioSmsSender.java | 2 +- .../server/service/state/DefaultDeviceStateService.java | 2 +- .../java/org/thingsboard/server/service/state/DeviceState.java | 2 +- .../org/thingsboard/server/service/state/DeviceStateData.java | 2 +- .../thingsboard/server/service/state/DeviceStateService.java | 2 +- .../thingsboard/server/service/stats/DefaultJsInvokeStats.java | 2 +- .../service/stats/DefaultRuleEngineStatisticsService.java | 2 +- .../server/service/stats/RuleEngineStatisticsService.java | 2 +- .../subscription/DefaultSubscriptionManagerService.java | 2 +- .../subscription/DefaultTbEntityDataSubscriptionService.java | 2 +- .../subscription/DefaultTbLocalSubscriptionService.java | 2 +- .../service/subscription/SubscriptionManagerService.java | 2 +- .../service/subscription/SubscriptionServiceStatistics.java | 2 +- .../server/service/subscription/TbAbstractDataSubCtx.java | 2 +- .../server/service/subscription/TbAlarmDataSubCtx.java | 2 +- .../server/service/subscription/TbAlarmsSubscription.java | 2 +- .../server/service/subscription/TbAttributeSubscription.java | 2 +- .../service/subscription/TbAttributeSubscriptionScope.java | 2 +- .../server/service/subscription/TbEntityDataSubCtx.java | 2 +- .../service/subscription/TbEntityDataSubscriptionService.java | 2 +- .../service/subscription/TbLocalSubscriptionService.java | 2 +- .../server/service/subscription/TbSubscription.java | 2 +- .../server/service/subscription/TbSubscriptionType.java | 2 +- .../server/service/subscription/TbSubscriptionUtils.java | 2 +- .../server/service/subscription/TbTimeseriesSubscription.java | 2 +- .../server/service/telemetry/AbstractSubscriptionService.java | 2 +- .../server/service/telemetry/AlarmSubscriptionService.java | 2 +- .../thingsboard/server/service/telemetry/AttributeData.java | 2 +- .../service/telemetry/DefaultAlarmSubscriptionService.java | 2 +- .../service/telemetry/DefaultTelemetrySubscriptionService.java | 2 +- .../service/telemetry/DefaultTelemetryWebSocketService.java | 2 +- .../server/service/telemetry/InternalTelemetryService.java | 2 +- .../org/thingsboard/server/service/telemetry/SessionEvent.java | 2 +- .../thingsboard/server/service/telemetry/TelemetryFeature.java | 2 +- .../server/service/telemetry/TelemetrySubscriptionService.java | 2 +- .../service/telemetry/TelemetryWebSocketMsgEndpoint.java | 2 +- .../server/service/telemetry/TelemetryWebSocketService.java | 2 +- .../server/service/telemetry/TelemetryWebSocketSessionRef.java | 2 +- .../server/service/telemetry/TelemetryWebSocketTextMsg.java | 2 +- .../java/org/thingsboard/server/service/telemetry/TsData.java | 2 +- .../server/service/telemetry/WsSessionMetaData.java | 2 +- .../service/telemetry/cmd/TelemetryPluginCmdsWrapper.java | 2 +- .../service/telemetry/cmd/v1/AttributesSubscriptionCmd.java | 2 +- .../server/service/telemetry/cmd/v1/GetHistoryCmd.java | 2 +- .../server/service/telemetry/cmd/v1/SubscriptionCmd.java | 2 +- .../server/service/telemetry/cmd/v1/TelemetryPluginCmd.java | 2 +- .../service/telemetry/cmd/v1/TimeseriesSubscriptionCmd.java | 2 +- .../server/service/telemetry/cmd/v2/AlarmDataCmd.java | 2 +- .../service/telemetry/cmd/v2/AlarmDataUnsubscribeCmd.java | 2 +- .../server/service/telemetry/cmd/v2/AlarmDataUpdate.java | 2 +- .../thingsboard/server/service/telemetry/cmd/v2/DataCmd.java | 2 +- .../server/service/telemetry/cmd/v2/DataUpdate.java | 2 +- .../server/service/telemetry/cmd/v2/DataUpdateType.java | 2 +- .../server/service/telemetry/cmd/v2/EntityDataCmd.java | 2 +- .../service/telemetry/cmd/v2/EntityDataUnsubscribeCmd.java | 2 +- .../server/service/telemetry/cmd/v2/EntityDataUpdate.java | 2 +- .../server/service/telemetry/cmd/v2/EntityHistoryCmd.java | 2 +- .../thingsboard/server/service/telemetry/cmd/v2/GetTsCmd.java | 2 +- .../server/service/telemetry/cmd/v2/LatestValueCmd.java | 2 +- .../server/service/telemetry/cmd/v2/TimeSeriesCmd.java | 2 +- .../server/service/telemetry/cmd/v2/UnsubscribeCmd.java | 2 +- .../service/telemetry/exception/AccessDeniedException.java | 2 +- .../service/telemetry/exception/EntityNotFoundException.java | 2 +- .../service/telemetry/exception/InternalErrorException.java | 2 +- .../telemetry/exception/InvalidParametersException.java | 2 +- .../service/telemetry/exception/ToErrorResponseEntity.java | 2 +- .../service/telemetry/exception/UnauthorizedException.java | 2 +- .../service/telemetry/exception/UncheckedApiException.java | 2 +- .../server/service/telemetry/sub/AlarmSubscriptionUpdate.java | 2 +- .../server/service/telemetry/sub/SubscriptionErrorCode.java | 2 +- .../server/service/telemetry/sub/SubscriptionState.java | 2 +- .../service/telemetry/sub/TelemetrySubscriptionUpdate.java | 2 +- .../service/transport/DefaultTbCoreToTransportService.java | 2 +- .../server/service/transport/DefaultTransportApiService.java | 2 +- .../server/service/transport/TbCoreToTransportService.java | 2 +- .../server/service/transport/TbCoreTransportApiService.java | 2 +- .../server/service/transport/TransportApiService.java | 2 +- .../transport/msg/TransportToDeviceActorMsgWrapper.java | 2 +- .../thingsboard/server/service/ttl/AbstractCleanUpService.java | 2 +- .../server/service/ttl/events/EventsCleanUpService.java | 2 +- .../ttl/timeseries/AbstractTimeseriesCleanUpService.java | 2 +- .../service/ttl/timeseries/PsqlTimeseriesCleanUpService.java | 2 +- .../ttl/timeseries/TimescaleTimeseriesCleanUpService.java | 2 +- .../server/service/update/DefaultUpdateService.java | 2 +- .../org/thingsboard/server/service/update/UpdateService.java | 2 +- .../src/main/java/org/thingsboard/server/utils/MiscUtils.java | 2 +- application/src/main/resources/logback.xml | 2 +- application/src/main/resources/templates/account.activated.ftl | 2 +- application/src/main/resources/templates/account.lockout.ftl | 2 +- application/src/main/resources/templates/activation.ftl | 2 +- .../src/main/resources/templates/password.was.reset.ftl | 2 +- application/src/main/resources/templates/reset.password.ftl | 2 +- application/src/main/resources/templates/state.disabled.ftl | 2 +- application/src/main/resources/templates/state.enabled.ftl | 2 +- application/src/main/resources/templates/state.warning.ftl | 2 +- application/src/main/resources/templates/test.ftl | 2 +- application/src/main/resources/thingsboard.yml | 2 +- .../thingsboard/server/controller/AbstractControllerTest.java | 2 +- .../server/controller/AbstractRuleEngineControllerTest.java | 2 +- .../org/thingsboard/server/controller/AbstractWebTest.java | 2 +- .../thingsboard/server/controller/AbstractWebsocketTest.java | 2 +- .../thingsboard/server/controller/BaseAdminControllerTest.java | 2 +- .../thingsboard/server/controller/BaseAssetControllerTest.java | 2 +- .../server/controller/BaseAuditLogControllerTest.java | 2 +- .../thingsboard/server/controller/BaseAuthControllerTest.java | 2 +- .../controller/BaseComponentDescriptorControllerTest.java | 2 +- .../server/controller/BaseCustomerControllerTest.java | 2 +- .../server/controller/BaseDashboardControllerTest.java | 2 +- .../server/controller/BaseDeviceControllerTest.java | 2 +- .../server/controller/BaseDeviceProfileControllerTest.java | 2 +- .../server/controller/BaseEntityQueryControllerTest.java | 2 +- .../server/controller/BaseEntityViewControllerTest.java | 2 +- .../server/controller/BaseTenantControllerTest.java | 2 +- .../server/controller/BaseTenantProfileControllerTest.java | 2 +- .../thingsboard/server/controller/BaseUserControllerTest.java | 2 +- .../thingsboard/server/controller/BaseWebsocketApiTest.java | 2 +- .../server/controller/BaseWidgetTypeControllerTest.java | 2 +- .../server/controller/BaseWidgetsBundleControllerTest.java | 2 +- .../thingsboard/server/controller/ControllerSqlTestSuite.java | 2 +- .../thingsboard/server/controller/TbTestWebSocketClient.java | 2 +- .../server/controller/sql/AdminControllerSqlTest.java | 2 +- .../server/controller/sql/AssetControllerSqlTest.java | 2 +- .../server/controller/sql/AuditLogControllerSqlTest.java | 2 +- .../server/controller/sql/AuthControllerSqlTest.java | 2 +- .../controller/sql/ComponentDescriptorControllerSqlTest.java | 2 +- .../server/controller/sql/CustomerControllerSqlTest.java | 2 +- .../server/controller/sql/DashboardControllerSqlTest.java | 2 +- .../server/controller/sql/DeviceControllerSqlTest.java | 2 +- .../server/controller/sql/DeviceProfileControllerSqlTest.java | 2 +- .../server/controller/sql/EntityQueryControllerSqlTest.java | 2 +- .../server/controller/sql/EntityViewControllerSqlTest.java | 2 +- .../server/controller/sql/TenantControllerSqlTest.java | 2 +- .../server/controller/sql/TenantProfileControllerSqlTest.java | 2 +- .../server/controller/sql/UserControllerSqlTest.java | 2 +- .../thingsboard/server/controller/sql/WebsocketApiSqlTest.java | 2 +- .../server/controller/sql/WidgetTypeControllerSqlTest.java | 2 +- .../server/controller/sql/WidgetsBundleControllerSqlTest.java | 2 +- .../thingsboard/server/mqtt/AbstractMqttIntegrationTest.java | 2 +- .../org/thingsboard/server/mqtt/DbConfigurationTestRule.java | 2 +- .../java/org/thingsboard/server/mqtt/MqttNoSqlTestSuite.java | 2 +- .../java/org/thingsboard/server/mqtt/MqttSqlTestSuite.java | 2 +- .../mqtt/attributes/AbstractMqttAttributesIntegrationTest.java | 2 +- .../request/AbstractMqttAttributesRequestIntegrationTest.java | 2 +- .../AbstractMqttAttributesRequestJsonIntegrationTest.java | 2 +- .../AbstractMqttAttributesRequestProtoIntegrationTest.java | 2 +- .../nosql/MqttAttributesRequestNoSqlIntegrationTest.java | 2 +- .../sql/MqttAttributesRequestJsonSqlIntegrationTest.java | 2 +- .../sql/MqttAttributesRequestProtoSqlIntegrationTest.java | 2 +- .../request/sql/MqttAttributesRequestSqlIntegrationTest.java | 2 +- .../updates/AbstractMqttAttributesUpdatesIntegrationTest.java | 2 +- .../AbstractMqttAttributesUpdatesJsonIntegrationTest.java | 2 +- .../AbstractMqttAttributesUpdatesProtoIntegrationTest.java | 2 +- .../nosql/MqttAttributesUpdatesNoSqlIntegrationTest.java | 2 +- .../updates/sql/MqttAttributesUpdatesSqlIntegrationTest.java | 2 +- .../sql/MqttAttributesUpdatesSqlJsonIntegrationTest.java | 2 +- .../sql/MqttAttributesUpdatesSqlProtoIntegrationTest.java | 2 +- .../server/mqtt/claim/AbstractMqttClaimDeviceTest.java | 2 +- .../server/mqtt/claim/AbstractMqttClaimJsonDeviceTest.java | 2 +- .../server/mqtt/claim/AbstractMqttClaimProtoDeviceTest.java | 2 +- .../server/mqtt/claim/nosql/MqttClaimDeviceNoSqlTest.java | 2 +- .../server/mqtt/claim/sql/MqttClaimDeviceJsonSqlTest.java | 2 +- .../server/mqtt/claim/sql/MqttClaimDeviceProtoSqlTest.java | 2 +- .../server/mqtt/claim/sql/MqttClaimDeviceSqlTest.java | 2 +- .../mqtt/provision/AbstractMqttProvisionJsonDeviceTest.java | 2 +- .../mqtt/provision/AbstractMqttProvisionProtoDeviceTest.java | 2 +- .../mqtt/provision/sql/MqttProvisionDeviceJsonSqlTest.java | 2 +- .../mqtt/provision/sql/MqttProvisionDeviceProtoSqlTest.java | 2 +- .../rpc/AbstractMqttServerSideRpcDefaultIntegrationTest.java | 2 +- .../mqtt/rpc/AbstractMqttServerSideRpcIntegrationTest.java | 2 +- .../mqtt/rpc/AbstractMqttServerSideRpcJsonIntegrationTest.java | 2 +- .../rpc/AbstractMqttServerSideRpcProtoIntegrationTest.java | 2 +- .../mqtt/rpc/nosql/MqttServerSideRpcNoSqlIntegrationTest.java | 2 +- .../mqtt/rpc/sql/MqttServerSideRpcJsonSqlIntegrationTest.java | 2 +- .../mqtt/rpc/sql/MqttServerSideRpcProtoSqlIntegrationTest.java | 2 +- .../mqtt/rpc/sql/MqttServerSideRpcSqlIntegrationTest.java | 2 +- .../attributes/AbstractMqttAttributesIntegrationTest.java | 2 +- .../attributes/AbstractMqttAttributesJsonIntegrationTest.java | 2 +- .../attributes/AbstractMqttAttributesProtoIntegrationTest.java | 2 +- .../attributes/nosql/MqttAttributesNoSqlIntegrationTest.java | 2 +- .../nosql/MqttAttributesNoSqlJsonIntegrationTest.java | 2 +- .../nosql/MqttAttributesNoSqlProtoIntegrationTest.java | 2 +- .../attributes/sql/MqttAttributesSqlIntegrationTest.java | 2 +- .../attributes/sql/MqttAttributesSqlJsonIntegrationTest.java | 2 +- .../attributes/sql/MqttAttributesSqlProtoIntegrationTest.java | 2 +- .../timeseries/AbstractMqttTimeseriesIntegrationTest.java | 2 +- .../timeseries/AbstractMqttTimeseriesJsonIntegrationTest.java | 2 +- .../timeseries/AbstractMqttTimeseriesProtoIntegrationTest.java | 2 +- .../timeseries/nosql/MqttTimeseriesNoSqlIntegrationTest.java | 2 +- .../nosql/MqttTimeseriesNoSqlJsonIntegrationTest.java | 2 +- .../nosql/MqttTimeseriesNoSqlProtoIntegrationTest.java | 2 +- .../timeseries/sql/MqttTimeseriesSqlIntegrationTest.java | 2 +- .../timeseries/sql/MqttTimeseriesSqlJsonIntegrationTest.java | 2 +- .../timeseries/sql/MqttTimeseriesSqlProtoIntegrationTest.java | 2 +- .../org/thingsboard/server/rules/RuleEngineSqlTestSuite.java | 2 +- .../rules/flow/AbstractRuleEngineFlowIntegrationTest.java | 2 +- .../rules/flow/sql/RuleEngineFlowSqlIntegrationTest.java | 2 +- .../lifecycle/AbstractRuleEngineLifecycleIntegrationTest.java | 2 +- .../lifecycle/sql/RuleEngineLifecycleSqlIntegrationTest.java | 2 +- .../service/cluster/routing/HashPartitionServiceTest.java | 2 +- .../org/thingsboard/server/service/mail/TestMailService.java | 2 +- .../server/service/queue/TbMsgPackProcessingContextTest.java | 2 +- .../org/thingsboard/server/system/BaseHttpDeviceApiTest.java | 2 +- .../java/org/thingsboard/server/system/SystemSqlTestSuite.java | 2 +- .../org/thingsboard/server/system/sql/DeviceApiSqlTest.java | 2 +- common/actor/pom.xml | 2 +- .../java/org/thingsboard/server/actors/AbstractTbActor.java | 2 +- .../org/thingsboard/server/actors/DefaultTbActorSystem.java | 2 +- .../main/java/org/thingsboard/server/actors/Dispatcher.java | 2 +- .../org/thingsboard/server/actors/InitFailureStrategy.java | 2 +- .../main/java/org/thingsboard/server/actors/JsInvokeStats.java | 2 +- .../org/thingsboard/server/actors/ProcessFailureStrategy.java | 2 +- .../src/main/java/org/thingsboard/server/actors/TbActor.java | 2 +- .../java/org/thingsboard/server/actors/TbActorCreator.java | 2 +- .../main/java/org/thingsboard/server/actors/TbActorCtx.java | 2 +- .../java/org/thingsboard/server/actors/TbActorException.java | 2 +- .../src/main/java/org/thingsboard/server/actors/TbActorId.java | 2 +- .../java/org/thingsboard/server/actors/TbActorMailbox.java | 2 +- .../server/actors/TbActorNotRegisteredException.java | 2 +- .../main/java/org/thingsboard/server/actors/TbActorRef.java | 2 +- .../main/java/org/thingsboard/server/actors/TbActorSystem.java | 2 +- .../org/thingsboard/server/actors/TbActorSystemSettings.java | 2 +- .../java/org/thingsboard/server/actors/TbEntityActorId.java | 2 +- .../java/org/thingsboard/server/actors/TbStringActorId.java | 2 +- .../java/org/thingsboard/server/actors/ActorSystemTest.java | 2 +- .../test/java/org/thingsboard/server/actors/ActorTestCtx.java | 2 +- .../java/org/thingsboard/server/actors/FailedToInitActor.java | 2 +- .../test/java/org/thingsboard/server/actors/IntTbActorMsg.java | 2 +- .../java/org/thingsboard/server/actors/SlowCreateActor.java | 2 +- .../test/java/org/thingsboard/server/actors/SlowInitActor.java | 2 +- .../test/java/org/thingsboard/server/actors/TestRootActor.java | 2 +- common/dao-api/pom.xml | 2 +- .../org/thingsboard/server/dao/alarm/AlarmOperationResult.java | 2 +- .../java/org/thingsboard/server/dao/alarm/AlarmService.java | 2 +- .../java/org/thingsboard/server/dao/asset/AssetService.java | 2 +- .../thingsboard/server/dao/attributes/AttributesService.java | 2 +- .../java/org/thingsboard/server/dao/audit/AuditLogService.java | 2 +- .../server/dao/cassandra/AbstractCassandraCluster.java | 2 +- .../org/thingsboard/server/dao/cassandra/CassandraCluster.java | 2 +- .../server/dao/cassandra/CassandraDriverOptions.java | 2 +- .../server/dao/cassandra/CassandraInstallCluster.java | 2 +- .../server/dao/cassandra/guava/DefaultGuavaSession.java | 2 +- .../server/dao/cassandra/guava/GuavaDriverContext.java | 2 +- .../server/dao/cassandra/guava/GuavaMultiPageResultSet.java | 2 +- .../server/dao/cassandra/guava/GuavaRequestAsyncProcessor.java | 2 +- .../thingsboard/server/dao/cassandra/guava/GuavaSession.java | 2 +- .../server/dao/cassandra/guava/GuavaSessionBuilder.java | 2 +- .../server/dao/cassandra/guava/GuavaSessionUtils.java | 2 +- .../server/dao/component/ComponentDescriptorService.java | 2 +- .../org/thingsboard/server/dao/customer/CustomerService.java | 2 +- .../org/thingsboard/server/dao/dashboard/DashboardService.java | 2 +- .../org/thingsboard/server/dao/device/ClaimDevicesService.java | 2 +- .../server/dao/device/DeviceCredentialsService.java | 2 +- .../thingsboard/server/dao/device/DeviceProfileService.java | 2 +- .../thingsboard/server/dao/device/DeviceProvisionService.java | 2 +- .../java/org/thingsboard/server/dao/device/DeviceService.java | 2 +- .../org/thingsboard/server/dao/device/claim/ClaimData.java | 2 +- .../org/thingsboard/server/dao/device/claim/ClaimResponse.java | 2 +- .../org/thingsboard/server/dao/device/claim/ClaimResult.java | 2 +- .../server/dao/device/provision/ProvisionFailedException.java | 2 +- .../server/dao/device/provision/ProvisionRequest.java | 2 +- .../server/dao/device/provision/ProvisionResponse.java | 2 +- .../server/dao/device/provision/ProvisionResponseStatus.java | 2 +- .../java/org/thingsboard/server/dao/entity/EntityService.java | 2 +- .../thingsboard/server/dao/entityview/EntityViewService.java | 2 +- .../java/org/thingsboard/server/dao/event/EventService.java | 2 +- .../thingsboard/server/dao/nosql/CassandraStatementTask.java | 2 +- .../java/org/thingsboard/server/dao/nosql/TbResultSet.java | 2 +- .../org/thingsboard/server/dao/nosql/TbResultSetFuture.java | 2 +- .../server/dao/oauth2/OAuth2ConfigTemplateService.java | 2 +- .../java/org/thingsboard/server/dao/oauth2/OAuth2Service.java | 2 +- .../java/org/thingsboard/server/dao/oauth2/OAuth2User.java | 2 +- .../org/thingsboard/server/dao/relation/RelationService.java | 2 +- .../java/org/thingsboard/server/dao/rule/RuleChainService.java | 2 +- .../org/thingsboard/server/dao/rule/RuleNodeStateService.java | 2 +- .../thingsboard/server/dao/settings/AdminSettingsService.java | 2 +- .../thingsboard/server/dao/tenant/TbTenantProfileCache.java | 2 +- .../thingsboard/server/dao/tenant/TenantProfileService.java | 2 +- .../java/org/thingsboard/server/dao/tenant/TenantService.java | 2 +- .../thingsboard/server/dao/timeseries/TimeseriesService.java | 2 +- .../server/dao/usagerecord/ApiUsageStateService.java | 2 +- .../main/java/org/thingsboard/server/dao/user/UserService.java | 2 +- .../main/java/org/thingsboard/server/dao/util/AsyncTask.java | 2 +- .../src/main/java/org/thingsboard/server/dao/util/HsqlDao.java | 2 +- .../main/java/org/thingsboard/server/dao/util/NoSqlAnyDao.java | 2 +- .../main/java/org/thingsboard/server/dao/util/NoSqlTsDao.java | 2 +- .../java/org/thingsboard/server/dao/util/NoSqlTsLatestDao.java | 2 +- .../src/main/java/org/thingsboard/server/dao/util/PsqlDao.java | 2 +- .../org/thingsboard/server/dao/util/PsqlTsLatestAnyDao.java | 2 +- .../main/java/org/thingsboard/server/dao/util/SqlTsDao.java | 2 +- .../org/thingsboard/server/dao/util/SqlTsLatestAnyDao.java | 2 +- .../java/org/thingsboard/server/dao/util/SqlTsLatestDao.java | 2 +- .../org/thingsboard/server/dao/util/SqlTsOrTsLatestAnyDao.java | 2 +- .../java/org/thingsboard/server/dao/util/TimescaleDBTsDao.java | 2 +- .../thingsboard/server/dao/util/TimescaleDBTsLatestDao.java | 2 +- .../server/dao/util/TimescaleDBTsOrTsLatestDao.java | 2 +- .../org/thingsboard/server/dao/widget/WidgetTypeService.java | 2 +- .../thingsboard/server/dao/widget/WidgetsBundleService.java | 2 +- common/data/pom.xml | 2 +- .../java/org/thingsboard/server/common/data/AdminSettings.java | 2 +- .../java/org/thingsboard/server/common/data/ApiFeature.java | 2 +- .../org/thingsboard/server/common/data/ApiUsageRecordKey.java | 2 +- .../java/org/thingsboard/server/common/data/ApiUsageState.java | 2 +- .../server/common/data/ApiUsageStateMailMessage.java | 2 +- .../org/thingsboard/server/common/data/ApiUsageStateValue.java | 2 +- .../main/java/org/thingsboard/server/common/data/BaseData.java | 2 +- .../org/thingsboard/server/common/data/CacheConstants.java | 2 +- .../java/org/thingsboard/server/common/data/ClaimRequest.java | 2 +- .../java/org/thingsboard/server/common/data/ContactBased.java | 2 +- .../main/java/org/thingsboard/server/common/data/Customer.java | 2 +- .../java/org/thingsboard/server/common/data/Dashboard.java | 2 +- .../java/org/thingsboard/server/common/data/DashboardInfo.java | 2 +- .../java/org/thingsboard/server/common/data/DataConstants.java | 2 +- .../main/java/org/thingsboard/server/common/data/Device.java | 2 +- .../java/org/thingsboard/server/common/data/DeviceInfo.java | 2 +- .../java/org/thingsboard/server/common/data/DeviceProfile.java | 2 +- .../org/thingsboard/server/common/data/DeviceProfileInfo.java | 2 +- .../server/common/data/DeviceProfileProvisionType.java | 2 +- .../org/thingsboard/server/common/data/DeviceProfileType.java | 2 +- .../thingsboard/server/common/data/DeviceTransportType.java | 2 +- .../org/thingsboard/server/common/data/EntityFieldsData.java | 2 +- .../java/org/thingsboard/server/common/data/EntityInfo.java | 2 +- .../java/org/thingsboard/server/common/data/EntitySubtype.java | 2 +- .../java/org/thingsboard/server/common/data/EntityType.java | 2 +- .../java/org/thingsboard/server/common/data/EntityView.java | 2 +- .../org/thingsboard/server/common/data/EntityViewInfo.java | 2 +- .../main/java/org/thingsboard/server/common/data/Event.java | 2 +- .../org/thingsboard/server/common/data/HasAdditionalInfo.java | 2 +- .../java/org/thingsboard/server/common/data/HasCustomerId.java | 2 +- .../main/java/org/thingsboard/server/common/data/HasName.java | 2 +- .../java/org/thingsboard/server/common/data/HasTenantId.java | 2 +- .../org/thingsboard/server/common/data/SearchTextBased.java | 2 +- .../server/common/data/SearchTextBasedWithAdditionalInfo.java | 2 +- .../org/thingsboard/server/common/data/ShortCustomerInfo.java | 2 +- .../main/java/org/thingsboard/server/common/data/Tenant.java | 2 +- .../java/org/thingsboard/server/common/data/TenantInfo.java | 2 +- .../java/org/thingsboard/server/common/data/TenantProfile.java | 2 +- .../org/thingsboard/server/common/data/TenantProfileType.java | 2 +- .../thingsboard/server/common/data/TransportPayloadType.java | 2 +- .../java/org/thingsboard/server/common/data/UUIDConverter.java | 2 +- .../java/org/thingsboard/server/common/data/UpdateMessage.java | 2 +- .../src/main/java/org/thingsboard/server/common/data/User.java | 2 +- .../java/org/thingsboard/server/common/data/alarm/Alarm.java | 2 +- .../org/thingsboard/server/common/data/alarm/AlarmInfo.java | 2 +- .../org/thingsboard/server/common/data/alarm/AlarmQuery.java | 2 +- .../server/common/data/alarm/AlarmSearchStatus.java | 2 +- .../thingsboard/server/common/data/alarm/AlarmSeverity.java | 2 +- .../org/thingsboard/server/common/data/alarm/AlarmStatus.java | 2 +- .../java/org/thingsboard/server/common/data/asset/Asset.java | 2 +- .../org/thingsboard/server/common/data/asset/AssetInfo.java | 2 +- .../thingsboard/server/common/data/asset/AssetSearchQuery.java | 2 +- .../org/thingsboard/server/common/data/audit/ActionStatus.java | 2 +- .../org/thingsboard/server/common/data/audit/ActionType.java | 2 +- .../org/thingsboard/server/common/data/audit/AuditLog.java | 2 +- .../server/common/data/device/DeviceSearchQuery.java | 2 +- .../common/data/device/credentials/BasicMqttCredentials.java | 2 +- .../device/credentials/ProvisionDeviceCredentialsData.java | 2 +- .../common/data/device/data/DefaultDeviceConfiguration.java | 2 +- .../data/device/data/DefaultDeviceTransportConfiguration.java | 2 +- .../server/common/data/device/data/DeviceConfiguration.java | 2 +- .../thingsboard/server/common/data/device/data/DeviceData.java | 2 +- .../common/data/device/data/DeviceTransportConfiguration.java | 2 +- .../data/device/data/Lwm2mDeviceTransportConfiguration.java | 2 +- .../data/device/data/MqttDeviceTransportConfiguration.java | 2 +- .../server/common/data/device/profile/AlarmCondition.java | 2 +- .../server/common/data/device/profile/AlarmConditionSpec.java | 2 +- .../common/data/device/profile/AlarmConditionSpecType.java | 2 +- .../server/common/data/device/profile/AlarmRule.java | 2 +- .../server/common/data/device/profile/AlarmSchedule.java | 2 +- .../server/common/data/device/profile/AlarmScheduleType.java | 2 +- ...lowCreateNewDevicesDeviceProfileProvisionConfiguration.java | 2 +- .../server/common/data/device/profile/AnyTimeSchedule.java | 2 +- ...eProvisionedDevicesDeviceProfileProvisionConfiguration.java | 2 +- .../server/common/data/device/profile/CustomTimeSchedule.java | 2 +- .../common/data/device/profile/CustomTimeScheduleItem.java | 2 +- .../data/device/profile/DefaultDeviceProfileConfiguration.java | 2 +- .../profile/DefaultDeviceProfileTransportConfiguration.java | 2 +- .../server/common/data/device/profile/DeviceProfileAlarm.java | 2 +- .../common/data/device/profile/DeviceProfileConfiguration.java | 2 +- .../server/common/data/device/profile/DeviceProfileData.java | 2 +- .../device/profile/DeviceProfileProvisionConfiguration.java | 2 +- .../device/profile/DeviceProfileTransportConfiguration.java | 2 +- .../profile/DisabledDeviceProfileProvisionConfiguration.java | 2 +- .../common/data/device/profile/DurationAlarmConditionSpec.java | 2 +- .../data/device/profile/JsonTransportPayloadConfiguration.java | 2 +- .../profile/Lwm2mDeviceProfileTransportConfiguration.java | 2 +- .../profile/MqttDeviceProfileTransportConfiguration.java | 2 +- .../server/common/data/device/profile/MqttTopics.java | 2 +- .../device/profile/ProtoTransportPayloadConfiguration.java | 2 +- .../data/device/profile/ProvisionDeviceProfileCredentials.java | 2 +- .../data/device/profile/RepeatingAlarmConditionSpec.java | 2 +- .../common/data/device/profile/SimpleAlarmConditionSpec.java | 2 +- .../common/data/device/profile/SpecificTimeSchedule.java | 2 +- .../data/device/profile/TransportPayloadTypeConfiguration.java | 2 +- .../server/common/data/entityview/EntityViewSearchQuery.java | 2 +- .../server/common/data/exception/ThingsboardErrorCode.java | 2 +- .../server/common/data/exception/ThingsboardException.java | 2 +- .../org/thingsboard/server/common/data/id/AdminSettingsId.java | 2 +- .../java/org/thingsboard/server/common/data/id/AlarmId.java | 2 +- .../org/thingsboard/server/common/data/id/ApiUsageStateId.java | 2 +- .../java/org/thingsboard/server/common/data/id/AssetId.java | 2 +- .../java/org/thingsboard/server/common/data/id/AuditLogId.java | 2 +- .../server/common/data/id/ComponentDescriptorId.java | 2 +- .../java/org/thingsboard/server/common/data/id/CustomerId.java | 2 +- .../org/thingsboard/server/common/data/id/DashboardId.java | 2 +- .../thingsboard/server/common/data/id/DeviceCredentialsId.java | 2 +- .../java/org/thingsboard/server/common/data/id/DeviceId.java | 2 +- .../org/thingsboard/server/common/data/id/DeviceProfileId.java | 2 +- .../java/org/thingsboard/server/common/data/id/EntityId.java | 2 +- .../server/common/data/id/EntityIdDeserializer.java | 2 +- .../org/thingsboard/server/common/data/id/EntityIdFactory.java | 2 +- .../thingsboard/server/common/data/id/EntityIdSerializer.java | 2 +- .../org/thingsboard/server/common/data/id/EntityViewId.java | 2 +- .../java/org/thingsboard/server/common/data/id/EventId.java | 2 +- .../main/java/org/thingsboard/server/common/data/id/HasId.java | 2 +- .../java/org/thingsboard/server/common/data/id/HasUUID.java | 3 +-- .../java/org/thingsboard/server/common/data/id/IdBased.java | 2 +- .../java/org/thingsboard/server/common/data/id/NodeId.java | 2 +- .../server/common/data/id/OAuth2ClientRegistrationId.java | 2 +- .../server/common/data/id/OAuth2ClientRegistrationInfoId.java | 2 +- .../common/data/id/OAuth2ClientRegistrationTemplateId.java | 2 +- .../org/thingsboard/server/common/data/id/RuleChainId.java | 2 +- .../java/org/thingsboard/server/common/data/id/RuleNodeId.java | 2 +- .../org/thingsboard/server/common/data/id/RuleNodeStateId.java | 2 +- .../java/org/thingsboard/server/common/data/id/TenantId.java | 2 +- .../org/thingsboard/server/common/data/id/TenantProfileId.java | 2 +- .../java/org/thingsboard/server/common/data/id/UUIDBased.java | 2 +- .../thingsboard/server/common/data/id/UserCredentialsId.java | 2 +- .../java/org/thingsboard/server/common/data/id/UserId.java | 2 +- .../org/thingsboard/server/common/data/id/WidgetTypeId.java | 2 +- .../org/thingsboard/server/common/data/id/WidgetsBundleId.java | 2 +- .../org/thingsboard/server/common/data/kv/Aggregation.java | 2 +- .../org/thingsboard/server/common/data/kv/AttributeKey.java | 2 +- .../thingsboard/server/common/data/kv/AttributeKvEntry.java | 2 +- .../server/common/data/kv/BaseAttributeKvEntry.java | 2 +- .../thingsboard/server/common/data/kv/BaseDeleteTsKvQuery.java | 2 +- .../thingsboard/server/common/data/kv/BaseReadTsKvQuery.java | 2 +- .../org/thingsboard/server/common/data/kv/BaseTsKvQuery.java | 2 +- .../org/thingsboard/server/common/data/kv/BasicKvEntry.java | 2 +- .../org/thingsboard/server/common/data/kv/BasicTsKvEntry.java | 2 +- .../thingsboard/server/common/data/kv/BooleanDataEntry.java | 2 +- .../java/org/thingsboard/server/common/data/kv/DataType.java | 2 +- .../org/thingsboard/server/common/data/kv/DeleteTsKvQuery.java | 2 +- .../org/thingsboard/server/common/data/kv/DoubleDataEntry.java | 2 +- .../org/thingsboard/server/common/data/kv/JsonDataEntry.java | 2 +- .../java/org/thingsboard/server/common/data/kv/KvEntry.java | 2 +- .../org/thingsboard/server/common/data/kv/LongDataEntry.java | 2 +- .../org/thingsboard/server/common/data/kv/ReadTsKvQuery.java | 2 +- .../org/thingsboard/server/common/data/kv/StringDataEntry.java | 2 +- .../java/org/thingsboard/server/common/data/kv/TsKvEntry.java | 2 +- .../java/org/thingsboard/server/common/data/kv/TsKvQuery.java | 2 +- .../server/common/data/oauth2/ClientRegistrationDto.java | 2 +- .../org/thingsboard/server/common/data/oauth2/DomainInfo.java | 2 +- .../data/oauth2/ExtendedOAuth2ClientRegistrationInfo.java | 2 +- .../org/thingsboard/server/common/data/oauth2/MapperType.java | 2 +- .../server/common/data/oauth2/OAuth2BasicMapperConfig.java | 2 +- .../server/common/data/oauth2/OAuth2ClientInfo.java | 2 +- .../server/common/data/oauth2/OAuth2ClientRegistration.java | 2 +- .../common/data/oauth2/OAuth2ClientRegistrationInfo.java | 2 +- .../common/data/oauth2/OAuth2ClientRegistrationTemplate.java | 2 +- .../server/common/data/oauth2/OAuth2ClientsDomainParams.java | 2 +- .../server/common/data/oauth2/OAuth2ClientsParams.java | 2 +- .../server/common/data/oauth2/OAuth2CustomMapperConfig.java | 2 +- .../server/common/data/oauth2/OAuth2MapperConfig.java | 2 +- .../org/thingsboard/server/common/data/oauth2/SchemeType.java | 2 +- .../server/common/data/oauth2/TenantNameStrategyType.java | 2 +- .../server/common/data/objects/AttributesEntityView.java | 2 +- .../server/common/data/objects/TelemetryEntityView.java | 2 +- .../java/org/thingsboard/server/common/data/page/PageData.java | 2 +- .../thingsboard/server/common/data/page/PageDataIterable.java | 2 +- .../java/org/thingsboard/server/common/data/page/PageLink.java | 2 +- .../org/thingsboard/server/common/data/page/SortOrder.java | 2 +- .../org/thingsboard/server/common/data/page/TimePageLink.java | 2 +- .../server/common/data/plugin/ComponentDescriptor.java | 2 +- .../server/common/data/plugin/ComponentLifecycleEvent.java | 2 +- .../server/common/data/plugin/ComponentLifecycleState.java | 2 +- .../thingsboard/server/common/data/plugin/ComponentScope.java | 2 +- .../thingsboard/server/common/data/plugin/ComponentType.java | 2 +- .../server/common/data/query/AbstractDataQuery.java | 2 +- .../org/thingsboard/server/common/data/query/AlarmData.java | 2 +- .../server/common/data/query/AlarmDataPageLink.java | 2 +- .../thingsboard/server/common/data/query/AlarmDataQuery.java | 2 +- .../server/common/data/query/ApiUsageStateFilter.java | 2 +- .../server/common/data/query/AssetSearchQueryFilter.java | 2 +- .../thingsboard/server/common/data/query/AssetTypeFilter.java | 2 +- .../server/common/data/query/BooleanFilterPredicate.java | 2 +- .../server/common/data/query/ComplexFilterPredicate.java | 2 +- .../server/common/data/query/DeviceSearchQueryFilter.java | 2 +- .../thingsboard/server/common/data/query/DeviceTypeFilter.java | 2 +- .../org/thingsboard/server/common/data/query/DynamicValue.java | 2 +- .../server/common/data/query/DynamicValueSourceType.java | 2 +- .../thingsboard/server/common/data/query/EntityCountQuery.java | 2 +- .../org/thingsboard/server/common/data/query/EntityData.java | 2 +- .../server/common/data/query/EntityDataPageLink.java | 2 +- .../thingsboard/server/common/data/query/EntityDataQuery.java | 2 +- .../server/common/data/query/EntityDataSortOrder.java | 2 +- .../org/thingsboard/server/common/data/query/EntityFilter.java | 2 +- .../thingsboard/server/common/data/query/EntityFilterType.java | 2 +- .../org/thingsboard/server/common/data/query/EntityKey.java | 2 +- .../thingsboard/server/common/data/query/EntityKeyType.java | 2 +- .../server/common/data/query/EntityKeyValueType.java | 2 +- .../thingsboard/server/common/data/query/EntityListFilter.java | 2 +- .../thingsboard/server/common/data/query/EntityNameFilter.java | 2 +- .../server/common/data/query/EntitySearchQueryFilter.java | 2 +- .../server/common/data/query/EntityViewSearchQueryFilter.java | 2 +- .../server/common/data/query/EntityViewTypeFilter.java | 2 +- .../server/common/data/query/FilterPredicateType.java | 2 +- .../server/common/data/query/FilterPredicateValue.java | 2 +- .../org/thingsboard/server/common/data/query/KeyFilter.java | 2 +- .../server/common/data/query/KeyFilterPredicate.java | 2 +- .../server/common/data/query/NumericFilterPredicate.java | 2 +- .../server/common/data/query/RelationsQueryFilter.java | 2 +- .../server/common/data/query/SimpleKeyFilterPredicate.java | 2 +- .../server/common/data/query/SingleEntityFilter.java | 2 +- .../server/common/data/query/StringFilterPredicate.java | 2 +- .../java/org/thingsboard/server/common/data/query/TsValue.java | 2 +- .../server/common/data/relation/EntityRelation.java | 2 +- .../server/common/data/relation/EntityRelationInfo.java | 2 +- .../server/common/data/relation/EntityRelationsQuery.java | 2 +- .../server/common/data/relation/EntitySearchDirection.java | 2 +- .../server/common/data/relation/EntityTypeFilter.java | 2 +- .../server/common/data/relation/RelationTypeGroup.java | 2 +- .../server/common/data/relation/RelationsSearchParameters.java | 2 +- .../org/thingsboard/server/common/data/rpc/RpcRequest.java | 2 +- .../server/common/data/rpc/ToDeviceRpcRequestBody.java | 2 +- .../server/common/data/rule/DefaultRuleChainCreateRequest.java | 2 +- .../server/common/data/rule/NodeConnectionInfo.java | 2 +- .../org/thingsboard/server/common/data/rule/RuleChain.java | 2 +- .../server/common/data/rule/RuleChainConnectionInfo.java | 2 +- .../org/thingsboard/server/common/data/rule/RuleChainData.java | 2 +- .../server/common/data/rule/RuleChainImportResult.java | 2 +- .../thingsboard/server/common/data/rule/RuleChainMetaData.java | 2 +- .../java/org/thingsboard/server/common/data/rule/RuleNode.java | 2 +- .../org/thingsboard/server/common/data/rule/RuleNodeState.java | 2 +- .../java/org/thingsboard/server/common/data/rule/RuleType.java | 2 +- .../java/org/thingsboard/server/common/data/rule/Scope.java | 2 +- .../org/thingsboard/server/common/data/security/Authority.java | 2 +- .../server/common/data/security/DeviceCredentials.java | 2 +- .../server/common/data/security/DeviceCredentialsFilter.java | 2 +- .../server/common/data/security/DeviceCredentialsType.java | 2 +- .../server/common/data/security/DeviceTokenCredentials.java | 2 +- .../server/common/data/security/DeviceX509Credentials.java | 2 +- .../server/common/data/security/UserCredentials.java | 2 +- .../server/common/data/security/model/SecuritySettings.java | 2 +- .../server/common/data/security/model/UserPasswordPolicy.java | 2 +- .../common/data/sms/config/AwsSnsSmsProviderConfiguration.java | 2 +- .../common/data/sms/config/SmsProviderConfiguration.java | 2 +- .../server/common/data/sms/config/SmsProviderType.java | 2 +- .../server/common/data/sms/config/TestSmsRequest.java | 2 +- .../common/data/sms/config/TwilioSmsProviderConfiguration.java | 2 +- .../data/tenant/profile/DefaultTenantProfileConfiguration.java | 2 +- .../common/data/tenant/profile/TenantProfileConfiguration.java | 2 +- .../server/common/data/tenant/profile/TenantProfileData.java | 2 +- .../org/thingsboard/server/common/data/widget/WidgetType.java | 2 +- .../thingsboard/server/common/data/widget/WidgetsBundle.java | 2 +- .../org/thingsboard/server/common/data/UUIDConverterTest.java | 2 +- common/message/pom.xml | 2 +- .../java/org/thingsboard/server/common/msg/EncryptionUtil.java | 2 +- .../main/java/org/thingsboard/server/common/msg/MsgType.java | 2 +- .../java/org/thingsboard/server/common/msg/TbActorMsg.java | 2 +- .../src/main/java/org/thingsboard/server/common/msg/TbMsg.java | 2 +- .../java/org/thingsboard/server/common/msg/TbMsgDataType.java | 2 +- .../java/org/thingsboard/server/common/msg/TbMsgMetaData.java | 2 +- .../thingsboard/server/common/msg/aware/CustomerAwareMsg.java | 2 +- .../thingsboard/server/common/msg/aware/DeviceAwareMsg.java | 2 +- .../org/thingsboard/server/common/msg/aware/NodeAwareMsg.java | 2 +- .../thingsboard/server/common/msg/aware/RuleChainAwareMsg.java | 2 +- .../thingsboard/server/common/msg/aware/TenantAwareMsg.java | 2 +- .../thingsboard/server/common/msg/cluster/ToAllNodesMsg.java | 2 +- .../server/common/msg/plugin/ComponentLifecycleMsg.java | 2 +- .../server/common/msg/queue/PartitionChangeMsg.java | 2 +- .../server/common/msg/queue/QueueToRuleEngineMsg.java | 2 +- .../server/common/msg/queue/RuleEngineException.java | 2 +- .../thingsboard/server/common/msg/queue/RuleNodeException.java | 2 +- .../org/thingsboard/server/common/msg/queue/RuleNodeInfo.java | 2 +- .../org/thingsboard/server/common/msg/queue/ServiceQueue.java | 2 +- .../thingsboard/server/common/msg/queue/ServiceQueueKey.java | 2 +- .../org/thingsboard/server/common/msg/queue/ServiceType.java | 2 +- .../org/thingsboard/server/common/msg/queue/TbCallback.java | 2 +- .../org/thingsboard/server/common/msg/queue/TbMsgCallback.java | 2 +- .../server/common/msg/queue/TopicPartitionInfo.java | 2 +- .../thingsboard/server/common/msg/rpc/ToDeviceRpcRequest.java | 2 +- .../org/thingsboard/server/common/msg/session/FeatureType.java | 2 +- .../thingsboard/server/common/msg/session/SessionMsgType.java | 2 +- .../common/msg/session/ex/ProcessingTimeoutException.java | 2 +- .../server/common/msg/session/ex/SessionAuthException.java | 2 +- .../server/common/msg/session/ex/SessionException.java | 2 +- .../common/msg/timeout/DeviceActorServerSideRpcTimeoutMsg.java | 2 +- .../org/thingsboard/server/common/msg/timeout/TimeoutMsg.java | 2 +- .../thingsboard/server/common/msg/tools/SchedulerUtils.java | 2 +- .../org/thingsboard/server/common/msg/tools/TbRateLimits.java | 2 +- .../server/common/msg/tools/TbRateLimitsException.java | 2 +- common/message/src/main/proto/tbmsg.proto | 2 +- common/pom.xml | 2 +- common/queue/pom.xml | 2 +- .../main/java/org/thingsboard/server/queue/TbQueueAdmin.java | 2 +- .../java/org/thingsboard/server/queue/TbQueueCallback.java | 2 +- .../java/org/thingsboard/server/queue/TbQueueConsumer.java | 2 +- .../main/java/org/thingsboard/server/queue/TbQueueHandler.java | 2 +- .../src/main/java/org/thingsboard/server/queue/TbQueueMsg.java | 2 +- .../java/org/thingsboard/server/queue/TbQueueMsgDecoder.java | 2 +- .../java/org/thingsboard/server/queue/TbQueueMsgHeaders.java | 2 +- .../java/org/thingsboard/server/queue/TbQueueMsgMetadata.java | 2 +- .../java/org/thingsboard/server/queue/TbQueueProducer.java | 2 +- .../org/thingsboard/server/queue/TbQueueRequestTemplate.java | 2 +- .../org/thingsboard/server/queue/TbQueueResponseTemplate.java | 2 +- .../server/queue/azure/servicebus/TbServiceBusAdmin.java | 2 +- .../queue/azure/servicebus/TbServiceBusConsumerTemplate.java | 2 +- .../queue/azure/servicebus/TbServiceBusProducerTemplate.java | 2 +- .../queue/azure/servicebus/TbServiceBusQueueConfigs.java | 2 +- .../server/queue/azure/servicebus/TbServiceBusSettings.java | 2 +- .../queue/common/AbstractParallelTbQueueConsumerTemplate.java | 2 +- .../server/queue/common/AbstractTbQueueConsumerTemplate.java | 2 +- .../server/queue/common/AbstractTbQueueTemplate.java | 2 +- .../thingsboard/server/queue/common/AsyncCallbackTemplate.java | 2 +- .../org/thingsboard/server/queue/common/DefaultTbQueueMsg.java | 2 +- .../server/queue/common/DefaultTbQueueMsgHeaders.java | 2 +- .../server/queue/common/DefaultTbQueueRequestTemplate.java | 2 +- .../server/queue/common/DefaultTbQueueResponseTemplate.java | 2 +- .../server/queue/common/MultipleTbQueueCallbackWrapper.java | 2 +- .../queue/common/MultipleTbQueueTbMsgCallbackWrapper.java | 2 +- .../org/thingsboard/server/queue/common/TbProtoJsQueueMsg.java | 2 +- .../org/thingsboard/server/queue/common/TbProtoQueueMsg.java | 2 +- .../server/queue/common/TbQueueTbMsgCallbackWrapper.java | 2 +- .../server/queue/discovery/ClusterTopologyChangeEvent.java | 2 +- .../server/queue/discovery/ConsistentHashCircle.java | 2 +- .../server/queue/discovery/DefaultTbServiceInfoProvider.java | 2 +- .../thingsboard/server/queue/discovery/DiscoveryService.java | 2 +- .../server/queue/discovery/DummyDiscoveryService.java | 2 +- .../server/queue/discovery/HashPartitionService.java | 2 +- .../server/queue/discovery/PartitionChangeEvent.java | 2 +- .../thingsboard/server/queue/discovery/PartitionService.java | 2 +- .../server/queue/discovery/TbServiceInfoProvider.java | 2 +- .../thingsboard/server/queue/discovery/TenantRoutingInfo.java | 2 +- .../server/queue/discovery/TenantRoutingInfoService.java | 2 +- .../server/queue/discovery/TopicPartitionInfoKey.java | 2 +- .../thingsboard/server/queue/discovery/ZkDiscoveryService.java | 2 +- .../server/queue/environment/EnvironmentLogService.java | 2 +- .../org/thingsboard/server/queue/kafka/KafkaTbQueueMsg.java | 2 +- .../server/queue/kafka/KafkaTbQueueMsgMetadata.java | 2 +- .../java/org/thingsboard/server/queue/kafka/TbKafkaAdmin.java | 2 +- .../server/queue/kafka/TbKafkaConsumerTemplate.java | 2 +- .../org/thingsboard/server/queue/kafka/TbKafkaDecoder.java | 2 +- .../org/thingsboard/server/queue/kafka/TbKafkaEncoder.java | 2 +- .../server/queue/kafka/TbKafkaProducerTemplate.java | 2 +- .../org/thingsboard/server/queue/kafka/TbKafkaProperty.java | 2 +- .../org/thingsboard/server/queue/kafka/TbKafkaSettings.java | 2 +- .../thingsboard/server/queue/kafka/TbKafkaTopicConfigs.java | 2 +- .../org/thingsboard/server/queue/memory/InMemoryStorage.java | 2 +- .../server/queue/memory/InMemoryTbQueueConsumer.java | 2 +- .../server/queue/memory/InMemoryTbQueueProducer.java | 2 +- .../server/queue/provider/AwsSqsMonolithQueueFactory.java | 2 +- .../server/queue/provider/AwsSqsTbCoreQueueFactory.java | 2 +- .../server/queue/provider/AwsSqsTbRuleEngineQueueFactory.java | 2 +- .../server/queue/provider/AwsSqsTransportQueueFactory.java | 2 +- .../server/queue/provider/InMemoryMonolithQueueFactory.java | 2 +- .../server/queue/provider/InMemoryTbTransportQueueFactory.java | 2 +- .../server/queue/provider/KafkaMonolithQueueFactory.java | 2 +- .../server/queue/provider/KafkaTbCoreQueueFactory.java | 2 +- .../server/queue/provider/KafkaTbRuleEngineQueueFactory.java | 2 +- .../server/queue/provider/KafkaTbTransportQueueFactory.java | 2 +- .../server/queue/provider/PubSubMonolithQueueFactory.java | 2 +- .../server/queue/provider/PubSubTbCoreQueueFactory.java | 2 +- .../server/queue/provider/PubSubTbRuleEngineQueueFactory.java | 2 +- .../server/queue/provider/PubSubTransportQueueFactory.java | 2 +- .../server/queue/provider/RabbitMqMonolithQueueFactory.java | 2 +- .../server/queue/provider/RabbitMqTbCoreQueueFactory.java | 2 +- .../queue/provider/RabbitMqTbRuleEngineQueueFactory.java | 2 +- .../server/queue/provider/RabbitMqTransportQueueFactory.java | 2 +- .../server/queue/provider/ServiceBusMonolithQueueFactory.java | 2 +- .../server/queue/provider/ServiceBusTbCoreQueueFactory.java | 2 +- .../queue/provider/ServiceBusTbRuleEngineQueueFactory.java | 2 +- .../server/queue/provider/ServiceBusTransportQueueFactory.java | 2 +- .../thingsboard/server/queue/provider/TbCoreQueueFactory.java | 2 +- .../server/queue/provider/TbCoreQueueProducerProvider.java | 2 +- .../server/queue/provider/TbQueueProducerProvider.java | 2 +- .../server/queue/provider/TbRuleEngineProducerProvider.java | 2 +- .../server/queue/provider/TbRuleEngineQueueFactory.java | 2 +- .../server/queue/provider/TbTransportQueueFactory.java | 2 +- .../queue/provider/TbTransportQueueProducerProvider.java | 2 +- .../server/queue/provider/TbUsageStatsClientQueueFactory.java | 2 +- .../org/thingsboard/server/queue/pubsub/TbPubSubAdmin.java | 2 +- .../server/queue/pubsub/TbPubSubConsumerTemplate.java | 2 +- .../server/queue/pubsub/TbPubSubProducerTemplate.java | 2 +- .../org/thingsboard/server/queue/pubsub/TbPubSubSettings.java | 2 +- .../server/queue/pubsub/TbPubSubSubscriptionSettings.java | 2 +- .../org/thingsboard/server/queue/rabbitmq/TbRabbitMqAdmin.java | 2 +- .../server/queue/rabbitmq/TbRabbitMqConsumerTemplate.java | 2 +- .../server/queue/rabbitmq/TbRabbitMqProducerTemplate.java | 2 +- .../server/queue/rabbitmq/TbRabbitMqQueueArguments.java | 2 +- .../thingsboard/server/queue/rabbitmq/TbRabbitMqSettings.java | 2 +- .../server/queue/scheduler/DefaultSchedulerComponent.java | 2 +- .../thingsboard/server/queue/scheduler/SchedulerComponent.java | 2 +- .../thingsboard/server/queue/settings/TbQueueCoreSettings.java | 2 +- .../server/queue/settings/TbQueueRemoteJsInvokeSettings.java | 2 +- .../server/queue/settings/TbQueueRuleEngineSettings.java | 2 +- .../server/queue/settings/TbQueueTransportApiSettings.java | 2 +- .../queue/settings/TbQueueTransportNotificationSettings.java | 2 +- .../settings/TbRuleEngineQueueAckStrategyConfiguration.java | 2 +- .../server/queue/settings/TbRuleEngineQueueConfiguration.java | 2 +- .../settings/TbRuleEngineQueueSubmitStrategyConfiguration.java | 2 +- .../thingsboard/server/queue/sqs/AwsSqsTbQueueMsgMetadata.java | 2 +- .../java/org/thingsboard/server/queue/sqs/TbAwsSqsAdmin.java | 2 +- .../thingsboard/server/queue/sqs/TbAwsSqsConsumerTemplate.java | 2 +- .../thingsboard/server/queue/sqs/TbAwsSqsProducerTemplate.java | 2 +- .../thingsboard/server/queue/sqs/TbAwsSqsQueueAttributes.java | 2 +- .../org/thingsboard/server/queue/sqs/TbAwsSqsSettings.java | 2 +- .../server/queue/usagestats/DefaultTbApiUsageClient.java | 2 +- .../thingsboard/server/queue/usagestats/TbApiUsageClient.java | 2 +- .../org/thingsboard/server/queue/util/TbCoreComponent.java | 2 +- .../thingsboard/server/queue/util/TbRuleEngineComponent.java | 2 +- .../thingsboard/server/queue/util/TbTransportComponent.java | 2 +- common/queue/src/main/proto/jsinvoke.proto | 2 +- common/queue/src/main/proto/queue.proto | 2 +- common/stats/pom.xml | 2 +- .../org/thingsboard/server/common/stats/DefaultCounter.java | 2 +- .../thingsboard/server/common/stats/DefaultMessagesStats.java | 2 +- .../thingsboard/server/common/stats/DefaultStatsFactory.java | 2 +- .../org/thingsboard/server/common/stats/MessagesStats.java | 2 +- .../java/org/thingsboard/server/common/stats/StatsCounter.java | 2 +- .../java/org/thingsboard/server/common/stats/StatsFactory.java | 2 +- .../java/org/thingsboard/server/common/stats/StatsType.java | 2 +- common/transport/coap/pom.xml | 2 +- .../server/transport/coap/CoapTransportContext.java | 2 +- .../server/transport/coap/CoapTransportResource.java | 2 +- .../server/transport/coap/CoapTransportService.java | 2 +- .../server/transport/coap/adaptors/CoapTransportAdaptor.java | 2 +- .../server/transport/coap/adaptors/JsonCoapAdaptor.java | 2 +- .../server/transport/coap/client/DeviceEmulator.java | 2 +- common/transport/http/pom.xml | 2 +- .../thingsboard/server/transport/http/DeviceApiController.java | 2 +- .../server/transport/http/HttpTransportContext.java | 2 +- common/transport/mqtt/pom.xml | 2 +- .../server/transport/mqtt/MqttSslHandlerProvider.java | 2 +- .../server/transport/mqtt/MqttTransportContext.java | 2 +- .../server/transport/mqtt/MqttTransportHandler.java | 2 +- .../server/transport/mqtt/MqttTransportServerInitializer.java | 2 +- .../server/transport/mqtt/MqttTransportService.java | 2 +- .../server/transport/mqtt/adaptors/JsonMqttAdaptor.java | 2 +- .../server/transport/mqtt/adaptors/MqttTransportAdaptor.java | 2 +- .../server/transport/mqtt/adaptors/ProtoMqttAdaptor.java | 2 +- .../server/transport/mqtt/session/DeviceSessionCtx.java | 2 +- .../server/transport/mqtt/session/GatewayDeviceSessionCtx.java | 2 +- .../server/transport/mqtt/session/GatewaySessionHandler.java | 2 +- .../transport/mqtt/session/MqttDeviceAwareSessionContext.java | 2 +- .../server/transport/mqtt/session/MqttTopicMatcher.java | 2 +- .../server/transport/mqtt/util/AlwaysTrueTopicFilter.java | 2 +- .../server/transport/mqtt/util/EqualsTopicFilter.java | 2 +- .../server/transport/mqtt/util/MqttTopicFilter.java | 2 +- .../server/transport/mqtt/util/MqttTopicFilterFactory.java | 2 +- .../server/transport/mqtt/util/RegexTopicFilter.java | 2 +- .../org/thingsboard/server/transport/mqtt/util/SslUtil.java | 2 +- .../server/transport/mqtt/util/MqttTopicFilterFactoryTest.java | 2 +- common/transport/pom.xml | 2 +- common/transport/transport-api/pom.xml | 2 +- .../server/common/transport/SessionMsgListener.java | 2 +- .../thingsboard/server/common/transport/TransportAdaptor.java | 2 +- .../thingsboard/server/common/transport/TransportContext.java | 2 +- .../server/common/transport/TransportDeviceProfileCache.java | 2 +- .../thingsboard/server/common/transport/TransportService.java | 2 +- .../server/common/transport/TransportServiceCallback.java | 2 +- .../server/common/transport/TransportTenantProfileCache.java | 2 +- .../server/common/transport/adaptor/AdaptorException.java | 2 +- .../server/common/transport/adaptor/JsonConverter.java | 2 +- .../server/common/transport/adaptor/JsonConverterConfig.java | 2 +- .../server/common/transport/adaptor/ProtoConverter.java | 2 +- .../server/common/transport/auth/DeviceAuthResult.java | 2 +- .../server/common/transport/auth/DeviceAuthService.java | 2 +- .../server/common/transport/auth/DeviceProfileAware.java | 2 +- .../transport/auth/GetOrCreateDeviceFromGatewayResponse.java | 2 +- .../server/common/transport/auth/SessionInfoCreator.java | 2 +- .../server/common/transport/auth/TransportDeviceInfo.java | 2 +- .../transport/auth/ValidateDeviceCredentialsResponse.java | 2 +- .../transport/limits/DefaultTransportRateLimitService.java | 2 +- .../common/transport/limits/DummyTransportRateLimit.java | 2 +- .../common/transport/limits/EntityTransportRateLimits.java | 2 +- .../common/transport/limits/SimpleTransportRateLimit.java | 2 +- .../server/common/transport/limits/TransportRateLimit.java | 2 +- .../common/transport/limits/TransportRateLimitService.java | 2 +- .../common/transport/profile/TenantProfileUpdateResult.java | 2 +- .../transport/service/DefaultTransportDeviceProfileCache.java | 2 +- .../common/transport/service/DefaultTransportService.java | 2 +- .../transport/service/DefaultTransportTenantProfileCache.java | 2 +- .../server/common/transport/service/RpcRequestMetadata.java | 2 +- .../server/common/transport/service/SessionMetaData.java | 2 +- .../common/transport/service/ToRuleEngineMsgEncoder.java | 2 +- .../transport/service/ToTransportMsgResponseDecoder.java | 2 +- .../common/transport/service/TransportApiRequestEncoder.java | 2 +- .../common/transport/service/TransportApiResponseDecoder.java | 2 +- .../transport/service/TransportTenantRoutingInfoService.java | 2 +- .../common/transport/session/DeviceAwareSessionContext.java | 2 +- .../server/common/transport/session/SessionContext.java | 2 +- .../common/transport/util/DataDecodingEncodingService.java | 2 +- .../thingsboard/server/common/transport/util/JsonUtils.java | 2 +- .../server/common/transport/util/ProtoWithFSTService.java | 2 +- common/transport/transport-api/src/main/proto/transport.proto | 2 +- common/util/pom.xml | 2 +- .../org/thingsboard/common/util/AbstractListeningExecutor.java | 2 +- .../main/java/org/thingsboard/common/util/AzureIotHubUtil.java | 2 +- .../main/java/org/thingsboard/common/util/DonAsynchron.java | 2 +- .../java/org/thingsboard/common/util/ListeningExecutor.java | 2 +- .../org/thingsboard/common/util/ThingsBoardThreadFactory.java | 2 +- dao/pom.xml | 2 +- dao/src/main/java/org/thingsboard/server/dao/Dao.java | 2 +- dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java | 2 +- .../main/java/org/thingsboard/server/dao/HsqlTsDaoConfig.java | 2 +- .../java/org/thingsboard/server/dao/HsqlTsLatestDaoConfig.java | 2 +- dao/src/main/java/org/thingsboard/server/dao/JpaDaoConfig.java | 2 +- .../main/java/org/thingsboard/server/dao/PsqlTsDaoConfig.java | 2 +- .../java/org/thingsboard/server/dao/PsqlTsLatestDaoConfig.java | 2 +- .../org/thingsboard/server/dao/SqlTimeseriesDaoConfig.java | 2 +- .../main/java/org/thingsboard/server/dao/TenantEntityDao.java | 2 +- .../java/org/thingsboard/server/dao/TimescaleDaoConfig.java | 2 +- .../org/thingsboard/server/dao/TimescaleTsLatestDaoConfig.java | 2 +- .../main/java/org/thingsboard/server/dao/alarm/AlarmDao.java | 2 +- .../org/thingsboard/server/dao/alarm/BaseAlarmService.java | 2 +- .../main/java/org/thingsboard/server/dao/asset/AssetDao.java | 2 +- .../java/org/thingsboard/server/dao/asset/AssetTypeFilter.java | 2 +- .../org/thingsboard/server/dao/asset/BaseAssetService.java | 2 +- .../org/thingsboard/server/dao/attributes/AttributesDao.java | 2 +- .../server/dao/attributes/BaseAttributesService.java | 2 +- .../java/org/thingsboard/server/dao/audit/AuditLogDao.java | 2 +- .../org/thingsboard/server/dao/audit/AuditLogLevelFilter.java | 2 +- .../org/thingsboard/server/dao/audit/AuditLogLevelMask.java | 2 +- .../org/thingsboard/server/dao/audit/AuditLogServiceImpl.java | 2 +- .../thingsboard/server/dao/audit/DummyAuditLogServiceImpl.java | 2 +- .../org/thingsboard/server/dao/audit/sink/AuditLogSink.java | 2 +- .../thingsboard/server/dao/audit/sink/DummyAuditLogSink.java | 2 +- .../server/dao/audit/sink/ElasticsearchAuditLogSink.java | 2 +- .../main/java/org/thingsboard/server/dao/cache/CacheSpecs.java | 2 +- .../server/dao/cache/CaffeineCacheConfiguration.java | 2 +- .../dao/cache/PreviousDeviceCredentialsIdKeyGenerator.java | 2 +- .../server/dao/cache/TBRedisCacheConfiguration.java | 2 +- .../server/dao/cache/TBRedisClusterConfiguration.java | 2 +- .../server/dao/cache/TBRedisStandaloneConfiguration.java | 2 +- .../server/dao/component/BaseComponentDescriptorService.java | 2 +- .../server/dao/component/ComponentDescriptorDao.java | 2 +- .../java/org/thingsboard/server/dao/customer/CustomerDao.java | 2 +- .../thingsboard/server/dao/customer/CustomerServiceImpl.java | 2 +- .../org/thingsboard/server/dao/dashboard/DashboardDao.java | 2 +- .../org/thingsboard/server/dao/dashboard/DashboardInfoDao.java | 2 +- .../thingsboard/server/dao/dashboard/DashboardServiceImpl.java | 2 +- .../java/org/thingsboard/server/dao/device/ClaimDataInfo.java | 2 +- .../thingsboard/server/dao/device/ClaimDevicesServiceImpl.java | 2 +- .../thingsboard/server/dao/device/DeviceCredentialsDao.java | 2 +- .../server/dao/device/DeviceCredentialsServiceImpl.java | 2 +- .../main/java/org/thingsboard/server/dao/device/DeviceDao.java | 2 +- .../org/thingsboard/server/dao/device/DeviceProfileDao.java | 2 +- .../server/dao/device/DeviceProfileServiceImpl.java | 2 +- .../org/thingsboard/server/dao/device/DeviceServiceImpl.java | 2 +- .../thingsboard/server/dao/entity/AbstractEntityService.java | 2 +- .../org/thingsboard/server/dao/entity/BaseEntityService.java | 2 +- .../java/org/thingsboard/server/dao/entity/EntityQueryDao.java | 2 +- .../org/thingsboard/server/dao/entityview/EntityViewDao.java | 2 +- .../server/dao/entityview/EntityViewServiceImpl.java | 2 +- .../org/thingsboard/server/dao/event/BaseEventService.java | 2 +- .../main/java/org/thingsboard/server/dao/event/EventDao.java | 2 +- .../thingsboard/server/dao/exception/BufferLimitException.java | 2 +- .../server/dao/exception/DataValidationException.java | 2 +- .../thingsboard/server/dao/exception/DatabaseException.java | 2 +- .../server/dao/exception/IncorrectParameterException.java | 2 +- .../main/java/org/thingsboard/server/dao/model/BaseEntity.java | 2 +- .../java/org/thingsboard/server/dao/model/BaseSqlEntity.java | 2 +- .../java/org/thingsboard/server/dao/model/ModelConstants.java | 2 +- .../org/thingsboard/server/dao/model/SearchTextEntity.java | 2 +- dao/src/main/java/org/thingsboard/server/dao/model/ToData.java | 2 +- .../thingsboard/server/dao/model/sql/AbstractAlarmEntity.java | 2 +- .../thingsboard/server/dao/model/sql/AbstractAssetEntity.java | 2 +- .../thingsboard/server/dao/model/sql/AbstractDeviceEntity.java | 2 +- .../server/dao/model/sql/AbstractEntityViewEntity.java | 2 +- .../model/sql/AbstractOAuth2ClientRegistrationInfoEntity.java | 2 +- .../thingsboard/server/dao/model/sql/AbstractTenantEntity.java | 2 +- .../thingsboard/server/dao/model/sql/AbstractTsKvEntity.java | 2 +- .../thingsboard/server/dao/model/sql/AdminSettingsEntity.java | 2 +- .../java/org/thingsboard/server/dao/model/sql/AlarmEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/AlarmInfoEntity.java | 2 +- .../thingsboard/server/dao/model/sql/ApiUsageStateEntity.java | 2 +- .../java/org/thingsboard/server/dao/model/sql/AssetEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/AssetInfoEntity.java | 2 +- .../server/dao/model/sql/AttributeKvCompositeKey.java | 2 +- .../thingsboard/server/dao/model/sql/AttributeKvEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/AuditLogEntity.java | 2 +- .../server/dao/model/sql/ComponentDescriptorEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/CustomerEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/DashboardEntity.java | 2 +- .../thingsboard/server/dao/model/sql/DashboardInfoEntity.java | 2 +- .../server/dao/model/sql/DeviceCredentialsEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/DeviceEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/DeviceInfoEntity.java | 2 +- .../thingsboard/server/dao/model/sql/DeviceProfileEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/EntityViewEntity.java | 2 +- .../thingsboard/server/dao/model/sql/EntityViewInfoEntity.java | 2 +- .../java/org/thingsboard/server/dao/model/sql/EventEntity.java | 2 +- .../model/sql/ExtendedOAuth2ClientRegistrationInfoEntity.java | 2 +- .../server/dao/model/sql/OAuth2ClientRegistrationEntity.java | 2 +- .../dao/model/sql/OAuth2ClientRegistrationInfoEntity.java | 2 +- .../dao/model/sql/OAuth2ClientRegistrationTemplateEntity.java | 2 +- .../thingsboard/server/dao/model/sql/RelationCompositeKey.java | 2 +- .../org/thingsboard/server/dao/model/sql/RelationEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/RuleChainEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/RuleNodeEntity.java | 2 +- .../thingsboard/server/dao/model/sql/RuleNodeStateEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/TenantEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/TenantInfoEntity.java | 2 +- .../thingsboard/server/dao/model/sql/TenantProfileEntity.java | 2 +- .../server/dao/model/sql/UserCredentialsEntity.java | 2 +- .../java/org/thingsboard/server/dao/model/sql/UserEntity.java | 2 +- .../org/thingsboard/server/dao/model/sql/WidgetTypeEntity.java | 2 +- .../thingsboard/server/dao/model/sql/WidgetsBundleEntity.java | 2 +- .../server/dao/model/sqlts/dictionary/TsKvDictionary.java | 2 +- .../dao/model/sqlts/dictionary/TsKvDictionaryCompositeKey.java | 2 +- .../server/dao/model/sqlts/latest/TsKvLatestCompositeKey.java | 2 +- .../server/dao/model/sqlts/latest/TsKvLatestEntity.java | 2 +- .../model/sqlts/timescale/ts/TimescaleTsKvCompositeKey.java | 2 +- .../dao/model/sqlts/timescale/ts/TimescaleTsKvEntity.java | 2 +- .../server/dao/model/sqlts/ts/TsKvCompositeKey.java | 2 +- .../org/thingsboard/server/dao/model/sqlts/ts/TsKvEntity.java | 2 +- .../server/dao/nosql/CassandraAbstractAsyncDao.java | 2 +- .../org/thingsboard/server/dao/nosql/CassandraAbstractDao.java | 2 +- .../server/dao/nosql/CassandraBufferedRateExecutor.java | 2 +- .../server/dao/oauth2/HybridClientRegistrationRepository.java | 2 +- .../server/dao/oauth2/OAuth2ClientRegistrationDao.java | 2 +- .../server/dao/oauth2/OAuth2ClientRegistrationInfoDao.java | 2 +- .../server/dao/oauth2/OAuth2ClientRegistrationTemplateDao.java | 2 +- .../server/dao/oauth2/OAuth2ConfigTemplateServiceImpl.java | 2 +- .../org/thingsboard/server/dao/oauth2/OAuth2Configuration.java | 2 +- .../org/thingsboard/server/dao/oauth2/OAuth2ServiceImpl.java | 2 +- .../java/org/thingsboard/server/dao/oauth2/OAuth2Utils.java | 2 +- .../thingsboard/server/dao/relation/BaseRelationService.java | 2 +- .../java/org/thingsboard/server/dao/relation/RelationDao.java | 2 +- .../org/thingsboard/server/dao/rule/BaseRuleChainService.java | 2 +- .../thingsboard/server/dao/rule/BaseRuleNodeStateService.java | 2 +- .../java/org/thingsboard/server/dao/rule/RuleChainDao.java | 2 +- .../main/java/org/thingsboard/server/dao/rule/RuleNodeDao.java | 2 +- .../java/org/thingsboard/server/dao/rule/RuleNodeStateDao.java | 2 +- .../java/org/thingsboard/server/dao/service/DataValidator.java | 2 +- .../org/thingsboard/server/dao/service/PaginatedRemover.java | 2 +- .../thingsboard/server/dao/service/TimePaginatedRemover.java | 2 +- .../java/org/thingsboard/server/dao/service/Validator.java | 2 +- .../org/thingsboard/server/dao/settings/AdminSettingsDao.java | 2 +- .../server/dao/settings/AdminSettingsServiceImpl.java | 2 +- .../java/org/thingsboard/server/dao/sql/JpaAbstractDao.java | 2 +- .../server/dao/sql/JpaAbstractDaoListeningExecutorService.java | 2 +- .../thingsboard/server/dao/sql/JpaAbstractSearchTextDao.java | 2 +- .../org/thingsboard/server/dao/sql/JpaExecutorService.java | 2 +- .../server/dao/sql/ScheduledLogExecutorComponent.java | 2 +- .../org/thingsboard/server/dao/sql/TbSqlBlockingQueue.java | 2 +- .../thingsboard/server/dao/sql/TbSqlBlockingQueueParams.java | 2 +- .../thingsboard/server/dao/sql/TbSqlBlockingQueueWrapper.java | 2 +- .../main/java/org/thingsboard/server/dao/sql/TbSqlQueue.java | 2 +- .../java/org/thingsboard/server/dao/sql/TbSqlQueueElement.java | 2 +- .../org/thingsboard/server/dao/sql/alarm/AlarmRepository.java | 2 +- .../java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java | 2 +- .../org/thingsboard/server/dao/sql/asset/AssetRepository.java | 2 +- .../java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java | 2 +- .../server/dao/sql/attributes/AttributeKvInsertRepository.java | 2 +- .../server/dao/sql/attributes/AttributeKvRepository.java | 2 +- .../dao/sql/attributes/HsqlAttributesInsertRepository.java | 2 +- .../thingsboard/server/dao/sql/attributes/JpaAttributeDao.java | 2 +- .../dao/sql/attributes/PsqlAttributesInsertRepository.java | 2 +- .../thingsboard/server/dao/sql/audit/AuditLogRepository.java | 2 +- .../org/thingsboard/server/dao/sql/audit/JpaAuditLogDao.java | 2 +- .../component/AbstractComponentDescriptorInsertRepository.java | 2 +- .../dao/sql/component/ComponentDescriptorInsertRepository.java | 2 +- .../dao/sql/component/ComponentDescriptorRepository.java | 2 +- .../sql/component/HsqlComponentDescriptorInsertRepository.java | 2 +- .../dao/sql/component/JpaBaseComponentDescriptorDao.java | 2 +- .../sql/component/PsqlComponentDescriptorInsertRepository.java | 2 +- .../server/dao/sql/customer/CustomerRepository.java | 2 +- .../thingsboard/server/dao/sql/customer/JpaCustomerDao.java | 2 +- .../server/dao/sql/dashboard/DashboardInfoRepository.java | 2 +- .../server/dao/sql/dashboard/DashboardRepository.java | 2 +- .../thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java | 2 +- .../server/dao/sql/dashboard/JpaDashboardInfoDao.java | 2 +- .../server/dao/sql/device/DeviceCredentialsRepository.java | 2 +- .../server/dao/sql/device/DeviceProfileRepository.java | 2 +- .../thingsboard/server/dao/sql/device/DeviceRepository.java | 2 +- .../server/dao/sql/device/JpaDeviceCredentialsDao.java | 2 +- .../org/thingsboard/server/dao/sql/device/JpaDeviceDao.java | 2 +- .../thingsboard/server/dao/sql/device/JpaDeviceProfileDao.java | 2 +- .../server/dao/sql/entityview/EntityViewRepository.java | 2 +- .../server/dao/sql/entityview/JpaEntityViewDao.java | 2 +- .../server/dao/sql/event/AbstractEventInsertRepository.java | 2 +- .../server/dao/sql/event/EventInsertRepository.java | 2 +- .../org/thingsboard/server/dao/sql/event/EventRepository.java | 2 +- .../server/dao/sql/event/HsqlEventInsertRepository.java | 2 +- .../org/thingsboard/server/dao/sql/event/JpaBaseEventDao.java | 2 +- .../server/dao/sql/event/PsqlEventInsertRepository.java | 2 +- .../server/dao/sql/oauth2/JpaOAuth2ClientRegistrationDao.java | 2 +- .../dao/sql/oauth2/JpaOAuth2ClientRegistrationInfoDao.java | 2 +- .../dao/sql/oauth2/JpaOAuth2ClientRegistrationTemplateDao.java | 2 +- .../dao/sql/oauth2/OAuth2ClientRegistrationInfoRepository.java | 2 +- .../dao/sql/oauth2/OAuth2ClientRegistrationRepository.java | 2 +- .../sql/oauth2/OAuth2ClientRegistrationTemplateRepository.java | 2 +- .../org/thingsboard/server/dao/sql/query/AlarmDataAdapter.java | 2 +- .../thingsboard/server/dao/sql/query/AlarmQueryRepository.java | 2 +- .../server/dao/sql/query/DefaultAlarmQueryRepository.java | 2 +- .../server/dao/sql/query/DefaultEntityQueryRepository.java | 2 +- .../server/dao/sql/query/DefaultQueryLogComponent.java | 2 +- .../thingsboard/server/dao/sql/query/EntityDataAdapter.java | 2 +- .../org/thingsboard/server/dao/sql/query/EntityKeyMapping.java | 2 +- .../server/dao/sql/query/EntityQueryRepository.java | 2 +- .../thingsboard/server/dao/sql/query/JpaEntityQueryDao.java | 2 +- .../org/thingsboard/server/dao/sql/query/QueryContext.java | 2 +- .../thingsboard/server/dao/sql/query/QueryLogComponent.java | 2 +- .../thingsboard/server/dao/sql/query/QuerySecurityContext.java | 2 +- .../dao/sql/relation/AbstractRelationInsertRepository.java | 2 +- .../server/dao/sql/relation/HsqlRelationInsertRepository.java | 2 +- .../thingsboard/server/dao/sql/relation/JpaRelationDao.java | 2 +- .../server/dao/sql/relation/PsqlRelationInsertRepository.java | 2 +- .../server/dao/sql/relation/RelationInsertRepository.java | 2 +- .../server/dao/sql/relation/RelationRepository.java | 2 +- .../org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java | 2 +- .../org/thingsboard/server/dao/sql/rule/JpaRuleNodeDao.java | 2 +- .../thingsboard/server/dao/sql/rule/JpaRuleNodeStateDao.java | 2 +- .../thingsboard/server/dao/sql/rule/RuleChainRepository.java | 2 +- .../thingsboard/server/dao/sql/rule/RuleNodeRepository.java | 2 +- .../server/dao/sql/rule/RuleNodeStateRepository.java | 2 +- .../server/dao/sql/settings/AdminSettingsRepository.java | 2 +- .../server/dao/sql/settings/JpaAdminSettingsDao.java | 2 +- .../org/thingsboard/server/dao/sql/tenant/JpaTenantDao.java | 2 +- .../thingsboard/server/dao/sql/tenant/JpaTenantProfileDao.java | 2 +- .../server/dao/sql/tenant/TenantProfileRepository.java | 2 +- .../thingsboard/server/dao/sql/tenant/TenantRepository.java | 2 +- .../server/dao/sql/usagerecord/ApiUsageStateRepository.java | 2 +- .../server/dao/sql/usagerecord/JpaApiUsageStateDao.java | 2 +- .../thingsboard/server/dao/sql/user/JpaUserCredentialsDao.java | 2 +- .../java/org/thingsboard/server/dao/sql/user/JpaUserDao.java | 2 +- .../server/dao/sql/user/UserCredentialsRepository.java | 2 +- .../org/thingsboard/server/dao/sql/user/UserRepository.java | 2 +- .../thingsboard/server/dao/sql/widget/JpaWidgetTypeDao.java | 2 +- .../thingsboard/server/dao/sql/widget/JpaWidgetsBundleDao.java | 2 +- .../server/dao/sql/widget/WidgetTypeRepository.java | 2 +- .../server/dao/sql/widget/WidgetsBundleRepository.java | 2 +- .../dao/sqlts/AbstractChunkedAggregationTimeseriesDao.java | 2 +- .../thingsboard/server/dao/sqlts/AbstractSqlTimeseriesDao.java | 2 +- .../thingsboard/server/dao/sqlts/AggregationTimeseriesDao.java | 2 +- .../server/dao/sqlts/BaseAbstractSqlTimeseriesDao.java | 2 +- .../java/org/thingsboard/server/dao/sqlts/EntityContainer.java | 2 +- .../thingsboard/server/dao/sqlts/SqlTimeseriesLatestDao.java | 2 +- dao/src/main/java/org/thingsboard/server/dao/sqlts/TsKey.java | 2 +- .../server/dao/sqlts/dictionary/TsKvDictionaryRepository.java | 2 +- .../server/dao/sqlts/hsql/JpaHsqlTimeseriesDao.java | 2 +- .../server/dao/sqlts/insert/AbstractInsertRepository.java | 2 +- .../server/dao/sqlts/insert/InsertTsRepository.java | 2 +- .../server/dao/sqlts/insert/hsql/HsqlInsertTsRepository.java | 2 +- .../dao/sqlts/insert/latest/InsertLatestTsRepository.java | 2 +- .../sqlts/insert/latest/hsql/HsqlLatestInsertTsRepository.java | 2 +- .../sqlts/insert/latest/psql/PsqlLatestInsertTsRepository.java | 2 +- .../server/dao/sqlts/insert/psql/PsqlInsertTsRepository.java | 2 +- .../dao/sqlts/insert/psql/PsqlPartitioningRepository.java | 2 +- .../sqlts/insert/timescale/TimescaleInsertTsRepository.java | 2 +- .../server/dao/sqlts/latest/SearchTsKvLatestRepository.java | 2 +- .../server/dao/sqlts/latest/TsKvLatestRepository.java | 2 +- .../server/dao/sqlts/psql/JpaPsqlTimeseriesDao.java | 2 +- .../server/dao/sqlts/timescale/AggregationRepository.java | 2 +- .../server/dao/sqlts/timescale/TimescaleTimeseriesDao.java | 2 +- .../server/dao/sqlts/timescale/TsKvTimescaleRepository.java | 2 +- .../org/thingsboard/server/dao/sqlts/ts/TsKvRepository.java | 2 +- .../server/dao/tenant/DefaultTbTenantProfileCache.java | 2 +- .../main/java/org/thingsboard/server/dao/tenant/TenantDao.java | 2 +- .../org/thingsboard/server/dao/tenant/TenantProfileDao.java | 2 +- .../server/dao/tenant/TenantProfileServiceImpl.java | 2 +- .../org/thingsboard/server/dao/tenant/TenantServiceImpl.java | 2 +- .../dao/timeseries/AbstractCassandraBaseTimeseriesDao.java | 2 +- .../server/dao/timeseries/AggregatePartitionsFunction.java | 2 +- .../server/dao/timeseries/BaseTimeseriesService.java | 2 +- .../server/dao/timeseries/CassandraBaseTimeseriesDao.java | 2 +- .../dao/timeseries/CassandraBaseTimeseriesLatestDao.java | 2 +- .../server/dao/timeseries/CassandraPartitionCacheKey.java | 2 +- .../server/dao/timeseries/CassandraTsPartitionsCache.java | 2 +- .../server/dao/timeseries/NoSqlTsPartitionDate.java | 2 +- .../org/thingsboard/server/dao/timeseries/PsqlPartition.java | 2 +- .../org/thingsboard/server/dao/timeseries/QueryCursor.java | 2 +- .../server/dao/timeseries/SimpleListenableFuture.java | 2 +- .../thingsboard/server/dao/timeseries/SqlTsPartitionDate.java | 2 +- .../org/thingsboard/server/dao/timeseries/TimeseriesDao.java | 2 +- .../thingsboard/server/dao/timeseries/TimeseriesLatestDao.java | 2 +- .../server/dao/timeseries/TsInsertExecutorType.java | 2 +- .../org/thingsboard/server/dao/timeseries/TsKvQueryCursor.java | 2 +- .../thingsboard/server/dao/usagerecord/ApiUsageStateDao.java | 2 +- .../server/dao/usagerecord/ApiUsageStateServiceImpl.java | 2 +- .../org/thingsboard/server/dao/user/UserCredentialsDao.java | 2 +- dao/src/main/java/org/thingsboard/server/dao/user/UserDao.java | 2 +- .../java/org/thingsboard/server/dao/user/UserServiceImpl.java | 2 +- .../server/dao/util/AbstractBufferedRateExecutor.java | 2 +- .../java/org/thingsboard/server/dao/util/AsyncRateLimiter.java | 2 +- .../java/org/thingsboard/server/dao/util/AsyncTaskContext.java | 2 +- .../org/thingsboard/server/dao/util/BufferedRateExecutor.java | 2 +- .../thingsboard/server/dao/util/BufferedRateExecutorStats.java | 2 +- .../thingsboard/server/dao/util/TenantRateLimitException.java | 2 +- .../server/dao/util/mapping/AbstractJsonSqlTypeDescriptor.java | 2 +- .../org/thingsboard/server/dao/util/mapping/JacksonUtil.java | 2 +- .../server/dao/util/mapping/JsonBinarySqlTypeDescriptor.java | 2 +- .../thingsboard/server/dao/util/mapping/JsonBinaryType.java | 2 +- .../server/dao/util/mapping/JsonStringSqlTypeDescriptor.java | 2 +- .../thingsboard/server/dao/util/mapping/JsonStringType.java | 2 +- .../server/dao/util/mapping/JsonTypeDescriptor.java | 2 +- .../java/org/thingsboard/server/dao/widget/WidgetTypeDao.java | 2 +- .../thingsboard/server/dao/widget/WidgetTypeServiceImpl.java | 2 +- .../org/thingsboard/server/dao/widget/WidgetsBundleDao.java | 2 +- .../server/dao/widget/WidgetsBundleServiceImpl.java | 2 +- dao/src/main/resources/cassandra/schema-ts-latest.cql | 2 +- dao/src/main/resources/cassandra/schema-ts.cql | 2 +- dao/src/main/resources/sql/schema-entities-hsql.sql | 2 +- dao/src/main/resources/sql/schema-entities-idx.sql | 2 +- dao/src/main/resources/sql/schema-entities.sql | 2 +- dao/src/main/resources/sql/schema-timescale.sql | 2 +- dao/src/main/resources/sql/schema-ts-hsql.sql | 2 +- dao/src/main/resources/sql/schema-ts-psql.sql | 2 +- dao/src/main/resources/sql/schema-types-hsql.sql | 2 +- .../java/org/thingsboard/server/dao/AbstractJpaDaoTest.java | 2 +- .../org/thingsboard/server/dao/CustomCassandraCQLUnit.java | 2 +- .../test/java/org/thingsboard/server/dao/CustomSqlUnit.java | 2 +- .../test/java/org/thingsboard/server/dao/JpaDaoTestSuite.java | 2 +- .../java/org/thingsboard/server/dao/JpaDbunitTestConfig.java | 2 +- .../org/thingsboard/server/dao/NoSqlDaoServiceTestSuite.java | 2 +- .../org/thingsboard/server/dao/SqlDaoServiceTestSuite.java | 2 +- .../server/dao/nosql/CassandraPartitionsCacheTest.java | 2 +- .../thingsboard/server/dao/service/AbstractServiceTest.java | 2 +- .../server/dao/service/BaseAdminSettingsServiceTest.java | 2 +- .../thingsboard/server/dao/service/BaseAlarmServiceTest.java | 2 +- .../server/dao/service/BaseApiUsageStateServiceTest.java | 2 +- .../thingsboard/server/dao/service/BaseAssetServiceTest.java | 2 +- .../server/dao/service/BaseCustomerServiceTest.java | 2 +- .../server/dao/service/BaseDashboardServiceTest.java | 2 +- .../server/dao/service/BaseDeviceCredentialsCacheTest.java | 2 +- .../server/dao/service/BaseDeviceCredentialsServiceTest.java | 2 +- .../server/dao/service/BaseDeviceProfileServiceTest.java | 2 +- .../thingsboard/server/dao/service/BaseDeviceServiceTest.java | 2 +- .../thingsboard/server/dao/service/BaseEntityServiceTest.java | 2 +- .../dao/service/BaseOAuth2ConfigTemplateServiceTest.java | 2 +- .../thingsboard/server/dao/service/BaseOAuth2ServiceTest.java | 2 +- .../thingsboard/server/dao/service/BaseRelationCacheTest.java | 2 +- .../server/dao/service/BaseRelationServiceTest.java | 2 +- .../server/dao/service/BaseRuleChainServiceTest.java | 2 +- .../server/dao/service/BaseTenantProfileServiceTest.java | 2 +- .../thingsboard/server/dao/service/BaseTenantServiceTest.java | 2 +- .../thingsboard/server/dao/service/BaseUserServiceTest.java | 2 +- .../server/dao/service/BaseWidgetTypeServiceTest.java | 2 +- .../server/dao/service/BaseWidgetsBundleServiceTest.java | 2 +- .../java/org/thingsboard/server/dao/service/DaoNoSqlTest.java | 2 +- .../java/org/thingsboard/server/dao/service/DaoSqlTest.java | 2 +- .../dao/service/attributes/BaseAttributesServiceTest.java | 2 +- .../dao/service/attributes/sql/AttributesServiceSqlTest.java | 2 +- .../server/dao/service/event/BaseEventServiceTest.java | 2 +- .../server/dao/service/event/sql/EventServiceSqlTest.java | 2 +- .../server/dao/service/sql/AdminSettingsServiceSqlTest.java | 2 +- .../server/dao/service/sql/AlarmServiceSqlTest.java | 2 +- .../server/dao/service/sql/ApiUsageStateServiceSqlTest.java | 2 +- .../server/dao/service/sql/AssetServiceSqlTest.java | 2 +- .../server/dao/service/sql/CustomerServiceSqlTest.java | 2 +- .../server/dao/service/sql/DashboardServiceSqlTest.java | 2 +- .../dao/service/sql/DeviceCredentialsCacheServiceSqlTest.java | 2 +- .../dao/service/sql/DeviceCredentialsServiceSqlTest.java | 2 +- .../server/dao/service/sql/DeviceProfileServiceSqlTest.java | 2 +- .../server/dao/service/sql/DeviceServiceSqlTest.java | 2 +- .../server/dao/service/sql/EntityServiceSqlTest.java | 2 +- .../dao/service/sql/OAuth2ConfigTemplateServiceSqlTest.java | 2 +- .../server/dao/service/sql/OAuth2ServiceSqlTest.java | 2 +- .../server/dao/service/sql/RelationCacheSqlTest.java | 2 +- .../server/dao/service/sql/RelationServiceSqlTest.java | 2 +- .../server/dao/service/sql/RuleChainServiceSqlTest.java | 2 +- .../server/dao/service/sql/TenantProfileServiceSqlTest.java | 2 +- .../server/dao/service/sql/TenantServiceSqlTest.java | 2 +- .../thingsboard/server/dao/service/sql/UserServiceSqlTest.java | 2 +- .../server/dao/service/sql/WidgetTypeServiceSqlTest.java | 2 +- .../server/dao/service/sql/WidgetsBundleServiceSqlTest.java | 2 +- .../dao/service/timeseries/BaseTimeseriesServiceTest.java | 2 +- .../service/timeseries/nosql/TimeseriesServiceNoSqlTest.java | 2 +- .../dao/service/timeseries/sql/TimeseriesServiceSqlTest.java | 2 +- .../org/thingsboard/server/dao/sql/alarm/JpaAlarmDaoTest.java | 2 +- .../org/thingsboard/server/dao/sql/asset/JpaAssetDaoTest.java | 2 +- .../thingsboard/server/dao/sql/audit/JpaAuditLogDaoTest.java | 2 +- .../dao/sql/component/JpaBaseComponentDescriptorDaoTest.java | 2 +- .../server/dao/sql/customer/JpaCustomerDaoTest.java | 2 +- .../server/dao/sql/dashboard/JpaDashboardInfoDaoTest.java | 2 +- .../server/dao/sql/device/JpaDeviceCredentialsDaoTest.java | 2 +- .../thingsboard/server/dao/sql/device/JpaDeviceDaoTest.java | 2 +- .../thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java | 2 +- .../thingsboard/server/dao/sql/tenant/JpaTenantDaoTest.java | 2 +- .../server/dao/sql/user/JpaUserCredentialsDaoTest.java | 2 +- .../org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java | 2 +- .../server/dao/sql/widget/JpaWidgetTypeDaoTest.java | 2 +- .../server/dao/sql/widget/JpaWidgetsBundleDaoTest.java | 2 +- .../test/java/org/thingsboard/server/dao/util/DaoTestUtil.java | 2 +- .../test/java/org/thingsboard/server/dao/util/SqlDbType.java | 2 +- docker/compose-utils.sh | 2 +- docker/docker-compose.aws-sqs.yml | 2 +- docker/docker-compose.confluent.yml | 2 +- docker/docker-compose.hybrid.yml | 2 +- docker/docker-compose.kafka.yml | 2 +- docker/docker-compose.postgres.volumes.yml | 2 +- docker/docker-compose.postgres.yml | 2 +- docker/docker-compose.pubsub.yml | 2 +- docker/docker-compose.rabbitmq.yml | 2 +- docker/docker-compose.service-bus.yml | 2 +- docker/docker-compose.yml | 2 +- docker/docker-create-log-folders.sh | 2 +- docker/docker-install-tb.sh | 2 +- docker/docker-remove-services.sh | 2 +- docker/docker-start-services.sh | 2 +- docker/docker-stop-services.sh | 2 +- docker/docker-update-service.sh | 2 +- docker/docker-upgrade-tb.sh | 2 +- docker/tb-transports/coap/conf/logback.xml | 2 +- docker/tb-transports/coap/conf/tb-coap-transport.conf | 2 +- docker/tb-transports/http/conf/logback.xml | 2 +- docker/tb-transports/http/conf/tb-http-transport.conf | 2 +- docker/tb-transports/mqtt/conf/logback.xml | 2 +- docker/tb-transports/mqtt/conf/tb-mqtt-transport.conf | 2 +- k8s/basic/tb-node-cache-configmap.yml | 2 +- k8s/basic/thirdparty.yml | 2 +- k8s/common/cassandra.yml | 2 +- k8s/common/database-setup.yml | 2 +- k8s/common/postgres.yml | 2 +- k8s/common/tb-coap-transport-configmap.yml | 2 +- k8s/common/tb-http-transport-configmap.yml | 2 +- k8s/common/tb-mqtt-transport-configmap.yml | 2 +- k8s/common/tb-namespace.yml | 2 +- k8s/common/tb-node-configmap.yml | 2 +- k8s/common/tb-node-hybrid-configmap.yml | 2 +- k8s/common/tb-node-postgres-configmap.yml | 2 +- k8s/common/tb-node.yml | 2 +- k8s/common/thingsboard.yml | 2 +- k8s/high-availability/tb-node-cache-configmap.yml | 2 +- k8s/high-availability/thirdparty.yml | 2 +- k8s/k8s-delete-all.sh | 2 +- k8s/k8s-delete-resources.sh | 2 +- k8s/k8s-delete-thirdparty.sh | 2 +- k8s/k8s-deploy-resources.sh | 2 +- k8s/k8s-deploy-thirdparty.sh | 2 +- k8s/k8s-install-tb.sh | 2 +- k8s/k8s-upgrade-tb.sh | 2 +- license-header-template.txt | 2 +- msa/black-box-tests/pom.xml | 2 +- .../java/org/thingsboard/server/msa/AbstractContainerTest.java | 2 +- .../java/org/thingsboard/server/msa/ContainerTestSuite.java | 2 +- .../java/org/thingsboard/server/msa/DockerComposeExecutor.java | 2 +- .../org/thingsboard/server/msa/ThingsBoardDbInstaller.java | 2 +- .../src/test/java/org/thingsboard/server/msa/WsClient.java | 2 +- .../thingsboard/server/msa/connectivity/HttpClientTest.java | 2 +- .../thingsboard/server/msa/connectivity/MqttClientTest.java | 2 +- .../server/msa/connectivity/MqttGatewayClientTest.java | 2 +- .../org/thingsboard/server/msa/mapper/AttributesResponse.java | 2 +- .../org/thingsboard/server/msa/mapper/WsTelemetryResponse.java | 2 +- msa/js-executor/api/jsExecutor.js | 2 +- msa/js-executor/api/jsInvokeMessageProcessor.js | 2 +- msa/js-executor/api/utils.js | 2 +- msa/js-executor/config/custom-environment-variables.yml | 2 +- msa/js-executor/config/default.yml | 2 +- msa/js-executor/config/logger.js | 2 +- msa/js-executor/config/tb-js-executor.conf | 2 +- msa/js-executor/docker/Dockerfile | 2 +- msa/js-executor/docker/start-js-executor.sh | 2 +- msa/js-executor/install.js | 2 +- msa/js-executor/pom.xml | 2 +- msa/js-executor/queue/awsSqsTemplate.js | 3 +-- msa/js-executor/queue/kafkaTemplate.js | 2 +- msa/js-executor/queue/pubSubTemplate.js | 3 +-- msa/js-executor/queue/rabbitmqTemplate.js | 3 +-- msa/js-executor/queue/serviceBusTemplate.js | 3 +-- msa/js-executor/server.js | 3 +-- msa/pom.xml | 2 +- msa/tb-node/docker/Dockerfile | 2 +- msa/tb-node/docker/start-tb-node.sh | 2 +- msa/tb-node/pom.xml | 2 +- msa/tb/docker-cassandra/Dockerfile | 2 +- msa/tb/docker-cassandra/start-db.sh | 2 +- msa/tb/docker-cassandra/stop-db.sh | 2 +- msa/tb/docker-postgres/Dockerfile | 2 +- msa/tb/docker-postgres/start-db.sh | 2 +- msa/tb/docker-postgres/stop-db.sh | 2 +- msa/tb/docker-tb/Dockerfile | 2 +- msa/tb/docker-tb/start-db.sh | 2 +- msa/tb/docker-tb/stop-db.sh | 2 +- msa/tb/docker/install-tb.sh | 2 +- msa/tb/docker/logback.xml | 2 +- msa/tb/docker/start-tb.sh | 2 +- msa/tb/docker/thingsboard.conf | 2 +- msa/tb/docker/upgrade-tb.sh | 2 +- msa/tb/pom.xml | 2 +- msa/transport/coap/docker/Dockerfile | 2 +- msa/transport/coap/docker/start-tb-coap-transport.sh | 2 +- msa/transport/coap/pom.xml | 2 +- msa/transport/http/docker/Dockerfile | 2 +- msa/transport/http/docker/start-tb-http-transport.sh | 2 +- msa/transport/http/pom.xml | 2 +- msa/transport/mqtt/docker/Dockerfile | 2 +- msa/transport/mqtt/docker/start-tb-mqtt-transport.sh | 2 +- msa/transport/mqtt/pom.xml | 2 +- msa/transport/pom.xml | 2 +- msa/web-ui/config/custom-environment-variables.yml | 2 +- msa/web-ui/config/default.yml | 2 +- msa/web-ui/config/logger.js | 2 +- msa/web-ui/config/tb-web-ui.conf | 2 +- msa/web-ui/docker/Dockerfile | 2 +- msa/web-ui/docker/start-web-ui.sh | 2 +- msa/web-ui/install.js | 2 +- msa/web-ui/pom.xml | 2 +- msa/web-ui/server.js | 2 +- netty-mqtt/pom.xml | 2 +- .../main/java/org/thingsboard/mqtt/ChannelClosedException.java | 2 +- .../src/main/java/org/thingsboard/mqtt/MqttChannelHandler.java | 2 +- netty-mqtt/src/main/java/org/thingsboard/mqtt/MqttClient.java | 2 +- .../src/main/java/org/thingsboard/mqtt/MqttClientCallback.java | 2 +- .../src/main/java/org/thingsboard/mqtt/MqttClientConfig.java | 2 +- .../src/main/java/org/thingsboard/mqtt/MqttClientImpl.java | 2 +- .../src/main/java/org/thingsboard/mqtt/MqttConnectResult.java | 2 +- netty-mqtt/src/main/java/org/thingsboard/mqtt/MqttHandler.java | 2 +- .../java/org/thingsboard/mqtt/MqttIncomingQos2Publish.java | 2 +- .../src/main/java/org/thingsboard/mqtt/MqttLastWill.java | 2 +- .../src/main/java/org/thingsboard/mqtt/MqttPendingPublish.java | 2 +- .../java/org/thingsboard/mqtt/MqttPendingSubscription.java | 2 +- .../java/org/thingsboard/mqtt/MqttPendingUnsubscription.java | 2 +- .../src/main/java/org/thingsboard/mqtt/MqttPingHandler.java | 2 +- .../src/main/java/org/thingsboard/mqtt/MqttSubscription.java | 2 +- .../main/java/org/thingsboard/mqtt/RetransmissionHandler.java | 2 +- packaging/java/assembly/windows.xml | 2 +- packaging/java/build.gradle | 2 +- packaging/java/scripts/install/install.sh | 2 +- packaging/java/scripts/install/install_dev_db.sh | 2 +- packaging/java/scripts/install/logback.xml | 2 +- packaging/java/scripts/install/upgrade.sh | 2 +- packaging/java/scripts/install/upgrade_dev_db.sh | 2 +- packaging/js/assembly/windows.xml | 2 +- packaging/js/build.gradle | 2 +- pom.xml | 2 +- rest-client/pom.xml | 2 +- .../src/main/java/org/thingsboard/rest/client/RestClient.java | 2 +- .../org/thingsboard/rest/client/utils/RestJsonConverter.java | 2 +- rule-engine/pom.xml | 2 +- rule-engine/rule-engine-api/pom.xml | 2 +- .../thingsboard/rule/engine/api/EmptyNodeConfiguration.java | 2 +- .../main/java/org/thingsboard/rule/engine/api/MailService.java | 2 +- .../org/thingsboard/rule/engine/api/NodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/api/NodeDefinition.java | 2 +- .../main/java/org/thingsboard/rule/engine/api/RpcError.java | 2 +- .../thingsboard/rule/engine/api/RuleEngineAlarmService.java | 2 +- .../rule/engine/api/RuleEngineDeviceProfileCache.java | 2 +- .../rule/engine/api/RuleEngineDeviceRpcRequest.java | 2 +- .../rule/engine/api/RuleEngineDeviceRpcResponse.java | 2 +- .../org/thingsboard/rule/engine/api/RuleEngineRpcService.java | 2 +- .../rule/engine/api/RuleEngineTelemetryService.java | 2 +- .../main/java/org/thingsboard/rule/engine/api/RuleNode.java | 2 +- .../java/org/thingsboard/rule/engine/api/ScriptEngine.java | 2 +- .../main/java/org/thingsboard/rule/engine/api/SmsService.java | 2 +- .../main/java/org/thingsboard/rule/engine/api/TbContext.java | 2 +- .../src/main/java/org/thingsboard/rule/engine/api/TbNode.java | 2 +- .../org/thingsboard/rule/engine/api/TbNodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/api/TbNodeException.java | 2 +- .../main/java/org/thingsboard/rule/engine/api/TbNodeState.java | 2 +- .../java/org/thingsboard/rule/engine/api/TbRelationTypes.java | 2 +- .../org/thingsboard/rule/engine/api/msg/DeviceAttributes.java | 2 +- .../engine/api/msg/DeviceAttributesEventNotificationMsg.java | 2 +- .../engine/api/msg/DeviceCredentialsUpdateNotificationMsg.java | 2 +- .../org/thingsboard/rule/engine/api/msg/DeviceMetaData.java | 2 +- .../rule/engine/api/msg/DeviceNameOrTypeUpdateMsg.java | 2 +- .../rule/engine/api/msg/ToDeviceActorNotificationMsg.java | 2 +- .../java/org/thingsboard/rule/engine/api/sms/SmsSender.java | 2 +- .../org/thingsboard/rule/engine/api/sms/SmsSenderFactory.java | 2 +- .../rule/engine/api/sms/exception/SmsException.java | 2 +- .../rule/engine/api/sms/exception/SmsParseException.java | 2 +- .../rule/engine/api/sms/exception/SmsSendException.java | 2 +- .../java/org/thingsboard/rule/engine/api/util/TbNodeUtils.java | 2 +- rule-engine/rule-engine-components/pom.xml | 2 +- .../thingsboard/rule/engine/action/TbAbstractAlarmNode.java | 2 +- .../rule/engine/action/TbAbstractAlarmNodeConfiguration.java | 2 +- .../rule/engine/action/TbAbstractCustomerActionNode.java | 2 +- .../action/TbAbstractCustomerActionNodeConfiguration.java | 2 +- .../rule/engine/action/TbAbstractRelationActionNode.java | 2 +- .../action/TbAbstractRelationActionNodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/action/TbAlarmResult.java | 2 +- .../thingsboard/rule/engine/action/TbAssignToCustomerNode.java | 2 +- .../engine/action/TbAssignToCustomerNodeConfiguration.java | 2 +- .../org/thingsboard/rule/engine/action/TbClearAlarmNode.java | 2 +- .../rule/engine/action/TbClearAlarmNodeConfiguration.java | 2 +- .../rule/engine/action/TbCopyAttributesToEntityViewNode.java | 2 +- .../org/thingsboard/rule/engine/action/TbCreateAlarmNode.java | 2 +- .../rule/engine/action/TbCreateAlarmNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/action/TbCreateRelationNode.java | 2 +- .../rule/engine/action/TbCreateRelationNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/action/TbDeleteRelationNode.java | 2 +- .../rule/engine/action/TbDeleteRelationNodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/action/TbLogNode.java | 2 +- .../thingsboard/rule/engine/action/TbLogNodeConfiguration.java | 2 +- .../org/thingsboard/rule/engine/action/TbMsgCountNode.java | 2 +- .../rule/engine/action/TbMsgCountNodeConfiguration.java | 2 +- .../rule/engine/action/TbSaveToCustomCassandraTableNode.java | 2 +- .../action/TbSaveToCustomCassandraTableNodeConfiguration.java | 2 +- .../rule/engine/action/TbUnassignFromCustomerNode.java | 2 +- .../engine/action/TbUnassignFromCustomerNodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/aws/sns/TbSnsNode.java | 2 +- .../rule/engine/aws/sns/TbSnsNodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/aws/sqs/TbSqsNode.java | 2 +- .../rule/engine/aws/sqs/TbSqsNodeConfiguration.java | 2 +- .../org/thingsboard/rule/engine/data/DeviceRelationsQuery.java | 2 +- .../java/org/thingsboard/rule/engine/data/RelationsQuery.java | 2 +- .../org/thingsboard/rule/engine/debug/TbMsgGeneratorNode.java | 2 +- .../rule/engine/debug/TbMsgGeneratorNodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/delay/TbMsgDelayNode.java | 2 +- .../rule/engine/delay/TbMsgDelayNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/filter/TbCheckAlarmStatusNode.java | 2 +- .../rule/engine/filter/TbCheckAlarmStatusNodeConfig.java | 2 +- .../org/thingsboard/rule/engine/filter/TbCheckMessageNode.java | 2 +- .../rule/engine/filter/TbCheckMessageNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/filter/TbCheckRelationNode.java | 2 +- .../rule/engine/filter/TbCheckRelationNodeConfiguration.java | 2 +- .../org/thingsboard/rule/engine/filter/TbJsFilterNode.java | 2 +- .../rule/engine/filter/TbJsFilterNodeConfiguration.java | 2 +- .../org/thingsboard/rule/engine/filter/TbJsSwitchNode.java | 2 +- .../rule/engine/filter/TbJsSwitchNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/filter/TbMsgTypeFilterNode.java | 2 +- .../rule/engine/filter/TbMsgTypeFilterNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/filter/TbMsgTypeSwitchNode.java | 2 +- .../rule/engine/filter/TbOriginatorTypeFilterNode.java | 2 +- .../engine/filter/TbOriginatorTypeFilterNodeConfiguration.java | 2 +- .../rule/engine/filter/TbOriginatorTypeSwitchNode.java | 2 +- .../main/java/org/thingsboard/rule/engine/flow/TbAckNode.java | 2 +- .../org/thingsboard/rule/engine/flow/TbCheckpointNode.java | 2 +- .../rule/engine/flow/TbCheckpointNodeConfiguration.java | 2 +- .../org/thingsboard/rule/engine/gcp/pubsub/TbPubSubNode.java | 2 +- .../rule/engine/gcp/pubsub/TbPubSubNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/geo/AbstractGeofencingNode.java | 2 +- .../main/java/org/thingsboard/rule/engine/geo/Coordinates.java | 2 +- .../org/thingsboard/rule/engine/geo/EntityGeofencingState.java | 2 +- .../src/main/java/org/thingsboard/rule/engine/geo/GeoUtil.java | 2 +- .../main/java/org/thingsboard/rule/engine/geo/Perimeter.java | 2 +- .../java/org/thingsboard/rule/engine/geo/PerimeterType.java | 2 +- .../main/java/org/thingsboard/rule/engine/geo/RangeUnit.java | 2 +- .../thingsboard/rule/engine/geo/TbGpsGeofencingActionNode.java | 2 +- .../engine/geo/TbGpsGeofencingActionNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/geo/TbGpsGeofencingFilterNode.java | 2 +- .../engine/geo/TbGpsGeofencingFilterNodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/kafka/TbKafkaNode.java | 2 +- .../rule/engine/kafka/TbKafkaNodeConfiguration.java | 2 +- .../main/java/org/thingsboard/rule/engine/mail/EmailPojo.java | 2 +- .../org/thingsboard/rule/engine/mail/TbMsgToEmailNode.java | 2 +- .../rule/engine/mail/TbMsgToEmailNodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/mail/TbSendEmailNode.java | 2 +- .../rule/engine/mail/TbSendEmailNodeConfiguration.java | 2 +- .../rule/engine/metadata/TbAbstractGetAttributesNode.java | 2 +- .../rule/engine/metadata/TbAbstractGetEntityDetailsNode.java | 2 +- .../metadata/TbAbstractGetEntityDetailsNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/metadata/TbEntityGetAttrNode.java | 2 +- .../thingsboard/rule/engine/metadata/TbGetAttributesNode.java | 2 +- .../rule/engine/metadata/TbGetAttributesNodeConfiguration.java | 2 +- .../rule/engine/metadata/TbGetCustomerAttributeNode.java | 2 +- .../rule/engine/metadata/TbGetCustomerDetailsNode.java | 2 +- .../engine/metadata/TbGetCustomerDetailsNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/metadata/TbGetDeviceAttrNode.java | 2 +- .../rule/engine/metadata/TbGetDeviceAttrNodeConfiguration.java | 2 +- .../rule/engine/metadata/TbGetEntityAttrNodeConfiguration.java | 2 +- .../engine/metadata/TbGetOriginatorFieldsConfiguration.java | 2 +- .../rule/engine/metadata/TbGetOriginatorFieldsNode.java | 2 +- .../engine/metadata/TbGetRelatedAttrNodeConfiguration.java | 2 +- .../rule/engine/metadata/TbGetRelatedAttributeNode.java | 2 +- .../thingsboard/rule/engine/metadata/TbGetTelemetryNode.java | 2 +- .../rule/engine/metadata/TbGetTelemetryNodeConfiguration.java | 2 +- .../rule/engine/metadata/TbGetTenantAttributeNode.java | 2 +- .../rule/engine/metadata/TbGetTenantDetailsNode.java | 2 +- .../engine/metadata/TbGetTenantDetailsNodeConfiguration.java | 2 +- .../main/java/org/thingsboard/rule/engine/mqtt/TbMqttNode.java | 2 +- .../thingsboard/rule/engine/mqtt/TbMqttNodeConfiguration.java | 2 +- .../rule/engine/mqtt/azure/AzureIotHubSasCredentials.java | 2 +- .../thingsboard/rule/engine/mqtt/azure/TbAzureIotHubNode.java | 2 +- .../rule/engine/mqtt/azure/TbAzureIotHubNodeConfiguration.java | 2 +- .../rule/engine/mqtt/credentials/AnonymousCredentials.java | 2 +- .../rule/engine/mqtt/credentials/BasicCredentials.java | 2 +- .../rule/engine/mqtt/credentials/CertPemClientCredentials.java | 2 +- .../rule/engine/mqtt/credentials/MqttClientCredentials.java | 2 +- .../org/thingsboard/rule/engine/profile/AlarmEvalResult.java | 2 +- .../org/thingsboard/rule/engine/profile/AlarmRuleState.java | 2 +- .../java/org/thingsboard/rule/engine/profile/AlarmState.java | 2 +- .../rule/engine/profile/AlarmStateUpdateResult.java | 2 +- .../java/org/thingsboard/rule/engine/profile/DataSnapshot.java | 2 +- .../java/org/thingsboard/rule/engine/profile/DeviceState.java | 2 +- .../org/thingsboard/rule/engine/profile/EntityKeyValue.java | 2 +- .../java/org/thingsboard/rule/engine/profile/ProfileState.java | 2 +- .../org/thingsboard/rule/engine/profile/SnapshotUpdate.java | 2 +- .../thingsboard/rule/engine/profile/TbDeviceProfileNode.java | 2 +- .../rule/engine/profile/TbDeviceProfileNodeConfiguration.java | 2 +- .../rule/engine/profile/state/PersistedAlarmRuleState.java | 2 +- .../rule/engine/profile/state/PersistedAlarmState.java | 2 +- .../rule/engine/profile/state/PersistedDeviceState.java | 2 +- .../org/thingsboard/rule/engine/rabbitmq/TbRabbitMqNode.java | 2 +- .../rule/engine/rabbitmq/TbRabbitMqNodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/rest/TbHttpClient.java | 2 +- .../org/thingsboard/rule/engine/rest/TbRestApiCallNode.java | 2 +- .../rule/engine/rest/TbRestApiCallNodeConfiguration.java | 2 +- .../org/thingsboard/rule/engine/rpc/TbSendRPCReplyNode.java | 2 +- .../org/thingsboard/rule/engine/rpc/TbSendRPCRequestNode.java | 2 +- .../rule/engine/rpc/TbSendRpcReplyNodeConfiguration.java | 2 +- .../rule/engine/rpc/TbSendRpcRequestNodeConfiguration.java | 2 +- .../java/org/thingsboard/rule/engine/sms/TbSendSmsNode.java | 2 +- .../rule/engine/sms/TbSendSmsNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/telemetry/TbMsgAttributesNode.java | 2 +- .../engine/telemetry/TbMsgAttributesNodeConfiguration.java | 2 +- .../thingsboard/rule/engine/telemetry/TbMsgTimeseriesNode.java | 2 +- .../engine/telemetry/TbMsgTimeseriesNodeConfiguration.java | 2 +- .../rule/engine/telemetry/TelemetryNodeCallback.java | 2 +- .../rule/engine/transaction/TbSynchronizationBeginNode.java | 2 +- .../rule/engine/transaction/TbSynchronizationEndNode.java | 2 +- .../rule/engine/transform/MultipleTbMsgsCallbackWrapper.java | 2 +- .../rule/engine/transform/TbAbstractTransformNode.java | 2 +- .../rule/engine/transform/TbChangeOriginatorNode.java | 2 +- .../engine/transform/TbChangeOriginatorNodeConfiguration.java | 2 +- .../rule/engine/transform/TbMsgCallbackWrapper.java | 2 +- .../thingsboard/rule/engine/transform/TbTransformMsgNode.java | 2 +- .../rule/engine/transform/TbTransformMsgNodeConfiguration.java | 2 +- .../rule/engine/transform/TbTransformNodeConfiguration.java | 2 +- .../rule/engine/util/EntitiesAlarmOriginatorIdAsyncLoader.java | 2 +- .../rule/engine/util/EntitiesCustomerIdAsyncLoader.java | 2 +- .../rule/engine/util/EntitiesFieldsAsyncLoader.java | 2 +- .../rule/engine/util/EntitiesRelatedDeviceIdAsyncLoader.java | 2 +- .../rule/engine/util/EntitiesRelatedEntityIdAsyncLoader.java | 2 +- .../rule/engine/util/EntitiesTenantIdAsyncLoader.java | 2 +- .../java/org/thingsboard/rule/engine/util/EntityContainer.java | 2 +- .../java/org/thingsboard/rule/engine/util/EntityDetails.java | 2 +- .../org/thingsboard/rule/engine/action/TbAlarmNodeTest.java | 2 +- .../org/thingsboard/rule/engine/filter/TbJsFilterNodeTest.java | 2 +- .../org/thingsboard/rule/engine/filter/TbJsSwitchNodeTest.java | 2 +- .../org/thingsboard/rule/engine/mail/TbMsgToEmailNodeTest.java | 2 +- .../rule/engine/metadata/TbGetCustomerAttributeNodeTest.java | 2 +- .../rule/engine/profile/TbDeviceProfileNodeTest.java | 2 +- .../rule/engine/transform/TbChangeOriginatorNodeTest.java | 2 +- .../rule/engine/transform/TbTransformMsgNodeTest.java | 2 +- tools/pom.xml | 2 +- .../main/java/org/thingsboard/client/tools/MqttSslClient.java | 2 +- .../org/thingsboard/client/tools/migrator/MigratorTool.java | 2 +- .../thingsboard/client/tools/migrator/PgCaLatestMigrator.java | 2 +- .../tools/migrator/PostgresToCassandraTelemetryMigrator.java | 2 +- .../org/thingsboard/client/tools/migrator/WriterBuilder.java | 2 +- tools/src/main/python/mqtt-send-telemetry.py | 2 +- tools/src/main/python/one-way-ssl-mqtt-client.py | 2 +- tools/src/main/python/simple-mqtt-client.py | 2 +- tools/src/main/python/two-way-ssl-mqtt-client.py | 2 +- tools/src/main/shell/client.keygen.sh | 2 +- tools/src/main/shell/server.keygen.sh | 2 +- transport/coap/pom.xml | 2 +- transport/coap/src/main/conf/logback.xml | 2 +- transport/coap/src/main/conf/tb-coap-transport.conf | 2 +- .../server/coap/ThingsboardCoapTransportApplication.java | 2 +- transport/coap/src/main/resources/logback.xml | 2 +- transport/coap/src/main/resources/tb-coap-transport.yml | 2 +- transport/http/pom.xml | 2 +- transport/http/src/main/conf/logback.xml | 2 +- transport/http/src/main/conf/tb-http-transport.conf | 2 +- .../server/http/ThingsboardHttpTransportApplication.java | 2 +- transport/http/src/main/resources/logback.xml | 2 +- transport/http/src/main/resources/tb-http-transport.yml | 2 +- transport/mqtt/pom.xml | 2 +- transport/mqtt/src/main/conf/logback.xml | 2 +- transport/mqtt/src/main/conf/tb-mqtt-transport.conf | 2 +- .../server/mqtt/ThingsboardMqttTransportApplication.java | 2 +- transport/mqtt/src/main/resources/logback.xml | 2 +- transport/mqtt/src/main/resources/tb-mqtt-transport.yml | 2 +- transport/pom.xml | 2 +- ui-ngx/.editorconfig | 2 +- ui-ngx/e2e/protractor.conf.js | 2 +- ui-ngx/e2e/src/app.e2e-spec.ts | 2 +- ui-ngx/e2e/src/app.po.ts | 2 +- ui-ngx/extra-webpack.config.js | 2 +- ui-ngx/pom.xml | 2 +- ui-ngx/proxy.conf.js | 3 +-- ui-ngx/src/app/app-routing.module.ts | 2 +- ui-ngx/src/app/app.component.html | 2 +- ui-ngx/src/app/app.component.scss | 2 +- ui-ngx/src/app/app.component.ts | 2 +- ui-ngx/src/app/app.module.ts | 2 +- ui-ngx/src/app/core/api/alarm-data-subscription.ts | 2 +- ui-ngx/src/app/core/api/alarm-data.service.ts | 2 +- ui-ngx/src/app/core/api/alias-controller.ts | 2 +- ui-ngx/src/app/core/api/data-aggregator.ts | 2 +- ui-ngx/src/app/core/api/entity-data-subscription.ts | 2 +- ui-ngx/src/app/core/api/entity-data.service.ts | 2 +- ui-ngx/src/app/core/api/public-api.ts | 2 +- ui-ngx/src/app/core/api/widget-api.models.ts | 2 +- ui-ngx/src/app/core/api/widget-subscription.ts | 2 +- ui-ngx/src/app/core/auth/auth.actions.ts | 2 +- ui-ngx/src/app/core/auth/auth.models.ts | 2 +- ui-ngx/src/app/core/auth/auth.reducer.ts | 2 +- ui-ngx/src/app/core/auth/auth.selectors.ts | 2 +- ui-ngx/src/app/core/auth/auth.service.spec.ts | 2 +- ui-ngx/src/app/core/auth/auth.service.ts | 2 +- ui-ngx/src/app/core/core.module.ts | 2 +- ui-ngx/src/app/core/core.state.ts | 2 +- ui-ngx/src/app/core/css/css.js | 2 +- ui-ngx/src/app/core/guards/auth.guard.ts | 2 +- ui-ngx/src/app/core/guards/confirm-on-exit.guard.ts | 2 +- ui-ngx/src/app/core/http/admin.service.ts | 2 +- ui-ngx/src/app/core/http/alarm.service.ts | 2 +- ui-ngx/src/app/core/http/asset.service.ts | 2 +- ui-ngx/src/app/core/http/attribute.service.ts | 2 +- ui-ngx/src/app/core/http/audit-log.service.ts | 2 +- ui-ngx/src/app/core/http/component-descriptor.service.ts | 2 +- ui-ngx/src/app/core/http/customer.service.ts | 2 +- ui-ngx/src/app/core/http/dashboard.service.ts | 2 +- ui-ngx/src/app/core/http/device-profile.service.ts | 2 +- ui-ngx/src/app/core/http/device.service.ts | 2 +- ui-ngx/src/app/core/http/entity-relation.service.ts | 2 +- ui-ngx/src/app/core/http/entity-view.service.ts | 2 +- ui-ngx/src/app/core/http/entity.service.ts | 2 +- ui-ngx/src/app/core/http/event.service.ts | 2 +- ui-ngx/src/app/core/http/http-utils.ts | 2 +- ui-ngx/src/app/core/http/oauth2.service.ts | 2 +- ui-ngx/src/app/core/http/public-api.ts | 2 +- ui-ngx/src/app/core/http/queue.service.ts | 2 +- ui-ngx/src/app/core/http/rule-chain.service.ts | 2 +- ui-ngx/src/app/core/http/tenant-profile.service.ts | 2 +- ui-ngx/src/app/core/http/tenant.service.ts | 2 +- ui-ngx/src/app/core/http/user.service.ts | 2 +- ui-ngx/src/app/core/http/widget.service.ts | 2 +- ui-ngx/src/app/core/interceptors/global-http-interceptor.ts | 2 +- ui-ngx/src/app/core/interceptors/interceptor-config.ts | 2 +- ui-ngx/src/app/core/interceptors/interceptor-http-params.ts | 2 +- ui-ngx/src/app/core/interceptors/load.actions.ts | 2 +- ui-ngx/src/app/core/interceptors/load.models.ts | 2 +- ui-ngx/src/app/core/interceptors/load.reducer.ts | 2 +- ui-ngx/src/app/core/interceptors/load.selectors.ts | 2 +- ui-ngx/src/app/core/local-storage/local-storage.service.ts | 2 +- ui-ngx/src/app/core/meta-reducers/debug.reducer.ts | 2 +- .../meta-reducers/init-state-from-local-storage.reducer.ts | 2 +- ui-ngx/src/app/core/notification/notification.actions.ts | 2 +- ui-ngx/src/app/core/notification/notification.effects.ts | 2 +- ui-ngx/src/app/core/notification/notification.models.ts | 2 +- ui-ngx/src/app/core/notification/notification.reducer.ts | 2 +- ui-ngx/src/app/core/operator/enterZone.ts | 2 +- ui-ngx/src/app/core/public-api.ts | 2 +- ui-ngx/src/app/core/schema-utils.ts | 2 +- ui-ngx/src/app/core/services/broadcast.models.ts | 2 +- ui-ngx/src/app/core/services/broadcast.service.ts | 2 +- ui-ngx/src/app/core/services/dashboard-utils.service.ts | 2 +- ui-ngx/src/app/core/services/dialog.service.ts | 2 +- .../src/app/core/services/dynamic-component-factory.service.ts | 2 +- ui-ngx/src/app/core/services/item-buffer.service.ts | 2 +- ui-ngx/src/app/core/services/menu.models.ts | 2 +- ui-ngx/src/app/core/services/menu.service.ts | 2 +- ui-ngx/src/app/core/services/notification.service.ts | 2 +- ui-ngx/src/app/core/services/public-api.ts | 2 +- ui-ngx/src/app/core/services/raf.service.ts | 2 +- ui-ngx/src/app/core/services/resources.service.ts | 2 +- .../src/app/core/services/script/node-script-test.service.ts | 2 +- ui-ngx/src/app/core/services/time.service.ts | 2 +- ui-ngx/src/app/core/services/title.service.ts | 2 +- ui-ngx/src/app/core/services/utils.service.ts | 2 +- ui-ngx/src/app/core/services/window.service.ts | 2 +- ui-ngx/src/app/core/settings/settings.actions.ts | 2 +- ui-ngx/src/app/core/settings/settings.effects.ts | 2 +- ui-ngx/src/app/core/settings/settings.models.ts | 2 +- ui-ngx/src/app/core/settings/settings.reducer.ts | 2 +- ui-ngx/src/app/core/settings/settings.selectors.ts | 2 +- ui-ngx/src/app/core/settings/settings.utils.ts | 2 +- ui-ngx/src/app/core/translate/missing-translate-handler.ts | 2 +- ui-ngx/src/app/core/translate/translate-default-compiler.ts | 2 +- ui-ngx/src/app/core/translate/translate-default-parser.ts | 2 +- ui-ngx/src/app/core/utils.ts | 2 +- ui-ngx/src/app/core/ws/telemetry-websocket.service.ts | 2 +- ui-ngx/src/app/modules/common/modules-map.ts | 2 +- ui-ngx/src/app/modules/dashboard/dashboard-pages.module.ts | 2 +- .../app/modules/dashboard/dashboard-pages.routing.module.ts | 2 +- ui-ngx/src/app/modules/dashboard/dashboard-routing.module.ts | 2 +- .../home/components/alarm/alarm-details-dialog.component.html | 2 +- .../home/components/alarm/alarm-details-dialog.component.ts | 2 +- .../app/modules/home/components/alarm/alarm-table-config.ts | 2 +- .../home/components/alarm/alarm-table-header.component.html | 2 +- .../home/components/alarm/alarm-table-header.component.scss | 2 +- .../home/components/alarm/alarm-table-header.component.ts | 2 +- .../modules/home/components/alarm/alarm-table.component.html | 2 +- .../modules/home/components/alarm/alarm-table.component.scss | 2 +- .../app/modules/home/components/alarm/alarm-table.component.ts | 2 +- .../alias/aliases-entity-autocomplete.component.html | 2 +- .../components/alias/aliases-entity-autocomplete.component.ts | 2 +- .../alias/aliases-entity-select-panel.component.html | 2 +- .../alias/aliases-entity-select-panel.component.scss | 2 +- .../components/alias/aliases-entity-select-panel.component.ts | 2 +- .../home/components/alias/aliases-entity-select.component.html | 2 +- .../home/components/alias/aliases-entity-select.component.scss | 2 +- .../home/components/alias/aliases-entity-select.component.ts | 2 +- .../home/components/alias/entity-alias-dialog.component.html | 2 +- .../home/components/alias/entity-alias-dialog.component.scss | 2 +- .../home/components/alias/entity-alias-dialog.component.ts | 2 +- .../home/components/alias/entity-alias-select.component.html | 2 +- .../components/alias/entity-alias-select.component.models.ts | 2 +- .../home/components/alias/entity-alias-select.component.scss | 2 +- .../home/components/alias/entity-alias-select.component.ts | 2 +- .../home/components/alias/entity-aliases-dialog.component.html | 2 +- .../home/components/alias/entity-aliases-dialog.component.scss | 2 +- .../home/components/alias/entity-aliases-dialog.component.ts | 2 +- .../components/attribute/add-attribute-dialog.component.html | 2 +- .../components/attribute/add-attribute-dialog.component.ts | 2 +- .../attribute/add-widget-to-dashboard-dialog.component.html | 2 +- .../attribute/add-widget-to-dashboard-dialog.component.scss | 2 +- .../attribute/add-widget-to-dashboard-dialog.component.ts | 2 +- .../home/components/attribute/attribute-table.component.html | 2 +- .../home/components/attribute/attribute-table.component.scss | 2 +- .../home/components/attribute/attribute-table.component.ts | 2 +- .../attribute/edit-attribute-value-panel.component.html | 2 +- .../attribute/edit-attribute-value-panel.component.scss | 2 +- .../attribute/edit-attribute-value-panel.component.ts | 2 +- .../audit-log/audit-log-details-dialog.component.html | 2 +- .../audit-log/audit-log-details-dialog.component.scss | 2 +- .../components/audit-log/audit-log-details-dialog.component.ts | 2 +- .../home/components/audit-log/audit-log-table-config.ts | 2 +- .../home/components/audit-log/audit-log-table.component.html | 2 +- .../home/components/audit-log/audit-log-table.component.scss | 2 +- .../home/components/audit-log/audit-log-table.component.ts | 2 +- .../modules/home/components/dashboard/dashboard.component.html | 2 +- .../modules/home/components/dashboard/dashboard.component.scss | 2 +- .../modules/home/components/dashboard/dashboard.component.ts | 2 +- .../app/modules/home/components/dashboard/layout-button.scss | 2 +- .../dashboard/select-target-layout-dialog.component.html | 2 +- .../dashboard/select-target-layout-dialog.component.ts | 2 +- .../dashboard/select-target-state-dialog.component.html | 2 +- .../dashboard/select-target-state-dialog.component.ts | 2 +- .../app/modules/home/components/details-panel.component.html | 2 +- .../app/modules/home/components/details-panel.component.scss | 2 +- .../src/app/modules/home/components/details-panel.component.ts | 2 +- .../components/device/copy-device-credentials.component.html | 2 +- .../components/device/copy-device-credentials.component.ts | 2 +- .../home/components/device/device-credentials.component.html | 2 +- .../home/components/device/device-credentials.component.ts | 2 +- .../home/components/entity/add-entity-dialog.component.html | 2 +- .../home/components/entity/add-entity-dialog.component.scss | 2 +- .../home/components/entity/add-entity-dialog.component.ts | 2 +- .../modules/home/components/entity/contact-based.component.ts | 2 +- .../home/components/entity/entities-table.component.html | 2 +- .../home/components/entity/entities-table.component.scss | 2 +- .../modules/home/components/entity/entities-table.component.ts | 2 +- .../home/components/entity/entity-details-panel.component.html | 2 +- .../home/components/entity/entity-details-panel.component.scss | 2 +- .../home/components/entity/entity-details-panel.component.ts | 2 +- .../home/components/entity/entity-filter-view.component.html | 2 +- .../home/components/entity/entity-filter-view.component.scss | 2 +- .../home/components/entity/entity-filter-view.component.ts | 2 +- .../home/components/entity/entity-filter.component.html | 2 +- .../home/components/entity/entity-filter.component.scss | 2 +- .../modules/home/components/entity/entity-filter.component.ts | 2 +- .../home/components/entity/entity-table-header.component.ts | 2 +- .../modules/home/components/entity/entity-tabs.component.ts | 2 +- .../src/app/modules/home/components/entity/entity.component.ts | 2 +- .../home/components/event/event-content-dialog.component.html | 2 +- .../home/components/event/event-content-dialog.component.scss | 2 +- .../home/components/event/event-content-dialog.component.ts | 2 +- .../app/modules/home/components/event/event-table-config.ts | 2 +- .../home/components/event/event-table-header.component.html | 2 +- .../home/components/event/event-table-header.component.scss | 2 +- .../home/components/event/event-table-header.component.ts | 2 +- .../modules/home/components/event/event-table.component.html | 2 +- .../modules/home/components/event/event-table.component.scss | 2 +- .../app/modules/home/components/event/event-table.component.ts | 2 +- .../components/filter/boolean-filter-predicate.component.html | 2 +- .../components/filter/boolean-filter-predicate.component.ts | 2 +- .../filter/complex-filter-predicate-dialog.component.html | 2 +- .../filter/complex-filter-predicate-dialog.component.ts | 2 +- .../components/filter/complex-filter-predicate.component.html | 2 +- .../components/filter/complex-filter-predicate.component.ts | 2 +- .../home/components/filter/filter-dialog.component.html | 2 +- .../home/components/filter/filter-dialog.component.scss | 2 +- .../modules/home/components/filter/filter-dialog.component.ts | 2 +- .../components/filter/filter-predicate-list.component.html | 2 +- .../components/filter/filter-predicate-list.component.scss | 2 +- .../home/components/filter/filter-predicate-list.component.ts | 2 +- .../components/filter/filter-predicate-value.component.html | 2 +- .../home/components/filter/filter-predicate-value.component.ts | 2 +- .../home/components/filter/filter-predicate.component.html | 3 +-- .../home/components/filter/filter-predicate.component.ts | 2 +- .../app/modules/home/components/filter/filter-predicate.scss | 3 +-- .../home/components/filter/filter-select.component.html | 2 +- .../home/components/filter/filter-select.component.models.ts | 2 +- .../home/components/filter/filter-select.component.scss | 2 +- .../modules/home/components/filter/filter-select.component.ts | 2 +- .../modules/home/components/filter/filter-text.component.html | 2 +- .../modules/home/components/filter/filter-text.component.scss | 2 +- .../modules/home/components/filter/filter-text.component.ts | 2 +- .../components/filter/filter-user-info-dialog.component.html | 2 +- .../components/filter/filter-user-info-dialog.component.ts | 2 +- .../home/components/filter/filter-user-info.component.html | 2 +- .../home/components/filter/filter-user-info.component.ts | 2 +- .../home/components/filter/filters-dialog.component.html | 2 +- .../home/components/filter/filters-dialog.component.scss | 2 +- .../modules/home/components/filter/filters-dialog.component.ts | 2 +- .../home/components/filter/filters-edit-panel.component.html | 2 +- .../home/components/filter/filters-edit-panel.component.scss | 2 +- .../home/components/filter/filters-edit-panel.component.ts | 2 +- .../modules/home/components/filter/filters-edit.component.html | 2 +- .../modules/home/components/filter/filters-edit.component.scss | 2 +- .../modules/home/components/filter/filters-edit.component.ts | 2 +- .../home/components/filter/key-filter-dialog.component.html | 2 +- .../home/components/filter/key-filter-dialog.component.scss | 2 +- .../home/components/filter/key-filter-dialog.component.ts | 2 +- .../home/components/filter/key-filter-list.component.html | 2 +- .../home/components/filter/key-filter-list.component.scss | 2 +- .../home/components/filter/key-filter-list.component.ts | 2 +- .../components/filter/numeric-filter-predicate.component.html | 2 +- .../components/filter/numeric-filter-predicate.component.ts | 2 +- .../components/filter/string-filter-predicate.component.html | 2 +- .../components/filter/string-filter-predicate.component.ts | 2 +- .../home/components/filter/user-filter-dialog.component.html | 2 +- .../home/components/filter/user-filter-dialog.component.ts | 2 +- .../src/app/modules/home/components/home-components.module.ts | 2 +- .../components/import-export/import-dialog-csv.component.html | 2 +- .../components/import-export/import-dialog-csv.component.scss | 2 +- .../components/import-export/import-dialog-csv.component.ts | 2 +- .../home/components/import-export/import-dialog.component.html | 2 +- .../home/components/import-export/import-dialog.component.ts | 2 +- .../home/components/import-export/import-export.models.ts | 2 +- .../home/components/import-export/import-export.service.ts | 2 +- .../import-export/table-columns-assignment.component.html | 2 +- .../import-export/table-columns-assignment.component.scss | 2 +- .../import-export/table-columns-assignment.component.ts | 2 +- .../profile/add-device-profile-dialog.component.html | 2 +- .../profile/add-device-profile-dialog.component.scss | 2 +- .../components/profile/add-device-profile-dialog.component.ts | 2 +- .../profile/alarm/alarm-rule-condition-dialog.component.html | 2 +- .../profile/alarm/alarm-rule-condition-dialog.component.scss | 2 +- .../profile/alarm/alarm-rule-condition-dialog.component.ts | 2 +- .../profile/alarm/alarm-rule-condition.component.html | 2 +- .../profile/alarm/alarm-rule-condition.component.scss | 2 +- .../components/profile/alarm/alarm-rule-condition.component.ts | 2 +- .../home/components/profile/alarm/alarm-rule.component.html | 2 +- .../home/components/profile/alarm/alarm-rule.component.scss | 2 +- .../home/components/profile/alarm/alarm-rule.component.ts | 2 +- .../profile/alarm/alarm-schedule-dialog.component.html | 2 +- .../profile/alarm/alarm-schedule-dialog.component.ts | 2 +- .../profile/alarm/alarm-schedule-info.component.html | 2 +- .../profile/alarm/alarm-schedule-info.component.scss | 2 +- .../components/profile/alarm/alarm-schedule-info.component.ts | 2 +- .../components/profile/alarm/alarm-schedule.component.html | 2 +- .../components/profile/alarm/alarm-schedule.component.scss | 2 +- .../home/components/profile/alarm/alarm-schedule.component.ts | 2 +- .../components/profile/alarm/create-alarm-rules.component.html | 2 +- .../components/profile/alarm/create-alarm-rules.component.scss | 3 +-- .../components/profile/alarm/create-alarm-rules.component.ts | 2 +- .../profile/alarm/device-profile-alarm.component.html | 2 +- .../profile/alarm/device-profile-alarm.component.scss | 3 +-- .../components/profile/alarm/device-profile-alarm.component.ts | 2 +- .../profile/alarm/device-profile-alarms.component.html | 2 +- .../profile/alarm/device-profile-alarms.component.scss | 2 +- .../profile/alarm/device-profile-alarms.component.ts | 2 +- .../profile/alarm/edit-alarm-details-dialog.component.html | 2 +- .../profile/alarm/edit-alarm-details-dialog.component.ts | 2 +- .../profile/device-profile-autocomplete.component.html | 2 +- .../profile/device-profile-autocomplete.component.ts | 2 +- .../components/profile/device-profile-dialog.component.html | 2 +- .../home/components/profile/device-profile-dialog.component.ts | 2 +- .../device-profile-provision-configuration.component.html | 2 +- .../device-profile-provision-configuration.component.ts | 2 +- .../home/components/profile/device-profile.component.html | 2 +- .../home/components/profile/device-profile.component.ts | 2 +- .../device/default-device-profile-configuration.component.html | 2 +- .../device/default-device-profile-configuration.component.ts | 2 +- ...fault-device-profile-transport-configuration.component.html | 2 +- ...default-device-profile-transport-configuration.component.ts | 2 +- .../profile/device/device-profile-configuration.component.html | 2 +- .../profile/device/device-profile-configuration.component.ts | 2 +- .../device-profile-transport-configuration.component.html | 2 +- .../device/device-profile-transport-configuration.component.ts | 2 +- ...lwm2m-device-profile-transport-configuration.component.html | 2 +- .../lwm2m-device-profile-transport-configuration.component.ts | 2 +- .../mqtt-device-profile-transport-configuration.component.html | 2 +- .../mqtt-device-profile-transport-configuration.component.scss | 2 +- .../mqtt-device-profile-transport-configuration.component.ts | 2 +- .../profile/tenant-profile-autocomplete.component.html | 2 +- .../profile/tenant-profile-autocomplete.component.ts | 2 +- .../home/components/profile/tenant-profile-data.component.html | 2 +- .../home/components/profile/tenant-profile-data.component.ts | 2 +- .../components/profile/tenant-profile-dialog.component.html | 2 +- .../home/components/profile/tenant-profile-dialog.component.ts | 2 +- .../home/components/profile/tenant-profile.component.html | 2 +- .../home/components/profile/tenant-profile.component.scss | 2 +- .../home/components/profile/tenant-profile.component.ts | 2 +- .../tenant/default-tenant-profile-configuration.component.html | 2 +- .../tenant/default-tenant-profile-configuration.component.ts | 2 +- .../profile/tenant/tenant-profile-configuration.component.html | 2 +- .../profile/tenant/tenant-profile-configuration.component.ts | 2 +- ui-ngx/src/app/modules/home/components/public-api.ts | 2 +- .../home/components/relation/relation-dialog.component.html | 2 +- .../home/components/relation/relation-dialog.component.scss | 2 +- .../home/components/relation/relation-dialog.component.ts | 2 +- .../home/components/relation/relation-filters.component.html | 2 +- .../home/components/relation/relation-filters.component.scss | 2 +- .../home/components/relation/relation-filters.component.ts | 2 +- .../home/components/relation/relation-table.component.html | 2 +- .../home/components/relation/relation-table.component.scss | 2 +- .../home/components/relation/relation-table.component.ts | 2 +- .../rule-chain/rule-chain-autocomplete.component.html | 2 +- .../components/rule-chain/rule-chain-autocomplete.component.ts | 2 +- .../modules/home/components/shared-home-components.module.ts | 2 +- .../sms/aws-sns-provider-configuration.component.html | 2 +- .../components/sms/aws-sns-provider-configuration.component.ts | 2 +- .../components/sms/sms-provider-configuration.component.html | 2 +- .../components/sms/sms-provider-configuration.component.ts | 2 +- .../sms/twilio-sms-provider-configuration.component.html | 2 +- .../sms/twilio-sms-provider-configuration.component.ts | 2 +- .../widget/action/custom-action-pretty-editor.component.html | 2 +- .../widget/action/custom-action-pretty-editor.component.scss | 2 +- .../widget/action/custom-action-pretty-editor.component.ts | 2 +- .../action/custom-action-pretty-resources-tabs.component.html | 2 +- .../action/custom-action-pretty-resources-tabs.component.scss | 2 +- .../action/custom-action-pretty-resources-tabs.component.ts | 2 +- .../home/components/widget/action/custom-action.models.ts | 2 +- .../widget/action/manage-widget-actions.component.html | 2 +- .../widget/action/manage-widget-actions.component.models.ts | 2 +- .../widget/action/manage-widget-actions.component.scss | 2 +- .../widget/action/manage-widget-actions.component.ts | 2 +- .../widget/action/widget-action-dialog.component.html | 2 +- .../widget/action/widget-action-dialog.component.scss | 2 +- .../components/widget/action/widget-action-dialog.component.ts | 2 +- .../components/widget/data-key-config-dialog.component.html | 2 +- .../components/widget/data-key-config-dialog.component.scss | 2 +- .../home/components/widget/data-key-config-dialog.component.ts | 2 +- .../home/components/widget/data-key-config.component.html | 2 +- .../home/components/widget/data-key-config.component.scss | 2 +- .../home/components/widget/data-key-config.component.ts | 2 +- .../modules/home/components/widget/data-keys.component.html | 2 +- .../home/components/widget/data-keys.component.models.ts | 2 +- .../modules/home/components/widget/data-keys.component.scss | 2 +- .../app/modules/home/components/widget/data-keys.component.ts | 2 +- .../widget/dialog/custom-dialog-container.component.ts | 2 +- .../home/components/widget/dialog/custom-dialog.component.ts | 2 +- .../home/components/widget/dialog/custom-dialog.service.ts | 2 +- .../modules/home/components/widget/dynamic-widget.component.ts | 2 +- .../home/components/widget/legend-config-panel.component.html | 2 +- .../home/components/widget/legend-config-panel.component.scss | 2 +- .../home/components/widget/legend-config-panel.component.ts | 2 +- .../home/components/widget/legend-config.component.html | 2 +- .../modules/home/components/widget/legend-config.component.ts | 2 +- .../app/modules/home/components/widget/legend.component.html | 2 +- .../app/modules/home/components/widget/legend.component.scss | 2 +- .../src/app/modules/home/components/widget/legend.component.ts | 2 +- .../components/widget/lib/alarm-filter-panel.component.html | 2 +- .../components/widget/lib/alarm-filter-panel.component.scss | 2 +- .../home/components/widget/lib/alarm-filter-panel.component.ts | 2 +- .../components/widget/lib/alarms-table-widget.component.html | 2 +- .../components/widget/lib/alarms-table-widget.component.scss | 2 +- .../components/widget/lib/alarms-table-widget.component.ts | 2 +- .../home/components/widget/lib/analogue-compass.models.ts | 2 +- .../app/modules/home/components/widget/lib/analogue-compass.ts | 2 +- .../home/components/widget/lib/analogue-gauge.models.ts | 2 +- .../home/components/widget/lib/analogue-linear-gauge.models.ts | 2 +- .../home/components/widget/lib/analogue-linear-gauge.ts | 2 +- .../home/components/widget/lib/analogue-radial-gauge.models.ts | 2 +- .../home/components/widget/lib/analogue-radial-gauge.ts | 2 +- .../modules/home/components/widget/lib/canvas-digital-gauge.ts | 2 +- .../date-range-navigator-panel.component.html | 2 +- .../date-range-navigator-panel.component.scss | 2 +- .../date-range-navigator/date-range-navigator.component.html | 2 +- .../date-range-navigator/date-range-navigator.component.scss | 2 +- .../lib/date-range-navigator/date-range-navigator.component.ts | 2 +- .../lib/date-range-navigator/date-range-navigator.models.ts | 2 +- .../modules/home/components/widget/lib/digital-gauge.models.ts | 2 +- .../app/modules/home/components/widget/lib/digital-gauge.ts | 2 +- .../components/widget/lib/display-columns-panel.component.html | 2 +- .../components/widget/lib/display-columns-panel.component.scss | 2 +- .../components/widget/lib/display-columns-panel.component.ts | 2 +- .../widget/lib/entities-hierarchy-widget.component.html | 2 +- .../widget/lib/entities-hierarchy-widget.component.scss | 2 +- .../widget/lib/entities-hierarchy-widget.component.ts | 2 +- .../components/widget/lib/entities-hierarchy-widget.models.ts | 2 +- .../components/widget/lib/entities-table-widget.component.html | 2 +- .../components/widget/lib/entities-table-widget.component.scss | 2 +- .../components/widget/lib/entities-table-widget.component.ts | 2 +- .../modules/home/components/widget/lib/flot-widget.models.ts | 2 +- .../src/app/modules/home/components/widget/lib/flot-widget.ts | 2 +- .../components/widget/lib/gateway/gateway-form.component.html | 2 +- .../components/widget/lib/gateway/gateway-form.component.scss | 2 +- .../components/widget/lib/gateway/gateway-form.component.ts | 2 +- .../home/components/widget/lib/gateway/gateway-form.models.ts | 2 +- .../home/components/widget/lib/maps/common-maps-utils.ts | 2 +- .../app/modules/home/components/widget/lib/maps/leaflet-map.ts | 2 +- .../app/modules/home/components/widget/lib/maps/map-models.ts | 2 +- .../home/components/widget/lib/maps/map-widget.interface.ts | 2 +- .../app/modules/home/components/widget/lib/maps/map-widget2.ts | 2 +- .../app/modules/home/components/widget/lib/maps/maps-utils.ts | 2 +- .../app/modules/home/components/widget/lib/maps/markers.scss | 2 +- .../src/app/modules/home/components/widget/lib/maps/markers.ts | 2 +- .../src/app/modules/home/components/widget/lib/maps/polygon.ts | 2 +- .../app/modules/home/components/widget/lib/maps/polyline.ts | 2 +- .../home/components/widget/lib/maps/providers/google-map.ts | 2 +- .../home/components/widget/lib/maps/providers/here-map.ts | 2 +- .../home/components/widget/lib/maps/providers/image-map.ts | 2 +- .../modules/home/components/widget/lib/maps/providers/index.ts | 2 +- .../components/widget/lib/maps/providers/openstreet-map.ts | 2 +- .../home/components/widget/lib/maps/providers/tencent-map.ts | 2 +- .../src/app/modules/home/components/widget/lib/maps/schemes.ts | 2 +- .../components/widget/lib/multiple-input-widget.component.html | 2 +- .../components/widget/lib/multiple-input-widget.component.scss | 3 +-- .../components/widget/lib/multiple-input-widget.component.ts | 2 +- .../components/widget/lib/photo-camera-input.component.html | 2 +- .../components/widget/lib/photo-camera-input.component.scss | 2 +- .../home/components/widget/lib/photo-camera-input.component.ts | 2 +- .../modules/home/components/widget/lib/rpc/knob.component.html | 2 +- .../modules/home/components/widget/lib/rpc/knob.component.scss | 2 +- .../modules/home/components/widget/lib/rpc/knob.component.ts | 2 +- .../components/widget/lib/rpc/led-indicator.component.html | 2 +- .../components/widget/lib/rpc/led-indicator.component.scss | 2 +- .../home/components/widget/lib/rpc/led-indicator.component.ts | 2 +- .../home/components/widget/lib/rpc/round-switch.component.html | 2 +- .../home/components/widget/lib/rpc/round-switch.component.scss | 2 +- .../home/components/widget/lib/rpc/round-switch.component.ts | 2 +- .../home/components/widget/lib/rpc/rpc-widgets.module.ts | 2 +- .../home/components/widget/lib/rpc/switch.component.html | 2 +- .../home/components/widget/lib/rpc/switch.component.scss | 3 +-- .../modules/home/components/widget/lib/rpc/switch.component.ts | 2 +- .../app/modules/home/components/widget/lib/settings.models.ts | 2 +- .../modules/home/components/widget/lib/table-widget.models.ts | 2 +- .../app/modules/home/components/widget/lib/table-widget.scss | 2 +- .../widget/lib/timeseries-table-widget.component.html | 2 +- .../widget/lib/timeseries-table-widget.component.scss | 2 +- .../components/widget/lib/timeseries-table-widget.component.ts | 2 +- .../widget/trip-animation/trip-animation.component.html | 2 +- .../widget/trip-animation/trip-animation.component.scss | 3 +-- .../widget/trip-animation/trip-animation.component.ts | 2 +- .../modules/home/components/widget/widget-component.service.ts | 2 +- .../modules/home/components/widget/widget-components.module.ts | 2 +- .../home/components/widget/widget-config.component.html | 2 +- .../home/components/widget/widget-config.component.models.ts | 2 +- .../home/components/widget/widget-config.component.scss | 2 +- .../modules/home/components/widget/widget-config.component.ts | 2 +- .../app/modules/home/components/widget/widget.component.html | 2 +- .../app/modules/home/components/widget/widget.component.scss | 2 +- .../src/app/modules/home/components/widget/widget.component.ts | 2 +- .../home/components/wizard/device-wizard-dialog.component.html | 2 +- .../home/components/wizard/device-wizard-dialog.component.scss | 3 +-- .../home/components/wizard/device-wizard-dialog.component.ts | 2 +- .../dialogs/add-entities-to-customer-dialog.component.html | 2 +- .../home/dialogs/add-entities-to-customer-dialog.component.ts | 2 +- .../home/dialogs/assign-to-customer-dialog.component.html | 2 +- .../home/dialogs/assign-to-customer-dialog.component.ts | 2 +- ui-ngx/src/app/modules/home/dialogs/home-dialogs.module.ts | 2 +- ui-ngx/src/app/modules/home/dialogs/home-dialogs.service.ts | 2 +- ui-ngx/src/app/modules/home/home-routing.module.ts | 2 +- ui-ngx/src/app/modules/home/home.component.html | 2 +- ui-ngx/src/app/modules/home/home.component.scss | 2 +- ui-ngx/src/app/modules/home/home.component.ts | 2 +- ui-ngx/src/app/modules/home/home.module.ts | 2 +- ui-ngx/src/app/modules/home/menu/menu-link.component.html | 2 +- ui-ngx/src/app/modules/home/menu/menu-link.component.scss | 2 +- ui-ngx/src/app/modules/home/menu/menu-link.component.ts | 2 +- ui-ngx/src/app/modules/home/menu/menu-toggle.component.html | 2 +- ui-ngx/src/app/modules/home/menu/menu-toggle.component.scss | 2 +- ui-ngx/src/app/modules/home/menu/menu-toggle.component.ts | 2 +- ui-ngx/src/app/modules/home/menu/side-menu.component.html | 2 +- ui-ngx/src/app/modules/home/menu/side-menu.component.scss | 3 +-- ui-ngx/src/app/modules/home/menu/side-menu.component.ts | 2 +- ui-ngx/src/app/modules/home/models/contact.models.ts | 2 +- .../src/app/modules/home/models/dashboard-component.models.ts | 2 +- .../app/modules/home/models/datasource/attribute-datasource.ts | 2 +- .../app/modules/home/models/datasource/entity-datasource.ts | 2 +- .../app/modules/home/models/datasource/relation-datasource.ts | 2 +- .../modules/home/models/entity/entities-table-config.models.ts | 2 +- .../app/modules/home/models/entity/entity-component.models.ts | 2 +- .../src/app/modules/home/models/searchable-component.models.ts | 2 +- ui-ngx/src/app/modules/home/models/services.map.ts | 2 +- ui-ngx/src/app/modules/home/models/widget-component.models.ts | 2 +- .../src/app/modules/home/pages/admin/admin-routing.module.ts | 2 +- ui-ngx/src/app/modules/home/pages/admin/admin.module.ts | 2 +- .../modules/home/pages/admin/general-settings.component.html | 2 +- .../modules/home/pages/admin/general-settings.component.scss | 2 +- .../app/modules/home/pages/admin/general-settings.component.ts | 2 +- .../app/modules/home/pages/admin/mail-server.component.html | 2 +- .../app/modules/home/pages/admin/mail-server.component.scss | 2 +- .../src/app/modules/home/pages/admin/mail-server.component.ts | 2 +- .../modules/home/pages/admin/oauth2-settings.component.html | 2 +- .../modules/home/pages/admin/oauth2-settings.component.scss | 2 +- .../app/modules/home/pages/admin/oauth2-settings.component.ts | 2 +- .../modules/home/pages/admin/security-settings.component.html | 2 +- .../modules/home/pages/admin/security-settings.component.scss | 2 +- .../modules/home/pages/admin/security-settings.component.ts | 2 +- .../home/pages/admin/send-test-sms-dialog.component.html | 2 +- .../modules/home/pages/admin/send-test-sms-dialog.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/admin/settings-card.scss | 2 +- .../app/modules/home/pages/admin/sms-provider.component.html | 2 +- .../app/modules/home/pages/admin/sms-provider.component.scss | 2 +- .../src/app/modules/home/pages/admin/sms-provider.component.ts | 2 +- .../modules/home/pages/api-usage/api-usage-routing.module.ts | 2 +- .../app/modules/home/pages/api-usage/api-usage.component.html | 2 +- .../app/modules/home/pages/api-usage/api-usage.component.scss | 3 +-- .../app/modules/home/pages/api-usage/api-usage.component.ts | 2 +- .../src/app/modules/home/pages/api-usage/api-usage.module.ts | 2 +- .../src/app/modules/home/pages/asset/asset-routing.module.ts | 2 +- .../modules/home/pages/asset/asset-table-header.component.html | 2 +- .../modules/home/pages/asset/asset-table-header.component.scss | 2 +- .../modules/home/pages/asset/asset-table-header.component.ts | 2 +- .../src/app/modules/home/pages/asset/asset-tabs.component.html | 2 +- .../src/app/modules/home/pages/asset/asset-tabs.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/asset/asset.component.html | 2 +- ui-ngx/src/app/modules/home/pages/asset/asset.component.scss | 2 +- ui-ngx/src/app/modules/home/pages/asset/asset.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/asset/asset.module.ts | 2 +- .../modules/home/pages/asset/assets-table-config.resolver.ts | 2 +- .../modules/home/pages/audit-log/audit-log-routing.module.ts | 2 +- .../src/app/modules/home/pages/audit-log/audit-log.module.ts | 2 +- .../app/modules/home/pages/customer/customer-routing.module.ts | 2 +- .../modules/home/pages/customer/customer-tabs.component.html | 2 +- .../app/modules/home/pages/customer/customer-tabs.component.ts | 2 +- .../app/modules/home/pages/customer/customer.component.html | 2 +- .../src/app/modules/home/pages/customer/customer.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/customer/customer.module.ts | 2 +- .../home/pages/customer/customers-table-config.resolver.ts | 2 +- .../home/pages/dashboard/add-widget-dialog.component.html | 2 +- .../home/pages/dashboard/add-widget-dialog.component.ts | 2 +- .../modules/home/pages/dashboard/dashboard-form.component.html | 2 +- .../modules/home/pages/dashboard/dashboard-form.component.scss | 2 +- .../modules/home/pages/dashboard/dashboard-form.component.ts | 2 +- .../modules/home/pages/dashboard/dashboard-page.component.html | 2 +- .../modules/home/pages/dashboard/dashboard-page.component.scss | 2 +- .../modules/home/pages/dashboard/dashboard-page.component.ts | 2 +- .../app/modules/home/pages/dashboard/dashboard-page.models.ts | 2 +- .../modules/home/pages/dashboard/dashboard-routing.module.ts | 2 +- .../pages/dashboard/dashboard-settings-dialog.component.html | 2 +- .../pages/dashboard/dashboard-settings-dialog.component.scss | 2 +- .../pages/dashboard/dashboard-settings-dialog.component.ts | 2 +- .../modules/home/pages/dashboard/dashboard-tabs.component.html | 2 +- .../modules/home/pages/dashboard/dashboard-tabs.component.ts | 2 +- .../home/pages/dashboard/dashboard-toolbar.component.html | 2 +- .../home/pages/dashboard/dashboard-toolbar.component.scss | 2 +- .../home/pages/dashboard/dashboard-toolbar.component.ts | 2 +- .../pages/dashboard/dashboard-widget-select.component.html | 2 +- .../pages/dashboard/dashboard-widget-select.component.scss | 2 +- .../home/pages/dashboard/dashboard-widget-select.component.ts | 2 +- .../src/app/modules/home/pages/dashboard/dashboard.module.ts | 2 +- .../home/pages/dashboard/dashboards-table-config.resolver.ts | 2 +- .../modules/home/pages/dashboard/edit-widget.component.html | 2 +- .../app/modules/home/pages/dashboard/edit-widget.component.ts | 2 +- .../pages/dashboard/layout/dashboard-layout.component.html | 2 +- .../pages/dashboard/layout/dashboard-layout.component.scss | 2 +- .../home/pages/dashboard/layout/dashboard-layout.component.ts | 2 +- .../app/modules/home/pages/dashboard/layout/layout.models.ts | 2 +- .../layout/manage-dashboard-layouts-dialog.component.html | 2 +- .../layout/manage-dashboard-layouts-dialog.component.ts | 2 +- .../dashboard/make-dashboard-public-dialog.component.html | 2 +- .../pages/dashboard/make-dashboard-public-dialog.component.ts | 2 +- .../dashboard/manage-dashboard-customers-dialog.component.html | 2 +- .../dashboard/manage-dashboard-customers-dialog.component.ts | 2 +- .../dashboard/states/dashboard-state-dialog.component.html | 2 +- .../pages/dashboard/states/dashboard-state-dialog.component.ts | 2 +- .../dashboard/states/default-state-controller.component.html | 2 +- .../dashboard/states/default-state-controller.component.scss | 2 +- .../dashboard/states/default-state-controller.component.ts | 2 +- .../dashboard/states/entity-state-controller.component.html | 2 +- .../dashboard/states/entity-state-controller.component.scss | 2 +- .../dashboard/states/entity-state-controller.component.ts | 2 +- .../states/manage-dashboard-states-dialog.component.html | 2 +- .../states/manage-dashboard-states-dialog.component.models.ts | 2 +- .../states/manage-dashboard-states-dialog.component.scss | 2 +- .../states/manage-dashboard-states-dialog.component.ts | 2 +- .../home/pages/dashboard/states/state-controller.component.ts | 2 +- .../home/pages/dashboard/states/state-controller.models.ts | 2 +- .../home/pages/dashboard/states/states-component.directive.ts | 2 +- .../home/pages/dashboard/states/states-controller.module.ts | 2 +- .../home/pages/dashboard/states/states-controller.service.ts | 2 +- .../home/pages/device-profile/device-profile-routing.module.ts | 2 +- .../pages/device-profile/device-profile-tabs.component.html | 2 +- .../home/pages/device-profile/device-profile-tabs.component.ts | 2 +- .../modules/home/pages/device-profile/device-profile.module.ts | 2 +- .../device-profile/device-profiles-table-config.resolver.ts | 2 +- .../device/data/default-device-configuration.component.html | 2 +- .../device/data/default-device-configuration.component.ts | 2 +- .../data/default-device-transport-configuration.component.html | 2 +- .../data/default-device-transport-configuration.component.ts | 2 +- .../home/pages/device/data/device-configuration.component.html | 2 +- .../home/pages/device/data/device-configuration.component.ts | 2 +- .../modules/home/pages/device/data/device-data.component.html | 2 +- .../modules/home/pages/device/data/device-data.component.ts | 2 +- .../device/data/device-transport-configuration.component.html | 2 +- .../device/data/device-transport-configuration.component.ts | 2 +- .../data/lwm2m-device-transport-configuration.component.html | 2 +- .../data/lwm2m-device-transport-configuration.component.ts | 2 +- .../data/mqtt-device-transport-configuration.component.html | 2 +- .../data/mqtt-device-transport-configuration.component.ts | 2 +- .../home/pages/device/device-credentials-dialog.component.html | 2 +- .../home/pages/device/device-credentials-dialog.component.ts | 2 +- .../src/app/modules/home/pages/device/device-routing.module.ts | 2 +- .../home/pages/device/device-table-header.component.html | 2 +- .../home/pages/device/device-table-header.component.scss | 2 +- .../modules/home/pages/device/device-table-header.component.ts | 2 +- .../app/modules/home/pages/device/device-tabs.component.html | 2 +- .../src/app/modules/home/pages/device/device-tabs.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/device/device.component.html | 2 +- ui-ngx/src/app/modules/home/pages/device/device.component.scss | 2 +- ui-ngx/src/app/modules/home/pages/device/device.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/device/device.module.ts | 2 +- .../modules/home/pages/device/devices-table-config.resolver.ts | 2 +- .../home/pages/entity-view/entity-view-routing.module.ts | 2 +- .../pages/entity-view/entity-view-table-header.component.html | 2 +- .../pages/entity-view/entity-view-table-header.component.scss | 2 +- .../pages/entity-view/entity-view-table-header.component.ts | 2 +- .../home/pages/entity-view/entity-view-tabs.component.html | 2 +- .../home/pages/entity-view/entity-view-tabs.component.ts | 2 +- .../modules/home/pages/entity-view/entity-view.component.html | 2 +- .../modules/home/pages/entity-view/entity-view.component.scss | 2 +- .../modules/home/pages/entity-view/entity-view.component.ts | 2 +- .../app/modules/home/pages/entity-view/entity-view.module.ts | 2 +- .../pages/entity-view/entity-views-table-config.resolver.ts | 2 +- .../modules/home/pages/home-links/home-links-routing.module.ts | 2 +- .../modules/home/pages/home-links/home-links.component.html | 2 +- .../modules/home/pages/home-links/home-links.component.scss | 2 +- .../app/modules/home/pages/home-links/home-links.component.ts | 2 +- .../src/app/modules/home/pages/home-links/home-links.module.ts | 2 +- ui-ngx/src/app/modules/home/pages/home-pages.module.ts | 2 +- .../home/pages/profile/change-password-dialog.component.html | 2 +- .../home/pages/profile/change-password-dialog.component.scss | 2 +- .../home/pages/profile/change-password-dialog.component.ts | 2 +- .../app/modules/home/pages/profile/profile-routing.module.ts | 2 +- .../src/app/modules/home/pages/profile/profile.component.html | 2 +- .../src/app/modules/home/pages/profile/profile.component.scss | 2 +- ui-ngx/src/app/modules/home/pages/profile/profile.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/profile/profile.module.ts | 2 +- ui-ngx/src/app/modules/home/pages/public-api.ts | 2 +- .../home/pages/rulechain/add-rule-node-dialog.component.html | 2 +- .../pages/rulechain/add-rule-node-link-dialog.component.html | 2 +- .../pages/rulechain/add-rule-node-link-dialog.component.scss | 2 +- .../modules/home/pages/rulechain/link-labels.component.html | 2 +- .../app/modules/home/pages/rulechain/link-labels.component.ts | 2 +- .../src/app/modules/home/pages/rulechain/rule-node-colors.scss | 2 +- .../home/pages/rulechain/rule-node-config.component.html | 2 +- .../home/pages/rulechain/rule-node-config.component.scss | 2 +- .../modules/home/pages/rulechain/rule-node-config.component.ts | 2 +- .../home/pages/rulechain/rule-node-details.component.html | 2 +- .../home/pages/rulechain/rule-node-details.component.scss | 2 +- .../home/pages/rulechain/rule-node-details.component.ts | 2 +- .../modules/home/pages/rulechain/rule-node-link.component.html | 2 +- .../modules/home/pages/rulechain/rule-node-link.component.ts | 2 +- .../modules/home/pages/rulechain/rulechain-page.component.html | 2 +- .../modules/home/pages/rulechain/rulechain-page.component.scss | 2 +- .../modules/home/pages/rulechain/rulechain-page.component.ts | 2 +- .../app/modules/home/pages/rulechain/rulechain-page.models.ts | 2 +- .../modules/home/pages/rulechain/rulechain-routing.module.ts | 2 +- .../modules/home/pages/rulechain/rulechain-tabs.component.html | 2 +- .../modules/home/pages/rulechain/rulechain-tabs.component.ts | 2 +- .../app/modules/home/pages/rulechain/rulechain.component.html | 2 +- .../app/modules/home/pages/rulechain/rulechain.component.scss | 2 +- .../app/modules/home/pages/rulechain/rulechain.component.ts | 2 +- .../src/app/modules/home/pages/rulechain/rulechain.module.ts | 2 +- .../home/pages/rulechain/rulechains-table-config.resolver.ts | 2 +- .../app/modules/home/pages/rulechain/rulenode.component.html | 2 +- .../app/modules/home/pages/rulechain/rulenode.component.scss | 2 +- .../src/app/modules/home/pages/rulechain/rulenode.component.ts | 2 +- .../home/pages/tenant-profile/tenant-profile-routing.module.ts | 2 +- .../pages/tenant-profile/tenant-profile-tabs.component.html | 2 +- .../home/pages/tenant-profile/tenant-profile-tabs.component.ts | 2 +- .../modules/home/pages/tenant-profile/tenant-profile.module.ts | 2 +- .../tenant-profile/tenant-profiles-table-config.resolver.ts | 2 +- .../src/app/modules/home/pages/tenant/tenant-routing.module.ts | 2 +- .../app/modules/home/pages/tenant/tenant-tabs.component.html | 2 +- .../src/app/modules/home/pages/tenant/tenant-tabs.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/tenant/tenant.component.html | 2 +- ui-ngx/src/app/modules/home/pages/tenant/tenant.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/tenant/tenant.module.ts | 2 +- .../modules/home/pages/tenant/tenants-table-config.resolver.ts | 2 +- .../home/pages/user/activation-link-dialog.component.html | 2 +- .../home/pages/user/activation-link-dialog.component.ts | 2 +- .../app/modules/home/pages/user/add-user-dialog.component.html | 2 +- .../app/modules/home/pages/user/add-user-dialog.component.scss | 3 +-- .../app/modules/home/pages/user/add-user-dialog.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/user/user-routing.module.ts | 2 +- .../src/app/modules/home/pages/user/user-tabs.component.html | 2 +- ui-ngx/src/app/modules/home/pages/user/user-tabs.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/user/user.component.html | 2 +- ui-ngx/src/app/modules/home/pages/user/user.component.scss | 2 +- ui-ngx/src/app/modules/home/pages/user/user.component.ts | 2 +- ui-ngx/src/app/modules/home/pages/user/user.module.ts | 2 +- .../app/modules/home/pages/user/users-table-config.resolver.ts | 2 +- .../pages/widget/save-widget-type-as-dialog.component.html | 2 +- .../home/pages/widget/save-widget-type-as-dialog.component.ts | 2 +- .../home/pages/widget/select-widget-type-dialog.component.html | 2 +- .../home/pages/widget/select-widget-type-dialog.component.scss | 2 +- .../home/pages/widget/select-widget-type-dialog.component.ts | 2 +- .../app/modules/home/pages/widget/widget-editor.component.html | 2 +- .../app/modules/home/pages/widget/widget-editor.component.scss | 2 +- .../app/modules/home/pages/widget/widget-editor.component.ts | 2 +- .../src/app/modules/home/pages/widget/widget-editor.models.ts | 2 +- .../modules/home/pages/widget/widget-library-routing.module.ts | 2 +- .../modules/home/pages/widget/widget-library.component.html | 2 +- .../modules/home/pages/widget/widget-library.component.scss | 2 +- .../app/modules/home/pages/widget/widget-library.component.ts | 2 +- .../src/app/modules/home/pages/widget/widget-library.module.ts | 2 +- .../modules/home/pages/widget/widgets-bundle.component.html | 2 +- .../modules/home/pages/widget/widgets-bundle.component.scss | 2 +- .../app/modules/home/pages/widget/widgets-bundle.component.ts | 2 +- .../home/pages/widget/widgets-bundles-table-config.resolver.ts | 2 +- ui-ngx/src/app/modules/home/public-api.ts | 2 +- ui-ngx/src/app/modules/login/login-routing.module.ts | 2 +- ui-ngx/src/app/modules/login/login.module.ts | 2 +- .../modules/login/pages/login/create-password.component.html | 2 +- .../modules/login/pages/login/create-password.component.scss | 2 +- .../app/modules/login/pages/login/create-password.component.ts | 2 +- ui-ngx/src/app/modules/login/pages/login/login.component.html | 2 +- ui-ngx/src/app/modules/login/pages/login/login.component.scss | 2 +- ui-ngx/src/app/modules/login/pages/login/login.component.ts | 2 +- .../login/pages/login/reset-password-request.component.html | 2 +- .../login/pages/login/reset-password-request.component.scss | 2 +- .../login/pages/login/reset-password-request.component.ts | 2 +- .../modules/login/pages/login/reset-password.component.html | 2 +- .../modules/login/pages/login/reset-password.component.scss | 2 +- .../app/modules/login/pages/login/reset-password.component.ts | 2 +- ui-ngx/src/app/shared/animations/speed-dial-fab.animations.ts | 2 +- ui-ngx/src/app/shared/components/breadcrumb.component.html | 2 +- ui-ngx/src/app/shared/components/breadcrumb.component.scss | 2 +- ui-ngx/src/app/shared/components/breadcrumb.component.ts | 2 +- ui-ngx/src/app/shared/components/breadcrumb.ts | 2 +- ui-ngx/src/app/shared/components/cheatsheet.component.ts | 2 +- .../src/app/shared/components/circular-progress.directive.ts | 2 +- ui-ngx/src/app/shared/components/color-input.component.html | 2 +- ui-ngx/src/app/shared/components/color-input.component.scss | 2 +- ui-ngx/src/app/shared/components/color-input.component.ts | 2 +- ui-ngx/src/app/shared/components/contact.component.html | 2 +- ui-ngx/src/app/shared/components/contact.component.ts | 2 +- .../shared/components/dashboard-autocomplete.component.html | 2 +- .../app/shared/components/dashboard-autocomplete.component.ts | 2 +- .../shared/components/dashboard-select-panel.component.html | 2 +- .../shared/components/dashboard-select-panel.component.scss | 2 +- .../app/shared/components/dashboard-select-panel.component.ts | 2 +- .../src/app/shared/components/dashboard-select.component.html | 2 +- .../src/app/shared/components/dashboard-select.component.scss | 2 +- ui-ngx/src/app/shared/components/dashboard-select.component.ts | 2 +- ui-ngx/src/app/shared/components/dialog.component.ts | 2 +- .../app/shared/components/dialog/alert-dialog.component.html | 2 +- .../app/shared/components/dialog/alert-dialog.component.scss | 2 +- .../src/app/shared/components/dialog/alert-dialog.component.ts | 2 +- .../components/dialog/color-picker-dialog.component.html | 2 +- .../shared/components/dialog/color-picker-dialog.component.ts | 2 +- .../app/shared/components/dialog/confirm-dialog.component.html | 2 +- .../app/shared/components/dialog/confirm-dialog.component.scss | 2 +- .../app/shared/components/dialog/confirm-dialog.component.ts | 2 +- .../components/dialog/json-object-edit-dialog.component.html | 2 +- .../components/dialog/json-object-edit-dialog.component.ts | 2 +- .../components/dialog/material-icons-dialog.component.html | 2 +- .../components/dialog/material-icons-dialog.component.scss | 2 +- .../components/dialog/material-icons-dialog.component.ts | 2 +- .../components/dialog/node-script-test-dialog.component.html | 2 +- .../components/dialog/node-script-test-dialog.component.scss | 2 +- .../components/dialog/node-script-test-dialog.component.ts | 2 +- .../app/shared/components/dialog/todo-dialog.component.html | 2 +- .../app/shared/components/dialog/todo-dialog.component.scss | 2 +- .../src/app/shared/components/dialog/todo-dialog.component.ts | 2 +- .../components/directives/tb-json-to-string.directive.ts | 2 +- .../components/entity/entity-autocomplete.component.html | 2 +- .../components/entity/entity-autocomplete.component.scss | 2 +- .../shared/components/entity/entity-autocomplete.component.ts | 2 +- .../components/entity/entity-gateway-select.component.html | 2 +- .../components/entity/entity-gateway-select.component.ts | 2 +- .../shared/components/entity/entity-keys-list.component.html | 2 +- .../shared/components/entity/entity-keys-list.component.scss | 2 +- .../app/shared/components/entity/entity-keys-list.component.ts | 2 +- .../shared/components/entity/entity-list-select.component.html | 2 +- .../shared/components/entity/entity-list-select.component.scss | 2 +- .../shared/components/entity/entity-list-select.component.ts | 2 +- .../app/shared/components/entity/entity-list.component.html | 2 +- .../app/shared/components/entity/entity-list.component.scss | 2 +- .../src/app/shared/components/entity/entity-list.component.ts | 2 +- .../app/shared/components/entity/entity-select.component.html | 2 +- .../app/shared/components/entity/entity-select.component.scss | 2 +- .../app/shared/components/entity/entity-select.component.ts | 2 +- .../entity/entity-subtype-autocomplete.component.html | 2 +- .../components/entity/entity-subtype-autocomplete.component.ts | 2 +- .../components/entity/entity-subtype-list.component.html | 2 +- .../components/entity/entity-subtype-list.component.scss | 2 +- .../shared/components/entity/entity-subtype-list.component.ts | 2 +- .../components/entity/entity-subtype-select.component.html | 2 +- .../components/entity/entity-subtype-select.component.scss | 2 +- .../components/entity/entity-subtype-select.component.ts | 2 +- .../shared/components/entity/entity-type-list.component.html | 2 +- .../app/shared/components/entity/entity-type-list.component.ts | 2 +- .../shared/components/entity/entity-type-select.component.html | 2 +- .../shared/components/entity/entity-type-select.component.scss | 2 +- .../shared/components/entity/entity-type-select.component.ts | 2 +- ui-ngx/src/app/shared/components/fab-toolbar.component.html | 2 +- ui-ngx/src/app/shared/components/fab-toolbar.component.scss | 2 +- ui-ngx/src/app/shared/components/fab-toolbar.component.ts | 2 +- ui-ngx/src/app/shared/components/file-input.component.html | 2 +- ui-ngx/src/app/shared/components/file-input.component.scss | 2 +- ui-ngx/src/app/shared/components/file-input.component.ts | 2 +- .../app/shared/components/footer-fab-buttons.component.html | 2 +- .../app/shared/components/footer-fab-buttons.component.scss | 2 +- .../src/app/shared/components/footer-fab-buttons.component.ts | 2 +- ui-ngx/src/app/shared/components/footer.component.html | 2 +- ui-ngx/src/app/shared/components/footer.component.scss | 2 +- ui-ngx/src/app/shared/components/footer.component.ts | 2 +- ui-ngx/src/app/shared/components/fullscreen.directive.ts | 2 +- ui-ngx/src/app/shared/components/help.component.html | 2 +- ui-ngx/src/app/shared/components/help.component.ts | 2 +- ui-ngx/src/app/shared/components/hotkeys.directive.ts | 2 +- ui-ngx/src/app/shared/components/image-input.component.html | 2 +- ui-ngx/src/app/shared/components/image-input.component.scss | 2 +- ui-ngx/src/app/shared/components/image-input.component.ts | 2 +- ui-ngx/src/app/shared/components/js-func.component.html | 2 +- ui-ngx/src/app/shared/components/js-func.component.scss | 2 +- ui-ngx/src/app/shared/components/js-func.component.ts | 2 +- ui-ngx/src/app/shared/components/json-content.component.html | 2 +- ui-ngx/src/app/shared/components/json-content.component.scss | 2 +- ui-ngx/src/app/shared/components/json-content.component.ts | 2 +- .../shared/components/json-form/json-form-component.models.ts | 2 +- .../app/shared/components/json-form/json-form.component.html | 2 +- .../app/shared/components/json-form/json-form.component.scss | 2 +- .../src/app/shared/components/json-form/json-form.component.ts | 2 +- .../shared/components/json-form/react/json-form-ace-editor.tsx | 2 +- .../app/shared/components/json-form/react/json-form-array.tsx | 2 +- .../components/json-form/react/json-form-base-component.tsx | 2 +- .../shared/components/json-form/react/json-form-checkbox.tsx | 2 +- .../app/shared/components/json-form/react/json-form-color.tsx | 2 +- .../app/shared/components/json-form/react/json-form-css.tsx | 2 +- .../app/shared/components/json-form/react/json-form-date.tsx | 2 +- .../shared/components/json-form/react/json-form-fieldset.tsx | 2 +- .../app/shared/components/json-form/react/json-form-help.tsx | 2 +- .../app/shared/components/json-form/react/json-form-html.tsx | 2 +- .../app/shared/components/json-form/react/json-form-icon.tsx | 2 +- .../app/shared/components/json-form/react/json-form-image.tsx | 2 +- .../shared/components/json-form/react/json-form-javascript.tsx | 2 +- .../app/shared/components/json-form/react/json-form-json.tsx | 2 +- .../app/shared/components/json-form/react/json-form-number.tsx | 2 +- .../app/shared/components/json-form/react/json-form-radios.tsx | 2 +- .../shared/components/json-form/react/json-form-rc-select.tsx | 2 +- .../app/shared/components/json-form/react/json-form-react.tsx | 2 +- .../components/json-form/react/json-form-schema-form.tsx | 2 +- .../app/shared/components/json-form/react/json-form-select.tsx | 2 +- .../app/shared/components/json-form/react/json-form-text.tsx | 2 +- .../app/shared/components/json-form/react/json-form-utils.ts | 2 +- .../app/shared/components/json-form/react/json-form.models.ts | 2 +- .../src/app/shared/components/json-form/react/json-form.scss | 2 +- .../components/json-form/react/styles/thingsboardTheme.ts | 2 +- .../src/app/shared/components/json-object-edit.component.html | 2 +- .../src/app/shared/components/json-object-edit.component.scss | 2 +- ui-ngx/src/app/shared/components/json-object-edit.component.ts | 2 +- ui-ngx/src/app/shared/components/kv-map.component.html | 2 +- ui-ngx/src/app/shared/components/kv-map.component.scss | 2 +- ui-ngx/src/app/shared/components/kv-map.component.ts | 2 +- ui-ngx/src/app/shared/components/led-light.component.html | 2 +- ui-ngx/src/app/shared/components/led-light.component.ts | 2 +- ui-ngx/src/app/shared/components/logo.component.html | 2 +- ui-ngx/src/app/shared/components/logo.component.scss | 2 +- ui-ngx/src/app/shared/components/logo.component.ts | 2 +- .../src/app/shared/components/mat-chip-draggable.directive.ts | 2 +- .../app/shared/components/material-icon-select.component.html | 2 +- .../app/shared/components/material-icon-select.component.scss | 2 +- .../app/shared/components/material-icon-select.component.ts | 2 +- .../shared/components/message-type-autocomplete.component.html | 2 +- .../shared/components/message-type-autocomplete.component.ts | 2 +- ui-ngx/src/app/shared/components/nav-tree.component.html | 2 +- ui-ngx/src/app/shared/components/nav-tree.component.scss | 2 +- ui-ngx/src/app/shared/components/nav-tree.component.ts | 2 +- ui-ngx/src/app/shared/components/page.component.ts | 2 +- ui-ngx/src/app/shared/components/public-api.ts | 2 +- .../app/shared/components/queue/queue-type-list.component.html | 2 +- .../app/shared/components/queue/queue-type-list.component.ts | 2 +- .../relation/relation-type-autocomplete.component.html | 2 +- .../relation/relation-type-autocomplete.component.ts | 2 +- ui-ngx/src/app/shared/components/snack-bar-component.html | 2 +- ui-ngx/src/app/shared/components/snack-bar-component.scss | 2 +- .../src/app/shared/components/socialshare-panel.component.html | 2 +- .../src/app/shared/components/socialshare-panel.component.scss | 2 +- .../src/app/shared/components/socialshare-panel.component.ts | 2 +- ui-ngx/src/app/shared/components/tb-anchor.component.ts | 2 +- ui-ngx/src/app/shared/components/tb-checkbox.component.html | 2 +- ui-ngx/src/app/shared/components/tb-checkbox.component.ts | 2 +- ui-ngx/src/app/shared/components/tb-error.component.ts | 2 +- .../app/shared/components/time/datetime-period.component.html | 2 +- .../app/shared/components/time/datetime-period.component.scss | 2 +- .../app/shared/components/time/datetime-period.component.ts | 2 +- ui-ngx/src/app/shared/components/time/datetime.component.html | 2 +- ui-ngx/src/app/shared/components/time/datetime.component.scss | 2 +- ui-ngx/src/app/shared/components/time/datetime.component.ts | 2 +- .../time/history-selector/history-selector.component.html | 2 +- .../time/history-selector/history-selector.component.scss | 3 +-- .../time/history-selector/history-selector.component.ts | 2 +- .../src/app/shared/components/time/timeinterval.component.html | 2 +- .../src/app/shared/components/time/timeinterval.component.scss | 2 +- .../src/app/shared/components/time/timeinterval.component.ts | 2 +- .../app/shared/components/time/timewindow-panel.component.html | 2 +- .../app/shared/components/time/timewindow-panel.component.scss | 2 +- .../app/shared/components/time/timewindow-panel.component.ts | 2 +- .../src/app/shared/components/time/timewindow.component.html | 2 +- .../src/app/shared/components/time/timewindow.component.scss | 2 +- ui-ngx/src/app/shared/components/time/timewindow.component.ts | 2 +- .../app/shared/components/time/timezone-select.component.html | 2 +- .../app/shared/components/time/timezone-select.component.ts | 2 +- ui-ngx/src/app/shared/components/toast.directive.ts | 2 +- ui-ngx/src/app/shared/components/user-menu.component.html | 2 +- ui-ngx/src/app/shared/components/user-menu.component.scss | 2 +- ui-ngx/src/app/shared/components/user-menu.component.ts | 2 +- ui-ngx/src/app/shared/components/value-input.component.html | 2 +- ui-ngx/src/app/shared/components/value-input.component.scss | 2 +- ui-ngx/src/app/shared/components/value-input.component.ts | 2 +- .../app/shared/components/widgets-bundle-select.component.html | 2 +- .../app/shared/components/widgets-bundle-select.component.scss | 2 +- .../app/shared/components/widgets-bundle-select.component.ts | 2 +- ui-ngx/src/app/shared/decorators/enumerable.ts | 2 +- ui-ngx/src/app/shared/models/ace/ace.models.ts | 2 +- ui-ngx/src/app/shared/models/ace/completion.models.ts | 2 +- ui-ngx/src/app/shared/models/ace/service-completion.models.ts | 2 +- ui-ngx/src/app/shared/models/ace/widget-completion.models.ts | 2 +- ui-ngx/src/app/shared/models/alarm.models.ts | 2 +- ui-ngx/src/app/shared/models/alias.models.ts | 2 +- ui-ngx/src/app/shared/models/asset.models.ts | 2 +- ui-ngx/src/app/shared/models/audit-log.models.ts | 2 +- ui-ngx/src/app/shared/models/authority.enum.ts | 2 +- ui-ngx/src/app/shared/models/base-data.ts | 2 +- ui-ngx/src/app/shared/models/beautify.models.ts | 2 +- ui-ngx/src/app/shared/models/component-descriptor.models.ts | 2 +- ui-ngx/src/app/shared/models/constants.ts | 2 +- ui-ngx/src/app/shared/models/contact-based.model.ts | 2 +- ui-ngx/src/app/shared/models/customer.model.ts | 2 +- ui-ngx/src/app/shared/models/dashboard.models.ts | 2 +- ui-ngx/src/app/shared/models/device.models.ts | 2 +- ui-ngx/src/app/shared/models/entity-type.models.ts | 2 +- ui-ngx/src/app/shared/models/entity-view.models.ts | 2 +- ui-ngx/src/app/shared/models/entity.models.ts | 2 +- ui-ngx/src/app/shared/models/error.models.ts | 2 +- ui-ngx/src/app/shared/models/event.models.ts | 2 +- ui-ngx/src/app/shared/models/id/alarm-id.ts | 2 +- ui-ngx/src/app/shared/models/id/asset-id.ts | 2 +- ui-ngx/src/app/shared/models/id/audit-log-id.ts | 2 +- ui-ngx/src/app/shared/models/id/customer-id.ts | 2 +- ui-ngx/src/app/shared/models/id/dashboard-id.ts | 2 +- ui-ngx/src/app/shared/models/id/device-credentials-id.ts | 2 +- ui-ngx/src/app/shared/models/id/device-id.ts | 2 +- ui-ngx/src/app/shared/models/id/device-profile-id.ts | 2 +- ui-ngx/src/app/shared/models/id/entity-id.ts | 2 +- ui-ngx/src/app/shared/models/id/entity-view-id.ts | 2 +- ui-ngx/src/app/shared/models/id/event-id.ts | 2 +- ui-ngx/src/app/shared/models/id/has-uuid.ts | 2 +- ui-ngx/src/app/shared/models/id/public-api.ts | 2 +- ui-ngx/src/app/shared/models/id/rule-chain-id.ts | 2 +- ui-ngx/src/app/shared/models/id/rule-node-id.ts | 2 +- ui-ngx/src/app/shared/models/id/tenant-id.ts | 2 +- ui-ngx/src/app/shared/models/id/tenant-profile-id.ts | 2 +- ui-ngx/src/app/shared/models/id/user-id.ts | 2 +- ui-ngx/src/app/shared/models/id/widget-type-id.ts | 2 +- ui-ngx/src/app/shared/models/id/widgets-bundle-id.ts | 2 +- ui-ngx/src/app/shared/models/login.models.ts | 2 +- ui-ngx/src/app/shared/models/material.models.ts | 2 +- ui-ngx/src/app/shared/models/oauth2.models.ts | 2 +- ui-ngx/src/app/shared/models/page/page-data.ts | 2 +- ui-ngx/src/app/shared/models/page/page-link.ts | 2 +- ui-ngx/src/app/shared/models/page/public-api.ts | 2 +- ui-ngx/src/app/shared/models/page/sort-order.ts | 2 +- ui-ngx/src/app/shared/models/public-api.ts | 2 +- ui-ngx/src/app/shared/models/query/query.models.ts | 2 +- ui-ngx/src/app/shared/models/queue.models.ts | 2 +- ui-ngx/src/app/shared/models/relation.models.ts | 2 +- ui-ngx/src/app/shared/models/rule-chain.models.ts | 2 +- ui-ngx/src/app/shared/models/rule-node.models.ts | 2 +- ui-ngx/src/app/shared/models/settings.models.ts | 2 +- ui-ngx/src/app/shared/models/telemetry/telemetry.models.ts | 2 +- ui-ngx/src/app/shared/models/tenant.model.ts | 2 +- ui-ngx/src/app/shared/models/time/time.models.ts | 2 +- ui-ngx/src/app/shared/models/user.model.ts | 2 +- ui-ngx/src/app/shared/models/widget.models.ts | 2 +- ui-ngx/src/app/shared/models/widgets-bundle.model.ts | 2 +- ui-ngx/src/app/shared/models/window-message.model.ts | 2 +- ui-ngx/src/app/shared/pipe/enum-to-array.pipe.ts | 2 +- ui-ngx/src/app/shared/pipe/highlight.pipe.ts | 2 +- ui-ngx/src/app/shared/pipe/keyboard-shortcut.pipe.ts | 2 +- ui-ngx/src/app/shared/pipe/milliseconds-to-time-string.pipe.ts | 2 +- ui-ngx/src/app/shared/pipe/nospace.pipe.ts | 2 +- ui-ngx/src/app/shared/pipe/public-api.ts | 2 +- ui-ngx/src/app/shared/pipe/tbJson.pipe.ts | 2 +- ui-ngx/src/app/shared/pipe/truncate.pipe.ts | 2 +- ui-ngx/src/app/shared/public-api.ts | 2 +- ui-ngx/src/app/shared/shared.module.ts | 2 +- ui-ngx/src/environments/environment.prod.ts | 2 +- ui-ngx/src/environments/environment.ts | 2 +- ui-ngx/src/index.html | 2 +- ui-ngx/src/karma.conf.js | 2 +- ui-ngx/src/main.ts | 2 +- ui-ngx/src/polyfills.ts | 2 +- ui-ngx/src/scss/animations.scss | 2 +- ui-ngx/src/scss/constants.scss | 2 +- ui-ngx/src/scss/fonts.scss | 2 +- ui-ngx/src/scss/mixins.scss | 2 +- ui-ngx/src/styles.scss | 2 +- ui-ngx/src/test.ts | 2 +- ui-ngx/src/theme.scss | 2 +- ui-ngx/src/typings/add-marker.d.ts | 2 +- ui-ngx/src/typings/jquery.flot.typings.d.ts | 2 +- ui-ngx/src/typings/jquery.jstree.typings.d.ts | 2 +- ui-ngx/src/typings/jquery.typings.d.ts | 2 +- ui-ngx/src/typings/leadflet-editable.d.ts | 2 +- ui-ngx/src/typings/rawloader.typings.d.ts | 2 +- ui-ngx/src/typings/split.js.typings.d.ts | 2 +- ui-ngx/src/zone-flags.ts | 2 +- 2865 files changed, 2865 insertions(+), 2884 deletions(-) diff --git a/application/pom.xml b/application/pom.xml index 8a12fe05bb..c1a49b09e3 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -1,6 +1,6 @@ -
diff --git a/ui-ngx/src/app/modules/home/components/filter/filter-predicate.component.ts b/ui-ngx/src/app/modules/home/components/filter/filter-predicate.component.ts index 43933270c2..b9e3246f7c 100644 --- a/ui-ngx/src/app/modules/home/components/filter/filter-predicate.component.ts +++ b/ui-ngx/src/app/modules/home/components/filter/filter-predicate.component.ts @@ -1,5 +1,5 @@ /// -/// Copyright © 2016-2020 The Thingsboard Authors +/// Copyright © 2016-2021 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. diff --git a/ui-ngx/src/app/modules/home/components/filter/filter-predicate.scss b/ui-ngx/src/app/modules/home/components/filter/filter-predicate.scss index 4b1b99f933..e88454b8b3 100644 --- a/ui-ngx/src/app/modules/home/components/filter/filter-predicate.scss +++ b/ui-ngx/src/app/modules/home/components/filter/filter-predicate.scss @@ -1,5 +1,5 @@ /** - * Copyright © 2016-2020 The Thingsboard Authors + * Copyright © 2016-2021 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. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - :host { .tb-hint { padding-bottom: 0; diff --git a/ui-ngx/src/app/modules/home/components/filter/filter-select.component.html b/ui-ngx/src/app/modules/home/components/filter/filter-select.component.html index 65249441ed..6821134cd5 100644 --- a/ui-ngx/src/app/modules/home/components/filter/filter-select.component.html +++ b/ui-ngx/src/app/modules/home/components/filter/filter-select.component.html @@ -1,6 +1,6 @@