Skip to content

Commit 9b034c9

Browse files
committed
Merge branch 'develop/4.3' into staging/4.3
2 parents 75be8cb + 5de70b6 commit 9b034c9

8 files changed

Lines changed: 166 additions & 58 deletions

File tree

_includes/docs/mqtt-broker/getting-started.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,27 @@ Windows%,%windows%,%templates/mqtt-broker/install/windows/windows.md{% endcaptur
3131

3232
{% include content-toggle.html content-toggle-id="tbmqGettingStartedInstallation" toggle-spec=contenttogglespec %}
3333

34+
{% if docsPrefix == "pe/" %}
35+
36+
Before proceeding, make sure you’ve selected your subscription plan or chosen to purchase a perpetual license.
37+
If you haven’t done this yet, please visit the [Pricing page](/pricing/?section=tbmq-options){: target="_blank"} to compare available options
38+
and obtain your license key.
39+
40+
{% capture replace_tbmq_license_secret %}
41+
Update your `docker-compose.yml` file with the license secret you obtained earlier.
42+
Open the file, find the **TBMQ_LICENSE_SECRET** environment variable,
43+
and replace **YOUR_LICENSE_KEY_HERE** with your actual license secret.
44+
After updating the file, restart TBMQ by running the following command.
45+
{% endcapture %}
46+
{% include templates/warn-banner.md content=replace_tbmq_license_secret %}
47+
48+
```shell
49+
./tbmq-install-and-run.sh
50+
```
51+
{: .copy-code}
52+
53+
{% endif %}
54+
3455
Once the installation process is complete for local deployment, you can access TBMQ UI by visiting the following URL: **http://localhost:8083**.
3556
Wait patiently until the services are up and running. To log in, utilize the following default credentials.
3657

_includes/pricing/calculator.sass

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -972,16 +972,17 @@ $bg-white: #fff
972972
&.visible
973973
display: flex
974974
.modal-content
975+
display: flex
975976
width: 1300px
976977
padding: 8px
977978
border-radius: 24px
978979
background-color: #F7F9FC
979-
max-height: 912px
980+
max-height: min(912px, 100%)
980981
overflow: hidden
981982
.modal-body
982983
display: flex
983984
position: relative
984-
height: 896px
985+
flex: 1 1 0
985986
.close-button
986987
position: absolute
987988
right: 9px
@@ -1375,6 +1376,11 @@ $bg-white: #fff
13751376

13761377
// RESPONSIVE STYLES - MODAL
13771378
1379+
@media screen and (max-width: 1300px)
1380+
.modal-overlay
1381+
.modal-content
1382+
border-radius: 0
1383+
13781384
@media screen and (max-width: 1100px)
13791385
.modal-overlay
13801386
.modal-content
@@ -1427,7 +1433,6 @@ $bg-white: #fff
14271433
@media screen and (max-width: 599px)
14281434
.modal-overlay
14291435
.modal-content
1430-
border-radius: 0
14311436
padding: 0
14321437
.modal-body
14331438
flex-direction: column

_includes/pricing/tb-payg-calculator.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ <h3>Calculation summary</h3>
602602
</span>
603603
</div>
604604
<a id="smGetStarted" href="javascript:;" class="button" onClick="getLicense(event, '${plan.productId}', '${plan.planId}',
605-
'${plan.name}', null, null, null, null, '${extraProd}', '${tbSmState.devInstances}', '${tbSmState.addons.edge.enabled}',
605+
'${plan.name}', null, '${extraDevices}', null, null, '${extraProd}', '${tbSmState.devInstances}', '${tbSmState.addons.edge.enabled}',
606606
'${tbSmState.addons.edge.extraEdgeCalc}', '${tbSmState.addons.trendz.enabled}')">Get started</a>
607607
</div>`;
608608

docs/pe/user-guide/install/upgrade-instructions/docker-compose/v4-3-x.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
layout: docwithnav-pe
3-
title: ThingsBoard PE v4.2.x upgrade instructions for Docker Compose
4-
description: ThingsBoard PE v4.2.x upgrade guide for Docker Compose
3+
title: ThingsBoard PE v4.3.x upgrade instructions for Docker Compose
4+
description: ThingsBoard PE v4.3.x upgrade guide for Docker Compose
55
active-menu-item-click: "true"
66
breadcrumbs: true
77
breadcrumbs-steps: 2

docs/user-guide/install/upgrade-instructions/docker-compose/v4-3-x.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ These upgrade steps are applicable for ThingsBoard version 4.2.1. In order to up
2323
{% include templates/info-banner.md content=difference %}
2424

2525
{% capture update_manifests_note %}
26-
We strongly recommend that you also update your Docker Compose deployment manifests to [**the corresponding version from GitHub repository**](https://github.com/thingsboard/thingsboard/tree/v4.2/docker) with every ThingsBoard upgrade. This ensures your ThingsBoard service runs with the latest best-practice parameters and configurations, while also guarantees that all required services are correctly deployed to support the newest features introduced in the release.
26+
We strongly recommend that you also update your Docker Compose deployment manifests to [**the corresponding version from GitHub repository**](https://github.com/thingsboard/thingsboard/tree/v4.3/docker) with every ThingsBoard upgrade. This ensures your ThingsBoard service runs with the latest best-practice parameters and configurations, while also guarantees that all required services are correctly deployed to support the newest features introduced in the release.
2727
<br>
2828
<br>
2929
If you are running older releases of ThingsBoard - be aware that the manifests in `master` branch of the repository may contain configurations for features that are not available in your specific version. Always ensure that manifests are compatible with your target ThingsBoard version while merging deployment files.

js/script.js

Lines changed: 82 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -153,62 +153,95 @@ var tb = (function () {
153153
CollapseBox($(container), 0);
154154
});
155155

156-
$('[data-faq-id]').each(function () {
157-
let faqAnchor = this;
158-
let nodeId = this.getAttribute('data-faq-id');
159-
let fontSize = this.getAttribute('data-faq-link-size') || 'smaller';
160-
let faqLink = newDOMElement('a', 'faq-link');
161-
$(faqLink).css('fontSize', fontSize);
162-
let contentSource = document.querySelector('div[data-item-id="' + nodeId + '"] .container');
163-
164-
if (contentSource) {
165-
let tooltip = newDOMElement('div', 'faq-tooltip');
166-
let fullText = $(contentSource).text().trim().replace(/\s+/g, ' ');
167-
let charsPerLine = 24;
168-
let maxLines = 5;
169-
let maxChars = charsPerLine * maxLines;
170-
171-
if (fullText.length > maxChars) {
172-
let truncatedText = fullText.substring(0, maxChars);
173-
let lastSpaceIndex = truncatedText.lastIndexOf(' ');
174-
if (lastSpaceIndex > maxChars - 20) {
175-
truncatedText = truncatedText.substring(0, lastSpaceIndex);
176-
}
156+
if ($('[data-faq-id]').length > 0) {
157+
const scriptsList = [
158+
{ src: 'https://unpkg.com/@popperjs/core@2', type: 'script' },
159+
{ src: 'https://unpkg.com/tippy.js@6', type: 'script' },
160+
{ src: 'https://unpkg.com/tippy.js@6/themes/light.css', type: 'css' },
161+
];
177162

178-
let tooltipContent = newDOMElement('p');
179-
tooltipContent.textContent = truncatedText;
180-
let readMoreLink = newDOMElement('a', 'read-more-link');
181-
readMoreLink.href = 'javascript:void(0)';
182-
readMoreLink.textContent = '...read more';
183-
tooltipContent.appendChild(readMoreLink);
163+
$('[data-faq-id]').each(function () {
164+
let faqAnchor = this;
165+
let nodeId = this.getAttribute('data-faq-id');
166+
let fontSize = this.getAttribute('data-faq-link-size') || 'smaller';
167+
let faqLink = newDOMElement('a', 'faq-link');
168+
$(faqLink).css('fontSize', fontSize);
184169

185-
tooltip.appendChild(tooltipContent);
170+
faqAnchor.appendChild(faqLink);
171+
$(faqLink).on('click', function() {
172+
navigateToFaq(nodeId);
173+
});
174+
});
186175

187-
$(readMoreLink).on('click', function(e) {
188-
e.stopPropagation();
189-
e.preventDefault();
190-
navigateToFaq(nodeId);
191-
});
192-
} else {
193-
let clonedContent = $(contentSource).clone();
194-
clonedContent.find('a').attr('target', '_blank');
195-
$(tooltip).html(clonedContent.html());
196-
}
176+
loadNextScript(0, scriptsList, function () {
177+
$('[data-faq-id]').each(function () {
178+
let faqAnchor = this;
179+
let nodeId = this.getAttribute('data-faq-id');
180+
let faqLink = $(faqAnchor).children('a')[0];
181+
let contentSource = document.querySelector('div[data-item-id="' + nodeId + '"] .container');
182+
183+
if (contentSource) {
184+
let fullText = $(contentSource).text().trim().replace(/\s+/g, ' ');
185+
let charsPerLine = 24;
186+
let maxLines = 5;
187+
let maxChars = charsPerLine * maxLines;
188+
let tooltipContent = newDOMElement('span', 'tooltip-content');
189+
190+
if (fullText.length > maxChars) {
191+
let truncatedText = fullText.substring(0, maxChars);
192+
let lastSpaceIndex = truncatedText.lastIndexOf(' ');
193+
if (lastSpaceIndex > maxChars - 20) {
194+
truncatedText = truncatedText.substring(0, lastSpaceIndex);
195+
}
197196

198-
$(tooltip).on('click', function(e) {
199-
if (!$(e.target).is('a') && !$(e.target).hasClass('read-more-link')) {
200-
e.stopPropagation();
201-
}
202-
});
197+
tooltipContent.textContent = truncatedText + '… ';
198+
let readMoreLink = newDOMElement('a', 'read-more-link');
199+
readMoreLink.href = 'javascript:void(0)';
200+
readMoreLink.textContent = 'read more';
201+
tooltipContent.appendChild(readMoreLink);
202+
} else {
203+
tooltipContent.textContent = fullText;
204+
}
203205

204-
faqLink.appendChild(tooltip);
205-
}
206+
tippy(faqLink, {
207+
content: tooltipContent,
208+
allowHTML: true,
209+
interactive: true,
210+
maxWidth: 320,
211+
placement: 'right',
212+
delay: [100, 200],
213+
theme: 'light',
214+
onShow(instance) {
215+
instance.popper.querySelector('.read-more-link')?.addEventListener('click', (e) => {
216+
e.preventDefault();
217+
navigateToFaq(nodeId);
218+
});
219+
},
220+
popperOptions: {
221+
modifiers: [
222+
{
223+
name: 'offset',
224+
options: {
225+
offset: (item) => {
226+
if (item.placement.includes('right') || item.placement.includes('top')) {
227+
return [0, 20];
228+
}
229+
230+
if (item.placement.includes('left') || item.placement.includes('bottom')) {
231+
return [10, 5];
232+
}
206233

207-
faqAnchor.appendChild(faqLink);
208-
$(faqLink).on('click', function() {
209-
navigateToFaq(nodeId);
234+
return [0, 5];
235+
},
236+
},
237+
},
238+
],
239+
},
240+
});
241+
}
242+
});
210243
});
211-
});
244+
}
212245

213246
function navigateToFaq(nodeId) {
214247
const faqElement = document.querySelector(`div[data-item-id="${nodeId}"]`);

pricing/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1182,7 +1182,7 @@ defaultActivePricingSection: thingsboard-pe-options
11821182
</div>
11831183

11841184
<div id="tbmq-private-cloud" class="pricing-content" style="display: none;">
1185-
<div class="container">
1185+
<div class="container no-padding">
11861186
<div class="pricing-content-header">
11871187
<div class="pricing-content-description always-display active">
11881188
<h2>Your private MQTT broker instance</h2>

pricing/pricing.sass

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -876,10 +876,13 @@ html#pricing
876876
line-height: 24px
877877

878878
&#thingsboard-ce
879-
padding-top: 60px
879+
padding-top: 46px
880880
.pricing-div
881881
margin-top: 25px
882882

883+
&#tbmq-ce
884+
padding-top: 46px
885+
883886
.pricing-div
884887
&.padding-bottom
885888
padding-bottom: 100px
@@ -938,6 +941,7 @@ html#pricing
938941
.button, .button.secondary
939942
@media (max-width: 1919px)
940943
width: 100%
944+
min-width: 150px
941945
&.popular
942946
position: relative
943947
width: 290px
@@ -1463,6 +1467,51 @@ html#pricing
14631467
text-decoration: none
14641468
&:hover
14651469
text-decoration: underline
1470+
1471+
.tippy-box[data-theme~="light"]
1472+
background-color: #fff
1473+
color: #3D3D3D
1474+
text-align: left
1475+
border-radius: 8px
1476+
padding: 0
1477+
box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15), 0 4px 8px rgba(0, 0, 0, 0.05)
1478+
border: 1px solid #E6F0FC
1479+
font-family: 'Roboto', sans-serif
1480+
font-size: 14px
1481+
line-height: 1.5
1482+
font-weight: 400
1483+
1484+
1485+
.tippy-content
1486+
padding: 16px
1487+
max-width: 320px
1488+
width: max-content
1489+
1490+
.tooltip-content, .tooltip-content:first-child, .tooltip-content:last-child
1491+
margin: 0 0 8px 0
1492+
white-space: normal
1493+
font-size: 14px
1494+
line-height: 24px
1495+
color: #3D3D3D
1496+
&:last-child
1497+
margin-bottom: 0
1498+
1499+
a
1500+
color: #2A7DEC
1501+
text-decoration: none
1502+
1503+
&:hover
1504+
text-decoration: underline
1505+
1506+
.read-more-link
1507+
color: #2A7DEC
1508+
font-weight: 500
1509+
cursor: pointer
1510+
text-decoration: none
1511+
1512+
&:hover
1513+
text-decoration: underline
1514+
14661515
@media (max-width: 992px)
14671516
#pricingContent .container
14681517
max-width: unset

0 commit comments

Comments
 (0)