Skip to content

Commit 7dfcfe3

Browse files
committed
Merge branch 'staging/3.9' into release/3.9
2 parents 8ef00f7 + 36ca5cc commit 7dfcfe3

File tree

26 files changed

+480
-90
lines changed

26 files changed

+480
-90
lines changed

_config.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,11 @@ release:
8484
pe_full_ver: 3.9.1PE
8585
wd_examples_commit: v3.9.1
8686
# >>> EDGE
87-
edge_ver: 3.9
88-
edge_tag: v3.9
89-
edge_full_ver: 3.9.0EDGE
90-
pe_edge_ver: 3.9pe
91-
pe_edge_full_ver: 3.9.0EDGEPE
87+
edge_ver: 3.9.1
88+
edge_tag: v3.9.1
89+
edge_full_ver: 3.9.1EDGE
90+
pe_edge_ver: 3.9.1pe
91+
pe_edge_full_ver: 3.9.1EDGEPE
9292
# <<< EDGE
9393
ce_flutter_app_ver: 1.5.0
9494
pe_flutter_app_ver: 1.5.0

_data/edge-pe/docs-home.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ toc:
6464
path: /docs/pe/edge/user-guide/integrations/tcp/
6565
- title: UDP
6666
path: /docs/pe/edge/user-guide/integrations/udp/
67+
- title: White Labeling
68+
pe: true
69+
section:
70+
- title: Overview
71+
path: /docs/pe/edge/user-guide/white-labeling/
6772
- title: Security
6873
section:
6974
- title: Edge over TLS/SSL

_data/edge/docs-home.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ toc:
6464
path: /docs/pe/edge/user-guide/integrations/tcp/
6565
- title: UDP
6666
path: /docs/pe/edge/user-guide/integrations/udp/
67+
- title: White Labeling
68+
pe: true
69+
section:
70+
- title: Overview
71+
path: /docs/pe/edge/user-guide/white-labeling/
6772
- title: Security
6873
section:
6974
- title: Edge over TLS/SSL

_includes/docs/edge/user-guide/install/config.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -675,13 +675,13 @@
675675
<td>database.ts.type</td>
676676
<td>DATABASE_TS_TYPE</td>
677677
<td>sql</td>
678-
<td> cassandra or sql. timescale option is deprecated and will no longer be supported in ThingsBoard 4.0</td>
678+
<td> cassandra, sql, or timescale (for hybrid mode, DATABASE_TS_TYPE value should be cassandra, or timescale)</td>
679679
</tr>
680680
<tr>
681681
<td>database.ts_latest.type</td>
682682
<td>DATABASE_TS_LATEST_TYPE</td>
683683
<td>sql</td>
684-
<td> cassandra or sql. timescale option is deprecated and will no longer be supported in ThingsBoard 4.0</td>
684+
<td> cassandra, sql, or timescale (for hybrid mode, DATABASE_TS_TYPE value should be cassandra, or timescale)</td>
685685
</tr>
686686
</tbody>
687687
</table>
@@ -3785,7 +3785,7 @@
37853785
<tr>
37863786
<td>transport.gateway.dashboard.sync.enabled</td>
37873787
<td>TB_GATEWAY_DASHBOARD_SYNC_ENABLED</td>
3788-
<td>true</td>
3788+
<td>false</td>
37893789
<td> Enable/disable gateways dashboard sync with git repository</td>
37903790
</tr>
37913791
<tr>

_includes/docs/pe/edge/user-guide/install/config.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -681,13 +681,13 @@
681681
<td>database.ts.type</td>
682682
<td>DATABASE_TS_TYPE</td>
683683
<td>sql</td>
684-
<td> cassandra or sql. timescale option is deprecated and will no longer be supported in ThingsBoard 4.0</td>
684+
<td> cassandra, sql, or timescale (for hybrid mode, DATABASE_TS_TYPE value should be cassandra, or timescale)</td>
685685
</tr>
686686
<tr>
687687
<td>database.ts_latest.type</td>
688688
<td>DATABASE_TS_LATEST_TYPE</td>
689689
<td>sql</td>
690-
<td> cassandra or sql. timescale option is deprecated and will no longer be supported in ThingsBoard 4.0</td>
690+
<td> cassandra, sql, or timescale (for hybrid mode, DATABASE_TS_TYPE value should be cassandra, or timescale)</td>
691691
</tr>
692692
</tbody>
693693
</table>
@@ -4179,7 +4179,7 @@
41794179
<tr>
41804180
<td>transport.gateway.dashboard.sync.enabled</td>
41814181
<td>TB_GATEWAY_DASHBOARD_SYNC_ENABLED</td>
4182-
<td>true</td>
4182+
<td>false</td>
41834183
<td> Enable/disable gateways dashboard sync with git repository</td>
41844184
</tr>
41854185
<tr>
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
* TOC
2+
{:toc}
3+
4+
### Overview
5+
6+
{% capture white-labeling-note %}
7+
The **white labeling** feature is supported only in the **Professional Edition**.
8+
{% endcapture %}
9+
{% include templates/info-banner.md content=white-labeling-note %}
10+
11+
**White labeling** in **ThingsBoard** allows businesses to customize the platform's appearance and branding to align with their own corporate identity.
12+
Please refer to the **ThingsBoard White Labeling** [documentation](/docs/pe/user-guide/white-labeling/){: target="_blank"}. There you will find step-by-step instructions on how to customize the **ThingsBoard logo** and web **interface**.
13+
14+
The **white labeling** feature supports particular **hierarchy**.
15+
The tenant can override the configurations set by the system administrator,
16+
tenant-set configurations can be overridden by the customer, and so on.
17+
18+
![hierarchy_scheme](https://img.thingsboard.io/edge/user-guide/white-labeling/hierarchy.webp){: style="display: block; margin: auto; max-height: 400px"}
19+
20+
Similarly, **white-labeling** configurations are propagated to the **Edge instances**:
21+
22+
* **Tenant-Owned Edge:** If the edge is owned by a **tenant**, the white labeling settings are retrieved from the **tenant level** and merged with those from the system administrator.
23+
24+
![tenant-owned-edge](https://img.thingsboard.io/edge/user-guide/white-labeling/hierarchy-edge-tenant.webp){: style="display: block; margin: auto; max-height: 280px"}
25+
26+
* **Customer-Owned Edge:** If the edge is owned by a **customer**, the white labeling settings are taken from the **customer** of the edge and merged with those from the tenant and system administrator.
27+
28+
![customer-owned-edge](https://img.thingsboard.io/edge/user-guide/white-labeling/hierarchy-edge-customer.webp){: style="display: block; margin: auto; max-height: 390px"}
29+
30+
However, the displayed interface depends on the **account** used to log in to an **Edge** instance.
31+
32+
_**For example:** When a user logs in to a **customer-owned Edge** with the **tenant account**, that user will see the interface for a **tenant**._
33+
34+
![interface](https://img.thingsboard.io/edge/user-guide/white-labeling/interface.webp){: style="display: block; margin: auto; max-height: 400px"}
35+
36+
### Edge Login Page
37+
38+
**ThingsBoard** also allows customization of the login page. In a **multi-tenant environment**, domain-based branding defines the configurations that apply at login, meaning that different tenants can have different branding configurations. Read about **login page configurations** [here](/docs/pe/user-guide/white-labeling/#customize-the-login-page){: target="_blank"}.
39+
40+
_**For example:** If a user logs in from a specific domain (companyA.com), ThingsBoard applies the white labeling settings associated with that domain. If no custom domain is set, the default settings apply._
41+
42+
On the **Edge side** domain name is **not used** in any way.
43+
44+
{% capture edge-login %}
45+
The appearance of the **Edge login page** depends on the **ownership** only.
46+
{% endcapture %}
47+
{% include templates/info-banner.md content=edge-login %}
48+
49+
_**For example:** When a user logs in to the **customer-owned Edge**, the **customer's** white-labeling login configurations are applied._
50+
51+
![edge-login-page](https://img.thingsboard.io/edge/user-guide/white-labeling/edge-login-page.webp){: style="display: block; margin: auto; max-height: 450px"}
52+
53+
### Other Configurations
54+
55+
The **white labeling** configuration for **Edge** is designed in the same way as for the **Platform (Server or Cloud)**. Please refer to the **Platform White Labeling documentation** for detailed configuration instructions:
56+
* [Custom translation](/docs/pe/user-guide/custom-translation/){: target="_blank"}
57+
* [Custom menu](/docs/pe/user-guide/custom-menu/){: target="_blank"}
58+
59+
### Next Steps
60+
61+
{% include templates/edge/guides-banner-edge.md %}
62+

_includes/templates/edge/user-guide/start-upgrade-pe.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ volumes:
5050
tb-edge-postgres-data:
5151
name: tb-edge-postgres-data
5252
53-
EOF
53+
EOF
5454
```
5555
{: .copy-code.expandable-9}
5656

_includes/templates/edge/user-guide/start-upgrade.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ volumes:
4949
name: tb-edge-logs
5050
tb-edge-postgres-data:
5151
name: tb-edge-postgres-data
52-
EOF
52+
EOF
5353
```
5454
{: .copy-code.expandable-9}
5555

_layouts/pricing.html

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@
5151
function setCloudServerDefault() {
5252
const cloudServer = getCookie('cloudServer')
5353
if (cloudServer === '/docs/paas/eu/') {
54-
document.getElementById('Pricing_PE_Cloud_Europe').classList.add("defaultselection");
54+
document.getElementById('Pricing_PE_Cloud_Europe')?.classList.add("defaultselection");
5555
} else {
56-
document.getElementById('Pricing_PE_Cloud_NorthAmerica').classList.add("defaultselection");
56+
document.getElementById('Pricing_PE_Cloud_NorthAmerica')?.classList.add("defaultselection");
5757
}
5858
}
5959

@@ -64,6 +64,7 @@
6464
sectionId = '{{page.defaultActivePricingSection}}';
6565
}
6666
setActivePricingSection(sectionId);
67+
animateSupportCards(sectionId);
6768
const productId = params['product'];
6869
if (productId) {
6970
setActiveProductSection(productId);
@@ -77,7 +78,7 @@
7778
switchFaqSection(faqSection);
7879
const questionEl = document.querySelector(`div[data-item-id="${window.location.hash.replace('#', '')}"]`);
7980
if (Array.from(questionEl.parentNode.children).indexOf(questionEl) > 6) {
80-
loadMoreFaq(questionEl.parentNode.children[6]);
81+
loadMoreFaq(questionEl.parentNode.children[6]);
8182
}
8283
checkIfOpenedRetryClear(`div[data-item-id="${window.location.hash.replace('#', '')}"]`);
8384
}
@@ -87,6 +88,7 @@
8788
updateQueryParam({section: sectionId, product: null, solution: null});
8889
setActivePricingSection(sectionId);
8990
switchFaqContainer(sectionId);
91+
animateSupportCards(sectionId);
9092
}
9193

9294
function activateProductSection(productId) {
@@ -273,7 +275,7 @@
273275
if (changeFaqHeader(containerId)) {
274276
currentFaqContainer = containerId;
275277
document.querySelectorAll('#FAQ section').forEach(el => el.classList.remove('active'));
276-
document.getElementById(`faq-${containerId}`).classList.add('active');
278+
document.getElementById(`faq-${containerId}`)?.classList.add('active');
277279
}
278280
}
279281

@@ -311,7 +313,7 @@
311313
correspondingHeader = 'Edge Perpetual FAQs';
312314
break;
313315
}
314-
if (correspondingHeader) {
316+
if (correspondingHeader && document.getElementById('faq-header')) {
315317
document.getElementById('faq-header').innerText = correspondingHeader;
316318
}
317319
return correspondingHeader;
@@ -378,9 +380,20 @@
378380
}
379381
}
380382

383+
function animateSupportCards(sectionId) {
384+
const currentSection = document.querySelector(`#${sectionId}`);
385+
const cards = currentSection.querySelectorAll('.card-to-animate')
386+
387+
cards.forEach((card) => {
388+
setTimeout(() => {
389+
card.classList.add(`card-animation`)
390+
}, 1)
391+
})
392+
}
381393
</script>
382394

383395
{% include cookie-consent.html %}
384396

385397
</body>
386398
</html>
399+

docs/edge/releases.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ description: ThingsBoard Edge Release Notes
88
* TOC
99
{:toc}
1010

11+
## v3.9.1 (Mar 14, 2025) {#v391}
12+
13+
**Minor** release with everything from [TB CE v3.9.1](/docs/reference/releases/#v391).
14+
1115
## v3.9.0 (Jan 13, 2025) {#v39}
1216

1317
**Major** release with everything from [TB CE v3.9](/docs/reference/releases/#v39):

0 commit comments

Comments
 (0)