1jQuery.widget( 'gc.customForm', { 2 options: { 3 form: [] 4 }, 5 selectedFieldEl: null, 6 7 _create: function() { 8 var widget = this; 9 10 for( key in this.options.form.fields ) { 11 var field = this.options.form.fields[key]; 12 this.addField( field ); 13 } 14 }, 15 16 addField: function( field ) { 17 18 var widget = this; 19 20 21 $fieldWrapperEl = $('<div class="field-wrapper"/>'); 22 /*$fieldWrapperEl.click( function() { 23 widget.selectField( $(this) ); 24 });*/ 25 26 $fieldEl = $('<div class="field"/>'); 27 $fieldEl.appendTo( $fieldWrapperEl ); 28 29 var $fieldsListEl = this.element.find( '.fields' ); 30 if ( $fieldsListEl.length == 0 ) { 31 $fieldsListEl = $('<div class="fields"></div>') 32 $fieldsListEl.appendTo( this.element ) 33 } 34 35 36 $fieldWrapperEl.appendTo( $fieldsListEl ); 37 var type = field.type; 38 39 if ( type == "string" ) { 40 $fieldEl.stringField({ field: field }); 41 $fieldEl.data( 'widgetClass', 'stringField' ); 42 } 43 if ( type == "text" ) { 44 $fieldEl.textField({ field: field }); 45 $fieldEl.data( 'widgetClass', 'textField' ); 46 } 47 if ( type == "checkbox" ) { 48 $fieldEl.checkboxField({ field: field }); 49 $fieldEl.data( 'widgetClass', 'checkboxField' ); 50 } 51 if ( type == "select" ) { 52 $fieldEl.selectField({ field: field }); 53 $fieldEl.data( 'widgetClass', 'selectField' ); 54 } 55 if ( type == "multi_select" ) { 56 $fieldEl.multiSelectField({ field: field }); 57 $fieldEl.data( 'widgetClass', 'multiSelectField' ); 58 } 59 if ( type == "date" ) { 60 $fieldEl.dateField({ field: field }); 61 $fieldEl.data( 'widgetClass', 'dateField' ); 62 } 63 if ( type == "file" ) { 64 $fieldEl.fileField({ field: field }); 65 $fieldEl.data( 'widgetClass', 'fileField' ); 66 } 67 if ( type == "numeric" ) { 68 $fieldEl.numericField({ field: field }); 69 $fieldEl.data( 'widgetClass', 'numericField' ); 70 } 71 this.changed(); 72 73 $fieldEl.data('gc-' + $fieldEl.data('widgetClass')).afterInit(); 74 75 return $fieldWrapperEl; 76 }, 77 78 getFields: function() { 79 var customFields = $(this.element).find( '.custom-field'); 80 var result = new Array(); 81 customFields.each( function( index, el ) { 82 var $fieldEl = $( el ); 83 result.push( $fieldEl.data('gc-' + $fieldEl.data('widgetClass')).getField() ); 84 }) 85 return result; 86 }, 87 88 changed: function() { 89/* if (this.options.valueEl) { 90 var fields = this.getFormValues(); 91 this.options.valueEl.val(JSON.stringify( { fields: fields })); 92 }*/ 93 }, 94 95 selectField: function() { 96 97 }, 98 99 getFormValues: function() { 100 101 var customFields = $(this.element).find( '.custom-field'); 102 var result = {}; 103 customFields.each( function( index, el ) { 104 var $fieldEl = $( el ); 105 var fieldWidget = $fieldEl.data('gc-' + $fieldEl.data('widgetClass')); 106 107 if (fieldWidget) { 108 var field = fieldWidget.field; 109 result[field.id] = fieldWidget.getValue(); 110 } 111 }); 112 return result; 113 } 114} );
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.