Changeset 213 for trunk/web-app/js


Ignore:
Timestamp:
Feb 25, 2010, 4:18:22 PM (13 years ago)
Author:
duh
Message:
  • restructured wizard
  • added information boxes
  • improved error feedback (highlighted error fields)
  • added confirmation page
  • several smaller bugfixes and improvements
Location:
trunk/web-app/js
Files:
1 added
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/web-app/js/table-editor.js

    r209 r213  
    1818    columnIdentifier:   null,
    1919
     20    /**
     21     * initialize object
     22     * @param tableIdentifier
     23     * @param rowIdentifier
     24     * @param columnIdentifier
     25     */
    2026    init: function(tableIdentifier, rowIdentifier, columnIdentifier) {
    2127        // store parameters globally
     
    3541    },
    3642
     43    /**
     44     * initialize table
     45     * @param table
     46     */
    3747    initializeTable: function(table) {
    3848        var that = this;
     
    4959    },
    5060
     61    /**
     62     * attach handlers to the input elements in a table row
     63     * @param row
     64     */
    5165    attachColumnHandlers: function(row) {
    5266        var that = this;
     
    5569            var input = $(':input', $(this));
    5670            // does this column contain an input field
    57 console.log(input)
    5871            if (input) {
    5972                var type = $(input).attr('type');
    60 console.log(input)
    61 console.log('type: '+type)
    6273
    6374                switch (type) {
     
    7485                        $(input).bind('change', function() {
    7586                            that.updateSingleInputElements(input, columnNumber, 'select');
    76                         })
     87                        });
     88                        break;
     89                    case 'checkbox':
     90                        // checkbox
     91                        var columnNumber = count;
     92                        $(input).bind('click', function() {
     93                            console.log(columnNumber+': update checkboxes with value '+input)
     94                            that.updateSingleInputElements(input, columnNumber, 'input');
     95                        });
    7796                        break;
    7897                    case 'hidden':
     
    93112    },
    94113
     114    /**
     115     * update all input elements in a selected column
     116     * @param element
     117     * @param columnNumber
     118     * @param elementSelector
     119     */
    95120    updateSingleInputElements: function(element, columnNumber, elementSelector) {
    96121        var that = this;
     
    99124        var r = c.parent();
    100125        var t = r.parent();
    101 
    102         // get value(s)
    103         // TODO for multiple selects...
    104         var v = e.val();
     126        var v = this.getValue(e);
     127        // TODO for multiples...
    105128
    106129        // select all input elements in the selected rows
    107130        $('.ui-selected', t).each(function() {
    108131            $(that.columnIdentifier + ':eq(' + columnNumber + ') ' + elementSelector, $(this)).each(function() {
    109                 if ($(this).val() != v) {
    110                     $(this).val(v);
    111                     // TODO support multiple selects
     132                var me = $(this)
     133                var myVal = that.getValue(me);
     134                if (myVal != v) {
     135                    that.setValue(me,v);
    112136                }
    113137            })
     138        })
     139    },
    114140
    115         })
     141    /**
     142     * get the value /status of an input field based on it's type
     143     * @param input
     144     */
     145    getValue: function(input) {
     146        var i = $(input);
     147
     148        switch (i.attr('type')) {
     149            case 'checkbox':
     150                return i.attr('checked');
     151                break;
     152            default:
     153                return i.val();
     154                break;
     155        }
     156    },
     157
     158    /**
     159     * set the value / status of an input field based on it's type
     160     * @param input
     161     * @param value
     162     */
     163    setValue: function(input,value) {
     164        var i = $(input);
     165
     166        switch (i.attr('type')) {
     167            case 'checkbox':
     168                return i.attr('checked',value);
     169                break;
     170            default:
     171                return i.val(value);
     172                break;
     173        }
    116174    }
    117175}
  • trunk/web-app/js/wizard.js

    r209 r213  
    3737    attachDateTimePickers();
    3838
    39     // SUBJECT PAGE
     39    // table handlers
    4040    attachTableEvents();
    4141    resizeWizardTable();
    42     attachSubjectSlider();
     42    attachTableSlider();
    4343    new TableEditor().init('div.table','div.row','div.column');
    44    
    45     // GROUPING PAGE
    46     new Grouping().init('div.subjects', 'div.subject', 'div.groups', 'div.group','div.add','div.remove');
     44
     45    // accordeon(s)
     46    $("#accordion").accordion();
    4747}
    4848
     
    189189// slide the contents of the table if the content of
    190190// the table is wider than the table itself
    191 function attachSubjectSlider() {
     191function attachTableSlider() {
    192192    var slider = $("div#wizard").find('div.slider');
    193193    var header = $("div#wizard").find('div.header');
Note: See TracChangeset for help on using the changeset viewer.