Search code examples
thingsboard

How edit asset name?


How i can edit asset name? its doesnt work. Thanks

let assetService = $injector.get(self.ctx.servicesMap.get('assetService'));
let activeID = self.ctx.data[0].datasource.entityId
let tenantId = self.ctx.dashboard.authUser.tenantId

let asset = {
    additionalInfo: null,
    createdTime: 1599121131415, // временно
    customerId: {
        entityType: "CUSTOMER",
        id: self.ctx.dashboard.authUser.customerId
    },
    id: {
        entityType: "ASSET",
        id: activeID
    },
    label: null,
    name: "kuku", // временно
    tenantId: {
        entityType: "TENANT",
        id: tenantId
    },
    type: "справочник"
}

assetService.saveAsset(asset)


Solution

  • Thingsboard is built using Angular 10 currently See releases. You correctly injected the Angular service 'assetService'. You need to follow the Angular method of subscribing to the observable from assetService.

    Calling

    assetService.saveAsset(asset)

    without subscribing means nothing happens. From the Angular University Blog

    The multiple versions of the Angular HTTP module all have an RxJS Observable-based API. This means that the multiple calls to the HTTP module will all return an observable, that we need to subscribe to one way or the other.

    So here's the code to 'subscribe' to the observable described above

    assetService.saveAsset(asset).subscribe(
        (response) => {
            console.log(
                "saveAsset call Success:",
                response);
        },
        response => {
            console.log(
                "saveAsset call Error:",
                response);
        },
        () => {
            console.log(
                "saveAsset observable Complete"
            );
    });
    

    Let me know if there's a mistake in the code above, I didn't test it. And thanks for your question Anzor - it led me to a solution to make a custom Thingsboard widget along with the Widgets Development Guide.