Merge branch 'develop/3.5' of github.com:thingsboard/thingsboard into develop/3.5
This commit is contained in:
commit
fd490f8097
@ -16,6 +16,7 @@
|
|||||||
package org.thingsboard.server.transport.lwm2m.server.store;
|
package org.thingsboard.server.transport.lwm2m.server.store;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.codec.binary.Hex;
|
||||||
import org.springframework.data.redis.connection.RedisClusterConnection;
|
import org.springframework.data.redis.connection.RedisClusterConnection;
|
||||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||||
import org.springframework.data.redis.core.Cursor;
|
import org.springframework.data.redis.core.Cursor;
|
||||||
@ -48,7 +49,12 @@ public class TbRedisLwM2MClientStore implements TbLwM2MClientStore {
|
|||||||
if (data == null) {
|
if (data == null) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
return deserialize(data);
|
try {
|
||||||
|
return deserialize(data);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.warn("[{}] Failed to deserialize client from data: {}", endpoint, Hex.encodeHexString(data), e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -70,7 +76,13 @@ public class TbRedisLwM2MClientStore implements TbLwM2MClientStore {
|
|||||||
scans.forEach(scan -> {
|
scans.forEach(scan -> {
|
||||||
scan.forEachRemaining(key -> {
|
scan.forEachRemaining(key -> {
|
||||||
byte[] element = connection.get(key);
|
byte[] element = connection.get(key);
|
||||||
clients.add(deserialize(element));
|
if (element != null) {
|
||||||
|
try {
|
||||||
|
clients.add(deserialize(element));
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.warn("[{}] Failed to deserialize client from data: {}", Hex.encodeHexString(key), Hex.encodeHexString(element), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return clients;
|
return clients;
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
|
|
||||||
-->
|
-->
|
||||||
<div style="min-width: 600px;">
|
<form style="width: 600px;">
|
||||||
<mat-toolbar color="primary">
|
<mat-toolbar color="primary">
|
||||||
<span fxFlex></span>
|
<span fxFlex></span>
|
||||||
<button mat-icon-button (click)="close()" type="button">
|
<button mat-icon-button (click)="close()" type="button">
|
||||||
@ -30,4 +30,4 @@
|
|||||||
[alarmActivityOnly]="true">
|
[alarmActivityOnly]="true">
|
||||||
</tb-alarm-comment>
|
</tb-alarm-comment>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
|
|
||||||
-->
|
-->
|
||||||
<form [formGroup]="alarmFormGroup" style="min-width: 600px;">
|
<form [formGroup]="alarmFormGroup" style="width: 600px;">
|
||||||
<mat-toolbar color="primary">
|
<mat-toolbar color="primary">
|
||||||
<h2>{{ 'alarm.alarm-details' | translate }}</h2>
|
<h2>{{ 'alarm.alarm-details' | translate }}</h2>
|
||||||
<span fxFlex></span>
|
<span fxFlex></span>
|
||||||
|
|||||||
@ -91,14 +91,18 @@
|
|||||||
{{ getUserInitials(alarm) }}
|
{{ getUserInitials(alarm) }}
|
||||||
</span>
|
</span>
|
||||||
<span [matTooltip]="getUserDisplayName(alarm)"
|
<span [matTooltip]="getUserDisplayName(alarm)"
|
||||||
matTooltipPosition="above"
|
matTooltipPosition="above">
|
||||||
style="text-overflow: ellipsis">
|
|
||||||
{{ getUserDisplayName(alarm) }}
|
{{ getUserDisplayName(alarm) }}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="!alarm.assigneeId" class="unassigned-container" fxLayout="row" fxLayoutAlign="start center">
|
<span *ngIf="!alarm.assigneeId" class="unassigned-container">
|
||||||
<mat-icon class="material-icons unassigned-icon">account_circle</mat-icon>
|
<mat-icon class="material-icons unassigned-icon">account_circle</mat-icon>
|
||||||
<span translate>alarm.unassigned</span>
|
<span matTooltip="{{ 'alarm.unassigned' | translate }}"
|
||||||
|
matTooltipPosition="above"
|
||||||
|
style="vertical-align: middle"
|
||||||
|
translate>
|
||||||
|
alarm.unassigned
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<button *ngIf="allowAssign"
|
<button *ngIf="allowAssign"
|
||||||
mat-icon-button [disabled]="isLoading$ | async"
|
mat-icon-button [disabled]="isLoading$ | async"
|
||||||
|
|||||||
@ -28,8 +28,8 @@
|
|||||||
}
|
}
|
||||||
.mat-mdc-cell {
|
.mat-mdc-cell {
|
||||||
.assignee-cell {
|
.assignee-cell {
|
||||||
|
white-space: nowrap;
|
||||||
.assigned-container {
|
.assigned-container {
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
.user-avatar {
|
.user-avatar {
|
||||||
@ -48,7 +48,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.unassigned-container {
|
.unassigned-container {
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
.material-icons.unassigned-icon {
|
.material-icons.unassigned-icon {
|
||||||
@ -58,6 +57,7 @@
|
|||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
color: rgba(0, 0, 0, 0.38);
|
color: rgba(0, 0, 0, 0.38);
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user