static/dmx.js
author Tero Marttila <terom@paivola.fi>
Thu, 01 May 2014 23:55:53 +0300
changeset 85 ee05d89bde77
parent 83 136e210fce82
permissions -rw-r--r--
dmx-web: ajax updates
85
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
     1
/*
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
     2
 * Get current value for given head/attr.
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
     3
 *
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
     4
 * Returns undefined if no such attr.
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
     5
 */
83
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
function dmx_input (head, attr) {
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
    var value = $('.dmx-input#' + head + '-' + attr).val();
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
    
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
    if (value == undefined )
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
        return undefined;
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
    if (value == "")
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
        return 0; // default
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
    
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
    return parseInt(value);
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
}
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
/*
85
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    19
 * Update current output value.
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    20
 */
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    21
function dmx_update (input) {
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    22
    var name = input.attr('name');
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    23
    var value = input.val();
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    24
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    25
    console.log("dmx_update: " + name + ": " + value);
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    26
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    27
    var data = { }; data[name] = value;
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    28
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    29
    $.ajax({
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    30
            type:   'POST',
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    31
            data:   data,
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    32
    });
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    33
}
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    34
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    35
/*
83
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
 * Update color for head.
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    37
 */
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
function dmx_color (head) {
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
    var alpha = dmx_input(head, 'alpha');
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
    if (alpha) 
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    42
        alpha = alpha / 255;
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
    $('.dmx-color#' + head + '-color').background_color(
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
            dmx_input(head, 'red') / 255,
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
            dmx_input(head, 'green') / 255,
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
            dmx_input(head, 'blue') / 255,
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
            alpha
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
    );
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
}
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
/*
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
 * Update slider from <input>.
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
 */
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
function _slider_input (input, slider) {
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
    var value;
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
    if (input.val())
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
        value = parseInt(input.val());
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
    else
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
        value = 0;
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
    
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
    slider.slider('value', value);
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
}
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
/*
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
 * Bind given <input> to given slider.
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    68
 */
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
function slider_input (input, slider) {
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
    // bind
85
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    71
    input.change(function () {
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    72
        dmx_update(input);
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    73
        _slider_input(input, slider);
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
    74
    });
83
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
    // initialize
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
    _slider_input(input, slider);
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
}
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    80
$(function () {
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
    $('.dmx-input').each(function () {
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    82
        var attr = this.id;
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    83
        var head = attr.split('-', 1)[0];
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    84
        var input = $(this);
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
        var slider = $('.dmx-slider#' + attr + '-slider');
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    86
        var color = $('.dmx-color#' + head + '-color');
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    87
        
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    88
        // slider control
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    89
        slider.slider({
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    90
            orientation:    'horizontal',
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    91
            range:          'min',
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    92
            min:            0,
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    93
            max:            255,
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    94
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    95
            slide:          function () {
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    96
                var value = slider.slider('value');
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    97
                
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    98
                // update input
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    99
                input.val(value.toString());
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   100
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   101
                if (color) {
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   102
                    // update color value
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   103
                    dmx_color(head);
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   104
                }
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   105
85
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
   106
                // send output
ee05d89bde77 dmx-web: ajax updates
Tero Marttila <terom@paivola.fi>
parents: 83
diff changeset
   107
                dmx_update(input);
83
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   108
            },
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   109
        });
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   110
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   111
        // update slider from <input>
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   112
        slider_input(input, slider);
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   113
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   114
        // init
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   115
        if (color) {
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   116
            dmx_color(head);
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   117
        }
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   118
    });
136e210fce82 qmsk.dmx: new Head-based model/view; output/updates not yet implemented
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   119
});