ButtonInformation.js

js/ButtonInformation.js · 7.6 КБ

ButtonInformation.js js
/* Stores info about layers for all elements */
var buttonInformation = {
    'getProperty': function(currentState, propertyName) {
        return this[currentState + "-button__" + propertyName];
    },
    'setProperty': function(currentState, propertyName, propertyValue) {
        this[currentState + "-button__" + propertyName] = propertyValue;
    },
    'buttonInformationArray': {
        0: 'normal-button__fontsize', 1: 'normal-button__fontmetric', 2: 'normal-button__fontfamily',
        3: 'hover-button__fontsize', 4: 'hover-button__fontmetric', 5: 'hover-button__fontfamily',
        6: 'pressed-button__fontsize', 7: 'pressed-button__fontmetric', 8: 'pressed-button__fontfamily',
        9: 'normal-button__bordersize', 10: 'normal-button__borderradius', 11: 'normal-button__paddingleft',
        12: 'normal-button__paddingright', 13: 'normal-button__paddingtop', 14: 'normal-button__paddingbottom',
        15: 'normal-button__bordercolor', 16: 'normal-button__bordertype', 17: 'hover-button__bordersize',
        18: 'hover-button__borderradius', 19: 'hover-button__paddingleft', 20: 'hover-button__paddingright',
        21: 'hover-button__paddingtop', 22: 'hover-button__paddingbottom', 23: 'hover-button__bordercolor',
        24: 'hover-button__bordertype', 25: 'pressed-button__bordersize', 26: 'pressed-button__borderradius',
        27: 'pressed-button__paddingleft', 28: 'pressed-button__paddingright', 29: 'pressed-button__paddingtop',
        30: 'pressed-button__paddingbottom', 31: 'pressed-button__bordercolor', 32: 'pressed-button__bordertype',
        33: 'normal-button__boxshadowx', 34: 'normal-button__boxshadowy', 35: 'normal-button__boxshadowblur',
        36: 'normal-button__boxshadowsize', 37: 'normal-button__boxshadowcolor', 38: 'normal-button__boxshadowtype',
        39: 'hover-button__boxshadowx', 40: 'hover-button__boxshadowy', 41: 'hover-button__boxshadowblur',
        42: 'hover-button__boxshadowsize', 43: 'hover-button__boxshadowcolor', 44: 'hover-button__boxshadowtype',
        45: 'pressed-button__boxshadowx', 46: 'pressed-button__boxshadowy', 47: 'pressed-button__boxshadowblur',
        48: 'pressed-button__boxshadowsize', 49: 'pressed-button__boxshadowcolor', 50: 'pressed-button__boxshadowtype',
        51: 'normal-button__textshadowx', 52: 'normal-button__textshadowy', 53: 'normal-button__textshadowblur',
        54: 'normal-button__textshadowcolor', 55: 'normal-button__textshadowtype', 56: 'hover-button__textshadowx',
        57: 'hover-button__textshadowy', 58: 'hover-button__textshadowblur', 59: 'hover-button__textshadowcolor',
        60: 'hover-button__textshadowtype', 61: 'pressed-button__textshadowx', 62: 'pressed-button__textshadowy',
        63: 'pressed-button__textshadowblur', 64: 'pressed-button__textshadowcolor', 65: 'pressed-button__textshadowtype',
        66: 'normal-button__layers', 67: 'normal-button__colors', 68: 'normal-button__textcolor', 69: 'normal-button__stops',
        70: 'hover-button__layers', 71: 'hover-button__colors', 72: 'hover-button__textcolor', 73: 'hover-button__stops',
        74: 'pressed-button__layers', 75: 'pressed-button__colors', 76: 'pressed-button__textcolor', 77: 'pressed-button__stops',
        78: 'normal-button__gradienttype', 79: 'normal-button__angle', 80: 'hover-button__gradienttype',
        81: 'hover-button__angle', 82: 'pressed-button__gradienttype', 83: 'pressed-button__angle'
    },
    'setTemplate': function(templateData) {
        for (var i = 0; i < 84; i++) {
            this[this.buttonInformationArray[i]] = templateData[i];
        }
    },
    'getCurrentTemplateString': function() {
        var currentTemplate = "[";
        for (var i = 0; i < 84; i++) {
            switch(typeof(this[this.buttonInformationArray[i]])) {
                case "number":
                    currentTemplate += this[this.buttonInformationArray[i]];
                    break;
                case "string":
                    currentTemplate += "'" + this[this.buttonInformationArray[i]] + "'";
                    break;
                case "object":
                    currentTemplate += "[";
                    for (var j = 0; j < this[this.buttonInformationArray[i]].length; j++) {
                        if (this[this.buttonInformationArray[i]][j][0] == "#")
                            currentTemplate += "'" + this[this.buttonInformationArray[i]][j] + "'";
                        else
                            currentTemplate += this[this.buttonInformationArray[i]][j];
                        if ((this[this.buttonInformationArray[i]].length - 1) < j)
                            currentTemplate += ", ";
                    }
                    currentTemplate += "]";
                    break;
            }
            if (i < 83)
                currentTemplate += ", ";
        }

        currentTemplate += "]";
        return currentTemplate;
    }
};

/* Completed templates of button */
const templateButtons = {
    'basic': [16, 'px', 'Arial', 16, 'px', 'Arial', 16, 'px', 'Arial', 0, 0, 10, 10, 5, 5, '#ffffffff', 'solid',
    0, 0, 10, 10, 5, 5, '#ffffffff', 'solid', 0, 0, 10, 10, 5, 5, '#ffffffff', 'solid', 0, 0, 0, 0, '#ffffff00',
    'none', 0, 0, 0, 0, '#ffffff00', 'none', 0, 0, 0, 0, '#ffffff00', 'none', 0, 0, 0, '#ffffff00', 'none', 0, 0, 0,
    '#ffffff00', 'none', 0, 0, 0, '#ffffff00', 'none', [1], ['#ffffff4d'], '#ffffffff', [0], [1], ['#ffffff4d'],
    '#ffffffff', [0], [1], ['#ffffff4d'], '#ffffffff', [0], 'linear-gradient', 0, 'linear-gradient', 0,
    'linear-gradient', 0],
    'creative': [16, 'px', 'Arial', 16, 'px', 'Arial', 16, 'px', 'Arial', 0, 15, 10, 10, 5, 5, '#ffffffff', 'solid',
    0, 15, 10, 10, 5, 5, '#ffffffff', 'solid', 0, 15, 10, 10, 5, 5, '#ffffffff', 'solid', 0, 0, 0, 0, '#ffffff00',
    'none', 0, 0, 0, 0, '#ffffff00', 'none', 0, 0, 0, 0, '#ffffff00', 'none', 0, 0, 0, '#ffffff00', 'none', 0, 0, 0,
    '#ffffff00', 'none', 0, 0, 0, '#ffffff00', 'none', [1,2,3], ['#505addff','#be40c0ff','#fba82bff'], '#ffffffff',
    [34,66,96], [1,2,3], ['#555fe2ff','#c345c5ff','#ffad30ff'], '#ffffffff', [34,66,96], [1,2,3],
    ['#4650d3ff','#b436b6ff','#f19e21ff'], '#ffffffff', [34,66,96], 'linear-gradient', 135, 'linear-gradient', 135,
    'linear-gradient', 135],
    'solid': [16, 'px', 'Arial', 16, 'px', 'Arial', 16, 'px', 'Arial', 0, 10, 10, 10, 5, 5, '#ffffffff', 'solid',
    0, 10, 10, 10, 5, 5, '#ffffffff', 'solid', 0, 10, 10, 10, 5, 5, '#ffffffff', 'solid', 0, 7, 0, 0, '#000000cc',
    'none', 0, -2, 0, 0, '#8b98dfff', 'inset', 0, 2, 0, 0, '#3c85d3ff', 'inset', 1, 1, 0, '#000000b3', 'true', 1, 1, 0,
    '#00000066', 'true', -1, -1, 0, '#000000ff', 'true', [1,2,3], ['#5a9ce2ff','#047cffff','#0e4581ff'], '#ffffffff',
    [0,80,100], [1,2,3], ['#5a9ce2ff','#338cebff','#146dccff'], '#ffffffff', [0,80,100], [1,2,3],
    ['#245e99ff','#003975ff','#031b35ff'], '#ffffffff', [0,80,100], 'linear-gradient', 180, 'linear-gradient', 180,
    'linear-gradient', 180]
};

/* Get template of button by name */
function getTemplateButton(templateName) {
    var templateArray = new Array();
    for (var i = 0; i < 84; i++) {
        switch(typeof(templateButtons[templateName][i])) {
            case "object":
                for (var j = 0; j < templateButtons[templateName][i].length; j++) {
                    if(templateArray[i] == undefined) {
                        templateArray[i] = new Array();
                    }
                    templateArray[i][j] = templateButtons[templateName][i][j];
                }
                break;
            default:
                templateArray[i] = templateButtons[templateName][i];
                break;
        }
    }
    return templateArray;
    //return templateButtons[templateName];
}