'How to get remaining percentage of a value?

I want to create an app on Vue where I update through a slider a value and the other value get's updated. Something like this: enter image description here

Can someone give me a helping hand? I'm going insane. I've been trying to get the formula right for the past 3 days.

This is what I've written so far:

updateRarities(trait, raritySlider){
            var property = this.currentCollection.properties.items.find(property => property.id === trait.propertyID);
            var numOfTraits = property.traits.items.length;
            let newRarityCurrentTrait = 1 / numOfTraits * Number(raritySlider);
            
            for (let i = 0; i < property.traits.items.length; i++) {
                if (property.traits.items[i].id !== trait.id) {
                    let updatedTrait = {
                        id: property.traits.items[i].id,
                        // calculate the rarity of the other traits 
                        rarity: (1 - newRarityCurrentTrait) * property.traits.items[i].raritySlider,
                        updatedAt: new Date(),
                    }
                    API.graphql(graphqlOperation(mutations.updateTrait, { input: updatedTrait}));
                }
                else {
                    let updatedTrait = {
                        id: trait.id,
                        rarity: newRarityCurrentTrait,
                        raritySlider: raritySlider,
                        updatedAt: new Date(),
                    }
                    API.graphql(graphqlOperation(mutations.updateTrait, { input: updatedTrait}));
                }
            }
        }


Solution 1:[1]

Ok I figured it out, after messing a bit with Excel:

updateRarities(trait, raritySlider){
        var property = this.currentCollection.properties.items.find(property => property.id === trait.propertyID);

        // sum of every raritySlider
        let sumOfSliders = 0;
        for (let i = 0; i < property.traits.items.length; i++) {
            sumOfSliders = Number(sumOfSliders) + Number(property.traits.items[i].raritySlider);
        }
        
        for (let i = 0; i < property.traits.items.length; i++) {
            if (property.traits.items[i].id !== trait.id) {
                let updatedTrait = {
                    id: property.traits.items[i].id,
                    // calculate the rarity of the other traits 
                    rarity: 1/sumOfSliders*property.traits.items[i].raritySlider,
                    updatedAt: new Date(),
                }
                API.graphql(graphqlOperation(mutations.updateTrait, { input: updatedTrait}));
            }
            else {
                let updatedTrait = {
                    id: trait.id,
                    rarity: 1/sumOfSliders*raritySlider,
                    raritySlider: raritySlider,
                    updatedAt: new Date(),
                }
                API.graphql(graphqlOperation(mutations.updateTrait, { input: updatedTrait}));
            }
        }
    }

I just needed to sum the value of the sliders.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 bangarangguy