HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/analytics.komma.nl/resources/vue/components/tool.vue
<template>
    <div class="l-contain tool">
        <div class="tool__matrix">
            <div class="tool__form">

                <div class="tool__title-main">
                    <img src="/img/logo.svg" alt="logo"/>
                    <h1>Analytics tool</h1>
                </div>

                <label class="tool__label">Type verkoop</label>
                <div class="tool__form-field u-margin-between">
                    <button class="tool__button" :data-active="tooltype === 'order' ? 'true' : 'false'"
                            @click="setToolType('order')">
                        Order
                    </button>

                    <button class="tool__button" :data-active="tooltype === 'offerte' ? 'true' : 'false'"
                            @click="setToolType('offerte')">
                        offerte
                    </button>
                </div>

                <label class="tool__label">Budget</label>
                <div class="tool__form-field tool__form-field--input u-margin-between">
                    <input type="number" name="budget" @change="changeInput('budget')" ref="budget" class="tool__input" placeholder="2000">
                </div>

                <label class="tool__label">Gemiddelde kosten per klik: <span class="tool__label-value">€{{cpc}}</span></label>
                <div class="tool__slider-field">
                    <vue-slider v-model="cpc" :min="0.5" :max="10" :interval="0.5"/>
                </div>

                <label class="tool__label">Conversiepercentage: <span class="tool__label-value">{{conversion}}%</span></label>
                <div class="tool__slider-field">
                    <vue-slider v-model="conversion" :min="0" :max="5" :interval="0.5"/>

                </div>

                <template v-if="tooltype === 'offerte'">
                    <label class="tool__label">Scoringspercentage leads: <span class="tool__label-value">{{scoringspercentage}}%</span></label>
                    <div class="tool__slider-field">
                        <vue-slider v-model="scoringspercentage" :min="0" :max="100"/>
                    </div>
                </template>

                <label class="tool__label">Gemiddelde omzet per nieuwe klant</label>
                <div class="tool__form-field tool__form-field--input u-margin-between">
                    <input type="number" name="omzetperklant" class="tool__input" ref="revenuePerCustomer" @change="changeInput('revenuePerCustomer')" placeholder="50.000">
                </div>

                <label class="tool__label">Marge op omzet: <span class="tool__label-value">{{margin}}%</span></label>
                <div class="tool__slider-field">
                    <vue-slider v-model="margin" :min="0" :max="100"/>

                </div>


            </div>
            <div class="tool__sidebar">
                <div class="tool__sidebar-container">
                    <div class="tool__sidebar-item">
                        <span class="tool__sidebar-number">{{ roundNumber(leadNumber) }}</span>
                        <span class="tool__sidebar-label">bezoekers</span>
                    </div>
                    <div class="tool__sidebar-item" v-if="tooltype === 'offerte'">
                        <span class="tool__sidebar-number">{{ roundNumber(requestNumber) }}</span>
                        <span class="tool__sidebar-label">aanvragen</span>
                    </div>
                    <div class="tool__sidebar-item">
                        <span class="tool__sidebar-number">{{ roundNumber(orderNumber) }}</span>
                        <span class="tool__sidebar-label">orders</span>
                    </div>
                </div>
                <div class="tool__sidebar-container">
                    <div class="tool__sidebar-item">
                        <span class="tool__sidebar-number">€{{ formatNumber(roundNumber(revenue)) }}</span>
                        <span class="tool__sidebar-label">omzet</span>
                    </div>
                    <div class="tool__sidebar-item">
                        <span class="tool__sidebar-number">€{{ formatNumber(roundNumber(profit)) }}</span>
                        <span class="tool__sidebar-label">bruto winst</span>
                    </div>
                </div>
                <div class="tool__sidebar-container tool__sidebar-container--result">
                    <div class="tool__sidebar-item">
                        <span class="tool__sidebar-number">€1</span>
                        <span class="tool__sidebar-label">investeren</span>
                        <span class="tool__sidebar-number">=</span>
                        <span class="tool__sidebar-number">€{{roundNumber(result)}}</span>
                        <span class="tool__sidebar-label">winst</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
import VueSlider from 'vue-slider-component'

export default {
    name: "tool",
    components: {
        VueSlider
    },
    data() {
        return {
            isMounted: false,
            budget: 0,
            revenuePerCustomer: 0,
            cpc: 5,
            conversion: 2,
            scoringspercentage: 20,
            margin: 10,
            tooltype: 'order',
        }
    },
    mounted(){
        this.isMounted = true;
    },
    methods: {
        setToolType: function (type) {
            this.tooltype = type
        },
        changeInput: function (type) {
            if (type === 'budget') this.budget = this.$refs.budget.value
            if (type === 'revenuePerCustomer') this.revenuePerCustomer = this.$refs.revenuePerCustomer.value
        },
        roundNumber: function(number) {
            return Math.round(number)
        },
        formatNumber: function(num) {
            return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.')
        }
    },
    computed: {
        leadNumber: function () {
            return this.budget / this.cpc
        },
        requestNumber: function () {
            return (this.leadNumber / 100) * this.conversion
        },
        orderNumber: function () {
            if (this.tooltype === 'order') {
                return this.requestNumber
            } else {
                return (this.requestNumber / 100) * this.scoringspercentage
            }
        },
        revenue: function () {
            return Math.round(this.orderNumber) * this.revenuePerCustomer
        },
        profit: function () {
            return (this.revenue / 100) * this.margin
        },
        result: function () {
            return this.budget > 0 ? this.profit / this.budget : 0
        }
    }
}
</script>