Use JsonGetter/Setter to encode resource data; minor fixes

This commit is contained in:
ViacheslavKlimov 2023-11-16 13:15:32 +02:00
parent e7aabe80a4
commit 6eadef0d68
13 changed files with 97 additions and 80 deletions

View File

@ -43,7 +43,6 @@ import org.thingsboard.server.common.data.TbResourceInfo;
import org.thingsboard.server.common.data.TbResourceInfoFilter;
import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.server.common.data.id.TbResourceId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.lwm2m.LwM2mObject;
import org.thingsboard.server.common.data.page.PageData;
import org.thingsboard.server.common.data.page.PageLink;
@ -53,7 +52,6 @@ import org.thingsboard.server.service.resource.TbResourceService;
import org.thingsboard.server.service.security.permission.Operation;
import org.thingsboard.server.service.security.permission.Resource;
import java.util.Base64;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@ -170,9 +168,7 @@ public class TbResourceController extends BaseController {
@PathVariable(RESOURCE_ID) String strResourceId) throws ThingsboardException {
checkParameter(RESOURCE_ID, strResourceId);
TbResourceId resourceId = new TbResourceId(toUUID(strResourceId));
TbResource resource = checkResourceId(resourceId, Operation.READ);
resource.setBase64Data(Base64.getEncoder().encodeToString(resource.getData()));
return resource;
return checkResourceId(resourceId, Operation.READ);
}
@ApiOperation(value = "Create Or Update Resource (saveResource)",
@ -191,7 +187,7 @@ public class TbResourceController extends BaseController {
@RequestBody TbResource resource) throws Exception {
resource.setTenantId(getTenantId());
checkEntity(resource.getId(), resource, Resource.TB_RESOURCE);
return tbResourceService.save(resource, getCurrentUser());
return new TbResourceInfo(tbResourceService.save(resource, getCurrentUser()));
}
@ApiOperation(value = "Get Resource Infos (getResources)",

View File

@ -23,8 +23,6 @@ import org.thingsboard.server.gen.edge.v1.ResourceUpdateMsg;
import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
import org.thingsboard.server.queue.util.TbCoreComponent;
import java.util.Base64;
@Component
@TbCoreComponent
public class ResourceMsgConstructor {
@ -39,7 +37,7 @@ public class ResourceMsgConstructor {
.setResourceType(tbResource.getResourceType().name())
.setFileName(tbResource.getFileName());
if (tbResource.getData() != null) {
builder.setData(Base64.getEncoder().encodeToString(tbResource.getData()));
builder.setData(tbResource.getEncodedData());
}
if (tbResource.getEtag() != null) {
builder.setEtag(tbResource.getEtag());

View File

@ -46,7 +46,7 @@ public abstract class BaseResourceProcessor extends BaseEdgeProcessor {
resource.setResourceKey(resourceUpdateMsg.getResourceKey());
resource.setResourceType(ResourceType.valueOf(resourceUpdateMsg.getResourceType()));
resource.setFileName(resourceUpdateMsg.getFileName());
resource.setBase64Data(resourceUpdateMsg.hasData() ? resourceUpdateMsg.getData() : null);
resource.setEncodedData(resourceUpdateMsg.hasData() ? resourceUpdateMsg.getData() : null);
resource.setEtag(resourceUpdateMsg.hasEtag() ? resourceUpdateMsg.getEtag() : null);
resourceValidator.validate(resource, TbResourceInfo::getTenantId);
if (created) {

View File

@ -101,7 +101,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource);
@ -119,6 +119,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
Assert.assertArrayEquals(resource.getData(), download(savedResource.getId()));
savedResource.setTitle("My new resource");
savedResource.setData(null);
save(savedResource);
@ -136,7 +137,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle(StringUtils.randomAlphabetic(300));
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
Mockito.reset(tbClusterService, auditLogService);
@ -155,7 +156,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource);
@ -184,7 +185,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource);
@ -200,7 +201,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource);
@ -225,7 +226,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource);
@ -256,7 +257,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("Resource" + i);
resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
resources.add(new TbResourceInfo(save(resource)));
}
List<TbResourceInfo> loadedResources = new ArrayList<>();
@ -293,7 +294,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("JKS Resource" + i);
resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
resources.add(new TbResourceInfo(save(resource)));
}
@ -303,7 +304,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("LWM2M Resource" + i);
resource.setResourceType(ResourceType.PKCS_12);
resource.setFileName(i + DEFAULT_FILE_NAME_2);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
save(resource);
}
@ -340,7 +341,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("Resource" + i);
resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
resources.add(new TbResourceInfo(save(resource)));
}
List<TbResourceInfo> loadedResources = new ArrayList<>();
@ -400,7 +401,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("JKS Resource" + i);
resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResourceInfo saved = new TbResourceInfo(save(resource));
jksResources.add(saved);
}
@ -411,7 +412,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("LWM2M Resource" + i);
resource.setResourceType(ResourceType.PKCS_12);
resource.setFileName(i + DEFAULT_FILE_NAME_2);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource saved = save(resource);
lwm2mesources.add(saved);
}
@ -477,7 +478,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("Resource" + i);
resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
expectedResources.add(new TbResourceInfo(save(resource)));
}
@ -488,7 +489,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setTitle("Resource" + i);
resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResourceInfo savedResource = new TbResourceInfo(save(resource));
systemResources.add(savedResource);
if (i >= 73) {
@ -532,7 +533,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JS_MODULE);
resource.setTitle("Js resource");
resource.setFileName(JS_TEST_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource);
@ -563,7 +564,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JS_MODULE);
resource.setTitle("Js resource");
resource.setFileName(JS_TEST_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource);
@ -607,7 +608,7 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JS_MODULE);
resource.setTitle("Js resource");
resource.setFileName(JS_TEST_FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource);
@ -623,16 +624,16 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.PKCS_12);
resource.setTitle("My resource");
resource.setFileName("3.pks");
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource);
resource.setEtag(savedResource.getEtag());
savedResource.setBase64Data(TEST_DATA);
savedResource.setEncodedData(TEST_DATA);
doPost("/api/resource", savedResource)
.andExpect(status().isBadRequest())
.andExpect(statusReason(containsString("can't be updated")));
savedResource.setBase64Data(null);
savedResource.setData(null);
savedResource.setTitle("Updated resource");
savedResource = doPost("/api/resource", savedResource, TbResource.class);
assertThat(savedResource.getTitle()).isEqualTo("Updated resource");
@ -647,12 +648,12 @@ public class TbResourceControllerTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JS_MODULE);
resource.setTitle("My resource");
resource.setFileName("module.js");
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
TbResource savedResource = save(resource);
resource.setEtag(savedResource.getEtag());
String newData = Base64.getEncoder().encodeToString(new byte[]{1, 2, 3});
savedResource.setBase64Data(newData);
savedResource.setEncodedData(newData);
savedResource.setFileName("new-module.js");
savedResource.setTitle("Updated title");
savedResource = save(savedResource);

View File

@ -45,7 +45,7 @@ public class ResourceEdgeTest extends AbstractEdgeTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("Edge Test Resource");
resource.setFileName(FILE_NAME);
resource.setBase64Data(TEST_DATA);
resource.setEncodedData(TEST_DATA);
edgeImitator.expectMessageAmount(1);
TbResource savedResource = doPost("/api/resource", resource, TbResource.class);
@ -119,6 +119,6 @@ public class ResourceEdgeTest extends AbstractEdgeTest {
TbResource tbResource = doGet("/api/resource/" + uuid, TbResource.class);
Assert.assertNotNull(tbResource);
Assert.assertEquals("Edge Test Resource", tbResource.getName());
Assert.assertEquals(TEST_DATA, tbResource.getBase64Data());
Assert.assertEquals(TEST_DATA, tbResource.getEncodedData());
}
}

View File

@ -198,7 +198,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
for (int i = 2; i < 4; i++) {
createResource("test" + i, i + DEFAULT_FILE_NAME);
assertEquals(i*4, resourceService.sumDataSizeByTenantId(tenantId));
assertEquals(i * 4, resourceService.sumDataSizeByTenantId(tenantId));
}
}
@ -209,7 +209,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setFileName(filename);
byte[] b = new byte[]{1, 2, 3, 4};
resource.setBase64Data(Base64.getEncoder().encodeToString(b));
resource.setData(b);
return tbResourceService.save(resource);
}
@ -220,7 +220,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My first resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource);
@ -233,7 +233,6 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
assertArrayEquals(TEST_DATA, savedResource.getData());
savedResource.setTitle("My new resource");
savedResource.setBase64Data(null);
savedResource.setData(null);
tbResourceService.save(savedResource);
@ -250,7 +249,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTenantId(tenantId);
resource.setResourceType(ResourceType.LWM2M_MODEL);
resource.setFileName("test_model.xml");
resource.setBase64Data(Base64.getEncoder().encodeToString(LWM2M_TEST_MODEL.getBytes()));
resource.setEncodedData(Base64.getEncoder().encodeToString(LWM2M_TEST_MODEL.getBytes()));
TbResource savedResource = tbResourceService.save(resource);
@ -271,7 +270,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource);
assertEquals(TenantId.SYS_TENANT_ID, savedResource.getTenantId());
@ -286,7 +285,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource);
@ -295,7 +294,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
try {
Assertions.assertThrows(DataValidationException.class, () -> {
@ -312,7 +311,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTenantId(tenantId);
resource.setResourceType(ResourceType.JKS);
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
Assertions.assertThrows(DataValidationException.class, () -> {
tbResourceService.save(resource);
});
@ -325,7 +324,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
Assertions.assertThrows(DataValidationException.class, () -> {
tbResourceService.save(resource);
});
@ -352,7 +351,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource);
TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId());
@ -368,7 +367,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTenantId(tenantId);
resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource);
TbResource foundResource = resourceService.findResourceByTenantIdAndKey(tenantId, savedResource.getResourceType(), savedResource.getResourceKey());
@ -383,7 +382,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setResourceType(ResourceType.JKS);
resource.setTitle("My resource");
resource.setFileName(DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
TbResource savedResource = tbResourceService.save(resource);
TbResource foundResource = resourceService.findResourceById(tenantId, savedResource.getId());
@ -409,7 +408,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("Resource" + i);
resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
resources.add(new TbResourceInfo(tbResourceService.save(resource)));
}
@ -463,7 +462,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("System Resource" + i);
resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
TbResourceInfo tbResourceInfo = new TbResourceInfo(tbResourceService.save(resource));
if (i >= 50) {
resources.add(tbResourceInfo);
@ -476,7 +475,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
resource.setTitle("Tenant Resource" + i);
resource.setResourceType(ResourceType.JKS);
resource.setFileName(i + DEFAULT_FILE_NAME);
resource.setBase64Data(TEST_BASE64_DATA);
resource.setData(TEST_DATA);
resources.add(new TbResourceInfo(tbResourceService.save(resource)));
}
@ -487,7 +486,7 @@ public class BaseTbResourceServiceTest extends AbstractControllerTest {
TbResourceInfoFilter filter = TbResourceInfoFilter.builder()
.tenantId(tenantId)
.build();
pageData = resourceService.findAllTenantResourcesByTenantId(filter, pageLink);
pageData = resourceService.findAllTenantResourcesByTenantId(filter, pageLink);
loadedResources.addAll(pageData.getData());
if (pageData.hasNext()) {
pageLink = pageLink.nextPageLink();

View File

@ -206,7 +206,7 @@ public abstract class AbstractLwM2MIntegrationTest extends AbstractTransportInte
lwModel.setFileName(resourceName);
lwModel.setTenantId(tenantId);
byte[] bytes = IOUtils.toByteArray(AbstractLwM2MIntegrationTest.class.getClassLoader().getResourceAsStream("lwm2m/" + resourceName));
lwModel.setBase64Data(Base64.getEncoder().encodeToString(bytes));
lwModel.setData(bytes);
lwModel = doPostWithTypedResponse("/api/resource", lwModel, new TypeReference<>() {
});
Assert.assertNotNull(lwModel);

View File

@ -24,7 +24,7 @@ public enum ResourceType {
JKS("application/x-java-keystore", false, false),
PKCS_12("application/x-pkcs12", false, false),
JS_MODULE("application/javascript", true, true),
IMAGE(null, true, false);
IMAGE(null, true, true);
@Getter
private final String mediaType;

File diff suppressed because one or more lines are too long

View File

@ -32,8 +32,10 @@ import org.thingsboard.server.dao.resource.TbResourceInfoDao;
import org.thingsboard.server.dao.sql.JpaAbstractDao;
import org.thingsboard.server.dao.util.SqlDao;
import java.util.EnumSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
@ -57,22 +59,28 @@ public class JpaTbResourceInfoDao extends JpaAbstractDao<TbResourceInfoEntity, T
@Override
public PageData<TbResourceInfo> findAllTenantResourcesByTenantId(TbResourceInfoFilter filter, PageLink pageLink) {
Set<ResourceType> resourceTypes = filter.getResourceTypes();
if (CollectionsUtil.isEmpty(resourceTypes)) {
resourceTypes = EnumSet.allOf(ResourceType.class);
}
return DaoUtil.toPageData(resourceInfoRepository
.findAllTenantResourcesByTenantId(
filter.getTenantId().getId(), TenantId.NULL_UUID,
CollectionsUtil.isNotEmpty(filter.getResourceTypes()) ? filter.getResourceTypes()
.stream().map(Enum::name).collect(Collectors.toList()) : null,
resourceTypes.stream().map(Enum::name).collect(Collectors.toList()),
Objects.toString(pageLink.getTextSearch(), ""),
DaoUtil.toPageable(pageLink)));
}
@Override
public PageData<TbResourceInfo> findTenantResourcesByTenantId(TbResourceInfoFilter filter, PageLink pageLink) {
Set<ResourceType> resourceTypes = filter.getResourceTypes();
if (CollectionsUtil.isEmpty(resourceTypes)) {
resourceTypes = EnumSet.allOf(ResourceType.class);
}
return DaoUtil.toPageData(resourceInfoRepository
.findTenantResourcesByTenantId(
filter.getTenantId().getId(),
CollectionsUtil.isNotEmpty(filter.getResourceTypes()) ? filter.getResourceTypes()
.stream().map(Enum::name).collect(Collectors.toList()) : null,
resourceTypes.stream().map(Enum::name).collect(Collectors.toList()),
pageLink.getTextSearch(),
DaoUtil.toPageable(pageLink)));
}

View File

@ -67,7 +67,7 @@
</mat-error>
</mat-form-field>
<tb-file-input *ngIf="isAdd || (isEdit && entityForm.get('resourceType').value === resourceType.JS_MODULE)"
formControlName="base64Data"
formControlName="data"
required
[readAsBinary]="true"
[allowedExtensions]="getAllowedExtensions()"

View File

@ -68,7 +68,7 @@ export class ResourcesLibraryComponent extends EntityComponent<Resource> impleme
this.entityForm.get('title').enable({emitEvent: false});
}
this.entityForm.patchValue({
base64Data: null,
data: null,
fileName: null
}, {emitEvent: false});
});
@ -93,7 +93,7 @@ export class ResourcesLibraryComponent extends EntityComponent<Resource> impleme
title: [entity ? entity.title : '', [Validators.required, Validators.maxLength(255)]],
resourceType: [entity?.resourceType ? entity.resourceType : ResourceType.JS_MODULE, Validators.required],
fileName: [entity ? entity.fileName : null, Validators.required],
base64Data: [entity ? entity.base64Data : null, Validators.required]
data: [entity ? entity.data : null, Validators.required]
});
}
@ -102,20 +102,20 @@ export class ResourcesLibraryComponent extends EntityComponent<Resource> impleme
this.entityForm.get('resourceType').disable({emitEvent: false});
if (entity.resourceType !== ResourceType.JS_MODULE) {
this.entityForm.get('fileName').disable({emitEvent: false});
this.entityForm.get('base64Data').disable({emitEvent: false});
this.entityForm.get('data').disable({emitEvent: false});
}
}
this.entityForm.patchValue({
resourceType: entity.resourceType,
fileName: entity.fileName,
title: entity.title,
base64Data: entity.base64Data
data: entity.data
});
}
prepareFormValue(formValue: Resource): Resource {
if (this.isEdit && !isDefinedAndNotNull(formValue.base64Data)) {
delete formValue.base64Data;
if (this.isEdit && !isDefinedAndNotNull(formValue.data)) {
delete formValue.data;
}
return super.prepareFormValue(formValue);
}

View File

@ -64,6 +64,6 @@ export interface ResourceInfo extends Omit<BaseData<TbResourceId>, 'name' | 'lab
}
export interface Resource extends ResourceInfo {
base64Data: string;
data: string;
name?: string;
}