mirror of
https://github.com/wassname/DefinitelyTyped.git
synced 2026-08-31 11:40:47 +08:00
Update PhoneGap definitions and tests
This commit is contained in:
Vendored
+226
@@ -48,7 +48,233 @@ interface Camera {
|
||||
cleanup(cameraSuccess: (imageData: string) => void , cameraError: (message: string) => void ): void;
|
||||
}
|
||||
|
||||
interface CaptureAudioOptions {
|
||||
limit: number;
|
||||
duration: number;
|
||||
mode: number;
|
||||
}
|
||||
|
||||
interface MediaFile {
|
||||
name: string;
|
||||
fullPath: string;
|
||||
type: string;
|
||||
lastModifiedDate: Date;
|
||||
size: number;
|
||||
|
||||
getFormatData(successCallback: Function, errorCallback?: Function): void;
|
||||
}
|
||||
|
||||
interface Capture {
|
||||
captureAudio(captureSuccess: (mediaFiles: MediaFile[]) => void , captureError: (error: CaptureError) =>void , options?: CaptureAudioOptions);
|
||||
}
|
||||
|
||||
interface CompassOptions {
|
||||
frequency?: number;
|
||||
filter?: number;
|
||||
}
|
||||
|
||||
interface CompassHeading {
|
||||
magneticHeading?: number;
|
||||
trueHeading?: number;
|
||||
headingAccuracy?: number;
|
||||
timestamp?: number;
|
||||
}
|
||||
|
||||
interface CompassError {
|
||||
code: number;
|
||||
}
|
||||
|
||||
interface Compass {
|
||||
getCurrentHeading(compassSuccess: (heading: CompassHeading) => void , compassError: (error: CompassError) => void , compassOptions?: CompassOptions): void;
|
||||
watchHeading(compassSuccess: (heading: CompassHeading) => void , compassError: (error: CompassError) => void , compassOptions?: CompassOptions): void;
|
||||
clearWatch(watchID: number): void;
|
||||
}
|
||||
|
||||
interface Connection {
|
||||
type: number;
|
||||
}
|
||||
|
||||
interface ContactAddress {
|
||||
pref: bool;
|
||||
type: string;
|
||||
formatted: string;
|
||||
streetAddress: string;
|
||||
locality: string;
|
||||
region: string;
|
||||
postalCode: string;
|
||||
country: string;
|
||||
}
|
||||
|
||||
interface ContactField {
|
||||
type: string;
|
||||
value: string;
|
||||
pref: bool;
|
||||
}
|
||||
|
||||
interface Contact {
|
||||
id: string;
|
||||
displayName: string;
|
||||
name: ContactName;
|
||||
nickname: string;
|
||||
phoneNumbers: ContactField[];
|
||||
emails: ContactField[];
|
||||
addresses: ContactAddress[];
|
||||
ims: ContactField[];
|
||||
organizations: ContactOrganization[];
|
||||
birthday: Date;
|
||||
note: string;
|
||||
photos: ContactField[];
|
||||
categories: ContactField[];
|
||||
urls: ContactField[];
|
||||
}
|
||||
|
||||
interface ContactFindOptions {
|
||||
filter?: string;
|
||||
multiple?: bool;
|
||||
}
|
||||
|
||||
interface ContactName {
|
||||
formatted: string;
|
||||
familyName: string;
|
||||
givenName: string;
|
||||
middleName: string;
|
||||
honorificPrefix: string;
|
||||
honorificSuffix: string;
|
||||
}
|
||||
|
||||
interface ContactOrganization {
|
||||
pref: bool;
|
||||
type: string;
|
||||
name: string;
|
||||
department: string;
|
||||
title: string;
|
||||
}
|
||||
|
||||
interface ContactError {
|
||||
code: number;
|
||||
}
|
||||
|
||||
interface Contacts {
|
||||
create(properties: any): void;
|
||||
find(contactFields: string[], contactSuccess: (contacts: Contact[]) => void , contactError: (error: ContactError) => void , contactFindOptions?: ContactFindOptions): void;
|
||||
}
|
||||
|
||||
interface Device {
|
||||
name: string;
|
||||
cordova: string;
|
||||
platform: string;
|
||||
uuid: string;
|
||||
version: string;
|
||||
}
|
||||
|
||||
interface File {
|
||||
}
|
||||
|
||||
interface GeolocationOptions {
|
||||
enableHighAccuracy: bool;
|
||||
timeout: number;
|
||||
maximumAge: number;
|
||||
}
|
||||
|
||||
interface Geolocation {
|
||||
getCurrentPosition(geolocationSuccess: (position: Position) => void , geolocationError?: PositionErrorCallback, geolocationOptions?: GeolocationOptions): void;
|
||||
watchPosition(geolocationSuccess: (position: Position) => void , geolocationError?: PositionErrorCallback, geolocationOptions?: GeolocationOptions): void;
|
||||
clearWatch(watchID: number): void;
|
||||
}
|
||||
|
||||
interface GlobalizationError {
|
||||
code: number;
|
||||
message: string;
|
||||
}
|
||||
|
||||
interface Globalization {
|
||||
getPreferredLanguage(successCB, errorCB): void;
|
||||
getLocaleName(successCB, errorCB): void;
|
||||
dateToString(date, successCB, errorCB, options): void;
|
||||
stringToDate(dateString, successCB, errorCB, options): void;
|
||||
getDatePattern(successCB, errorCB, options): void;
|
||||
getDateNames(successCB, errorCB, options): void;
|
||||
isDayLightSavingsTime(date, successCB, errorCB): void;
|
||||
getFirstDayOfWeek(successCB, errorCB): void;
|
||||
numberToString(number, successCB, errorCB, options): void;
|
||||
stringToNumber(string, successCB, errorCB, options): void;
|
||||
getNumberPattern(successCB, errorCB, options): void;
|
||||
getCurrencyPattern(currencyCode, successCB, errorCB): void;
|
||||
}
|
||||
|
||||
interface Media {
|
||||
new (src: string, mediaSuccess: Function, mediaError?: MediaError, mediaStatus?: Function);
|
||||
getCurrentPosition(mediaSuccess: Function, mediaError?: MediaError): void;
|
||||
getDuration(): void;
|
||||
play(): void;
|
||||
pause(): void;
|
||||
release(): void;
|
||||
seekTo(milliseconds: number): void;
|
||||
startRecord(): void;
|
||||
stopRecord(): void;
|
||||
stop(): void;
|
||||
}
|
||||
|
||||
interface Notification {
|
||||
alert(message: string, alertCallback: Function, title?: string, buttonName?: string): void;
|
||||
confirm(message: string, confirmCallback: Function, title?: string, buttonLabels?: string): void;
|
||||
beep(times: number): void;
|
||||
vibrate(milliseconds: number): void;
|
||||
}
|
||||
|
||||
interface Splashscreen {
|
||||
show(): void;
|
||||
hide(): void;
|
||||
}
|
||||
|
||||
interface Database {
|
||||
transaction();
|
||||
changeVersion();
|
||||
}
|
||||
|
||||
interface SQLResultSetRowList {
|
||||
length: number;
|
||||
item(index: number): any;
|
||||
}
|
||||
|
||||
interface SQLError {
|
||||
code: number;
|
||||
message: string;
|
||||
}
|
||||
|
||||
interface SQLResultSet {
|
||||
insertId: number;
|
||||
rowsAffected: number;
|
||||
rows: SQLResultSetRowList;
|
||||
}
|
||||
|
||||
interface SQLTransaction {
|
||||
executeSql(sql: string): SQLResultSet;
|
||||
}
|
||||
|
||||
interface LocalStorage {
|
||||
key;
|
||||
getItem;
|
||||
setItem;
|
||||
removeItem;
|
||||
clear;
|
||||
}
|
||||
|
||||
interface NavigatorPhonegap {
|
||||
accelerometer: Accelerometer;
|
||||
camera: Camera;
|
||||
capture: Capture;
|
||||
compass: Compass;
|
||||
connection: Connection;
|
||||
contacts: Contacts;
|
||||
device: Device;
|
||||
geolocation: Geolocation;
|
||||
globalization: Globalization;
|
||||
notification: Notification;
|
||||
splashscreen: Splashscreen;
|
||||
}
|
||||
|
||||
interface WindowPhonegap {
|
||||
openDatabase(database_name: string, database_version: string, database_displayname: string, database_size: number): Database;
|
||||
localStorage: LocalStorage;
|
||||
}
|
||||
@@ -38,6 +38,7 @@ Complete
|
||||
* [Node.js](http://nodejs.org/) (from TypeScript samples)
|
||||
* [node_redis](https://github.com/mranney/node_redis)
|
||||
* [node-sqlserver](https://github.com/WindowsAzure/node-sqlserver)
|
||||
* [PhoneGap](http://phonegap.com)
|
||||
* [PreloadJS](http://www.createjs.com/#!/PreloadJS) (by [Pedro Ferreira](https://bitbucket.org/drk4))
|
||||
* [QUnit](http://qunitjs.com/) (by [Diullei Gomes](https://github.com/Diullei))
|
||||
* [Raphael](http://raphaeljs.com/) (by [CheCoxshall](https://github.com/CheCoxshall))
|
||||
@@ -54,7 +55,6 @@ Next
|
||||
* jQuery.Validate
|
||||
* google.visualization
|
||||
* Meteor
|
||||
* PhoneGap
|
||||
* Isotope
|
||||
* Zepto
|
||||
* Socket.IO
|
||||
|
||||
@@ -76,4 +76,340 @@ function test_camera() {
|
||||
function onFail(message) {
|
||||
alert('Failed because: ' + message);
|
||||
}
|
||||
}
|
||||
|
||||
function test_capture() {
|
||||
var capture = navigator.device.capture;
|
||||
function captureSuccess(mediaFiles) {
|
||||
var i, len;
|
||||
for (i = 0, len = mediaFiles.length; i < len; i += 1) {
|
||||
uploadFile(mediaFiles[i]);
|
||||
}
|
||||
}
|
||||
function captureError(error) {
|
||||
var msg = 'An error occurred during capture: ' + error.code;
|
||||
navigator.notification.alert(msg, null, 'Uh oh!');
|
||||
}
|
||||
function captureAudio() {
|
||||
navigator.device.capture.captureAudio(captureSuccess, captureError, { limit: 2 });
|
||||
}
|
||||
function uploadFile(mediaFile) {
|
||||
var ft = new FileTransfer(),
|
||||
path = mediaFile.fullPath,
|
||||
name = mediaFile.name;
|
||||
ft.upload(path,
|
||||
"http://my.domain.com/upload.php",
|
||||
function (result) {
|
||||
console.log('Upload success: ' + result.responseCode);
|
||||
console.log(result.bytesSent + ' bytes sent');
|
||||
},
|
||||
function (error) {
|
||||
console.log('Error uploading file ' + path + ': ' + error.code);
|
||||
},
|
||||
{ fileName: name });
|
||||
}
|
||||
var options = { limit: 3, duration: 10 };
|
||||
navigator.device.capture.captureAudio(captureSuccess, captureError, options);
|
||||
var captureSuccess = function (mediaFiles) {
|
||||
var i, path, len;
|
||||
for (i = 0, len = mediaFiles.length; i < len; i += 1) {
|
||||
path = mediaFiles[i].fullPath;
|
||||
}
|
||||
};
|
||||
var captureError = function (error) {
|
||||
navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
|
||||
};
|
||||
navigator.device.capture.captureImage(captureSuccess, captureError, { limit: 2 });
|
||||
function captureSuccess(mediaFiles) {
|
||||
var i, len;
|
||||
for (i = 0, len = mediaFiles.length; i < len; i += 1) {
|
||||
uploadFile(mediaFiles[i]);
|
||||
}
|
||||
}
|
||||
function captureError(error) {
|
||||
var msg = 'An error occurred during capture: ' + error.code;
|
||||
navigator.notification.alert(msg, null, 'Uh oh!');
|
||||
}
|
||||
function captureImage() {
|
||||
navigator.device.capture.captureImage(captureSuccess, captureError, { limit: 2 });
|
||||
}
|
||||
function uploadFile(mediaFile) {
|
||||
var ft = new FileTransfer(),
|
||||
path = mediaFile.fullPath,
|
||||
name = mediaFile.name;
|
||||
|
||||
ft.upload(path,
|
||||
"http://my.domain.com/upload.php",
|
||||
function (result) {
|
||||
console.log('Upload success: ' + result.responseCode);
|
||||
console.log(result.bytesSent + ' bytes sent');
|
||||
},
|
||||
function (error) {
|
||||
console.log('Error uploading file ' + path + ': ' + error.code);
|
||||
},
|
||||
{ fileName: name });
|
||||
}
|
||||
function captureSuccess(mediaFiles) {
|
||||
var i, len;
|
||||
for (i = 0, len = mediaFiles.length; i < len; i += 1) {
|
||||
uploadFile(mediaFiles[i]);
|
||||
}
|
||||
}
|
||||
function captureError(error) {
|
||||
var msg = 'An error occurred during capture: ' + error.code;
|
||||
navigator.notification.alert(msg, null, 'Uh oh!');
|
||||
}
|
||||
function captureVideo() {
|
||||
navigator.device.capture.captureVideo(captureSuccess, captureError, { limit: 2 });
|
||||
}
|
||||
function uploadFile(mediaFile) {
|
||||
var ft = new FileTransfer(),
|
||||
path = mediaFile.fullPath,
|
||||
name = mediaFile.name;
|
||||
|
||||
ft.upload(path,
|
||||
"http://my.domain.com/upload.php",
|
||||
function (result) {
|
||||
console.log('Upload success: ' + result.responseCode);
|
||||
console.log(result.bytesSent + ' bytes sent');
|
||||
},
|
||||
function (error) {
|
||||
console.log('Error uploading file ' + path + ': ' + error.code);
|
||||
},
|
||||
{ fileName: name });
|
||||
}
|
||||
}
|
||||
|
||||
function test_compass() {
|
||||
document.addEventListener("deviceready", onDeviceReady, false);
|
||||
function onDeviceReady() {
|
||||
navigator.compass.getCurrentHeading(onSuccess, onError);
|
||||
}
|
||||
function onSuccess(heading) {
|
||||
alert('Heading: ' + heading.magneticHeading);
|
||||
}
|
||||
function onError(compassError) {
|
||||
alert('Compass Error: ' + compassError.code);
|
||||
}
|
||||
var watchID = null;
|
||||
|
||||
|
||||
document.addEventListener("deviceready", onDeviceReady, false);
|
||||
function onDeviceReady() {
|
||||
startWatch();
|
||||
}
|
||||
function startWatch() {
|
||||
var options = { frequency: 3000 };
|
||||
watchID = navigator.compass.watchHeading(onSuccess, onError, options);
|
||||
}
|
||||
function stopWatch() {
|
||||
if (watchID) {
|
||||
navigator.compass.clearWatch(watchID);
|
||||
watchID = null;
|
||||
}
|
||||
}
|
||||
function onSuccess(heading) {
|
||||
var element = document.getElementById('heading');
|
||||
element.innerHTML = 'Heading: ' + heading.magneticHeading;
|
||||
}
|
||||
function onError(compassError) {
|
||||
alert('Compass error: ' + compassError.code);
|
||||
}
|
||||
|
||||
function startWatch() {
|
||||
var options = { frequency: 3000 };
|
||||
watchID = navigator.compass.watchHeading(onSuccess, onError, options);
|
||||
}
|
||||
function stopWatch() {
|
||||
if (watchID) {
|
||||
navigator.compass.clearWatch(watchID);
|
||||
watchID = null;
|
||||
}
|
||||
}
|
||||
function onSuccess(heading) {
|
||||
var element = document.getElementById('heading');
|
||||
element.innerHTML = 'Heading: ' + heading.magneticHeading;
|
||||
}
|
||||
function onError(compassError) {
|
||||
alert('Compass error: ' + compassError.code);
|
||||
}
|
||||
}
|
||||
|
||||
function test_connection() {
|
||||
var networkState = navigator.connection.type;
|
||||
var states = {};
|
||||
states[Connection.UNKNOWN] = 'Unknown connection';
|
||||
states[Connection.ETHERNET] = 'Ethernet connection';
|
||||
states[Connection.WIFI] = 'WiFi connection';
|
||||
states[Connection.CELL_2G] = 'Cell 2G connection';
|
||||
states[Connection.CELL_3G] = 'Cell 3G connection';
|
||||
states[Connection.CELL_4G] = 'Cell 4G connection';
|
||||
states[Connection.NONE] = 'No network connection';
|
||||
alert('Connection type: ' + states[networkState]);
|
||||
}
|
||||
|
||||
function test_contacts() {
|
||||
var myContact = navigator.contacts.create({ "displayName": "Test User" });
|
||||
myContact.note = "This contact has a note.";
|
||||
console.log("The contact, " + myContact.displayName + ", note: " + myContact.note);
|
||||
|
||||
function onDeviceReady() {
|
||||
var options = new ContactFindOptions();
|
||||
options.filter = "Bob";
|
||||
var fields = ["displayName", "name"];
|
||||
navigator.contacts.find(fields, onSuccess, onError, options);
|
||||
}
|
||||
function onSuccess(contacts) {
|
||||
for (var i = 0; i < contacts.length; i++) {
|
||||
console.log("Display Name = " + contacts[i].displayName);
|
||||
}
|
||||
}
|
||||
function onError(contactError) {
|
||||
alert('onError!');
|
||||
}
|
||||
|
||||
var contact = navigator.contacts.create();
|
||||
contact.displayName = "Plumber";
|
||||
contact.nickname = "Plumber";
|
||||
var name = new ContactName();
|
||||
name.givenName = "Jane";
|
||||
name.familyName = "Doe";
|
||||
contact.name = name;
|
||||
contact.save(onSuccess, onError);
|
||||
|
||||
var clone = contact.clone();
|
||||
clone.name.givenName = "John";
|
||||
console.log("Original contact name = " + contact.name.givenName);
|
||||
console.log("Cloned contact name = " + clone.name.givenName);
|
||||
contact.remove(onSuccess, onError);
|
||||
|
||||
function onDeviceReady() {
|
||||
var contact = navigator.contacts.create();
|
||||
contact.displayName = "Plumber";
|
||||
contact.nickname = "Plumber";
|
||||
var name = new ContactName();
|
||||
name.givenName = "Jane";
|
||||
name.familyName = "Doe";
|
||||
contact.name = name;
|
||||
contact.save(onSuccess, onError);
|
||||
var clone = contact.clone();
|
||||
clone.name.givenName = "John";
|
||||
console.log("Original contact name = " + contact.name.givenName);
|
||||
console.log("Cloned contact name = " + clone.name.givenName);
|
||||
contact.remove(onSuccess, onError);
|
||||
}
|
||||
|
||||
var options = new ContactFindOptions();
|
||||
options.filter = "";
|
||||
var filter = ["displayName", "addresses"];
|
||||
navigator.contacts.find(filter, onSuccess, onError, options);
|
||||
|
||||
for (var i = 0; i < contacts.length; i++) {
|
||||
for (var j = 0; j < contacts[i].addresses.length; j++) {
|
||||
alert("Pref: " + contacts[i].addresses[j].pref + "\n" +
|
||||
"Type: " + contacts[i].addresses[j].type + "\n" +
|
||||
"Formatted: " + contacts[i].addresses[j].formatted + "\n" +
|
||||
"Street Address: " + contacts[i].addresses[j].streetAddress + "\n" +
|
||||
"Locality: " + contacts[i].addresses[j].locality + "\n" +
|
||||
"Region: " + contacts[i].addresses[j].region + "\n" +
|
||||
"Postal Code: " + contacts[i].addresses[j].postalCode + "\n" +
|
||||
"Country: " + contacts[i].addresses[j].country);
|
||||
}
|
||||
}
|
||||
|
||||
var contact = navigator.contacts.create();
|
||||
var phoneNumbers = [];
|
||||
phoneNumbers[0] = new ContactField('work', '212-555-1234', false);
|
||||
phoneNumbers[1] = new ContactField('mobile', '917-555-5432', true); // preferred number
|
||||
phoneNumbers[2] = new ContactField('home', '203-555-7890', false);
|
||||
contact.phoneNumbers = phoneNumbers;
|
||||
contact.save();
|
||||
|
||||
var options = new ContactFindOptions();
|
||||
options.filter = "";
|
||||
options.multiple = true;
|
||||
filter = ["displayName"];
|
||||
navigator.contacts.find(filter, onSuccess, onError, options);
|
||||
}
|
||||
|
||||
function test_device() {
|
||||
element.innerHTML = 'Device Name: ' + device.name + '<br />' +
|
||||
'Device Cordova: ' + device.cordova + '<br />' +
|
||||
'Device Platform: ' + device.platform + '<br />' +
|
||||
'Device UUID: ' + device.uuid + '<br />' +
|
||||
'Device Version: ' + device.version + '<br />';
|
||||
}
|
||||
|
||||
function test_file() {
|
||||
function onDeviceReady() {
|
||||
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
|
||||
}
|
||||
function gotFS(fileSystem) {
|
||||
fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);
|
||||
}
|
||||
function gotFileEntry(fileEntry) {
|
||||
fileEntry.file(gotFile, fail);
|
||||
}
|
||||
function gotFile(file) {
|
||||
readDataUrl(file);
|
||||
readAsText(file);
|
||||
}
|
||||
function readDataUrl(file) {
|
||||
var reader = new FileReader();
|
||||
reader.onloadend = function (evt) {
|
||||
console.log("Read as data URL");
|
||||
console.log(evt.target.result);
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
}
|
||||
function readAsText(file) {
|
||||
var reader = new FileReader();
|
||||
reader.onloadend = function (evt) {
|
||||
console.log("Read as text");
|
||||
console.log(evt.target.result);
|
||||
};
|
||||
reader.readAsText(file);
|
||||
}
|
||||
function fail(evt) {
|
||||
console.log(evt.target.error.code);
|
||||
}
|
||||
|
||||
function onDeviceReady() {
|
||||
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
|
||||
}
|
||||
function gotFS(fileSystem) {
|
||||
fileSystem.root.getFile("readme.txt", { create: true, exclusive: false }, gotFileEntry, fail);
|
||||
}
|
||||
function gotFileEntry(fileEntry) {
|
||||
fileEntry.createWriter(gotFileWriter, fail);
|
||||
}
|
||||
function gotFileWriter(writer) {
|
||||
writer.onwriteend = function (evt) {
|
||||
console.log("contents of file now 'some sample text'");
|
||||
writer.truncate(11);
|
||||
writer.onwriteend = function (evt) {
|
||||
console.log("contents of file now 'some sample'");
|
||||
writer.seek(4);
|
||||
writer.write(" different text");
|
||||
writer.onwriteend = function (evt) {
|
||||
console.log("contents of file now 'some different text'");
|
||||
}
|
||||
};
|
||||
};
|
||||
writer.write("some sample text");
|
||||
}
|
||||
function fail(error) {
|
||||
console.log(error.code);
|
||||
}
|
||||
|
||||
function onDeviceReady() {
|
||||
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
|
||||
}
|
||||
function onFileSystemSuccess(fileSystem) {
|
||||
console.log(fileSystem.name);
|
||||
console.log(fileSystem.root.name);
|
||||
}
|
||||
function fail(evt) {
|
||||
console.log(evt.target.error.code);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user