cancel
Showing results for 
Search instead for 
Did you mean: 
SOLVED

Increment Item Value

Increment Item Value

Hemingway
Established Member

I am so curious, is that possible to simple increment item value via builded write-item function in widget behaviour attributes? something like this:

Hemingway_0-1709198961567.png

My notation of course not working. Or I have to create my own UI-Action? 

1 REPLY 1

webiq-sk
Frequent Contributor

Write-item does exactly one thing: write the specified item to the absolute input in the value field - there's no magic parsing happening here so it will not work as you expected. This is true for all fields in WebIQ Designer - nowhere can you do any calculations.

You can however create a custom UI action to achieve this. Please note that this example requires at least WebIQ 2.15.7 - with previous versions you'd have to subscribe to the item just to get the item properties (min/max) and then unsubscribe again.

/**
 * Custom UI-Action 'increment-item-value'.
 *
 * Description:
 * [Add description here]
 */
(function() {
    var actions = shmi.pkg("visuals.session.userActions"); //get reference to userActions object

    /**
     * UI-Action 'increment-item-value' implementation
     *
     * @params {any[]} parameters  configured ui-action parameters
     * ---- Initial parameters, needs to be updated manually when changed ----
     * @param {string} parameters[0]  Item
     *
     */
    actions["increment-item-value"] = function(parameters) {

        const itemName = parameters[0],
            im = shmi.visuals.session.ItemManager;

        // Read item value
        im.readDirect([itemName], function(err, result) {
            if (!err) {
                let itmData = {};

                // Read min/max
                im.getItemProperties([itemName], (err, properties) => {
                    if (!err) {
                        const max = properties[itemName].max; // min would be for minimum
                        const newValue = result[itemName] + 1;
                        if (newValue > max) {
                            console.log("Not updating item value, because it would exceed the maximum value of " + max);
                        } else {
                            // Write item value
                            itmData[itemName] = result[itemName] + 1;
                            im.writeDirect(itmData, function(err, result) {
                                if (!err) {
                                    console.log('Increased item value to ' + itmData[itemName]);
                                } else {
                                    shmi.notify("Couldn't write item: " + itemName, 'ERROR');
                                }
                            });
                        }
                    } else {
                        shmi.notify("Couldn't read item properties: " + itemName, 'ERROR');
                    }
                });
            } else {
                shmi.notify("Couldn't read item: " + itemName, 'ERROR');
            }
        });
    };
}());

webiqsk_0-1709203407799.png

 

Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist