作者 陶保强

更换ico

@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 "polyfills": "src/polyfills.ts", 23 "polyfills": "src/polyfills.ts",
24 "tsConfig": "src/tsconfig.app.json", 24 "tsConfig": "src/tsconfig.app.json",
25 "assets": [ 25 "assets": [
26 - "src/thingsboard.ico", 26 + "src/logo_sh.ico",
27 "src/assets", 27 "src/assets",
28 { 28 {
29 "glob": "worker-html.js", 29 "glob": "worker-html.js",
@@ -216,4 +216,4 @@ @@ -216,4 +216,4 @@
216 "cli": { 216 "cli": {
217 "analytics": "a0ca19d7-f3d7-47ff-b967-e9421b38cc28" 217 "analytics": "a0ca19d7-f3d7-47ff-b967-e9421b38cc28"
218 } 218 }
219 -}  
  219 +}
@@ -27,7 +27,7 @@ @@ -27,7 +27,7 @@
27 <artifactId>ui-ngx</artifactId> 27 <artifactId>ui-ngx</artifactId>
28 <packaging>jar</packaging> 28 <packaging>jar</packaging>
29 29
30 - <name>ThingsBoard Server UI</name> 30 + <name>云话科技 Server UI</name>
31 <url>https://thingsboard.io</url> 31 <url>https://thingsboard.io</url>
32 32
33 <properties> 33 <properties>
@@ -45,7 +45,7 @@ export class AppComponent implements OnInit { @@ -45,7 +45,7 @@ export class AppComponent implements OnInit {
45 private domSanitizer: DomSanitizer, 45 private domSanitizer: DomSanitizer,
46 private authService: AuthService) { 46 private authService: AuthService) {
47 47
48 - console.log(`ThingsBoard Version: ${env.tbVersion}`); 48 + console.log(`云话科技 Version: ${env.tbVersion}`);
49 49
50 this.matIconRegistry.addSvgIconSetInNamespace('mdi', 50 this.matIconRegistry.addSvgIconSetInNamespace('mdi',
51 this.domSanitizer.bypassSecurityTrustResourceUrl('./assets/mdi.svg')); 51 this.domSanitizer.bypassSecurityTrustResourceUrl('./assets/mdi.svg'));
@@ -16,5 +16,5 @@ @@ -16,5 +16,5 @@
16 16
17 --> 17 -->
18 <section class="footer-text"> 18 <section class="footer-text">
19 - <small>Copyright © {{year}} The ThingsBoard Authors</small> 19 + <small>Copyright © {{year}} The 云话科技 Authors</small>
20 </section> 20 </section>
@@ -506,8 +506,8 @@ @@ -506,8 +506,8 @@
506 "make-private-dashboard-title": "Jste si jisti, že chcete dashboard '{{dashboardTitle}}' zneveřejnit?", 506 "make-private-dashboard-title": "Jste si jisti, že chcete dashboard '{{dashboardTitle}}' zneveřejnit?",
507 "make-private-dashboard-text": "Po potvrzení bude dashboard neveřejný a nebude pro ostatní dostupný.", 507 "make-private-dashboard-text": "Po potvrzení bude dashboard neveřejný a nebude pro ostatní dostupný.",
508 "make-private-dashboard": "Učinit dashboard neveřejným", 508 "make-private-dashboard": "Učinit dashboard neveřejným",
509 - "socialshare-text": "'{{dashboardTitle}}' powered by ThingsBoard",  
510 - "socialshare-title": "'{{dashboardTitle}}' powered by ThingsBoard", 509 + "socialshare-text": "'{{dashboardTitle}}' powered by 云话科技",
  510 + "socialshare-title": "'{{dashboardTitle}}' powered by 云话科技",
511 "select-dashboard": "Vybrat dashboard", 511 "select-dashboard": "Vybrat dashboard",
512 "no-dashboards-matching": "Žádné dashboardy odpovídající '{{entity}}' nebyly nalezeny.", 512 "no-dashboards-matching": "Žádné dashboardy odpovídající '{{entity}}' nebyly nalezeny.",
513 "dashboard-required": "Dashboard je povinný.", 513 "dashboard-required": "Dashboard je povinný.",
@@ -1219,10 +1219,10 @@ @@ -1219,10 +1219,10 @@
1219 "file-storage": "Soubor", 1219 "file-storage": "Soubor",
1220 "memory-storage": "Paměť" 1220 "memory-storage": "Paměť"
1221 }, 1221 },
1222 - "thingsboard": "ThingsBoard",  
1223 - "thingsboard-host": "Host ThingsBoard", 1222 + "thingsboard": "云话科技",
  1223 + "thingsboard-host": "Host 云话科技",
1224 "thingsboard-host-required": "Host je povinný.", 1224 "thingsboard-host-required": "Host je povinný.",
1225 - "thingsboard-port": "Port ThingsBoard", 1225 + "thingsboard-port": "Port 云话科技",
1226 "thingsboard-port-max": "Maximální číslo portu je 65535.", 1226 "thingsboard-port-max": "Maximální číslo portu je 65535.",
1227 "thingsboard-port-min": "Minimální číslo portu je 1.", 1227 "thingsboard-port-min": "Minimální číslo portu je 1.",
1228 "thingsboard-port-pattern": "Port není platný.", 1228 "thingsboard-port-pattern": "Port není platný.",
@@ -1558,8 +1558,8 @@ @@ -1558,8 +1558,8 @@
1558 "tenant-required": "Tenant je povinný", 1558 "tenant-required": "Tenant je povinný",
1559 "search": "Vyhledat tenanty", 1559 "search": "Vyhledat tenanty",
1560 "selected-tenants": "Vybráno { count, plural, 1 {1 tenantů} other {# tenantů} }", 1560 "selected-tenants": "Vybráno { count, plural, 1 {1 tenantů} other {# tenantů} }",
1561 - "isolated-tb-core": "Zpracování v izolovaném kontejneru ThingsBoard Core",  
1562 - "isolated-tb-rule-engine": "Zpracování v izolovaném kontejneru ThingsBoard Rule Engine", 1561 + "isolated-tb-core": "Zpracování v izolovaném kontejneru 云话科技 Core",
  1562 + "isolated-tb-rule-engine": "Zpracování v izolovaném kontejneru 云话科技 Rule Engine",
1563 "isolated-tb-core-details": "Vyžaduje samostatnou mikroslužbu(y) pro každého izolovaného tenanta", 1563 "isolated-tb-core-details": "Vyžaduje samostatnou mikroslužbu(y) pro každého izolovaného tenanta",
1564 "isolated-tb-rule-engine-details": "Vyžaduje samostatnou mikroslužbu(y) pro každého izolovaného tenanta" 1564 "isolated-tb-rule-engine-details": "Vyžaduje samostatnou mikroslužbu(y) pro každého izolovaného tenanta"
1565 }, 1565 },
@@ -476,8 +476,8 @@ @@ -476,8 +476,8 @@
476 "make-private-dashboard-title": "Sind Sie sicher, dass Sie das Dashboard '{{dashboardTitle}}' privatisieren möchten?", 476 "make-private-dashboard-title": "Sind Sie sicher, dass Sie das Dashboard '{{dashboardTitle}}' privatisieren möchten?",
477 "make-private-dashboard-text": "Nach der Bestätigung wird das Dashboard privatisiert und ist für andere nicht zugänglich.", 477 "make-private-dashboard-text": "Nach der Bestätigung wird das Dashboard privatisiert und ist für andere nicht zugänglich.",
478 "make-private-dashboard": "Dashboard privatisieren", 478 "make-private-dashboard": "Dashboard privatisieren",
479 - "socialshare-text": "'{{dashboardTitle}}' Bereitgestellt vom ThingsBoard",  
480 - "socialshare-title": "'{{dashboardTitle}}' Bereitgestellt vom ThingsBoard", 479 + "socialshare-text": "'{{dashboardTitle}}' Bereitgestellt vom 云话科技",
  480 + "socialshare-title": "'{{dashboardTitle}}' Bereitgestellt vom 云话科技",
481 "select-dashboard": "Dashboard auswählen", 481 "select-dashboard": "Dashboard auswählen",
482 "no-dashboards-matching": "Es wurden keine passenden Dashboards '{{entity}}' gefunden.", 482 "no-dashboards-matching": "Es wurden keine passenden Dashboards '{{entity}}' gefunden.",
483 "dashboard-required": "Dashboard ist erforderlich.", 483 "dashboard-required": "Dashboard ist erforderlich.",
@@ -506,8 +506,8 @@ @@ -506,8 +506,8 @@
506 "make-private-dashboard-title": "Are you sure you want to make the dashboard '{{dashboardTitle}}' private?", 506 "make-private-dashboard-title": "Are you sure you want to make the dashboard '{{dashboardTitle}}' private?",
507 "make-private-dashboard-text": "After the confirmation the dashboard will be made private and won't be accessible by others.", 507 "make-private-dashboard-text": "After the confirmation the dashboard will be made private and won't be accessible by others.",
508 "make-private-dashboard": "Make dashboard private", 508 "make-private-dashboard": "Make dashboard private",
509 - "socialshare-text": "'{{dashboardTitle}}' powered by ThingsBoard",  
510 - "socialshare-title": "'{{dashboardTitle}}' powered by ThingsBoard", 509 + "socialshare-text": "'{{dashboardTitle}}' powered by 云话科技",
  510 + "socialshare-title": "'{{dashboardTitle}}' powered by 云话科技",
511 "select-dashboard": "Select dashboard", 511 "select-dashboard": "Select dashboard",
512 "no-dashboards-matching": "No dashboards matching '{{entity}}' were found.", 512 "no-dashboards-matching": "No dashboards matching '{{entity}}' were found.",
513 "dashboard-required": "Dashboard is required.", 513 "dashboard-required": "Dashboard is required.",
@@ -1219,10 +1219,10 @@ @@ -1219,10 +1219,10 @@
1219 "file-storage": "File storage", 1219 "file-storage": "File storage",
1220 "memory-storage": "Memory storage" 1220 "memory-storage": "Memory storage"
1221 }, 1221 },
1222 - "thingsboard": "ThingsBoard",  
1223 - "thingsboard-host": "ThingsBoard host", 1222 + "thingsboard": "云话科技",
  1223 + "thingsboard-host": "云话科技 host",
1224 "thingsboard-host-required": "Host is required.", 1224 "thingsboard-host-required": "Host is required.",
1225 - "thingsboard-port": "ThingsBoard port", 1225 + "thingsboard-port": "云话科技 port",
1226 "thingsboard-port-max": "Maximum port number is 65535.", 1226 "thingsboard-port-max": "Maximum port number is 65535.",
1227 "thingsboard-port-min": "Minimum port number is 1.", 1227 "thingsboard-port-min": "Minimum port number is 1.",
1228 "thingsboard-port-pattern": "Port is not valid.", 1228 "thingsboard-port-pattern": "Port is not valid.",
@@ -1558,8 +1558,8 @@ @@ -1558,8 +1558,8 @@
1558 "tenant-required": "Tenant is required", 1558 "tenant-required": "Tenant is required",
1559 "search": "Search tenants", 1559 "search": "Search tenants",
1560 "selected-tenants": "{ count, plural, 1 {1 tenant} other {# tenants} } selected", 1560 "selected-tenants": "{ count, plural, 1 {1 tenant} other {# tenants} } selected",
1561 - "isolated-tb-core": "Processing in isolated ThingsBoard Core container",  
1562 - "isolated-tb-rule-engine": "Processing in isolated ThingsBoard Rule Engine container", 1561 + "isolated-tb-core": "Processing in isolated 云话科技 Core container",
  1562 + "isolated-tb-rule-engine": "Processing in isolated 云话科技 Rule Engine container",
1563 "isolated-tb-core-details": "Requires separate microservice(s) per isolated Tenant", 1563 "isolated-tb-core-details": "Requires separate microservice(s) per isolated Tenant",
1564 "isolated-tb-rule-engine-details": "Requires separate microservice(s) per isolated Tenant" 1564 "isolated-tb-rule-engine-details": "Requires separate microservice(s) per isolated Tenant"
1565 }, 1565 },
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 "refresh-token-failed": "No se puede actualizar la sesión" 9 "refresh-token-failed": "No se puede actualizar la sesión"
10 }, 10 },
11 "action": { 11 "action": {
12 - "activate": "Activar", 12 + "activate": "Activar",
13 "suspend": "Suspender", 13 "suspend": "Suspender",
14 "save": "Guardar", 14 "save": "Guardar",
15 "saveAs": "Guardar como", 15 "saveAs": "Guardar como",
@@ -487,8 +487,8 @@ @@ -487,8 +487,8 @@
487 "make-private-dashboard-title": "¿Estás seguro que quieres hacer el panel '{{dashboardTitle}}' privado?", 487 "make-private-dashboard-title": "¿Estás seguro que quieres hacer el panel '{{dashboardTitle}}' privado?",
488 "make-private-dashboard-text": "Tras la confirmación, el panel será privado y no podrá ser accesible por otros.", 488 "make-private-dashboard-text": "Tras la confirmación, el panel será privado y no podrá ser accesible por otros.",
489 "make-private-dashboard": "Hacer panel privado", 489 "make-private-dashboard": "Hacer panel privado",
490 - "socialshare-text": "'{{dashboardTitle}}' powered by ThingsBoard",  
491 - "socialshare-title": "'{{dashboardTitle}}' powered by ThingsBoard", 490 + "socialshare-text": "'{{dashboardTitle}}' powered by 云话科技",
  491 + "socialshare-title": "'{{dashboardTitle}}' powered by 云话科技",
492 "select-dashboard": "Seleccionar panel", 492 "select-dashboard": "Seleccionar panel",
493 "no-dashboards-matching": "Panel '{{entity}}' no encontrado.", 493 "no-dashboards-matching": "Panel '{{entity}}' no encontrado.",
494 "dashboard-required": "Panel requerido.", 494 "dashboard-required": "Panel requerido.",
@@ -1185,10 +1185,10 @@ @@ -1185,10 +1185,10 @@
1185 "file-storage": "Almacén fichero", 1185 "file-storage": "Almacén fichero",
1186 "memory-storage": "Almacén en memoria" 1186 "memory-storage": "Almacén en memoria"
1187 }, 1187 },
1188 - "thingsboard": "ThingsBoard",  
1189 - "thingsboard-host": "Host ThingsBoard", 1188 + "thingsboard": "云话科技",
  1189 + "thingsboard-host": "Host 云话科技",
1190 "thingsboard-host-required": "Se requiere Host.", 1190 "thingsboard-host-required": "Se requiere Host.",
1191 - "thingsboard-port": "Puerto ThingsBoard", 1191 + "thingsboard-port": "Puerto 云话科技",
1192 "thingsboard-port-max": "El puerto máximo es 65535.", 1192 "thingsboard-port-max": "El puerto máximo es 65535.",
1193 "thingsboard-port-min": "El puerto mínimo es 1.", 1193 "thingsboard-port-min": "El puerto mínimo es 1.",
1194 "thingsboard-port-pattern": "Puerto no válido.", 1194 "thingsboard-port-pattern": "Puerto no válido.",
@@ -452,8 +452,8 @@ @@ -452,8 +452,8 @@
452 "make-private-dashboard-title": "مطمئنيد؟ '{{dashboardTitle}}' از شخصي سازي داشبورد", 452 "make-private-dashboard-title": "مطمئنيد؟ '{{dashboardTitle}}' از شخصي سازي داشبورد",
453 "make-private-dashboard-text": ".پس از تأييد، داشبورد، شخصي و خارج از دسترس ديگران مي شود", 453 "make-private-dashboard-text": ".پس از تأييد، داشبورد، شخصي و خارج از دسترس ديگران مي شود",
454 "make-private-dashboard": "شخصي سازي داشبورد", 454 "make-private-dashboard": "شخصي سازي داشبورد",
455 - "socialshare-text": "ThingsBoard طراحي شده توسط '{{dashboardTitle}}'",  
456 - "socialshare-title": "ThingsBoard طراحي شده توسط '{{dashboardTitle}}'", 455 + "socialshare-text": "云话科技 طراحي شده توسط '{{dashboardTitle}}'",
  456 + "socialshare-title": "云话科技 طراحي شده توسط '{{dashboardTitle}}'",
457 "select-dashboard": "انتخاب داشبورد", 457 "select-dashboard": "انتخاب داشبورد",
458 "no-dashboards-matching": ".يافت نشد '{{entity}}' هيچ داشبوردي منطبق بر", 458 "no-dashboards-matching": ".يافت نشد '{{entity}}' هيچ داشبوردي منطبق بر",
459 "dashboard-required": ".داشبورد مورد نياز است", 459 "dashboard-required": ".داشبورد مورد نياز است",
@@ -542,8 +542,8 @@ @@ -542,8 +542,8 @@
542 "set-background": "Définir l'arrière-plan", 542 "set-background": "Définir l'arrière-plan",
543 "settings": "Paramètres", 543 "settings": "Paramètres",
544 "show-details": "Afficher les détails", 544 "show-details": "Afficher les détails",
545 - "socialshare-text": "'{{dashboardTitle}}' propulsé par ThingsBoard",  
546 - "socialshare-title": "'{{dashboardTitle}}' propulsé par ThingsBoard", 545 + "socialshare-text": "'{{dashboardTitle}}' propulsé par 云话科技",
  546 + "socialshare-title": "'{{dashboardTitle}}' propulsé par 云话科技",
547 "state": "État du tableau de bord", 547 "state": "État du tableau de bord",
548 "state-controller": "Contrôleur d'état", 548 "state-controller": "Contrôleur d'état",
549 "state-id": "ID d'état", 549 "state-id": "ID d'état",
@@ -477,8 +477,8 @@ @@ -477,8 +477,8 @@
477 "make-private-dashboard-title": "Sei sicuro di voler rendere privata la dashboard '{{dashboardTitle}}'?", 477 "make-private-dashboard-title": "Sei sicuro di voler rendere privata la dashboard '{{dashboardTitle}}'?",
478 "make-private-dashboard-text": "Dopo la conferma la dashboard sarà resa privata e non più accessibile dagli altri.", 478 "make-private-dashboard-text": "Dopo la conferma la dashboard sarà resa privata e non più accessibile dagli altri.",
479 "make-private-dashboard": "Rendi privata la dashboard", 479 "make-private-dashboard": "Rendi privata la dashboard",
480 - "socialshare-text": "'{{dashboardTitle}}' powered by ThingsBoard",  
481 - "socialshare-title": "'{{dashboardTitle}}' powered by ThingsBoard", 480 + "socialshare-text": "'{{dashboardTitle}}' powered by 云话科技",
  481 + "socialshare-title": "'{{dashboardTitle}}' powered by 云话科技",
482 "select-dashboard": "Seleziona dashboard", 482 "select-dashboard": "Seleziona dashboard",
483 "no-dashboards-matching": "Nessuna dashboard corrispondente a '{{entity}}' è stata trovata.", 483 "no-dashboards-matching": "Nessuna dashboard corrispondente a '{{entity}}' è stata trovata.",
484 "dashboard-required": "Dashboard obbligatoria.", 484 "dashboard-required": "Dashboard obbligatoria.",
@@ -485,8 +485,8 @@ @@ -485,8 +485,8 @@
485 "make-private-dashboard-title": "Doriţi să definiţi panoul '{{dashboardTitle}}' ca privat?", 485 "make-private-dashboard-title": "Doriţi să definiţi panoul '{{dashboardTitle}}' ca privat?",
486 "make-private-dashboard-text": "ATENŢIE! După confirmare, panoul va putea fi accesat doar de către proprietar", 486 "make-private-dashboard-text": "ATENŢIE! După confirmare, panoul va putea fi accesat doar de către proprietar",
487 "make-private-dashboard": "Declară Panou Privat", 487 "make-private-dashboard": "Declară Panou Privat",
488 - "socialshare-text": "'{{dashboardTitle}}' powered by ThingsBoard",  
489 - "socialshare-title": "'{{dashboardTitle}}' powered by ThingsBoard", 488 + "socialshare-text": "'{{dashboardTitle}}' powered by 云话科技",
  489 + "socialshare-title": "'{{dashboardTitle}}' powered by 云话科技",
490 "select-dashboard": "Selectează Panou", 490 "select-dashboard": "Selectează Panou",
491 "no-dashboards-matching": "Nu au fost găsite panouri al căror nume conține '{{entity}}'", 491 "no-dashboards-matching": "Nu au fost găsite panouri al căror nume conține '{{entity}}'",
492 "dashboard-required": "Panoul este obligatoriu", 492 "dashboard-required": "Panoul este obligatoriu",
@@ -487,8 +487,8 @@ @@ -487,8 +487,8 @@
487 "make-private-dashboard-title": "Вы точно хотите закрыть общий доступ к дашборду '{{dashboardTitle}}'?", 487 "make-private-dashboard-title": "Вы точно хотите закрыть общий доступ к дашборду '{{dashboardTitle}}'?",
488 "make-private-dashboard-text": "После подтверждения дашборд будет закрыт для общего доступа.", 488 "make-private-dashboard-text": "После подтверждения дашборд будет закрыт для общего доступа.",
489 "make-private-dashboard": "Закрыть дашборд для общего доступа", 489 "make-private-dashboard": "Закрыть дашборд для общего доступа",
490 - "socialshare-text": "'{{dashboardTitle}}' сделано ThingsBoard",  
491 - "socialshare-title": "'{{dashboardTitle}}' сделано ThingsBoard", 490 + "socialshare-text": "'{{dashboardTitle}}' сделано 云话科技",
  491 + "socialshare-title": "'{{dashboardTitle}}' сделано 云话科技",
492 "select-dashboard": "Выберите дашборд", 492 "select-dashboard": "Выберите дашборд",
493 "no-dashboards-matching": "Дашборд '{{entity}}' не найден.", 493 "no-dashboards-matching": "Дашборд '{{entity}}' не найден.",
494 "dashboard-required": "Дашборд обязателен.", 494 "dashboard-required": "Дашборд обязателен.",
@@ -598,8 +598,8 @@ @@ -598,8 +598,8 @@
598 "make-private-dashboard-title": "Ви впевнені, що хочете зробити панель приладів '{{назва панелі приладів}}' приватною?", 598 "make-private-dashboard-title": "Ви впевнені, що хочете зробити панель приладів '{{назва панелі приладів}}' приватною?",
599 "make-private-dashboard-text": "Після підтвердження панель приладів стане приватною і не буде доступною іншим.", 599 "make-private-dashboard-text": "Після підтвердження панель приладів стане приватною і не буде доступною іншим.",
600 "make-private-dashboard": "Зробити панель приладів приватною", 600 "make-private-dashboard": "Зробити панель приладів приватною",
601 - "socialshare-text": "'{{dashboardTitle}}' powered by ThingsBoard",  
602 - "socialshare-title": "'{{dashboardTitle}}' powered by ThingsBoard", 601 + "socialshare-text": "'{{dashboardTitle}}' powered by 云话科技",
  602 + "socialshare-title": "'{{dashboardTitle}}' powered by 云话科技",
603 "select-dashboard": "Вибрати панель приладів", 603 "select-dashboard": "Вибрати панель приладів",
604 "no-dashboards-matching": "Не знайдено жодних панелей прилодів'{{entity}}' які відповідають.", 604 "no-dashboards-matching": "Не знайдено жодних панелей прилодів'{{entity}}' які відповідають.",
605 "dashboard-required": "Необхідно задати панель приладів.", 605 "dashboard-required": "Необхідно задати панель приладів.",
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 /// 15 ///
16 16
17 export const environment = { 17 export const environment = {
18 - appTitle: 'ThingsBoard', 18 + appTitle: '云话科技',
19 production: true, 19 production: true,
20 // @ts-ignore 20 // @ts-ignore
21 tbVersion: TB_VERSION, 21 tbVersion: TB_VERSION,
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 // The list of file replacements can be found in `angular.json`. 19 // The list of file replacements can be found in `angular.json`.
20 20
21 export const environment = { 21 export const environment = {
22 - appTitle: 'ThingsBoard', 22 + appTitle: '云话科技',
23 production: false, 23 production: false,
24 // @ts-ignore 24 // @ts-ignore
25 tbVersion: TB_VERSION, 25 tbVersion: TB_VERSION,
不能预览此文件类型
@@ -19,11 +19,11 @@ @@ -19,11 +19,11 @@
19 <html lang="en" style="width: 100%;"> 19 <html lang="en" style="width: 100%;">
20 <head> 20 <head>
21 <meta charset="utf-8"> 21 <meta charset="utf-8">
22 - <title>ThingsBoard</title> 22 + <title>云话科技</title>
23 <base href="/"> 23 <base href="/">
24 24
25 <meta name="viewport" content="width=device-width, initial-scale=1"> 25 <meta name="viewport" content="width=device-width, initial-scale=1">
26 - <link rel="icon" type="image/x-icon" href="thingsboard.ico"> 26 + <link rel="icon" type="image/x-icon" href="./logo_sh.ico">
27 </head> 27 </head>
28 <body class="tb-default"> 28 <body class="tb-default">
29 <tb-root></tb-root> 29 <tb-root></tb-root>
不能预览此文件类型
不能预览此文件类型