|
|
@@ -0,0 +1,253 @@ |
|
|
|
|
|
var uiODataSimple = (function() { |
|
|
|
|
|
var API = {}; |
|
|
|
|
|
API.DataJS = require('ti.datajs'); |
|
|
API.collectionCache = null; |
|
|
|
|
|
API.useXMLNotJSON = true; |
|
|
API.dataType = API.useXMLNotJSON ? 'application/atom+xml' : 'application/json'; |
|
|
API.queryString = '=xml'; |
|
|
|
|
|
API.baseURL = 'http://gw.esworkplace.sap.com/sap/opu/odata/IWBEP/RMTSAMPLEFLIGHT_2'; |
|
|
API.collectionURL = API.baseURL + '/FlightCollection/'; |
|
|
API.pageSize = 20; |
|
|
|
|
|
API.credentials = { |
|
|
user: 'GW@ESW', |
|
|
password: 'ESW4GW' |
|
|
};//end credentials |
|
|
|
|
|
API.init = function(opts){ |
|
|
|
|
|
API.collectionCache = API.DataJS.datajs.createDataCache({ |
|
|
name: 'odataCollectionCache', |
|
|
source: API.collectionURL, |
|
|
pageSize: API.pageSize, |
|
|
headers: { Accept: API.dataType }, |
|
|
formatQueryString: API.queryString, |
|
|
user: API.credentials.user, |
|
|
password: API.credentials.password |
|
|
});//end odataCollectionCache |
|
|
|
|
|
};//end init |
|
|
|
|
|
API.getCollection = function (success, error) { |
|
|
API.DataJS.OData.read({ |
|
|
requestUri: API.collectionURL, |
|
|
headers: { Accept: API.dataType }, |
|
|
formatQueryString: API.queryString, |
|
|
user: API.credentials.user, |
|
|
password: API.credentials.password |
|
|
}, |
|
|
function (data, response) { if (typeof success === "function") { success(data.results); } }, |
|
|
function (err) { if (typeof error === "function") { error(err); } } |
|
|
); ///end read |
|
|
};//end getCollection |
|
|
|
|
|
|
|
|
API.factoryTableViewCell = function( data ) |
|
|
{ |
|
|
var row = Ti.UI.createTableViewRow({ |
|
|
hasChild: true, |
|
|
className: 'FlightItem', |
|
|
flight: data |
|
|
}); |
|
|
|
|
|
var title = Ti.UI.createLabel({ |
|
|
text: "Ariline ID: " + data.AirLineID + " ",// + data.connectionID, |
|
|
font: { fontWeight: 'bold', fontSize:14 }, |
|
|
top: 4, left: 4, width: 'auto', height: 'auto' |
|
|
}); |
|
|
|
|
|
var fromTo = Ti.UI.createLabel({ |
|
|
text: data.FlightDetails.DepartureAirPort + " to " + data.FlightDetails.DestinationAirPort, |
|
|
color: 'gray', |
|
|
font: { fontSize: 12 }, |
|
|
top: 22, left: 4, width: 'auto', height: 'auto' |
|
|
}); |
|
|
|
|
|
var fare = Ti.UI.createLabel({ |
|
|
text: "fare: " + data.AirFare, |
|
|
color: 'gray', |
|
|
font: { fontSize: 12 }, |
|
|
top: 4, right: 4, width: 'auto', height: 'auto' |
|
|
}); |
|
|
|
|
|
row.add(title); |
|
|
row.add(fromTo); |
|
|
row.add(fare); |
|
|
|
|
|
return row; |
|
|
};//end factoryTableViewCell |
|
|
|
|
|
API.factoryView = function(opts){ |
|
|
|
|
|
var topView = Ti.UI.createView({}); |
|
|
var tableView = Titanium.UI.createTableView({}); |
|
|
|
|
|
function handleSuccess (flightCollection) { |
|
|
var tableCells = []; |
|
|
var numFlights = flightCollection.length; |
|
|
|
|
|
for (var i = 0; i < numFlights; i++) { |
|
|
tableCells.push(API.factoryTableViewCell(flightCollection[i])); |
|
|
}//end for |
|
|
|
|
|
tableView.setData(tableCells); |
|
|
}//end handleSuccess |
|
|
|
|
|
function handleError (error) { alert(error.message); } |
|
|
|
|
|
API.getCollection(handleSuccess, handleError); |
|
|
|
|
|
// create table view event listener |
|
|
tableView.addEventListener('click', function(e) |
|
|
{ |
|
|
API.showDetailWindow({flight:e.rowData.flight}); |
|
|
});//end click |
|
|
|
|
|
topView.add( tableView ); |
|
|
return topView; |
|
|
};//end factoryView |
|
|
|
|
|
API.showDetailWindow = function(args){ |
|
|
|
|
|
var t = Titanium.UI.create2DMatrix(); t = t.scale(0); |
|
|
|
|
|
var win = Titanium.UI.createWindow({ |
|
|
backgroundColor:"#781717",//'#336699', |
|
|
borderWidth:2, |
|
|
borderColor:'#777', //height:500, //width:400, |
|
|
borderRadius:10, |
|
|
opacity:0.92, |
|
|
transform:t |
|
|
}); |
|
|
|
|
|
// create first transform to go beyond normal size |
|
|
var t1 = Titanium.UI.create2DMatrix(); t1 = t1.scale(1.1); |
|
|
var a = Titanium.UI.createAnimation(); a.transform = t1; a.duration = 200; |
|
|
|
|
|
// when this animation completes, scale to normal size |
|
|
a.addEventListener('complete', function() |
|
|
{ |
|
|
Titanium.API.info('here in complete'); |
|
|
var t2 = Titanium.UI.create2DMatrix(); |
|
|
t2 = t2.scale(1.0); |
|
|
win.animate({transform:t2, duration:200}); |
|
|
});//end addEventListener |
|
|
|
|
|
var sectionTitles = [ |
|
|
'Flight Information', |
|
|
'Flight Details', |
|
|
'Flight Bookings', |
|
|
'Operations' |
|
|
]; |
|
|
|
|
|
var items = [ |
|
|
{ section: 0, text: 'Flight:', label: 'flight' }, |
|
|
{ section: 0, text: 'From/To:', label: 'fromTo' }, |
|
|
{ section: 0, text: 'Fare:', label: 'fare' }, |
|
|
{ section: 1, text: 'Departure:', label: 'departureCity' }, |
|
|
{ section: 1, text: 'Destination:', label: 'destinationCity' }, |
|
|
{ section: 1, text: 'Departs:', label: 'departureTime' }, |
|
|
{ section: 1, text: 'Arrives:', label: 'arrivalTime' }, |
|
|
{ section: 3, text: 'Close', operation: 'close' } |
|
|
]; |
|
|
|
|
|
var sections = []; |
|
|
var cnt = items.length; |
|
|
var currentSection = -1; |
|
|
|
|
|
var topView = Ti.UI.createView(); |
|
|
|
|
|
for (var i = 0; i < cnt; i++) { |
|
|
|
|
|
if (items[i].section != currentSection) { |
|
|
currentSection = items[i].section; |
|
|
sections[currentSection] = Ti.UI.createTableViewSection({ |
|
|
headerTitle: sectionTitles[currentSection] |
|
|
}); |
|
|
} |
|
|
|
|
|
var row = Ti.UI.createTableViewRow({ |
|
|
backgroundColor: 'white' |
|
|
}); |
|
|
|
|
|
// If a 'label' is specified then create 2 label controls: title of the field and the property Otherwise, if a 'clickUri' is specified then create a single label |
|
|
if (items[i].label) { |
|
|
row.add(Ti.UI.createLabel({ |
|
|
text: items[i].text, |
|
|
textAlign: 'left', |
|
|
font: { fontWeight: 'bold' }, |
|
|
left: 8, width: 120, height: 40 |
|
|
})); |
|
|
|
|
|
topView[items[i].label] = Ti.UI.createLabel({ |
|
|
text: "", |
|
|
textAlign: 'right', |
|
|
font: { fontWeight: 'normal' }, |
|
|
right: 8, width: 160, height: 40 |
|
|
}); |
|
|
row.add(topView[items[i].label]); |
|
|
|
|
|
sections[currentSection].add(row); |
|
|
} |
|
|
else if (items[i].clickUri) { |
|
|
row.hasDetail = true; |
|
|
row.title = items[i].text; |
|
|
var clickUri = items[i].clickUri; |
|
|
row.addEventListener('click', function(e) { |
|
|
alert("Clicked on link") |
|
|
Ti.API.info("Need to make oData request: " + uri); |
|
|
}); |
|
|
sections[currentSection].add(row); |
|
|
}//end else if |
|
|
else if (items[i].operation) { |
|
|
row.hasDetail = true; |
|
|
row.title = items[i].text; |
|
|
row.addEventListener('click', function(e) { |
|
|
var t3 = Titanium.UI.create2DMatrix(); t3 = t3.scale(0); |
|
|
win.close({transform:t3,duration:300}); |
|
|
}); |
|
|
sections[currentSection].add(row); |
|
|
}//end else if Operation |
|
|
|
|
|
}///end for |
|
|
|
|
|
var tableView = Ti.UI.createTableView({ data: sections }); |
|
|
win.add(tableView); |
|
|
|
|
|
//update the fields |
|
|
topView.flight.text = args.flight.AirLineID + " " + args.flight.FlightConnectionID; |
|
|
topView.fromTo.text = args.flight.FlightDetails.DepartureAirPort + " to " + args.flight.FlightDetails.DestinationAirPort; |
|
|
topView.fare.text = "fare: " + args.flight.AirFare; |
|
|
topView.departureCity.text = args.flight.FlightDetails.DepartureCity.toUpperCase(); |
|
|
topView.destinationCity.text = args.flight.FlightDetails.DestinationCity.toUpperCase(); |
|
|
topView.departureTime.text = args.flight.FlightDetails.DepartureTime; |
|
|
topView.arrivalTime.text = args.flight.FlightDetails.ArrivalTime; |
|
|
topView.flightBooking = args.flight.FlightBooking.__deferred.uri; |
|
|
topView.flightBookings = args.flight.FlightBookings.__deferred.uri; |
|
|
topView.carrier = args.flight.FlightBookings.__deferred.uri; |
|
|
|
|
|
win.open(a); |
|
|
};//end showDetailWindow |
|
|
|
|
|
API.factoryWindow = function(options){ |
|
|
var win = Ti.UI.createWindow({title:'OData'}); |
|
|
win.add( API.factoryView( options ) ); |
|
|
return win; |
|
|
};//end factoryWindow |
|
|
|
|
|
return API; |
|
|
})(); //end uiODataSimple |
|
|
|
|
|
uiODataSimple.init(); |
|
|
Ti.UI.currentWindow.add( uiODataSimple.factoryView({}) ); |
|
|
//uiODataSimple.factoryWindow({}).open({modal:true}); |
|
|
//uiODataSimple.factoryWindow({}).open({fullscreen:true}); |
|
|
//exports = uiODataSimple |
|
|
|
|
|
|
|
|
|