Commit 2c4fcb153bb34b4bf9dd9af78b7efff23db2fbdd
Committed by
xp.Huang
1 parent
8e1ac2d6
feat: 支持中英文国际化
Showing
86 changed files
with
2632 additions
and
1121 deletions
Too many changes to show.
To preserve performance only 86 of 911 files are displayed.
1 | -import { DeviceProfileModel } from '../../device/model/deviceModel'; | |
2 | 1 | import { DeviceAttributeItemType, HistoryData } from './model'; |
3 | 2 | import { defHttp } from '/@/utils/http/axios'; |
4 | -import { isString } from '/@/utils/is'; | |
5 | 3 | import { OrderByEnum } from '/@/views/device/localtion/cpns/TimePeriodForm/config'; |
6 | 4 | |
7 | -// 获取设备配置,很多地方使用,不能修改这里 | |
8 | -export const getDeviceProfile = (deviceType?: string, isSceneLinkage?: Boolean) => { | |
9 | - return defHttp.get<DeviceProfileModel[]>({ | |
10 | - url: '/device_profile/me/list', | |
11 | - params: { | |
12 | - deviceType: isString(deviceType) ? deviceType : undefined, | |
13 | - isSceneLinkage: isSceneLinkage ? isSceneLinkage : undefined, | |
14 | - }, | |
15 | - }); | |
16 | -}; | |
17 | - | |
18 | 5 | // 获取历史数据 |
19 | 6 | export const getDeviceHistoryInfo = (params: Recordable, orderBy = OrderByEnum.DESC) => { |
20 | 7 | return defHttp.get<HistoryData>( |
... | ... | @@ -64,14 +51,3 @@ export const getDeviceAttribute = (entityId: string) => { |
64 | 51 | } |
65 | 52 | ); |
66 | 53 | }; |
67 | - | |
68 | -//获取设备配置,新增传协议类型 | |
69 | -export const getDeviceProfileByTransportType = ({ deviceType, transportType }) => { | |
70 | - return defHttp.get<DeviceProfileModel[]>({ | |
71 | - url: '/device_profile/me/list', | |
72 | - params: { | |
73 | - deviceType: isString(deviceType) ? deviceType : undefined, | |
74 | - transportType: isString(transportType) ? transportType : undefined, | |
75 | - }, | |
76 | - }); | |
77 | -}; | ... | ... |
... | ... | @@ -7,3 +7,10 @@ export interface DeviceAttributeItemType { |
7 | 7 | value: boolean; |
8 | 8 | lastUpdateTs: number; |
9 | 9 | } |
10 | + | |
11 | +export interface QueryDevicePropfileParams { | |
12 | + deviceType?: string; | |
13 | + transportType?: string; | |
14 | + ruleChainId?: string; | |
15 | + isSceneLinkage?: boolean; | |
16 | +} | ... | ... |
src/api/application/api.ts
0 → 100644
1 | +import { ApplicationApiItemType, ApplicationApiPageParams } from './model/api'; | |
2 | +import { ApplicationConfigPageParams } from './model/application'; | |
3 | +import { PaginationResult } from '/#/axios'; | |
4 | +import { defHttp } from '/@/utils/http/axios'; | |
5 | + | |
6 | +enum OpenApiManageApi { | |
7 | + OPEN_API = '/openApi', | |
8 | + PAGE_LIST_GET = '/tenant/edgeInfos', | |
9 | +} | |
10 | + | |
11 | +//分页 | |
12 | +export const applicationApiPage = (params: ApplicationApiPageParams) => { | |
13 | + return defHttp.get<PaginationResult<ApplicationConfigPageParams>>({ | |
14 | + url: OpenApiManageApi.OPEN_API, | |
15 | + params, | |
16 | + }); | |
17 | +}; | |
18 | + | |
19 | +// 创建 | |
20 | +export const createApplicationApi = (data: ApplicationApiItemType) => { | |
21 | + return defHttp.post<ApplicationApiItemType>({ | |
22 | + url: OpenApiManageApi.OPEN_API, | |
23 | + data, | |
24 | + }); | |
25 | +}; | |
26 | + | |
27 | +// 编辑 | |
28 | +export const editApplicationApi = (data: ApplicationApiItemType) => { | |
29 | + return defHttp.put<ApplicationApiItemType>({ | |
30 | + url: OpenApiManageApi.OPEN_API, | |
31 | + data, | |
32 | + }); | |
33 | +}; | |
34 | + | |
35 | +// 删除 | |
36 | +export const deleteApplicationApi = (ids: string[]) => { | |
37 | + return defHttp.delete({ | |
38 | + url: OpenApiManageApi.OPEN_API, | |
39 | + data: { | |
40 | + ids: ids, | |
41 | + }, | |
42 | + }); | |
43 | +}; | |
44 | + | |
45 | +// 详情 | |
46 | +export const detailApplicationApi = (id: string) => { | |
47 | + return defHttp.get({ | |
48 | + url: `${OpenApiManageApi.OPEN_API}/find?id=${id}`, | |
49 | + }); | |
50 | +}; | |
51 | + | |
52 | +// 获取权限分配的菜单 | |
53 | +export const getApplicationApiPermissionMenus = () => { | |
54 | + return defHttp.get({ | |
55 | + url: `${OpenApiManageApi.OPEN_API}/getMenu`, | |
56 | + }); | |
57 | +}; | ... | ... |
src/api/application/application.ts
0 → 100644
1 | +import { ApplicationConfigItemType, ApplicationConfigPageParams } from './model/application'; | |
2 | +import { PaginationResult } from '/#/axios'; | |
3 | +import { defHttp } from '/@/utils/http/axios'; | |
4 | + | |
5 | +enum ApplicationManageApi { | |
6 | + APPLiCATION_API = '/application', | |
7 | + APPLiCATION_API_find = '/application/find', | |
8 | + PAGE_LIST_GET = '/application', | |
9 | +} | |
10 | + | |
11 | +//分页 | |
12 | +export const applicationConfigPage = (params: ApplicationConfigPageParams) => { | |
13 | + return defHttp.get<PaginationResult<ApplicationConfigPageParams>>({ | |
14 | + url: ApplicationManageApi.PAGE_LIST_GET, | |
15 | + params, | |
16 | + }); | |
17 | +}; | |
18 | + | |
19 | +// 创建 | |
20 | +export const createApplicationConfig = (data: ApplicationConfigItemType) => { | |
21 | + return defHttp.post<ApplicationConfigItemType>({ | |
22 | + url: ApplicationManageApi.APPLiCATION_API, | |
23 | + data, | |
24 | + }); | |
25 | +}; | |
26 | + | |
27 | +// 编辑 | |
28 | +export const putApplicationConfig = (data: ApplicationConfigItemType) => { | |
29 | + return defHttp.put<ApplicationConfigItemType>({ | |
30 | + url: ApplicationManageApi.APPLiCATION_API, | |
31 | + data, | |
32 | + }); | |
33 | +}; | |
34 | + | |
35 | +// 删除 | |
36 | +export const deleteApplicationConfig = (ids: string[]) => { | |
37 | + return defHttp.delete({ | |
38 | + url: ApplicationManageApi.APPLiCATION_API, | |
39 | + data: { | |
40 | + ids: ids, | |
41 | + }, | |
42 | + }); | |
43 | +}; | |
44 | + | |
45 | +// 详情 | |
46 | +export const detailApplicationConfig = (id: string) => { | |
47 | + return defHttp.get({ | |
48 | + url: `${ApplicationManageApi.APPLiCATION_API_find}?id=${id}`, | |
49 | + }); | |
50 | +}; | ... | ... |
src/api/application/model/api.ts
0 → 100644
1 | +export type ApplicationApiPageParams = { | |
2 | + name?: string; | |
3 | + classify?: string; | |
4 | + tenantId?: string; | |
5 | + textSearch?: string; | |
6 | + page: number; | |
7 | + pageSize: number; | |
8 | + sortOrder?: string; | |
9 | + sortProperty?: string; | |
10 | +}; | |
11 | + | |
12 | +export interface ApplicationApiItemType { | |
13 | + name: string; | |
14 | + classify: string; | |
15 | + uri: string; | |
16 | + param: any; | |
17 | + documentUrl: string; | |
18 | + requestMethod: number; | |
19 | + updateTime: string; | |
20 | + updater?: string; | |
21 | + createdTime?: string; | |
22 | + creator?: string; | |
23 | + id?: string; | |
24 | +} | ... | ... |
src/api/application/model/application.ts
0 → 100644
1 | +export type ApplicationConfigPageParams = { | |
2 | + name?: string; | |
3 | + tenantId?: string; | |
4 | + organizationId?: string; | |
5 | + textSearch?: string; | |
6 | + page: number; | |
7 | + pageSize: number; | |
8 | + sortOrder?: string; | |
9 | + sortProperty?: string; | |
10 | +}; | |
11 | + | |
12 | +export interface ApplicationConfigItemType { | |
13 | + name: string; | |
14 | + organizationId?: string; | |
15 | + organizationName?: string; | |
16 | + key?: string; | |
17 | + secret?: string; | |
18 | + updateTime?: string; | |
19 | + updater?: string; | |
20 | + createTime?: string; | |
21 | + creator?: string; | |
22 | + apiList: string[]; | |
23 | + id?: string; | |
24 | +} | ... | ... |
src/api/application/model/record.ts
0 → 100644
1 | +export type ApplicationRecordPageParams = { | |
2 | + apiName?: string; | |
3 | + applicationName?: string; | |
4 | + classify?: string; | |
5 | + startTime?: string; | |
6 | + endTime?: string; | |
7 | + state?: string; | |
8 | + tenantId?: string; | |
9 | + textSearch?: string; | |
10 | + orderFiled?: string; | |
11 | + orderType?: string; | |
12 | + page: number; | |
13 | + pageSize: number; | |
14 | + sortOrder?: string; | |
15 | + sortProperty?: string; | |
16 | +}; | |
17 | + | |
18 | +export interface ApplicationRecordItemType { | |
19 | + apiName: string; | |
20 | + applicationName: string; | |
21 | + categoryName: string; | |
22 | + interfaceResponse: string; | |
23 | + callTime: string; | |
24 | + status: number; | |
25 | + updateTime: string; | |
26 | + updater: string; | |
27 | + createdTime: string; | |
28 | + creator: string; | |
29 | + id: string; | |
30 | + state: number; | |
31 | +} | |
32 | + | |
33 | +export interface CallStatisticsItemType { | |
34 | + createTime: string; | |
35 | + creator: string; | |
36 | + failureCount: number; | |
37 | + id: string; | |
38 | + name: string; | |
39 | + recordNum: number; | |
40 | + recordProportion: number; | |
41 | + successCount: number; | |
42 | + updateTime: string; | |
43 | + updater: string; | |
44 | +} | |
45 | + | |
46 | +export interface TopItemType { | |
47 | + createTime: string; | |
48 | + creator: string; | |
49 | + failureCount: number; | |
50 | + id: string; | |
51 | + name: string; | |
52 | + recordNum: number; | |
53 | + recordProportion: number; | |
54 | + successCount: number; | |
55 | + updateTime: string; | |
56 | + updater: string; | |
57 | +} | |
58 | + | |
59 | +export interface ApplicationRecordTopItemType { | |
60 | + count: number; | |
61 | + createTime: string; | |
62 | + creator: string; | |
63 | + failCount: number; | |
64 | + id: string; | |
65 | + successCount: number; | |
66 | + tops: TopItemType[]; | |
67 | + updateTime: string; | |
68 | + updater: string; | |
69 | +} | |
70 | + | |
71 | +export interface ClassifyDtsItemType { | |
72 | + classify: string; | |
73 | + count: number; | |
74 | + time: string; | |
75 | +} | |
76 | + | |
77 | +export interface ClassifyItemType { | |
78 | + classify: string; | |
79 | + dts: ClassifyDtsItemType[]; | |
80 | +} | ... | ... |
src/api/application/record.ts
0 → 100644
1 | +import { ApplicationRecordPageParams, CallStatisticsItemType } from './model/record'; | |
2 | +import { PaginationResult } from '/#/axios'; | |
3 | +import { defHttp } from '/@/utils/http/axios'; | |
4 | + | |
5 | +enum ApplicationRecordManageApi { | |
6 | + OPEN_API_RECORD = '/openApiRecord', | |
7 | + PAGE_LIST_GET = '/openApiRecord', | |
8 | + PAGE_LIST_GET_PAGE = '/openApiRecord/getPage', | |
9 | +} | |
10 | + | |
11 | +//分页 | |
12 | +export const applicationRecordPage = (params: ApplicationRecordPageParams) => { | |
13 | + return defHttp.get<PaginationResult<ApplicationRecordPageParams>>({ | |
14 | + url: ApplicationRecordManageApi.PAGE_LIST_GET, | |
15 | + params, | |
16 | + }); | |
17 | +}; | |
18 | + | |
19 | +//调用统计分页 | |
20 | +export const callStatisticsPage = (params: ApplicationRecordPageParams) => { | |
21 | + return defHttp.get<PaginationResult<CallStatisticsItemType>>({ | |
22 | + url: ApplicationRecordManageApi.PAGE_LIST_GET_PAGE, | |
23 | + params, | |
24 | + }); | |
25 | +}; | |
26 | + | |
27 | +// 详情 | |
28 | +export const detailApplicationRecord = (id: string) => { | |
29 | + return defHttp.get({ | |
30 | + url: `${ApplicationRecordManageApi.OPEN_API_RECORD}/find?id=${id}`, | |
31 | + }); | |
32 | +}; | |
33 | + | |
34 | +// Top5 | |
35 | +export const getApplicationRecordTop = () => { | |
36 | + return defHttp.get({ | |
37 | + url: `${ApplicationRecordManageApi.OPEN_API_RECORD}/getTop`, | |
38 | + }); | |
39 | +}; | |
40 | + | |
41 | +export const getApplicationRecordClassify = (type?: string) => { | |
42 | + const joinUrlParams = type ? `?type=${type}` : ''; | |
43 | + return defHttp.get({ | |
44 | + url: `${ApplicationRecordManageApi.OPEN_API_RECORD}/getClassify${joinUrlParams}`, | |
45 | + }); | |
46 | +}; | ... | ... |
... | ... | @@ -5,8 +5,10 @@ import { |
5 | 5 | ProfileRecord, |
6 | 6 | RuleChainRecord, |
7 | 7 | DeviceProfileDetail, |
8 | + BatchUpdateDeviceProfileRuleChainParams, | |
8 | 9 | } from '/@/api/device/model/deviceConfigModel'; |
9 | 10 | import { PaginationResult } from '/#/axios'; |
11 | +import { QueryDeviceProfileListParams } from './model/deviceModel'; | |
10 | 12 | |
11 | 13 | enum EDeviceConfigApi { |
12 | 14 | /** |
... | ... | @@ -24,6 +26,8 @@ enum EDeviceConfigApi { |
24 | 26 | FRP_API = '/frp/', |
25 | 27 | GET_TB_DEVICE_ID = '/device/get_subset', |
26 | 28 | COMMODRECORD = '/rpc', |
29 | + DEVICE_PROFILE_LIST = '/device_profile/me/list', | |
30 | + DEVICE_PROFILE_BATCH_UPDATE_RULE_CHAIN = '/batch/change/ruleChain', | |
27 | 31 | } |
28 | 32 | |
29 | 33 | /** |
... | ... | @@ -38,7 +42,7 @@ export const deviceConfigGetDetail = (id: string) => { |
38 | 42 | /** |
39 | 43 | * 获取规则链 |
40 | 44 | */ |
41 | -export const deviceConfigGetRuleChain = () => { | |
45 | +export const doQueryRuleChainList = () => { | |
42 | 46 | return defHttp.get<RuleChainRecord[]>({ |
43 | 47 | url: EDeviceConfigApi.DEVICE_CONFIG_GET_RULECHAIN, |
44 | 48 | }); |
... | ... | @@ -152,3 +156,27 @@ export const deviceCommandRecordGetQuery = (params?: TDeviceConfigParams) => { |
152 | 156 | params, |
153 | 157 | }); |
154 | 158 | }; |
159 | + | |
160 | +/** | |
161 | + * @description 获取设备配置列表 | |
162 | + * @param params | |
163 | + * @returns | |
164 | + */ | |
165 | +export const doQueryDeviceProfileList = (params?: QueryDeviceProfileListParams) => { | |
166 | + return defHttp.get({ | |
167 | + url: EDeviceConfigApi.DEVICE_PROFILE_LIST, | |
168 | + params, | |
169 | + }); | |
170 | +}; | |
171 | + | |
172 | +export const doBatchChangeRuleChain = (data: BatchUpdateDeviceProfileRuleChainParams) => { | |
173 | + return defHttp.post( | |
174 | + { | |
175 | + url: EDeviceConfigApi.DEVICE_PROFILE_BATCH_UPDATE_RULE_CHAIN, | |
176 | + data, | |
177 | + }, | |
178 | + { | |
179 | + joinPrefix: false, | |
180 | + } | |
181 | + ); | |
182 | +}; | ... | ... |
... | ... | @@ -6,6 +6,7 @@ import { |
6 | 6 | ModelOfMatterItemRecordType, |
7 | 7 | ModelOfMatterParams, |
8 | 8 | Tsl, |
9 | + UpdateSortThingsModeItemType, | |
9 | 10 | } from './model/modelOfMatterModel'; |
10 | 11 | import { FunctionTypeEnum } from '/@/enums/objectModelEnum'; |
11 | 12 | import { defHttp } from '/@/utils/http/axios'; |
... | ... | @@ -30,6 +31,7 @@ enum ModelOfMatter { |
30 | 31 | EXCEL_EXPORT = '/things_model/download/template', |
31 | 32 | |
32 | 33 | BATCH_GET_TSL_BY_DEVICE_PROFILES = '/things_model/batch/get_tsl', |
34 | + UPDATE_SORT = '/things_model/updateSort', | |
33 | 35 | } |
34 | 36 | |
35 | 37 | export const getModelList = ( |
... | ... | @@ -38,6 +40,7 @@ export const getModelList = ( |
38 | 40 | functionTyp?: FunctionTypeEnum; |
39 | 41 | nameOrIdentifier?: string; |
40 | 42 | selectType?: string | undefined; |
43 | + orderFiled?: string | undefined; | |
41 | 44 | id?: string; |
42 | 45 | } |
43 | 46 | ) => { |
... | ... | @@ -204,3 +207,10 @@ export const batchGetObjectModel = ({ |
204 | 207 | { withShareToken: true } |
205 | 208 | ); |
206 | 209 | }; |
210 | + | |
211 | +//物模型排序 | |
212 | +export const updateSortThingsModel = (data: UpdateSortThingsModeItemType) => { | |
213 | + return defHttp.post({ | |
214 | + url: `${ModelOfMatter.UPDATE_SORT}?id=${data.id}&isCategory=${data.isCategory}&sortType=${data.sortType}`, | |
215 | + }); | |
216 | +}; | ... | ... |
... | ... | @@ -5,6 +5,7 @@ import { |
5 | 5 | ScreenLinkPageQueryParam, |
6 | 6 | ScreenByDeptIdParams, |
7 | 7 | IChangeStatus, |
8 | + RuleChainDeleteResponse, | |
8 | 9 | } from '/@/api/ruleengine/model/ruleengineModel'; |
9 | 10 | import { DeviceModel } from '../device/model/deviceModel'; |
10 | 11 | |
... | ... | @@ -181,8 +182,8 @@ export const importRuleChine = (params) => { |
181 | 182 | * 删除规则链 |
182 | 183 | */ |
183 | 184 | |
184 | -export const deleteRuleChine = (id) => { | |
185 | - return defHttp.delete( | |
185 | +export const deleteRuleChine = (id: string) => { | |
186 | + return defHttp.delete<RuleChainDeleteResponse>( | |
186 | 187 | { |
187 | 188 | url: `${ScreenManagerApi.RULE_CHAIN}/`, |
188 | 189 | params: id, | ... | ... |
... | ... | @@ -9,6 +9,7 @@ import { |
9 | 9 | SysDictItemResult, |
10 | 10 | DictCodeParams, |
11 | 11 | } from './model/dictModel'; |
12 | +import { useI18n } from '/@/hooks/web/useI18n'; | |
12 | 13 | |
13 | 14 | enum SysDictApi { |
14 | 15 | CONFIG_URL = '/dict', |
... | ... | @@ -19,11 +20,18 @@ enum SysDictApi { |
19 | 20 | * 查找字典值 |
20 | 21 | * @param code |
21 | 22 | */ |
22 | -export const findDictItemByCode = (params?: DictCodeParams) => { | |
23 | - return defHttp.post<SysDictItemResult[]>({ | |
23 | +export const findDictItemByCode = async (params?: DictCodeParams) => { | |
24 | + const result = await defHttp.post<SysDictItemResult[]>({ | |
24 | 25 | url: SysDictApi.CONFIG_ITEM_URL + '/find', |
25 | 26 | params, |
26 | 27 | }); |
28 | + | |
29 | + const { t } = useI18n(); | |
30 | + return result.map((item) => ({ | |
31 | + ...item, | |
32 | + itemText: t(item.itemText), | |
33 | + originalItemText: item.itemText, | |
34 | + })); | |
27 | 35 | }; |
28 | 36 | |
29 | 37 | /** | ... | ... |
src/assets/images/total1.png
0 → 100644
2.81 KB
src/assets/images/total2.png
0 → 100644
2.69 KB
src/assets/images/total3.png
0 → 100644
2.66 KB
... | ... | @@ -12,15 +12,15 @@ |
12 | 12 | overlayClassName="app-locale-picker-overlay" |
13 | 13 | > |
14 | 14 | <span class="cursor-pointer flex items-center" :style="{ color: color }"> |
15 | - <!-- <Icon icon="ion:language" /> | |
16 | - <span v-if="showText" class="ml-1">{{ getLocaleText }}</span> --> | |
15 | + <Icon icon="ion:language" /> | |
16 | + <span v-if="showText" class="ml-1">{{ getLocaleText }}</span> | |
17 | 17 | </span> |
18 | 18 | </Dropdown> |
19 | 19 | </template> |
20 | 20 | <script lang="ts" setup> |
21 | 21 | import type { LocaleType } from '/#/config'; |
22 | 22 | import type { DropMenu } from '/@/components/Dropdown'; |
23 | - import { ref, watchEffect, unref } from 'vue'; | |
23 | + import { ref, watchEffect, unref, computed } from 'vue'; | |
24 | 24 | import { Dropdown } from '/@/components/Dropdown'; |
25 | 25 | // import { Icon } from '/@/components/Icon'; |
26 | 26 | import { useLocale } from '/@/locales/useLocale'; |
... | ... | @@ -45,13 +45,13 @@ |
45 | 45 | |
46 | 46 | const { changeLocale, getLocale } = useLocale(); |
47 | 47 | |
48 | - // const getLocaleText = computed(() => { | |
49 | - // const key = selectedKeys.value[0]; | |
50 | - // if (!key) { | |
51 | - // return ''; | |
52 | - // } | |
53 | - // return localeList.find((item) => item.event === key)?.text; | |
54 | - // }); | |
48 | + const getLocaleText = computed(() => { | |
49 | + const key = selectedKeys.value[0]; | |
50 | + if (!key) { | |
51 | + return ''; | |
52 | + } | |
53 | + return localeList.find((item) => item.event === key)?.text; | |
54 | + }); | |
55 | 55 | |
56 | 56 | watchEffect(() => { |
57 | 57 | selectedKeys.value = [unref(getLocale)]; | ... | ... |
... | ... | @@ -13,6 +13,9 @@ |
13 | 13 | import { useCardForm } from './hooks/useCardForm'; |
14 | 14 | import { Icon } from '/@/components/Icon'; |
15 | 15 | import { useCardListSelected } from './hooks/useCardListSelected'; |
16 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
17 | + | |
18 | + const { t } = useI18n(); | |
16 | 19 | |
17 | 20 | const emit = defineEmits<{ |
18 | 21 | (eventName: 'fetchSuccess', result: { items: Recordable[]; total: number }): void; |
... | ... | @@ -186,16 +189,24 @@ |
186 | 189 | <DropdownButton v-if="getProps.selections" @click="selectAllToggle" type="primary"> |
187 | 190 | <template #overlay> |
188 | 191 | <Menu> |
189 | - <Menu.Item @click="selectedAll">全选</Menu.Item> | |
190 | - <Menu.Item @click="clearSelectedKeys">反选</Menu.Item> | |
192 | + <Menu.Item @click="selectedAll"> | |
193 | + {{ t('component.cardList.selectAllText') }} | |
194 | + </Menu.Item> | |
195 | + <Menu.Item @click="clearSelectedKeys"> | |
196 | + {{ t('component.cardList.invertSelectionText') }} | |
197 | + </Menu.Item> | |
191 | 198 | </Menu> |
192 | 199 | </template> |
193 | 200 | <span> |
194 | - {{ selectedKeys.length === getDataSourceRef.length ? '反选' : '全选' }} | |
201 | + {{ | |
202 | + selectedKeys.length === getDataSourceRef.length | |
203 | + ? t('component.cardList.invertSelectionText') | |
204 | + : t('component.cardList.selectAllText') | |
205 | + }} | |
195 | 206 | </span> |
196 | 207 | </DropdownButton> |
197 | 208 | <CardListLayout v-model:row="cardListLayout.row" v-model:col="cardListLayout.col" /> |
198 | - <Tooltip title="刷新"> | |
209 | + <Tooltip :title="t('component.cardList.refreshText')"> | |
199 | 210 | <Button type="primary" @click="reload()" :loading="loading"> |
200 | 211 | <Icon icon="ant-design:reload-outlined" :size="20" /> |
201 | 212 | </Button> | ... | ... |
... | ... | @@ -2,9 +2,12 @@ |
2 | 2 | import { Button, Popover } from 'ant-design-vue'; |
3 | 3 | import { reactive, ref, watch } from 'vue'; |
4 | 4 | import { Icon } from '/@/components/Icon'; |
5 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
5 | 6 | |
6 | 7 | const emit = defineEmits(['update:row', 'update:col']); |
7 | 8 | |
9 | + const { t } = useI18n(); | |
10 | + | |
8 | 11 | const props = withDefaults( |
9 | 12 | defineProps<{ |
10 | 13 | row?: number; |
... | ... | @@ -68,7 +71,8 @@ |
68 | 71 | </tr> |
69 | 72 | </table> |
70 | 73 | <div class="text-center w-full"> |
71 | - {{ selectedLayout.col }} x {{ selectedLayout.row }} 布局 | |
74 | + {{ selectedLayout.col }} x {{ selectedLayout.row }} | |
75 | + {{ t('component.cardList.layoutText') }} | |
72 | 76 | </div> |
73 | 77 | </section> |
74 | 78 | </template> | ... | ... |
... | ... | @@ -3,6 +3,7 @@ import { Ref, computed, ref, unref } from 'vue'; |
3 | 3 | import { LeftOutlined, RightOutlined } from '@ant-design/icons-vue'; |
4 | 4 | import { BasicCardListPropsType } from '../types'; |
5 | 5 | import { isBoolean } from '/@/utils/is'; |
6 | +import { useI18n } from '/@/hooks/web/useI18n'; | |
6 | 7 | |
7 | 8 | interface ItemRender { |
8 | 9 | page: number; |
... | ... | @@ -27,6 +28,8 @@ export function usePagination( |
27 | 28 | hideOnSinglePage: false, |
28 | 29 | }); |
29 | 30 | |
31 | + const { t } = useI18n(); | |
32 | + | |
30 | 33 | const getPaginationInfo = computed(() => { |
31 | 34 | const { pagination } = unref(propsRef); |
32 | 35 | const { col, row } = cardLayoutRef; |
... | ... | @@ -36,7 +39,7 @@ export function usePagination( |
36 | 39 | pageSize: col * row, |
37 | 40 | size: 'small', |
38 | 41 | defaultPageSize: col * row, |
39 | - showTotal: (total: number) => `共 ${total} 条数据`, | |
42 | + showTotal: (total: number) => t('component.table.total', { total }), | |
40 | 43 | showSizeChanger: false, |
41 | 44 | itemRender: itemRender, |
42 | 45 | showQuickJumper: true, | ... | ... |
1 | 1 | import { Rule } from '/@/components/Form'; |
2 | +import { i18n } from '/@/locales/setupI18n'; | |
2 | 3 | |
3 | 4 | export { default as JSONEditor } from './index.vue'; |
4 | 5 | |
6 | +const t = i18n.global.t; | |
5 | 7 | export const parseStringToJSON = <T = Recordable>(value: string) => { |
6 | 8 | let valid = false; |
7 | 9 | try { |
... | ... | @@ -14,9 +16,9 @@ export const parseStringToJSON = <T = Recordable>(value: string) => { |
14 | 16 | }; |
15 | 17 | |
16 | 18 | export const JSONEditorValidator = ( |
17 | - message = 'JSON格式校验失败', | |
19 | + message = t('validator.json'), | |
18 | 20 | noEmpty = false, |
19 | - emptyMessage = 'JSON不能为空对象' | |
21 | + emptyMessage = t('validator.jsonNotEmpty') | |
20 | 22 | ): Rule[] => { |
21 | 23 | return [ |
22 | 24 | { | ... | ... |
... | ... | @@ -8,6 +8,7 @@ |
8 | 8 | import workerJsonUrl from 'ace-builds/src-noconflict/worker-json?url'; |
9 | 9 | import githubTheme from 'ace-builds/src-noconflict/theme-github?url'; |
10 | 10 | import 'ace-builds/src-noconflict/mode-json'; |
11 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
11 | 12 | |
12 | 13 | enum EventEnum { |
13 | 14 | UPDATE_VALUE = 'update:value', |
... | ... | @@ -35,6 +36,8 @@ |
35 | 36 | (e: EventEnum.FOCUS, event: Event, instance?: Ace.Editor): void; |
36 | 37 | }>(); |
37 | 38 | |
39 | + const { t } = useI18n(); | |
40 | + | |
38 | 41 | const jsonEditorElRef = ref<Nullable<any>>(); |
39 | 42 | |
40 | 43 | const editoreRef = ref<Ace.Editor>(); |
... | ... | @@ -168,17 +171,17 @@ |
168 | 171 | <slot name="header"></slot> |
169 | 172 | <div class="flex h-8 gap-3 justify-end items-center text-dark-500 svg:text-2xl"> |
170 | 173 | <slot name="beforeFormat"></slot> |
171 | - <Tooltip title="整洁"> | |
174 | + <Tooltip :title="t('common.jsonEditorOperationIconText.neat')"> | |
172 | 175 | <Icon @click="handleFormat" class="cursor-pointer" icon="gg:format-left" /> |
173 | 176 | </Tooltip> |
174 | 177 | <slot name="beforeCompress"></slot> |
175 | 178 | |
176 | - <Tooltip title="迷你"> | |
179 | + <Tooltip :title="t('common.jsonEditorOperationIconText.mini')"> | |
177 | 180 | <Icon @click="handleCompress" class="cursor-pointer" icon="material-symbols:compress" /> |
178 | 181 | </Tooltip> |
179 | 182 | <slot name="beforeFullScreen"></slot> |
180 | 183 | |
181 | - <Tooltip title="全屏"> | |
184 | + <Tooltip :title="t('common.jsonEditorOperationIconText.fullScreen')"> | |
182 | 185 | <Icon |
183 | 186 | v-if="isSupported" |
184 | 187 | class="cursor-pointer" | ... | ... |
... | ... | @@ -11,14 +11,8 @@ |
11 | 11 | import { cloneDeep } from 'lodash-es'; |
12 | 12 | import { isFunction, isNumber, isObject, isString } from '/@/utils/is'; |
13 | 13 | import { useDesign } from '/@/hooks/web/useDesign'; |
14 | - | |
15 | - export interface FileItem { | |
16 | - uid: string; | |
17 | - name: string; | |
18 | - status?: string; | |
19 | - response?: string; | |
20 | - url?: string; | |
21 | - } | |
14 | + import { FileItem } from '/@/components/Upload/src/typing'; | |
15 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
22 | 16 | |
23 | 17 | const { prefixCls } = useDesign('api-upload'); |
24 | 18 | const emit = defineEmits(['update:fileList', 'preview', 'download', 'delete']); |
... | ... | @@ -58,6 +52,8 @@ |
58 | 52 | } |
59 | 53 | ); |
60 | 54 | |
55 | + const { t } = useI18n(); | |
56 | + | |
61 | 57 | const handleBeforeUpload = (file: File, fileList: File[]) => { |
62 | 58 | const { beforeUpload, accept } = props; |
63 | 59 | |
... | ... | @@ -67,15 +63,17 @@ |
67 | 63 | const limitFileSuffix = accept.split(','); |
68 | 64 | |
69 | 65 | if (limitFileSuffix.length && !limitFileSuffix.some((suffix) => file.name.includes(suffix))) { |
70 | - createMessage.warning(`允许上传的文件类型包括${accept}`); | |
66 | + createMessage.warning(t('component.upload.allowAccept', { accept })); | |
71 | 67 | return false; |
72 | 68 | } |
73 | 69 | } |
74 | 70 | if (file.size > props.maxSize) { |
75 | 71 | createMessage.warning( |
76 | - `文件大小超过${Math.floor( | |
77 | - props.maxSize > 1024 * 1024 ? props.maxSize / 1024 / 1024 : props.maxSize / 1024 | |
78 | - )}${props.maxSize > 1024 * 1024 * 1 ? 'mb' : 'kb'}` | |
72 | + t('component.upload.fileSizeOverflow', { | |
73 | + size: `${Math.floor( | |
74 | + props.maxSize > 1024 * 1024 ? props.maxSize / 1024 / 1024 : props.maxSize / 1024 | |
75 | + )}${props.maxSize > 1024 * 1024 * 1 ? 'mb' : 'kb'}`, | |
76 | + }) | |
79 | 77 | ); |
80 | 78 | return false; |
81 | 79 | } |
... | ... | @@ -163,10 +161,12 @@ |
163 | 161 | :spinning="loading" |
164 | 162 | > |
165 | 163 | <div class="w-full h-full flex flex-col justify-center content-center"> |
166 | - <Tooltip title="点击上传或拖拽上传"> | |
164 | + <Tooltip :title="t('component.upload.dragUploadHelpText')"> | |
167 | 165 | <InboxOutlined class="text-[3rem] !text-blue-500" /> |
168 | 166 | </Tooltip> |
169 | - <div v-if="!isPictureCard" class="m-2 text-gray-400 text-sm">点击上传或拖拽上传</div> | |
167 | + <div v-if="!isPictureCard" class="m-2 text-gray-400 text-sm"> | |
168 | + {{ t('component.upload.dragUploadHelpText') }} | |
169 | + </div> | |
170 | 170 | </div> |
171 | 171 | </Spin> |
172 | 172 | </Upload> | ... | ... |
1 | 1 | <template> |
2 | 2 | <div class="flex"> |
3 | 3 | <InputNumber |
4 | - placeholder="最小值" | |
4 | + :placeholder="t('deviceManagement.product.minValueText')" | |
5 | 5 | v-bind="minInputProps" |
6 | 6 | :disabled="$props.disabled" |
7 | 7 | :value="getMinValue" |
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 | /> |
10 | 10 | <div class="text-center flex-shrink-0 w-6">~</div> |
11 | 11 | <InputNumber |
12 | - placeholder="最大值" | |
12 | + :placeholder="t('deviceManagement.product.maxValueText')" | |
13 | 13 | v-bind="maxInputProps" |
14 | 14 | :disabled="$props.disabled" |
15 | 15 | :value="getMaxValue" |
... | ... | @@ -25,7 +25,9 @@ |
25 | 25 | <script lang="ts" setup> |
26 | 26 | import { computed } from 'vue'; |
27 | 27 | import { InputNumber, InputNumberProps } from 'ant-design-vue'; |
28 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
28 | 29 | |
30 | + const { t } = useI18n(); | |
29 | 31 | const emit = defineEmits(['change', 'update:value']); |
30 | 32 | const props = withDefaults( |
31 | 33 | defineProps<{ | ... | ... |
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | <div v-for="(param, index) in dynamicInput.params" :key="index" style="display: flex"> |
3 | 3 | <a-input placeholder="产品" v-model:value="param.label" :disabled="true" /> |
4 | 4 | <Select |
5 | - placeholder="请选择设备" | |
5 | + :placeholder="t('common.selectDevice')" | |
6 | 6 | v-model:value="param.value" |
7 | 7 | style="width: 100%" |
8 | 8 | v-bind="createPickerSearch()" |
... | ... | @@ -24,6 +24,7 @@ |
24 | 24 | import { isEmpty } from '/@/utils/is'; |
25 | 25 | import { Select } from 'ant-design-vue'; |
26 | 26 | import { createPickerSearch } from '/@/utils/pickerSearch'; |
27 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
27 | 28 | |
28 | 29 | interface Params { |
29 | 30 | label: string; |
... | ... | @@ -49,6 +50,7 @@ |
49 | 50 | }, |
50 | 51 | emits: ['change', 'update:value'], |
51 | 52 | setup(props, { emit }) { |
53 | + const { t } = useI18n(); // 加载国际化 | |
52 | 54 | //input动态数据 |
53 | 55 | const dynamicInput: UnwrapRef<{ params: Params[] }> = reactive({ params: [] }); |
54 | 56 | |
... | ... | @@ -98,6 +100,7 @@ |
98 | 100 | emitChange, |
99 | 101 | remove, |
100 | 102 | createPickerSearch, |
103 | + t, | |
101 | 104 | }; |
102 | 105 | }, |
103 | 106 | }); | ... | ... |
... | ... | @@ -8,7 +8,7 @@ |
8 | 8 | import { Form, Col } from 'ant-design-vue'; |
9 | 9 | import { componentMap } from '../componentMap'; |
10 | 10 | import { BasicHelp } from '/@/components/Basic'; |
11 | - import { isBoolean, isFunction, isNull } from '/@/utils/is'; | |
11 | + import { isBoolean, isFunction, isNull, isString } from '/@/utils/is'; | |
12 | 12 | import { getSlot } from '/@/utils/helper/tsxHelper'; |
13 | 13 | import { createPlaceholderMessage, setComponentRuleType } from '../helper'; |
14 | 14 | import { upperFirst, cloneDeep } from 'lodash-es'; |
... | ... | @@ -133,7 +133,7 @@ |
133 | 133 | const { |
134 | 134 | rules: defRules = [], |
135 | 135 | component, |
136 | - rulesMessageJoinLabel, | |
136 | + rulesMessageJoinLabel = true, | |
137 | 137 | label, |
138 | 138 | dynamicRules, |
139 | 139 | required, |
... | ... | @@ -226,6 +226,8 @@ |
226 | 226 | field, |
227 | 227 | changeEvent = 'change', |
228 | 228 | valueField, |
229 | + joinLabelWithPlaceholder = true, | |
230 | + label, | |
229 | 231 | } = props.schema; |
230 | 232 | |
231 | 233 | const isCheck = component && ['Switch', 'Checkbox'].includes(component); |
... | ... | @@ -262,7 +264,10 @@ |
262 | 264 | // RangePicker place is an array |
263 | 265 | if (isCreatePlaceholder && component !== 'RangePicker' && component) { |
264 | 266 | propsData.placeholder = |
265 | - unref(getComponentsProps)?.placeholder || createPlaceholderMessage(component); | |
267 | + unref(getComponentsProps)?.placeholder || (joinLabelWithPlaceholder && isString(label)) | |
268 | + ? unref(getComponentsProps)?.placeholder || | |
269 | + `${createPlaceholderMessage(component)}${label}` | |
270 | + : createPlaceholderMessage(component); | |
266 | 271 | } |
267 | 272 | propsData.codeField = field; |
268 | 273 | propsData.formValues = unref(getValues); |
... | ... | @@ -339,7 +344,7 @@ |
339 | 344 | wrapperCol={wrapperCol} |
340 | 345 | > |
341 | 346 | <div style="display:flex"> |
342 | - <div style="flex:1">{getContent()}</div> | |
347 | + <div style="flex:1;max-width: 100%;">{getContent()}</div> | |
343 | 348 | {showSuffix && <span class="suffix">{getSuffix}</span>} |
344 | 349 | </div> |
345 | 350 | </Form.Item> | ... | ... |
... | ... | @@ -5,17 +5,17 @@ |
5 | 5 | <InputGroup compact> |
6 | 6 | <Select |
7 | 7 | v-if="type !== RequestMethodTypeEnum.WEBSOCKET" |
8 | - placeholder="请求类型" | |
9 | - :style="{ width: type !== RequestMethodTypeEnum.WEBSOCKET ? 15 + '%' : 0 + '%' }" | |
8 | + :placeholder="t('common.requestType')" | |
9 | + :style="{ width: type !== RequestMethodTypeEnum.WEBSOCKET ? 20 + '%' : 0 + '%' }" | |
10 | 10 | v-model:value="requestTypeUrlValue.requestHttpType" |
11 | 11 | :options="selectOptions" |
12 | 12 | allowClear |
13 | 13 | @change="emitChange" |
14 | 14 | /> |
15 | 15 | <Input |
16 | - placeholder="请输入接口地址" | |
16 | + :placeholder="t('common.inputText') + t('common.interfaceAddress')" | |
17 | 17 | v-model:value="requestTypeUrlValue.requestUrl" |
18 | - :style="{ width: type !== RequestMethodTypeEnum.WEBSOCKET ? 85 + '%' : 100 + '%' }" | |
18 | + :style="{ width: type !== RequestMethodTypeEnum.WEBSOCKET ? 80 + '%' : 100 + '%' }" | |
19 | 19 | @change="emitChange" |
20 | 20 | /> |
21 | 21 | </InputGroup> |
... | ... | @@ -26,6 +26,7 @@ |
26 | 26 | import { InputGroup, Select, Input } from 'ant-design-vue'; |
27 | 27 | import { findDictItemByCode } from '/@/api/system/dict'; |
28 | 28 | import { RequestMethodTypeEnum } from '/@/views/dataview/publicApi/config/enum'; |
29 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
29 | 30 | |
30 | 31 | interface requestTypeUrlConfig { |
31 | 32 | requestHttpType: undefined; |
... | ... | @@ -47,6 +48,7 @@ |
47 | 48 | }); |
48 | 49 | |
49 | 50 | const emits = defineEmits(['change', 'update:value']); |
51 | + const { t } = useI18n(); | |
50 | 52 | |
51 | 53 | const selectOptions = ref<selectType[]>([]); |
52 | 54 | ... | ... |
1 | 1 | <template> |
2 | 2 | <div v-for="(param, index) in dynamicInput.params" :key="index" style="display: flex"> |
3 | 3 | <a-input |
4 | - placeholder="请输入参数key" | |
4 | + :placeholder="t('rule.dataflow.index.pleaseInputParamsKey')" | |
5 | 5 | v-model:value="param.label" |
6 | 6 | :disabled="disabled" |
7 | 7 | style="width: 38%; margin-bottom: 5px" |
8 | 8 | @change="emitChange" |
9 | 9 | /> |
10 | 10 | <a-input |
11 | - placeholder="请输入参数value" | |
11 | + :placeholder="t('rule.dataflow.index.pleaseInputParamsValue')" | |
12 | 12 | :disabled="disabled" |
13 | 13 | v-model:value="param.value" |
14 | 14 | style="width: 38%; margin: 0 0 5px 60px" |
... | ... | @@ -24,7 +24,7 @@ |
24 | 24 | <div> |
25 | 25 | <a-button :disabled="disabled" type="dashed" style="width: 38%" @click="add"> |
26 | 26 | <PlusOutlined /> |
27 | - 新增 | |
27 | + {{ t('rule.dataflow.index.add') }} | |
28 | 28 | </a-button> |
29 | 29 | </div> |
30 | 30 | </template> |
... | ... | @@ -33,6 +33,9 @@ |
33 | 33 | import { defineComponent, reactive, UnwrapRef, watchEffect } from 'vue'; |
34 | 34 | import { propTypes } from '/@/utils/propTypes'; |
35 | 35 | import { isEmpty } from '/@/utils/is'; |
36 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
37 | + | |
38 | + const { t } = useI18n(); // 加载国际化 | |
36 | 39 | |
37 | 40 | interface Params { |
38 | 41 | label: string; |
... | ... | @@ -115,6 +118,7 @@ |
115 | 118 | emitChange, |
116 | 119 | remove, |
117 | 120 | add, |
121 | + t, | |
118 | 122 | // disabled, |
119 | 123 | }; |
120 | 124 | }, | ... | ... |
... | ... | @@ -15,6 +15,7 @@ |
15 | 15 | import { useFullscreen } from '@vueuse/core'; |
16 | 16 | import { isNumber } from '/@/utils/is'; |
17 | 17 | import { ScriptLanguageEnum } from '/@/enums/scriptEnum'; |
18 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
18 | 19 | |
19 | 20 | const emit = defineEmits(['update:value', 'focus', 'blur']); |
20 | 21 | const props = withDefaults( |
... | ... | @@ -38,6 +39,8 @@ |
38 | 39 | } |
39 | 40 | ); |
40 | 41 | |
42 | + const { t } = useI18n(); | |
43 | + | |
41 | 44 | const getHeight = computed(() => { |
42 | 45 | const { height } = props; |
43 | 46 | return isNumber(height) ? `${height}px` : height; |
... | ... | @@ -184,11 +187,11 @@ |
184 | 187 | <div class="flex gap-3 items-center svg:text-2xl"> |
185 | 188 | <slot name="beforeFormat"></slot> |
186 | 189 | |
187 | - <Tooltip title="整洁"> | |
190 | + <Tooltip :title="t('common.jsonEditorOperationIconText.neat')"> | |
188 | 191 | <Icon class="cursor-pointer" icon="gg:format-left" @click="handleFormatCode" /> |
189 | 192 | </Tooltip> |
190 | 193 | <slot name="beforeFullScreen"></slot> |
191 | - <Tooltip title="全屏"> | |
194 | + <Tooltip :title="t('common.jsonEditorOperationIconText.fullScreen')"> | |
192 | 195 | <Icon |
193 | 196 | v-if="isSupported" |
194 | 197 | class="cursor-pointer" | ... | ... |
... | ... | @@ -3,6 +3,9 @@ import { Specs, StructJSON } from '/@/api/device/model/modelOfMatterModel'; |
3 | 3 | import { TransportTypeEnum } from '/@/enums/deviceEnum'; |
4 | 4 | import { DataTypeEnum } from '/@/enums/objectModelEnum'; |
5 | 5 | import { validateTCPCustomCommand } from '.'; |
6 | +import { useI18n } from '/@/hooks/web/useI18n'; | |
7 | + | |
8 | +const { t } = useI18n(); | |
6 | 9 | |
7 | 10 | export const getFormSchemas = ({ |
8 | 11 | structJSON: structJson, |
... | ... | @@ -24,7 +27,7 @@ export const getFormSchemas = ({ |
24 | 27 | rules: [ |
25 | 28 | { |
26 | 29 | required, |
27 | - message: `${functionName}是必填项`, | |
30 | + message: `${functionName}${t('common.requiredField')}`, | |
28 | 31 | }, |
29 | 32 | { |
30 | 33 | type: 'number', |
... | ... | @@ -43,7 +46,7 @@ export const getFormSchemas = ({ |
43 | 46 | componentProps: { |
44 | 47 | max, |
45 | 48 | min, |
46 | - placeholder: `请输入${functionName}`, | |
49 | + placeholder: `${t('common.inputText')}${functionName}`, | |
47 | 50 | }, |
48 | 51 | } as FormSchema; |
49 | 52 | }; |
... | ... | @@ -58,7 +61,7 @@ export const getFormSchemas = ({ |
58 | 61 | rules: [ |
59 | 62 | { |
60 | 63 | required, |
61 | - message: `${functionName}是必填项`, | |
64 | + message: `${functionName}${t('common.requiredField')}`, | |
62 | 65 | }, |
63 | 66 | { |
64 | 67 | type: 'string', |
... | ... | @@ -73,7 +76,7 @@ export const getFormSchemas = ({ |
73 | 76 | ], |
74 | 77 | componentProps: { |
75 | 78 | maxLength: length, |
76 | - placeholder: `请输入${functionName}`, | |
79 | + placeholder: `${t('common.inputText')}${functionName}`, | |
77 | 80 | }, |
78 | 81 | } as FormSchema; |
79 | 82 | }; |
... | ... | @@ -88,7 +91,7 @@ export const getFormSchemas = ({ |
88 | 91 | rules: [ |
89 | 92 | { |
90 | 93 | required, |
91 | - message: `${functionName}是必填项`, | |
94 | + message: `${functionName}${t('common.requiredField')}`, | |
92 | 95 | type: 'number', |
93 | 96 | }, |
94 | 97 | ], |
... | ... | @@ -97,7 +100,7 @@ export const getFormSchemas = ({ |
97 | 100 | { label: `${boolClose}-0`, value: 0 }, |
98 | 101 | { label: `${boolOpen}-1`, value: 1 }, |
99 | 102 | ], |
100 | - placeholder: `请选择${functionName}`, | |
103 | + placeholder: `${t('common.chooseText')}${functionName}`, | |
101 | 104 | }, |
102 | 105 | }; |
103 | 106 | }; |
... | ... | @@ -111,13 +114,13 @@ export const getFormSchemas = ({ |
111 | 114 | rules: [ |
112 | 115 | { |
113 | 116 | required, |
114 | - message: `${functionName}是必填项`, | |
117 | + message: `${functionName}${t('common.requiredField')}`, | |
115 | 118 | type: 'number', |
116 | 119 | }, |
117 | 120 | ], |
118 | 121 | componentProps: { |
119 | 122 | options: specsList?.map((item) => ({ label: item.name, value: item.value })), |
120 | - placeholder: `请选择${functionName}`, | |
123 | + placeholder: `${t('common.chooseText')}${functionName}`, | |
121 | 124 | }, |
122 | 125 | }; |
123 | 126 | }; |
... | ... | @@ -141,13 +144,13 @@ export const getFormSchemas = ({ |
141 | 144 | const createTCPServiceCommandInput = ({ serviceCommand }: StructJSON): FormSchema => { |
142 | 145 | return { |
143 | 146 | field: 'serviceCommand', |
144 | - label: '服务命令', | |
147 | + label: t('common.serviceCommand'), | |
145 | 148 | component: 'Input', |
146 | 149 | required, |
147 | 150 | defaultValue: serviceCommand, |
148 | 151 | rules: [{ validator: validateTCPCustomCommand }], |
149 | 152 | componentProps: { |
150 | - placeholder: `请输入服务命令`, | |
153 | + placeholder: t('common.pleaseInputServiceCommand'), | |
151 | 154 | }, |
152 | 155 | }; |
153 | 156 | }; | ... | ... |
1 | 1 | import { ValidatorRule } from 'ant-design-vue/lib/form/interface'; |
2 | +import { i18n } from '/@/locales/setupI18n'; | |
2 | 3 | export { default as ThingsModelForm } from './index.vue'; |
3 | 4 | |
4 | 5 | export const validateTCPCustomCommand: ValidatorRule['validator'] = (_rule, value) => { |
5 | 6 | const reg = /^[\s0-9a-fA-F]+$/; |
6 | 7 | if (reg.test(value)) return Promise.resolve(); |
7 | - return Promise.reject('请输入ASCII或HEX服务命令(0~9/A~F)'); | |
8 | + return Promise.reject(i18n.global.t('validator.hex')); | |
8 | 9 | }; |
9 | 10 | |
10 | 11 | export const trimBlankSpace = (string: string) => string.replace(/(?!^)(?=(\w{2})+$)/g, ''); | ... | ... |
... | ... | @@ -4,6 +4,9 @@ |
4 | 4 | import { computed, CSSProperties, ExtractPropTypes, onMounted, ref, unref, watch } from 'vue'; |
5 | 5 | import { BasicModal, useModal } from '/@/components/Modal'; |
6 | 6 | import { isFunction } from '/@/utils/is'; |
7 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
8 | + | |
9 | + const { t } = useI18n(); // 加载国际化 | |
7 | 10 | |
8 | 11 | type TransferType = InstanceType<typeof Transfer>; |
9 | 12 | |
... | ... | @@ -85,7 +88,7 @@ |
85 | 88 | const { modalProps } = props; |
86 | 89 | return { |
87 | 90 | ...modalProps, |
88 | - title: '选择产品', | |
91 | + title: t('common.selectProduct'), | |
89 | 92 | showOkBtn: false, |
90 | 93 | }; |
91 | 94 | }); |
... | ... | @@ -139,12 +142,27 @@ |
139 | 142 | } |
140 | 143 | ); |
141 | 144 | |
145 | + watch( | |
146 | + () => props.params, | |
147 | + () => { | |
148 | + handleGetOptions(); | |
149 | + } | |
150 | + ); | |
151 | + | |
142 | 152 | const handleOpenModal = () => { |
143 | 153 | const { disabled } = props; |
144 | 154 | if (disabled) return; |
145 | 155 | openModal(true); |
146 | 156 | }; |
147 | 157 | |
158 | + const handleSelectChange = (value: string[], options: string[]) => { | |
159 | + targetKeys.value = value; | |
160 | + emit('update:value', value); | |
161 | + const _targetOptions = cloneDeep(unref(options)); | |
162 | + const moveKeys = value?.filter((item) => !props.value?.includes(item)); | |
163 | + emit('change', value, _targetOptions, 'left', moveKeys); | |
164 | + }; | |
165 | + | |
148 | 166 | onMounted(() => { |
149 | 167 | handleGetOptions(); |
150 | 168 | }); |
... | ... | @@ -162,6 +180,7 @@ |
162 | 180 | :options="getSelectOptions" |
163 | 181 | :value="getSelectValue" |
164 | 182 | mode="multiple" |
183 | + @change="handleSelectChange" | |
165 | 184 | /> |
166 | 185 | </div> |
167 | 186 | </template> | ... | ... |
... | ... | @@ -21,7 +21,8 @@ export function createPlaceholderMessage(component: ComponentType) { |
21 | 21 | component.includes('Cascader') || |
22 | 22 | component.includes('Checkbox') || |
23 | 23 | component.includes('Radio') || |
24 | - component.includes('Switch') | |
24 | + component.includes('Switch') || | |
25 | + component.includes('LockControlGroup') | |
25 | 26 | ) { |
26 | 27 | // return `请选择${label}`; |
27 | 28 | return t('common.chooseText'); | ... | ... |
... | ... | @@ -165,6 +165,8 @@ export interface FormSchema { |
165 | 165 | // Check whether the information is added to the label |
166 | 166 | rulesMessageJoinLabel?: boolean; |
167 | 167 | |
168 | + joinLabelWithPlaceholder?: boolean; | |
169 | + | |
168 | 170 | // Reference formModelItem |
169 | 171 | itemProps?: Partial<FormItem>; |
170 | 172 | ... | ... |
... | ... | @@ -30,7 +30,7 @@ |
30 | 30 | <slot name="more"></slot> |
31 | 31 | <a-button type="link" size="small" v-if="!$slots.more"> |
32 | 32 | <!-- <MoreOutlined class="icon-more" /> --> |
33 | - <span>更多</span> | |
33 | + <span>{{ t('common.moreText') }}</span> | |
34 | 34 | </a-button> |
35 | 35 | </Dropdown> |
36 | 36 | </div> |
... | ... | @@ -49,6 +49,7 @@ |
49 | 49 | import { isBoolean, isFunction, isString } from '/@/utils/is'; |
50 | 50 | import { propTypes } from '/@/utils/propTypes'; |
51 | 51 | import { ACTION_COLUMN_FLAG } from '../const'; |
52 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
52 | 53 | |
53 | 54 | export default defineComponent({ |
54 | 55 | name: 'TableAction', |
... | ... | @@ -74,6 +75,7 @@ |
74 | 75 | stopButtonPropagation: propTypes.bool.def(false), |
75 | 76 | }, |
76 | 77 | setup(props) { |
78 | + const { t } = useI18n(); | |
77 | 79 | const { prefixCls } = useDesign('basic-table-action'); |
78 | 80 | let table: Partial<TableActionType> = {}; |
79 | 81 | if (!props.outside) { |
... | ... | @@ -156,7 +158,7 @@ |
156 | 158 | isInButton && e.stopPropagation(); |
157 | 159 | } |
158 | 160 | |
159 | - return { prefixCls, getActions, getDropdownList, getAlign, onCellClick, getTooltip }; | |
161 | + return { prefixCls, getActions, getDropdownList, getAlign, onCellClick, getTooltip, t }; | |
160 | 162 | }, |
161 | 163 | }); |
162 | 164 | </script> | ... | ... |
... | ... | @@ -11,6 +11,7 @@ |
11 | 11 | import { getJwtToken, getShareJwtToken } from '/@/utils/auth'; |
12 | 12 | import { XGPlayerProps } from '/@/components/Video/src/types'; |
13 | 13 | import { StreamType } from './types'; |
14 | + import { useLocale } from '/@/locales/useLocale'; | |
14 | 15 | |
15 | 16 | const props = withDefaults(defineProps<XGPlayerProps>(), { |
16 | 17 | streamType: 'auto', |
... | ... | @@ -43,6 +44,12 @@ |
43 | 44 | } else return; |
44 | 45 | } |
45 | 46 | |
47 | + const { getAntdLocale } = useLocale(); | |
48 | + const locale = computed(() => { | |
49 | + const { locale } = getAntdLocale.value || {}; | |
50 | + return locale || 'zh'; | |
51 | + }); | |
52 | + | |
46 | 53 | const getPluginByStreamType = (): IPlayerOptions => { |
47 | 54 | let { url, withToken } = props; |
48 | 55 | let { streamType } = props; |
... | ... | @@ -91,7 +98,7 @@ |
91 | 98 | ...config, |
92 | 99 | ...propsRef, |
93 | 100 | url, |
94 | - lang: 'zh', | |
101 | + lang: unref(locale) as string, | |
95 | 102 | isLive: true, |
96 | 103 | autoplay: autoPlay, |
97 | 104 | autoplayMuted: autoPlay, | ... | ... |
... | ... | @@ -3,6 +3,7 @@ |
3 | 3 | import { TABLE_CARD_MODE_LIST } from './const'; |
4 | 4 | import { ModeList } from './types'; |
5 | 5 | import Icon from '../Icon'; |
6 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
6 | 7 | const props = withDefaults( |
7 | 8 | defineProps<{ |
8 | 9 | value: string; |
... | ... | @@ -13,6 +14,7 @@ |
13 | 14 | } |
14 | 15 | ); |
15 | 16 | |
17 | + const { t } = useI18n(); | |
16 | 18 | const emit = defineEmits(['change']); |
17 | 19 | |
18 | 20 | const handleChange = (event: Event) => { |
... | ... | @@ -24,7 +26,7 @@ |
24 | 26 | <template> |
25 | 27 | <RadioGroup :value="props.value" button-style="solid" @change="handleChange"> |
26 | 28 | <template v-for="item in $props.mode" :key="item.value"> |
27 | - <Tooltip :title="item.label"> | |
29 | + <Tooltip :title="t(item.label)"> | |
28 | 30 | <Radio.Button class="cursor-pointer" :value="item.value"> |
29 | 31 | <Icon :icon="item.icon" /> |
30 | 32 | </Radio.Button> | ... | ... |
1 | 1 | import { ModeList } from './types'; |
2 | +import { useI18n } from '/@/hooks/web/useI18n'; | |
2 | 3 | |
3 | 4 | export enum EnumTableCardMode { |
4 | 5 | CARD = 'CARD', |
... | ... | @@ -12,25 +13,26 @@ export enum EnumTableChartMode { |
12 | 13 | |
13 | 14 | export const TABLE_CARD_MODE_LIST: ModeList[] = [ |
14 | 15 | { |
15 | - label: '卡片模式', | |
16 | + label: 'common.cardModeText', | |
16 | 17 | value: EnumTableCardMode.CARD, |
17 | 18 | icon: 'ant-design:appstore-outlined', |
18 | 19 | }, |
19 | 20 | { |
20 | - label: '列表模式', | |
21 | + label: 'common.listModeText', | |
21 | 22 | value: EnumTableCardMode.TABLE, |
22 | 23 | icon: 'ant-design:unordered-list-outlined', |
23 | 24 | }, |
24 | 25 | ]; |
25 | 26 | |
27 | +const { t } = useI18n(); | |
26 | 28 | export const TABLE_CHART_MODE_LIST: ModeList[] = [ |
27 | 29 | { |
28 | - label: '图表模式', | |
30 | + label: t('deviceManagement.device.chartModeText'), | |
29 | 31 | value: EnumTableChartMode.CHART, |
30 | 32 | icon: 'ant-design:line-chart-outlined', |
31 | 33 | }, |
32 | 34 | { |
33 | - label: '列表模式', | |
35 | + label: t('deviceManagement.device.listModeText'), | |
34 | 36 | value: EnumTableChartMode.TABLE, |
35 | 37 | icon: 'ant-design:unordered-list-outlined', |
36 | 38 | }, | ... | ... |
... | ... | @@ -5,13 +5,6 @@ export enum AlarmStatus { |
5 | 5 | ACTIVE_ACK = 'ACTIVE_ACK', |
6 | 6 | } |
7 | 7 | |
8 | -export enum AlarmStatusMean { | |
9 | - CLEARED_UNACK = '清除未确认', | |
10 | - ACTIVE_UNACK = '激活未确认', | |
11 | - CLEARED_ACK = '清除已确认', | |
12 | - ACTIVE_ACK = '激活已确认', | |
13 | -} | |
14 | - | |
15 | 8 | export enum AlarmLevelEnum { |
16 | 9 | CRITICAL = 'CRITICAL', |
17 | 10 | MAJOR = 'MAJOR', |
... | ... | @@ -19,11 +12,3 @@ export enum AlarmLevelEnum { |
19 | 12 | WARNING = 'WARNING', |
20 | 13 | INDETERMINATE = 'INDETERMINATE', |
21 | 14 | } |
22 | - | |
23 | -export enum AlarmLevelNameEnum { | |
24 | - CRITICAL = '紧急', | |
25 | - MAJOR = '重要', | |
26 | - MINOR = '次要', | |
27 | - WARNING = '警告', | |
28 | - INDETERMINATE = '不确定', | |
29 | -} | ... | ... |
... | ... | @@ -18,21 +18,11 @@ export enum ServiceCallTypeEnum { |
18 | 18 | SYNC = 'SYNC', |
19 | 19 | } |
20 | 20 | |
21 | -export enum ServiceCallTypeNameEnum { | |
22 | - ASYNC = '异步', | |
23 | - SYNC = '同步', | |
24 | -} | |
25 | - | |
26 | 21 | export enum CommandDeliveryWayEnum { |
27 | 22 | ONE_WAY = 'oneway', |
28 | 23 | TWO_WAY = 'twoway', |
29 | 24 | } |
30 | 25 | |
31 | -export enum CommandDeliveryWayNameEnum { | |
32 | - ONE_WAY = '单向', | |
33 | - TWO_WAY = '双向', | |
34 | -} | |
35 | - | |
36 | 26 | export enum CommandTypeEnum { |
37 | 27 | CUSTOM = 0, |
38 | 28 | SERVICE = 1, |
... | ... | @@ -40,12 +30,6 @@ export enum CommandTypeEnum { |
40 | 30 | API = 'api', |
41 | 31 | } |
42 | 32 | |
43 | -export enum CommandTypeNameEnum { | |
44 | - CUSTOM = '自定义', | |
45 | - SERVICE = '服务', | |
46 | - ATTRIBUTE = '属性', | |
47 | -} | |
48 | - | |
49 | 33 | export enum RPCCommandMethodEnum { |
50 | 34 | THINGSKIT = 'methodThingskit', |
51 | 35 | } |
... | ... | @@ -55,9 +39,27 @@ export enum TCPProtocolTypeEnum { |
55 | 39 | MODBUS_RTU = 'MODBUS_RTU', |
56 | 40 | } |
57 | 41 | |
58 | -export enum TCPProtocolTypeNameEnum { | |
59 | - CUSTOM = '自定义', | |
60 | - MODBUS_RTU = 'MODBUS_RTU', | |
42 | +export enum DeviceTypeEnum { | |
43 | + GATEWAY = 'GATEWAY', | |
44 | + DIRECT_CONNECTION = 'DIRECT_CONNECTION', | |
45 | + SENSOR = 'SENSOR', | |
46 | +} | |
47 | + | |
48 | +export enum DeviceStatusEnum { | |
49 | + INACTIVE = 'INACTIVE', | |
50 | + ONLINE = 'ONLINE', | |
51 | + OFFLINE = 'OFFLINE', | |
52 | +} | |
53 | + | |
54 | +export enum CommandStatusEnum { | |
55 | + QUEUED = 'QUEUED', | |
56 | + SENT = 'SENT', | |
57 | + DELIVERED = 'DELIVERED', | |
58 | + SUCCESSFUL = 'SUCCESSFUL', | |
59 | + TIMEOUT = 'TIMEOUT', | |
60 | + EXPIRED = 'EXPIRED', | |
61 | + FAILED = 'FAILED', | |
62 | + DELETED = 'DELETED', | |
61 | 63 | } |
62 | 64 | |
63 | 65 | export enum TCPProtocolAccessAuthTypeEnum { | ... | ... |
1 | +import { useI18n } from '/@/hooks/web/useI18n'; | |
2 | + | |
3 | +const { t } = useI18n(); // 加载国际化 | |
4 | + | |
1 | 5 | /** |
2 | 6 | * 运算符枚举值 |
3 | 7 | */ |
... | ... | @@ -13,12 +17,12 @@ export enum NumberOperationEnum { |
13 | 17 | } |
14 | 18 | |
15 | 19 | export enum NumberOperationNameEnum { |
16 | - EQUAL = '等于', | |
17 | - NOT_EQUAL = '不等于', | |
18 | - LESS = '小于', | |
19 | - LESS_OR_EQUAL = '小于等于', | |
20 | - GREATER = '大于', | |
21 | - GREATER_OR_EQUAL = '大于等于', | |
20 | + EQUAL = t('rule.linkedge.index.equal') as any, | |
21 | + NOT_EQUAL = t('rule.linkedge.index.notEqual') as any, | |
22 | + LESS = t('rule.linkedge.index.less') as any, | |
23 | + LESS_OR_EQUAL = t('rule.linkedge.index.lessOrEqual') as any, | |
24 | + GREATER = t('rule.linkedge.index.greater') as any, | |
25 | + GREATER_OR_EQUAL = t('rule.linkedge.index.greaterOrEqual') as any, | |
22 | 26 | } |
23 | 27 | |
24 | 28 | export enum StringOperationEnum { |
... | ... | @@ -31,12 +35,12 @@ export enum StringOperationEnum { |
31 | 35 | } |
32 | 36 | |
33 | 37 | export enum StringOperationNameEnum { |
34 | - EQUAL = '等于', | |
35 | - NOT_EQUAL = '不等于', | |
36 | - STARTS_WITH = '开始于', | |
37 | - ENDS_WITH = '结束于', | |
38 | - CONTAINS = '包含', | |
39 | - NOT_CONTAINS = '不包含', | |
38 | + EQUAL = t('rule.linkedge.index.equal') as any, | |
39 | + NOT_EQUAL = t('rule.linkedge.index.notEqual') as any, | |
40 | + STARTS_WITH = t('rule.linkedge.index.startsWith') as any, | |
41 | + ENDS_WITH = t('rule.linkedge.index.endsWith') as any, | |
42 | + CONTAINS = t('rule.linkedge.index.contains') as any, | |
43 | + NOT_CONTAINS = t('rule.linkedge.index.notContains') as any, | |
40 | 44 | } |
41 | 45 | |
42 | 46 | export enum BooleanOperationEnum { |
... | ... | @@ -45,8 +49,8 @@ export enum BooleanOperationEnum { |
45 | 49 | } |
46 | 50 | |
47 | 51 | export enum BooleanOperationNameEnum { |
48 | - EQUAL = '等于', | |
49 | - NOT_EQUAL = '不等于', | |
52 | + EQUAL = t('rule.linkedge.index.equal') as any, | |
53 | + NOT_EQUAL = t('rule.linkedge.index.notEqual') as any, | |
50 | 54 | } |
51 | 55 | |
52 | 56 | export enum BooleanOperationValueEnum { |
... | ... | @@ -55,8 +59,8 @@ export enum BooleanOperationValueEnum { |
55 | 59 | } |
56 | 60 | |
57 | 61 | export enum BooleanOperationValueNameEnum { |
58 | - TRUE = '真', | |
59 | - FALSE = '假', | |
62 | + TRUE = t('rule.linkedge.index.true') as any, | |
63 | + FALSE = t('rule.linkedge.index.false') as any, | |
60 | 64 | } |
61 | 65 | |
62 | 66 | export enum FlipFlopTypeEnum { |
... | ... | @@ -72,15 +76,15 @@ export enum ScheduleTypeEnum { |
72 | 76 | } |
73 | 77 | |
74 | 78 | export enum ScheduleTypeNameEnum { |
75 | - ANY_TIME = '始终启用', | |
76 | - SPECIFIC_TIME = '定时启用', | |
77 | - CUSTOM = '自定义启用', | |
79 | + ANY_TIME = t('rule.linkedge.index.anyTime') as any, | |
80 | + SPECIFIC_TIME = t('rule.linkedge.index.specificTime') as any, | |
81 | + CUSTOM = t('rule.linkedge.index.custom') as any, | |
78 | 82 | } |
79 | 83 | |
80 | 84 | export enum FlipFlopTypeNameEnum { |
81 | - SIMPLE = '简单', | |
82 | - DURATION = '持续时长', | |
83 | - REPEATING = '重复次数', | |
85 | + SIMPLE = t('rule.linkedge.index.simple') as any, | |
86 | + DURATION = t('rule.linkedge.index.duration') as any, | |
87 | + REPEATING = t('rule.linkedge.index.repetitions') as any, | |
84 | 88 | } |
85 | 89 | |
86 | 90 | export enum TriggerTypeEnum { |
... | ... | @@ -91,10 +95,10 @@ export enum TriggerTypeEnum { |
91 | 95 | } |
92 | 96 | |
93 | 97 | export enum TriggerTypeNameEnum { |
94 | - DEVICE_TRIGGER = '设备触发', | |
95 | - SCHEDULE_TRIGGER = '定时触发', | |
96 | - SCENE_TRIGGER = '场景触发', | |
97 | - HAND_ACT = '手动触发', | |
98 | + DEVICE_TRIGGER = t('rule.linkedge.index.deviceTrigger') as any, | |
99 | + SCHEDULE_TRIGGER = t('rule.linkedge.index.scheduleTrigger') as any, | |
100 | + SCENE_TRIGGER = t('rule.linkedge.index.sceneTrigger') as any, | |
101 | + HAND_ACT = t('rule.linkedge.index.handTrigger') as any, | |
98 | 102 | } |
99 | 103 | |
100 | 104 | export enum DeviceTriggerTypeEum { |
... | ... | @@ -103,8 +107,8 @@ export enum DeviceTriggerTypeEum { |
103 | 107 | } |
104 | 108 | |
105 | 109 | export enum DeviceTriggerTypeNameEum { |
106 | - TIME_SERIES = '属性触发', | |
107 | - DEVICE_EVENT = '事件触发', | |
110 | + TIME_SERIES = t('rule.linkedge.index.attrTrigger') as any, | |
111 | + DEVICE_EVENT = t('rule.linkedge.index.eventTrigger') as any, | |
108 | 112 | } |
109 | 113 | |
110 | 114 | export enum TriggerEntityTypeEnum { |
... | ... | @@ -113,8 +117,8 @@ export enum TriggerEntityTypeEnum { |
113 | 117 | } |
114 | 118 | |
115 | 119 | export enum TriggerEntityTypeNameEnum { |
116 | - ALL = '全部', | |
117 | - PART = '部分', | |
120 | + ALL = t('rule.linkedge.index.all') as any, | |
121 | + PART = t('rule.linkedge.index.part') as any, | |
118 | 122 | } |
119 | 123 | |
120 | 124 | export enum TriggerValueTypeEnum { |
... | ... | @@ -125,10 +129,10 @@ export enum TriggerValueTypeEnum { |
125 | 129 | } |
126 | 130 | |
127 | 131 | export enum TriggerValueTypeNameEnum { |
128 | - NUMERIC = '数字', | |
129 | - BOOLEAN = '布尔值', | |
130 | - STRING = '字符串', | |
131 | - DATE_TIME = '时间', | |
132 | + NUMERIC = t('rule.linkedge.index.number') as any, | |
133 | + BOOLEAN = t('rule.linkedge.index.boolean') as any, | |
134 | + STRING = t('rule.linkedge.index.string') as any, | |
135 | + DATE_TIME = t('rule.linkedge.index.dataTime') as any, | |
132 | 136 | } |
133 | 137 | |
134 | 138 | export enum TriggerUnitEnum { |
... | ... | @@ -139,10 +143,10 @@ export enum TriggerUnitEnum { |
139 | 143 | } |
140 | 144 | |
141 | 145 | export enum TriggerUnitNameEnum { |
142 | - SECONDS = '秒', | |
143 | - MINUTES = '分', | |
144 | - HOURS = '时', | |
145 | - DAYS = '天', | |
146 | + SECONDS = t('rule.linkedge.index.seconds') as any, | |
147 | + MINUTES = t('rule.linkedge.index.minutes') as any, | |
148 | + HOURS = t('rule.linkedge.index.hours') as any, | |
149 | + DAYS = t('rule.linkedge.index.days') as any, | |
146 | 150 | } |
147 | 151 | |
148 | 152 | export enum ExecutionActionEnum { |
... | ... | @@ -151,6 +155,6 @@ export enum ExecutionActionEnum { |
151 | 155 | } |
152 | 156 | |
153 | 157 | export enum ExecutionActionNameEnum { |
154 | - DEVICE_OUT = '设备输出', | |
155 | - MSG_NOTIFY = '告警输出', | |
158 | + DEVICE_OUT = t('rule.linkedge.index.deviceOut') as any, | |
159 | + MSG_NOTIFY = t('rule.linkedge.index.msgNotify') as any, | |
156 | 160 | } | ... | ... |
... | ... | @@ -5,3 +5,21 @@ export enum MessageEnum { |
5 | 5 | IS_VOICE = 'VOICE_MESSAGE', |
6 | 6 | IS_ENTERPRISE_WECHAT = 'ENTERPRISE_WECHAT_MESSAGE', |
7 | 7 | } |
8 | + | |
9 | +export enum NotifyTypeEnum { | |
10 | + NOTICE = 'NOTICE', | |
11 | + MEETING = 'MEETING', | |
12 | + OTHER = 'OTHER', | |
13 | +} | |
14 | + | |
15 | +export enum ReadStatusEnum { | |
16 | + Unread, | |
17 | + Read, | |
18 | + Other, | |
19 | +} | |
20 | + | |
21 | +export enum ReadStatusColorEnum { | |
22 | + Unread = 'yellow', | |
23 | + Read = 'green', | |
24 | + Other = 'red', | |
25 | +} | ... | ... |
... | ... | @@ -14,9 +14,9 @@ export enum FunctionTypeEnum { |
14 | 14 | } |
15 | 15 | |
16 | 16 | export enum FunctionTypeNameEnum { |
17 | - PROPERTIES = '属性', | |
18 | - SERVICE = '服务', | |
19 | - EVENTS = '事件', | |
17 | + PROPERTIES = 'deviceManagement.product.properties', | |
18 | + SERVICE = 'deviceManagement.product.services', | |
19 | + EVENTS = 'deviceManagement.product.events', | |
20 | 20 | } |
21 | 21 | |
22 | 22 | export enum ObjectEventTypeEnum { |
... | ... | @@ -26,9 +26,9 @@ export enum ObjectEventTypeEnum { |
26 | 26 | } |
27 | 27 | |
28 | 28 | export enum ObjectEventTypeNameEnum { |
29 | - INFO = '信息', | |
30 | - ALERT = '告警', | |
31 | - ERROR = '故障', | |
29 | + INFO = 'deviceManagement.product.info', | |
30 | + ALERT = 'deviceManagement.product.alert', | |
31 | + ERROR = 'deviceManagement.product.error', | |
32 | 32 | } |
33 | 33 | |
34 | 34 | export enum ObjectModelAccessModeEnum { |
... | ... | @@ -71,29 +71,6 @@ export enum OriginalDataTypeEnum { |
71 | 71 | BITS = 'BITS', |
72 | 72 | } |
73 | 73 | |
74 | -export enum OriginalDataTypeNameEnum { | |
75 | - INT16_AB = '16位有符号整数AB', | |
76 | - INT16_BA = '16位有符号整数BA', | |
77 | - UINT16_AB = '16位无符号整数AB', | |
78 | - UINT16_BA = '16位无符号整数BA', | |
79 | - INT32_AB_CD = '32位有符号整数AB_CD', | |
80 | - INT32_CD_AB = '32位有符号整数CD_AB', | |
81 | - INT32_BA_DC = '32位有符号整数BA_DC', | |
82 | - INT32_DC_BA = '32位有符号整数DC_BA', | |
83 | - UINT32_AB_CD = '32位无符号整数AB_CD', | |
84 | - UINT32_CD_AB = '32位无符号整数CD_AB', | |
85 | - UINT32_BA_DC = '32位无符号整数BA_DC', | |
86 | - UINT32_DC_BA = '32位无符号整数DC_BA', | |
87 | - FLOAT_AB_CD = '单精度浮点型AB_CD', | |
88 | - FLOAT_CD_AB = '单精度浮点型CD_AB', | |
89 | - FLOAT_BA_DC = '单精度浮点型BA_DC', | |
90 | - FLOAT_DC_BA = '单精度浮点型DC_BA', | |
91 | - DOUBLE = '双精度浮点型', | |
92 | - STRING = '字符串', | |
93 | - BOOLEAN = '布尔型', | |
94 | - BITS = '位', | |
95 | -} | |
96 | - | |
97 | 74 | export enum ExtendDescOperationTypeEnum { |
98 | 75 | INPUT_STATUS_R_02 = 'inputStatus_r_02', |
99 | 76 | COIL_STATUS_R_01 = 'coilStatus_r_01', |
... | ... | @@ -108,18 +85,3 @@ export enum ExtendDescOperationTypeEnum { |
108 | 85 | HOLDING_REGISTER_W_10 = 'holdingRegister_w_10', |
109 | 86 | INPUT_REGISTER_R_04 = 'inputRegister_r_04', |
110 | 87 | } |
111 | - | |
112 | -export enum ExtendDescOperationTypeNameEnum { | |
113 | - INPUT_STATUS_R_02 = '离散量输入(只读,0x02)', | |
114 | - COIL_STATUS_R_01 = '线圈状态(只读,0x01)', | |
115 | - COIL_STATUS_RW_01_05 = '线圈状态(读写,读取使用0x01,写入使用0x05)', | |
116 | - COIL_STATUS_RW_01_0F = '线圈状态(读写,读取使用0x01,写入使用0x0F)', | |
117 | - COIL_STATUS_W_05 = '线圈状态(只写,0x05)', | |
118 | - COIL_STATUS_W_0F = '线圈状态(只写,0x0F)', | |
119 | - HOLDING_REGISTER_R_03 = '保持寄存器(只读,0x03)', | |
120 | - HOLDING_REGISTER_RW_03_06 = '保持寄存器(读写,读取使用0x03,写入使用0x06)', | |
121 | - HOLDING_REGISTER_RW_03_10 = '保持寄存器(读写,读取使用0x03,写入使用0x10)', | |
122 | - HOLDING_REGISTER_W_06 = '保持寄存器(只写,0x06)', | |
123 | - HOLDING_REGISTER_W_10 = '保持寄存器(只写,0x10)', | |
124 | - INPUT_REGISTER_R_04 = '输入寄存器(只读,0x04)', | |
125 | -} | ... | ... |
... | ... | @@ -6,13 +6,6 @@ export enum DataActionModeEnum { |
6 | 6 | COPY = 'COPY', |
7 | 7 | } |
8 | 8 | |
9 | -export enum DataActionModeNameEnum { | |
10 | - CREATE = '新增', | |
11 | - READ = '查看', | |
12 | - UPDATE = '编辑', | |
13 | - DELETE = '删除', | |
14 | -} | |
15 | - | |
16 | 9 | export enum TimeUnitEnum { |
17 | 10 | SECOND = 'SECOND', |
18 | 11 | MINUTE = 'MINUTE', | ... | ... |
1 | 1 | import { ref, computed } from 'vue'; |
2 | 2 | import { BasicTableProps } from '/@/components/Table'; |
3 | 3 | import { useMessage } from '/@/hooks/web/useMessage'; |
4 | +import { useI18n } from '/@/hooks/web/useI18n'; | |
4 | 5 | |
5 | 6 | /** |
6 | 7 | * |
... | ... | @@ -25,12 +26,14 @@ interface selectionOptions { |
25 | 26 | type: 'radio' | 'checkbox'; |
26 | 27 | }; |
27 | 28 | } |
29 | + | |
28 | 30 | export function useBatchDelete( |
29 | 31 | deleteFn: (deleteIds: string[]) => Promise<void>, |
30 | 32 | handleSuccess: () => void, |
31 | 33 | setProps: (props: Partial<BasicTableProps>) => void |
32 | 34 | ) { |
33 | 35 | const { createMessage } = useMessage(); |
36 | + const { t } = useI18n(); | |
34 | 37 | const selectedRowIds = ref<string[]>([]); |
35 | 38 | const hasBatchDelete = computed(() => selectedRowIds.value.length <= 0); |
36 | 39 | // 复选框选择事件 |
... | ... | @@ -51,11 +54,11 @@ export function useBatchDelete( |
51 | 54 | try { |
52 | 55 | if (record) { |
53 | 56 | await deleteFn([record.id]); |
54 | - createMessage.success('删除成功'); | |
57 | + createMessage.success(t('common.deleteSuccessText')); | |
55 | 58 | selectedRowIds.value = []; |
56 | 59 | } else { |
57 | 60 | await deleteFn(selectedRowIds.value); |
58 | - createMessage.success('批量删除成功'); | |
61 | + createMessage.success(t('common.batchDeleteText') + t('common.successText')); | |
59 | 62 | selectedRowIds.value = []; |
60 | 63 | } |
61 | 64 | } finally { | ... | ... |
1 | 1 | <script lang="ts" setup> |
2 | - import { h } from 'vue'; | |
3 | 2 | import { useI18n } from 'vue-i18n'; |
4 | 3 | import { Description, useDescription } from '/@/components/Description'; |
5 | 4 | import { BasicModal, useModal } from '/@/components/Modal'; |
... | ... | @@ -46,40 +45,40 @@ |
46 | 45 | [FiledKey.VERSION]: softwareVersionNumber, |
47 | 46 | }, |
48 | 47 | schema: [ |
49 | - { | |
50 | - field: FiledKey.COPYRIGHT, | |
51 | - label: handleDecode(t('routes.aboutSoftware.copyrightLabel')), | |
52 | - }, | |
53 | - { | |
54 | - field: FiledKey.WEBSITE, | |
55 | - label: handleDecode(t('routes.aboutSoftware.websiteLabel')), | |
56 | - render: (val: string) => { | |
57 | - let joinWww = val.substring(0, 8) + 'www.' + val.substring(8); | |
58 | - return h( | |
59 | - 'span', | |
60 | - { class: 'text-blue-500 cursor-pointer', onClick: () => open(joinWww) }, | |
61 | - joinWww | |
62 | - ); | |
63 | - }, | |
64 | - }, | |
65 | - { | |
66 | - field: FiledKey.AUTHORIZATION, | |
67 | - label: handleDecode(t('routes.aboutSoftware.authorizationLabel')), | |
68 | - render: (val: string) => { | |
69 | - // https://community.thingskit.com/question/20.html | |
70 | - return h('div', {}, [ | |
71 | - h('span', val), | |
72 | - h( | |
73 | - 'span', | |
74 | - { | |
75 | - class: 'text-blue-500 cursor-pointer', | |
76 | - onClick: () => open('https://community.thingskit.com/question/20.html'), | |
77 | - }, | |
78 | - '点击前往' | |
79 | - ), | |
80 | - ]); | |
81 | - }, | |
82 | - }, | |
48 | + // { | |
49 | + // field: FiledKey.COPYRIGHT, | |
50 | + // label: handleDecode(t('routes.aboutSoftware.copyrightLabel')), | |
51 | + // }, | |
52 | + // { | |
53 | + // field: FiledKey.WEBSITE, | |
54 | + // label: handleDecode(t('routes.aboutSoftware.websiteLabel')), | |
55 | + // render: (val: string) => { | |
56 | + // let joinWww = val.substring(0, 8) + 'www.' + val.substring(8); | |
57 | + // return h( | |
58 | + // 'span', | |
59 | + // { class: 'text-blue-500 cursor-pointer', onClick: () => open(joinWww) }, | |
60 | + // joinWww | |
61 | + // ); | |
62 | + // }, | |
63 | + // }, | |
64 | + // { | |
65 | + // field: FiledKey.AUTHORIZATION, | |
66 | + // label: handleDecode(t('routes.aboutSoftware.authorizationLabel')), | |
67 | + // render: (val: string) => { | |
68 | + // // https://community.thingskit.com/question/20.html | |
69 | + // return h('div', {}, [ | |
70 | + // h('span', val), | |
71 | + // h( | |
72 | + // 'span', | |
73 | + // { | |
74 | + // class: 'text-blue-500 cursor-pointer', | |
75 | + // onClick: () => open('https://community.thingskit.com/question/20.html'), | |
76 | + // }, | |
77 | + // '点击前往' | |
78 | + // ), | |
79 | + // ]); | |
80 | + // }, | |
81 | + // }, | |
83 | 82 | { |
84 | 83 | field: FiledKey.VERSION, |
85 | 84 | label: handleDecode(t('routes.aboutSoftware.versionLabel')), |
... | ... | @@ -94,10 +93,10 @@ |
94 | 93 | <template> |
95 | 94 | <BasicModal |
96 | 95 | @register="register" |
97 | - :title="handleDecode(t('routes.aboutSoftware.aboutSoftware'))" | |
98 | - width="50%" | |
99 | - cancel-text="关闭" | |
96 | + :title="t('routes.menu.systemManagement.aboutSoftwareAndHelpDocuments')" | |
97 | + :width="400" | |
100 | 98 | :show-ok-btn="false" |
99 | + :min-height="100" | |
101 | 100 | > |
102 | 101 | <Description @register="registerDes" /> |
103 | 102 | </BasicModal> | ... | ... |
... | ... | @@ -3,16 +3,18 @@ |
3 | 3 | import { Tooltip } from 'ant-design-vue'; |
4 | 4 | import { usePermission } from '/@/hooks/web/usePermission'; |
5 | 5 | import { UserDropDownItemEnum } from './user-dropdown/config'; |
6 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
6 | 7 | |
7 | 8 | const handleJump = () => { |
8 | 9 | open('https://docs.thingskit.com'); |
9 | 10 | }; |
10 | 11 | |
11 | 12 | const { hasPermission } = usePermission(); |
13 | + const { t } = useI18n(); | |
12 | 14 | </script> |
13 | 15 | |
14 | 16 | <template> |
15 | - <Tooltip title="帮助文档"> | |
17 | + <Tooltip :title="t('layout.header.helpDoc')"> | |
16 | 18 | <QuestionCircleOutlined |
17 | 19 | v-if="hasPermission(UserDropDownItemEnum.ABOUT_SOFTWARE)" |
18 | 20 | class="text-base cursor-pointer" | ... | ... |
1 | 1 | import { FormSchema } from '/@/components/Table'; |
2 | 2 | import { phoneRule, emailRule } from '/@/utils/rules'; |
3 | +import { useI18n } from '/@/hooks/web/useI18n'; | |
3 | 4 | |
5 | +const { t } = useI18n(); | |
4 | 6 | export const formSchema: FormSchema[] = [ |
5 | 7 | { |
6 | 8 | field: 'realName', |
7 | - label: '用户昵称', | |
9 | + label: t('personal.index.schema.t4'), | |
8 | 10 | colProps: { span: 13 }, |
9 | 11 | required: true, |
10 | 12 | component: 'Input', |
11 | - componentProps: { | |
12 | - placeholder: '请输入用户昵称', | |
13 | - }, | |
13 | + componentProps: {}, | |
14 | 14 | }, |
15 | 15 | { |
16 | 16 | field: 'phoneNumber', |
17 | - label: '手机号码', | |
17 | + label: t('personal.index.schema.t2'), | |
18 | 18 | colProps: { span: 13 }, |
19 | 19 | required: true, |
20 | 20 | component: 'Input', |
21 | - componentProps: { | |
22 | - placeholder: '请输入手机号码', | |
23 | - }, | |
21 | + componentProps: {}, | |
24 | 22 | rules: phoneRule, |
25 | 23 | }, |
26 | 24 | { |
27 | 25 | field: 'email', |
28 | - label: '邮箱', | |
26 | + label: t('personal.index.schema.t3'), | |
29 | 27 | colProps: { span: 13 }, |
30 | 28 | required: true, |
31 | 29 | component: 'Input', |
32 | - componentProps: { | |
33 | - placeholder: '请输入邮箱', | |
34 | - }, | |
30 | + componentProps: {}, | |
35 | 31 | rules: emailRule, |
36 | 32 | }, |
37 | 33 | ]; | ... | ... |
... | ... | @@ -4,14 +4,16 @@ |
4 | 4 | v-bind="$attrs" |
5 | 5 | @register="registerModal" |
6 | 6 | @ok="handleSubmit" |
7 | - title="个人信息" | |
7 | + :title="t('personal.index.personalInformation')" | |
8 | 8 | :draggable="false" |
9 | 9 | wrap-class-name="personal-info-modal" |
10 | 10 | > |
11 | 11 | <div class="flex"> |
12 | 12 | <div class="flex flex-col w-1/2 border border-gray-200"> |
13 | 13 | <div class="text-center cursor-pointer"> |
14 | - <div class="text-left text-lg border-gray-200 p-2 border">个人头像</div> | |
14 | + <div class="text-left text-lg border-gray-200 p-2 border">{{ | |
15 | + t('personal.index.personalPicture') | |
16 | + }}</div> | |
15 | 17 | <div class="flex items-center justify-center mt-4"> |
16 | 18 | <CropperAvatar @change="handleChange" :uploadApi="uploadApi" :value="personalPicture" /> |
17 | 19 | </div> |
... | ... | @@ -19,7 +21,7 @@ |
19 | 21 | <Description @register="registerDesc" class="mt-8 p-4" /> |
20 | 22 | </div> |
21 | 23 | <div class="ml-4 border border-gray-200"> |
22 | - <div class="text-lg p-2 border border-gray-200"> 基本资料 </div> | |
24 | + <div class="text-lg p-2 border border-gray-200"> {{ t('personal.index.basic') }} </div> | |
23 | 25 | <div class="ml-5"> |
24 | 26 | <BasicForm @register="registerForm" /> |
25 | 27 | </div> |
... | ... | @@ -41,33 +43,7 @@ |
41 | 43 | import { UserInfoModel } from '/@/api/sys/model/userModel'; |
42 | 44 | import { UserInfo } from '/#/store'; |
43 | 45 | import { CropperAvatar } from '/@/components/Cropper'; |
44 | - | |
45 | - const schema: DescItem[] = [ | |
46 | - { | |
47 | - field: 'username', | |
48 | - label: '用户名称:', | |
49 | - }, | |
50 | - { | |
51 | - field: 'phoneNumber', | |
52 | - label: '手机号码:', | |
53 | - }, | |
54 | - { | |
55 | - field: 'email', | |
56 | - label: '用户邮箱:', | |
57 | - }, | |
58 | - { | |
59 | - field: 'realName', | |
60 | - label: '用户昵称:', | |
61 | - }, | |
62 | - { | |
63 | - field: 'accountExpireTime', | |
64 | - label: '过期时间:', | |
65 | - }, | |
66 | - { | |
67 | - field: 'createTime', | |
68 | - label: '创建时间:', | |
69 | - }, | |
70 | - ]; | |
46 | + import { useI18n } from '/@/hooks/web/useI18n'; | |
71 | 47 | |
72 | 48 | export default defineComponent({ |
73 | 49 | name: 'Index', |
... | ... | @@ -79,9 +55,37 @@ |
79 | 55 | }, |
80 | 56 | emits: ['refreshPersonal', 'register'], |
81 | 57 | setup(_, { emit }) { |
58 | + const { t } = useI18n(); | |
82 | 59 | const loading = ref(false); |
83 | 60 | const { createMessage } = useMessage(); |
84 | 61 | |
62 | + const schema: DescItem[] = [ | |
63 | + { | |
64 | + field: 'username', | |
65 | + label: t('personal.index.schema.t1'), | |
66 | + }, | |
67 | + { | |
68 | + field: 'phoneNumber', | |
69 | + label: t('personal.index.schema.t2'), | |
70 | + }, | |
71 | + { | |
72 | + field: 'email', | |
73 | + label: t('personal.index.schema.t3'), | |
74 | + }, | |
75 | + { | |
76 | + field: 'realName', | |
77 | + label: t('personal.index.schema.t4'), | |
78 | + }, | |
79 | + { | |
80 | + field: 'accountExpireTime', | |
81 | + label: t('personal.index.schema.t5'), | |
82 | + }, | |
83 | + { | |
84 | + field: 'createTime', | |
85 | + label: t('personal.index.schema.t6'), | |
86 | + }, | |
87 | + ]; | |
88 | + | |
85 | 89 | const userStore = useUserStore(); |
86 | 90 | const personalPicture = ref<string>(); |
87 | 91 | |
... | ... | @@ -119,7 +123,7 @@ |
119 | 123 | }); |
120 | 124 | |
121 | 125 | userStore.setUserInfo(record as unknown as UserInfo); |
122 | - createMessage.success('修改成功'); | |
126 | + createMessage.success(t('common.editOkText')); | |
123 | 127 | closeModal(); |
124 | 128 | resetFields(); |
125 | 129 | emit('refreshPersonal', record); |
... | ... | @@ -136,6 +140,7 @@ |
136 | 140 | headerImg, |
137 | 141 | uploadApi, |
138 | 142 | handleChange, |
143 | + t, | |
139 | 144 | }; |
140 | 145 | }, |
141 | 146 | }); | ... | ... |
... | ... | @@ -16,19 +16,19 @@ |
16 | 16 | <MenuItem |
17 | 17 | v-if="hasPermission(UserDropDownItemEnum.PERSONAL_CENTER)" |
18 | 18 | key="personal" |
19 | - :text="t('layout.header.dropdownItemPersonal')" | |
19 | + :text="t('routes.menu.systemManagement.personalCenter')" | |
20 | 20 | icon="ion:document-text-outline" |
21 | 21 | /> |
22 | 22 | <MenuItem |
23 | 23 | v-if="hasPermission(UserDropDownItemEnum.FORGOT_PASSWORD)" |
24 | 24 | key="changePassword" |
25 | - :text="t('layout.header.dropdownItemChangePassword')" | |
25 | + :text="t('routes.menu.systemManagement.changePassword')" | |
26 | 26 | icon="ant-design:unlock-twotone" |
27 | 27 | /> |
28 | 28 | <MenuItem |
29 | 29 | v-if="hasPermission(UserDropDownItemEnum.ABOUT_SOFTWARE)" |
30 | 30 | key="aboutSoftware" |
31 | - :text="handleDecode(t('routes.aboutSoftware.aboutSoftware'))" | |
31 | + :text="t('routes.menu.systemManagement.aboutSoftwareAndHelpDocuments')" | |
32 | 32 | icon="ant-design:message-outline" |
33 | 33 | /> |
34 | 34 | <MenuItem | ... | ... |
src/locales/lang/en/application/api.ts
0 → 100644
1 | +export default { | |
2 | + action: { | |
3 | + create: 'Add', | |
4 | + edit: 'Edit', | |
5 | + detail: 'Detail', | |
6 | + }, | |
7 | + search: { | |
8 | + apiNamePlaceholder: 'Please enter the API name', | |
9 | + interfaceAddressPlaceholder: 'Please enter the interface address', | |
10 | + documentUrlPlaceholder: 'Please enter the document address', | |
11 | + }, | |
12 | + text: { | |
13 | + name: 'API name', | |
14 | + categoryName: 'Category name', | |
15 | + interfaceAddress: 'Interface address', | |
16 | + requestMethod: 'Request method', | |
17 | + interfaceParams: 'Interface params', | |
18 | + documentUrl: 'Document url', | |
19 | + }, | |
20 | +}; | ... | ... |
src/locales/lang/en/application/config.ts
0 → 100644
1 | +export default { | |
2 | + action: { | |
3 | + create: 'Create application', | |
4 | + edit: 'Edit application', | |
5 | + view: 'View application', | |
6 | + }, | |
7 | + search: { | |
8 | + name: 'Application name', | |
9 | + applicationNamePlaceholder: 'Please enter the application name', | |
10 | + keyPlaceholder: 'Please enter the key', | |
11 | + secretPlaceholder: 'Please enter the secret', | |
12 | + organizationPlaceholder: 'Please select an organization', | |
13 | + }, | |
14 | + text: { | |
15 | + organizationName: 'Organization', | |
16 | + key: 'key', | |
17 | + secret: 'secret', | |
18 | + apiPermissionText: 'API permission allocation', | |
19 | + }, | |
20 | + tab: { | |
21 | + edgeDevice: 'Edge Device', | |
22 | + edgeMonitoring: 'Edge Monitoring', | |
23 | + edgeEvent: 'Edge Event', | |
24 | + }, | |
25 | + message: { | |
26 | + cancelAssignSuccess: 'Assignment Cancelled Successfully', | |
27 | + syncSuccess: 'Edge Sync Processed Successfully', | |
28 | + attributeDeliverySuccess: 'Attribute Issued Successfully', | |
29 | + }, | |
30 | + confirm: { | |
31 | + cancelAssign: 'Are you sure you want to cancel the edge assignment?', | |
32 | + }, | |
33 | + classifyText: { | |
34 | + device: 'DEVICE', | |
35 | + alarm: 'ALARM', | |
36 | + video: 'VIDEO', | |
37 | + statistics: 'STATISTICS', | |
38 | + system: 'SYSTEM', | |
39 | + }, | |
40 | +}; | ... | ... |
src/locales/lang/en/application/record.ts
0 → 100644
1 | +export default { | |
2 | + search: { | |
3 | + name: 'Application name', | |
4 | + applicationNamePlaceholder: 'Please enter the application name', | |
5 | + keyPlaceholder: 'Please enter the key', | |
6 | + secretPlaceholder: 'Please enter the secret', | |
7 | + organizationPlaceholder: 'Please select an organization', | |
8 | + }, | |
9 | + text: { | |
10 | + apiName: 'API name', | |
11 | + applicationName: 'Application name', | |
12 | + categoryName: 'Category name', | |
13 | + interfaceResponse: 'Interface response', | |
14 | + callTime: 'Call time', | |
15 | + accumulatedNumberOfCalls: 'Accumulated number of calls', | |
16 | + numberOfSuccessfulAttempts: 'Number of successful attempts', | |
17 | + numberOfFailedAttempts: 'Number of failed attempts', | |
18 | + lineTitle: 'Top Five API calls', | |
19 | + pieTitle: 'Proportion of API calls', | |
20 | + timeLineTitle: 'Interface call history', | |
21 | + timeSelect: { | |
22 | + oneHour: 'One Hour', | |
23 | + sevenDays: 'Seven Days', | |
24 | + thirtyDays: 'Thirty Days', | |
25 | + }, | |
26 | + totalText: { | |
27 | + t1: 'Total number of API calls', | |
28 | + t2: 'Number of successful attempts', | |
29 | + t3: 'Number of failures', | |
30 | + }, | |
31 | + interfaceStatus: 'Interface Status', | |
32 | + totalNumberOfCalls: 'Total Number Of Calls', | |
33 | + }, | |
34 | +}; | ... | ... |
src/locales/lang/en/business.ts
0 → 100644
1 | +export default { | |
2 | + productText: 'Product', | |
3 | + deviceText: 'Device ', | |
4 | + attributeText: 'Attribute', | |
5 | + organizationText: 'Organization', | |
6 | + tenantText: 'Tenant', | |
7 | + customerText: 'Customer', | |
8 | + affiliatedOrganizationText: 'Affiliated @:business.organizationText', | |
9 | + affiliatedProductText: 'Affiliated @:business.productText', | |
10 | + affiliatedGatewayText: 'Affiliated gatewat', | |
11 | + gatewayText: 'Gateway device', | |
12 | + deviceNameText: 'Device name', | |
13 | + deviceTypeText: 'Device type', | |
14 | + deviceStatusText: 'Device status', | |
15 | + deviceImageText: 'Device image', | |
16 | + publicText: 'Public', | |
17 | + privateText: 'Private', | |
18 | + deviceLocationText: 'Device location', | |
19 | + longitudeText: 'Longitude', | |
20 | + latitudeText: 'Latitude', | |
21 | + aliasText: 'Alias', | |
22 | + thingsModelText: 'Things model', | |
23 | + playText: 'Play', | |
24 | + stopText: 'Stop', | |
25 | + | |
26 | + socketTimeoutText: 'Websocket connection timeout', | |
27 | + attributeDelivertText: 'Attribute delivery', | |
28 | + historyTrendText: 'History trend', | |
29 | + commandDeliveryText: 'Command delivery', | |
30 | + serviceText: 'Service', | |
31 | + dateRangeText: 'Date range', | |
32 | +}; | ... | ... |
... | ... | @@ -4,17 +4,301 @@ export default { |
4 | 4 | cancelText: 'Cancel', |
5 | 5 | loadingText: 'Loading...', |
6 | 6 | saveText: 'Save', |
7 | - delText: 'Delete', | |
7 | + delText: 'Delete ', | |
8 | 8 | resetText: 'Reset', |
9 | 9 | searchText: 'Search', |
10 | 10 | queryText: 'Search', |
11 | + viewText: 'View', | |
12 | + createText: 'Create ', | |
13 | + appendText: 'Append', | |
14 | + copyText: 'Copy ', | |
15 | + editText: 'Edit ', | |
16 | + sendText: 'Sending', | |
17 | + detailText: 'Detail ', | |
18 | + setupText: 'Set up', | |
19 | + exportText: 'Export', | |
20 | + downloadText: 'Download', | |
21 | + isExport: 'Do you need to export', | |
22 | + batchDeleteText: 'Batch deletion', | |
23 | + batchingText: 'Batching', | |
24 | + handleText: 'Handle', | |
25 | + clearText: 'Clean up', | |
26 | + batchClearText: 'Batch Clearing', | |
27 | + cardModeText: 'Card mode', | |
28 | + listModeText: 'List mode', | |
29 | + successText: 'success', | |
30 | + failText: 'Fail', | |
31 | + progressText: 'In progress', | |
32 | + sendSuccessText: 'Successfully sent', | |
33 | + deleteSuccessText: 'Delete success', | |
34 | + deleteFailedText: 'Delete failed', | |
35 | + createSuccessText: 'Create success', | |
36 | + createFailedText: 'Create Failed', | |
37 | + editSuccessText: 'Update success', | |
38 | + editFailedText: 'Update Failed', | |
39 | + importSuccessText: 'Import success', | |
40 | + importJSONFailed: 'JSON parsing failed. Please import the correct JSON', | |
41 | + deleteConfirmText: 'Do you confirm the deletion operation?', | |
42 | + batchDeleteConfirmText: 'Do you confirm the batch deletion operation?', | |
11 | 43 | |
12 | - inputText: 'Please enter', | |
13 | - chooseText: 'Please choose', | |
44 | + inputText: 'Please enter ', | |
45 | + chooseText: 'Please choose ', | |
14 | 46 | |
15 | 47 | redo: 'Refresh', |
16 | 48 | back: 'Back', |
17 | 49 | |
18 | 50 | light: 'Light', |
19 | 51 | dark: 'Dark', |
52 | + | |
53 | + customText: 'Custom', | |
54 | + moreText: 'More', | |
55 | + platformText: 'Platform', | |
56 | + pcText: 'PC', | |
57 | + phoneText: 'Phone', | |
58 | + remarkText: 'Remark', | |
59 | + openText: 'open', | |
60 | + shareText: 'Share', | |
61 | + releaseText: 'Release', | |
62 | + batchText: 'Batch', | |
63 | + cancelReleaseText: 'Cancel Release', | |
64 | + isDelete: 'Are you sure you want to delete it ?', | |
65 | + publishedText: 'Published', | |
66 | + unpublishedText: 'Unpublished', | |
67 | + enabledText: 'Enabled', | |
68 | + notEnabledText: 'not enabled', | |
69 | + normalText: 'Normal', | |
70 | + disabledText: 'Disabled', | |
71 | + deactivatedText: 'Deactivated', | |
72 | + | |
73 | + deactivateText: 'Deactivate', | |
74 | + expiredText: 'Expired', | |
75 | + designText: 'Design', | |
76 | + previewText: 'Preview', | |
77 | + batchdelText: 'Batch Delete', | |
78 | + accessText: 'Access', | |
79 | + linkText: 'Link', | |
80 | + promptText: 'Prompt', | |
81 | + increaseOkText: 'Added successfully', | |
82 | + editOkText: 'Modified successfully', | |
83 | + successfullyOkText: 'Successfully processed', | |
84 | + disabledSuccessOkText: 'Successfully disabled', | |
85 | + enabledSuccessOkText: 'Successfully enabled', | |
86 | + releaseOkText: 'Release OK', | |
87 | + cancelReleaseOkText: 'Cancel release ok', | |
88 | + alarmLevelText: 'Alarm level', | |
89 | + alarmLevel1Text: 'Alarm level', | |
90 | + alarmScenarioText: 'Alarm scene', | |
91 | + | |
92 | + operateTable: 'operate', | |
93 | + requestType: 'Request type', | |
94 | + interfaceAddress: 'Interface Address', | |
95 | + formatButton: 'Format', | |
96 | + clickCopyLink: 'Click to copy the connection', | |
97 | + copyOk: 'Copy successful!', | |
98 | + copyFail: 'Copy fail!', | |
99 | + | |
100 | + timeText: 'Time', | |
101 | + | |
102 | + createTimeText: 'Create time', | |
103 | + updateTimeText: 'Update time', | |
104 | + actionText: 'Action', | |
105 | + | |
106 | + yesText: 'Yes', | |
107 | + noText: 'No', | |
108 | + listText: 'List', | |
109 | + lastStepText: 'Last step', | |
110 | + nextStepText: 'Next step', | |
111 | + descText: 'Description', | |
112 | + onText: 'On', | |
113 | + offText: 'Off', | |
114 | + | |
115 | + enableText: 'Enable', | |
116 | + disableText: 'Disable', | |
117 | + | |
118 | + cycle: 'Cycle', | |
119 | + monthly: 'Monthly', | |
120 | + monthlyPlace: '@:common.inputText month', | |
121 | + weekly: 'Weekly', | |
122 | + daily: 'Daily', | |
123 | + operationSuccessText: 'Successful operation', | |
124 | + private: 'Private', | |
125 | + public: 'Public', | |
126 | + | |
127 | + markRead: 'Mark read', | |
128 | + permissionConfiguration: 'Permission configuration', | |
129 | + status: 'Status', | |
130 | + limitTextLengthIs: 'The word count should not exceed 255 words', | |
131 | + limitUploadText1: | |
132 | + 'support. PNG,. JPG format, recommended size is 32 * 32px, size should not exceed 5M', | |
133 | + limitUploadText2: 'Support ICO format, recommended size is 16 * 16px', | |
134 | + limitUploadText3: | |
135 | + 'support. PNG and. JPG formats are recommended, with a size of 1920 * 1080px or more and a size not exceeding 5M', | |
136 | + limitUploadText4: | |
137 | + 'support. PNG,. JPG format, recommended size is 800 * 600px, size should not exceed 5M', | |
138 | + limitUploadText5: | |
139 | + 'support. PNG,. JPG format, recommended size is 300 * 300px, size should not exceed 5M', | |
140 | + uploadText: 'Upload', | |
141 | + reUploadText: 'Re-upload', | |
142 | + saveInfo: 'Save', | |
143 | + reset: 'Reset', | |
144 | + uploadingProgress: 'Uploading in progress', | |
145 | + province: 'Province', | |
146 | + city: 'City', | |
147 | + district: 'District/County', | |
148 | + town: 'Town/Street', | |
149 | + organizationList: 'Organization List', | |
150 | + default: 'DEFAULT', | |
151 | + deviceType: { | |
152 | + gateway: 'GATEWAY', | |
153 | + direct: 'DIRECT_CONNECTION', | |
154 | + sensor: 'SENSOR', | |
155 | + }, | |
156 | + messageFormat: 'Message Format', | |
157 | + select: 'Select', | |
158 | + selected: 'Selected', | |
159 | + deviceTypeText: 'Device Type', | |
160 | + organizationId: 'organizationId', | |
161 | + device: 'Device', | |
162 | + assignDevices: 'Assign devices to the edge', | |
163 | + assign: 'Assign', | |
164 | + assignSuccessful: 'Assign Successful', | |
165 | + sort: 'Sort', | |
166 | + handleRecordText: 'Handling online and offline records', | |
167 | + edgeFlag: 'Edge', | |
168 | + edgeDeviceOperationConfirm: 'This product comes from the side, please handle with caution', | |
169 | + handleRecordDetailText: 'Record details of online and offline activities', | |
170 | + requestTypeAndUrl: 'Please fill in the request type and url', | |
171 | + interfaceContent: 'Interface content', | |
172 | + template: 'Template', | |
173 | + ruleErrors: { | |
174 | + r1: 'The email format is incorrect', | |
175 | + r2: 'The format of the phone number is incorrect', | |
176 | + }, | |
177 | + fullName: 'Full name', | |
178 | + resetSystem: 'Restore factory settings', | |
179 | + streamingConfig: 'Streaming config', | |
180 | + currentPassword: 'Current password', | |
181 | + newPassword: 'New password', | |
182 | + confirmPassword: 'Confirm password', | |
183 | + publicSuccess: 'Public success', | |
184 | + publicError: 'Public error', | |
185 | + privateSuccess: 'Private success', | |
186 | + privateError: 'Private error', | |
187 | + regValidateError: 'The input content cannot be in Chinese', | |
188 | + enabled: 'ENABLED', | |
189 | + notEnabled: 'Not enabled', | |
190 | + sortOperation: { | |
191 | + isTop: 'Top up', | |
192 | + moveUp: 'Move up', | |
193 | + moveDown: 'Move down', | |
194 | + isBottom: 'Top down', | |
195 | + }, | |
196 | + createParams: 'Create params', | |
197 | + placeSelectOrg: 'Please select an organization first', | |
198 | + jsonEditorOperationIconText: { | |
199 | + neat: 'Neat', | |
200 | + mini: 'Mini', | |
201 | + fullScreen: 'Full screen', | |
202 | + }, | |
203 | + placeInputRealName: 'Please enter your real name', | |
204 | + disabled: 'Disable', | |
205 | + example: 'Example', | |
206 | + accessToken: 'Access token', | |
207 | + placeInputAccessToken: 'Please enter access token', | |
208 | + selectProduct: 'Select product', | |
209 | + selectDevice: 'Please Select device', | |
210 | + selectDeviceModal: { | |
211 | + title: 'Device select', | |
212 | + close: 'Close', | |
213 | + pendingDevice: 'Pending device', | |
214 | + selectDevice: 'Select Device:', | |
215 | + okSelect: 'Ok select', | |
216 | + cancelSelect: 'Cancel select', | |
217 | + selectedDevice: 'Selected device', | |
218 | + }, | |
219 | + pleaseInputServiceCommand: 'Please enter the service command', | |
220 | + serviceCommand: 'Service command', | |
221 | + requiredField: 'Required field', | |
222 | + commonText: 'Common', | |
223 | + commonTotalText: 'Article data', | |
224 | + belongingProducts: 'Belonging products', | |
225 | + belongingOrganization: 'Belonging organization', | |
226 | + deviceName: 'Device name', | |
227 | + javascriptText: ` | |
228 | + var params = msg['params']; | |
229 | + /*Gateway uplink script*/ | |
230 | + var teleData = {'{}'}; | |
231 | + /*Model data (optional): Raw data*/ | |
232 | + teleData.source = params; | |
233 | + /*Gateway device:slaveDevice It is the "device identifier" of the gateway sub device*/ | |
234 | + var slaveDevice = params.substr(0, 2); | |
235 | + teleData[slaveDevice] = params; | |
236 | + msg.datas = teleData; | |
237 | + msg.telemetry = true; | |
238 | + /*Required: true represents telemetry data reported by the device, false represents response data issued by the command*/ | |
239 | + delete msg.params; | |
240 | + return {'{msg: msg}'}; | |
241 | + `, | |
242 | + tbelText: ` | |
243 | + var params = msg['params']; | |
244 | + /*Gateway uplink script*/ | |
245 | + var teleData = {'{}'}; | |
246 | + /*Model data (optional): Raw data*/ | |
247 | + teleData.source = params; | |
248 | + /*Gateway device:slaveDevice It is the "device identifier" of the gateway sub device*/ | |
249 | + var slaveDevice = params.substring(0, 2); | |
250 | + teleData[slaveDevice] = params; | |
251 | + msg.datas = teleData; | |
252 | + msg.telemetry = true; | |
253 | + /*Required: true represents telemetry data reported by the device, false represents response data issued by the command*/ | |
254 | + msg.remove('params'); | |
255 | + return {'{msg: msg}'}; | |
256 | + `, | |
257 | + directWithSensorJavascript: ` | |
258 | + var teleData = {'{}'}; | |
259 | + var params = msg['params']; | |
260 | + /*Model data (optional): Raw data*/ | |
261 | + teleData.source = params; | |
262 | + /*Direct connected device: tempVal is the identifier for the attribute defined in the product model*/ | |
263 | + var tempVal = params; | |
264 | + /*Object model temperature identifier*/ | |
265 | + teleData.temp = (parseInt('0x'+tempVal.substr(10, 4))*0.1).toFixed(2); | |
266 | + /*Model humidity identifier*/ | |
267 | + teleData.wet = (parseInt('0x'+tempVal.substr(6, 4))*0.1).toFixed(2); | |
268 | + /*物模型开关标识符*/ | |
269 | + teleData.switch = parseInt('0x'+tempVal.substr(7, 1)); | |
270 | + msg.datas = teleData; | |
271 | + /*Required: true represents telemetry data reported by the device, false represents response data issued by the command*/ | |
272 | + msg.telemetry = true; | |
273 | + delete msg.params | |
274 | + /*Required: true represents telemetry data reported by the device, false represents response data issued by the command*/ | |
275 | + return {msg: msg};`, | |
276 | + directWithSensorTbel: ` | |
277 | + var teleData = {'{}'}; | |
278 | + var params = msg['params']; | |
279 | + /*Model data (optional): Raw data*/ | |
280 | + teleData.source = params; | |
281 | + /*Direct connected device: tempVal is the identifier for the attribute defined in the product model*/ | |
282 | + var tempVal = params; | |
283 | + /*The value obtained from the temperature identifier of the physical model is 136 divided by 10*/ | |
284 | + teleData.temp = parseFloat(Integer.parseInt(tempVal.substring(10, 14), 16))/10; | |
285 | + /*Model humidity identifier*/ | |
286 | + teleData.wet = parseFloat(Integer.parseInt(tempVal.substring(6, 10), 16))/10; | |
287 | + /*Object model switch identifier*/ | |
288 | + teleData.switch = Integer.parseInt(tempVal.substring(7, 8), 16); | |
289 | + msg.datas = teleData; | |
290 | + /*Required: true represents telemetry data reported by the device, false represents response data issued by the command*/ | |
291 | + msg.telemetry = true; | |
292 | + msg.remove('params'); | |
293 | + /*Required: true represents telemetry data reported by the device, false represents response data issued by the command*/ | |
294 | + return {'{msg: msg}'};`, | |
295 | + placeSelectChannelNumber: 'Please select the channel number', | |
296 | + placeSelectDeviceChannelNumber: 'Please select the device channel number', | |
297 | + selectAll: 'Select all', | |
298 | + batchAdditionSuccessful: 'Batch addition successful', | |
299 | + documentUrl: 'Interface address', | |
300 | + modifiedDeviceCredentials: 'Successfully modified device credentials', | |
301 | + channelSynchronizedMessageText: | |
302 | + 'The channel has been synchronized. Please refresh later to view the results', | |
303 | + stopped: 'Stopped', | |
20 | 304 | }; | ... | ... |
... | ... | @@ -118,6 +118,10 @@ export default { |
118 | 118 | uploading: 'Uploading', |
119 | 119 | uploadWait: 'Please wait for the file upload to finish', |
120 | 120 | reUploadFailed: 'Re-upload failed files', |
121 | + | |
122 | + dragUploadHelpText: 'Click Upload or drag Upload', | |
123 | + allowAccept: 'The types of files that can be uploaded include {accept}', | |
124 | + fileSizeOverflow: 'File size exceeds {size}', | |
121 | 125 | }, |
122 | 126 | verify: { |
123 | 127 | error: 'verification failed!', |
... | ... | @@ -126,4 +130,55 @@ export default { |
126 | 130 | dragText: 'Hold down the slider and drag', |
127 | 131 | successText: 'Verified', |
128 | 132 | }, |
133 | + cardList: { | |
134 | + selectAllText: 'Select all', | |
135 | + invertSelectionText: 'Invert selection', | |
136 | + layoutText: 'Layout', | |
137 | + refreshText: 'Refresh', | |
138 | + }, | |
139 | + areaChart: { | |
140 | + trendText: 'Trend', | |
141 | + historyText: 'History', | |
142 | + modalTitle: '@:components:areaChart.trendText@:components:areaChart.historyText', | |
143 | + notData: 'There is currently no data available, please select a device to query', | |
144 | + attrText: 'Attribute', | |
145 | + priceText: 'Price', | |
146 | + updateTimeText: 'Update time', | |
147 | + search: { | |
148 | + name: '@:business.deviceText', | |
149 | + method: 'Query Method', | |
150 | + methodFinal: 'Final', | |
151 | + methodTime: 'Time', | |
152 | + required: 'required option', | |
153 | + finalData: 'Final data', | |
154 | + agg: 'Data aggregation function', | |
155 | + interval: 'Grouping Intervals', | |
156 | + maxNumber: 'Max Number', | |
157 | + messageMax: | |
158 | + 'According to the query criteria, the number of data found does not exceed this value, and the maximum supported number of queries is 50000', | |
159 | + deviceAttr: 'Device Properties', | |
160 | + sortData: 'Data sorting', | |
161 | + }, | |
162 | + }, | |
163 | + empty: { | |
164 | + noData: 'There is currently no data available', | |
165 | + }, | |
166 | + fieldTime: { | |
167 | + timeText: 'time', | |
168 | + }, | |
169 | + orgSelect: { | |
170 | + createOrganizationText: '@:common.createText@:business.organizationText', | |
171 | + affiliatedOrganizationText: 'Affiliated @:business.organizationText', | |
172 | + }, | |
173 | + apiSelect: { | |
174 | + deviceType: '@:common.chooseText Device type', | |
175 | + organization: '@:common.chooseText organization', | |
176 | + product: '@:common.chooseText product', | |
177 | + device: '@:commono.chooseText @:business.deviceText', | |
178 | + }, | |
179 | + jsonEditor: { | |
180 | + format: 'Format', | |
181 | + mini: 'Mini', | |
182 | + fullscreen: 'Fullscreen', | |
183 | + }, | |
129 | 184 | }; | ... | ... |
src/locales/lang/en/designer_config/actions/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 动作 英文配置文件 | |
3 | - 目前共有22个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - title: 'Action', | |
7 | - description: 'Perform special actions', | |
8 | - assignToCustomer: { | |
9 | - name: 'assign to customer', | |
10 | - details: `Finds target Customer by customer name pattern and then assign Originator Entity to this customer. Will create new Customer if it doesn't exists and 'Create new Customer if not exists' is set to true.`, | |
11 | - description: 'Assign Message Originator Entity to Customer', | |
12 | - }, | |
13 | - clearAlarm: { | |
14 | - name: 'clear alarm', | |
15 | - details: `Details - JS function that creates JSON object based on incoming message. This object will be added into Alarm.details field.\nNode output:\nIf alarm was not cleared, original message is returned. Otherwise new Message returned with type 'ALARM', Alarm object in 'msg' property and 'metadata' will contains 'isClearedAlarm' property. Message payload can be accessed via <code>msg</code> property. For example <code>'temperature = ' + msg.temperature ;</code>. Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>.`, | |
16 | - description: 'Clear Alarm', | |
17 | - }, | |
18 | - copyToView: { | |
19 | - name: 'copy to view', | |
20 | - details: `Copy attributes from asset/device to related entity view according to entity view configuration. \n Copy will be done only for attributes that are between start and end dates and according to attribute keys configuration. \nChanges message originator to related entity view and produces new messages according to count of updated entity views`, | |
21 | - description: | |
22 | - 'Copy attributes from asset/device to entity view and changes message originator to related entity view', | |
23 | - }, | |
24 | - createAlarm: { | |
25 | - name: 'create alarm', | |
26 | - details: `Details - JS function that creates JSON object based on incoming message. This object will be added into Alarm.details field.\nNode output:\nIf alarm was not created, original message is returned. Otherwise new Message returned with type 'ALARM', Alarm object in 'msg' property and 'metadata' will contains one of those properties 'isNewAlarm/isExistingAlarm'. Message payload can be accessed via <code>msg</code> property. For example <code>'temperature = ' + msg.temperature ;</code>. Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>.`, | |
27 | - description: 'Create or Update Alarm', | |
28 | - }, | |
29 | - createRelation: { | |
30 | - name: 'create relation', | |
31 | - details: `If the relation already exists or successfully created - Message send via <b>Success</b> chain, otherwise <b>Failure</b> chain will be used.`, | |
32 | - description: `Finds target Entity by entity name pattern and (entity type pattern for Asset, Device) and then create a relation to Originator Entity by type and direction. If Selected entity type: Asset, Device or Customer will create new Entity if it doesn't exist and selected checkbox 'Create new entity if not exists'.<br> In case that relation from the message originator to the selected entity not exist and If selected checkbox 'Remove current relations', before creating the new relation all existed relations to message originator by type and direction will be removed.<br> If relation from the message originator to the selected entity created and If selected checkbox 'Change originator to related entity', outbound message will be processed as a message from this entity.`, | |
33 | - }, | |
34 | - deleteRelation: { | |
35 | - name: 'delete relation', | |
36 | - details: `If the relation(s) successfully deleted - Message send via <b>Success</b> chain, otherwise <b>Failure</b> chain will be used.`, | |
37 | - description: `Finds target Entity by entity name pattern and then delete a relation to Originator Entity by type and direction if 'Delete single entity' is set to true, otherwise rule node will delete all relations to the originator of the message by type and direction.`, | |
38 | - }, | |
39 | - delay: { | |
40 | - name: 'delay (deprecated)', | |
41 | - details: `Delays messages for a configurable period. Please note, this node acknowledges the message from the current queue (message will be removed from queue). Deprecated because the acknowledged message still stays in memory (to be delayed) and this does not guarantee that message will be processed even if the "retry failures and timeouts" processing strategy will be chosen.`, | |
42 | - description: `Delays incoming message (deprecated)`, | |
43 | - }, | |
44 | - deviceProfile: { | |
45 | - name: 'device profile', | |
46 | - details: `Create and clear alarms based on alarm rules defined in device profile. The output relation type is either 'Alarm Created', 'Alarm Updated', 'Alarm Severity Updated' and 'Alarm Cleared' or simply 'Success' if no alarms were affected.`, | |
47 | - description: `Process device messages based on device profile settings`, | |
48 | - }, | |
49 | - generator: { | |
50 | - name: 'generator', | |
51 | - details: `Generates messages with configurable period. Javascript function used for message generation.`, | |
52 | - description: `Periodically generates messages`, | |
53 | - }, | |
54 | - gpsGeofencingEvents: { | |
55 | - name: 'gps geofencing events', | |
56 | - details: `Extracts latitude and longitude parameters from incoming message and returns different events based on configuration parameters`, | |
57 | - description: `Produces incoming messages using GPS based geofencing`, | |
58 | - }, | |
59 | - log: { | |
60 | - name: 'log', | |
61 | - details: `Transform incoming Message with configured JS function to String and log final value into Thingsboard log file. Message payload can be accessed via <code>msg</code> property. For example <code>'temperature = ' + msg.temperature ;</code>. Message metadata can be accessed via <code>metadata</code> property. For example <code>'name = ' + metadata.customerName;</code>.`, | |
62 | - description: `Log incoming messages using JS script for transformation Message into String`, | |
63 | - }, | |
64 | - messageCount: { | |
65 | - name: 'message count', | |
66 | - details: `Count incoming messages for specified interval and produces POST_TELEMETRY_REQUEST msg with messages count`, | |
67 | - description: `Count incoming messages`, | |
68 | - }, | |
69 | - pushToEdge: { | |
70 | - name: 'push to edge', | |
71 | - details: `Push messages from cloud to edge. Message originator must be assigned to particular edge or message originator is <b>EDGE</b> entity itself. This node used only on cloud instances to push messages from cloud to edge. Once message arrived into this node it’s going to be converted into edge event and saved to the database. Node doesn't push messages directly to edge, but stores event(s) in the edge queue. <br>Supports next originator types:<br><code>DEVICE</code><br><code>ASSET</code><br><code>ENTITY_VIEW</code><br><code>DASHBOARD</code><br><code>TENANT</code><br><code>CUSTOMER</code><br><code>EDGE</code><br><br>As well node supports next message types:<br><code>POST_TELEMETRY_REQUEST</code><br><code>POST_ATTRIBUTES_REQUEST</code><br><code>ATTRIBUTES_UPDATED</code><br><code>ATTRIBUTES_DELETED</code><br><code>ALARM</code><br><br>Message will be routed via <b>Failure</b> route if node was not able to save edge event to database or unsupported originator type/message type arrived. In case successful storage edge event to database message will be routed via <b>Success</b> route.`, | |
72 | - description: `Push messages from cloud to edge`, | |
73 | - }, | |
74 | - rpcCallReply: { | |
75 | - name: 'rpc call reply', | |
76 | - details: `Expects messages with any message type. Will forward message body to the device.`, | |
77 | - description: `Sends reply to RPC call from device`, | |
78 | - }, | |
79 | - rpcCallRequest: { | |
80 | - name: 'rpc call request', | |
81 | - details: `Expects messages with "method" and "params". Will forward response from device to next nodes.If the RPC call request is originated by REST API call from user, will forward the response to user immediately.`, | |
82 | - description: `Sends RPC call to device`, | |
83 | - }, | |
84 | - saveAttributes: { | |
85 | - name: 'save attributes', | |
86 | - details: `Saves entity attributes based on configurable scope parameter. Expects messages with 'POST_ATTRIBUTES_REQUEST' message type`, | |
87 | - description: `Saves attributes data`, | |
88 | - }, | |
89 | - saveEvent: { | |
90 | - name: 'save event', | |
91 | - details: `Saves entity event . Expects messages with 'POST_EVENT_REQUEST' message type`, | |
92 | - description: `Saves device event data`, | |
93 | - }, | |
94 | - saveTimeseries: { | |
95 | - name: 'save timeseries', | |
96 | - details: `Saves timeseries telemetry data based on configurable TTL parameter. Expects messages with 'POST_TELEMETRY_REQUEST' message type. Timestamp in milliseconds will be taken from metadata.ts, otherwise 'now' message timestamp will be applied. Allows stopping updating values for incoming keys in the latest ts_kv table if 'skipLatestPersistence' is set to true.\n <br/>Enable 'useServerTs' param to use the timestamp of the message processing instead of the timestamp from the message. Useful for all sorts of sequential processing if you merge messages from multiple sources (devices, assets, etc).\n<br/>In the case of sequential processing, the platform guarantees that the messages are processed in the order of their submission to the queue. However, the timestamp of the messages originated by multiple devices/servers may be unsynchronized long before they are pushed to the queue. The DB layer has certain optimizations to ignore the updates of the \"attributes\" and \"latest values\" tables if the new record has a timestamp that is older than the previous record. So, to make sure that all the messages will be processed correctly, one should enable this parameter for sequential message processing scenarios.`, | |
97 | - description: `Saves timeseries data`, | |
98 | - }, | |
99 | - saveToCustomTable: { | |
100 | - name: 'save to custom table', | |
101 | - details: `Administrator should set the custom table name without prefix: <b>cs_tb_</b>. <br>Administrator can configure the mapping between the Message field names and Table columns name.<br><b>Note:</b>If the mapping key is <b>$entity_id</b>, that is identified by the Message Originator, then to the appropriate column name(mapping value) will be write the message originator id.<br><br>If specified message field does not exist or is not a JSON Primitive, the outbound message will be routed via <b>failure</b> chain, otherwise, the message will be routed via <b>success</b> chain.`, | |
102 | - description: `Node stores data from incoming Message payload to the Cassandra database into the predefined custom table that should have <b>cs_tb_</b> prefix, to avoid the data insertion to the common TB tables.<br><b>Note:</b> rule node can be used only for Cassandra DB.`, | |
103 | - }, | |
104 | - synchronizationEnd: { | |
105 | - name: 'synchronization end', | |
106 | - details: ``, | |
107 | - description: `This Node is now deprecated. Use "Checkpoint" instead.`, | |
108 | - }, | |
109 | - synchronizationStart: { | |
110 | - name: 'synchronization start', | |
111 | - details: `This node should be used together with "synchronization end" node. \n This node will put messages into queue based on message originator id. \nSubsequent messages will not be processed until the previous message processing is completed or timeout event occurs.\nSize of the queue per originator and timeout values are configurable on a system level`, | |
112 | - description: `This Node is now deprecated. Use "Checkpoint" instead.`, | |
113 | - }, | |
114 | - unassigFromCustomer: { | |
115 | - name: 'unassign from customer', | |
116 | - details: `Finds target Entity Customer by Customer name pattern and then unassign Originator Entity from this customer.`, | |
117 | - description: `Unassign Message Originator Entity from Customer`, | |
118 | - }, | |
119 | -}; |
src/locales/lang/en/designer_config/enrichments/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 属性集 英文配置文件 | |
3 | - 目前共有10个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - title: 'Enrichment', | |
7 | - description: 'Add additional information to message metadata', | |
8 | - calculateDelta: { | |
9 | - name: 'calculate delta', | |
10 | - details: `Calculates delta and period based on the previous time-series reading and current data. Delta calculation is done in scope of the message originator, e.g. device, asset or customer. If there is input key, the output relation will be 'Success' unless delta is negative and corresponding configuration parameter is set. If there is no input value key in the incoming message, the output relation will be 'Other'.`, | |
11 | - description: `Calculates and adds 'delta' value into message based on the incoming and previous value`, | |
12 | - }, | |
13 | - customerAttributes: { | |
14 | - name: 'customer attributes', | |
15 | - details: `If Attributes enrichment configured, server scope attributes are added into Message metadata. If Latest Telemetry enrichment configured, latest telemetry added into metadata. To access those attributes in other nodes this template can be used <code>metadata.temperature</code>.`, | |
16 | - description: 'Add Originators Customer Attributes or Latest Telemetry into Message Metadata', | |
17 | - }, | |
18 | - customerDetails: { | |
19 | - name: 'customer details', | |
20 | - details: `If checkbox: <b>Add selected details to the message metadata</b> is selected, existing fields will be added to the message metadata instead of message data.<br><br><b>Note:</b> only Device, Asset, and Entity View type are allowed.<br><br>If the originator of the message is not assigned to Customer, or originator type is not supported - Message will be forwarded to <b>Failure</b> chain, otherwise, <b>Success</b> chain will be used.`, | |
21 | - description: 'Adds fields from Customer details to the message body or metadata', | |
22 | - }, | |
23 | - originatorAttributes: { | |
24 | - name: 'originator attributes', | |
25 | - details: `If Attributes enrichment configured, <b>CLIENT/SHARED/SERVER</b> attributes are added into Message metadata with specific prefix: <i>cs/shared/ss</i>. Latest telemetry value added into metadata without prefix. To access those attributes in other nodes this template can be used <code>metadata.cs_temperature</code> or <code>metadata.shared_limit</code> `, | |
26 | - description: 'Add Message Originator Attributes or Latest Telemetry into Message Metadata', | |
27 | - }, | |
28 | - originatorFields: { | |
29 | - name: 'originator fields', | |
30 | - details: `Will fetch fields values specified in mapping. If specified field is not part of originator fields it will be ignored.`, | |
31 | - description: 'Add Message Originator fields values into Message Metadata', | |
32 | - }, | |
33 | - originatorTelemetry: { | |
34 | - name: 'originator telemetry', | |
35 | - details: `The node allows you to select fetch mode: <b>FIRST/LAST/ALL</b> to fetch telemetry of certain time range that are added into Message metadata without any prefix. If selected fetch mode <b>ALL</b> Telemetry will be added like array into Message Metadata where <b>key</b> is Timestamp and <b>value</b> is value of Telemetry.</br>If selected fetch mode <b>FIRST</b> or <b>LAST</b> Telemetry will be added like string without Timestamp.</br>Also, the rule node allows you to select telemetry sampling order: <b>ASC</b> or <b>DESC</b>. </br>Aggregation feature allows you to fetch aggregated telemetry as a single value by <b>AVG, COUNT, SUM, MIN, MAX, NONE</b>. </br><b>Note</b>: The maximum size of the fetched array is 1000 records.\n `, | |
36 | - description: 'Add Message Originator Telemetry for selected time range into Message Metadata\n', | |
37 | - }, | |
38 | - relatedAttributes: { | |
39 | - name: 'related attributes', | |
40 | - details: `Related Entity found using configured relation direction and Relation Type. If multiple Related Entities are found, only first Entity is used for attributes enrichment, other entities are discarded. If Attributes enrichment configured, server scope attributes are added into Message metadata. If Latest Telemetry enrichment configured, latest telemetry added into metadata. To access those attributes in other nodes this template can be used <code>metadata.temperature</code>.`, | |
41 | - description: | |
42 | - 'Add Originators Related Entity Attributes or Latest Telemetry into Message Metadata', | |
43 | - }, | |
44 | - relatedDeviceAttributes: { | |
45 | - name: 'related device attributes', | |
46 | - details: `If Attributes enrichment configured, <b>CLIENT/SHARED/SERVER</b> attributes are added into Message metadata with specific prefix: <i>cs/shared/ss</i>. Latest telemetry value added into metadata without prefix. To access those attributes in other nodes this template can be used <code>metadata.cs_temperature</code> or <code>metadata.shared_limit</code>`, | |
47 | - description: | |
48 | - 'Add Originators Related Device Attributes and Latest Telemetry value into Message Metadata', | |
49 | - }, | |
50 | - tenantAttributes: { | |
51 | - name: 'tenant attributes', | |
52 | - details: `If Attributes enrichment configured, server scope attributes are added into Message metadata. If Latest Telemetry enrichment configured, latest telemetry added into metadata. To access those attributes in other nodes this template can be used <code>metadata.temperature</code>.`, | |
53 | - description: 'Add Originators Tenant Attributes or Latest Telemetry into Message Metadata', | |
54 | - }, | |
55 | - tenantDetails: { | |
56 | - name: 'tenant details', | |
57 | - details: `If checkbox: <b>Add selected details to the message metadata</b> is selected, existing fields will be added to the message metadata instead of message data.<br><br><b>Note:</b> only Device, Asset, and Entity View type are allowed.<br><br>If the originator of the message is not assigned to Tenant, or originator type is not supported - Message will be forwarded to <b>Failure</b> chain, otherwise, <b>Success</b> chain will be used.`, | |
58 | - description: 'Adds fields from Tenant details to the message body or metadata', | |
59 | - }, | |
60 | -}; |
src/locales/lang/en/designer_config/externals/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 外部的 英文配置文件 | |
3 | - 目前共有11个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - title: 'External', | |
7 | - description: 'Interacting with external systems', | |
8 | - alarmNotice: { | |
9 | - name: 'alarm notice', | |
10 | - details: `notice method include sms,email and so on.`, | |
11 | - description: 'while device alarm, notice some people.', | |
12 | - }, | |
13 | - awsSns: { | |
14 | - name: 'aws sns', | |
15 | - details: `Will publish message payload to the AWS SNS topic. Outbound message will contain response fields (<code>messageId</code>, <code>requestId</code>) in the Message Metadata from the AWS SNS. For example <b>requestId</b> field can be accessed with <code>metadata.requestId</code>.`, | |
16 | - description: 'Publish message to the AWS SNS', | |
17 | - }, | |
18 | - awsSqs: { | |
19 | - name: 'aws sqs', | |
20 | - details: `Will publish message payload and metadata attributes to the AWS SQS queue. Outbound message will contain response fields (<code>messageId</code>, <code>requestId</code>, <code>messageBodyMd5</code>, <code>messageAttributesMd5</code>, <code>sequenceNumber</code>) in the Message Metadata from the AWS SQS. For example <b>requestId</b> field can be accessed with <code>metadata.requestId</code>.`, | |
21 | - description: 'Publish messages to the AWS SQS', | |
22 | - }, | |
23 | - azureIotHub: { | |
24 | - name: 'azure iot hub', | |
25 | - details: `Will publish message payload to the Azure IoT Hub with QoS <b>AT_LEAST_ONCE</b>.`, | |
26 | - description: 'Publish messages to the Azure IoT Hub', | |
27 | - }, | |
28 | - gcpPubsub: { | |
29 | - name: 'gcp pubsub', | |
30 | - details: `Will publish message payload to the Google Cloud Platform PubSub topic. Outbound message will contain response fields (<code>messageId</code> in the Message Metadata from the GCP PubSub. <b>messageId</b> field can be accessed with <code>metadata.messageId</code>.`, | |
31 | - description: 'Publish message to the Google Cloud PubSub', | |
32 | - }, | |
33 | - kafka: { | |
34 | - name: 'kafka', | |
35 | - details: `Will send record via Kafka producer to Kafka server. Outbound message will contain response fields (<code>offset</code>, <code>partition</code>, <code>topic</code>) from the Kafka in the Message Metadata. For example <b>partition</b> field can be accessed with <code>metadata.partition</code>.`, | |
36 | - description: 'Publish messages to Kafka server', | |
37 | - }, | |
38 | - mqtt: { | |
39 | - name: 'mqtt', | |
40 | - details: `Will publish message payload to the MQTT broker with QoS <b>AT_LEAST_ONCE</b>.`, | |
41 | - description: 'Publish messages to the MQTT broker', | |
42 | - }, | |
43 | - rabbitmq: { | |
44 | - name: 'rabbitmq', | |
45 | - details: `Will publish message payload to RabbitMQ queue.`, | |
46 | - description: 'Publish messages to the RabbitMQ', | |
47 | - }, | |
48 | - restApiCall: { | |
49 | - name: 'rest api call', | |
50 | - details: `Will invoke REST API call <code>GET | POST | PUT | DELETE</code> to external REST server. Message payload added into Request body. Configured attributes can be added into Headers from Message Metadata. Outbound message will contain response fields (<code>status</code>, <code>statusCode</code>, <code>statusReason</code> and response <code>headers</code>) in the Message Metadata. Response body saved in outbound Message payload. For example <b>statusCode</b> field can be accessed with <code>metadata.statusCode</code>.<br/><b>Note-</b> if you use system proxy properties, the next system proxy properties should be added: "http.proxyHost" and "http.proxyPort" or "https.proxyHost" and "https.proxyPort" or "socksProxyHost" and "socksProxyPort",and if your proxy with auth, the next ones should be added: "tb.proxy.user" and "tb.proxy.password" to the thingsboard.conf file.`, | |
51 | - description: 'Invoke REST API calls to external REST server', | |
52 | - }, | |
53 | - sendEmail: { | |
54 | - name: 'send email', | |
55 | - details: `Expects messages with <b>SEND_EMAIL</b> type. Node works only with messages that where created using <code>to Email</code> transformation Node, please connect this Node with <code>to Email</code> Node using <code>Successful</code> chain.`, | |
56 | - description: 'Sends email message via SMTP server.', | |
57 | - }, | |
58 | - sendSms: { | |
59 | - name: 'send sms', | |
60 | - details: `Will send SMS message by populating target phone numbers and sms message fields using values derived from message metadata.`, | |
61 | - description: 'Sends SMS message via SMS provider.', | |
62 | - }, | |
63 | -}; |
src/locales/lang/en/designer_config/filters/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 筛选器 英文配置文件 | |
3 | - 目前共有11个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - title: 'Filter', | |
7 | - description: 'Filter incoming messages using configuration criteria', | |
8 | - checkAlarmStatus: { | |
9 | - name: 'check alarm status', | |
10 | - details: | |
11 | - 'If the alarm status matches the specified one - msg is success if does not match - msg is failure.', | |
12 | - description: 'Checks alarm status.', | |
13 | - }, | |
14 | - checkExistenceFields: { | |
15 | - name: 'check existence fields', | |
16 | - details: `If selected checkbox 'Check that all selected keys are present'\" and all keys in message data and metadata are exist - send Message via <b>True</b> chain, otherwise <b>False</b> chain is used.\nElse if the checkbox is not selected, and at least one of the keys from data or metadata of the message exists - send Message via <b>True</b> chain, otherwise, <b>False</b> chain is used. `, | |
17 | - description: 'Checks the existence of the selected keys from message data and metadata.', | |
18 | - }, | |
19 | - checkRelation: { | |
20 | - name: 'check relation', | |
21 | - details: | |
22 | - 'If at least one relation exists - send Message via <b>True</b> chain, otherwise <b>False</b> chain is used.', | |
23 | - description: `Checks the relation from the selected entity to the originator of the message by type and direction if 'Check for single entity' is set to true, otherwise rule node will check if exist any relation to the originator of the message by type and direction.`, | |
24 | - }, | |
25 | - gpsGeofencingFilter: { | |
26 | - name: 'gps geofencing filter', | |
27 | - details: `Extracts latitude and longitude parameters from incoming message and returns 'True' if they are inside configured perimeters, 'False' otherwise.`, | |
28 | - description: 'Filter incoming messages by GPS based geofencing', | |
29 | - }, | |
30 | - messageType: { | |
31 | - name: 'message type', | |
32 | - details: `If incoming MessageType is expected - send Message via <b>True</b> chain, otherwise <b>False</b> chain is used.`, | |
33 | - description: 'Filter incoming messages by Message Type', | |
34 | - }, | |
35 | - messageTypeSwitch: { | |
36 | - name: 'message type switch', | |
37 | - details: `Sends messages with message types <b>"Post attributes", "Post telemetry", "RPC Request"</b> etc. via corresponding chain, otherwise <b>Other</b> chain is used.`, | |
38 | - description: 'Route incoming messages by Message Type', | |
39 | - }, | |
40 | - originatorType: { | |
41 | - name: 'originator type', | |
42 | - details: `If Originator Type of incoming message is expected - send Message via <b>True</b> chain, otherwise <b>False</b> chain is used.`, | |
43 | - description: 'Filter incoming messages by message Originator Type', | |
44 | - }, | |
45 | - originatorTypeSwitch: { | |
46 | - name: 'originator type switch', | |
47 | - details: `Routes messages to chain according to the originator type ('Device', 'Asset', etc.).`, | |
48 | - description: 'Route incoming messages by Message Originator Type', | |
49 | - }, | |
50 | - sceneReact: { | |
51 | - name: 'originator type switch', | |
52 | - details: `Implement interactive control of devices based on business scenarios`, | |
53 | - description: 'Implement interactive control of devices based on business scenarios', | |
54 | - }, | |
55 | - script: { | |
56 | - name: 'script', | |
57 | - details: `Evaluate incoming Message with configured JS condition. If <b>True</b> - send Message via <b>True</b> chain, otherwise <b>False</b> chain is used.Message payload can be accessed via <code>msg</code> property. For example <code>msg.temperature < 10;</code><br/>Message metadata can be accessed via <code>metadata</code> property. For example <code>metadata.customerName === 'John';</code><br/>Message type can be accessed via <code>msgType</code> property.`, | |
58 | - description: 'Filter incoming messages using JS script', | |
59 | - }, | |
60 | - switch: { | |
61 | - name: 'switch', | |
62 | - details: `Node executes configured JS script. Script should return array of next Chain names where Message should be routed. If Array is empty - message not routed to next Node. Message payload can be accessed via <code>msg</code> property. For example <code>msg.temperature < 10;</code><br/>Message metadata can be accessed via <code>metadata</code> property. For example <code>metadata.customerName === 'John';</code><br/>Message type can be accessed via <code>msgType</code> property.`, | |
63 | - description: 'Route incoming Message to one or multiple output chains', | |
64 | - }, | |
65 | -}; |
src/locales/lang/en/designer_config/flows/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 Flow 英文配置文件 | |
3 | - 目前共有4个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - title: 'Flow', | |
7 | - description: 'Organizes message flow', | |
8 | - acknowledge: { | |
9 | - name: 'acknowledge', | |
10 | - details: `After acknowledgement, the message is pushed to related rule nodes. Useful if you don't care what happens to this message next.`, | |
11 | - description: 'Acknowledges the incoming message', | |
12 | - }, | |
13 | - checkpoint: { | |
14 | - name: 'checkpoint', | |
15 | - details: `After successful transfer incoming message is automatically acknowledged. Queue name is configurable.`, | |
16 | - description: 'transfers the message to another queue', | |
17 | - }, | |
18 | - output: { | |
19 | - name: 'output', | |
20 | - details: `Produces output of the rule chain processing. The output is forwarded to the caller rule chain, as an output of the corresponding "input" rule node. The output rule node name corresponds to the relation type of the output message, and it is used to forward messages to other rule nodes in the caller rule chain. `, | |
21 | - description: 'transfers the message to the caller rule chain', | |
22 | - }, | |
23 | - ruleChain: { | |
24 | - name: 'rule chain', | |
25 | - details: `Allows to nest the rule chain similar to single rule node. The incoming message is forwarded to the input node of the specified target rule chain. The target rule chain may produce multiple labeled outputs. You may use the outputs to forward the results of processing to other rule nodes.`, | |
26 | - description: 'transfers the message to another rule chain', | |
27 | - }, | |
28 | -}; |
src/locales/lang/en/designer_config/transformations/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 变换 英文配置文件 | |
3 | - 目前共有3个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - title: 'Transform', | |
7 | - description: 'Change message Payload and metadata', | |
8 | - changeOriginator: { | |
9 | - name: 'change originator', | |
10 | - details: `Related Entity found using configured relation direction and Relation Type. If multiple Related Entities are found, only first Entity is used as new Originator, other entities are discarded.<br/>Alarm Originator found only in case original Originator is <code>Alarm</code> entity.`, | |
11 | - description: 'Change Message Originator To Tenant/Customer/Related Entity/Alarm Originator', | |
12 | - }, | |
13 | - script: { | |
14 | - name: 'script', | |
15 | - details: `JavaScript function receive 3 input parameters <br/> <code>metadata</code> - is a Message metadata.<br/><code>msg</code> - is a Message payload.<br/><code>msgType</code> - is a Message type.<br/>Should return the following structure:<br/><code>{ msg: <i style="color: #666;">new payload</i>,<br/>   metadata: <i style="color: #666;">new metadata</i>,<br/>   msgType: <i style="color: #666;">new msgType</i> }</code><br/>All fields in resulting object are optional and will be taken from original message if not specified.`, | |
16 | - description: 'Change Message payload, Metadata or Message type using JavaScript', | |
17 | - }, | |
18 | - toEmail: { | |
19 | - name: 'to email', | |
20 | - details: `Transforms message to email message by populating email fields using values derived from message metadata. Set 'SEND_EMAIL' output message type.`, | |
21 | - description: 'Transforms message to email message', | |
22 | - }, | |
23 | -}; |
src/locales/lang/en/designer_form_label/actions/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 动作 英文配置文件 | |
3 | - 目前共有22个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - AssignToCustomerFieldsNameEnum: { | |
7 | - CUSTOMER_NAME_PATTERN: 'Customer name pattern', | |
8 | - CREATE_CUSTOMER_IF_NOT_EXISTS: 'Create new customer if not exists', | |
9 | - CUSTOMER_CACHE_EXPIRATION: 'Customers cache expiration time(sec)', | |
10 | - }, | |
11 | - ClearAlarmFieldsNameEnum: { | |
12 | - ALARM_TYPE: 'Alarm type', | |
13 | - ALARM_DETAILS_BUILD_JS: 'Alarm details builder', | |
14 | - }, | |
15 | - CreateAlarmFieldsNameEnum: { | |
16 | - ALARM_DETAILS_BUILD_JS: 'Alarm details builder', | |
17 | - USE_MESSAGE_ALARM_DATA: 'Use message alarm data', | |
18 | - OVERWRITE_ALARM_DETAILS: 'Overwrite alarm details', | |
19 | - ALARM_TYPE: 'Alarm type', | |
20 | - SEVERITY: 'Alarm severity pattern', | |
21 | - PROPAGATE: 'Propagate alarm to related entities', | |
22 | - RELATION_TYPES: 'Relation types to propagate', | |
23 | - PROPAGATE_TO_OWNER: 'Propagate alarm to entity owner (Customer or Tenant)', | |
24 | - PROPAGATE_TO_TENANT: 'Propagate alarm to Tenant', | |
25 | - DYNAMIC_SEVERITY: 'Use alarm severity pattern', | |
26 | - }, | |
27 | - CreateRelationFieldsNameEnum: { | |
28 | - DIRECTION: 'Direction', | |
29 | - ENTITY_TYPE: 'Type', | |
30 | - ENTITY_NAME_PATTERN: 'Name pattern', | |
31 | - ENTITY_TYPE_PATTERN: 'Type pattern', | |
32 | - RELATION_TYPE: 'Relation type pattern', | |
33 | - CREATE_ENTITY_IF_NOT_EXISTS: 'Create new entity if not exists', | |
34 | - REMOVE_CURRENT_RELATIONS: 'Remove current relations', | |
35 | - CHANGE_ORIGINATOR_TO_RELATED_ENTITY: 'Change originator to related entity', | |
36 | - ENTITY_CACHE_EXPIRATION: 'Entities cache expiration time(sec)', | |
37 | - }, | |
38 | - DelayDeprecatedFieldsNameEnum: { | |
39 | - USE_METADATA_PERIOD_IN_SECONDS_PATTERNS: 'Use period in seconds pattern', | |
40 | - PERIOD_IN_SECONDS: 'Period in seconds', | |
41 | - PERIOD_IN_SECONDS_PATTERN: 'Period in seconds pattern', | |
42 | - MAX_PENDING_MSGS: 'Maximum pending messages', | |
43 | - }, | |
44 | - DeleteRelationFieldsNameEnum: { | |
45 | - DELETE_FOR_SINGLE_ENTITY: 'Delete relation to specific entity', | |
46 | - DIRECTION: 'Direction', | |
47 | - ENTITY_TYPE: 'Type', | |
48 | - ENTITY_NAME_PATTERN: 'Name pattern', | |
49 | - RELATION_TYPE: 'Relation type pattern', | |
50 | - ENTITY_CACHE_EXPIRATION: 'Entities cache expiration time(sec)', | |
51 | - }, | |
52 | - DeviceProfileFieldsNameEnum: { | |
53 | - PERSIST_ALARM_RULES_STATE: 'Persist state of alarm rules', | |
54 | - FETCH_ALARM_RULES_STATE_ON_START: 'Fetch state of alarm rules', | |
55 | - }, | |
56 | - GeneratorFieldsNameEnum: { | |
57 | - MSG_COUNT: 'Message count(0 - unlimited)', | |
58 | - PERIOD_IN_SECONDS: 'Period in seconds', | |
59 | - JS_SCRIPT: 'Generate', | |
60 | - // ORIGINATOR_ID = '资产', | |
61 | - ORIGINATOR_TYPE: 'Type', | |
62 | - }, | |
63 | - GpsGeofencingEventsFieldsNameEnum: { | |
64 | - LATITUDE_KEY_NAME: 'Latitude key name', | |
65 | - LONGITUDE_KEY_NAME: 'longitude key name', | |
66 | - PERIMETER_TYPE: 'Perimeter type', | |
67 | - FETCH_PERIMETER_INFO_FROM_MESSAGE_METADATA: 'Fetch perimeter information from message metadata', | |
68 | - PERIMETER_KEY_NAME: 'Perimeter key name', | |
69 | - CENTER_LATITUDE: 'Center Latitude', | |
70 | - CENTER_LONGITUDE: 'Center Longitude', | |
71 | - RANGE: 'Range', | |
72 | - RANGE_UNIT: 'Range units', | |
73 | - POLYGONS_DEFINITION: 'Polygon definition', | |
74 | - MIN_INSIDE_DURATION: 'Minimal inside duration', | |
75 | - MIN_INSIDE_DURATION_TIME_UNIT: 'Minimal inside duration time unit', | |
76 | - MIN_OUTSIDE_DURATION: 'Minimal outside duration', | |
77 | - MIN_OUTSIDE_DURATION_TIME_UNIT: 'Minimal outside duration time unit', | |
78 | - }, | |
79 | - LogFieldsNameEnum: { | |
80 | - JS_SCRIPT: 'To string', | |
81 | - }, | |
82 | - MessageCountFieldsNameEnum: { | |
83 | - INTERVAL: 'Interval in seconds', | |
84 | - TELEMETRY_PREFIX: 'Output timeseries key prefix', | |
85 | - }, | |
86 | - PushToEdgeFieldsNameEnum: { | |
87 | - SCOPE: 'Device Attribute Range', | |
88 | - }, | |
89 | - RpcCallReplyFieldsNameEnum: { | |
90 | - REQUEST_ID_META_DATA_ATTRIBUTE: 'Request Id Metadata attribute name', | |
91 | - }, | |
92 | - RpcCallRequestFieldsNameEnum: { | |
93 | - TIMEOUT_IN_SECONDS: 'Timeout in seconds', | |
94 | - }, | |
95 | - SaveAttributesFieldsNameEnum: { | |
96 | - NOTIFY_DEVICE: 'Notify Device', | |
97 | - SCOPE: 'Device Attribute Range', | |
98 | - }, | |
99 | - SaveEventFieldsNameEnum: { | |
100 | - CONFIGURATION: 'configuration', | |
101 | - }, | |
102 | - SaveTimeseriesFieldsNameEnum: { | |
103 | - DEFAULT_TTL: 'Default TTL in seconds', | |
104 | - SKIP_LATEST_PERSISTENCE: 'Skit latest persistence', | |
105 | - USE_SERVER_TS: 'Use server ts', | |
106 | - }, | |
107 | - SaveToCustomTableFieldsNameEnum: { | |
108 | - FIELDS_MAPPING: 'Fields mapping', | |
109 | - TABLE_NAME: 'Custom table name', | |
110 | - }, | |
111 | - UnassignFromCustomerFieldsNameEnum: { | |
112 | - CUSTOMER_NAME_PATTERN: 'Customer name pattern', | |
113 | - CUSTOMER_CACHE_EXPIRATION: 'Customer cache expiration time(sec)', | |
114 | - }, | |
115 | -}; |
src/locales/lang/en/designer_form_label/common/index.ts
deleted
100644 → 0
src/locales/lang/en/designer_form_label/enrichments/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 属性集表单 英文配置文件 | |
3 | - 目前共有10个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - CalculateDeltaFieldsNameEnum: { | |
7 | - INPUT_VALUE_KEY: 'Input value key', | |
8 | - OUTPUT_VALUE_KEY: 'Output value key', | |
9 | - ROUND: 'Decimals', | |
10 | - USE_CACHE: 'Use cache for latest value', | |
11 | - TELL_FAILURE_IF_DELTA_IS_NEGATIVE: 'Tell Failure if delta is negative', | |
12 | - ADD_PERIOD_BETWEEN_MSGS: 'Add period between messages', | |
13 | - PERIOD_VALUE_KEY: 'Period value key', | |
14 | - }, | |
15 | - CustomerAttributesFieldsNameEnum: { | |
16 | - ATTR_MAPING: 'Attributes mapping', | |
17 | - TELEMETRY: 'Latest telemetry', | |
18 | - }, | |
19 | - CustomerDetailsFieldsNameEnum: { | |
20 | - DETAILS_LIST: 'Select entity details', | |
21 | - ADD_TO_METADATA: 'Add selected details to message metadata', | |
22 | - }, | |
23 | - OriginatorAttributesNameEnum: { | |
24 | - TELL_FAILURE_IF_ABSENT: 'Tell Failure', | |
25 | - CLIENT_ATTRIBUTE_NAMES: 'Client attributes', | |
26 | - SHARED_ATTRIBUTE_NAMES: 'Shared attributes', | |
27 | - SERVER_ATTRIBUTE_NAMES: 'Server attributes', | |
28 | - LATEST_TS_KEY_NAMES: 'Latest timeseries', | |
29 | - GET_LATEST_VALUE_WITH_TS: 'Fetch Latest telemetry with Timestamp', | |
30 | - }, | |
31 | - OriginatorFieldsNameEnum: { | |
32 | - FIELDS_MAPPING: 'Fields mapping', | |
33 | - }, | |
34 | - OriginatorTelemetryFieldsNameEnum: { | |
35 | - LATEST_TS_KEY_NAMES: 'Timeseries key', | |
36 | - AGGREGATION: 'Data aggregation function', | |
37 | - FETCH_MODE: 'Fetch Mode', | |
38 | - ORDER_BY: 'Order by', | |
39 | - LIMIT: 'Limit', | |
40 | - USE_METADATA_INTERVAL_PATTERNS: 'Use interval patterns', | |
41 | - START_INTERVAL: 'Start Interval', | |
42 | - START_INTERVAL_TIME_UNIT: 'Start Interval Time Unit', | |
43 | - END_INTERVAL: 'End Interval', | |
44 | - END_INTERVAL_TIME_UNIT: 'End Interval Time Unit', | |
45 | - START_INTERVAL_PATTERN: 'startIntervalPattern', | |
46 | - END_INTERVAL_PATTERN: 'endIntervalPattern', | |
47 | - }, | |
48 | - RelatedAttributesFieldsNameEnum: { | |
49 | - RELATIONS_QUERY: 'Relations query', | |
50 | - ATTR_MAPPING: 'Attributes mapping', | |
51 | - TELEMETRY: 'Latest telemetry', | |
52 | - }, | |
53 | - RelatedDeviceAttributeFieldsNameEnum: { | |
54 | - DEVICE_RELATIONS_QUERY: 'DeviceRelationsQuery', | |
55 | - TELL_FAILURE_IF_ABSENT: 'Tell Failure', | |
56 | - CLIENT_ATTRIBUTE_NAMES: 'Client attributes', | |
57 | - SHARED_ATTRIBUTE_NAMES: 'Shared attributes', | |
58 | - SERVER_ATTRIBUTE_NAMES: 'Server attributes', | |
59 | - LATEST_TS_KEY_NAMES: 'Latest timeseries', | |
60 | - GET_LATEST_VALUE_WITH_TS: 'Fetch Latest telemetry with Timestamp', | |
61 | - FETCH_LAST_LEVEL_ONLY: 'Obtain only the last level of association', | |
62 | - // DEVICE_RELATIONS_QUERY | |
63 | - DIRECTION: 'Direction', | |
64 | - MAX_LEVEL: 'Max relation level', | |
65 | - RELATION_TYPE: 'Association type', | |
66 | - DEVICE_TYPES: 'Device Type', | |
67 | - }, | |
68 | - TenantAttributesFieldsNameEnum: { | |
69 | - ATTR_MAPING: 'attrMapping', | |
70 | - TELEMETRY: 'Latest telemetry', | |
71 | - }, | |
72 | - TenantDetailsFieldsNameEnum: { | |
73 | - DETAILS_LIST: 'Add selected details to message metadata', | |
74 | - ADD_TO_METADATA: 'Select entity details', | |
75 | - }, | |
76 | -}; |
src/locales/lang/en/designer_form_label/externals/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 外部的 英文配置文件 | |
3 | - 目前共有11个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - AlarmNoticeFieldsNameEnum: { | |
7 | - CONFIGURATION: 'configuration', | |
8 | - }, | |
9 | - AwsSnsFieldsNameEnum: { | |
10 | - TOPIC_ARN_PATTERN: 'Topic ARN pattern', | |
11 | - ACCESS_KEY_ID: 'AWS Access Key ID', | |
12 | - SECRET_ACCESS_KEY: 'AWS Secret Access Key', | |
13 | - REGION: 'AWS Region', | |
14 | - }, | |
15 | - AwsSqsFieldsNameEnum: { | |
16 | - QUEUE_TYPE: 'Queue type', | |
17 | - QUEUE_URL_PATTERN: 'Queue URL pattern', | |
18 | - DELAY_SECONDS: 'Delay(seconds)', | |
19 | - MESSAGE_ATTRIBUTES: 'Message attributes', | |
20 | - ACCESS_KEY_ID: 'AWS Access Key ID', | |
21 | - SECRET_ACCESS_KEY: 'AWS Secret Access Key', | |
22 | - REGION: 'AWS Region', | |
23 | - }, | |
24 | - AzureIotHubFieldsNameEnum: { | |
25 | - TOPIC_PATTERN: 'Topic', | |
26 | - HOST: 'Hostname', | |
27 | - PORT: 'port', | |
28 | - CONNECT_TIMEOUT_SEC: 'connectTimeoutSec', | |
29 | - CLIENT_ID: 'Device ID', | |
30 | - CLEAN_SESSION: 'cleanSession', | |
31 | - SSL: 'ssl', | |
32 | - CREDENTIALS: 'credentials', | |
33 | - TYPE: 'Credentials type', | |
34 | - SAS_KEY: 'sasKey', | |
35 | - CA_CERT: 'CA certificate file', | |
36 | - CA_CERT_FILE_NAME: 'caCertFileName', | |
37 | - PRIVATE_KEY: 'Client private key file', | |
38 | - PRIVATE_KEY_FILE_NAME: 'privateKeyFileName', | |
39 | - CERT: 'Client certificate file', | |
40 | - CERT_FILE_NAME: 'certFileName', | |
41 | - PASSWORD: 'Private key password', | |
42 | - }, | |
43 | - GcpPubsubFieldsNameEnum: { | |
44 | - PROJECT_ID: 'GCP project ID', | |
45 | - TOPIC_NAME: 'Topic name', | |
46 | - SERVICE_ACCOUNT_KEY: 'GCP service account key file', | |
47 | - SERVICE_ACCOUNT_KEY_FILE_NAME: 'serviceAccountKeyFileName', | |
48 | - MESSAGE_ATTRIBUTES: 'Message attributes', | |
49 | - }, | |
50 | - KafkaFieldsNameEnum: { | |
51 | - TOPIC_PATTERN: 'Topic pattern', | |
52 | - BOOTSTRAP_SERVERS: 'Bootstrap servers', | |
53 | - RETRIES: 'Automatically retry times if fails', | |
54 | - BATCH_SIZE: 'Produces batch size in bytes', | |
55 | - LINGER: 'Time to buffer locally(ms)', | |
56 | - BUFFER_MEMORY: 'Client buffer max size in bytes', | |
57 | - ACKS: 'Number of acknowledgments', | |
58 | - KEY_SERIALIZER: 'Key serializer', | |
59 | - VALUE_SERIALIZER: 'Value serializer', | |
60 | - OTHER_PROPERTIES: 'Other properties', | |
61 | - ADD_METADATA_KEY_VALUES_AS_KAFKA_HEADERS: | |
62 | - 'Add Message metadata key-value pairs to Kafka record headers', | |
63 | - KAFKA_HEADERS_CHARSET: 'Charset encoding', | |
64 | - }, | |
65 | - MqttFieldsNameEnum: { | |
66 | - TOPIC_PATTERN: 'Topic pattern', | |
67 | - HOST: 'Host', | |
68 | - PORT: 'Port', | |
69 | - CONNECT_TIMEOUT_SEC: 'Connection timeout(sec)', | |
70 | - CLIENT_ID: 'Client ID', | |
71 | - APPEND_CLIENT_ID_SUFFIX: 'Add Service ID as suffix to Client ID', | |
72 | - CLEAN_SESSION: 'Clean session', | |
73 | - SSL: 'Enable SSL', | |
74 | - CREDENTIALS: 'credentials', | |
75 | - | |
76 | - TYPE: 'Credentials type', | |
77 | - PASSWORD: 'Password', | |
78 | - CA_CERT: 'Server CA certificate file', | |
79 | - CA_CERT_FILE_NAME: 'caCertFileName', | |
80 | - PRIVATE_KEY: 'Client private key file', | |
81 | - PRIVATE_KEY_FILE_NAME: 'privateKeyFileName', | |
82 | - CERT: 'Client certificate file', | |
83 | - CERT_FILE_NAME: 'certFileName', | |
84 | - USERNAME: 'Username', | |
85 | - }, | |
86 | - RabbitmqFieldsNameEnum: { | |
87 | - EXCHANGE_NAME_PATTERN: 'Exchange name pattern', | |
88 | - ROUTING_KEY_PATTERN: 'Routing key pattern', | |
89 | - MESSAGE_PROPERTIES: 'Message properties', | |
90 | - HOST: 'Host', | |
91 | - PORT: 'Port', | |
92 | - VIRTUAL_HOST: 'Virtual host', | |
93 | - USERNAME: 'Username', | |
94 | - PASSWORD: 'Password', | |
95 | - AUTOMATIC_RECOVERY_ENABLED: 'Automatic recovery', | |
96 | - CONNECTION_TIMEOUT: 'Connection timeout(ms)', | |
97 | - HANDSHAKE_TIMEOUT: 'Handshake timeout(ms)', | |
98 | - CLIENT_PROPERTIES: 'Client properties', | |
99 | - }, | |
100 | - RestApiCallFieldsNameEnum: { | |
101 | - REST_ENDPOINT_URL_PATTERN: 'Endpoint URL pattern', | |
102 | - REQUEST_METHOD: 'Request method', | |
103 | - USE_SIMPLE_CLIENT_HTTP_FACTORY: 'Use simple client HTTP factory', | |
104 | - IGNORE_REQUEST_BODY: 'Without request body', | |
105 | - ENABLE_PROXY: 'Enable proxy', | |
106 | - USE_SYSTEM_PROXY_PROPERTIES: 'Use system proxy properties', | |
107 | - PROXY_SCHEME: 'Proxy scheme', | |
108 | - PROXY_HOST: 'Proxy host', | |
109 | - PROXY_PORT: 'Proxy port', | |
110 | - PROXY_USER: 'Proxy user', | |
111 | - PROXY_PASSWORD: 'Proxy password', | |
112 | - READ_TIMEOUT_MS: 'Read timeout in millis', | |
113 | - MAX_PARALLEL_REQUESTS_COUNT: 'Max number of parallel request', | |
114 | - HEADERS: 'Header', | |
115 | - USE_REDIS_QUEUE_FOR_MSG_PERSISTENCE: 'Use redis queue for message persistence', | |
116 | - TRIM_QUEUE: 'Trim redis queue', | |
117 | - MAX_QUEUE_SIZE: 'Redis queue max size', | |
118 | - CREDENTIALS: 'Credentials', | |
119 | - | |
120 | - TYPE: 'Credentials type', | |
121 | - PASSWORD: 'Password', | |
122 | - CA_CERT: 'Server CA certificate file', | |
123 | - CA_CERT_FILE_NAME: 'caCertFileName', | |
124 | - PRIVATE_KEY: 'Client private key file', | |
125 | - PRIVATE_KEY_FILE_NAME: 'privateKeyFileName', | |
126 | - CERT: 'Client certificate file', | |
127 | - CERT_FILE_NAME: 'certFileName', | |
128 | - USERNAME: 'Username', | |
129 | - }, | |
130 | - SendEmailFieldsNameEnum: { | |
131 | - USE_SYSTEM_SMTP_SETTINGS: 'Use system SMTP settings', | |
132 | - SMTP_PROTOCOL: 'Protocol', | |
133 | - SMTP_HOST: 'SMTP host', | |
134 | - SMTP_PORT: 'SMTP port', | |
135 | - TIMEOUT: 'Timeout ms', | |
136 | - ENABLE_TLS: 'Enable TLS', | |
137 | - TLS_VERSION: 'TLS version', | |
138 | - ENABLE_PROXY: 'Enable proxy', | |
139 | - PROXY_HOST: 'Proxy host', | |
140 | - PROXY_PORT: 'Proxy port', | |
141 | - PROXY_USER: 'Proxy user', | |
142 | - PROXY_PASSWORD: 'Proxy password', | |
143 | - USERNAME: 'Username', | |
144 | - PASSWORD: 'Password', | |
145 | - }, | |
146 | - SendSMSFieldsNameEnum: { | |
147 | - NUMBERS_TO_TEMPLATE: 'Phone Numbers To Template', | |
148 | - SMS_MESSAGE_TEMPLATE: 'SMS message Template', | |
149 | - USE_SYSTEM_SMS_SETTINGS: 'User system SMS provider settings', | |
150 | - SMS_PROVIDER_CONFIGURATION: 'smsProviderConfiguration', | |
151 | - | |
152 | - ACCESS_KEY_ID: 'AWS Access Key ID', | |
153 | - SECRET_ACCESS_KEY: 'AWS Access Key', | |
154 | - REGION: 'AWS Area', | |
155 | - TYPE: 'SMS Service provider type', | |
156 | - NUMBER_FROM: "Sender's phone number", | |
157 | - ACCOUNT_SID: 'Twilio Account SID', | |
158 | - ACCOUNT_TOKEN: 'Twilio Account Token', | |
159 | - }, | |
160 | -}; |
src/locales/lang/en/designer_form_label/filters/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 筛选器表单 英文配置文件 | |
3 | - 目前共有11个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - CheckAlarmStatusFieldNameEnum: { | |
7 | - ALARM_STATUS_LIST: 'Alarm status filter', | |
8 | - }, | |
9 | - CheckExistenceFieldsNameEnum: { | |
10 | - MESSAGE_NAMES: 'Message data', | |
11 | - METADATA_NAMES: 'Message metadata', | |
12 | - CHECK_ALL_KEYS: 'Check that all selected keys are present', | |
13 | - }, | |
14 | - CheckRelationFieldsNameEnum: { | |
15 | - DIRECTION: 'Direction', | |
16 | - CHECK_FOR_SINGLE_ENTITY: 'Check relation to specific entity', | |
17 | - ENTITY_TYPE: 'Type', | |
18 | - RELEATION_TYPE: 'Association type', | |
19 | - }, | |
20 | - GpsGeofencingFilterFieldsNameEnum: { | |
21 | - LATITUDE_KEY_NAME: 'Latitude Key Name', | |
22 | - LONGITUDE_KEY_NAME: 'Longitude Key Name', | |
23 | - PERIMETER_TYPE: 'Perimeter Type', | |
24 | - FETCH_PERIMETER_INFO_FROM_MESSAGE_METADATA: 'Fetch perimeter information from message metadata', | |
25 | - CENTER_LATITUDE: 'Center latitude', | |
26 | - CENTER_LONGITUDE: 'Center longitude', | |
27 | - RANGE: 'Range', | |
28 | - RANGE_UNIT: 'Range unit', | |
29 | - PERIMETER_KEY_NAME: 'Perimeter key name', | |
30 | - POLYGONS_DEFINITION: 'Polygons definition', | |
31 | - }, | |
32 | - MessageTypeFieldsNameEnum: { | |
33 | - MESSAGE_TYPES: 'Message Types Filter', | |
34 | - }, | |
35 | - OriginatorTypeFieldsNameEnum: { | |
36 | - ORIGINATOR_TYPES: 'Originator types filter', | |
37 | - }, | |
38 | - ScriptFieldsNameEnum: { | |
39 | - JS_SCRIPT: 'Filter', | |
40 | - }, | |
41 | - SwitchFieldsNameEnum: { | |
42 | - JS_SCRIPT: 'Filter', | |
43 | - }, | |
44 | -}; |
src/locales/lang/en/designer_form_label/flows/index.ts
deleted
100644 → 0
src/locales/lang/en/designer_form_label/transformations/index.ts
deleted
100644 → 0
1 | -/** | |
2 | - *规则链 变换 英文配置文件 | |
3 | - 目前共有3个,分类按名称进行配置 | |
4 | - */ | |
5 | -export default { | |
6 | - ChangeOriginatorFieldsNameEnum: { | |
7 | - ORIGINATOR_SOURCE: 'Originator source', | |
8 | - RELATIONS_QUERY: 'Relations Query', | |
9 | - }, | |
10 | - ScriptFieldsNameEnum: { | |
11 | - JS_SCRIPT: 'Transform', | |
12 | - }, | |
13 | - ToEmailFieldsNameEnum: { | |
14 | - FROM_TEMPLATE: 'From Template', | |
15 | - TO_TEMPLATE: 'To Template', | |
16 | - CC_TEMPLATE: 'Cc Template', | |
17 | - BCC_TEMPLATE: 'Bcc Template', | |
18 | - SUBJECT_TEMPLATE: 'Subject Template', | |
19 | - MAIL_BODY_TYPE: 'Mail body type', | |
20 | - IS_HTML_TEMPLATE: 'Dynamic mail body type', | |
21 | - BODY_TEMPLATE: 'Body Template', | |
22 | - }, | |
23 | -}; |
1 | +export default { | |
2 | + productCategoryText: 'Product category', | |
3 | + category: '品类', | |
4 | + list: '列表', | |
5 | + productCategoryTextList: '@:deviceManagement.class.productCategoryText list', | |
6 | + createCategoryText: '@:common.createText category', | |
7 | + editCategoryText: '@:common.editText category', | |
8 | + nameText: 'Name', | |
9 | + domainText: 'Domain', | |
10 | + statusText: 'Status', | |
11 | + enableText: 'Enable', | |
12 | + disabledText: 'Disabled', | |
13 | + importModel: 'Import object model', | |
14 | + importJson: 'Json import', | |
15 | + importExcel: 'Excel json', | |
16 | + downloadExcel: 'Excel Template Download', | |
17 | + importType: 'Import type', | |
18 | + importMessage: | |
19 | + 'For JSON import, please use the JSON file exported from the object model TSL. For Excel import, please use the downloaded template to edit it before importing', | |
20 | + importJsonError: 'JSON parsing failed, please import the correct JSON', | |
21 | + importModelTemplate: 'Object model attribute import template', | |
22 | +}; | ... | ... |
1 | +export default { | |
2 | + thingsModel: { | |
3 | + action: { | |
4 | + CREATE: 'Create things model', | |
5 | + READ: 'Things model Detail', | |
6 | + UPDATE: 'Update things model', | |
7 | + DELETE: 'Delete things model', | |
8 | + }, | |
9 | + }, | |
10 | + createText: '@:common.createText@:business.deviceText', | |
11 | + editText: '@:common.editText@:business.deviceText', | |
12 | + collectText: 'Collect', | |
13 | + updateOrganization: 'Modified organization', | |
14 | + alarmText: 'Alarm', | |
15 | + deviceListText: '@:common.listText @:business.deviceText', | |
16 | + createDeviceText: '@:common.createText@:business.deviceText', | |
17 | + importDeviceText: 'Import @:business.deviceText', | |
18 | + batchActionText: 'Batch action', | |
19 | + assignCustomerText: 'Assign customer', | |
20 | + editProductText: '@:common.editText@:business.productText', | |
21 | + aliasNameText: 'Alias/Device name', | |
22 | + lastOnlineTimeText: 'Last online time', | |
23 | + lastOfflineTimeText: 'Last offline time', | |
24 | + cancelAssignText: 'Cancel assign', | |
25 | + cancelAssignConfirmText: 'Do you want to cancel the assignment?', | |
26 | + cancelCollectText: 'Cancel collect', | |
27 | + cancelCollectConfirmText: 'Do you want to cancel the favorites?', | |
28 | + onlineRecordText: 'Up-and-down recording', | |
29 | + allowText: 'allow', | |
30 | + notAllowText: "can't allow", | |
31 | + publiceDeviceConfirmTitleText: 'Are you sure to set device {name} to {type}?', | |
32 | + publicDeiviceConfirmText: | |
33 | + 'Once confirmed, the device and all its data will be made {type} and {allow} accessible to others.', | |
34 | + deviceInfoText: 'Device info', | |
35 | + deviceCertificateText: 'Device certificate', | |
36 | + autoGenerateText: 'Auto generate', | |
37 | + deviceTypeHelpText: 'Select the product to automatically associate the device type', | |
38 | + addressCodeText: 'Address code', | |
39 | + addressCodeHelpText: 'The address code ranges from 00~FF', | |
40 | + codeText: 'Device identification', | |
41 | + codePlaceholderText: 'Please enter the device ID or device address code', | |
42 | + brandText: 'Manufacturer', | |
43 | + deviceLabelText: 'Device label', | |
44 | + searchLocationText: 'Search location', | |
45 | + productPlaceholderText: '@:common.chooseText@:business.affiliatedProductText', | |
46 | + organizationPlaceholderText: '@:common.chooseText@:business.affiliatedOrganizationText', | |
47 | + addProtocolText: 'Add protocol', | |
48 | + clientIdText: 'Client ID', | |
49 | + clientIdPlaceholderText: '@:common.inputText@:deviceManagement.device.clientIdText', | |
50 | + refrestClientIdText: 'Refresh @:deviceManagement.device.clientIdText', | |
51 | + accessTokenText: 'Access token', | |
52 | + accessTokenPlaceholderText: '@:common.inputText@:deviceManagement.device.accessTokenText', | |
53 | + refreshAccessTokenText: 'Refresh @:deviceManagement.device.accessTokenText', | |
54 | + certificateTypeText: 'Certificate type', | |
55 | + rsaPublicKeyText: 'RSA public key', | |
56 | + usernameText: 'Username', | |
57 | + passwordText: 'Password', | |
58 | + thingsModelDataText: '@:business.thingsModelText data', | |
59 | + subdeviceText: 'Subdevice', | |
60 | + commandDeliveryRecordText: 'Command delivery record', | |
61 | + eventManagementText: 'Event management', | |
62 | + taskText: 'Task', | |
63 | + videoChannelText: 'Video channel', | |
64 | + deviceTopicText: 'Device Topic', | |
65 | + topicHelpText: 'Copy or view the device Topic', | |
66 | + managementDeviceCertificateText: 'Management @:deviceManagement.device.deviceCertificateText', | |
67 | + addLocationPlaceholderText: 'Add the geographic location of the device', | |
68 | + deviceCameraCodeText: 'Device camera code', | |
69 | + hostAddressText: 'Host address', | |
70 | + streamModeText: 'Stream mode', | |
71 | + channelSyncText: 'Channel sync', | |
72 | + channelCodeText: 'Channel number', | |
73 | + cameraCodeText: 'National standard number', | |
74 | + channelNameText: 'Channel name', | |
75 | + modelNumberText: 'Model number', | |
76 | + | |
77 | + thingsModelKeyValueText: 'Key/Value', | |
78 | + attributeDeliverySuccessText: 'Attribute delivery succeeded', | |
79 | + valueRangeRuleText: 'Value range from {min} to {max}', | |
80 | + lengthRuleText: 'The data length should be less than {length}', | |
81 | + noResponseText: 'No response', | |
82 | + commandDeliveryTimeText: 'Command delivery time', | |
83 | + commandDeliveryTypeText: 'Command type', | |
84 | + responseTypeText: 'Response type', | |
85 | + commandStatusText: 'Command status', | |
86 | + responseContentText: 'Response content', | |
87 | + commandContentText: 'Command content', | |
88 | + callTypeText: 'Oneway/Twoway', | |
89 | + commandText: 'Command', | |
90 | + timeText: 'Time', | |
91 | + identifierHelpText: 'Identifier: The object model event function defines an identifier', | |
92 | + eventNameText: 'Event name', | |
93 | + dateRangeText: 'Date range', | |
94 | + remoteConnectionStatusText: 'Remote connection status', | |
95 | + allowRemoteConnectionText: 'Allow remote connection', | |
96 | + deviceSnCodeText: 'Device SN', | |
97 | + tBoxInfoText: 'TBox infomation', | |
98 | + turnOnSuccessText: 'Turn on success', | |
99 | + turnOffSuccessText: 'Turn off success', | |
100 | + remoteConnectionText: 'Remote connection', | |
101 | + taskListText: 'Task list', | |
102 | + attributeText: 'Attribute', | |
103 | + keyText: 'Key', | |
104 | + valueText: 'Value', | |
105 | + queryTypeText: 'Query type', | |
106 | + lastestText: 'Latest', | |
107 | + timeRangeText: 'Time period', | |
108 | + latestDataText: 'Latest value', | |
109 | + dataAggregateText: 'Data aggregation function', | |
110 | + timeIntervalText: 'Time separation', | |
111 | + maxLimitText: 'Maximum number of bars', | |
112 | + maxLimitHelpText: | |
113 | + 'The number of data items that can be queried cannot exceed this value. A maximum of 50,000 can be queried.', | |
114 | + deviceAttributeText: 'Device attribute', | |
115 | + dataSortText: 'Data sorting', | |
116 | + chartModeText: 'Chart mode', | |
117 | + listModeText: 'List mode', | |
118 | + latestUpdateTimeText: 'Latest update time', | |
119 | + batchUpdateProducts: 'Batch update products', | |
120 | + batchUpdateProductsMessage: | |
121 | + 'Attention: When modifying device products, only products of the same type can be modified. If there are related devices such as "large screen", "configuration", "kanban", "scene linkage", "data flow", etc., please adjust and save them by yourself.', | |
122 | + protocolType: 'Protocol type', | |
123 | + sourceProduct: 'Source product', | |
124 | + deviceType: 'Device type', | |
125 | + targetProduct: 'Target product', | |
126 | + batchUpdateDevice: 'Batch modification of devices', | |
127 | + organizeArrayBased: 'Organize array based on gateway device requests', | |
128 | + chooseOrganization: 'Choose organization', | |
129 | + | |
130 | + nameText: 'Name', | |
131 | + labelText: 'Label', | |
132 | + statusText: 'Status', | |
133 | + latestConnectionTimeText: 'Latest connection time', | |
134 | + alarmTimeText: 'Alarm time', | |
135 | + alarmDeviceText: ' Alarm device', | |
136 | + alarmSceneText: 'Alaram scenario', | |
137 | + alarmSeverityText: 'Alarm severity', | |
138 | + alarmDetailsText: 'Alaram detail', | |
139 | + | |
140 | + basicInfoText: 'Basic infomation', | |
141 | + templateDownloadText: 'Template download', | |
142 | + selectAFileText: 'Select a file', | |
143 | + deviceFileText: 'Device file', | |
144 | + selectColumnTypeText: 'Select column text', | |
145 | + createEntityText: 'Create new entity', | |
146 | + completeText: 'Complete', | |
147 | + columnNameText: 'Column name', | |
148 | + columnTypeText: 'Column type', | |
149 | + createSuccessText: 'Create success', | |
150 | + errorText: 'Error', | |
151 | + errorListText: 'Error list', | |
152 | + updateText: 'Update', | |
153 | + templateDownloadHelpText: | |
154 | + 'Note: The first column of the template table header is the device name, and the second column is the access token. When you add a column, the name and access token cannot be the same.', | |
155 | + | |
156 | + csvSeparationText: 'CSV separator', | |
157 | + firstRowContainColumnNameText: 'The first line contains the column name', | |
158 | + telemetryAttributeText: 'Update properties/telemetry', | |
159 | + deviceImportTemplateText: 'Device import template', | |
160 | + | |
161 | + manageDeviceCredentials: 'Manage Device Credentials', | |
162 | + updateProductHelpMessage: { | |
163 | + text1: 'Pay Attention To:', | |
164 | + text2: | |
165 | + 'When modifying equipment products, if there are associated devices such as "large screen", "configuration", "kanban", "scene linkage", "data flow", etc., please adjust and save them by yourself.', | |
166 | + }, | |
167 | + updateOrgHelpMessage: { | |
168 | + text1: 'Pay Attention To:', | |
169 | + text2: | |
170 | + '1. When modifying device organization, if there are associated devices such as "big screen", "configuration", "kanban", "scene linkage", "data flow", etc., please adjust and save them by yourself.', | |
171 | + text3: | |
172 | + '2. When modifying the organization of a gateway device, its associated gateway sub device organization belongs to the gateway organization or below and does not need to be modified. Otherwise, the gateway sub device organization will be synchronously updated to the gateway organization.', | |
173 | + }, | |
174 | + commandIssuanceContent: 'Command issuance content', | |
175 | + commandIssuance: 'Command issuance', | |
176 | + intervalErrorText: 'Please select a time interval', | |
177 | + tcpAddressCodeHelpText: | |
178 | + 'When TCP gateway sub devices are online, device identification or address codes cannot be modified', | |
179 | +}; | ... | ... |
1 | +export default { | |
2 | + deviceAccessText: 'Device access information', | |
3 | + deviceAccessListText: '@:deviceManagement.deviceAccess.deviceAccessText list', | |
4 | + createDeviceAccessText: '@:common.createText @:deviceManagement.deviceAccess.deviceAccessText', | |
5 | + editDeviceAccessText: '@:common.editText @:deviceManagement.deviceAccess.deviceAccessText', | |
6 | + deviceAccessInfoText: 'Device access information detail', | |
7 | + intranetIPText: 'Intranet IP', | |
8 | + intranetPortText: 'Intranet port', | |
9 | + outernetIPText: 'Outernet IP', | |
10 | + outernetPortText: 'Outernet port', | |
11 | + accessProtocolText: 'Access protocol', | |
12 | + | |
13 | + intranetIPWithPortText: 'Intranet IP and port', | |
14 | + outernetIPWithPortText: 'Outernet IP and port', | |
15 | + serverIDText: 'Server ID', | |
16 | + serverDomainText: 'Server domain', | |
17 | + passwordText: 'Password', | |
18 | + intranetIPPlaceholderText: '@:common.inputText @:deviceManagement.deviceAccess.intranetIPText', | |
19 | + intranetPortPlaceholderText: | |
20 | + '@:common.inputText @:deviceManagement.deviceAccess.intranetPortText', | |
21 | + outernetIPPlaceholderText: '@:common.inputText @:deviceManagement.deviceAccess.outernetIPText', | |
22 | + outernetPortPlaceholderText: | |
23 | + '@:common.inputText @:deviceManagement.deviceAccess.outernetPortText', | |
24 | + ipRuleText: '@:common.inputText the ip in the correct format', | |
25 | + intranetPortRuleText: '@:common.inputText@:deviceManagement.device.intranetPortText', | |
26 | + outernetPortRuleText: '@:common.inputText@:deviceManagement.device.outernetPortText', | |
27 | + operationSuccessText: 'Operation success', | |
28 | +}; | ... | ... |
1 | +export default { | |
2 | + createText: 'Create product', | |
3 | + importText: 'Import product', | |
4 | + exportText: 'Export', | |
5 | + defaultText: 'Default', | |
6 | + productListText: 'Product list', | |
7 | + defaultSettingSuccessText: 'Setting default succeeded', | |
8 | + defaultSettingFailedText: 'Setting default failed', | |
9 | + updateRuleChain: 'Update rule chain', | |
10 | + | |
11 | + prodcutDetailText: 'Product Detail', | |
12 | + productText: 'Product', | |
13 | + imageText: 'Image', | |
14 | + deviceTypeText: 'Device type', | |
15 | + productNameText: 'Product name', | |
16 | + ruleChainText: 'Rule chain', | |
17 | + processQueueText: 'Processing queue', | |
18 | + descriptionText: 'Description', | |
19 | + | |
20 | + transportConfigurationText: 'Transport configuration', | |
21 | + accessTypeText: 'Access type', | |
22 | + accessScriptText: 'Access script', | |
23 | + uplinkScriptText: 'Uplink script', | |
24 | + downlinkScriptText: 'Downlink script', | |
25 | + enablePayloadCompatibilityText: 'Enable compatibility with other payload formats', | |
26 | + defaultDownlinkTopicUseDefaultTypeText: 'The default downlink topic uses JSON format', | |
27 | + accessProtocolText: 'Access protocol', | |
28 | + telemetryDataSubjectFilterText: 'Telemetry data subject filter', | |
29 | + attributeTopicFilterText: 'Attribute topic filter', | |
30 | + testScriptText: 'Test script', | |
31 | + hexLengthText: 'Hex length', | |
32 | + splicePositionText: 'Intercept start and stop position', | |
33 | + splicePositionHelpMessageText: | |
34 | + 'Example of interception: "ABCD".substring(0,2) The value after interception is "AB"', | |
35 | + inputSpliceStartPositionText: 'Please enter the intercept start and stop position', | |
36 | + splicePositionValidText: | |
37 | + 'The intercept start position is large and the intercept end position is large', | |
38 | + spliceLengthValidText: 'Intercept start and stop position large with HEX length', | |
39 | + inputStartPositionText: 'Please enter the starting position', | |
40 | + inputEndPositionText: 'Please enter cut-off location', | |
41 | + filterPrefixText: 'Matching prefix', | |
42 | + | |
43 | + deviceMessagePayloadText: '{deviceType} device message Payload', | |
44 | + energySavingModeText: 'Energy-saving mode', | |
45 | + psmActivityTimerText: 'PSM Activity timer', | |
46 | + edrxCycleText: 'eDRX Cycle', | |
47 | + edrxCycleTimeText: 'eDRX Cycle timer', | |
48 | + pagingTransmissionWindowText: 'Paging transmission window', | |
49 | + pagingTransmissionWindowTimeText: 'Paging transmission window time', | |
50 | + timerUnitText: 'Timer unit', | |
51 | + deviceTelemetryProtoSchemaText: 'Device telemetry proto schema', | |
52 | + deviceAttributesProtoSchemaText: 'Device attributes proto schema', | |
53 | + deviceRpcRequestProtoSchemaText: 'Device Rpc request proto schema', | |
54 | + deviceRpcResponseProtoSchemaText: 'Device Rpc response proto schema', | |
55 | + enableText: 'Enable', | |
56 | + closeText: 'Close', | |
57 | + | |
58 | + topicText: 'Topic', | |
59 | + featureText: 'Feature', | |
60 | + releaseText: 'Release', | |
61 | + subscribeText: 'Subscribe', | |
62 | + releaseTopicText: 'Release topic', | |
63 | + subscribeTopicText: 'Subscribe topics', | |
64 | + platformText: 'Platform', | |
65 | + deviceText: 'Device', | |
66 | + sensorDeviceText: 'Sensor device', | |
67 | + gatewayWithDirectDeviceText: 'Gatewat/Direct Connection device', | |
68 | + gatewayWithDirectWithSensorDeviceText: 'Gatewat/Direct Connection/Sensor device', | |
69 | + gatewayWithDirectTelemetryText: 'Gateway/Direct device telemetry', | |
70 | + serverCommandToDeviceText: 'The server command is sent to the device', | |
71 | + deviceResponseCommandToServerText: 'The device responds to the command to the server', | |
72 | + directAttributeReportText: 'Description Attributes of directly connected devices were reported', | |
73 | + deviceRequestServerAttributeText: | |
74 | + 'The device requests the server to share attributes and the client attributes', | |
75 | + serverResponseDeviceAttributeText: | |
76 | + 'The server responds to the shared attribute and the client attribute to the device', | |
77 | + deviceRequestSensorAttributeText: | |
78 | + 'The device requests the service terminal to share attributes and client attributes', | |
79 | + serviceResponseSensorAttributeText: | |
80 | + 'The server responds to the shared attributes of the sub-device and the attributes of the client to the device', | |
81 | + deviceReportClientAttributeText: 'The device displays the client properties of the subdevice', | |
82 | + gatewaySubTelemetryText: 'Gateway sub-device telemetry', | |
83 | + eventReportText: 'Event reporting', | |
84 | + orText: 'Or', | |
85 | + | |
86 | + thingsModelText: 'Things model', | |
87 | + thingsModelManageText: 'Things model management', | |
88 | + thingsModelBeforeEditTipText: | |
89 | + 'The current display is the function definition that has been posted online, if you need to modify, please click', | |
90 | + thingsModelAfterEditTipText: | |
91 | + 'You are editing a draft, you need to click publish, the object model will be officially effective.', | |
92 | + thingsModelTSLText: '@:deviceManagement.product.thingsModelText TSL', | |
93 | + thingsModelCreateText: '@:common.createText @:deviceManagement.product.thingsModelText', | |
94 | + thingsModelEditText: '@:common.editText @:deviceManagement.product.thingsModelText', | |
95 | + thingsModelExportText: 'Export @:deviceManagement.product.thingsModelText', | |
96 | + thingsModelExportAllText: 'Export all', | |
97 | + thingsModelImportText: 'Import @:deviceManagement.product.thingsModelText', | |
98 | + thingsModelReleaseText: 'Release online', | |
99 | + thingsModelReleaseConfirmText: 'Do you want to confirm the publication operation?', | |
100 | + thingsModelTSLDescText: | |
101 | + 'The Internet of Things platform describes the object model by defining a description Language of things, called TSL (Thing Specification Language), using JSON format, you can assemble the data of the reported device according to TSL. You can export complete physical models for cloud application development; You can also export only the compact object model and implement device development with the device side SDK.', | |
102 | + featureTypeText: 'Feature type', | |
103 | + featureNameText: 'Feature name', | |
104 | + identifierText: 'Identifier', | |
105 | + dataTypeText: 'Data type', | |
106 | + eventTypeText: 'Event type', | |
107 | + statusText: 'Status', | |
108 | + haveReleasedText: 'Have released', | |
109 | + toBeReleasedText: 'To be released', | |
110 | + | |
111 | + properties: 'Properties', | |
112 | + services: 'Services', | |
113 | + events: 'Events', | |
114 | + info: 'Info', | |
115 | + alert: 'Alert', | |
116 | + error: 'Error', | |
117 | + | |
118 | + thingsModelDescText: | |
119 | + 'Attributes generally refer to the operating state of the device, such as the current temperature; A service is a method that can be called by the device, which can define parameters, such as performing a task; Event refers to the notification reported by the device. For example, an alarm needs to be handled in time.', | |
120 | + accessModeText: 'Access mode', | |
121 | + valueRangeText: 'Value range', | |
122 | + stepText: 'Step', | |
123 | + unitText: 'Unit', | |
124 | + unitNameText: 'Unit name', | |
125 | + openNameText: 'Open', | |
126 | + closeNameText: 'Close', | |
127 | + boolCloseText: '0 - close', | |
128 | + boolOpenText: '1 - open', | |
129 | + lengthText: 'Data length(bytes)', | |
130 | + extensionDescText: 'Extended descriptor', | |
131 | + enumsDataText: 'Enums', | |
132 | + structDataText: 'JSON Object', | |
133 | + callTypeText: 'Call type', | |
134 | + inputDatText: 'Input data', | |
135 | + outputDataText: 'Output data', | |
136 | + featureNameHelpText: | |
137 | + 'Supports Chinese characters, uppercase and lowercase letters, digits, hyphens (Dashes), and underscores (_).', | |
138 | + identifierHelpText: 'Upper and lowercase letters, digits, and underscores are supported.', | |
139 | + identifierTCPHelpText: | |
140 | + 'Support upper and lower case letters, numbers, and underscores. To support original data retention, use the identifier "source"', | |
141 | + hexCommandRuleMessageText: 'Please enter ASCII or HEX service command (0~9/A~F)', | |
142 | + extensionDescHelpText: | |
143 | + 'The extended description is used to configure the mapping between the device access gateway agreement and the object model definition.', | |
144 | + extensionDescRuleText: '@:common.inputText@:deviceManagement.product.extensionDescText', | |
145 | + createExtensionDescText: '@:common.createText@:deviceManagement.product.extensionDescText', | |
146 | + maxValueText: 'Max value', | |
147 | + minValueText: 'Min value', | |
148 | + | |
149 | + actionTypeText: 'Action type', | |
150 | + registerAddressText: 'Register address', | |
151 | + originalDataTypeText: 'Original data type', | |
152 | + bitPositionText: 'Bit position', | |
153 | + scalingFactorText: 'Scaling factor', | |
154 | + createValueMappingText: '+ Add value mapping', | |
155 | + registerNumberText: 'Register number', | |
156 | + valueMappingText: 'Value mapping', | |
157 | + registerAddressHelpText: 'The value ranges from 0x0 - 0xFFFF', | |
158 | + valueRangeHelpText: | |
159 | + 'The value range refers to the value range of the original data after scaling factor processing. Data beyond the value range will be discarded.', | |
160 | + scalingFactorHelpText: 'Scale factor, cannot be 0, default is 1', | |
161 | + registerCountHelpText: | |
162 | + 'The value ranges from 1 to 125 when the operation type is hold register or input register', | |
163 | + valueRangeRuleText: 'The maximum is less than the minimum', | |
164 | + stepRuleText: 'The step length cannot be greater than the difference in the value range', | |
165 | + boolRuleText: 'Boolean values cannot be the same', | |
166 | + createStructItemText: '+@:common.createText parameter', | |
167 | + parameterNameText: 'Parameter name', | |
168 | + createEnumsText: '@:common.createText @:deviceManagement.product.enumsDataText', | |
169 | + createEnumsTooltipText: 'Item create up to 100', | |
170 | + enumsExistRuleText: | |
171 | + 'The same parameter values or parameter descriptions exist in the enumeration entries', | |
172 | + enumsExistSameValueText: 'The same enumeration exists', | |
173 | + referenceValueText: 'Reference value', | |
174 | + referenceValueRuleText: 'The value is an integer ranging from -2147483648 to 2147483647', | |
175 | + referenceDescText: 'Reference description', | |
176 | + referenceDescRuleText: | |
177 | + 'The value can contain a maximum of 20 characters, including Chinese, English, Japanese, digits, underscores (_), and hyphens (Dashes). The value must start with a Chinese, English, or digit', | |
178 | + enumsItemPlaceholderText: 'Numbered as "0"', | |
179 | + enumsNameRuleText: 'The parameter description cannot be empty', | |
180 | + enumsNamePlaceholderText: 'A description of the enumeration item', | |
181 | + | |
182 | + productCategoryText: 'Product category', | |
183 | + assignHardwareText: 'Assign hardware', | |
184 | + assignSoftwareText: 'Assign software', | |
185 | + customCategoryText: 'Custom category', | |
186 | + standardCategoryText: 'Standard category', | |
187 | + productCategoryPlaceholderText: | |
188 | + '@:common.chooseText@:deviceManagement.product.productCategoryText', | |
189 | + viewFunctionText: 'View function', | |
190 | + | |
191 | + nextStepText: 'Next step', | |
192 | + lastStepText: 'Last step', | |
193 | + gbtProtocolHelpText: 'The GBT28181 protocol uses ZLMediaKit streaming media service framework', | |
194 | + | |
195 | + coapDeviceTypeText: 'CoAP device Type', | |
196 | + coapDevicePayloadText: 'CoAP device message payload', | |
197 | + | |
198 | + unitMsText: 'Milliseconds', | |
199 | + unitSText: 'Second', | |
200 | + unitMText: 'Minute', | |
201 | + unitHText: 'Hour', | |
202 | + | |
203 | + mqttTopicHelpText: | |
204 | + 'Single [+] and multi-level [#] wildcards are supported. [+] is suitable for any topic filter level. For example, v1/devices/+/telemetry or +/devices/+/attributes. The topic filter itself can be replaced by [#] and must be the last symbol of the topic. For example, # or v1/devices/me/#.', | |
205 | + mqttEnableProtobufHelpText: | |
206 | + 'When enabled, the platform will use the Protobuf payload format by default. If parsing fails, the platform will try to use the JSON payload format. Helps with backward compatibility during firmware updates. For example, the initial version of the firmware uses Json, while the new version uses Protobuf. Support for both Protobuf and JSON is required in the firmware update process of the device group. Compatibility mode causes slight performance degradation, Therefore, it is recommended to disable this mode after updating all devices.', | |
207 | + mqttEnablePayloadCompatibilityHelpText: | |
208 | + 'When enabled, the platform will push properties through the following topics using the Json payload format And RPC: v1/devices/me/attributes/response/$request id, v1/devices/me/attributes, V1/devices/me/RPC/request/$request id, v1/devices/me/RPC/response/$request id. This setting does not affect properties and rpc subscriptions sent using the new (v2) topic: v2/a/res/$request id, v2/a, v2/r/req/$request id, v2/r/res/$request id. Where, $request id is an integer request identifier.', | |
209 | + accessScriptRuleText: '@:common.chooseText@:deviceManagement.accessScriptText', | |
210 | + downlinkScriptRuleText: '@:common.chooseText@:deviceManagement.downlinkScriptText', | |
211 | + typeText: 'Type', | |
212 | + scriptRuleText: 'Select the corresponding script', | |
213 | + createCoversionScriptText: '@:common.createText conversion script', | |
214 | + configurationTypeText: 'Configuration type', | |
215 | + defaultConfigurationText: 'Default configuration', | |
216 | + selectCategory: 'Select Category', | |
217 | + categoryName: 'Category Name', | |
218 | + pleaseEnterCategoryName: 'Please Enter Category Name', | |
219 | + area: 'Area', | |
220 | + pleaseSelectArea: 'Please Select Area', | |
221 | +}; | ... | ... |
src/locales/lang/en/dict.ts
0 → 100644
1 | +export default { | |
2 | + protocol_template_type: { | |
3 | + type: 'Protocol Template Type', | |
4 | + }, | |
5 | + tcp_access_auth_type: { | |
6 | + type: 'TCP Authentication Method', | |
7 | + dataCarrying: 'Data Carrying', | |
8 | + registrationPackage: 'Registration Package', | |
9 | + }, | |
10 | + streaming_media_type: { | |
11 | + type: 'Streaming Media Platform Type', | |
12 | + hikvisionIscPlatform: 'Hikvision ISC Platform', | |
13 | + fluoritePlatform: 'Fluorite Platform', | |
14 | + }, | |
15 | + category_field: { | |
16 | + type: 'Product Category Field', | |
17 | + environmentalPerception: 'Environmental Perception', | |
18 | + energyManagement: 'Energy Management', | |
19 | + intelligentPark: 'Intelligent Park', | |
20 | + intelligentAgriculture: 'Intelligent Agriculture', | |
21 | + edgeComputing: 'Edge Computing', | |
22 | + intelligentIndustry: 'Intelligent Industry', | |
23 | + intelligentRobot: 'Intelligent Robot', | |
24 | + intelligentCar: 'Intelligent Car', | |
25 | + smartCity: 'Smart City', | |
26 | + smartLife: 'Smart Life', | |
27 | + }, | |
28 | + originator_types: { | |
29 | + type: 'Entity Type', | |
30 | + ruleNodes: 'Rule Nodes', | |
31 | + ruleChain: 'Rule Chain', | |
32 | + instrumentPanel: 'Instrument Panel', | |
33 | + user: 'User', | |
34 | + customer: 'Customer', | |
35 | + tenant: 'Tenant', | |
36 | + entityView: 'Entity View', | |
37 | + assets: 'Assets', | |
38 | + equipment: 'Equipment', | |
39 | + }, | |
40 | + message_types_filter: { | |
41 | + type: 'Message Type', | |
42 | + }, | |
43 | + register_data_format: { | |
44 | + type: 'Register Data Format', | |
45 | + bitPosition: 'Bit', | |
46 | + sixteenBitUnsigned: '16-bit Unsigned', | |
47 | + sixteenBitSigned: '16-bit Signed', | |
48 | + }, | |
49 | + script_message_type: { | |
50 | + type: 'Script Message Type', | |
51 | + }, | |
52 | + notice_type: { | |
53 | + type: 'Notice Type', | |
54 | + meeting: 'Meeting', | |
55 | + notice: 'Notice', | |
56 | + }, | |
57 | + severity_type: { | |
58 | + type: 'Alert Severity', | |
59 | + uncertain: 'Uncertain', | |
60 | + warning: 'Warning', | |
61 | + minor: 'Minor', | |
62 | + major: 'Major', | |
63 | + critical: 'Critical', | |
64 | + }, | |
65 | + interface_type: { | |
66 | + type: 'Interface Type', | |
67 | + systemDefault: 'System Default', | |
68 | + custom: 'Custom', | |
69 | + }, | |
70 | + disabled_platform_admin_auth: { | |
71 | + type: 'Disabled Permissions for Platform Admin', | |
72 | + largeScreenDesigner: 'Large Screen Designer', | |
73 | + dictionaryManagement: 'Dictionary Management', | |
74 | + accountManagement: 'Account Management', | |
75 | + roleManagement: 'Role Management', | |
76 | + menuManagement: 'Menu Management', | |
77 | + scheduledTasks: 'Scheduled Tasks', | |
78 | + }, | |
79 | + disabled_customer_auth: { | |
80 | + type: 'Disabled Customer Permissions', | |
81 | + accountManagement: 'Account Management', | |
82 | + roleManagement: 'Role Management', | |
83 | + templateConfigurationDesign: 'Template Configuration Design', | |
84 | + templateConfigurationDeletion: 'Template Configuration Deletion', | |
85 | + templateConfigurationAddition: 'Template Configuration Addition', | |
86 | + templateConfigurationEdit: 'Template Configuration Edit', | |
87 | + productList: 'Product List', | |
88 | + publicInterfaceUpdate: 'Public Interface Update', | |
89 | + publicInterfacePublish: 'Public Interface Publish', | |
90 | + publicInterfaceDelete: 'Public Interface Delete', | |
91 | + publicInterfaceUnpublish: 'Public Interface Unpublish', | |
92 | + publicInterfaceManagement: 'Public Interface Management', | |
93 | + publicInterfaceAddition: 'Public Interface Addition', | |
94 | + kanbanManagementDetails: 'Kanban Management Details', | |
95 | + scheduledTasks: 'Scheduled Tasks', | |
96 | + feedbackOnOpinions: 'Feedback on Opinions', | |
97 | + logManagement: 'Log Management', | |
98 | + dictionaryManagement: 'Dictionary Management', | |
99 | + menuManagement: 'Menu Management', | |
100 | + organizationalManagement: 'Organizational Management', | |
101 | + platformCustomization: 'Platform Customization', | |
102 | + reportExportDeletion: 'Report Export Deletion', | |
103 | + reportConfiguration: 'Report Configuration', | |
104 | + videoConfigurationDeletion: 'Video Configuration Deletion', | |
105 | + videoAddition: 'Video Addition', | |
106 | + videoConfigurationEdit: 'Video Configuration Edit', | |
107 | + largeScreenDesignerUnpublished: 'Large Screen Designer Unpublished', | |
108 | + equipmentListPublic: 'Equipment List Public', | |
109 | + equipmentImport: 'Equipment Import', | |
110 | + equipmentListDeletion: 'Equipment List Deletion', | |
111 | + equipmentListEdit: 'Equipment List Edit', | |
112 | + equipmentListAddition: 'Equipment List Addition', | |
113 | + kanbanManagementSharing: 'Kanban Management Sharing', | |
114 | + configurationCenterSharing: 'Configuration Center Sharing', | |
115 | + largeScreenDesignerSharing: 'Large Screen Designer Sharing', | |
116 | + largeScreenDesignerDesign: 'Large Screen Designer Design', | |
117 | + largeScreenDesignerPublish: 'Large Screen Designer Publish', | |
118 | + largeScreenDesignerDeletion: 'Large Screen Designer Deletion', | |
119 | + largeScreenDesignerAddition: 'Large Screen Designer Addition', | |
120 | + largeScreenDesignerEdit: 'Large Screen Designer Edit', | |
121 | + configurationCenterDesign: 'Configuration Center Design', | |
122 | + configurationCenterDeletion: 'Configuration Center Deletion', | |
123 | + configurationCenterEdit: 'Configuration Center Edit', | |
124 | + configurationCenterAddition: 'Configuration Center Addition', | |
125 | + kanbanManagementAddition: 'Kanban Management/Addition', | |
126 | + kanbanDeletion: 'Kanban Deletion', | |
127 | + kanbanUpdate: 'Kanban Update', | |
128 | + ruleEngineView: 'Rule Engine View', | |
129 | + scriptManagementView: 'Script Management View', | |
130 | + alarmProfileView: 'Alarm Profile View', | |
131 | + alarmTemplateView: 'Alarm Template View', | |
132 | + streamingProfileView: 'Streaming Profile View', | |
133 | + taskManagementView: 'Task Management View', | |
134 | + messageTemplateView: 'Message Template View', | |
135 | + messageConfigView: 'Message Config View', | |
136 | + noticeManagementView: 'Notice Management View', | |
137 | + otaUpgradeView: 'OTA Upgrade View', | |
138 | + systemManagementView: 'System Management View', | |
139 | + }, | |
140 | + interface_Type: { | |
141 | + type: 'Interface Type', | |
142 | + custom: 'Custom', | |
143 | + systemDefault: 'System Default', | |
144 | + }, | |
145 | + data_validate: { | |
146 | + type: 'CRC Data Validation', | |
147 | + crc32High: 'CRC32, High Byte First', | |
148 | + crc32Lower: 'CRC32, Low Byte First', | |
149 | + andTotalXor: 'AND Total XOR', | |
150 | + totalAndSum: 'Total AND Sum', | |
151 | + crc16High: 'CRC16, High Byte First', | |
152 | + crc16Lower: 'CRC16, Low Byte First', | |
153 | + }, | |
154 | + function_code: { | |
155 | + type: 'ModBus Function Code', | |
156 | + functionCode15: '0F Write Multiple Coil States', | |
157 | + functionCode16: '10 Write Multiple Holding Registers', | |
158 | + functionCode06: '06 Write Single Holding Register', | |
159 | + functionCode05: '05 Write Single Coil Register', | |
160 | + functionCode04: '04 Read Input Registers', | |
161 | + functionCode03: '03 Read Holding Registers', | |
162 | + functionCode02: '02 Read Input Status', | |
163 | + functionCode01: '01 Read Coil Status', | |
164 | + }, | |
165 | + slave_address: { | |
166 | + type: 'Slave Address', | |
167 | + }, | |
168 | + script_type: { | |
169 | + type: 'Script Type', | |
170 | + transportTcpAuth: 'Device Authentication', | |
171 | + transportTcpUp: 'Upstream Data Parsing', | |
172 | + }, | |
173 | + dataview_select_origin_type: { | |
174 | + type: 'Source Address Type', | |
175 | + customUrl: 'Custom Address', | |
176 | + serverUrl: 'Server Address', | |
177 | + }, | |
178 | + date_enum: { | |
179 | + type: 'Date Type', | |
180 | + oneHour: '1 Hour', | |
181 | + fiveHours: '5 Hours', | |
182 | + tenHours: '10 Hours', | |
183 | + oneDay: '1 Day', | |
184 | + sevenDays: '7 Days', | |
185 | + thirtyDays: '30 Days', | |
186 | + }, | |
187 | + dataview_select_sql_request: { | |
188 | + type: 'Large Screen Designer SQL Request Method', | |
189 | + }, | |
190 | + dataview_builtin_params: { | |
191 | + type: 'Large Screen Designer GET Built-in Parameters', | |
192 | + entityId: 'Device', | |
193 | + dateRange: 'Date Range', | |
194 | + keys: 'Attributes', | |
195 | + deviceProfileIdOrganizationIdEntityIdKeys: 'Product/Organization/Device/Attributes', | |
196 | + deviceProfileIdOrganizationIdEntityId: 'Product/Organization/Device', | |
197 | + organizationId: 'Organization', | |
198 | + deviceProfileId: 'Product', | |
199 | + }, | |
200 | + dataview_select_request: { | |
201 | + type: 'Large Screen Designer Default Request Type', | |
202 | + }, | |
203 | + dataview_select_methods: { | |
204 | + type: 'Large Screen Designer Request Method', | |
205 | + ordinaryRequest: 'Ordinary Request', | |
206 | + websocketRequest: 'WebSocket Request', | |
207 | + }, | |
208 | + enabled_platform_admin_auth: { | |
209 | + type: 'Enabled Platform Admin Permissions', | |
210 | + personalCenterView: 'Personal Center', | |
211 | + productCategoryList: 'Product Category', | |
212 | + platformNoticeView: 'Platform Notice', | |
213 | + messageManagementView: 'Message Management', | |
214 | + scheduledTaskView: 'Scheduled Task', | |
215 | + opinionFeedbackView: 'Feedback on Opinions', | |
216 | + logManagementView: 'Log Management', | |
217 | + systemPasswordView: 'Change Password', | |
218 | + systemDictView: 'Dictionary Management', | |
219 | + systemOrganizationView: 'Organization Management', | |
220 | + appDesignDataResetReset: 'App Factory Reset', | |
221 | + platformDataResetReset: 'Platform Factory Reset', | |
222 | + appDesignGetGet: 'View App Information', | |
223 | + platformGetGet: 'View Platform Information', | |
224 | + appDesignUpdateUpdate: 'Update App Information', | |
225 | + platformUpdateUpdate: 'Update Platform Information', | |
226 | + tenantRoleView: 'Tenant Role', | |
227 | + tenantManageView: 'Tenant List', | |
228 | + dashboardWorkbenchView: 'Dashboard', | |
229 | + }, | |
230 | + disabled_tenant_auth: { | |
231 | + type: 'Disabled Tenant Admin Permissions', | |
232 | + systemRoleView: 'Role Management', | |
233 | + systemAccountView: 'Account Management', | |
234 | + deviceProfileAccessInformationUpdate: 'Device Access Info Edit', | |
235 | + deviceProfileAccessInformationDelete: 'Device Access Info Delete', | |
236 | + deviceProfileAccessInformationPost: 'Device Access Info Add', | |
237 | + productCategoryList: 'Product Category', | |
238 | + opinionFeedbackView: 'Feedback on Opinions', | |
239 | + scheduledTaskView: 'Scheduled Task', | |
240 | + systemMenuView: 'Menu Management', | |
241 | + systemDictView: 'Dictionary Management', | |
242 | + platformDataResetReset: 'Platform Factory Reset', | |
243 | + platformGetGet: 'View Platform Information', | |
244 | + platformUpdateUpdate: 'Update Platform Information', | |
245 | + appDesignDataResetReset: 'App Factory Reset', | |
246 | + appDesignGetGet: 'View App Information', | |
247 | + appDesignUpdateUpdate: 'Update App Information', | |
248 | + tenantRoleView: 'Tenant Role', | |
249 | + tenantSettingView: 'Tenant Configuration', | |
250 | + tenantManageView: 'Tenant List', | |
251 | + }, | |
252 | + enabled_sysadmin_auth: { | |
253 | + type: 'Enabled Super Admin Permissions', | |
254 | + deviceAccessList: 'Device Access Info', | |
255 | + personalCenterView: 'Personal Center', | |
256 | + productCategoryList: 'Product Category', | |
257 | + dataviewCenterView: 'Large Screen Designer', | |
258 | + noticeManagementView: 'Notice Management', | |
259 | + tenantManagementView: 'Tenant Management', | |
260 | + platformCustomView: 'Platform Customization', | |
261 | + messageManagementView: 'Message Management', | |
262 | + noticeMeView: 'My Notices', | |
263 | + scheduledTaskView: 'Scheduled Task', | |
264 | + opinionFeedbackView: 'Feedback on Opinions', | |
265 | + logManagementView: 'Log Management', | |
266 | + systemPasswordView: 'Change Password', | |
267 | + systemDictView: 'Dictionary Management', | |
268 | + systemMenuView: 'Menu Management', | |
269 | + systemAccountView: 'Account Management', | |
270 | + systemRoleView: 'Role Management', | |
271 | + systemOrganizationView: 'Organization Management', | |
272 | + dashboardWorkbenchView: 'Dashboard', | |
273 | + }, | |
274 | + original_data: { | |
275 | + type: 'Retain Original Data', | |
276 | + false: 'No', | |
277 | + true: 'Yes', | |
278 | + }, | |
279 | + custom_mode: { | |
280 | + type: 'Mode', | |
281 | + asynchronous: 'Asynchronous', | |
282 | + synchronous: 'Synchronous', | |
283 | + }, | |
284 | + custom_define: { | |
285 | + type: 'Custom Type', | |
286 | + custom: 'Custom', | |
287 | + service: 'Service', | |
288 | + attribute: 'Attribute', | |
289 | + }, | |
290 | + report_data_type: { | |
291 | + type: 'Report Data Type', | |
292 | + hexadecimal: 'Hexadecimal', | |
293 | + }, | |
294 | + event_type: { | |
295 | + type: 'Event Type', | |
296 | + error: 'Error', | |
297 | + alert: 'Alert', | |
298 | + info: 'Information', | |
299 | + }, | |
300 | + call_mode: { | |
301 | + type: 'Call Mode', | |
302 | + synchronous: 'Synchronous', | |
303 | + asynchronous: 'Asynchronous', | |
304 | + }, | |
305 | + data_type: { | |
306 | + type: 'Data Type', | |
307 | + enum: 'enum (Enumeration)', | |
308 | + struct: 'struct (Structure)', | |
309 | + text: 'text (String)', | |
310 | + boolean: 'bool (Boolean)', | |
311 | + double: 'double (Double Precision Floating Point)', | |
312 | + integer: 'int32 (Integer)', | |
313 | + }, | |
314 | + read_write_type: { | |
315 | + type: 'Read/Write Type', | |
316 | + readOnly: 'Read-Only', | |
317 | + readWrite: 'Read/Write', | |
318 | + }, | |
319 | + attribute_unit: { | |
320 | + type: 'Attribute Unit', | |
321 | + meter: 'Meter', | |
322 | + kilometer: 'Kilometer', | |
323 | + decimeter: 'Decimeter', | |
324 | + centimeter: 'Centimeter', | |
325 | + millimeter: 'Millimeter', | |
326 | + micrometer: 'Micrometer', | |
327 | + nanometer: 'Nanometer', | |
328 | + squareMeter: 'Square Meter', | |
329 | + squareKilometer: 'Square Kilometer', | |
330 | + squareMillimeter: 'Square Millimeter', | |
331 | + squareCentimeter: 'Square Centimeter', | |
332 | + hectare: 'Hectare', | |
333 | + cubicMeter: 'Cubic Meter', | |
334 | + cubicKilometer: 'Cubic Kilometer', | |
335 | + cubicCentimeter: 'Cubic Centimeter', | |
336 | + cubicMillimeter: 'Cubic Millimeter', | |
337 | + liter: 'Liter', | |
338 | + milliliter: 'Milliliter', | |
339 | + newton: 'Newton', | |
340 | + kilogram: 'Kilogram', | |
341 | + gram: 'Gram', | |
342 | + milligram: 'Milligram', | |
343 | + pascal: 'Pascal', | |
344 | + kilopascal: 'Kilopascal', | |
345 | + hectopascal: 'Hectopascal', | |
346 | + millipascal: 'Millipascal', | |
347 | + celsius: 'Celsius', | |
348 | + ton: 'Ton', | |
349 | + kelvin: 'Kelvin', | |
350 | + fahrenheit: 'Fahrenheit', | |
351 | + joule: 'Joule', | |
352 | + kilojoule: 'Kilojoule', | |
353 | + electronVolt: 'Electron Volt', | |
354 | + wattHour: 'Watt Hour', | |
355 | + kilowattHour: 'Kilowatt Hour', | |
356 | + calorie: 'Calorie', | |
357 | + watt: 'Watt', | |
358 | + kilowatt: 'Kilowatt', | |
359 | + milliwatt: 'Milliwatt', | |
360 | + microwatt: 'Microwatt', | |
361 | + hertz: 'Hertz', | |
362 | + radian: 'Radian', | |
363 | + degree: 'Degree', | |
364 | + minute: 'Minute', | |
365 | + second: 'Second', | |
366 | + meterPerSecond: 'Meter Per Second', | |
367 | + kilometerPerHour: 'Kilometer Per Hour', | |
368 | + knot: 'Knot', | |
369 | + year: 'Year', | |
370 | + month: 'Month', | |
371 | + week: 'Week', | |
372 | + day: 'Day', | |
373 | + hour: 'Hour', | |
374 | + millisecond: 'Millisecond', | |
375 | + volt: 'Volt', | |
376 | + millivolt: 'Millivolt', | |
377 | + ampere: 'Ampere', | |
378 | + kiloampere: 'Kiloampere', | |
379 | + milliampere: 'Milliampere', | |
380 | + microampere: 'Microampere', | |
381 | + ohm: 'Ohm', | |
382 | + farad: 'Farad', | |
383 | + microfarad: 'Microfarad', | |
384 | + picofarad: 'Picofarad', | |
385 | + nanoFarad: 'Nano Farad', | |
386 | + kilogramPerCubicMeter: 'Kilogram Per Cubic Meter', | |
387 | + gramPerCubicMeter: 'Gram Per Cubic Meter', | |
388 | + milligramPerCubicMeter: 'Milligram Per Cubic Meter', | |
389 | + microgramPerCubicMeter: 'Microgram Per Cubic Meter', | |
390 | + milligramPerLiter: 'Milligram Per Liter', | |
391 | + gramPerLiter: 'Gram Per Liter', | |
392 | + gramPerMilliliter: 'Gram Per Milliliter', | |
393 | + bit: 'Bit', | |
394 | + lumen: 'Lumen', | |
395 | + percentage: 'Percentage', | |
396 | + decibel: 'Decibel', | |
397 | + gravityAcceleration: 'Gravity Acceleration', | |
398 | + illuminance: 'Illuminance', | |
399 | + pixel: 'Pixel', | |
400 | + partsPerMillion: 'Parts Per Million', | |
401 | + microgramPerSquareDecimeterPerDay: 'Microgram Per Square Decimeter Per Day', | |
402 | + byte: 'Byte', | |
403 | + kilobyte: 'Kilobyte', | |
404 | + megabyte: 'Megabyte', | |
405 | + gigabyte: 'Gigabyte', | |
406 | + kilocalorie: 'Kilocalorie', | |
407 | + microgramPerLiter: 'Microgram Per Liter', | |
408 | + kiloFaradHour: 'Kilo Farad Hour', | |
409 | + cubicMeterPerHour: 'Cubic Meter Per Hour', | |
410 | + megapascal: 'Megapascal', | |
411 | + literPerSecond: 'Liter Per Second', | |
412 | + kilocaloriePerHour: 'Kilocalorie Per Hour', | |
413 | + tonPerHour: 'Ton Per Hour', | |
414 | + revolutionsPerMinute: 'Revolutions Per Minute', | |
415 | + kilogramPerSecond: 'Kilogram Per Second', | |
416 | + cubicMeterPerSecond: 'Cubic Meter Per Second', | |
417 | + relativeHumidity: 'Relative Humidity', | |
418 | + piece: 'Piece', | |
419 | + microWattPerSquareCentimeter: 'Micro Watt Per Square Centimeter', | |
420 | + kiloFarad: 'Kilo Farad', | |
421 | + kiloVoltAmpere: 'Kilo Volt Ampere', | |
422 | + kiloVolt: 'Kilo Volt', | |
423 | + standardCubicMeterPerHour: 'Standard Cubic Meter Per Hour', | |
424 | + step: 'Step', | |
425 | + gear: 'Gear', | |
426 | + time: 'Time', | |
427 | + millimeterPerSecond: 'Millimeter Per Second', | |
428 | + bloodSugar: 'Blood Sugar', | |
429 | + bloodPressure: 'Blood Pressure', | |
430 | + dripRate: 'Drip Rate', | |
431 | + voltPerMeter: 'Volt Per Meter', | |
432 | + newtonPerCoulomb: 'Newton Per Coulomb', | |
433 | + microSiemenPerCentimeter: 'Micro Siemen Per Centimeter', | |
434 | + nanogramPerLiter: 'Nanogram Per Liter', | |
435 | + bar: 'Bar', | |
436 | + siemens: 'Siemens', | |
437 | + saturation: 'Saturation', | |
438 | + milliPascal: 'Milli Pascal', | |
439 | + precipitation: 'Precipitation', | |
440 | + totalSolarRadiation: 'Total Solar Radiation', | |
441 | + soilECValue: 'Soil EC Value', | |
442 | + pHValue: 'P H Value', | |
443 | + turbidity: 'Turbidity', | |
444 | + milligramPerKilogram: 'Milligram Per Kilogram', | |
445 | + }, | |
446 | + query_week: { | |
447 | + type: 'Query Interval', | |
448 | + '1Second': '1 Second', | |
449 | + '5Seconds': '5 Seconds', | |
450 | + '10Seconds': '10 Seconds', | |
451 | + '15Seconds': '15 Seconds', | |
452 | + '30Seconds': '30 Seconds', | |
453 | + '1Minute': '1 Minute', | |
454 | + '2Minutes': '2 Minutes', | |
455 | + '5Minutes': '5 Minutes', | |
456 | + '10Minutes': '10 Minutes', | |
457 | + '15Minutes': '15 Minutes', | |
458 | + '30Minutes': '30 Minutes', | |
459 | + '1Hour': '1 Hour', | |
460 | + '2Hours': '2 Hours', | |
461 | + '5Hours': '5 Hours', | |
462 | + '10Hours': '10 Hours', | |
463 | + '12Hours': '12 Hours', | |
464 | + '1Day': '1 Day', | |
465 | + '7Days': '7 Days', | |
466 | + '30Days': '30 Days', | |
467 | + }, | |
468 | + time_interval: { | |
469 | + type: 'Time Interval', | |
470 | + '1Second': '1 Second', | |
471 | + '5Seconds': '5 Seconds', | |
472 | + '10Seconds': '10 Seconds', | |
473 | + '15Seconds': '15 Seconds', | |
474 | + '30Seconds': '30 Seconds', | |
475 | + '1Minute': '1 Minute', | |
476 | + '2Minutes': '2 Minutes', | |
477 | + '5Minutes': '5 Minutes', | |
478 | + '15Minutes': '15 Minutes', | |
479 | + '30Minutes': '30 Minutes', | |
480 | + '1Hour': '1 Hour', | |
481 | + '2Hours': '2 Hours', | |
482 | + '5Hours': '5 Hours', | |
483 | + '10Hours': '10 Hours', | |
484 | + '12Hours': '12 Hours', | |
485 | + '1Day': '1 Day', | |
486 | + }, | |
487 | + every_month: { | |
488 | + type: 'Monthly Report Execution', | |
489 | + '31stDay': '31st Day', | |
490 | + '30thDay': '30th Day', | |
491 | + '29thDay': '29th Day', | |
492 | + '28thDay': '28th Day', | |
493 | + '27thDay': '27th Day', | |
494 | + '26thDay': '26th Day', | |
495 | + '25thDay': '25th Day', | |
496 | + '24thDay': '24th Day', | |
497 | + '23rdDay': '23rd Day', | |
498 | + '22ndDay': '22nd Day', | |
499 | + '21stDay': '21st Day', | |
500 | + '20thDay': '20th Day', | |
501 | + '19thDay': '19th Day', | |
502 | + '18thDay': '18th Day', | |
503 | + '17thDay': '17th Day', | |
504 | + '16thDay': '16th Day', | |
505 | + '15thDay': '15th Day', | |
506 | + '14thDay': '14th Day', | |
507 | + '13thDay': '13th Day', | |
508 | + '12thDay': '12th Day', | |
509 | + '11thDay': '11th Day', | |
510 | + '10thDay': '10th Day', | |
511 | + '9thDay': '9th Day', | |
512 | + '8thDay': '8th Day', | |
513 | + '7thDay': '7th Day', | |
514 | + '6thDay': '6th Day', | |
515 | + '5thDay': '5th Day', | |
516 | + '4thDay': '4th Day', | |
517 | + '3rdDay': '3rd Day', | |
518 | + '2ndDay': '2nd Day', | |
519 | + '1stDay': '1st Day', | |
520 | + }, | |
521 | + every_week: { | |
522 | + type: 'Weekly Report Execution', | |
523 | + sunday: 'Sunday', | |
524 | + saturday: 'Saturday', | |
525 | + friday: 'Friday', | |
526 | + thursday: 'Thursday', | |
527 | + wednesday: 'Wednesday', | |
528 | + tuesday: 'Tuesday', | |
529 | + monday: 'Monday', | |
530 | + }, | |
531 | + every_day: { | |
532 | + type: 'Daily Report Execution', | |
533 | + '11Pm': '11 PM', | |
534 | + '10Pm': '10 PM', | |
535 | + '9Pm': '9 PM', | |
536 | + '8Pm': '8 PM', | |
537 | + '7Pm': '7 PM', | |
538 | + '6Pm': '6 PM', | |
539 | + '5Pm': '5 PM', | |
540 | + '4Pm': '4 PM', | |
541 | + '3Pm': '3 PM', | |
542 | + '2Pm': '2 PM', | |
543 | + '1Pm': '1 PM', | |
544 | + Noon: 'Noon', | |
545 | + '11Am': '11 AM', | |
546 | + '10Am': '10 AM', | |
547 | + '9Am': '9 AM', | |
548 | + '8Am': '8 AM', | |
549 | + '7Am': '7 AM', | |
550 | + '6Am': '6 AM', | |
551 | + '5Am': '5 AM', | |
552 | + '4Am': '4 AM', | |
553 | + '3Am': '3 AM', | |
554 | + '2Am': '2 AM', | |
555 | + '1Am': '1 AM', | |
556 | + Midnight: 'Midnight', | |
557 | + }, | |
558 | + device_brand_gateway: { | |
559 | + type: 'Gateway Device Manufacturer', | |
560 | + tBoxEdgeGateway: 'TBox Edge Gateway', | |
561 | + customManufacturer: 'Custom Manufacturer', | |
562 | + }, | |
563 | + exception_log: { | |
564 | + type: 'Resource Operation Type', | |
565 | + deviceControl: 'Device Control', | |
566 | + edit: 'Edit', | |
567 | + delete: 'Delete', | |
568 | + add: 'Add', | |
569 | + all: 'All', | |
570 | + }, | |
571 | + operate_log: { | |
572 | + type: 'Resource Type', | |
573 | + sceneLinkage: 'Scene Linkage', | |
574 | + tenantConfiguration: 'Tenant Configuration', | |
575 | + tenantManagement: 'Tenant Management', | |
576 | + deviceConfiguration: 'Device Configuration', | |
577 | + device: 'Device', | |
578 | + }, | |
579 | + user_log: { | |
580 | + type: 'User Operation Type', | |
581 | + logout: 'Logout', | |
582 | + login: 'Login', | |
583 | + }, | |
584 | + convert_data_to: { | |
585 | + type: 'Data Conversion', | |
586 | + }, | |
587 | + read_state: { | |
588 | + type: 'Read Status', | |
589 | + unread: 'Unread', | |
590 | + read: 'Read', | |
591 | + }, | |
592 | + receiver_type: { | |
593 | + type: 'Receiver Type', | |
594 | + all: 'All', | |
595 | + organization: 'Organization', | |
596 | + department: 'Department', | |
597 | + individual: 'Individual', | |
598 | + }, | |
599 | + draft_status: { | |
600 | + type: 'Draft Status', | |
601 | + draft: 'Draft', | |
602 | + published: 'Published', | |
603 | + }, | |
604 | + queen_execute_sequence: { | |
605 | + type: 'Queue Execution Sequence', | |
606 | + sequentialByOriginator: 'Sequential by Originator', | |
607 | + main: 'Main', | |
608 | + highPriority: 'High Priority', | |
609 | + }, | |
610 | + device_type: { | |
611 | + type: 'Device Type', | |
612 | + gatewaySubDevice: 'Gateway Sub-device', | |
613 | + directConnectionDevice: 'Direct Connection Device', | |
614 | + gatewayDevice: 'Gateway Device', | |
615 | + }, | |
616 | + template_purpose: { | |
617 | + type: 'Template Purpose', | |
618 | + clearPassword: 'Clear Password', | |
619 | + alarmNotice: 'Alarm Notice', | |
620 | + forgetPassword: 'Forgot Password', | |
621 | + login: 'Login', | |
622 | + }, | |
623 | + platform_type: { | |
624 | + type: 'Platform Type', | |
625 | + enterpriseWechatPlatform: 'Enterprise WeChat Platform', | |
626 | + aliVoicePlatform: 'Aliyun Voice Platform', | |
627 | + weiXinPlatform: 'WeChat Platform', | |
628 | + dingTalkPlatform: 'DingTalk Platform', | |
629 | + tencentCloudPlatform: 'Tencent Cloud Platform', | |
630 | + aliCloudPlatform: 'Aliyun Platform', | |
631 | + }, | |
632 | + message_type: { | |
633 | + type: 'Message Type', | |
634 | + enterpriseWechat: 'Enterprise WeChat', | |
635 | + voiceNotification: 'Voice Notification', | |
636 | + dingTalk: 'DingTalk', | |
637 | + email: 'Email', | |
638 | + sms: 'SMS', | |
639 | + }, | |
640 | + open_api_classify: { | |
641 | + type: 'Open api classify', | |
642 | + device: 'DEVICE', | |
643 | + alarm: 'ALARM', | |
644 | + video: 'VIDEO', | |
645 | + statistics: 'STATISTICS', | |
646 | + system: 'SYSTEM', | |
647 | + }, | |
648 | +}; | ... | ... |
src/locales/lang/en/edge/instance.ts
0 → 100644
1 | +export default { | |
2 | + action: { | |
3 | + create: 'Create Instance', | |
4 | + syncEdge: 'Sync Edge', | |
5 | + edit: 'Edit Instance', | |
6 | + copy: 'Copy', | |
7 | + assignDevice: 'Assign Device', | |
8 | + cancelAssign: 'Cancel Assignment', | |
9 | + copyAccessToken: 'Copy Access Token', | |
10 | + manageAccessToken: 'Manage Credentials', | |
11 | + clickExpand: 'Click to Expand', | |
12 | + }, | |
13 | + search: { | |
14 | + instanceName: 'Instance Name', | |
15 | + instanceNamePlaceholder: 'Please enter instance name', | |
16 | + deviceName: 'Device Name', | |
17 | + deviceNamePlaceholder: 'Please enter device name', | |
18 | + instanceType: 'Instance Type', | |
19 | + edgeType: 'Edge Type', | |
20 | + edgeKey: 'Edge Key', | |
21 | + edgeSecret: 'Edge Secret', | |
22 | + label: 'Label', | |
23 | + labelPlaceholder: 'Please enter label', | |
24 | + desc: 'Description', | |
25 | + descPlaceholder: 'Please enter description', | |
26 | + keyValue: 'Key/Value', | |
27 | + keyValuePlaceholder: 'Please enter key/value', | |
28 | + }, | |
29 | + text: { | |
30 | + edgeDetail: 'Edge Detail', | |
31 | + label: 'Label', | |
32 | + type: 'Edge Type', | |
33 | + desc: 'Description', | |
34 | + online: 'Online', | |
35 | + offline: 'Offline', | |
36 | + edgeName: 'Edge Name', | |
37 | + edgeType: 'Edge Type', | |
38 | + edgeDevice: 'Edge Device', | |
39 | + deviceLabel: 'Device Label', | |
40 | + status: 'Status', | |
41 | + edgeKey: 'Edge Key', | |
42 | + edgeSecret: 'Edge Secret', | |
43 | + createTime: 'Creation Time', | |
44 | + deviceStatus: 'Device Status', | |
45 | + deviceName: 'Alias/Device Name', | |
46 | + relatedProduct: 'Related Product', | |
47 | + relatedOrganization: 'Related Organization', | |
48 | + relatedGateway: 'Related Gateway', | |
49 | + deviceType: 'Device Type', | |
50 | + action: 'Action', | |
51 | + noData: 'No Data Available', | |
52 | + cpuUsage: 'CPU Usage', | |
53 | + memoryUsage: 'Memory Usage', | |
54 | + diskUsage: 'Disk Usage', | |
55 | + eventTime: 'Event Time', | |
56 | + server: 'Server', | |
57 | + event: 'Event', | |
58 | + error: 'Error', | |
59 | + detail: 'Detail', | |
60 | + memory: 'Memory', | |
61 | + dist: 'Disk', | |
62 | + diskSize: 'Disk Size', | |
63 | + diskInUse: 'Disk In Use', | |
64 | + diskFreeSpace: 'Disk Free Space', | |
65 | + edgeDeviceDetail: 'Edge Device Detail', | |
66 | + thingsModel: 'Things Model', | |
67 | + alarm: 'Alarm', | |
68 | + commonDelivery: 'Command Issuance', | |
69 | + eventManage: 'Event Management', | |
70 | + attributeDelivery: 'Attribute Issuance', | |
71 | + historyTrend: 'Historical Trend', | |
72 | + }, | |
73 | + tab: { | |
74 | + edgeDevice: 'Edge Device', | |
75 | + edgeMonitoring: 'Edge Monitoring', | |
76 | + edgeEvent: 'Edge Event', | |
77 | + }, | |
78 | + message: { | |
79 | + cancelAssignSuccess: 'Assignment Cancelled Successfully', | |
80 | + syncSuccess: 'Edge Sync Processed Successfully', | |
81 | + attributeDeliverySuccess: 'Attribute Issued Successfully', | |
82 | + }, | |
83 | + confirm: { | |
84 | + cancelAssign: 'Are you sure you want to cancel the edge assignment?', | |
85 | + }, | |
86 | +}; | ... | ... |
src/locales/lang/en/enum.ts
0 → 100644
1 | +export default { | |
2 | + aggregateData: { | |
3 | + min: 'min', | |
4 | + max: 'max', | |
5 | + avg: 'avg', | |
6 | + sum: 'sum', | |
7 | + count: 'count', | |
8 | + none: 'none', | |
9 | + }, | |
10 | + orderBy: { | |
11 | + DESC: 'Descending order', | |
12 | + ASC: 'Ascending order', | |
13 | + }, | |
14 | + timeUnit: { | |
15 | + SECOND: ' Second', | |
16 | + MINUTE: ' Minute', | |
17 | + HOUR: ' Hour', | |
18 | + DAY: ' Day', | |
19 | + }, | |
20 | + week: { | |
21 | + MON: 'Monday', | |
22 | + TUES: 'Tuesday', | |
23 | + WED: 'Wednesday', | |
24 | + THUR: 'Thursday', | |
25 | + FRI: 'Friday', | |
26 | + SAT: 'Saturday', | |
27 | + SUN: 'Sunday', | |
28 | + }, | |
29 | + periodType: { | |
30 | + MONTH: 'Monthly', | |
31 | + WEEK: 'Weekly', | |
32 | + DAY: 'Daily', | |
33 | + }, | |
34 | + tcpProtocolType: { | |
35 | + CUSTOM: 'Custom', | |
36 | + MODBUS_RTU: 'MODBUS_RTU', | |
37 | + }, | |
38 | + taskType: { | |
39 | + MODBUS_RTU: 'MODBUS_RTU polling', | |
40 | + CUSTOM: 'Custom data distribution', | |
41 | + }, | |
42 | + executeTimeType: { | |
43 | + CUSTOM: 'Custom', | |
44 | + POLL: 'Repeated interval time', | |
45 | + }, | |
46 | + taskTarget: { | |
47 | + DEVICES: '@:business.deviceText', | |
48 | + PRODUCTS: '@:business.productText', | |
49 | + }, | |
50 | + | |
51 | + taskStatus: { | |
52 | + DEACTIVATE: '@:common.deactivatedText', | |
53 | + NORMAL: '@:common.enabledText', | |
54 | + }, | |
55 | + packagesCategory: { | |
56 | + TEXT: 'Text Component', | |
57 | + INSTRUMENT: 'Instrument Component', | |
58 | + CONTROL: 'Control Component', | |
59 | + MAP: 'Map Component', | |
60 | + FLOWMETER: 'Flowmeter', | |
61 | + STATISTICS: 'Statistics', | |
62 | + ALARM: 'Alarm', | |
63 | + OTHER: 'Other', | |
64 | + }, | |
65 | + alarmLevel: { | |
66 | + CRITICAL: 'Critical', | |
67 | + MAJOR: 'Major', | |
68 | + MINOR: 'Minor', | |
69 | + WARNING: 'Warning', | |
70 | + INDETERMINATE: 'Indeterminate', | |
71 | + }, | |
72 | + alarmStaus: { | |
73 | + CLEARED_UNACK: 'Cleared unack', | |
74 | + CLEARED_ACK: 'Cleared ack', | |
75 | + ACTIVE_ACK: 'Active ack', | |
76 | + ACTIVE_UNACK: 'Active unack', | |
77 | + }, | |
78 | + deviceType: { | |
79 | + DIRECT_CONNECTION: 'Direct connection', | |
80 | + GATEWAY: 'Gateway', | |
81 | + SENSOR: 'Sensor', | |
82 | + }, | |
83 | + deviceStatus: { | |
84 | + ALL: 'Whole', | |
85 | + INACTIVE: 'Inactive', | |
86 | + ONLINE: 'Online', | |
87 | + OFFLINE: 'Offline', | |
88 | + }, | |
89 | + commandStatus: { | |
90 | + QUEUED: 'Queue', | |
91 | + SENT: 'Sent', | |
92 | + DELIVERED: 'Delivered', | |
93 | + SUCCESSFUL: 'Successful', | |
94 | + TIMEOUT: 'Timeout', | |
95 | + EXPIRED: 'Expired', | |
96 | + FAILED: 'Failed', | |
97 | + DELETED: 'Deleted', | |
98 | + }, | |
99 | + callType: { | |
100 | + ASYNC: 'Async', | |
101 | + SYNC: 'Sync', | |
102 | + }, | |
103 | + commandWay: { | |
104 | + oneway: 'Oneway', | |
105 | + twoway: 'Twoway', | |
106 | + }, | |
107 | + commandType: { | |
108 | + service: 'Service', | |
109 | + custom: 'Custom', | |
110 | + }, | |
111 | + videoAccessMode: { | |
112 | + ManuallyEnter: 'Manually enter', | |
113 | + Streaming: 'Streaming', | |
114 | + GBT28181: 'GBT28181', | |
115 | + }, | |
116 | + codeStream: { | |
117 | + MASTER: 'Main code stream', | |
118 | + CHILD: 'Substream', | |
119 | + THIRD: 'Third stream', | |
120 | + }, | |
121 | + articulation: { | |
122 | + HIGH_DEFINITION: 'High definition', | |
123 | + SMOOTH: 'Smooth', | |
124 | + }, | |
125 | + notifyType: { | |
126 | + NOTICE: 'notice', | |
127 | + MEETING: 'meeting', | |
128 | + OTHER: 'other', | |
129 | + }, | |
130 | + readStatus: { | |
131 | + Unread: 'unread', | |
132 | + Read: 'read', | |
133 | + Other: 'other', | |
134 | + }, | |
135 | + actionType: { | |
136 | + INPUT_STATUS_R_02: 'Discrete Input (Read-only, 0x02)', | |
137 | + COIL_STATUS_R_01: 'Coil Status (Read-only, 0x01)', | |
138 | + COIL_STATUS_RW_01_05: 'Coil Status (Read/Write, read with 0x01, write with 0x05)', | |
139 | + COIL_STATUS_RW_01_0F: 'Coil Status (Read/Write, read with 0x01, write with 0x0F)', | |
140 | + COIL_STATUS_W_05: 'Coil Status (Write-only, 0x05)', | |
141 | + COIL_STATUS_W_0F: 'Coil Status (Write-only, 0x0F)', | |
142 | + HOLDING_REGISTER_R_03: 'Holding Register (Read-only, 0x03)', | |
143 | + HOLDING_REGISTER_RW_03_06: 'Holding Register (Read/Write, read with 0x03, write with 0x06)', | |
144 | + HOLDING_REGISTER_RW_03_10: 'Holding Register (Read/Write, read with 0x03, write with 0x10)', | |
145 | + HOLDING_REGISTER_W_06: 'Holding Register (Write-only, 0x06)', | |
146 | + HOLDING_REGISTER_W_10: 'Holding Register (Write-only, 0x10)', | |
147 | + INPUT_REGISTER_R_04: 'Input Register (Read-only, 0x04)', | |
148 | + }, | |
149 | + originalDataType: { | |
150 | + INT16_AB: '16-bit Signed Integer AB', | |
151 | + INT16_BA: '16-bit Signed Integer BA', | |
152 | + UINT16_AB: '16-bit Unsigned Integer AB', | |
153 | + UINT16_BA: '16-bit Unsigned Integer BA', | |
154 | + INT32_AB_CD: '32-bit Signed Integer AB_CD', | |
155 | + INT32_CD_AB: '32-bit Signed Integer CD_AB', | |
156 | + INT32_BA_DC: '32-bit Signed Integer BA_DC', | |
157 | + INT32_DC_BA: '32-bit Signed Integer DC_BA', | |
158 | + UINT32_AB_CD: '32-bit Unsigned Integer AB_CD', | |
159 | + UINT32_CD_AB: '32-bit Unsigned Integer CD_AB', | |
160 | + UINT32_BA_DC: '32-bit Unsigned Integer BA_DC', | |
161 | + UINT32_DC_BA: '32-bit Unsigned Integer DC_BA', | |
162 | + FLOAT_AB_CD: 'Single-Precision Floating Point AB_CD', | |
163 | + FLOAT_CD_AB: 'Single-Precision Floating Point CD_AB', | |
164 | + FLOAT_BA_DC: 'Single-Precision Floating Point BA_DC', | |
165 | + FLOAT_DC_BA: 'Single-Precision Floating Point DC_BA', | |
166 | + DOUBLE: 'Double-Precision Floating Point', | |
167 | + STRING: 'String', | |
168 | + BOOLEAN: 'Boolean', | |
169 | + BITS: 'Bits', | |
170 | + }, | |
171 | + userStatus: { | |
172 | + NORMAL: 'Normal', | |
173 | + DISABLED: 'Disabled', | |
174 | + EXPIRED: 'Expired', | |
175 | + }, | |
176 | + credentials: { | |
177 | + ACCESS_TOKEN: 'Access token', | |
178 | + X509: 'X.509', | |
179 | + MQTT_CLIENT_ID: 'MQTT client ID', | |
180 | + MQTT_USER_NAME: 'MQTT user name', | |
181 | + MQTT_PASSWORD: 'MQTT password', | |
182 | + }, | |
183 | + direction: { | |
184 | + FROM: 'From', | |
185 | + TO: 'To', | |
186 | + }, | |
187 | + entityType: { | |
188 | + DEVICE: 'Device', | |
189 | + ASSET: 'Asset', | |
190 | + ENTITY_VIEW: 'Entity view', | |
191 | + TENANT: 'Tenant', | |
192 | + CUSTOMER: 'Customer', | |
193 | + USER: 'User', | |
194 | + DASHBOARD: 'Dashboard', | |
195 | + EDGE: 'Edge', | |
196 | + }, | |
197 | + scope: { | |
198 | + SERVER_SCOPE: 'Server scope', | |
199 | + CLIENT_SCOPE: 'Client scope', | |
200 | + SHARED_SCOPE: 'Shared scope', | |
201 | + }, | |
202 | +}; | ... | ... |
src/locales/lang/en/home/index.ts
0 → 100644
1 | +export default { | |
2 | + productNum: 'Number of Products', | |
3 | + deviceNum: 'Number of Devices', | |
4 | + alarmNum: 'Number of Alarms', | |
5 | + messageNum: 'Number of Messages', | |
6 | + messagePointNum: 'Number of Message Points', | |
7 | + newToday: 'New Today', | |
8 | + tenantNum: 'Total Number of Tenants', | |
9 | + customerNum: 'Total Number of Customers', | |
10 | + alarmNotifyNum: 'Alarm Notifications', | |
11 | + messageNumToday: 'Messages Today', | |
12 | + messagePointNumToday: 'Message Points Today', | |
13 | + deviceNumStatistic: 'Device Quantity Statistics', | |
14 | + deviceStatusStatistic: 'Device Status Statistics', | |
15 | + messageVolumeStatistic: 'Message Volume Statistics', | |
16 | + messageVolumeStatisticTooltip: { | |
17 | + transportMessage: | |
18 | + 'Transport Message Volume: The number of messages reported by the device. Each time the device reports, the data volume +1.', | |
19 | + transportDataPoint: | |
20 | + 'Transport Data Points: The data points contained in each message reported by the device. For example, a direct-connected device message contains the following content: {\'"ph":7,"humidity":65\'}, then this message has two data points.', | |
21 | + }, | |
22 | + transportDataPoint: 'Transport Data Points', | |
23 | + transportMessage: 'Transport Message Volume', | |
24 | + alarmStatistic: 'Alarm Statistics', | |
25 | + sumAlarm: 'Total Number of Alarms', | |
26 | + alarmTooltip: { | |
27 | + '30day': '30 days: Query data for the last 30 days, with an interval of 1 day.', | |
28 | + '7day': '7 days: Query data for the last 7 days, with an interval of 2 hours.', | |
29 | + '1day': '1 day: Query data for the last day, with an interval of 30 minutes.', | |
30 | + intervalTime: | |
31 | + 'Interval Time: Using the current time as the end time, the corresponding number of days or hours is used as the start time, and the data is grouped and aggregated within this time interval.', | |
32 | + }, | |
33 | + tenantTooltip: { | |
34 | + latestOneMonth: 'Last One Month: Query data for the last month, with an interval of 1 day.', | |
35 | + latestThreeMonth: | |
36 | + 'Last Three Months: Query data for the last three months, with an interval of 1 day.', | |
37 | + latestOneYear: 'Last One Year: Query data for the last year, with an interval of 1 month.', | |
38 | + intervalTime: | |
39 | + 'Interval Time: Using the last time of the day as the end time, the corresponding number of days or months is used as the start time, and the data is grouped and aggregated within this time interval.', | |
40 | + }, | |
41 | + timeUnit: { | |
42 | + hour: 'Hour', | |
43 | + day: 'Day', | |
44 | + custom: 'Custom', | |
45 | + latestOnMonth: 'Last One Month', | |
46 | + latestThreeMonth: 'Last Three Months', | |
47 | + latestOneYear: 'Last One Year', | |
48 | + }, | |
49 | + coreProcessGuide: 'Core Process Guide', | |
50 | + deviceStatus: { | |
51 | + inactive: 'Inactive', | |
52 | + online: 'Online', | |
53 | + offline: 'Offline', | |
54 | + }, | |
55 | + device: ' Device', | |
56 | + a: 'unit', | |
57 | + tenantTrend: 'Tenant Trend', | |
58 | + alarmNumStatistic: 'Alarm Number Statistics', | |
59 | + customerTrend: 'Customer Trend', | |
60 | + collect: 'Collect', | |
61 | + currentTrend: 'Current Trend', | |
62 | + tenantMessageTop: 'Top 10 Tenant Messages', | |
63 | + currentExpireTenant: 'Tenants Expiring This Month', | |
64 | + tenantName: 'Tenant Name', | |
65 | + expireTime: 'Expiration Time', | |
66 | +}; | ... | ... |