function createHeightField(field) { S.Log.trace('+createHeightField'); var value = field.value || 66; var view = Ti.UI.createView(S.combine(textFieldDefaults, {value: value, backgroundColor: 'white', borderRadius: 4})); view.gather = function() { S.Log.trace("+gather: " + view.value + ' ('+view.ftField.value+ ','+view.inchField.value +')') view.value = parseInt(view.inchField.value) + parseInt(view.ftField.value) * 12 + ''; // view.setValue(view.value + ''); } view.setValue = function(value) { S.Log.trace("+setValue: " + value); try { if ('' === value) value = 0; if (value) { view.value = parseInt(value, 10); if (isNaN(view.value)) view.value = 0; if (view.value < 0) view.value = 0; if (view.value > 100) view.value = 0; } view.ftField.value = Math.floor(view.value/12) + ''; view.inchField.value = view.value % 12 + ''; } catch(err) { S.Log.debug(err); } S.Log.trace("-setValue: " + value); } S.Log.trace('1. createHeightField'); view.ftField = Ti.UI.createTextField(S.combine(textFieldDefaults, {width: '40dp', hintText: 'ft', top: 0, left: '70dp', value: '', keyboardType: keyboardMap[exports.TYPE_NUMBER] })); view.ftField.addEventListener('blur', function(e) { view.gather() } ); view.inchField = Ti.UI.createTextField(S.combine(textFieldDefaults, {width: '40dp', hintText: 'in', left: '140dp', top: 0, value: '', keyboardType: keyboardMap[exports.TYPE_NUMBER] })); view.inchField.addEventListener('blur', function(e) { view.gather() }); S.Log.trace('2. createHeightField'); view.add( Ti.UI.createLabel(S.combine(textFieldDefaults, {width: '60dp', top: 0, left: '5dp', text: 'Height' }))); view.add( Ti.UI.createLabel(S.combine(textFieldDefaults, {width: '120dp', top: 0, left: '120dp', text: 'ft' }))); view.add( Ti.UI.createLabel(S.combine(textFieldDefaults, {width: '180dp', top: 0, left: '190dp', text: 'inches' }))); S.Log.trace('3. createHeightField'); view.add(view.ftField); view.add(view.inchField); S.Log.trace('-createHeightField'); return view; }
function checkbox2(field) { S.Log.print('+checkbox'); S.Log.print(field); var checkbox = Ti.UI.createView(S.combine(textFieldDefaults, { backgroundColor: 'black', borderRadius: 4 })); var height; var width; var left; if (Ti.Platform.osname == "iphone"){ height = 30; width = 30; left = 50; } else if (Ti.Platform.osname == "android"){ height = 50; width = 50; left = 65; } var check = Ti.UI.createButton({ title: "\u2713", top: 10, left: 10, width: width, height: height, borderColor: 'none', borderWidth: 0, borderRadius: 0, backgroundImage: 'none', color: '#fff', font:{fontSize: 25, fontWeight: 'bold'}, image:'/images/buttons/checkbox.png' }); //Attach some simple on/off actions checkbox.on = function() { // check.backgroundColor = '#159902'; // '#aaa'; // check.title = "\u2713"; check.image='/images/buttons/checkbox-tick.png'; checkbox.value = true; }; checkbox.off = function() { // check.backgroundColor = S.Cfg.color.Salmon; // '#159902'; // check.title = 'X'; check.image='/images/buttons/checkbox.png'; checkbox.value = false; }; checkbox.addEventListener('click', function(e) { S.Log.print(e); if(false === checkbox.value) { S.Log.print('on'); checkbox.on(); } else { S.Log.print('off'); checkbox.off(); } }); checkbox.add(check); if (field.value) { checkbox.on(); } else { checkbox.off(); } checkbox.check = check; var label = Ti.UI.createLabel({left: left, text: field.title, color:'white' }); checkbox.add(label); return checkbox; }
var addField = function(field, fieldRefs) { var title = field.title || ('field' + ctr++); var id = field.id || title; var type = field.type || exports.TYPE_TEXT; var form = this; var fieldObject = undefined; if (field.size === 'small') { textFieldDefaults.width = '125dp'; } else { textFieldDefaults.width = '250dp'; // default } if (type === exports.TYPE_TEXT || type === exports.TYPE_EMAIL || type === exports.TYPE_NUMBER || type === exports.TYPE_PHONE || type === exports.TYPE_PASSWORD) { fieldObject = Ti.UI.createTextField(textFieldDefaults); if (field.value) { fieldObject.value = field.value; } // be sure this works on Android fieldObject.keyboardType = keyboardMap[type]; fieldObject.passwordMask = type === exports.TYPE_PASSWORD; if (type === exports.TYPE_EMAIL) { fieldObject.autocorrect = false, fieldObject.autocapitalization = Titanium.UI.TEXT_AUTOCAPITALIZATION_NONE; fieldObject.clearButtonMode= Titanium.UI.INPUT_BUTTONMODE_ONFOCUS; fieldObject.keyboardType= Titanium.UI.KEYBOARD_EMAIL; } handleStyle(form, fieldObject, title); } else if (type === exports.TYPE_LABEL) { fieldObject = createLabel(field); // handleStyle(form, fieldObject, title); } else if (type === exports.TYPE_CHECKBOX) { fieldObject = checkbox(field); handleStyle(form, fieldObject, title); } else if (type === exports.TYPE_CHECKBOX1) { fieldObject = checkbox1(field); handleStyle(form, fieldObject, title); } else if (type === exports.TYPE_CHECKBOX2) { fieldObject = checkbox2(field); handleStyle(form, fieldObject, title); } else if (type == exports.TYPE_HEIGHT) { fieldObject = createHeightField(field); handleStyle(form, fieldObject, title); } else if (type === exports.TYPE_DATE) { if (isAndroid) { //For adding datepicker as spinner because of 13 yeary birthday issue. fieldObject = Ti.UI.createTextField(textFieldDefaults); handleStyle(form, fieldObject, title); setupPickerAndroid(fieldObject, Ti.UI.PICKER_TYPE_DATE); } else { fieldObject = Ti.UI.createTextField(textFieldDefaults); handleStyle(form, fieldObject, title); setupPickerTextField(fieldObject, Ti.UI.PICKER_TYPE_DATE); } } else if (type === exports.TYPE_PICKER) { if (isAndroid) { fieldObject = Ti.UI.createPicker({ type: Ti.UI.PICKER_TYPE_PLAIN, width: '250dp' }); handleStyle(form, undefined, title); for (var i in field.data) { fieldObject.add(Ti.UI.createPickerRow({title:field.data[i]})); } fieldObject._data = field.data; fieldObject.setValue = function(value) { var self = fieldObject; var data = self._data; self.value = value; S.Log.trace('Picker Set Value: ' + value); var sel = 0; for (var i = 0; i < data.length; i++) { Ti.API.log('==' + value + ' ?= ' + data[i]); if (value === data[i]) { sel = i; } self.setSelectedRow(0, sel) Ti.API.log('setSelected: ' + sel); } } fieldObject.getValue = function() { var self = fieldObject; var data = self._data; S.Log.trace('Picker Get Value'); var value= self.getSelectedRow(0).title; S.Log.print(value); return value; } fieldObject.clearValue = function() { S.Log.trace('Picker Clear Selected Value'); var self = fieldObject; self.setSelectedRow(0, 0); } } else { fieldObject = Ti.UI.createTextField(textFieldDefaults); handleStyle(form, fieldObject, title); setupPickerTextField(fieldObject, Ti.UI.PICKER_TYPE_PLAIN, field.data); } } else if (type === exports.TYPE_SUBMIT) { var button; if (field.name) { button = S.UI.createButton({ title: title, top:'10dp', name: field.name }); } else { button = S.UI.createButton(S.combine(ui.properties.Button, { title: title, top:'10dp' })); } button.addEventListener('click', function(e) { var blurred = false; S.Log.trace('form button click'); var values = {}; values = getData(form, fieldRefs); S.Log.print_r(fieldRefs); for (var i in fieldRefs) { // values[i] = fieldRefs[i].value; // Force Keyboard to hide if (! blurred) { if (fieldRefs[i].type === exports.TYPE_TEXT) { fieldRefs[i].blur(); blurred = true; } } } S.Log.print(values) form.fireEvent(id, {values:values}); }); form.container.add(button); } else if (type === exports.TYPE_TEXTIMAGE) { textFieldImage.backgroundImage=field.backgroundImage; fieldObject = Ti.UI.createTextField(textFieldImage); if (field.value) { fieldObject.value = field.value; } // be sure this works on Android fieldObject.keyboardType = keyboardMap[type]; fieldObject.autocorrect = false, fieldObject.autocapitalization = Titanium.UI.TEXT_AUTOCAPITALIZATION_NONE; fieldObject.clearButtonMode= Titanium.UI.INPUT_BUTTONMODE_ONFOCUS; fieldObject.keyboardType= Titanium.UI.KEYBOARD_EMAIL; handleStyle(form, fieldObject, title); } else if (type === exports.TYPE_PASSWORDIMAGE) { passwordFieldImage.backgroundImage=field.backgroundImage; fieldObject = Ti.UI.createTextField(passwordFieldImage); if (field.value) { fieldObject.value = field.value; } // be sure this works on Android fieldObject.keyboardType = keyboardMap[type]; fieldObject.passwordMask = type === exports.TYPE_PASSWORDIMAGE; fieldObject.autocorrect = false, fieldObject.autocapitalization = Titanium.UI.TEXT_AUTOCAPITALIZATION_NONE; fieldObject.clearButtonMode= Titanium.UI.INPUT_BUTTONMODE_ONFOCUS; fieldObject.keyboardType= Titanium.UI.KEYBOARD_EMAIL; handleStyle(form, fieldObject, title); } // Set the value if (field.value) { try { if (fieldObject.setValue) { fieldObject.setValue(field.value + ''); } else { fieldObject.value = field.value + ''; } } catch(err) { S.Log.debug(err); } } // Add our prepared UI component to the form if (fieldObject) { form.container.add(fieldObject); if ('label' !== type) { fieldRefs[id] = fieldObject }; } };