(using titanium 3.0.2, SDK 2.2)
I'm having an odd interface glitch happening (as if the two windows are swapping with each other for half a sec, then display normally) when I open my modal window on top of another modal window.
This is the window below the one I'm opening (which is opened the same way)
(search 'container' for where I'm opening the window.)
and this is the window I am opening:function bully() { var DB = require('/ui/common/CCISD/DB/db'); var DatePickers = require('datePickers'); var addbully = require('addbully'); var bully = Ti.UI.createView(); //images var BG = '/ui/common/images/UI/CCISD_iPad_background.png'; //local variables var windowWidth = Titanium.Platform.displayCaps.platformWidth; var windowHeight = Titanium.Platform.displayCaps.platformHeight; var setLeft = '13%'; var setWidth = '74%'; var setHeight = '43dp'; var db = new DB(); var datePickers = new DatePickers(); //report data arrays var witnessIndex = null; var witnessData = []; var totalReport = []; /*********** * top label ***********/ var topLabel = Ti.UI.createImageView({ image : '/ui/common/images/UI/iPhone_TopBar_asset.png', top : 0, width : '100%', height : windowHeight * .10 }); var topText = Ti.UI.createLabel({ top : 0, width : '100%', height : windowHeight * .10, color : 'white', text : 'Report-A-Bully', textAlign : Ti.UI.TEXT_ALIGNMENT_CENTER, font : { fontSize : '30sp' } }); //scrollable view var scrollView = Ti.UI.createScrollView({ contentWidth : 'auto', contentHeight : 'auto', showVerticalScrollIndicator : true, top : '10%', layout : 'vertical' }); /************************ ****** First Name ****** ************************/ var firstNameField = Ti.UI.createTextField({ borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED, hintText : 'First Name', top : '3%', left : setLeft, width : setWidth, height : setHeight }); //fixes keyboard on open var first = true; firstNameField.addEventListener('focus', function f(e) { if (first) { first = false; firstNameField.blur(); } else { firstNameField.removeEventListener('focus', f); } }); /*********************** ****** Last Name ****** ***********************/ var lastNameField = Ti.UI.createTextField({ borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED, hintText : 'Last Name', top : '1%', left : setLeft, width : setWidth, height : setHeight, }); /************************* ****** Role Picker ****** *************************/ var rolePicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); //Database Calls for roles db.Connect('ccisd_mobile', '/ui/common/ccisd_mobile.db'); db.Query('SELECT * FROM PersonType'); db.Close(); var roleData = db.getRoleArray(); rolePicker.add(roleData); rolePicker.selectionIndicator = true; /******************* ****** Email ****** *******************/ var emailField = Ti.UI.createTextField({ borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED, hintText : 'Email Address', top : '1%', left : setLeft, width : setWidth, height : setHeight, }); /******************* ****** Phone ****** *******************/ var phoneField = Ti.UI.createTextField({ borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED, hintText : 'Phone #', top : '1%', left : setLeft, width : setWidth, height : setHeight, }); /*************************** ****** Campus Picker ****** ***************************/ var campusPicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); //Database Calls for campus db.Connect('ccisd_mobile', '/ui/common/ccisd_mobile.db'); db.Query('SELECT * FROM IncidentBuilding'); db.Close(); campusData = db.getCampusArray(); campusPicker.add(campusData); campusPicker.selectionIndicator = true; /************************** ****** Grade Picker ****** **************************/ var gradePicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); //Database Calls for grades db.Connect('ccisd_mobile', '/ui/common/ccisd_mobile.db'); db.Query('SELECT * FROM AttendeeGrade'); db.Close(); gradeData = db.getGradeArray(); gradePicker.add(gradeData); gradePicker.selectionIndicator = true; /************************* ****** Date Labels ****** *************************/ var dateOccuredLabel = Titanium.UI.createLabel({ color : '#fff', text : 'Day Event Occured?', font : { fontFamily : 'Arial', fontSize : '18sp', fontWeight : 'bold' }, textAlign : 'center', width : 'auto', top : '1%', }); var datePickerLabel = Titanium.UI.createLabel({ color : '#fff', font : { fontFamily : 'Arial', fontSize : '18sp', fontWeight : 'bold' }, textAlign : Ti.UI.TEXT_ALIGNMENT_LEFT, text : 'Month Day Year', width : 'auto', top : '1%', }); /*************************** ****** Date Pickers ******* ***************************/ var monthPicker = Ti.UI.createPicker({ top : '1%', width : '24%', height : setHeight, left : '13%' }); var dayPicker = Ti.UI.createPicker({ top : '1%', width : '24%', height : setHeight, left : '35%' }); var yearPicker = Ti.UI.createPicker({ top : '1%', width : '30%', height : setHeight, right : '13%' }); //populate month var month = datePickers.getMonth(); monthPicker.add(month); monthPicker.selectionIndicator = true; //populate day var day = datePickers.getDay((1)); dayPicker.add(day); dayPicker.selectionIndicator = true; //populate year var year = datePickers.getYear(); yearPicker.add(year); yearPicker.selectionIndicator = true; var datePickerContainer = Ti.UI.createView({ height : setHeight, backgroundColor : 'transparent', top : '1%' }); //event for change of month monthPicker.addEventListener('change', function(e) { datePickerContainer.setVisible(false); //remove previous days var _col = dayPicker.columns[0]; for (var i = _col.getRowCount(); i >= 0; i--) { _col.removeRow(_col.rows[i]); } //re-populate day = datePickers.getDay((e.rowIndex + 1)); dayPicker.add(day); datePickerContainer.setVisible(true); }); /************************* ****** Time Picker ****** *************************/ var timePicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); var timeData = []; //Database Calls for time db.Connect('ccisd_mobile', '/ui/common/ccisd_mobile.db'); db.Query('SELECT * FROM IncidentTime'); db.Close(); timeData = db.getTimeArray(); timePicker.add(timeData); timePicker.selectionIndicator = true; /************************** ****** Where Picker ****** **************************/ var wherePicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); var whereData = []; //Database Calls for campus db.Connect('ccisd_mobile', '/ui/common/ccisd_mobile.db'); db.Query('SELECT * FROM IncidentBuilding'); db.Close(); whereData = db.getCampusArray(); wherePicker.add(whereData); wherePicker.selectionIndicator = true; var descriptionTextArea = Ti.UI.createTextArea({ textAlign : 'left', hintText : 'Please describe the incident and location (Cafeteria, Hallway, Restroom, Playground, etc)', top : '1%', width : setWidth, height : 300 }); /******************************* ******** WITNESS TABLE ******** *******************************/ var witnessTable = []; var witnessPicker = Ti.UI.createPicker({ top : '1%', width : setWidth, selectionIndicator : true }); var witnessDefault = Ti.UI.createPickerRow({ title : 'add person: ' }); witnessTable.push(witnessDefault); witnessPicker.add(witnessTable); witnessPicker.addEventListener('change', function(e) { if (witnessPicker.getSelectedRow(0).getTitle() !== 'add person: ') { addPersonBtn.setTitle('Edit Person'); witnessIndex = e.rowIndex - 1; } else { addPersonBtn.setTitle('Add Person'); witnessIndex = null; } }); /**************************** ******** ADD PERSON ******** ****************************/ var addPersonBtn = Titanium.UI.createButton({ width : setWidth, height : setHeight, backgroundColor : '#D0463F', font : { fontSize : '18sp', fontWeight : 'bold' }, title : 'Add Person', color : '#fff', borderRadius : 5, top : '1%', }); addPersonBtn.addEventListener('click', function(e) { //creating an add person window var AddBully = new addbully(witnessData, witnessTable, witnessIndex); var bullyContainer = Titanium.UI.createWindow({ backgroundImage : BG, navBarHidden : true, fullscreen : false, modal : true }); bullyContainer.add(AddBully); bullyContainer.open(); Ti.App.addEventListener('closeAddBully', function(e) { bullyContainer.close(); addPersonBtn.title = 'Add Person'; //remove previous added persons var _col = witnessPicker.columns[0]; for (var i = _col.getRowCount(); i >= 0; i--) { _col.removeRow(_col.rows[i]); } //re-populate added persons witnessPicker.add(witnessTable); }); }); var submitBtn = Titanium.UI.createButton({ width : setWidth, height : setHeight, backgroundColor : '#57B057', font : { fontSize : '18sp', fontWeight : 'bold' }, title : 'Submit', //Define the text on button color : '#fff', borderRadius : 5, top : '1%', bottom : '10%' }); submitBtn.addEventListener('click', function(e) { if (dayPicker.getSelectedRow(0).getTitle() !== '0' && timePicker.getSelectedRow(0).getTitle() !== 'Time: ' && wherePicker.getSelectedRow(0).getTitle() !== 'Campus: ' && descriptionTextArea.value !== 'Please describe the incident and location (Cafeteria, Hallway, Restroom, Playground, etc)') { var dialog = Ti.UI.createAlertDialog({ cancel : 1, buttonNames : ['Submit', 'Cancel'], message : 'Are you sure you want to submit?', title : 'Submit Report' }); dialog.addEventListener('click', function(e) { if (e.index === e.source.cancel) { //do nothing } else { //submit witness data to report totalReport.push({ firstName : firstNameField.value === 'First Name' ? null : firstNameField.value, lastName : lastNameField.value === 'Last Name' ? null : lastNameField.value, role : rolePicker.getSelectedRow(0).getTitle(), email : emailField.value === 'Email Address' ? null : emailField.value, phone : phoneField.value === 'Phone #' ? null : phoneField.value, campus : campusPicker.getSelectedRow(0).getTitle(), grade : gradePicker.getSelectedRow(0).getTitle() === 'Grade' ? null : gradePicker.getSelectedRow(0).getTitle(), date : monthPicker.getSelectedRow(0).getTitle() + '/' + dayPicker.getSelectedRow(0).getTitle() + '/' + yearPicker.getSelectedRow(0).getTitle(), //required time : timePicker.getSelectedRow(0).getTitle(), //required where : wherePicker.getSelectedRow(0).getTitle(), //required description : descriptionTextArea.value === 'Please describe the incident and location (Cafeteria, Hallway, Restroom, Playground, etc)' ? null : descriptionTextArea.value //required }); //if additional witnesses if (witnessData.length > 0) { //add additional witnesses to report for (var i = 0; i < witnessData.length; i++) { totalReport.push(witnessData[i]); } } /***test for final report***/ // alert('-- Report-A-Bully Test Report --\n'+ // '\nFirst Name: ' + totalReport[0].firstName + // '\nLast Name: ' + totalReport[0].lastName + // '\nRole: ' + totalReport[0].role + // '\nEmail: ' + totalReport[0].email + // '\nPhone: ' + totalReport[0].phone + // '\nCampus: ' + totalReport[0].campus + // '\nGrade: ' + totalReport[0].grade + // '\nDate: ' + totalReport[0].date + // '\nTime: ' + totalReport[0].time + // '\nWhere: ' + totalReport[0].where + // '\nDescription: ' + totalReport[0].description); /***test for added persons***/ // var witnessIndexValue = 1; // if (witnessData.length > 0) { // alert('-- Added Persons Test --\n' + // '\nFirst Name: ' + totalReport[witnessIndexValue].firstName + // '\nLast Name: ' + totalReport[witnessIndexValue].lastName + // '\nRole: ' + totalReport[witnessIndexValue].role + // '\nGender: ' + totalReport[witnessIndexValue].gender + // '\nEthnicity: ' + totalReport[witnessIndexValue].race + // '\nCampus: ' + totalReport[witnessIndexValue].campus + // '\nGrade: ' + totalReport[witnessIndexValue].grade + // '\nknowPerson: ' + totalReport[witnessIndexValue].knowPerson + // '\nDescription: ' + totalReport[witnessIndexValue].description); // } } }); dialog.show(); } else { alert('Please enter all required information:\n\nDate, Time, Campus, Description'); } }); scrollView.add(firstNameField); scrollView.add(lastNameField); scrollView.add(rolePicker); scrollView.add(emailField); scrollView.add(phoneField); scrollView.add(campusPicker); scrollView.add(gradePicker); scrollView.add(dateOccuredLabel); scrollView.add(datePickerLabel); datePickerContainer.add(monthPicker); datePickerContainer.add(dayPicker); datePickerContainer.add(yearPicker); scrollView.add(datePickerContainer); scrollView.add(timePicker); scrollView.add(wherePicker); scrollView.add(descriptionTextArea); scrollView.add(witnessPicker); scrollView.add(addPersonBtn); scrollView.add(submitBtn); bully.add(scrollView); bully.add(topLabel); bully.add(topText); return bully; }; module.exports = bully;
function addbully(witnessData, witnessTable, witnessIndex) { var DB = require('/ui/common/CCISD/DB/db'); var addbully = Ti.UI.createView(); var windowWidth = Titanium.Platform.displayCaps.platformWidth; var windowHeight = Titanium.Platform.displayCaps.platformHeight; var setLeft = '13%'; var setWidth = '74%'; var setHeight = '43dp'; var db = new DB(); /*********** * top label ***********/ var topLabel = Ti.UI.createImageView({ image : '/ui/common/images/UI/iPhone_TopBar_asset.png', top : 0, width : '100%', height : windowHeight * .10 }); var topText = Ti.UI.createLabel({ top : 0, width : '100%', height : windowHeight * .10, color : 'white', text : 'Add Witness', textAlign : Ti.UI.TEXT_ALIGNMENT_CENTER, font : { fontSize : '30sp' } }); //scrollable view var scrollView = Ti.UI.createScrollView({ contentWidth : 'auto', contentHeight : 'auto', showVerticalScrollIndicator : true, top : '10%', layout : 'vertical' }); /************************ ****** First Name ****** ************************/ var firstNameField = Ti.UI.createTextField({ borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED, hintText : 'First Name', top : '3%', left : setLeft, width : setWidth, height : setHeight, }); //fixes keyboard on open var first = true; firstNameField.addEventListener('focus', function f(e) { if (first) { first = false; firstNameField.blur(); } else { firstNameField.removeEventListener('focus', f); } }); /*********************** ****** Last Name ****** ***********************/ var lastNameField = Ti.UI.createTextField({ borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED, hintText : 'Last Name', top : '1%', left : setLeft, width : setWidth, height : setHeight, }); /************************* ****** Role Picker ****** *************************/ var rolePicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); //Database Calls for roles db.Connect('ccisd_mobile', '/ui/common/ccisd_mobile.db'); db.Query('SELECT * FROM PersonType'); db.Close(); var roleData = db.getRoleArray(); rolePicker.add(roleData); rolePicker.selectionIndicator = true; /*************************** ****** Gender Picker ****** ***************************/ var genderPicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); var genderData = []; genderData[0] = Ti.UI.createPickerRow({ title : 'Gender: ', id : 0 }); genderData[1] = Ti.UI.createPickerRow({ title : 'Male', id : 1 }); genderData[2] = Ti.UI.createPickerRow({ title : 'Female', id : 2 }); genderPicker.add(genderData); genderPicker.selectionIndicator = true; /************************** ****** Grade Picker ****** **************************/ var gradePicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); //Database Calls for grades db.Connect('ccisd_mobile', '/ui/common/ccisd_mobile.db'); db.Query('SELECT * FROM AttendeeGrade'); db.Close(); gradeData = db.getGradeArray(); gradePicker.add(gradeData); gradePicker.selectionIndicator = true; /******************************** ****** Know Person Picker ****** ********************************/ var knowPersonPicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); var knowPersonData = []; knowPersonData[0] = Ti.UI.createPickerRow({ title : 'Do you know this person?:', id : 0 }); knowPersonData[1] = Ti.UI.createPickerRow({ title : 'Yes', id : 1 }); knowPersonData[2] = Ti.UI.createPickerRow({ title : 'No', id : 2 }); knowPersonPicker.add(knowPersonData); knowPersonPicker.selectionIndicator = true; /******************************* ****** Ethinicity Picker ****** ******************************/ var ethnicityPicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); //Database Calls for ethnicity db.Connect('ccisd_mobile', '/ui/common/ccisd_mobile.db'); db.Query('SELECT * FROM AttendeeEthnicity'); db.Close(); var ethnicityData = db.getEthnicityArray(); ethnicityPicker.add(ethnicityData); ethnicityPicker.selectionIndicator = true; /*************************** ****** Where Picker ****** ***************************/ var campusPicker = Ti.UI.createPicker({ top : '1%', width : setWidth, height : setHeight, }); var whereData = []; //Database Calls for campus db.Connect('ccisd_mobile', '/ui/common/ccisd_mobile.db'); db.Query('SELECT * FROM IncidentBuilding'); db.Close(); whereData = db.getCampusArray(); campusPicker.add(whereData); campusPicker.selectionIndicator = true; /************************* ****** Description ****** *************************/ var personDescriptionTextArea = Ti.UI.createTextArea({ textAlign : 'left', hintText : 'Please describe the incident and location (Cafeteria, Hallway, Restroom, Playground, etc)', top : '1%', width : setWidth, height : 200 }); /********************************** ****** Check if Edit Person ****** **********************************/ if (witnessIndex != null) { firstNameField.value = witnessData[witnessIndex].firstName; lastNameField.value = witnessData[witnessIndex].lastName; rolePicker.setSelectedRow(0, witnessData[witnessIndex].roleRow); genderPicker.setSelectedRow(0, witnessData[witnessIndex].genderRow); gradePicker.setSelectedRow(0, witnessData[witnessIndex].gradeRow); knowPersonPicker.setSelectedRow(0, witnessData[witnessIndex].knowPersonRow); ethnicityPicker.setSelectedRow(0, witnessData[witnessIndex].raceRow); campusPicker.setSelectedRow(0, witnessData[witnessIndex].campusRow); personDescriptionTextArea.value = witnessData[witnessIndex].description; } /*************************** ****** Submit Button ****** ***************************/ var submitBtn = Titanium.UI.createButton({ width : setWidth, //define the width of button height : setHeight, //define height of the button backgroundColor : '#57B057', font : { fontSize : '18sp', fontWeight : 'bold' }, title : 'Submit', //Define the text on button color : '#fff', borderRadius : 5, top : '1%', bottom : '10%' }); //switch button function if (witnessIndex != null) { submitBtn.title = "Save"; } submitBtn.addEventListener('click', function(e) { //data validation if (rolePicker.getSelectedRow(0).getTitle() !== 'Role: ' && genderPicker.getSelectedRow(0).getTitle() !== 'Gender: ' && ethnicityPicker.getSelectedRow(0).getTitle() !== 'Ethnicity: ' && campusPicker.getSelectedRow(0).getTitle() !== 'Campus: ') { var dialog = Ti.UI.createAlertDialog({ cancel : 1, buttonNames : ['Submit', 'Cancel'], message : 'Are you sure you want to submit?', title : 'Submit Person' }); dialog.addEventListener('click', function(e) { if (e.index === e.source.cancel) { //do nothing } else { //switch button function if (witnessIndex != null) { //saving values of text fields to variables witnessData[witnessIndex] = { firstName : firstNameField.value === 'First Name' ? null : firstNameField.value, lastName : lastNameField.value === 'Last Name' ? null : lastNameField.value, role : rolePicker.getSelectedRow(0).getTitle(), //required roleRow : rolePicker.getSelectedRow(0).id, gender : genderPicker.getSelectedRow(0).getTitle(), //required genderRow : genderPicker.getSelectedRow(0).id, grade : gradePicker.getSelectedRow(0).getTitle() === 'Grade' ? null : gradePicker.getSelectedRow(0).getTitle(), gradeRow : gradePicker.getSelectedRow(0).id, knowPerson : knowPersonPicker.getSelectedRow(0).getTitle(), knowPersonRow : knowPersonPicker.getSelectedRow(0).id, race : ethnicityPicker.getSelectedRow(0).getTitle(), //required raceRow : ethnicityPicker.getSelectedRow(0).id, campus : campusPicker.getSelectedRow(0).getTitle(), //required campusRow : campusPicker.getSelectedRow(0).id, description : personDescriptionTextArea.value === 'Please describe the incident and location (Cafeteria, Hallway, Restroom, Playground, etc)' ? null : personDescriptionTextArea.value }; //rename picker row if name/role changed witnessTable[witnessIndex + 1].title = firstNameField.value + ' - ' + rolePicker.getSelectedRow(0).getTitle(); } else { //saving values of text fields to variables witnessData.push({ firstName : firstNameField.value === 'First Name' ? null : firstNameField.value, lastName : lastNameField.value === 'Last Name' ? null : lastNameField.value, role : rolePicker.getSelectedRow(0).getTitle(), //required roleRow : rolePicker.getSelectedRow(0).id, gender : genderPicker.getSelectedRow(0).getTitle(), //required genderRow : genderPicker.getSelectedRow(0).id, grade : gradePicker.getSelectedRow(0).getTitle() === 'Grade' ? null : gradePicker.getSelectedRow(0).getTitle(), gradeRow : gradePicker.getSelectedRow(0).id, knowPerson : knowPersonPicker.getSelectedRow(0).getTitle(), knowPersonRow : knowPersonPicker.getSelectedRow(0).id, race : ethnicityPicker.getSelectedRow(0).getTitle(), //required raceRow : ethnicityPicker.getSelectedRow(0).id, campus : campusPicker.getSelectedRow(0).getTitle(), //required campusRow : campusPicker.getSelectedRow(0).id, description : personDescriptionTextArea.value === 'Please describe the incident and location (Cafeteria, Hallway, Restroom, Playground, etc)' ? null : personDescriptionTextArea.value }); //push person to witness table var thisPerson = Ti.UI.createPickerRow({ title : firstNameField.value + ' - ' + rolePicker.getSelectedRow(0).getTitle(), }); witnessTable.push(thisPerson); } Ti.App.fireEvent('closeAddBully'); } }); dialog.show(); } else { alert('Please enter all required information:\n\nRole, Gender, Ethnicity, Campus'); } }); /*************************** ****** Delete Button ****** ***************************/ if (witnessIndex != null) { submitBtn.setBottom(0); var deletePersonBtn = Titanium.UI.createButton({ width : setWidth, height : setHeight, backgroundColor : '#D0463F', font : { fontSize : '18sp', fontWeight : 'bold' }, title : 'Delete', color : '#fff', borderRadius : 5, top : '1.5%', bottom : '10%' }); deletePersonBtn.addEventListener('click', function(e) { var dialog = Ti.UI.createAlertDialog({ cancel : 1, buttonNames : ['Delete', 'Cancel'], message : 'Are you sure you want to delete?', title : 'Delete Person' }); dialog.addEventListener('click', function(e) { witnessData.splice(witnessIndex, 1); witnessTable.splice(witnessIndex + 1, 1); Ti.App.fireEvent('closeAddBully'); }); dialog.show(); }); } scrollView.add(firstNameField); scrollView.add(lastNameField); scrollView.add(rolePicker); scrollView.add(genderPicker); scrollView.add(gradePicker) scrollView.add(knowPersonPicker); scrollView.add(ethnicityPicker); scrollView.add(campusPicker); scrollView.add(personDescriptionTextArea); scrollView.add(submitBtn); if (witnessIndex != null) { scrollView.add(deletePersonBtn); } addbully.add(scrollView); addbully.add(topLabel); addbully.add(topText); return addbully; }; module.exports = addbully;