mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2026-08-11 20:40:20 +00:00
Merge pull request #1 from DefinitelyTyped/master
Merging master into this branch
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[{*.json,*.yml}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
+3
-6
@@ -13,6 +13,7 @@
|
||||
*.map
|
||||
*.swp
|
||||
.DS_Store
|
||||
npm-debug.log
|
||||
|
||||
_Resharper.DefinitelyTyped
|
||||
bin
|
||||
@@ -28,13 +29,9 @@ _infrastructure/tests/build
|
||||
.idea
|
||||
*.iml
|
||||
*.js.map
|
||||
|
||||
#rx.js
|
||||
!rx.js
|
||||
|
||||
#zip.js
|
||||
!zip.js
|
||||
!*.js/
|
||||
|
||||
node_modules
|
||||
|
||||
.sublimets
|
||||
.settings/launch.json
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- "0.10"
|
||||
- 4
|
||||
|
||||
sudo: false
|
||||
|
||||
|
||||
+730
-96
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,180 @@
|
||||
/// <reference path="DataStream.js.d.ts" />
|
||||
|
||||
var buf = new ArrayBuffer(100);
|
||||
var ds = new DataStream(buf);
|
||||
ds = new DataStream(buf, 10);
|
||||
ds = new DataStream(buf, 10, DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.save('somefile.ext');
|
||||
ds.dynamicSize = true;
|
||||
|
||||
for (var i=0; i<ds.byteLength; i++) {
|
||||
}
|
||||
|
||||
ds.buffer = buf;
|
||||
ds.byteOffset = 10;
|
||||
ds.seek(0);
|
||||
ds.isEof();
|
||||
|
||||
var int32arr: Int32Array;
|
||||
var int16arr: Int16Array;
|
||||
var int8arr: Int8Array;
|
||||
|
||||
var uint32arr: Uint32Array;
|
||||
var uint16arr: Uint16Array;
|
||||
var uint8arr: Uint8Array;
|
||||
|
||||
var float64arr: Float64Array;
|
||||
var float32arr: Float32Array;
|
||||
|
||||
var val: number;
|
||||
var str: string;
|
||||
|
||||
int32arr = ds.mapInt32Array(2);
|
||||
int32arr = ds.mapInt32Array(2, DataStream.LITTLE_ENDIAN);
|
||||
|
||||
int16arr = ds.mapInt16Array(2);
|
||||
int16arr = ds.mapInt16Array(2, DataStream.BIG_ENDIAN);
|
||||
|
||||
int8arr = ds.mapInt8Array(2);
|
||||
|
||||
uint32arr = ds.mapUint32Array(2);
|
||||
uint32arr = ds.mapUint32Array(2, DataStream.LITTLE_ENDIAN);
|
||||
|
||||
uint16arr = ds.mapUint16Array(2);
|
||||
uint16arr = ds.mapUint16Array(2, DataStream.BIG_ENDIAN);
|
||||
|
||||
uint8arr = ds.mapUint8Array(2);
|
||||
|
||||
float64arr = ds.mapFloat64Array(2);
|
||||
float64arr = ds.mapFloat64Array(2, DataStream.LITTLE_ENDIAN);
|
||||
|
||||
float32arr = ds.mapFloat32Array(2);
|
||||
float32arr = ds.mapFloat32Array(2, DataStream.BIG_ENDIAN);
|
||||
|
||||
int32arr = ds.readInt32Array(2);
|
||||
int32arr = ds.readInt32Array(2, DataStream.LITTLE_ENDIAN);
|
||||
|
||||
int16arr = ds.readInt16Array(2);
|
||||
int16arr = ds.readInt16Array(2, DataStream.BIG_ENDIAN);
|
||||
|
||||
int8arr = ds.readInt8Array(2);
|
||||
|
||||
uint32arr = ds.readUint32Array(2);
|
||||
uint32arr = ds.readUint32Array(2, DataStream.LITTLE_ENDIAN);
|
||||
|
||||
uint16arr = ds.readUint16Array(2);
|
||||
uint16arr = ds.readUint16Array(2, DataStream.BIG_ENDIAN);
|
||||
|
||||
uint8arr = ds.readUint8Array(2);
|
||||
|
||||
float64arr = ds.readFloat64Array(2);
|
||||
float64arr = ds.readFloat64Array(2, DataStream.LITTLE_ENDIAN);
|
||||
|
||||
float32arr = ds.readFloat32Array(2);
|
||||
float32arr = ds.readFloat32Array(2, DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.writeInt32Array(new Int32Array([1,2,3]));
|
||||
ds.writeInt32Array(new Int32Array([1,2,3]), DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.writeInt16Array(new Int16Array([1,2,3]));
|
||||
ds.writeInt16Array(new Int16Array([1,2,3]), DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.writeInt8Array(new Int8Array([1,2,3]));
|
||||
|
||||
ds.writeUint32Array(new Uint32Array([1,2,3]));
|
||||
ds.writeUint32Array(new Uint32Array([1,2,3]), DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.writeUint16Array(new Uint16Array([1,2,3]));
|
||||
ds.writeUint16Array(new Uint16Array([1,2,3]), DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.writeUint8Array(new Uint8Array([1,2,3]));
|
||||
|
||||
ds.writeFloat64Array(new Float64Array([1,2,3]));
|
||||
ds.writeFloat64Array(new Float64Array([1,2,3]), DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.writeFloat32Array(new Float32Array([1,2,3]));
|
||||
ds.writeFloat32Array(new Float32Array([1,2,3]), DataStream.BIG_ENDIAN);
|
||||
|
||||
val = ds.readInt32();
|
||||
val = ds.readInt32(DataStream.LITTLE_ENDIAN);
|
||||
|
||||
val = ds.readInt16();
|
||||
val = ds.readInt16(DataStream.BIG_ENDIAN);
|
||||
|
||||
val = ds.readInt8();
|
||||
|
||||
val = ds.readUint32();
|
||||
val = ds.readUint32(DataStream.LITTLE_ENDIAN);
|
||||
|
||||
val = ds.readUint16();
|
||||
val = ds.readUint16(DataStream.BIG_ENDIAN);
|
||||
|
||||
val = ds.readUint8();
|
||||
|
||||
val = ds.readFloat64();
|
||||
val = ds.readFloat64(DataStream.LITTLE_ENDIAN);
|
||||
|
||||
val = ds.readFloat32();
|
||||
val = ds.readFloat32(DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.writeInt32(1);
|
||||
ds.writeInt32(2, DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.writeInt16(1);
|
||||
ds.writeInt16(2, DataStream.LITTLE_ENDIAN);
|
||||
|
||||
ds.writeInt8(1);
|
||||
|
||||
ds.writeUint32(1);
|
||||
ds.writeUint32(2, DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.writeUint16(1);
|
||||
ds.writeUint16(2, DataStream.LITTLE_ENDIAN);
|
||||
|
||||
ds.writeUint8(1);
|
||||
|
||||
ds.writeFloat32(1);
|
||||
ds.writeFloat32(2, DataStream.BIG_ENDIAN);
|
||||
|
||||
ds.writeFloat64(1);
|
||||
ds.writeFloat64(2, DataStream.LITTLE_ENDIAN);
|
||||
|
||||
var embed = [
|
||||
'tag', 'uint32be',
|
||||
'code', 'uint32le',
|
||||
'greet', 'cstring'
|
||||
];
|
||||
|
||||
var def = [
|
||||
'tag', 'cstring:4',
|
||||
'code', 'uint32le',
|
||||
'embed', embed,
|
||||
'length', 'uint16be',
|
||||
'data', ['[]', 'float32be', 'length'],
|
||||
'greet', 'cstring:20',
|
||||
'endNote', 'uint8'
|
||||
];
|
||||
|
||||
var obj = ds.readStruct(def);
|
||||
ds.writeStruct(def, obj);
|
||||
|
||||
str = ds.readUCS2String(2);
|
||||
str = ds.readUCS2String(2, DataStream.LITTLE_ENDIAN);
|
||||
|
||||
ds.writeUCS2String("str");
|
||||
ds.writeUCS2String("str", DataStream.LITTLE_ENDIAN);
|
||||
ds.writeUCS2String("str", DataStream.LITTLE_ENDIAN, 1);
|
||||
|
||||
str = ds.readString(2);
|
||||
str = ds.readString(2, "ASCII");
|
||||
|
||||
ds.writeString("str");
|
||||
ds.writeString("str", "ASCII");
|
||||
ds.writeString("str", "ASCII", 1);
|
||||
|
||||
str = ds.readCString();
|
||||
str = ds.readCString(2);
|
||||
|
||||
ds.writeCString("str");
|
||||
ds.writeCString("str", 1);
|
||||
Vendored
+937
@@ -0,0 +1,937 @@
|
||||
// Type definitions for DataStream.js
|
||||
// Project: https://github.com/kig/DataStream.js
|
||||
// Definitions by: Tat <https://github.com/tatchx/>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
declare class DataStream {
|
||||
|
||||
/**
|
||||
Big-endian const to use as default endianness.
|
||||
*/
|
||||
static BIG_ENDIAN: boolean;
|
||||
|
||||
/**
|
||||
Little-endian const to use as default endianness.
|
||||
*/
|
||||
static LITTLE_ENDIAN: boolean;
|
||||
|
||||
/**
|
||||
DataStream reads scalars, arrays and structs of data from an ArrayBuffer.
|
||||
It's like a file-like DataView on steroids.
|
||||
|
||||
@param {ArrayBuffer} arrayBuffer ArrayBuffer to read from.
|
||||
*/
|
||||
constructor(arrayBuffer: ArrayBuffer);
|
||||
|
||||
/**
|
||||
DataStream reads scalars, arrays and structs of data from an ArrayBuffer.
|
||||
It's like a file-like DataView on steroids.
|
||||
|
||||
@param arrayBuffer ArrayBuffer to read from.
|
||||
@param byteOffset Offset from arrayBuffer beginning for the DataStream.
|
||||
*/
|
||||
constructor(arrayBuffer: ArrayBuffer, byteOffset: number);
|
||||
|
||||
/**
|
||||
DataStream reads scalars, arrays and structs of data from an ArrayBuffer.
|
||||
It's like a file-like DataView on steroids.
|
||||
|
||||
@param arrayBuffer ArrayBuffer to read from.
|
||||
@param byteOffset Offset from arrayBuffer beginning for the DataStream.
|
||||
@param endianness DataStream.BIG_ENDIAN or DataStream.LITTLE_ENDIAN (the default).
|
||||
*/
|
||||
constructor(arrayBuffer: ArrayBuffer, byteOffset: number, endianness: boolean);
|
||||
|
||||
/**
|
||||
Saves the DataStream contents to the given filename.
|
||||
Uses Chrome's anchor download property to initiate download.
|
||||
*
|
||||
@param filename Filename to save as.
|
||||
@return nothing
|
||||
*/
|
||||
save(filename: string): void;
|
||||
|
||||
/**
|
||||
Whether to extend DataStream buffer when trying to write beyond its size.
|
||||
If set, the buffer is reallocated to twice its current size until the
|
||||
requested write fits the buffer.
|
||||
*/
|
||||
dynamicSize: boolean;
|
||||
|
||||
/**
|
||||
Returns the byte length of the DataStream object.
|
||||
*/
|
||||
byteLength: number;
|
||||
|
||||
/**
|
||||
Set/get the backing ArrayBuffer of the DataStream object.
|
||||
The setter updates the DataView to point to the new buffer.
|
||||
*/
|
||||
buffer: ArrayBuffer;
|
||||
|
||||
/**
|
||||
Set/get the byteOffset of the DataStream object.
|
||||
The setter updates the DataView to point to the new byteOffset.
|
||||
*/
|
||||
byteOffset: number;
|
||||
|
||||
/**
|
||||
Set/get the backing DataView of the DataStream object.
|
||||
The setter updates the buffer and byteOffset to point to the DataView values.
|
||||
*/
|
||||
dataView: Object;
|
||||
|
||||
/**
|
||||
Sets the DataStream read/write position to given position.
|
||||
Clamps between 0 and DataStream length.
|
||||
*
|
||||
@param pos Position to seek to.
|
||||
@return nothing
|
||||
*/
|
||||
seek(pos: number): void;
|
||||
|
||||
/**
|
||||
Returns true if the DataStream seek pointer is at the end of buffer and
|
||||
there's no more data to read.
|
||||
*
|
||||
@return true if the seek pointer is at the end of the buffer.
|
||||
*/
|
||||
isEof(): boolean;
|
||||
|
||||
/**
|
||||
Maps an Int32Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return Int32Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapInt32Array(length: number): Int32Array;
|
||||
|
||||
/**
|
||||
Maps an Int32Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return Int32Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapInt32Array(length: number, e: boolean): Int32Array;
|
||||
|
||||
/**
|
||||
Maps an Int16Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return Int16Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapInt16Array(length: number): Int16Array;
|
||||
|
||||
/**
|
||||
Maps an Int16Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return Int16Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapInt16Array(length: number, e: boolean): Int16Array;
|
||||
|
||||
/**
|
||||
Maps an Int8Array into the DataStream buffer.
|
||||
*
|
||||
Nice for quickly reading in data.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return Int8Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapInt8Array(length: number): Int8Array;
|
||||
|
||||
/**
|
||||
Maps a Uint32Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return Uint32Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapUint32Array(length: number): Uint32Array;
|
||||
|
||||
/**
|
||||
Maps a Uint32Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return Uint32Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapUint32Array(length: number, e: boolean): Uint32Array;
|
||||
|
||||
/**
|
||||
Maps a Uint16Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return Uint16Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapUint16Array(length: number): Uint16Array;
|
||||
|
||||
/**
|
||||
Maps a Uint16Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return Uint16Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapUint16Array(length: number, e: boolean): Uint16Array;
|
||||
|
||||
/**
|
||||
Maps a Uint8Array into the DataStream buffer.
|
||||
*
|
||||
Nice for quickly reading in data.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return Uint8Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapUint8Array(length: number): Uint8Array;
|
||||
|
||||
/**
|
||||
Maps a Float64Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return Float64Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapFloat64Array(length: number): Float64Array;
|
||||
|
||||
/**
|
||||
Maps a Float64Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return Float64Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapFloat64Array(length: number, e: boolean): Float64Array;
|
||||
|
||||
/**
|
||||
Maps a Float32Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return Float32Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapFloat32Array(length: number): Float32Array;
|
||||
|
||||
/**
|
||||
Maps a Float32Array into the DataStream buffer, swizzling it to native
|
||||
endianness in-place. The current offset from the start of the buffer needs to
|
||||
be a multiple of element size, just like with typed array views.
|
||||
*
|
||||
Nice for quickly reading in data. Warning: potentially modifies the buffer
|
||||
contents.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return Float32Array to the DataStream backing buffer.
|
||||
*/
|
||||
mapFloat32Array(length: number, e: boolean): Float32Array;
|
||||
|
||||
/**
|
||||
Reads an Int32Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return The read Int32Array.
|
||||
*/
|
||||
readInt32Array(length: number): Int32Array;
|
||||
|
||||
/**
|
||||
Reads an Int32Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return The read Int32Array.
|
||||
*/
|
||||
readInt32Array(length: number, e: boolean): Int32Array;
|
||||
|
||||
/**
|
||||
Reads an Int16Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return The read Int16Array.
|
||||
*/
|
||||
readInt16Array(length: number): Int16Array;
|
||||
|
||||
/**
|
||||
Reads an Int16Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return The read Int16Array.
|
||||
*/
|
||||
readInt16Array(length: number, e: boolean): Int16Array;
|
||||
|
||||
/**
|
||||
Reads an Int8Array of desired length from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return The read Int8Array.
|
||||
*/
|
||||
readInt8Array(length: number): Int8Array;
|
||||
|
||||
/**
|
||||
Reads an Uint32Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return The read Uint32Array.
|
||||
*/
|
||||
readUint32Array(length: number): Uint32Array;
|
||||
|
||||
/**
|
||||
Reads an Uint32Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return The read Uint32Array.
|
||||
*/
|
||||
readUint32Array(length: number, e: boolean): Uint32Array;
|
||||
|
||||
/**
|
||||
Reads an Uint16Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return The read Uint16Array.
|
||||
*/
|
||||
readUint16Array(length: number): Uint16Array;
|
||||
|
||||
/**
|
||||
Reads an Uint16Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return The read Uint16Array.
|
||||
*/
|
||||
readUint16Array(length: number, e: boolean): Uint16Array;
|
||||
|
||||
/**
|
||||
Reads an Uint8Array of desired length from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return The read Uint8Array.
|
||||
*/
|
||||
readUint8Array(length: number): Uint8Array;
|
||||
|
||||
/**
|
||||
Reads a Float64Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return The read Float64Array.
|
||||
*/
|
||||
readFloat64Array(length: number, e: boolean): Float64Array;
|
||||
|
||||
/**
|
||||
Reads a Float64Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return The read Float64Array.
|
||||
*/
|
||||
readFloat64Array(length: number): Float64Array;
|
||||
|
||||
/**
|
||||
Reads a Float32Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@param e Endianness of the data to read.
|
||||
@return The read Float32Array.
|
||||
*/
|
||||
readFloat32Array(length: number, e: boolean): Float32Array;
|
||||
|
||||
/**
|
||||
Reads a Float32Array of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length Number of elements to map.
|
||||
@return The read Float32Array.
|
||||
*/
|
||||
readFloat32Array(length: number): Float32Array;
|
||||
|
||||
/**
|
||||
Writes an Int32Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
@param e Endianness of the data to write.
|
||||
*/
|
||||
writeInt32Array(arr: Int32Array, e: boolean): void;
|
||||
|
||||
/**
|
||||
Writes an Int32Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
*/
|
||||
writeInt32Array(arr: Int32Array): void;
|
||||
|
||||
/**
|
||||
Writes an Int16Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
@param e Endianness of the data to write.
|
||||
*/
|
||||
writeInt16Array(arr: Int16Array, e: boolean): void;
|
||||
|
||||
/**
|
||||
Writes an Int16Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
*/
|
||||
writeInt16Array(arr: Int16Array): void;
|
||||
|
||||
/**
|
||||
Writes an Int8Array to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
*/
|
||||
writeInt8Array(arr: Int8Array): void;
|
||||
|
||||
/**
|
||||
Writes an Uint32Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
@param e Endianness of the data to write.
|
||||
*/
|
||||
writeUint32Array(arr: Uint32Array, e: boolean): void;
|
||||
|
||||
/**
|
||||
Writes an Uint32Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
*/
|
||||
writeUint32Array(arr: Uint32Array): void;
|
||||
|
||||
/**
|
||||
Writes an Uint16Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
@param e Endianness of the data to write.
|
||||
*/
|
||||
writeUint16Array(arr: Uint16Array, e: boolean): void;
|
||||
|
||||
/**
|
||||
Writes an Uint16Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
*/
|
||||
writeUint16Array(arr: Uint16Array): void;
|
||||
|
||||
/**
|
||||
Writes an Uint8Array to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
*/
|
||||
writeUint8Array(arr: Uint8Array): void;
|
||||
|
||||
/**
|
||||
Writes a Float64Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
*/
|
||||
writeFloat64Array(arr: Float64Array): void;
|
||||
|
||||
/**
|
||||
Writes a Float64Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
@param e Endianness of the data to write.
|
||||
*/
|
||||
writeFloat64Array(arr: Float64Array, e: boolean): void;
|
||||
|
||||
/**
|
||||
Writes a Float32Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
*/
|
||||
writeFloat32Array(arr: Float32Array): void;
|
||||
|
||||
/**
|
||||
Writes a Float32Array of specified endianness to the DataStream.
|
||||
*
|
||||
@param arr The array to write.
|
||||
@param e Endianness of the data to write.
|
||||
*/
|
||||
writeFloat32Array(arr: Float32Array, e: boolean): void;
|
||||
|
||||
/**
|
||||
Reads a 32-bit int from the DataStream with the desired endianness.
|
||||
*
|
||||
@return The read number.
|
||||
*/
|
||||
readInt32(): number;
|
||||
|
||||
/**
|
||||
Reads a 32-bit int from the DataStream with the desired endianness.
|
||||
*
|
||||
@param e Endianness of the number.
|
||||
@return The read number.
|
||||
*/
|
||||
readInt32(e: boolean): number;
|
||||
|
||||
/**
|
||||
Reads a 16-bit int from the DataStream with the desired endianness.
|
||||
*
|
||||
@return The read number.
|
||||
*/
|
||||
readInt16(): number;
|
||||
|
||||
/**
|
||||
Reads a 16-bit int from the DataStream with the desired endianness.
|
||||
*
|
||||
@param e Endianness of the number.
|
||||
@return The read number.
|
||||
*/
|
||||
readInt16(e: boolean): number;
|
||||
|
||||
/**
|
||||
Reads an 8-bit int from the DataStream.
|
||||
*
|
||||
@return The read number.
|
||||
*/
|
||||
readInt8(): number;
|
||||
|
||||
/**
|
||||
Reads a 32-bit unsigned int from the DataStream with the desired endianness.
|
||||
*
|
||||
@return The read number.
|
||||
*/
|
||||
readUint32(): number;
|
||||
|
||||
/**
|
||||
Reads a 32-bit unsigned int from the DataStream with the desired endianness.
|
||||
*
|
||||
@param e Endianness of the number.
|
||||
@return The read number.
|
||||
*/
|
||||
readUint32(e: boolean): number;
|
||||
|
||||
/**
|
||||
Reads a 16-bit unsigned int from the DataStream with the desired endianness.
|
||||
*
|
||||
@return The read number.
|
||||
*/
|
||||
readUint16(): number;
|
||||
|
||||
/**
|
||||
Reads a 16-bit unsigned int from the DataStream with the desired endianness.
|
||||
*
|
||||
@param e Endianness of the number.
|
||||
@return The read number.
|
||||
*/
|
||||
readUint16(e: boolean): number;
|
||||
|
||||
/**
|
||||
Reads an 8-bit unsigned intfrom the DataStream.
|
||||
*
|
||||
@return The read number.
|
||||
*/
|
||||
readUint8(): number;
|
||||
|
||||
/**
|
||||
Reads a 32-bit float from the DataStream with the desired endianness.
|
||||
*
|
||||
@return The read number.
|
||||
*/
|
||||
readFloat32(): number;
|
||||
|
||||
/**
|
||||
Reads a 32-bit float from the DataStream with the desired endianness.
|
||||
*
|
||||
@param e Endianness of the number.
|
||||
@return The read number.
|
||||
*/
|
||||
readFloat32(e: boolean): number;
|
||||
|
||||
/**
|
||||
Reads a 64-bit float from the DataStream with the desired endianness.
|
||||
*
|
||||
@return The read number.
|
||||
*/
|
||||
readFloat64(): number;
|
||||
|
||||
/**
|
||||
Reads a 64-bit float from the DataStream with the desired endianness.
|
||||
*
|
||||
@param e Endianness of the number.
|
||||
@return The read number.
|
||||
*/
|
||||
readFloat64(e: boolean): number;
|
||||
|
||||
/**
|
||||
Writes a 32-bit int to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
*/
|
||||
writeInt32(v: number): void;
|
||||
|
||||
/**
|
||||
Writes a 32-bit int to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
@param e Endianness of the number.
|
||||
*/
|
||||
writeInt32(v: number, e: boolean): void;
|
||||
|
||||
/**
|
||||
Writes a 16-bit int to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
*/
|
||||
writeInt16(v: number): void;
|
||||
|
||||
/**
|
||||
Writes a 16-bit int to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
@param e Endianness of the number.
|
||||
*/
|
||||
writeInt16(v: number, e: boolean): void;
|
||||
|
||||
/**
|
||||
Writes an 8-bit int to the DataStream.
|
||||
*
|
||||
@param v Number to write.
|
||||
*/
|
||||
writeInt8(v: number): void;
|
||||
|
||||
/**
|
||||
Writes a 32-bit undigned int to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
*/
|
||||
writeUint32(v: number): void;
|
||||
|
||||
/**
|
||||
Writes a 32-bit undigned int to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
@param e Endianness of the number.
|
||||
*/
|
||||
writeUint32(v: number, e: boolean): void;
|
||||
|
||||
/**
|
||||
Writes a 16-bit undigned int to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
*/
|
||||
writeUint16(v: number): void;
|
||||
|
||||
/**
|
||||
Writes a 16-bit undigned int to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
@param e Endianness of the number.
|
||||
*/
|
||||
writeUint16(v: number, e: boolean): void;
|
||||
|
||||
/**
|
||||
Writes an 8-bit undigned int to the DataStream.
|
||||
*
|
||||
@param v Number to write.
|
||||
*/
|
||||
writeUint8(v: number): void;
|
||||
|
||||
/**
|
||||
Writes a 32-bit float to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
*/
|
||||
writeFloat32(v: number): void;
|
||||
|
||||
/**
|
||||
Writes a 32-bit float to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
@param e Endianness of the number.
|
||||
*/
|
||||
writeFloat32(v: number, e: boolean): void;
|
||||
|
||||
/**
|
||||
Writes a 64-bit float to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
*/
|
||||
writeFloat64(v: number): void;
|
||||
|
||||
/**
|
||||
Writes a 64-bit float to the DataStream with the desired endianness.
|
||||
*
|
||||
@param v Number to write.
|
||||
@param e Endianness of the number.
|
||||
*/
|
||||
writeFloat64(v: number, e: boolean): void;
|
||||
|
||||
/**
|
||||
Reads a struct of data from the DataStream. The struct is defined as
|
||||
a flat array of [name, type]-pairs. See the example below:
|
||||
*
|
||||
ds.readStruct([
|
||||
'headerTag', 'uint32', // Uint32 in DataStream endianness.
|
||||
'headerTag2', 'uint32be', // Big-endian Uint32.
|
||||
'headerTag3', 'uint32le', // Little-endian Uint32.
|
||||
'array', ['[]', 'uint32', 16], // Uint32Array of length 16.
|
||||
'array2Length', 'uint32',
|
||||
'array2', ['[]', 'uint32', 'array2Length'] // Uint32Array of length array2Length
|
||||
]);
|
||||
*
|
||||
The possible values for the type are as follows:
|
||||
*
|
||||
// Number types
|
||||
// Unsuffixed number types use DataStream endianness.
|
||||
// To explicitly specify endianness, suffix the type with
|
||||
// 'le' for little-endian or 'be' for big-endian,
|
||||
// e.g. 'int32be' for big-endian int32.
|
||||
'uint8' -- 8-bit unsigned int
|
||||
'uint16' -- 16-bit unsigned int
|
||||
'uint32' -- 32-bit unsigned int
|
||||
'int8' -- 8-bit int
|
||||
'int16' -- 16-bit int
|
||||
'int32' -- 32-bit int
|
||||
'float32' -- 32-bit float
|
||||
'float64' -- 64-bit float
|
||||
*
|
||||
// String types
|
||||
'cstring' -- ASCII string terminated by a zero byte.
|
||||
'string:N' -- ASCII string of length N, where N is a literal integer.
|
||||
'string:variableName' -- ASCII string of length $variableName,
|
||||
where 'variableName' is a previously parsed number in the current struct.
|
||||
'string,CHARSET:N' -- String of byteLength N encoded with given CHARSET.
|
||||
'u16string:N' -- UCS-2 string of length N in DataStream endianness.
|
||||
'u16stringle:N' -- UCS-2 string of length N in little-endian.
|
||||
'u16stringbe:N' -- UCS-2 string of length N in big-endian.
|
||||
*
|
||||
// Complex types
|
||||
[name, type, name_2, type_2, ..., name_N, type_N] -- Struct
|
||||
function(dataStream, struct) {} -- Callback function to read and return data.
|
||||
{get: function(dataStream, struct) {},
|
||||
set: function(dataStream, struct) {}}
|
||||
-- Getter/setter functions to read and return data, handy for using the same
|
||||
struct definition for reading and writing structs.
|
||||
['[]', type, length] -- Array of given type and length. The length can be either
|
||||
a number, a string that references a previously-read
|
||||
field, or a callback function(struct, dataStream, type){}.
|
||||
If length is '*', reads in as many elements as it can.
|
||||
*
|
||||
@param structDefinition Struct definition object.
|
||||
@return The read struct. Null if failed to read struct.
|
||||
*/
|
||||
readStruct(structDefinition: any[]): Object;
|
||||
|
||||
/**
|
||||
Writes a struct to the DataStream. Takes a structDefinition that gives the
|
||||
types and a struct object that gives the values. Refer to readStruct for the
|
||||
structure of structDefinition.
|
||||
*
|
||||
@param structDefinition Type definition of the struct.
|
||||
@param struct The struct data object.
|
||||
*/
|
||||
writeStruct(structDefinition: Object, struct: Object): void;
|
||||
|
||||
/**
|
||||
Read UCS-2 string of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length The length of the string to read.
|
||||
@return The read string.
|
||||
*/
|
||||
readUCS2String(length: number): string;
|
||||
|
||||
/**
|
||||
Read UCS-2 string of desired length and endianness from the DataStream.
|
||||
*
|
||||
@param length The length of the string to read.
|
||||
@param endianness The endianness of the string data in the DataStream.
|
||||
@return The read string.
|
||||
*/
|
||||
readUCS2String(length: number, endianness: boolean): string;
|
||||
|
||||
/**
|
||||
Write a UCS-2 string of desired endianness to the DataStream. The
|
||||
lengthOverride argument lets you define the number of characters to write.
|
||||
If the string is shorter than lengthOverride, the extra space is padded with
|
||||
zeroes.
|
||||
*
|
||||
@param str The string to write.
|
||||
*/
|
||||
writeUCS2String(str: string): void;
|
||||
|
||||
/**
|
||||
Write a UCS-2 string of desired endianness to the DataStream. The
|
||||
lengthOverride argument lets you define the number of characters to write.
|
||||
If the string is shorter than lengthOverride, the extra space is padded with
|
||||
zeroes.
|
||||
*
|
||||
@param str The string to write.
|
||||
@param endianness The endianness to use for the written string data.
|
||||
*/
|
||||
writeUCS2String(str: string, endianness: boolean): void;
|
||||
|
||||
/**
|
||||
Write a UCS-2 string of desired endianness to the DataStream. The
|
||||
lengthOverride argument lets you define the number of characters to write.
|
||||
If the string is shorter than lengthOverride, the extra space is padded with
|
||||
zeroes.
|
||||
*
|
||||
@param str The string to write.
|
||||
@param endianness The endianness to use for the written string data.
|
||||
@param lengthOverride The number of characters to write.
|
||||
*/
|
||||
writeUCS2String(str: string, endianness: boolean, lengthOverride: number): void;
|
||||
|
||||
/**
|
||||
Read a string of desired length and encoding from the DataStream.
|
||||
*
|
||||
@param length The length of the string to read in bytes.
|
||||
@return The read string.
|
||||
*/
|
||||
readString(length: number): string;
|
||||
|
||||
/**
|
||||
Read a string of desired length and encoding from the DataStream.
|
||||
*
|
||||
@param length The length of the string to read in bytes.
|
||||
@param encoding The encoding of the string data in the DataStream. Defaults to ASCII.
|
||||
@return The read string.
|
||||
*/
|
||||
readString(length: number, encoding: string): string;
|
||||
|
||||
/**
|
||||
Writes a string of desired length and encoding to the DataStream.
|
||||
*
|
||||
@param s The string to write.
|
||||
*/
|
||||
writeString(s: string): void;
|
||||
|
||||
/**
|
||||
Writes a string of desired length and encoding to the DataStream.
|
||||
*
|
||||
@param s The string to write.
|
||||
@param encoding The encoding for the written string data. Defaults to ASCII.
|
||||
*/
|
||||
writeString(s: string, encoding: string): void;
|
||||
|
||||
/**
|
||||
Writes a string of desired length and encoding to the DataStream.
|
||||
*
|
||||
@param s The string to write.
|
||||
@param encoding The encoding for the written string data. Defaults to ASCII.
|
||||
@param length The number of characters to write.
|
||||
*/
|
||||
writeString(s: string, encoding: string, length: number): void;
|
||||
|
||||
/**
|
||||
Read null-terminated string of desired length from the DataStream. Truncates
|
||||
the returned string so that the null byte is not a part of it.
|
||||
*
|
||||
@return The read string.
|
||||
*/
|
||||
readCString(): string;
|
||||
|
||||
/**
|
||||
Read null-terminated string of desired length from the DataStream. Truncates
|
||||
the returned string so that the null byte is not a part of it.
|
||||
*
|
||||
@param length The length of the string to read.
|
||||
@return The read string.
|
||||
*/
|
||||
readCString(length: number): string;
|
||||
|
||||
/**
|
||||
Writes a null-terminated string to DataStream and zero-pads it to length
|
||||
bytes. If length is not given, writes the string followed by a zero.
|
||||
If string is longer than length, the written part of the string does not have
|
||||
a trailing zero.
|
||||
*
|
||||
@param s The string to write.
|
||||
*/
|
||||
writeCString(s: string): void;
|
||||
|
||||
/**
|
||||
Writes a null-terminated string to DataStream and zero-pads it to length
|
||||
bytes. If length is not given, writes the string followed by a zero.
|
||||
If string is longer than length, the written part of the string does not have
|
||||
a trailing zero.
|
||||
*
|
||||
@param s The string to write.
|
||||
@param length The number of characters to write.
|
||||
*/
|
||||
writeCString(s: string, length: number): void;
|
||||
|
||||
/**
|
||||
Reads an object of type t from the DataStream, passing struct as the thus-far
|
||||
read struct to possible callbacks that refer to it. Used by readStruct for
|
||||
reading in the values, so the type is one of the readStruct types.
|
||||
*
|
||||
@param t Type of the object to read.
|
||||
@return Returns the object on successful read, null on unsuccessful.
|
||||
*/
|
||||
readType(t: Object): Object;
|
||||
|
||||
/**
|
||||
Reads an object of type t from the DataStream, passing struct as the thus-far
|
||||
read struct to possible callbacks that refer to it. Used by readStruct for
|
||||
reading in the values, so the type is one of the readStruct types.
|
||||
*
|
||||
@param t Type of the object to read.
|
||||
@param struct Struct to refer to when resolving length references and for calling callbacks.
|
||||
@return Returns the object on successful read, null on unsuccessful.
|
||||
*/
|
||||
readType(t: Object, struct: Object): Object;
|
||||
|
||||
/**
|
||||
Writes object v of type t to the DataStream.
|
||||
*
|
||||
@param t Type of data to write.
|
||||
@param v Value of data to write.
|
||||
@param struct Struct to pass to write callback functions.
|
||||
*/
|
||||
writeType(t: Object, v: Object, struct: Object): void;
|
||||
}
|
||||
@@ -6,6 +6,7 @@
|
||||
function testSaveAs() {
|
||||
var data: Blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
|
||||
var filename: string = 'hello world.txt';
|
||||
|
||||
saveAs(data, filename);
|
||||
var disableAutoBOM = true;
|
||||
|
||||
saveAs(data, filename, disableAutoBOM);
|
||||
}
|
||||
|
||||
Vendored
+8
-2
@@ -20,8 +20,14 @@ interface FileSaver {
|
||||
* @summary File name.
|
||||
* @type {DOMString}
|
||||
*/
|
||||
filename: string
|
||||
filename: string,
|
||||
|
||||
/**
|
||||
* @summary Disable Unicode text encoding hints or not.
|
||||
* @type {boolean}
|
||||
*/
|
||||
disableAutoBOM?: boolean
|
||||
): void
|
||||
}
|
||||
|
||||
declare var saveAs: FileSaver;
|
||||
declare var saveAs: FileSaver;
|
||||
|
||||
@@ -0,0 +1,266 @@
|
||||
/// <reference path="./openjscad.d.ts" />
|
||||
|
||||
function test() {
|
||||
|
||||
var gProcessor: OpenJsCad.Processor = null;
|
||||
|
||||
// Show all exceptions to the user:
|
||||
OpenJsCad.AlertUserOfUncaughtExceptions();
|
||||
|
||||
function onload()
|
||||
{
|
||||
gProcessor = new OpenJsCad.Processor(<HTMLDivElement>document.getElementById("viewer"));
|
||||
updateSolid();
|
||||
}
|
||||
|
||||
function updateSolid()
|
||||
{
|
||||
gProcessor.setJsCad((<HTMLTextAreaElement>document.getElementById('code')).value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
function main()
|
||||
{
|
||||
// Main entry point; here we construct our solid:
|
||||
var gear = involuteGear(
|
||||
15,
|
||||
10,
|
||||
20,
|
||||
0,
|
||||
5
|
||||
);
|
||||
var centerhole = CSG.cylinder({start: [0,0,-5], end: [0,0,5], radius: 2, resolution: 16});
|
||||
gear = gear.subtract(centerhole);
|
||||
return gear;
|
||||
}
|
||||
|
||||
function involuteGear(numTeeth: number, circularPitch: number, pressureAngle: number, clearance: number, thickness: number)
|
||||
{
|
||||
// default values:
|
||||
if(arguments.length < 3) pressureAngle = 20;
|
||||
if(arguments.length < 4) clearance = 0;
|
||||
if(arguments.length < 4) thickness = 1;
|
||||
|
||||
var addendum = circularPitch / Math.PI;
|
||||
var dedendum = addendum + clearance;
|
||||
|
||||
// radiuses of the 4 circles:
|
||||
var pitchRadius = numTeeth * circularPitch / (2 * Math.PI);
|
||||
var baseRadius = pitchRadius * Math.cos(Math.PI * pressureAngle / 180);
|
||||
var outerRadius = pitchRadius + addendum;
|
||||
var rootRadius = pitchRadius - dedendum;
|
||||
|
||||
var maxtanlength = Math.sqrt(outerRadius*outerRadius - baseRadius*baseRadius);
|
||||
var maxangle = maxtanlength / baseRadius;
|
||||
|
||||
var tl_at_pitchcircle = Math.sqrt(pitchRadius*pitchRadius - baseRadius*baseRadius);
|
||||
var angle_at_pitchcircle = tl_at_pitchcircle / baseRadius;
|
||||
var diffangle = angle_at_pitchcircle - Math.atan(angle_at_pitchcircle);
|
||||
var angularToothWidthAtBase = Math.PI / numTeeth + 2*diffangle;
|
||||
|
||||
// build a single 2d tooth in the 'points' array:
|
||||
var resolution = 5;
|
||||
var points = [new CSG.Vector2D(0,0)];
|
||||
for(var i = 0; i <= resolution; i++)
|
||||
{
|
||||
// first side of the tooth:
|
||||
var angle = maxangle * i / resolution;
|
||||
var tanlength = angle * baseRadius;
|
||||
var radvector = CSG.Vector2D.fromAngle(angle);
|
||||
var tanvector = radvector.normal();
|
||||
var p = radvector.times(baseRadius).plus(tanvector.times(tanlength));
|
||||
points[i+1] = p;
|
||||
|
||||
// opposite side of the tooth:
|
||||
radvector = CSG.Vector2D.fromAngle(angularToothWidthAtBase - angle);
|
||||
tanvector = radvector.normal().negated();
|
||||
p = radvector.times(baseRadius).plus(tanvector.times(tanlength));
|
||||
points[2 * resolution + 2 - i] = p;
|
||||
}
|
||||
|
||||
// create the polygon and extrude into 3D:
|
||||
var tooth3d = new CSG.Polygon2D(points).extrude({offset: [0, 0, thickness]});
|
||||
|
||||
var allteeth = new CSG();
|
||||
for(var i = 0; i < numTeeth; i++)
|
||||
{
|
||||
var angle = i*360/numTeeth;
|
||||
var rotatedtooth = <CSG>tooth3d.rotateZ(angle);
|
||||
allteeth = allteeth.unionForNonIntersecting(rotatedtooth);
|
||||
}
|
||||
|
||||
// build the root circle:
|
||||
points = [];
|
||||
var toothAngle = 2 * Math.PI / numTeeth;
|
||||
var toothCenterAngle = 0.5 * angularToothWidthAtBase;
|
||||
for(var i = 0; i < numTeeth; i++)
|
||||
{
|
||||
var angle = toothCenterAngle + i * toothAngle;
|
||||
var p = CSG.Vector2D.fromAngle(angle).times(rootRadius);
|
||||
points.push(p);
|
||||
}
|
||||
|
||||
// create the polygon and extrude into 3D:
|
||||
var rootcircle = new CSG.Polygon2D(points).extrude({offset: [0, 0, thickness]});
|
||||
|
||||
var result = rootcircle.union(allteeth);
|
||||
|
||||
// center at origin:
|
||||
result = <CSG>result.translate([0, 0, -thickness/2]);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
var cylresolution=16;
|
||||
|
||||
|
||||
function main2()
|
||||
{
|
||||
var params =
|
||||
{
|
||||
quality: 0,
|
||||
diameter1: 12.2,
|
||||
shaftlength1: 15,
|
||||
outerlength1: 20,
|
||||
nutradius1: 4.65,
|
||||
nutthickness1: 4.2,
|
||||
screwdiameter1: 5,
|
||||
diameter2: 9.5,
|
||||
shaftlength2: 10,
|
||||
outerlength2: 15,
|
||||
nutradius2: 3.2,
|
||||
nutthickness2: 2.6,
|
||||
screwdiameter2: 3,
|
||||
outerdiameter: 30,
|
||||
spiderlength: 12,
|
||||
spidermargin: 0,
|
||||
numteeth: 2
|
||||
};
|
||||
|
||||
|
||||
cylresolution=(params.quality == 1)? 64:16;
|
||||
|
||||
var outerdiameter=params.outerdiameter;
|
||||
outerdiameter=Math.max(outerdiameter, params.diameter1+0.5);
|
||||
outerdiameter=Math.max(outerdiameter, params.diameter2+0.5);
|
||||
|
||||
var spidercenterdiameter=outerdiameter/2;
|
||||
|
||||
var part1=makeShaft(params.diameter1, outerdiameter,spidercenterdiameter,params.shaftlength1,params.outerlength1,params.spiderlength, params.nutradius1, params.nutthickness1, params.screwdiameter1, params.numteeth);
|
||||
var part2=makeShaft(params.diameter2, outerdiameter,spidercenterdiameter,params.shaftlength2,params.outerlength2,params.spiderlength, params.nutradius2, params.nutthickness2, params.screwdiameter2, params.numteeth);
|
||||
var spider=makeSpider(outerdiameter, spidercenterdiameter, params.spiderlength, params.numteeth);
|
||||
|
||||
if(params.spidermargin > 0)
|
||||
{
|
||||
spider=spider.contract(params.spidermargin, 4);
|
||||
}
|
||||
|
||||
// rotate shaft parts for better 3d printing:
|
||||
part1=<CSG>part1.rotateX(180).translate([0,0,params.outerlength1+params.spiderlength]);
|
||||
part2=<CSG>part2.rotateX(180).translate([0,0,params.outerlength2+params.spiderlength]);
|
||||
|
||||
var result=<CSG>part1.translate([-outerdiameter-5,0,0]);
|
||||
result=result.union(<CSG>part2.translate([0,0,0]));
|
||||
result=result.union(<CSG>spider.translate([outerdiameter+5,0,-params.spidermargin]));
|
||||
return result;
|
||||
}
|
||||
|
||||
function makeShaft(innerdiameter: number, outerdiameter: number, spidercenterdiameter: number, shaftlength: number, outerlength: number, spiderlength: number, nutradius: number, nutthickness: number, screwdiameter: number, numteeth: number)
|
||||
{
|
||||
var result=CSG.cylinder({start:[0,0,0], end:[0,0,outerlength], radius:outerdiameter/2, resolution:cylresolution});
|
||||
|
||||
for(var i=0; i < numteeth; i++)
|
||||
{
|
||||
var angle=i*360/numteeth;
|
||||
var pie=makePie(outerdiameter/2, spiderlength,angle-45/numteeth, angle+45/numteeth);
|
||||
pie=<CSG>pie.translate([0,0,outerlength]);
|
||||
result=result.union(pie);
|
||||
}
|
||||
var spidercylinder=CSG.cylinder({start:[0,0,outerlength], end:[0,0,outerlength+spiderlength],radius:spidercenterdiameter/2,resolution:cylresolution});
|
||||
result=result.subtract(spidercylinder);
|
||||
var shaftcylinder=CSG.cylinder({start:[0,0,0], end:[0,0,shaftlength], radius:innerdiameter/2, resolution:cylresolution});
|
||||
result=result.subtract(shaftcylinder);
|
||||
|
||||
var screwz=shaftlength/2;
|
||||
if(screwz < nutradius) screwz=nutradius;
|
||||
var nutcutout = <CSG>hexagon(nutradius, nutthickness).translate([0,0,-nutthickness/2]);
|
||||
var grubnutradiusAtFlatSide = nutradius * Math.cos(Math.PI / 180 * 30);
|
||||
var nutcutoutrectangle = CSG.cube({
|
||||
radius: [outerlength/2, grubnutradiusAtFlatSide, nutthickness/2],
|
||||
center: [outerlength/2, 0, 0],
|
||||
});
|
||||
nutcutout = nutcutout.union(nutcutoutrectangle);
|
||||
nutcutout = <CSG>nutcutout.rotateY(90);
|
||||
nutcutout = <CSG>nutcutout.translate([(outerdiameter+innerdiameter)/4, 0, screwz]);
|
||||
result = result.subtract(nutcutout);
|
||||
|
||||
var screwcutout=CSG.cylinder({
|
||||
start: [outerdiameter/2, 0, screwz],
|
||||
end: [0, 0, screwz],
|
||||
radius: screwdiameter/2,
|
||||
resolution:cylresolution
|
||||
});
|
||||
result=result.subtract(screwcutout);
|
||||
|
||||
//return nutcutout;
|
||||
// nutcutout = nutcutout.translate([-grubnutheight/2 - centerholeradius - nutdistance,0,0]);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function makePie(radius: number, height: number, startangle: number, endangle: number)
|
||||
{
|
||||
var absangle=Math.abs(startangle-endangle);
|
||||
if(absangle >= 180)
|
||||
{
|
||||
throw new Error("Pie angle must be less than 180 degrees");
|
||||
}
|
||||
var numsteps=cylresolution*absangle/360;
|
||||
if(numsteps < 1) numsteps=1;
|
||||
var points: CSG.Vector2D[] = [];
|
||||
for(var i=0; i <= numsteps; i++)
|
||||
{
|
||||
var angle=startangle+i/numsteps*(endangle-startangle);
|
||||
var vec = CSG.Vector2D.fromAngleDegrees(angle).times(radius);
|
||||
points.push(vec);
|
||||
}
|
||||
points.push(new CSG.Vector2D(0,0));
|
||||
var shape2d=new CSG.Polygon2D(points);
|
||||
var extruded=shape2d.extrude({
|
||||
offset: [0,0,height], // direction for extrusion
|
||||
});
|
||||
return extruded;
|
||||
}
|
||||
|
||||
function hexagon(radius: number, height: number)
|
||||
{
|
||||
var vertices: CSG.Vertex[] = [];
|
||||
for(var i=0; i < 6; i++)
|
||||
{
|
||||
var point=CSG.Vector2D.fromAngleDegrees(-i*60).times(radius).toVector3D(0);
|
||||
vertices.push(new CSG.Vertex(point));
|
||||
}
|
||||
var polygon=new CSG.Polygon(vertices);
|
||||
var hexagon=polygon.extrude([0,0,height]);
|
||||
return hexagon;
|
||||
}
|
||||
|
||||
function makeSpider(outerdiameter: number, spidercenterdiameter: number, spiderlength: number, numteeth: number)
|
||||
{
|
||||
var result=new CSG();
|
||||
var numspiderteeth=numteeth*2; // spider has twice the number of teeth
|
||||
for(var i=0; i < numspiderteeth; i++)
|
||||
{
|
||||
var angle=i*360/numspiderteeth;
|
||||
var pie=makePie(outerdiameter/2, spiderlength,angle-90/numspiderteeth, angle+90/numspiderteeth);
|
||||
pie=<CSG>pie.translate([0,0,0]);
|
||||
result=result.union(pie);
|
||||
}
|
||||
|
||||
var centercylinder=CSG.cylinder({start:[0,0,0], end:[0,0,spiderlength], radius:spidercenterdiameter/2, resolution:cylresolution});
|
||||
result=result.union(centercylinder);
|
||||
|
||||
return result;
|
||||
}
|
||||
Vendored
+912
@@ -0,0 +1,912 @@
|
||||
// Type definitions for OpenJsCad.js
|
||||
// Project: https://github.com/joostn/OpenJsCad
|
||||
// Definitions by: Dan Marshall <https://github.com/danmarshall>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
/// <reference path="../threejs/three.d.ts" />
|
||||
|
||||
declare module THREE {
|
||||
var CSG: {
|
||||
fromCSG: (csg: CSG, defaultColor: any) => {
|
||||
colorMesh: Mesh;
|
||||
wireframe: Mesh;
|
||||
boundLen: number;
|
||||
};
|
||||
getGeometryVertex: (geometry: any, vertex_position: any) => number;
|
||||
};
|
||||
function OrbitControls(object: any, domElement: any): void;
|
||||
function SpriteCanvasMaterial(parameters?: any): void;
|
||||
interface ICanvasRendererOptions {
|
||||
canvas?: HTMLCanvasElement;
|
||||
alpha?: boolean;
|
||||
}
|
||||
class CanvasRenderer implements Renderer {
|
||||
domElement: HTMLCanvasElement;
|
||||
private pixelRatio;
|
||||
private autoClear;
|
||||
private sortObjects;
|
||||
private sortElements;
|
||||
private info;
|
||||
private _projector;
|
||||
private _renderData;
|
||||
private _elements;
|
||||
private _lights;
|
||||
private _canvas;
|
||||
private _canvasWidth;
|
||||
private _canvasHeight;
|
||||
private _canvasWidthHalf;
|
||||
private _canvasHeightHalf;
|
||||
private _viewportX;
|
||||
private _viewportY;
|
||||
private _viewportWidth;
|
||||
private _viewportHeight;
|
||||
private _context;
|
||||
private _clearColor;
|
||||
private _clearAlpha;
|
||||
private _contextGlobalAlpha;
|
||||
private _contextGlobalCompositeOperation;
|
||||
private _contextStrokeStyle;
|
||||
private _camera;
|
||||
private _contextFillStyle;
|
||||
private _contextLineWidth;
|
||||
private _contextLineCap;
|
||||
private _contextLineJoin;
|
||||
private _contextLineDash;
|
||||
private _v1;
|
||||
private _v2;
|
||||
private _v3;
|
||||
private _v4;
|
||||
private _v5;
|
||||
private _v6;
|
||||
private _v1x;
|
||||
private _v1y;
|
||||
private _v2x;
|
||||
private _v2y;
|
||||
private _v3x;
|
||||
private _v3y;
|
||||
private _v4x;
|
||||
private _v4y;
|
||||
private _v5x;
|
||||
private _v5y;
|
||||
private _v6x;
|
||||
private _v6y;
|
||||
private _color;
|
||||
private _color1;
|
||||
private _color2;
|
||||
private _color3;
|
||||
private _color4;
|
||||
private _diffuseColor;
|
||||
private _emissiveColor;
|
||||
private _lightColor;
|
||||
private _patterns;
|
||||
private _image;
|
||||
private _uvs;
|
||||
private _uv1x;
|
||||
private _uv1y;
|
||||
private _uv2x;
|
||||
private _uv2y;
|
||||
private _uv3x;
|
||||
private _uv3y;
|
||||
private _clipBox;
|
||||
private _clearBox;
|
||||
private _elemBox;
|
||||
private _ambientLight;
|
||||
private _directionalLights;
|
||||
private _pointLights;
|
||||
private _vector3;
|
||||
private _centroid;
|
||||
private _normal;
|
||||
private _normalViewMatrix;
|
||||
constructor(parameters: ICanvasRendererOptions);
|
||||
supportsVertexTextures(): void;
|
||||
setFaceCulling: () => void;
|
||||
getPixelRatio(): number;
|
||||
setPixelRatio(value: any): void;
|
||||
setSize(width: any, height: any, updateStyle: any): void;
|
||||
setViewport(x: any, y: any, width: any, height: any): void;
|
||||
setScissor(): void;
|
||||
enableScissorTest(): void;
|
||||
setClearColor(color: any, alpha: any): void;
|
||||
setClearColorHex(hex: any, alpha: any): void;
|
||||
getClearColor(): Color;
|
||||
getClearAlpha(): number;
|
||||
getMaxAnisotropy(): number;
|
||||
clear(): void;
|
||||
clearColor(): void;
|
||||
clearDepth(): void;
|
||||
clearStencil(): void;
|
||||
render(scene: Scene, camera: Camera, renderTarget?: RenderTarget, forceClear?: boolean): void;
|
||||
calculateLights(): void;
|
||||
calculateLight(position: any, normal: any, color: any): void;
|
||||
renderSprite(v1: any, element: any, material: any): void;
|
||||
renderLine(v1: any, v2: any, element: any, material: any): void;
|
||||
renderFace3(v1: any, v2: any, v3: any, uv1: any, uv2: any, uv3: any, element: any, material: any): void;
|
||||
drawTriangle(x0: any, y0: any, x1: any, y1: any, x2: any, y2: any): void;
|
||||
strokePath(color: any, linewidth: any, linecap: any, linejoin: any): void;
|
||||
fillPath(color: any): void;
|
||||
onTextureUpdate(event: any): void;
|
||||
textureToPattern(texture: any): void;
|
||||
patternPath(x0: any, y0: any, x1: any, y1: any, x2: any, y2: any, u0: any, v0: any, u1: any, v1: any, u2: any, v2: any, texture: any): void;
|
||||
clipImage(x0: any, y0: any, x1: any, y1: any, x2: any, y2: any, u0: any, v0: any, u1: any, v1: any, u2: any, v2: any, image: any): void;
|
||||
expand(v1: any, v2: any, pixels: any): void;
|
||||
setOpacity(value: any): void;
|
||||
setBlending(value: any): void;
|
||||
setLineWidth(value: any): void;
|
||||
setLineCap(value: any): void;
|
||||
setLineJoin(value: any): void;
|
||||
setStrokeStyle(value: any): void;
|
||||
setFillStyle(value: any): void;
|
||||
setLineDash(value: any): void;
|
||||
}
|
||||
function RenderableObject(): void;
|
||||
function RenderableFace(): void;
|
||||
function RenderableVertex(): void;
|
||||
function RenderableLine(): void;
|
||||
function RenderableSprite(): void;
|
||||
function Projector(): void;
|
||||
}
|
||||
declare module OpenJsCad {
|
||||
interface ILog {
|
||||
(x: string): void;
|
||||
prevLogTime?: number;
|
||||
}
|
||||
var log: ILog;
|
||||
interface IViewerOptions {
|
||||
drawLines?: boolean;
|
||||
drawFaces?: boolean;
|
||||
color?: number[];
|
||||
bgColor?: number;
|
||||
noWebGL?: boolean;
|
||||
}
|
||||
interface ProcessorOptions extends IViewerOptions {
|
||||
verbose?: boolean;
|
||||
viewerwidth?: number;
|
||||
viewerheight?: number;
|
||||
viewerheightratio?: number;
|
||||
}
|
||||
class Viewer {
|
||||
private perspective;
|
||||
private drawOptions;
|
||||
private size;
|
||||
private defaultColor_;
|
||||
private bgColor_;
|
||||
private containerElm_;
|
||||
private scene_;
|
||||
private camera_;
|
||||
private controls_;
|
||||
private renderer_;
|
||||
private canvas;
|
||||
private pauseRender_;
|
||||
private requestID_;
|
||||
constructor(containerElm: any, size: any, options: IViewerOptions);
|
||||
createScene(drawAxes: any, axLen: any): void;
|
||||
createCamera(): void;
|
||||
createControls(canvas: any): void;
|
||||
webGLAvailable(): boolean;
|
||||
createRenderer(bool_noWebGL: any): void;
|
||||
render(): void;
|
||||
animate(): void;
|
||||
cancelAnimate(): void;
|
||||
refreshRenderer(bool_noWebGL: any): void;
|
||||
drawAxes(axLen: any): void;
|
||||
setCsg(csg: any, resetZoom: any): void;
|
||||
applyDrawOptions(): void;
|
||||
clear(): void;
|
||||
getUserMeshes(str?: any): THREE.Object3D[];
|
||||
resetZoom(r: any): void;
|
||||
parseSizeParams(): void;
|
||||
handleResize(): void;
|
||||
}
|
||||
function makeAbsoluteUrl(url: any, baseurl: any): any;
|
||||
function isChrome(): boolean;
|
||||
function runMainInWorker(mainParameters: any): void;
|
||||
function expandResultObjectArray(result: any): any;
|
||||
function checkResult(result: any): void;
|
||||
function resultToCompactBinary(resultin: any): any;
|
||||
function resultFromCompactBinary(resultin: any): any;
|
||||
function parseJsCadScriptSync(script: any, mainParameters: any, debugging: any): any;
|
||||
function parseJsCadScriptASync(script: any, mainParameters: any, options: any, callback: any): Worker;
|
||||
function getWindowURL(): URL;
|
||||
function textToBlobUrl(txt: any): string;
|
||||
function revokeBlobUrl(url: any): void;
|
||||
function FileSystemApiErrorHandler(fileError: any, operation: any): void;
|
||||
function AlertUserOfUncaughtExceptions(): void;
|
||||
function getParamDefinitions(script: any): any[];
|
||||
interface EventHandler {
|
||||
(ev?: Event): any;
|
||||
}
|
||||
/**
|
||||
* options parameter:
|
||||
* - drawLines: display wireframe lines
|
||||
* - drawFaces: display surfaces
|
||||
* - bgColor: canvas background color
|
||||
* - color: object color
|
||||
* - viewerwidth, viewerheight: set rendering size. Works with any css unit.
|
||||
* viewerheight can also be specified as a ratio to width, ie number e (0, 1]
|
||||
* - noWebGL: force render without webGL
|
||||
* - verbose: show additional info (currently only time used for rendering)
|
||||
*/
|
||||
interface ViewerSize {
|
||||
widthDefault: string;
|
||||
heightDefault: string;
|
||||
width: number;
|
||||
height: number;
|
||||
heightratio: number;
|
||||
}
|
||||
class Processor {
|
||||
private containerdiv;
|
||||
private options;
|
||||
private onchange;
|
||||
private static widthDefault;
|
||||
private static heightDefault;
|
||||
private viewerdiv;
|
||||
private viewer;
|
||||
private viewerSize;
|
||||
private processing;
|
||||
private currentObject;
|
||||
private hasValidCurrentObject;
|
||||
private hasOutputFile;
|
||||
private worker;
|
||||
private paramDefinitions;
|
||||
private paramControls;
|
||||
private script;
|
||||
private hasError;
|
||||
private debugging;
|
||||
private errordiv;
|
||||
private errorpre;
|
||||
private statusdiv;
|
||||
private controldiv;
|
||||
private statusspan;
|
||||
private statusbuttons;
|
||||
private abortbutton;
|
||||
private renderedElementDropdown;
|
||||
private formatDropdown;
|
||||
private generateOutputFileButton;
|
||||
private downloadOutputFileLink;
|
||||
private parametersdiv;
|
||||
private parameterstable;
|
||||
private currentFormat;
|
||||
private filename;
|
||||
private currentObjects;
|
||||
private currentObjectIndex;
|
||||
private isFirstRender_;
|
||||
private outputFileDirEntry;
|
||||
private outputFileBlobUrl;
|
||||
constructor(containerdiv: HTMLDivElement, options?: ProcessorOptions, onchange?: EventHandler);
|
||||
static convertToSolid(obj: any): any;
|
||||
cleanOption(option: any, deflt: any): any;
|
||||
toggleDrawOption(str: any): boolean;
|
||||
setDrawOption(str: any, bool: any): void;
|
||||
handleResize(): void;
|
||||
createElements(): void;
|
||||
getFilenameForRenderedObject(): string;
|
||||
setRenderedObjects(obj: any): void;
|
||||
setSelectedObjectIndex(index: number): void;
|
||||
selectedFormat(): any;
|
||||
selectedFormatInfo(): any;
|
||||
updateDownloadLink(): void;
|
||||
clearViewer(): void;
|
||||
abort(): void;
|
||||
enableItems(): void;
|
||||
setOpenJsCadPath(path: string): void;
|
||||
addLibrary(lib: any): void;
|
||||
setError(txt: string): void;
|
||||
setDebugging(debugging: boolean): void;
|
||||
setJsCad(script: string, filename?: string): void;
|
||||
getParamValues(): {};
|
||||
rebuildSolid(): void;
|
||||
hasSolid(): boolean;
|
||||
isProcessing(): boolean;
|
||||
clearOutputFile(): void;
|
||||
generateOutputFile(): void;
|
||||
currentObjectToBlob(): any;
|
||||
supportedFormatsForCurrentObject(): string[];
|
||||
formatInfo(format: any): any;
|
||||
downloadLinkTextForCurrentObject(): string;
|
||||
generateOutputFileBlobUrl(): void;
|
||||
generateOutputFileFileSystem(): void;
|
||||
createParamControls(): void;
|
||||
}
|
||||
}
|
||||
interface Window {
|
||||
Worker: Worker;
|
||||
// URL: URL;
|
||||
webkitURL: URL;
|
||||
requestFileSystem: any;
|
||||
webkitRequestFileSystem: any;
|
||||
}
|
||||
interface IAMFStringOptions {
|
||||
unit: string;
|
||||
}
|
||||
declare class CxG {
|
||||
toStlString(): string;
|
||||
toStlBinary(): void;
|
||||
toAMFString(AMFStringOptions?: IAMFStringOptions): void;
|
||||
getBounds(): CxG[];
|
||||
transform(matrix4x4: CSG.Matrix4x4): CxG;
|
||||
mirrored(plane: CSG.Plane): CxG;
|
||||
mirroredX(): CxG;
|
||||
mirroredY(): CxG;
|
||||
mirroredZ(): CxG;
|
||||
translate(v: number[]): CxG;
|
||||
translate(v: CSG.Vector3D): CxG;
|
||||
scale(f: CSG.Vector3D): CxG;
|
||||
rotateX(deg: number): CxG;
|
||||
rotateY(deg: number): CxG;
|
||||
rotateZ(deg: number): CxG;
|
||||
rotate(rotationCenter: CSG.Vector3D, rotationAxis: CSG.Vector3D, degrees: number): CxG;
|
||||
rotateEulerAngles(alpha: number, beta: number, gamma: number, position: number[]): CxG;
|
||||
}
|
||||
interface ICenter {
|
||||
center(cAxes: string[]): CxG;
|
||||
}
|
||||
declare class CSG extends CxG implements ICenter {
|
||||
polygons: CSG.Polygon[];
|
||||
properties: CSG.Properties;
|
||||
isCanonicalized: boolean;
|
||||
isRetesselated: boolean;
|
||||
cachedBoundingBox: CSG.Vector3D[];
|
||||
static defaultResolution2D: number;
|
||||
static defaultResolution3D: number;
|
||||
static fromPolygons(polygons: CSG.Polygon[]): CSG;
|
||||
static fromSlices(options: any): CSG;
|
||||
static fromObject(obj: any): CSG;
|
||||
static fromCompactBinary(bin: any): CSG;
|
||||
toPolygons(): CSG.Polygon[];
|
||||
union(csg: CSG[]): CSG;
|
||||
union(csg: CSG): CSG;
|
||||
unionSub(csg: CSG, retesselate?: boolean, canonicalize?: boolean): CSG;
|
||||
unionForNonIntersecting(csg: CSG): CSG;
|
||||
subtract(csg: CSG[]): CSG;
|
||||
subtract(csg: CSG): CSG;
|
||||
subtractSub(csg: CSG, retesselate: boolean, canonicalize: boolean): CSG;
|
||||
intersect(csg: CSG[]): CSG;
|
||||
intersect(csg: CSG): CSG;
|
||||
intersectSub(csg: CSG, retesselate?: boolean, canonicalize?: boolean): CSG;
|
||||
invert(): CSG;
|
||||
transform1(matrix4x4: CSG.Matrix4x4): CSG;
|
||||
transform(matrix4x4: CSG.Matrix4x4): CSG;
|
||||
toString(): string;
|
||||
expand(radius: number, resolution: number): CSG;
|
||||
contract(radius: number, resolution: number): CSG;
|
||||
stretchAtPlane(normal: number[], point: number[], length: number): CSG;
|
||||
expandedShell(radius: number, resolution: number, unionWithThis: boolean): CSG;
|
||||
canonicalized(): CSG;
|
||||
reTesselated(): CSG;
|
||||
getBounds(): CSG.Vector3D[];
|
||||
mayOverlap(csg: CSG): boolean;
|
||||
cutByPlane(plane: CSG.Plane): CSG;
|
||||
connectTo(myConnector: CSG.Connector, otherConnector: CSG.Connector, mirror: boolean, normalrotation: number): CSG;
|
||||
setShared(shared: CSG.Polygon.Shared): CSG;
|
||||
setColor(args: any): CSG;
|
||||
toCompactBinary(): {
|
||||
"class": string;
|
||||
numPolygons: number;
|
||||
numVerticesPerPolygon: Uint32Array;
|
||||
polygonPlaneIndexes: Uint32Array;
|
||||
polygonSharedIndexes: Uint32Array;
|
||||
polygonVertices: Uint32Array;
|
||||
vertexData: Float64Array;
|
||||
planeData: Float64Array;
|
||||
shared: CSG.Polygon.Shared[];
|
||||
};
|
||||
toPointCloud(cuberadius: any): CSG;
|
||||
getTransformationAndInverseTransformationToFlatLying(): any;
|
||||
getTransformationToFlatLying(): any;
|
||||
lieFlat(): CSG;
|
||||
projectToOrthoNormalBasis(orthobasis: CSG.OrthoNormalBasis): CAG;
|
||||
sectionCut(orthobasis: CSG.OrthoNormalBasis): CAG;
|
||||
fixTJunctions(): CSG;
|
||||
toTriangles(): any[];
|
||||
getFeatures(features: any): any;
|
||||
center(cAxes: string[]): CxG;
|
||||
toX3D(): Blob;
|
||||
toStlBinary(): Blob;
|
||||
toStlString(): string;
|
||||
toAMFString(m: IAMFStringOptions): Blob;
|
||||
}
|
||||
declare module CSG {
|
||||
function fnNumberSort(a: any, b: any): number;
|
||||
function parseOption(options: any, optionname: any, defaultvalue: any): any;
|
||||
function parseOptionAs3DVector(options: any, optionname: any, defaultvalue: any): Vector3D;
|
||||
function parseOptionAs3DVectorList(options: any, optionname: any, defaultvalue: any): any;
|
||||
function parseOptionAs2DVector(options: any, optionname: any, defaultvalue: any): any;
|
||||
function parseOptionAsFloat(options: any, optionname: any, defaultvalue: any): any;
|
||||
function parseOptionAsInt(options: any, optionname: any, defaultvalue: any): any;
|
||||
function parseOptionAsBool(options: any, optionname: any, defaultvalue: any): any;
|
||||
function cube(options: any): CSG;
|
||||
function sphere(options: any): CSG;
|
||||
function cylinder(options: any): CSG;
|
||||
function roundedCylinder(options: any): CSG;
|
||||
function roundedCube(options: any): CSG;
|
||||
/**
|
||||
* polyhedron accepts openscad style arguments. I.e. define face vertices clockwise looking from outside
|
||||
*/
|
||||
function polyhedron(options: any): CSG;
|
||||
function IsFloat(n: any): boolean;
|
||||
function solve2Linear(a: any, b: any, c: any, d: any, u: any, v: any): number[];
|
||||
class Vector3D extends CxG {
|
||||
x: number;
|
||||
y: number;
|
||||
z: number;
|
||||
constructor(v3: Vector3D);
|
||||
constructor(v2: Vector2D);
|
||||
constructor(v2: number[]);
|
||||
constructor(x: number, y: number);
|
||||
constructor(x: number, y: number, z: number);
|
||||
static Create(x: number, y: number, z: number): Vector3D;
|
||||
clone(): Vector3D;
|
||||
negated(): Vector3D;
|
||||
abs(): Vector3D;
|
||||
plus(a: Vector3D): Vector3D;
|
||||
minus(a: Vector3D): Vector3D;
|
||||
times(a: number): Vector3D;
|
||||
dividedBy(a: number): Vector3D;
|
||||
dot(a: Vector3D): number;
|
||||
lerp(a: Vector3D, t: number): Vector3D;
|
||||
lengthSquared(): number;
|
||||
length(): number;
|
||||
unit(): Vector3D;
|
||||
cross(a: Vector3D): Vector3D;
|
||||
distanceTo(a: Vector3D): number;
|
||||
distanceToSquared(a: Vector3D): number;
|
||||
equals(a: Vector3D): boolean;
|
||||
multiply4x4(matrix4x4: Matrix4x4): Vector3D;
|
||||
transform(matrix4x4: Matrix4x4): Vector3D;
|
||||
toString(): string;
|
||||
randomNonParallelVector(): Vector3D;
|
||||
min(p: Vector3D): Vector3D;
|
||||
max(p: Vector3D): Vector3D;
|
||||
toStlString(): string;
|
||||
toAMFString(): string;
|
||||
}
|
||||
class Vertex extends CxG {
|
||||
pos: Vector3D;
|
||||
tag: number;
|
||||
constructor(pos: Vector3D);
|
||||
static fromObject(obj: any): Vertex;
|
||||
flipped(): Vertex;
|
||||
getTag(): number;
|
||||
interpolate(other: Vertex, t: number): Vertex;
|
||||
transform(matrix4x4: Matrix4x4): Vertex;
|
||||
toString(): string;
|
||||
toStlString(): string;
|
||||
toAMFString(): string;
|
||||
}
|
||||
class Plane extends CxG {
|
||||
normal: Vector3D;
|
||||
w: number;
|
||||
tag: number;
|
||||
constructor(normal: Vector3D, w: number);
|
||||
static fromObject(obj: any): Plane;
|
||||
static EPSILON: number;
|
||||
static fromVector3Ds(a: Vector3D, b: Vector3D, c: Vector3D): Plane;
|
||||
static anyPlaneFromVector3Ds(a: Vector3D, b: Vector3D, c: Vector3D): Plane;
|
||||
static fromPoints(a: Vector3D, b: Vector3D, c: Vector3D): Plane;
|
||||
static fromNormalAndPoint(normal: Vector3D, point: Vector3D): Plane;
|
||||
static fromNormalAndPoint(normal: number[], point: number[]): Plane;
|
||||
flipped(): Plane;
|
||||
getTag(): number;
|
||||
equals(n: Plane): boolean;
|
||||
transform(matrix4x4: Matrix4x4): Plane;
|
||||
splitPolygon(polygon: Polygon): {
|
||||
type: any;
|
||||
front: any;
|
||||
back: any;
|
||||
};
|
||||
splitLineBetweenPoints(p1: Vector3D, p2: Vector3D): Vector3D;
|
||||
intersectWithLine(line3d: Line3D): Vector3D;
|
||||
intersectWithPlane(plane: Plane): Line3D;
|
||||
signedDistanceToPoint(point: Vector3D): number;
|
||||
toString(): string;
|
||||
mirrorPoint(point3d: Vector3D): Vector3D;
|
||||
}
|
||||
class Polygon extends CxG {
|
||||
vertices: Vertex[];
|
||||
shared: Polygon.Shared;
|
||||
plane: Plane;
|
||||
cachedBoundingSphere: any;
|
||||
cachedBoundingBox: Vector3D[];
|
||||
static defaultShared: CSG.Polygon.Shared;
|
||||
constructor(vertices: Vector3D, shared?: Polygon.Shared, plane?: Plane);
|
||||
constructor(vertices: Vertex[], shared?: Polygon.Shared, plane?: Plane);
|
||||
static fromObject(obj: any): Polygon;
|
||||
checkIfConvex(): void;
|
||||
setColor(args: any): Polygon;
|
||||
getSignedVolume(): number;
|
||||
getArea(): number;
|
||||
getTetraFeatures(features: any): any[];
|
||||
extrude(offsetvector: any): CSG;
|
||||
boundingSphere(): any;
|
||||
boundingBox(): Vector3D[];
|
||||
flipped(): Polygon;
|
||||
transform(matrix4x4: Matrix4x4): Polygon;
|
||||
toString(): string;
|
||||
projectToOrthoNormalBasis(orthobasis: OrthoNormalBasis): CAG;
|
||||
/**
|
||||
* Creates solid from slices (CSG.Polygon) by generating walls
|
||||
* @param {Object} options Solid generating options
|
||||
* - numslices {Number} Number of slices to be generated
|
||||
* - callback(t, slice) {Function} Callback function generating slices.
|
||||
* arguments: t = [0..1], slice = [0..numslices - 1]
|
||||
* return: CSG.Polygon or null to skip
|
||||
* - loop {Boolean} no flats, only walls, it's used to generate solids like a tor
|
||||
*/
|
||||
solidFromSlices(options: any): CSG;
|
||||
/**
|
||||
*
|
||||
* @param walls Array of wall polygons
|
||||
* @param bottom Bottom polygon
|
||||
* @param top Top polygon
|
||||
*/
|
||||
private _addWalls(walls, bottom, top, bFlipped);
|
||||
static verticesConvex(vertices: Vertex[], planenormal: any): boolean;
|
||||
static createFromPoints(points: number[][], shared?: CSG.Polygon.Shared, plane?: Plane): Polygon;
|
||||
static isConvexPoint(prevpoint: any, point: any, nextpoint: any, normal: any): boolean;
|
||||
static isStrictlyConvexPoint(prevpoint: any, point: any, nextpoint: any, normal: any): boolean;
|
||||
toStlString(): string;
|
||||
}
|
||||
}
|
||||
declare module CSG.Polygon {
|
||||
class Shared {
|
||||
color: any;
|
||||
tag: any;
|
||||
constructor(color: any);
|
||||
static fromObject(obj: any): Shared;
|
||||
static fromColor(args: any): Shared;
|
||||
getTag(): any;
|
||||
getHash(): any;
|
||||
}
|
||||
}
|
||||
declare module CSG {
|
||||
class PolygonTreeNode {
|
||||
parent: any;
|
||||
children: any;
|
||||
polygon: Polygon;
|
||||
removed: boolean;
|
||||
constructor();
|
||||
addPolygons(polygons: any): void;
|
||||
remove(): void;
|
||||
isRemoved(): boolean;
|
||||
isRootNode(): boolean;
|
||||
invert(): void;
|
||||
getPolygon(): Polygon;
|
||||
getPolygons(result: Polygon[]): void;
|
||||
splitByPlane(plane: any, coplanarfrontnodes: any, coplanarbacknodes: any, frontnodes: any, backnodes: any): void;
|
||||
_splitByPlane(plane: any, coplanarfrontnodes: any, coplanarbacknodes: any, frontnodes: any, backnodes: any): void;
|
||||
addChild(polygon: Polygon): PolygonTreeNode;
|
||||
invertSub(): void;
|
||||
recursivelyInvalidatePolygon(): void;
|
||||
}
|
||||
class Tree {
|
||||
polygonTree: PolygonTreeNode;
|
||||
rootnode: Node;
|
||||
constructor(polygons: Polygon[]);
|
||||
invert(): void;
|
||||
clipTo(tree: Tree, alsoRemovecoplanarFront?: boolean): void;
|
||||
allPolygons(): Polygon[];
|
||||
addPolygons(polygons: Polygon[]): void;
|
||||
}
|
||||
class Node {
|
||||
parent: Node;
|
||||
plane: Plane;
|
||||
front: any;
|
||||
back: any;
|
||||
polygontreenodes: PolygonTreeNode[];
|
||||
constructor(parent: Node);
|
||||
invert(): void;
|
||||
clipPolygons(polygontreenodes: PolygonTreeNode[], alsoRemovecoplanarFront: boolean): void;
|
||||
clipTo(tree: Tree, alsoRemovecoplanarFront: boolean): void;
|
||||
addPolygonTreeNodes(polygontreenodes: PolygonTreeNode[]): void;
|
||||
getParentPlaneNormals(normals: Vector3D[], maxdepth: number): void;
|
||||
}
|
||||
class Matrix4x4 {
|
||||
elements: number[];
|
||||
constructor(elements?: number[]);
|
||||
plus(m: Matrix4x4): Matrix4x4;
|
||||
minus(m: Matrix4x4): Matrix4x4;
|
||||
multiply(m: Matrix4x4): Matrix4x4;
|
||||
clone(): Matrix4x4;
|
||||
rightMultiply1x3Vector(v: Vector3D): Vector3D;
|
||||
leftMultiply1x3Vector(v: Vector3D): Vector3D;
|
||||
rightMultiply1x2Vector(v: Vector2D): Vector2D;
|
||||
leftMultiply1x2Vector(v: Vector2D): Vector2D;
|
||||
isMirroring(): boolean;
|
||||
static unity(): Matrix4x4;
|
||||
static rotationX(degrees: number): Matrix4x4;
|
||||
static rotationY(degrees: number): Matrix4x4;
|
||||
static rotationZ(degrees: number): Matrix4x4;
|
||||
static rotation(rotationCenter: CSG.Vector3D, rotationAxis: CSG.Vector3D, degrees: number): Matrix4x4;
|
||||
static translation(v: number[]): Matrix4x4;
|
||||
static translation(v: Vector3D): Matrix4x4;
|
||||
static mirroring(plane: Plane): Matrix4x4;
|
||||
static scaling(v: number[]): Matrix4x4;
|
||||
static scaling(v: Vector3D): Matrix4x4;
|
||||
}
|
||||
class Vector2D extends CxG {
|
||||
x: number;
|
||||
y: number;
|
||||
constructor(x: number, y: number);
|
||||
constructor(x: number[]);
|
||||
constructor(x: Vector2D);
|
||||
static fromAngle(radians: number): Vector2D;
|
||||
static fromAngleDegrees(degrees: number): Vector2D;
|
||||
static fromAngleRadians(radians: number): Vector2D;
|
||||
static Create(x: number, y: number): Vector2D;
|
||||
toVector3D(z: number): Vector3D;
|
||||
equals(a: Vector2D): boolean;
|
||||
clone(): Vector2D;
|
||||
negated(): Vector2D;
|
||||
plus(a: Vector2D): Vector2D;
|
||||
minus(a: Vector2D): Vector2D;
|
||||
times(a: number): Vector2D;
|
||||
dividedBy(a: number): Vector2D;
|
||||
dot(a: Vector2D): number;
|
||||
lerp(a: Vector2D, t: number): Vector2D;
|
||||
length(): number;
|
||||
distanceTo(a: Vector2D): number;
|
||||
distanceToSquared(a: Vector2D): number;
|
||||
lengthSquared(): number;
|
||||
unit(): Vector2D;
|
||||
cross(a: Vector2D): number;
|
||||
normal(): Vector2D;
|
||||
multiply4x4(matrix4x4: Matrix4x4): Vector2D;
|
||||
transform(matrix4x4: Matrix4x4): Vector2D;
|
||||
angle(): number;
|
||||
angleDegrees(): number;
|
||||
angleRadians(): number;
|
||||
min(p: Vector2D): Vector2D;
|
||||
max(p: Vector2D): Vector2D;
|
||||
toString(): string;
|
||||
abs(): Vector2D;
|
||||
}
|
||||
class Line2D extends CxG {
|
||||
normal: Vector2D;
|
||||
w: number;
|
||||
constructor(normal: Vector2D, w: number);
|
||||
static fromPoints(p1: Vector2D, p2: Vector2D): Line2D;
|
||||
reverse(): Line2D;
|
||||
equals(l: Line2D): boolean;
|
||||
origin(): Vector2D;
|
||||
direction(): Vector2D;
|
||||
xAtY(y: number): number;
|
||||
absDistanceToPoint(point: Vector2D): number;
|
||||
intersectWithLine(line2d: Line2D): Vector2D;
|
||||
transform(matrix4x4: Matrix4x4): Line2D;
|
||||
}
|
||||
class Line3D extends CxG {
|
||||
point: Vector3D;
|
||||
direction: Vector3D;
|
||||
constructor(point: Vector3D, direction: Vector3D);
|
||||
static fromPoints(p1: Vector3D, p2: Vector3D): Line3D;
|
||||
static fromPlanes(p1: Plane, p2: Plane): Line3D;
|
||||
intersectWithPlane(plane: Plane): Vector3D;
|
||||
clone(): Line3D;
|
||||
reverse(): Line3D;
|
||||
transform(matrix4x4: Matrix4x4): Line3D;
|
||||
closestPointOnLine(point: Vector3D): Vector3D;
|
||||
distanceToPoint(point: Vector3D): number;
|
||||
equals(line3d: Line3D): boolean;
|
||||
}
|
||||
class OrthoNormalBasis extends CxG {
|
||||
v: Vector3D;
|
||||
u: Vector3D;
|
||||
plane: Plane;
|
||||
planeorigin: Vector3D;
|
||||
constructor(plane: Plane, rightvector?: Vector3D);
|
||||
static GetCartesian(xaxisid: string, yaxisid: string): OrthoNormalBasis;
|
||||
static Z0Plane(): OrthoNormalBasis;
|
||||
getProjectionMatrix(): Matrix4x4;
|
||||
getInverseProjectionMatrix(): Matrix4x4;
|
||||
to2D(vec3: Vector3D): Vector2D;
|
||||
to3D(vec2: Vector2D): Vector3D;
|
||||
line3Dto2D(line3d: Line3D): Line2D;
|
||||
line2Dto3D(line2d: Line2D): Line3D;
|
||||
transform(matrix4x4: Matrix4x4): OrthoNormalBasis;
|
||||
}
|
||||
function interpolateBetween2DPointsForY(point1: Vector2D, point2: Vector2D, y: number): number;
|
||||
function reTesselateCoplanarPolygons(sourcepolygons: CSG.Polygon[], destpolygons: CSG.Polygon[]): void;
|
||||
class fuzzyFactory {
|
||||
multiplier: number;
|
||||
lookuptable: any;
|
||||
constructor(numdimensions: number, tolerance: number);
|
||||
lookupOrCreate(els: any, creatorCallback: any): any;
|
||||
}
|
||||
class fuzzyCSGFactory {
|
||||
vertexfactory: fuzzyFactory;
|
||||
planefactory: fuzzyFactory;
|
||||
polygonsharedfactory: any;
|
||||
constructor();
|
||||
getPolygonShared(sourceshared: Polygon.Shared): Polygon.Shared;
|
||||
getVertex(sourcevertex: Vertex): Vertex;
|
||||
getPlane(sourceplane: Plane): Plane;
|
||||
getPolygon(sourcepolygon: Polygon): Polygon;
|
||||
getCSG(sourcecsg: CSG): CSG;
|
||||
}
|
||||
var staticTag: number;
|
||||
function getTag(): number;
|
||||
class Properties {
|
||||
cube: Properties;
|
||||
center: any;
|
||||
facecenters: any[];
|
||||
roundedCube: Properties;
|
||||
cylinder: Properties;
|
||||
start: any;
|
||||
end: any;
|
||||
facepointH: any;
|
||||
facepointH90: any;
|
||||
sphere: Properties;
|
||||
facepoint: any;
|
||||
roundedCylinder: any;
|
||||
_transform(matrix4x4: Matrix4x4): Properties;
|
||||
_merge(otherproperties: Properties): Properties;
|
||||
static transformObj(source: any, result: any, matrix4x4: Matrix4x4): void;
|
||||
static cloneObj(source: any, result: any): void;
|
||||
static addFrom(result: any, otherproperties: Properties): void;
|
||||
}
|
||||
class Connector extends CxG {
|
||||
point: Vector3D;
|
||||
axisvector: Vector3D;
|
||||
normalvector: Vector3D;
|
||||
constructor(point: number[], axisvector: Vector3D, normalvector: number[]);
|
||||
constructor(point: number[], axisvector: number[], normalvector: number[]);
|
||||
constructor(point: number[], axisvector: number[], normalvector: Vector3D);
|
||||
constructor(point: Vector3D, axisvector: number[], normalvector: Vector3D);
|
||||
constructor(point: Vector3D, axisvector: number[], normalvector: number[]);
|
||||
constructor(point: Vector3D, axisvector: Vector3D, normalvector: Vector3D);
|
||||
normalized(): Connector;
|
||||
transform(matrix4x4: Matrix4x4): Connector;
|
||||
getTransformationTo(other: Connector, mirror: boolean, normalrotation: number): Matrix4x4;
|
||||
axisLine(): Line3D;
|
||||
extend(distance: number): Connector;
|
||||
}
|
||||
class ConnectorList {
|
||||
connectors_: Connector[];
|
||||
closed: boolean;
|
||||
constructor(connectors: Connector[]);
|
||||
static defaultNormal: number[];
|
||||
static fromPath2D(path2D: CSG.Path2D, arg1: any, arg2: any): ConnectorList;
|
||||
static _fromPath2DTangents(path2D: any, start: any, end: any): ConnectorList;
|
||||
static _fromPath2DExplicit(path2D: any, angleIsh: any): ConnectorList;
|
||||
setClosed(bool: boolean): void;
|
||||
appendConnector(conn: Connector): void;
|
||||
followWith(cagish: any): CSG;
|
||||
verify(): void;
|
||||
}
|
||||
interface IRadiusOptions {
|
||||
radius?: number;
|
||||
resolution?: number;
|
||||
}
|
||||
interface ICircleOptions extends IRadiusOptions {
|
||||
center?: Vector2D | number[];
|
||||
}
|
||||
interface IArcOptions extends ICircleOptions {
|
||||
startangle?: number;
|
||||
endangle?: number;
|
||||
maketangent?: boolean;
|
||||
}
|
||||
interface IEllpiticalArcOptions extends IRadiusOptions {
|
||||
clockwise?: boolean;
|
||||
large?: boolean;
|
||||
xaxisrotation?: number;
|
||||
xradius?: number;
|
||||
yradius?: number;
|
||||
}
|
||||
interface IRectangleOptions {
|
||||
center?: Vector2D;
|
||||
corner1?: Vector2D;
|
||||
corner2?: Vector2D;
|
||||
radius?: Vector2D;
|
||||
}
|
||||
interface IRoundRectangleOptions {
|
||||
roundradius: number;
|
||||
resolution?: number;
|
||||
}
|
||||
class Path2D extends CxG {
|
||||
closed: boolean;
|
||||
points: Vector2D[];
|
||||
lastBezierControlPoint: Vector2D;
|
||||
constructor(points: number[], closed?: boolean);
|
||||
constructor(points: Vector2D[], closed?: boolean);
|
||||
static arc(options: IArcOptions): Path2D;
|
||||
concat(otherpath: Path2D): Path2D;
|
||||
appendPoint(point: Vector2D): Path2D;
|
||||
appendPoints(points: Vector2D[]): Path2D;
|
||||
close(): Path2D;
|
||||
rectangularExtrude(width: number, height: number, resolution: number): CSG;
|
||||
expandToCAG(pathradius: number, resolution: number): CAG;
|
||||
innerToCAG(): CAG;
|
||||
transform(matrix4x4: Matrix4x4): Path2D;
|
||||
appendBezier(controlpoints: any, options: any): Path2D;
|
||||
appendArc(endpoint: Vector2D, options: IEllpiticalArcOptions): Path2D;
|
||||
}
|
||||
}
|
||||
declare class CAG extends CxG implements ICenter {
|
||||
sides: CAG.Side[];
|
||||
isCanonicalized: boolean;
|
||||
constructor();
|
||||
static fromSides(sides: CAG.Side[]): CAG;
|
||||
static fromPoints(points: CSG.Vector2D[]): CAG;
|
||||
static fromPointsNoCheck(points: CSG.Vector2D[]): CAG;
|
||||
static fromFakeCSG(csg: CSG): CAG;
|
||||
static linesIntersect(p0start: CSG.Vector2D, p0end: CSG.Vector2D, p1start: CSG.Vector2D, p1end: CSG.Vector2D): boolean;
|
||||
static circle(options: CSG.ICircleOptions): CAG;
|
||||
static rectangle(options: CSG.IRectangleOptions): CAG;
|
||||
static roundedRectangle(options: any): CAG;
|
||||
static fromCompactBinary(bin: any): CAG;
|
||||
toString(): string;
|
||||
_toCSGWall(z0: any, z1: any): CSG;
|
||||
_toVector3DPairs(m: CSG.Matrix4x4): CSG.Vector3D[][];
|
||||
_toPlanePolygons(options: any): CSG.Polygon[];
|
||||
_toWallPolygons(options: any): any[];
|
||||
union(cag: CAG[]): CAG;
|
||||
union(cag: CAG): CAG;
|
||||
subtract(cag: CAG[]): CAG;
|
||||
subtract(cag: CAG): CAG;
|
||||
intersect(cag: CAG[]): CAG;
|
||||
intersect(cag: CAG): CAG;
|
||||
transform(matrix4x4: CSG.Matrix4x4): CAG;
|
||||
area(): number;
|
||||
flipped(): CAG;
|
||||
getBounds(): CSG.Vector2D[];
|
||||
isSelfIntersecting(): boolean;
|
||||
expandedShell(radius: number, resolution: number): CAG;
|
||||
expand(radius: number, resolution: number): CAG;
|
||||
contract(radius: number, resolution: number): CAG;
|
||||
extrudeInOrthonormalBasis(orthonormalbasis: CSG.OrthoNormalBasis, depth: number, options?: any): CSG;
|
||||
extrudeInPlane(axis1: any, axis2: any, depth: any, options: any): CSG;
|
||||
extrude(options: CAG_extrude_options): CSG;
|
||||
rotateExtrude(options: any): CSG;
|
||||
check(): void;
|
||||
canonicalized(): CAG;
|
||||
toCompactBinary(): {
|
||||
'class': string;
|
||||
sideVertexIndices: Uint32Array;
|
||||
vertexData: Float64Array;
|
||||
};
|
||||
getOutlinePaths(): CSG.Path2D[];
|
||||
overCutInsideCorners(cutterradius: any): CAG;
|
||||
center(cAxes: string[]): CxG;
|
||||
toDxf(): Blob;
|
||||
static PathsToDxf(paths: CSG.Path2D[]): Blob;
|
||||
}
|
||||
declare module CAG {
|
||||
class Vertex {
|
||||
pos: CSG.Vector2D;
|
||||
tag: number;
|
||||
constructor(pos: CSG.Vector2D);
|
||||
toString(): string;
|
||||
getTag(): number;
|
||||
}
|
||||
class Side extends CxG {
|
||||
vertex0: Vertex;
|
||||
vertex1: Vertex;
|
||||
tag: number;
|
||||
constructor(vertex0: Vertex, vertex1: Vertex);
|
||||
static _fromFakePolygon(polygon: CSG.Polygon): Side;
|
||||
toString(): string;
|
||||
toPolygon3D(z0: any, z1: any): CSG.Polygon;
|
||||
transform(matrix4x4: CSG.Matrix4x4): Side;
|
||||
flipped(): Side;
|
||||
direction(): CSG.Vector2D;
|
||||
getTag(): number;
|
||||
lengthSquared(): number;
|
||||
length(): number;
|
||||
}
|
||||
class fuzzyCAGFactory {
|
||||
vertexfactory: CSG.fuzzyFactory;
|
||||
constructor();
|
||||
getVertex(sourcevertex: Vertex): Vertex;
|
||||
getSide(sourceside: Side): Side;
|
||||
getCAG(sourcecag: CAG): CAG;
|
||||
}
|
||||
}
|
||||
interface CAG_extrude_options {
|
||||
offset?: number[];
|
||||
twistangle?: number;
|
||||
twiststeps?: number;
|
||||
}
|
||||
declare module CSG {
|
||||
class Polygon2D extends CAG {
|
||||
constructor(points: Vector2D[]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
|
||||
/// <reference path="PayPal-Cordova-Plugin.d.ts"/>
|
||||
|
||||
var item: PayPalItem;
|
||||
item = new PayPalItem("name", 10, "25.00", "USD");
|
||||
item = new PayPalItem("name", 10, "25.00", "USD", null);
|
||||
item = new PayPalItem("name", 10, "25.00", "USD", "SKU_ID");
|
||||
|
||||
var item_name: string = item.name;
|
||||
var item_quantity: number = item.quantity;
|
||||
var item_price: string = item.price;
|
||||
var item_currency: string = item.currency;
|
||||
var item_sku: string = item.sku;
|
||||
|
||||
|
||||
|
||||
var paymentDetails: PayPalPaymentDetails;
|
||||
paymentDetails = new PayPalPaymentDetails("10.50", "2.50", "1.25");
|
||||
|
||||
var paymentDetails_subtotal: string = paymentDetails.subtotal;
|
||||
var paymentDetails_shipping: string = paymentDetails.shipping;
|
||||
var paymentDetails_tax: string = paymentDetails.tax;
|
||||
|
||||
|
||||
|
||||
var shippingAddress: PayPalShippingAddress;
|
||||
shippingAddress = new PayPalShippingAddress("name", "line1", "line2", "city", "state", "postalCode", "countryCode");
|
||||
|
||||
var shippingAddress_recipientName: string = shippingAddress.recipientName;
|
||||
var shippingAddress_line1: string = shippingAddress.line1;
|
||||
var shippingAddress_line2: string = shippingAddress.line2;
|
||||
var shippingAddress_city: string = shippingAddress.city;
|
||||
var shippingAddress_state: string = shippingAddress.state;
|
||||
var shippingAddress_postalCode: string = shippingAddress.postalCode;
|
||||
var shippingAddress_countryCode: string = shippingAddress.countryCode;
|
||||
|
||||
|
||||
|
||||
var payment: PayPalPayment;
|
||||
payment = new PayPalPayment("10.00", "USD", "description", "Auth");
|
||||
payment = new PayPalPayment("10.00", "USD", "description", "Auth", paymentDetails);
|
||||
|
||||
var payment_amount: string = payment.amount;
|
||||
var payment_currency: string = payment.currency;
|
||||
var payment_shortDescription: string = payment.shortDescription;
|
||||
var payment_intent: string = payment.intent;
|
||||
var payment_details: PayPalPaymentDetails = payment.details;
|
||||
var payment_invoiceNumber: string = payment.invoiceNumber;
|
||||
var payment_custom: string = payment.custom;
|
||||
var payment_softDescriptor: string = payment.softDescriptor;
|
||||
var payment_bnCode: string = payment.bnCode;
|
||||
var payment_items: PayPalItem[] = [item, item, item];
|
||||
var payment_shippingAddress: PayPalShippingAddress = shippingAddress;
|
||||
|
||||
|
||||
|
||||
var configOptions: PayPalConfigurationOptions = {
|
||||
defaultUserEmail: "email",
|
||||
defaultUserPhoneCountryCode: "countryCode",
|
||||
defaultUserPhoneNumber: "phoneNumber",
|
||||
merchantName: "merchantName",
|
||||
merchantPrivacyPolicyURL: "merchantPrivacyPolicyURL",
|
||||
merchantUserAgreementURL: "merchantUserAgreementURL",
|
||||
acceptCreditCards: true,
|
||||
payPalShippingAddressOption: 10,
|
||||
rememberUser: true,
|
||||
languageOrLocale: "languageOrLocal",
|
||||
disableBlurWhenBackgrounding: true,
|
||||
presentingInPopover: true,
|
||||
forceDefaultsInSandbox: true,
|
||||
sandboxUserPassword: "sandboxUserPassword",
|
||||
sandboxUserPin: "sandboxUserPin"
|
||||
};
|
||||
|
||||
|
||||
|
||||
var config: PayPalConfiguration;
|
||||
config = new PayPalConfiguration();
|
||||
config = new PayPalConfiguration(null);
|
||||
config = new PayPalConfiguration(configOptions);
|
||||
|
||||
var config_defaultUserEmail: string = config.defaultUserEmail;
|
||||
var config_defaultUserPhoneCountryCode: string = config.defaultUserPhoneCountryCode;
|
||||
var config_defaultUserPhoneNumber: string = config.defaultUserPhoneNumber;
|
||||
var config_merchantName: string = config.merchantName;
|
||||
var config_merchantPrivacyPolicyURL: string = config.merchantPrivacyPolicyURL;
|
||||
var config_merchantUserAgreementURL: string = config.merchantUserAgreementURL;
|
||||
var config_acceptCreditCards: boolean = config.acceptCreditCards;
|
||||
var config_payPalShippingAddressOption: number = config.payPalShippingAddressOption;
|
||||
var config_rememberUser: boolean = config.rememberUser;
|
||||
var config_languageOrLocale: string = config.languageOrLocale;
|
||||
var config_disableBlurWhenBackgrounding: boolean = config.disableBlurWhenBackgrounding;
|
||||
var config_presentingInPopover: boolean = config.presentingInPopover;
|
||||
var config_forceDefaultsInSandbox: boolean = config.forceDefaultsInSandbox;
|
||||
var config_sandboxUserPasword: string = config.sandboxUserPassword;
|
||||
var config_sandboxUserPin: string = config.sandboxUserPin;
|
||||
|
||||
|
||||
|
||||
var clientIds: PayPalCordovaPlugin.PayPalClientIds = {
|
||||
PayPalEnvironmentProduction: "",
|
||||
PayPalEnvironmentSandbox: ""
|
||||
};
|
||||
|
||||
|
||||
|
||||
var apiModule: PayPalCordovaPlugin.PayPalMobileStatic = PayPalMobile;
|
||||
apiModule.version((result: string) => {});
|
||||
apiModule.init(clientIds, () => {});
|
||||
apiModule.prepareToRender("environment", config, () => {});
|
||||
apiModule.renderSinglePaymentUI(payment, (result: any) => {}, (cancelReason: string) => {});
|
||||
apiModule.applicationCorrelationIDForEnvironment("environment", (applicationCorrelationId: string) => {});
|
||||
apiModule.clientMetadataID((clientMetadataId: string) => {});
|
||||
apiModule.renderFuturePaymentUI((result: any) => {}, (cancelReason: string) => {});
|
||||
apiModule.renderProfileSharingUI(["openid", "profile", "email"], (result: any) => {}, (cancelReason: string) => {});
|
||||
+615
@@ -0,0 +1,615 @@
|
||||
// Type definitions for PayPal-Cordova-Plugin 3.1.10
|
||||
// Project: https://github.com/paypal/PayPal-Cordova-Plugin
|
||||
// Definitions by: Justin Unterreiner <https://github.com/Justin-Credible>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
//#region paypal-mobile-js-helper.js
|
||||
|
||||
/**
|
||||
* The PayPalItem class defines an optional itemization for a payment.
|
||||
*
|
||||
* @see https://developer.paypal.com/docs/api/#item-object for more details.
|
||||
*/
|
||||
declare class PayPalItem {
|
||||
|
||||
/**
|
||||
* @param name Name of the item. 127 characters max.
|
||||
* @param quantity Number of units. 10 characters max.
|
||||
* @param price Unit price for this item 10 characters max.
|
||||
* May be negative for "coupon" etc.
|
||||
* @param currency ISO standard currency code.
|
||||
* @param sku The stock keeping unit for this item. 50 characters max (optional).
|
||||
*/
|
||||
constructor(name: string, quantity: number, price: string, currency: string, sku?: string);
|
||||
|
||||
/**
|
||||
* Name of the item. 127 characters max.
|
||||
*/
|
||||
name: string;
|
||||
|
||||
/**
|
||||
* Number of units. 10 characters max.
|
||||
*/
|
||||
quantity: number;
|
||||
|
||||
/**
|
||||
* Unit price for this item 10 characters max.
|
||||
* May be negative for "coupon" etc.
|
||||
*/
|
||||
price: string;
|
||||
|
||||
/**
|
||||
* ISO standard currency code.
|
||||
*/
|
||||
currency: string;
|
||||
|
||||
/**
|
||||
* The stock keeping unit for this item. 50 characters max (optional).
|
||||
*/
|
||||
sku: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* The PayPalPaymentDetails class defines optional amount details.
|
||||
*
|
||||
* @see https://developer.paypal.com/webapps/developer/docs/api/#details-object for more details.
|
||||
*/
|
||||
declare class PayPalPaymentDetails {
|
||||
|
||||
/**
|
||||
* @param subtotal Sub-total (amount) of items being paid for. 10 characters max with support for 2 decimal places.
|
||||
* @param shipping Amount charged for shipping. 10 characters max with support for 2 decimal places.
|
||||
* @param tax Amount charged for tax. 10 characters max with support for 2 decimal places.
|
||||
*/
|
||||
constructor(subtotal: string, shipping: string, tax: string);
|
||||
|
||||
/**
|
||||
* Sub-total (amount) of items being paid for. 10 characters max with support for 2 decimal places.
|
||||
*/
|
||||
subtotal: string;
|
||||
|
||||
/**
|
||||
* Amount charged for shipping. 10 characters max with support for 2 decimal places.
|
||||
*/
|
||||
shipping: string;
|
||||
|
||||
/**
|
||||
* Amount charged for tax. 10 characters max with support for 2 decimal places.
|
||||
*/
|
||||
tax: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience constructor. Returns a PayPalPayment with the specified amount, currency code, and short description.
|
||||
*/
|
||||
declare class PayPalPayment {
|
||||
|
||||
/**
|
||||
* @param amount The amount of the payment.
|
||||
* @param currencyCode The ISO 4217 currency for the payment.
|
||||
* @param shortDescription A short descripton of the payment.
|
||||
* @param intent • "Sale" for an immediate payment.
|
||||
* • "Auth" for payment authorization only, to be captured separately at a later time.
|
||||
* • "Order" for taking an order, with authorization and capture to be done separately at a later time.
|
||||
* @param details PayPalPaymentDetails object (optional).
|
||||
*/
|
||||
constructor(amount: string, currency: string, shortDescription: string, intent: string, details?: PayPalPaymentDetails);
|
||||
|
||||
/**
|
||||
* The amount of the payment.
|
||||
*/
|
||||
amount: string;
|
||||
|
||||
/**
|
||||
* The ISO 4217 currency for the payment.
|
||||
*/
|
||||
currency: string;
|
||||
|
||||
/**
|
||||
* A short descripton of the payment.
|
||||
*/
|
||||
shortDescription: string;
|
||||
|
||||
/**
|
||||
* • "Sale" for an immediate payment.
|
||||
* • "Auth" for payment authorization only, to be captured separately at a later time.
|
||||
* • "Order" for taking an order, with authorization and capture to be done separately at a later time.
|
||||
*/
|
||||
intent: string;
|
||||
|
||||
/**
|
||||
* PayPalPaymentDetails object (optional).
|
||||
*/
|
||||
details: PayPalPaymentDetails;
|
||||
|
||||
/**
|
||||
* Optional invoice number, for your tracking purposes. (up to 256 characters).
|
||||
*/
|
||||
invoiceNumber: string;
|
||||
|
||||
/**
|
||||
* Optional text, for your tracking purposes. (up to 256 characters).
|
||||
*/
|
||||
custom: string;
|
||||
|
||||
/**
|
||||
* Optional text which will appear on the customer's credit card statement. (up to 22 characters).
|
||||
*/
|
||||
softDescriptor: string;
|
||||
|
||||
/**
|
||||
* Optional Build Notation code ("BN code"), obtained from partnerprogram@paypal.com, for your tracking purposes.
|
||||
*/
|
||||
bnCode: string;
|
||||
|
||||
/**
|
||||
* Optional array of PayPalItem objects.
|
||||
* @see PayPalItem
|
||||
* @note If you provide one or more items, be sure that the various prices correctly sum to the payment `amount` or to `paymentDetails.subtotal`.
|
||||
*/
|
||||
items: PayPalItem[];
|
||||
|
||||
/**
|
||||
* Optional customer shipping address, if your app wishes to provide this to the SDK.
|
||||
* @note make sure to set `payPalShippingAddressOption` in PayPalConfiguration to 1 or 3.
|
||||
*/
|
||||
shippingAddress: PayPalShippingAddress;
|
||||
}
|
||||
|
||||
declare class PayPalShippingAddress {
|
||||
|
||||
/**
|
||||
* @param recipientName Name of the recipient at this address. 50 characters max.
|
||||
* @param line1 Line 1 of the address (e.g., Number, street, etc). 100 characters max.
|
||||
* @param line2 Line 2 of the address (e.g., Suite, apt #, etc). 100 characters max. Optional.
|
||||
* @param city City name. 50 characters max.
|
||||
* @param state 2-letter code for US states, and the equivalent for other countries. 100 characters max. Required in certain countries.
|
||||
* @param postalCode ZIP code or equivalent is usually required for countries that have them. 20 characters max. Required in certain countries.
|
||||
* @param countryCode 2-letter country code. 2 characters max.
|
||||
*/
|
||||
constructor(recipientName: string, line1: string, line2: string, city: string, state: string, postalCode: string, countryCode: string);
|
||||
|
||||
/**
|
||||
* Name of the recipient at this address. 50 characters max.
|
||||
*/
|
||||
recipientName: string;
|
||||
|
||||
/**
|
||||
* Line 1 of the address (e.g., Number, street, etc). 100 characters max.
|
||||
*/
|
||||
line1: string;
|
||||
|
||||
/**
|
||||
* Line 2 of the address (e.g., Suite, apt #, etc). 100 characters max. Optional.
|
||||
*/
|
||||
line2: string;
|
||||
|
||||
/**
|
||||
* City name. 50 characters max.
|
||||
*/
|
||||
city: string;
|
||||
|
||||
/**
|
||||
* 2-letter code for US states, and the equivalent for other countries. 100 characters max. Required in certain countries.
|
||||
*/
|
||||
state: string;
|
||||
|
||||
/**
|
||||
* ZIP code or equivalent is usually required for countries that have them. 20 characters max. Required in certain countries.
|
||||
*/
|
||||
postalCode: string;
|
||||
|
||||
/**
|
||||
* 2-letter country code. 2 characters max.
|
||||
*/
|
||||
countryCode: string;
|
||||
}
|
||||
|
||||
declare class PayPalConfiguration {
|
||||
|
||||
/**
|
||||
* @param options A set of options to use. Any options not specified will assume default values.
|
||||
*/
|
||||
constructor(options?: PayPalConfigurationOptions);
|
||||
|
||||
/**
|
||||
* Will be overridden by email used in most recent PayPal login.
|
||||
*/
|
||||
defaultUserEmail: string;
|
||||
|
||||
/**
|
||||
* Will be overridden by phone country code used in most recent PayPal login
|
||||
*/
|
||||
defaultUserPhoneCountryCode: string;
|
||||
|
||||
/**
|
||||
* Will be overridden by phone number used in most recent PayPal login.
|
||||
* @note If you set defaultUserPhoneNumber, be sure to also set defaultUserPhoneCountryCode.
|
||||
*/
|
||||
defaultUserPhoneNumber: string;
|
||||
|
||||
/**
|
||||
* Your company name, as it should be displayed to the user
|
||||
* when requesting consent via a PayPalFuturePaymentViewController.
|
||||
*/
|
||||
merchantName: string;
|
||||
|
||||
/**
|
||||
* URL of your company's privacy policy, which will be offered to the user
|
||||
* when requesting consent via a PayPalFuturePaymentViewController.
|
||||
*/
|
||||
merchantPrivacyPolicyURL: string;
|
||||
|
||||
/**
|
||||
* URL of your company's user agreement, which will be offered to the user
|
||||
* when requesting consent via a PayPalFuturePaymentViewController.
|
||||
*/
|
||||
merchantUserAgreementURL: string;
|
||||
|
||||
/**
|
||||
* If set to false, the SDK will only support paying with PayPal, not with credit cards.
|
||||
* This applies only to single payments (via PayPalPaymentViewController).
|
||||
* Future payments (via PayPalFuturePaymentViewController) always use PayPal.
|
||||
* Defaults to true.
|
||||
*/
|
||||
acceptCreditCards: boolean;
|
||||
|
||||
/**
|
||||
* For single payments, options for the shipping address.
|
||||
*
|
||||
* - 0 - PayPalShippingAddressOptionNone: no shipping address applies.
|
||||
*
|
||||
* - 1 - PayPalShippingAddressOptionProvided: shipping address will be provided by your app,
|
||||
* in the shippingAddress property of PayPalPayment.
|
||||
*
|
||||
* - 2 - PayPalShippingAddressOptionPayPal: user will choose from shipping addresses on file
|
||||
* for their PayPal account.
|
||||
*
|
||||
* - 3 - PayPalShippingAddressOptionBoth: user will choose from the shipping address provided by your app,
|
||||
* in the shippingAddress property of PayPalPayment, plus the shipping addresses on file for the user's PayPal account.
|
||||
*
|
||||
* Defaults to 0 (PayPalShippingAddressOptionNone).
|
||||
*/
|
||||
payPalShippingAddressOption: number;
|
||||
|
||||
/**
|
||||
* If set to true, then if the user pays via their PayPal account,
|
||||
* the SDK will remember the user's PayPal username or phone number;
|
||||
* if the user pays via their credit card, then the SDK will remember
|
||||
* the PayPal Vault token representing the user's credit card.
|
||||
*
|
||||
* If set to false, then any previously-remembered username, phone number, or
|
||||
* credit card token will be erased, and subsequent payment information will
|
||||
* not be remembered.
|
||||
*
|
||||
* Defaults to true.
|
||||
*/
|
||||
rememberUser: boolean;
|
||||
|
||||
/**
|
||||
* If not set, or if set to nil, defaults to the device's current language setting.
|
||||
*
|
||||
* Can be specified as a language code ("en", "fr", "zh-Hans", etc.) or as a locale ("en_AU", "fr_FR", "zh-Hant_HK", etc.).
|
||||
* If the library does not contain localized strings for a specified locale, then will fall back to the language. E.g., "es_CO" -> "es".
|
||||
* If the library does not contain localized strings for a specified language, then will fall back to American English.
|
||||
*
|
||||
* If you specify only a language code, and that code matches the device's currently preferred language,
|
||||
* then the library will attempt to use the device's current region as well.
|
||||
* E.g., specifying "en" on a device set to "English" and "United Kingdom" will result in "en_GB".
|
||||
*
|
||||
* These localizations are currently included:
|
||||
* da,de,en,en_AU,en_GB,en_SV,es,es_MX,fr,he,it,ja,ko,nb,nl,pl,pt,pt_BR,ru,sv,tr,zh-Hans,zh-Hant_HK,zh-Hant_TW.
|
||||
*/
|
||||
languageOrLocale: string;
|
||||
|
||||
/**
|
||||
* Normally, the SDK blurs the screen when the app is backgrounded,
|
||||
* to obscure credit card or PayPal account details in the iOS-saved screenshot.
|
||||
* If your app already does its own blurring upon backgrounding, you might choose to disable this.
|
||||
* Defaults to false.
|
||||
*/
|
||||
disableBlurWhenBackgrounding: boolean;
|
||||
|
||||
/**
|
||||
* If you will present the SDK's view controller within a popover, then set this property to true.
|
||||
* Defaults to false. (iOS only)
|
||||
*/
|
||||
presentingInPopover: boolean;
|
||||
|
||||
/**
|
||||
* Sandbox credentials can be difficult to type on a mobile device. Setting this flag to true will
|
||||
* cause the sandboxUserPassword and sandboxUserPin to always be pre-populated into login fields.
|
||||
*
|
||||
* This setting will have no effect if the operation mode is production.
|
||||
* Defaults to false.
|
||||
*/
|
||||
forceDefaultsInSandbox: boolean;
|
||||
|
||||
/**
|
||||
* Password to use for sandbox if 'forceDefaultsInSandbox' is set.
|
||||
*/
|
||||
sandboxUserPassword: string;
|
||||
|
||||
/**
|
||||
* PIN to use for sandbox if 'forceDefaultsInSandbox' is set.
|
||||
*/
|
||||
sandboxUserPin: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes the options that can be passed into the PayPalConfiguration class constructor.
|
||||
*/
|
||||
interface PayPalConfigurationOptions {
|
||||
|
||||
/**
|
||||
* Will be overridden by email used in most recent PayPal login.
|
||||
*/
|
||||
defaultUserEmail?: string;
|
||||
|
||||
/**
|
||||
* Will be overridden by phone country code used in most recent PayPal login
|
||||
*/
|
||||
defaultUserPhoneCountryCode?: string;
|
||||
|
||||
/**
|
||||
* Will be overridden by phone number used in most recent PayPal login.
|
||||
* @note If you set defaultUserPhoneNumber, be sure to also set defaultUserPhoneCountryCode.
|
||||
*/
|
||||
defaultUserPhoneNumber?: string;
|
||||
|
||||
/**
|
||||
* Your company name, as it should be displayed to the user
|
||||
* when requesting consent via a PayPalFuturePaymentViewController.
|
||||
*/
|
||||
merchantName?: string;
|
||||
|
||||
/**
|
||||
* URL of your company's privacy policy, which will be offered to the user
|
||||
* when requesting consent via a PayPalFuturePaymentViewController.
|
||||
*/
|
||||
merchantPrivacyPolicyURL?: string;
|
||||
|
||||
/**
|
||||
* URL of your company's user agreement, which will be offered to the user
|
||||
* when requesting consent via a PayPalFuturePaymentViewController.
|
||||
*/
|
||||
merchantUserAgreementURL?: string;
|
||||
|
||||
/**
|
||||
* If set to false, the SDK will only support paying with PayPal, not with credit cards.
|
||||
* This applies only to single payments (via PayPalPaymentViewController).
|
||||
* Future payments (via PayPalFuturePaymentViewController) always use PayPal.
|
||||
* Defaults to true.
|
||||
*/
|
||||
acceptCreditCards?: boolean;
|
||||
|
||||
/**
|
||||
* For single payments, options for the shipping address.
|
||||
*
|
||||
* - 0 - PayPalShippingAddressOptionNone?: no shipping address applies.
|
||||
*
|
||||
* - 1 - PayPalShippingAddressOptionProvided?: shipping address will be provided by your app,
|
||||
* in the shippingAddress property of PayPalPayment.
|
||||
*
|
||||
* - 2 - PayPalShippingAddressOptionPayPal?: user will choose from shipping addresses on file
|
||||
* for their PayPal account.
|
||||
*
|
||||
* - 3 - PayPalShippingAddressOptionBoth?: user will choose from the shipping address provided by your app,
|
||||
* in the shippingAddress property of PayPalPayment, plus the shipping addresses on file for the user's PayPal account.
|
||||
*
|
||||
* Defaults to 0 (PayPalShippingAddressOptionNone).
|
||||
*/
|
||||
payPalShippingAddressOption?: number;
|
||||
|
||||
/**
|
||||
* If set to true, then if the user pays via their PayPal account,
|
||||
* the SDK will remember the user's PayPal username or phone number;
|
||||
* if the user pays via their credit card, then the SDK will remember
|
||||
* the PayPal Vault token representing the user's credit card.
|
||||
*
|
||||
* If set to false, then any previously-remembered username, phone number, or
|
||||
* credit card token will be erased, and subsequent payment information will
|
||||
* not be remembered.
|
||||
*
|
||||
* Defaults to true.
|
||||
*/
|
||||
rememberUser?: boolean;
|
||||
|
||||
/**
|
||||
* If not set, or if set to nil, defaults to the device's current language setting.
|
||||
*
|
||||
* Can be specified as a language code ("en", "fr", "zh-Hans", etc.) or as a locale ("en_AU", "fr_FR", "zh-Hant_HK", etc.).
|
||||
* If the library does not contain localized strings for a specified locale, then will fall back to the language. E.g., "es_CO" -> "es".
|
||||
* If the library does not contain localized strings for a specified language, then will fall back to American English.
|
||||
*
|
||||
* If you specify only a language code, and that code matches the device's currently preferred language,
|
||||
* then the library will attempt to use the device's current region as well.
|
||||
* E.g., specifying "en" on a device set to "English" and "United Kingdom" will result in "en_GB".
|
||||
*
|
||||
* These localizations are currently included:
|
||||
* da,de,en,en_AU,en_GB,en_SV,es,es_MX,fr,he,it,ja,ko,nb,nl,pl,pt,pt_BR,ru,sv,tr,zh-Hans,zh-Hant_HK,zh-Hant_TW.
|
||||
*/
|
||||
languageOrLocale?: string;
|
||||
|
||||
/**
|
||||
* Normally, the SDK blurs the screen when the app is backgrounded,
|
||||
* to obscure credit card or PayPal account details in the iOS-saved screenshot.
|
||||
* If your app already does its own blurring upon backgrounding, you might choose to disable this.
|
||||
* Defaults to false.
|
||||
*/
|
||||
disableBlurWhenBackgrounding?: boolean;
|
||||
|
||||
/**
|
||||
* If you will present the SDK's view controller within a popover, then set this property to true.
|
||||
* Defaults to false. (iOS only)
|
||||
*/
|
||||
presentingInPopover?: boolean;
|
||||
|
||||
/**
|
||||
* Sandbox credentials can be difficult to type on a mobile device. Setting this flag to true will
|
||||
* cause the sandboxUserPassword and sandboxUserPin to always be pre-populated into login fields.
|
||||
*
|
||||
* This setting will have no effect if the operation mode is production.
|
||||
* Defaults to false.
|
||||
*/
|
||||
forceDefaultsInSandbox?: boolean;
|
||||
|
||||
/**
|
||||
* Password to use for sandbox if 'forceDefaultsInSandbox' is set.
|
||||
*/
|
||||
sandboxUserPassword?: string;
|
||||
|
||||
/**
|
||||
* PIN to use for sandbox if 'forceDefaultsInSandbox' is set.
|
||||
*/
|
||||
sandboxUserPin?: string;
|
||||
}
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region cdv-plugin-paypal-mobile-sdk.js
|
||||
|
||||
declare module PayPalCordovaPlugin {
|
||||
|
||||
export interface PayPalClientIds {
|
||||
PayPalEnvironmentProduction: string;
|
||||
PayPalEnvironmentSandbox: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the portion of an object that is common to all responses.
|
||||
*/
|
||||
export interface BaseResult {
|
||||
client: Client;
|
||||
response_type: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the client portion of the response.
|
||||
*/
|
||||
export interface Client {
|
||||
paypal_sdk_version: string;
|
||||
environment: string;
|
||||
platform: string;
|
||||
product_name: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the response for a successful callback from renderSinglePaymentUI().
|
||||
*/
|
||||
export interface SinglePaymentResult extends BaseResult {
|
||||
response: {
|
||||
intent: string;
|
||||
id: string;
|
||||
state: string;
|
||||
authorization_id: string;
|
||||
create_time: string;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents the response for a successful callback from renderFuturePaymentUI().
|
||||
*/
|
||||
export interface FuturePaymentResult extends BaseResult {
|
||||
response: {
|
||||
code: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface PayPalMobileStatic {
|
||||
/**
|
||||
* Retrieve the version of the PayPal iOS SDK library. Useful when contacting support.
|
||||
*
|
||||
* @param completionCallback a callback function accepting a string
|
||||
*/
|
||||
version(completionCallback: (result: string) => void): void;
|
||||
|
||||
/**
|
||||
* You MUST call this method to initialize the PayPal Mobile SDK.
|
||||
*
|
||||
* The PayPal Mobile SDK can operate in different environments to facilitate development and testing.
|
||||
*
|
||||
* @param clientIdsForEnvironments set of client ids for environments
|
||||
* Example: var clientIdsForEnvironments = {
|
||||
* PayPalEnvironmentProduction : @"my-client-id-for-Production",
|
||||
* PayPalEnvironmentSandbox : @"my-client-id-for-Sandbox"
|
||||
* }
|
||||
* @param completionCallback a callback function on success
|
||||
*/
|
||||
init(clientIdsForEnvironments: PayPalCordovaPlugin.PayPalClientIds, completionCallback: () => void): void;
|
||||
|
||||
/**
|
||||
* You must preconnect to PayPal to prepare the device for processing payments.
|
||||
* This improves the user experience, by making the presentation of the
|
||||
* UI faster. The preconnect is valid for a limited time, so
|
||||
* the recommended time to preconnect is on page load.
|
||||
*
|
||||
* @param environment available options are "PayPalEnvironmentNoNetwork", "PayPalEnvironmentProduction" and "PayPalEnvironmentSandbox"
|
||||
* @param configuration PayPalConfiguration object, for Future Payments merchantName, merchantPrivacyPolicyURL
|
||||
* and merchantUserAgreementURL must be set be set
|
||||
* @param completionCallback a callback function on success
|
||||
*/
|
||||
prepareToRender(environment: string, configuration: PayPalConfiguration, completionCallback: () => void): void;
|
||||
|
||||
/**
|
||||
* Start PayPal UI to collect payment from the user.
|
||||
* See https://developer.paypal.com/webapps/developer/docs/integration/mobile/ios-integration-guide/
|
||||
* for more documentation of the params.
|
||||
*
|
||||
* @param payment PayPalPayment object
|
||||
* @param completionCallback a callback function accepting a js object, called when the user has completed payment
|
||||
* @param cancelCallback a callback function accepting a reason string, called when the user cancels the payment
|
||||
*/
|
||||
renderSinglePaymentUI(payment: PayPalPayment, completionCallback: (result: PayPalCordovaPlugin.SinglePaymentResult) => void, cancelCallback: (cancelReason: string) => void): void;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
* Once a user has consented to future payments, when the user subsequently initiates a PayPal payment
|
||||
* from their device to be completed by your server, PayPal uses a Correlation ID to verify that the
|
||||
* payment is originating from a valid, user-consented device+application.
|
||||
* This helps reduce fraud and decrease declines.
|
||||
* This method MUST be called prior to initiating a pre-consented payment (a "future payment") from a mobile device.
|
||||
* Pass the result to your server, to include in the payment request sent to PayPal.
|
||||
* Do not otherwise cache or store this value.
|
||||
*
|
||||
* @param environment available options are "PayPalEnvironmentNoNetwork", "PayPalEnvironmentProduction" and "PayPalEnvironmentSandbox"
|
||||
* @param callback applicationCorrelationID Your server will send this to PayPal in a 'Paypal-Application-Correlation-Id' header.
|
||||
*/
|
||||
applicationCorrelationIDForEnvironment(environment: string, completionCallback: (applicationCorrelationId: string) => void): void;
|
||||
|
||||
/**
|
||||
* Once a user has consented to future payments, when the user subsequently initiates a PayPal payment
|
||||
* from their device to be completed by your server, PayPal uses a Correlation ID to verify that the
|
||||
* payment is originating from a valid, user-consented device+application.
|
||||
* This helps reduce fraud and decrease declines.
|
||||
* This method MUST be called prior to initiating a pre-consented payment (a "future payment") from a mobile device.
|
||||
* Pass the result to your server, to include in the payment request sent to PayPal.
|
||||
* Do not otherwise cache or store this value.
|
||||
*
|
||||
* @param callback clientMetadataID Your server will send this to PayPal in a 'PayPal-Client-Metadata-Id' header.
|
||||
*/
|
||||
clientMetadataID(completionCallback: (clientMetadataId: string) => void): void;
|
||||
|
||||
/**
|
||||
* Please Read Docs on Future Payments at https://github.com/paypal/PayPal-iOS-SDK#future-payments
|
||||
*
|
||||
* @param completionCallback a callback function accepting a js object with future payment authorization
|
||||
* @param cancelCallback a callback function accepting a reason string, called when the user canceled without agreement
|
||||
*/
|
||||
renderFuturePaymentUI(completionCallback: (result: PayPalCordovaPlugin.FuturePaymentResult) => void, cancelCallback: (cancelReason: string) => void): void;
|
||||
|
||||
/**
|
||||
* Please Read Docs on Profile Sharing at https://github.com/paypal/PayPal-iOS-SDK#profile-sharing
|
||||
*
|
||||
* @param scopes scopes Set of requested scope-values. Accepted scopes are: openid, profile, address, email, phone, futurepayments and paypalattributes
|
||||
* See https://developer.paypal.com/docs/integration/direct/identity/attributes/ for more details
|
||||
* @param completionCallback a callback function accepting a js object with future payment authorization
|
||||
* @param cancelCallback a callback function accepting a reason string, called when the user canceled without agreement
|
||||
*/
|
||||
renderProfileSharingUI(scopes: string[], completionCallback: (result: any) => void, cancelCallback: (cancelReason: string) => void): void;
|
||||
}
|
||||
}
|
||||
|
||||
declare var PayPalMobile: PayPalCordovaPlugin.PayPalMobileStatic;
|
||||
|
||||
//#endregion
|
||||
@@ -1,5 +1,7 @@
|
||||
# DefinitelyTyped [](https://travis-ci.org/borisyankov/DefinitelyTyped)
|
||||
|
||||
[](https://gitter.im/borisyankov/DefinitelyTyped?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
> The repository for *high quality* TypeScript type definitions.
|
||||
|
||||
For more information see the [definitelytyped.org](http://definitelytyped.org) website.
|
||||
@@ -14,7 +16,7 @@ Include a line like this:
|
||||
|
||||
## Contributions
|
||||
|
||||
DefinitelyTyped only works because of contributions by users like you!
|
||||
DefinitelyTyped only works because of contributions by users like you!
|
||||
|
||||
Please see the [contribution guide](http://definitelytyped.org/guides/contributing.html) on how to contribute to DefinitelyTyped.
|
||||
|
||||
@@ -32,7 +34,7 @@ Please see the [contribution guide](http://definitelytyped.org/guides/contributi
|
||||
|
||||
Here is are the [currently requested definitions](https://github.com/borisyankov/DefinitelyTyped/labels/Definition%3ARequest).
|
||||
|
||||
## Licence
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT license.
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
/// <reference path="_debugger.d.ts"/>
|
||||
import _debugger = require("_debugger");
|
||||
var {Client} = _debugger;
|
||||
|
||||
var client = new Client();
|
||||
|
||||
client.connect(8888, 'localhost');
|
||||
client.listbreakpoints((err, res) => {
|
||||
|
||||
});
|
||||
Vendored
+135
@@ -0,0 +1,135 @@
|
||||
// Type definitions for Node.js debugger API
|
||||
// Project: http://nodejs.org/
|
||||
// Definitions by: Basarat Ali Syed <https://github.com/basarat>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../node/node.d.ts"/>
|
||||
|
||||
declare module NodeJS {
|
||||
export module _debugger {
|
||||
export interface Packet {
|
||||
raw: string;
|
||||
headers: string[];
|
||||
body: Message;
|
||||
}
|
||||
|
||||
export interface Message {
|
||||
seq: number;
|
||||
type: string;
|
||||
}
|
||||
|
||||
export interface RequestInfo {
|
||||
command: string;
|
||||
arguments: any;
|
||||
}
|
||||
|
||||
export interface Request extends Message, RequestInfo {
|
||||
}
|
||||
|
||||
export interface Event extends Message {
|
||||
event: string;
|
||||
body?: any;
|
||||
}
|
||||
|
||||
export interface Response extends Message {
|
||||
request_seq: number;
|
||||
success: boolean;
|
||||
/** Contains error message if success === false. */
|
||||
message?: string;
|
||||
/** Contains message body if success === true. */
|
||||
body?: any;
|
||||
}
|
||||
|
||||
export interface BreakpointMessageBody {
|
||||
type: string;
|
||||
target: number;
|
||||
line: number;
|
||||
}
|
||||
|
||||
export class Protocol {
|
||||
res: Packet;
|
||||
state: string;
|
||||
execute(data: string): void;
|
||||
serialize(rq: Request): string;
|
||||
onResponse: (pkt: Packet) => void;
|
||||
}
|
||||
|
||||
export var NO_FRAME: number;
|
||||
export var port: number;
|
||||
|
||||
export interface ScriptDesc {
|
||||
name: string;
|
||||
id: number;
|
||||
isNative?: boolean;
|
||||
handle?: number;
|
||||
type: string;
|
||||
lineOffset?: number;
|
||||
columnOffset?: number;
|
||||
lineCount?: number;
|
||||
}
|
||||
|
||||
export interface Breakpoint {
|
||||
id: number;
|
||||
scriptId: number;
|
||||
script: ScriptDesc;
|
||||
line: number;
|
||||
condition?: string;
|
||||
scriptReq?: string;
|
||||
}
|
||||
|
||||
export interface RequestHandler {
|
||||
(err: boolean, body: Message, res: Packet): void;
|
||||
request_seq?: number;
|
||||
}
|
||||
|
||||
export interface ResponseBodyHandler {
|
||||
(err: boolean, body?: any): void;
|
||||
request_seq?: number;
|
||||
}
|
||||
|
||||
export interface ExceptionInfo {
|
||||
text: string;
|
||||
}
|
||||
|
||||
export interface BreakResponse {
|
||||
script?: ScriptDesc;
|
||||
exception?: ExceptionInfo;
|
||||
sourceLine: number;
|
||||
sourceLineText: string;
|
||||
sourceColumn: number;
|
||||
}
|
||||
|
||||
export function SourceInfo(body: BreakResponse): string;
|
||||
|
||||
export interface ClientInstance extends EventEmitter {
|
||||
protocol: Protocol;
|
||||
scripts: ScriptDesc[];
|
||||
handles: ScriptDesc[];
|
||||
breakpoints: Breakpoint[];
|
||||
currentSourceLine: number;
|
||||
currentSourceColumn: number;
|
||||
currentSourceLineText: string;
|
||||
currentFrame: number;
|
||||
currentScript: string;
|
||||
|
||||
connect(port: number, host: string): void;
|
||||
req(req: any, cb: RequestHandler): void;
|
||||
reqFrameEval(code: string, frame: number, cb: RequestHandler): void;
|
||||
mirrorObject(obj: any, depth: number, cb: ResponseBodyHandler): void;
|
||||
setBreakpoint(rq: BreakpointMessageBody, cb: RequestHandler): void;
|
||||
clearBreakpoint(rq: Request, cb: RequestHandler): void;
|
||||
listbreakpoints(cb: RequestHandler): void;
|
||||
reqSource(from: number, to: number, cb: RequestHandler): void;
|
||||
reqScripts(cb: any): void;
|
||||
reqContinue(cb: RequestHandler): void;
|
||||
}
|
||||
|
||||
export var Client : {
|
||||
new (): ClientInstance
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
declare module "_debugger"{
|
||||
export = NodeJS._debugger;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
/// <reference path="./abs.d.ts" />
|
||||
|
||||
import Abs from 'abs';
|
||||
|
||||
const x: string = Abs('/foo');
|
||||
Vendored
+14
@@ -0,0 +1,14 @@
|
||||
// Type definitions for abs 1.1.0
|
||||
// Project: https://github.com/IonicaBizau/node-abs
|
||||
// Definitions by: Aya Morisawa <https://github.com/AyaMorisawa>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
declare module "abs" {
|
||||
/**
|
||||
* Compute the absolute path of an input.
|
||||
* @param input The input path.
|
||||
*/
|
||||
function Abs(input: string): string;
|
||||
|
||||
export default Abs;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
/// <reference path="./absolute.d.ts" />
|
||||
|
||||
import absolute from 'absolute';
|
||||
|
||||
const x: boolean = absolute('/home/foo');
|
||||
Vendored
+13
@@ -0,0 +1,13 @@
|
||||
// Type definitions for absolute 0.0.1
|
||||
// Project: https://github.com/bahamas10/node-absolute
|
||||
// Definitions by: Aya Morisawa <https://github.com/AyaMorisawa>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
declare module "absolute" {
|
||||
/**
|
||||
* Test if a path is absolute
|
||||
*/
|
||||
function absolute(path: string): boolean;
|
||||
|
||||
export default absolute;
|
||||
}
|
||||
Vendored
+13
-1
@@ -47,7 +47,19 @@ interface AccWizardOptions {
|
||||
nextText: string;
|
||||
|
||||
/**
|
||||
* @summary Text for back button
|
||||
* @summary Text for back button.
|
||||
* @type {string}
|
||||
*/
|
||||
backText: string;
|
||||
|
||||
/**
|
||||
* @summary HTML input type for next button. (default: "submit")
|
||||
* @type {string}
|
||||
*/
|
||||
nextType: string;
|
||||
|
||||
/**
|
||||
* @summary HTML input type for back button. (default: "reset")
|
||||
* @type {string}
|
||||
*/
|
||||
backType: string;
|
||||
|
||||
Vendored
+330
-283
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
/// <reference path='acl-mongodbBackend.d.ts'/>
|
||||
/// <reference path='acl.d.ts'/>
|
||||
|
||||
// https://github.com/OptimalBits/node_acl/blob/master/Readme.md
|
||||
import Acl = require('acl');
|
||||
@@ -14,4 +14,3 @@ acl.allow('guest', 'blogs', 'view');
|
||||
|
||||
// allow function accepts arrays as any parameter
|
||||
acl.allow('member', 'blogs', ['edit','view', 'delete']);
|
||||
|
||||
|
||||
Vendored
-22
@@ -1,22 +0,0 @@
|
||||
// Type definitions for node_acl 0.4.7
|
||||
// Project: https://github.com/optimalbits/node_acl
|
||||
// Definitions by: Qubo <https://github.com/tkQubo>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="acl.d.ts" />
|
||||
/// <reference path="../mongodb/mongodb.d.ts" />
|
||||
|
||||
declare module "acl" {
|
||||
import mongo = require('mongodb');
|
||||
|
||||
interface AclStatic {
|
||||
mongodbBackend: MongodbBackendStatic;
|
||||
}
|
||||
|
||||
interface MongodbBackend extends Backend<Callback> { }
|
||||
interface MongodbBackendStatic {
|
||||
new(db: mongo.Db, prefix: string, useSingle: boolean): MongodbBackend;
|
||||
new(db: mongo.Db, prefix: string): MongodbBackend;
|
||||
new(db: mongo.Db): MongodbBackend;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
/// <reference path='acl-redisBackend.d.ts'/>
|
||||
/// <reference path='acl.d.ts'/>
|
||||
|
||||
// https://github.com/OptimalBits/node_acl/blob/master/Readme.md
|
||||
import Acl = require('acl');
|
||||
Vendored
-21
@@ -1,21 +0,0 @@
|
||||
// Type definitions for node_acl 0.4.7
|
||||
// Project: https://github.com/optimalbits/node_acl
|
||||
// Definitions by: Qubo <https://github.com/tkQubo>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="acl.d.ts" />
|
||||
/// <reference path='../redis/redis.d.ts'/>
|
||||
|
||||
declare module "acl" {
|
||||
import redis = require('redis');
|
||||
|
||||
interface AclStatic {
|
||||
redisBackend: RedisBackendStatic;
|
||||
}
|
||||
|
||||
interface RedisBackend extends Backend<redis.RedisClient> { }
|
||||
interface RedisBackendStatic {
|
||||
new(redis: redis.RedisClient, prefix: string): RedisBackend;
|
||||
new(redis: redis.RedisClient): RedisBackend;
|
||||
}
|
||||
}
|
||||
Vendored
+30
@@ -6,6 +6,9 @@
|
||||
/// <reference path="../bluebird/bluebird.d.ts" />
|
||||
/// <reference path='../node/node.d.ts'/>
|
||||
|
||||
/// <reference path='../redis/redis.d.ts'/>
|
||||
/// <reference path="../mongodb/mongodb.d.ts" />
|
||||
|
||||
declare module "acl" {
|
||||
import http = require('http');
|
||||
import Promise = require("bluebird");
|
||||
@@ -115,6 +118,33 @@ declare module "acl" {
|
||||
end: () => void;
|
||||
}
|
||||
|
||||
// for redis backend
|
||||
import redis = require('redis');
|
||||
|
||||
interface AclStatic {
|
||||
redisBackend: RedisBackendStatic;
|
||||
}
|
||||
|
||||
interface RedisBackend extends Backend<redis.RedisClient> { }
|
||||
interface RedisBackendStatic {
|
||||
new(redis: redis.RedisClient, prefix: string): RedisBackend;
|
||||
new(redis: redis.RedisClient): RedisBackend;
|
||||
}
|
||||
|
||||
// for mongodb backend
|
||||
import mongo = require('mongodb');
|
||||
|
||||
interface AclStatic {
|
||||
mongodbBackend: MongodbBackendStatic;
|
||||
}
|
||||
|
||||
interface MongodbBackend extends Backend<Callback> { }
|
||||
interface MongodbBackendStatic {
|
||||
new(db: mongo.Db, prefix: string, useSingle: boolean): MongodbBackend;
|
||||
new(db: mongo.Db, prefix: string): MongodbBackend;
|
||||
new(db: mongo.Db): MongodbBackend;
|
||||
}
|
||||
|
||||
var _: AclStatic;
|
||||
export = _;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/// <reference path="../estree/estree.d.ts" />
|
||||
/// <reference path="acorn.d.ts" />
|
||||
|
||||
import acorn = require('acorn');
|
||||
|
||||
var token: acorn.Token;
|
||||
var tokens: acorn.Token[];
|
||||
var comment: acorn.Comment;
|
||||
var comments: acorn.Comment[];
|
||||
var program: ESTree.Program;
|
||||
var any: any;
|
||||
var string: string;
|
||||
|
||||
// acorn
|
||||
string = acorn.version;
|
||||
program = acorn.parse('code');
|
||||
program = acorn.parse('code', {ranges: true, onToken: tokens, onComment: comments});
|
||||
program = acorn.parse('code', {
|
||||
ranges: true,
|
||||
onToken: (token) => tokens.push(token),
|
||||
onComment: (isBlock, text, start, end) => { }
|
||||
});
|
||||
|
||||
// Token
|
||||
token = tokens[0];
|
||||
string = token.type.label;
|
||||
any = token.value;
|
||||
|
||||
// Comment
|
||||
string = comment.value;
|
||||
Vendored
+68
@@ -0,0 +1,68 @@
|
||||
// Type definitions for Acorn v1.0.1
|
||||
// Project: https://github.com/marijnh/acorn
|
||||
// Definitions by: RReverser <https://github.com/RReverser>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../estree/estree.d.ts" />
|
||||
|
||||
declare module acorn {
|
||||
var version: string;
|
||||
function parse(input: string, options?: Options): ESTree.Program;
|
||||
function parseExpressionAt(input: string, pos: number, options?: Options): ESTree.Expression;
|
||||
function getLineInfo(input: string, offset: number): ESTree.Position;
|
||||
var defaultOptions: Options;
|
||||
|
||||
interface TokenType {
|
||||
label: string;
|
||||
keyword: string;
|
||||
beforeExpr: boolean;
|
||||
startsExpr: boolean;
|
||||
isLoop: boolean;
|
||||
isAssign: boolean;
|
||||
prefix: boolean;
|
||||
postfix: boolean;
|
||||
binop: number;
|
||||
updateContext: (prevType: TokenType) => any;
|
||||
}
|
||||
|
||||
interface AbstractToken {
|
||||
start: number;
|
||||
end: number;
|
||||
loc: ESTree.SourceLocation;
|
||||
range: [number, number];
|
||||
}
|
||||
|
||||
interface Token extends AbstractToken {
|
||||
type: TokenType;
|
||||
value: any;
|
||||
}
|
||||
|
||||
interface Comment extends AbstractToken {
|
||||
type: string;
|
||||
value: string;
|
||||
}
|
||||
|
||||
interface Options {
|
||||
ecmaVersion?: number;
|
||||
sourceType?: string;
|
||||
onInsertedSemicolon?: (lastTokEnd: number, lastTokEndLoc?: ESTree.Position) => any;
|
||||
onTrailingComma?: (lastTokEnd: number, lastTokEndLoc?: ESTree.Position) => any;
|
||||
allowReserved?: boolean;
|
||||
allowReturnOutsideFunction?: boolean;
|
||||
allowImportExportEverywhere?: boolean;
|
||||
allowHashBang?: boolean;
|
||||
locations?: boolean;
|
||||
onToken?: ((token: Token) => any) | Token[];
|
||||
onComment?: ((isBlock: boolean, text: string, start: number, end: number, startLoc?: ESTree.Position, endLoc?: ESTree.Position) => any) | Comment[];
|
||||
ranges?: boolean;
|
||||
program?: ESTree.Program;
|
||||
sourceFile?: string;
|
||||
directSourceFile?: string;
|
||||
preserveParens?: boolean;
|
||||
plugins?: { [name: string]: Function; };
|
||||
}
|
||||
}
|
||||
|
||||
declare module "acorn" {
|
||||
export = acorn
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
/// <reference path="adm-zip.d.ts" />
|
||||
import AdmZip = require("adm-zip");
|
||||
|
||||
|
||||
// reading archives
|
||||
var zip = new AdmZip("./my_file.zip");
|
||||
var zipEntries = zip.getEntries(); // an array of ZipEntry records
|
||||
var zipEntries: AdmZip.IZipEntry[] = zip.getEntries(); // an array of ZipEntry records
|
||||
|
||||
zipEntries.forEach(function (zipEntry) {
|
||||
console.log(zipEntry.toString()); // outputs zip entries information
|
||||
@@ -31,3 +30,32 @@ zip.addLocalFile("/home/me/some_picture.png");
|
||||
var willSendthis = zip.toBuffer();
|
||||
// or write everything to disk
|
||||
zip.writeZip(/*target file name*/"/home/me/files.zip");
|
||||
|
||||
function processZipEntry(zipEntry: AdmZip.IZipEntry) {
|
||||
console.log('comment', zipEntry.comment);
|
||||
}
|
||||
|
||||
//tests taken from examples at https://github.com/cthackers/adm-zip/wiki/ADM-ZIP
|
||||
import Zip = require("adm-zip");
|
||||
// loads and parses existing zip file local_file.zip
|
||||
var zip = new Zip("local_file.zip");
|
||||
// creates new in memory zip
|
||||
zip = new Zip();
|
||||
// loads and parses existing zip file local_file.zip
|
||||
zip = new Zip("local_file.zip");
|
||||
// get all entries and iterate them
|
||||
zip.getEntries().forEach((entry) => {
|
||||
var entryName = entry.entryName;
|
||||
var decompressedData = zip.readFile(entry); // decompressed buffer of the entry
|
||||
console.log(zip.readAsText(entry)); // outputs the decompressed content of the entry
|
||||
});
|
||||
|
||||
// will extract the file myfile.txt from the archive to /home/user/folder/subfolder/myfile.txt
|
||||
zip.extractEntryTo("folder/subfolder/myfile.txt", "/home/user/", true, true);
|
||||
|
||||
// will extract the file myfile.txt from the archive to /home/user/myfile.txt
|
||||
zip.extractEntryTo("folder/subfolder/myfile.txt", "/home/user/", false, true);
|
||||
|
||||
function isAdmZipEntry(obj: any): obj is AdmZip.IZipEntry {
|
||||
return obj !== null && typeof obj === "object" && typeof obj['entryName'] === 'string';
|
||||
}
|
||||
Vendored
+80
-81
@@ -5,8 +5,8 @@
|
||||
|
||||
/// <reference path="../node/node.d.ts" />
|
||||
|
||||
declare module AdmZip {
|
||||
class ZipFile {
|
||||
declare module "adm-zip" {
|
||||
class AdmZip {
|
||||
/**
|
||||
* Create a new, empty archive.
|
||||
*/
|
||||
@@ -28,7 +28,7 @@ declare module AdmZip {
|
||||
* @param entry ZipEntry object
|
||||
* @return Buffer or Null in case of error
|
||||
*/
|
||||
readFile(entry: IZipEntry): Buffer;
|
||||
readFile(entry: AdmZip.IZipEntry): Buffer;
|
||||
/**
|
||||
* Asynchronous readFile
|
||||
* @param entry String with the full path of the entry
|
||||
@@ -41,7 +41,7 @@ declare module AdmZip {
|
||||
* @param callback Called with a Buffer or Null in case of error
|
||||
* @return Buffer or Null in case of error
|
||||
*/
|
||||
readFileAsync(entry: IZipEntry, callback: (data: Buffer, err: string) => any): void;
|
||||
readFileAsync(entry: AdmZip.IZipEntry, callback: (data: Buffer, err: string) => any): void;
|
||||
/**
|
||||
* Extracts the given entry from the archive and returns the content as
|
||||
* plain text in the given encoding
|
||||
@@ -57,7 +57,7 @@ declare module AdmZip {
|
||||
* @param encoding Optional. If no encoding is specified utf8 is used
|
||||
* @return String
|
||||
*/
|
||||
readAsText(fileName: IZipEntry, encoding?: string): string;
|
||||
readAsText(fileName: AdmZip.IZipEntry, encoding?: string): string;
|
||||
/**
|
||||
* Asynchronous readAsText
|
||||
* @param entry String with the full path of the entry
|
||||
@@ -71,7 +71,7 @@ declare module AdmZip {
|
||||
* @param callback Called with the resulting string.
|
||||
* @param encoding Optional. If no encoding is specified utf8 is used
|
||||
*/
|
||||
readAsTextAsync(fileName: IZipEntry, callback: (data: string) => any, encoding?: string): void;
|
||||
readAsTextAsync(fileName: AdmZip.IZipEntry, callback: (data: string) => any, encoding?: string): void;
|
||||
/**
|
||||
* Remove the entry from the file or the entry and all its nested directories
|
||||
* and files if the given entry is a directory
|
||||
@@ -83,7 +83,7 @@ declare module AdmZip {
|
||||
* and files if the given entry is a directory
|
||||
* @param entry A ZipEntry object.
|
||||
*/
|
||||
deleteFile(entry: IZipEntry): void;
|
||||
deleteFile(entry: AdmZip.IZipEntry): void;
|
||||
/**
|
||||
* Adds a comment to the zip. The zip must be rewritten after
|
||||
* adding the comment.
|
||||
@@ -110,7 +110,7 @@ declare module AdmZip {
|
||||
* @param entry ZipEntry object.
|
||||
* @param comment The comment to add to the entry.
|
||||
*/
|
||||
addZipEntryComment(entry: IZipEntry, comment: string): void;
|
||||
addZipEntryComment(entry: AdmZip.IZipEntry, comment: string): void;
|
||||
/**
|
||||
* Returns the comment of the specified entry.
|
||||
* @param entry String with the full path of the entry.
|
||||
@@ -122,7 +122,7 @@ declare module AdmZip {
|
||||
* @param entry ZipEntry object.
|
||||
* @return String The comment of the specified entry.
|
||||
*/
|
||||
getZipEntryComment(entry: IZipEntry): string;
|
||||
getZipEntryComment(entry: AdmZip.IZipEntry): string;
|
||||
/**
|
||||
* Updates the content of an existing entry inside the archive. The zip
|
||||
* must be rewritten after updating the content
|
||||
@@ -136,7 +136,7 @@ declare module AdmZip {
|
||||
* @param entry ZipEntry object.
|
||||
* @param content The entry's new contents.
|
||||
*/
|
||||
updateFile(entry: IZipEntry, content: Buffer): void;
|
||||
updateFile(entry: AdmZip.IZipEntry, content: Buffer): void;
|
||||
/**
|
||||
* Adds a file from the disk to the archive.
|
||||
* @param localPath Path to a file on disk.
|
||||
@@ -167,14 +167,14 @@ declare module AdmZip {
|
||||
* Returns an array of ZipEntry objects representing the files and folders
|
||||
* inside the archive
|
||||
*/
|
||||
getEntries(): IZipEntry[];
|
||||
getEntries(): AdmZip.IZipEntry[];
|
||||
/**
|
||||
* Returns a ZipEntry object representing the file or folder specified by
|
||||
* ``name``.
|
||||
* @param name Name of the file or folder to retrieve.
|
||||
* @return ZipEntry The entry corresponding to the name.
|
||||
*/
|
||||
getEntry(name: string): IZipEntry;
|
||||
getEntry(name: string): AdmZip.IZipEntry;
|
||||
/**
|
||||
* Extracts the given entry to the given targetPath.
|
||||
* If the entry is a directory inside the archive, the entire directory and
|
||||
@@ -203,7 +203,7 @@ declare module AdmZip {
|
||||
* will be overwriten if this is true. Default is FALSE
|
||||
* @return Boolean
|
||||
*/
|
||||
extractEntryTo(entryPath: IZipEntry, targetPath: string, maintainEntryPath?: boolean, overwrite?: boolean): boolean;
|
||||
extractEntryTo(entryPath: AdmZip.IZipEntry, targetPath: string, maintainEntryPath?: boolean, overwrite?: boolean): boolean;
|
||||
/**
|
||||
* Extracts the entire archive to the given location
|
||||
* @param targetPath Target location
|
||||
@@ -225,76 +225,75 @@ declare module AdmZip {
|
||||
toBuffer(): Buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* The ZipEntry is more than a structure representing the entry inside the
|
||||
* zip file. Beside the normal attributes and headers a entry can have, the
|
||||
* class contains a reference to the part of the file where the compressed
|
||||
* data resides and decompresses it when requested. It also compresses the
|
||||
* data and creates the headers required to write in the zip file.
|
||||
*/
|
||||
interface IZipEntry {
|
||||
module AdmZip {
|
||||
/**
|
||||
* Represents the full name and path of the file
|
||||
* The ZipEntry is more than a structure representing the entry inside the
|
||||
* zip file. Beside the normal attributes and headers a entry can have, the
|
||||
* class contains a reference to the part of the file where the compressed
|
||||
* data resides and decompresses it when requested. It also compresses the
|
||||
* data and creates the headers required to write in the zip file.
|
||||
*/
|
||||
entryName: string;
|
||||
rawEntryName: Buffer;
|
||||
/**
|
||||
* Extra data associated with this entry.
|
||||
*/
|
||||
extra: Buffer;
|
||||
/**
|
||||
* Entry comment.
|
||||
*/
|
||||
comment: string;
|
||||
name: string;
|
||||
/**
|
||||
* Read-Only property that indicates the type of the entry.
|
||||
*/
|
||||
isDirectory: boolean;
|
||||
/**
|
||||
* Get the header associated with this ZipEntry.
|
||||
*/
|
||||
header: Buffer;
|
||||
/**
|
||||
* Retrieve the compressed data for this entry. Note that this may trigger
|
||||
* compression if any properties were modified.
|
||||
*/
|
||||
getCompressedData(): Buffer;
|
||||
/**
|
||||
* Asynchronously retrieve the compressed data for this entry. Note that
|
||||
* this may trigger compression if any properties were modified.
|
||||
*/
|
||||
getCompressedDataAsync(callback: (data: Buffer) => void): void;
|
||||
/**
|
||||
* Set the (uncompressed) data to be associated with this entry.
|
||||
*/
|
||||
setData(value: string): void;
|
||||
/**
|
||||
* Set the (uncompressed) data to be associated with this entry.
|
||||
*/
|
||||
setData(value: Buffer): void;
|
||||
/**
|
||||
* Get the decompressed data associated with this entry.
|
||||
*/
|
||||
getData(): Buffer;
|
||||
/**
|
||||
* Asynchronously get the decompressed data associated with this entry.
|
||||
*/
|
||||
getDataAsync(callback: (data: Buffer) => void): void;
|
||||
/**
|
||||
* Returns the CEN Entry Header to be written to the output zip file, plus
|
||||
* the extra data and the entry comment.
|
||||
*/
|
||||
packHeader(): Buffer;
|
||||
/**
|
||||
* Returns a nicely formatted string with the most important properties of
|
||||
* the ZipEntry.
|
||||
*/
|
||||
toString(): string;
|
||||
interface IZipEntry {
|
||||
/**
|
||||
* Represents the full name and path of the file
|
||||
*/
|
||||
entryName: string;
|
||||
rawEntryName: Buffer;
|
||||
/**
|
||||
* Extra data associated with this entry.
|
||||
*/
|
||||
extra: Buffer;
|
||||
/**
|
||||
* Entry comment.
|
||||
*/
|
||||
comment: string;
|
||||
name: string;
|
||||
/**
|
||||
* Read-Only property that indicates the type of the entry.
|
||||
*/
|
||||
isDirectory: boolean;
|
||||
/**
|
||||
* Get the header associated with this ZipEntry.
|
||||
*/
|
||||
header: Buffer;
|
||||
/**
|
||||
* Retrieve the compressed data for this entry. Note that this may trigger
|
||||
* compression if any properties were modified.
|
||||
*/
|
||||
getCompressedData(): Buffer;
|
||||
/**
|
||||
* Asynchronously retrieve the compressed data for this entry. Note that
|
||||
* this may trigger compression if any properties were modified.
|
||||
*/
|
||||
getCompressedDataAsync(callback: (data: Buffer) => void): void;
|
||||
/**
|
||||
* Set the (uncompressed) data to be associated with this entry.
|
||||
*/
|
||||
setData(value: string): void;
|
||||
/**
|
||||
* Set the (uncompressed) data to be associated with this entry.
|
||||
*/
|
||||
setData(value: Buffer): void;
|
||||
/**
|
||||
* Get the decompressed data associated with this entry.
|
||||
*/
|
||||
getData(): Buffer;
|
||||
/**
|
||||
* Asynchronously get the decompressed data associated with this entry.
|
||||
*/
|
||||
getDataAsync(callback: (data: Buffer) => void): void;
|
||||
/**
|
||||
* Returns the CEN Entry Header to be written to the output zip file, plus
|
||||
* the extra data and the entry comment.
|
||||
*/
|
||||
packHeader(): Buffer;
|
||||
/**
|
||||
* Returns a nicely formatted string with the most important properties of
|
||||
* the ZipEntry.
|
||||
*/
|
||||
toString(): string;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
declare module "adm-zip" {
|
||||
import zipFile = AdmZip.ZipFile;
|
||||
export = zipFile;
|
||||
export = AdmZip;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
/// <reference path="ag-grid" />
|
||||
|
||||
checkGridOptions(<ag.grid.GridOptions>{});
|
||||
checkColDef(<ag.grid.ColDef>{});
|
||||
|
||||
function checkGridOptions(gridOptions: ag.grid.GridOptions): void {
|
||||
|
||||
gridOptions.virtualPaging = true;
|
||||
gridOptions.toolPanelSuppressPivot = true;
|
||||
gridOptions.toolPanelSuppressValues = true;
|
||||
gridOptions.rowsAlreadyGrouped = true;
|
||||
gridOptions.suppressRowClickSelection = true;
|
||||
gridOptions.suppressCellSelection = true;
|
||||
gridOptions.sortingOrder = ['asc','desc'];
|
||||
gridOptions.suppressMultiSort = true;
|
||||
gridOptions.suppressHorizontalScroll = true;
|
||||
gridOptions.unSortIcon = true;
|
||||
gridOptions.rowHeight = 0;
|
||||
gridOptions.rowBuffer = 0;
|
||||
gridOptions.enableColResize = true;
|
||||
gridOptions.enableCellExpressions = true;
|
||||
gridOptions.enableSorting = true;
|
||||
gridOptions.enableServerSideSorting = true;
|
||||
gridOptions.enableFilter = true;
|
||||
gridOptions.enableServerSideFilter = true;
|
||||
gridOptions.colWidth = 0;
|
||||
gridOptions.suppressMenuHide = true;
|
||||
gridOptions.singleClickEdit = true;
|
||||
gridOptions.debug = true;
|
||||
gridOptions.icons = {};
|
||||
gridOptions.angularCompileRows = true;
|
||||
gridOptions.angularCompileFilters = true;
|
||||
gridOptions.angularCompileHeaders = true;
|
||||
gridOptions.localeText = {};
|
||||
gridOptions.localeTextFunc = function() {}
|
||||
gridOptions.suppressScrollLag = true;
|
||||
gridOptions.groupSuppressAutoColumn = true;
|
||||
gridOptions.groupSelectsChildren = true;
|
||||
gridOptions.groupHidePivotColumns = true;
|
||||
gridOptions.groupIncludeFooter = true;
|
||||
gridOptions.groupUseEntireRow = true;
|
||||
gridOptions.groupSuppressRow = true;
|
||||
gridOptions.groupSuppressBlankHeader = true;
|
||||
gridOptions.forPrint = true;
|
||||
gridOptions.groupColumnDef = {};
|
||||
gridOptions.context = {};
|
||||
gridOptions.rowStyle = {color: 'red'};
|
||||
gridOptions.rowClass = 'green';
|
||||
gridOptions.groupDefaultExpanded = false;
|
||||
gridOptions.slaveGrids = [];
|
||||
gridOptions.rowSelection = 'single';
|
||||
gridOptions.rowDeselection = true;
|
||||
gridOptions.rowData = [];
|
||||
gridOptions.floatingTopRowData = [];
|
||||
gridOptions.floatingBottomRowData = [];
|
||||
gridOptions.showToolPanel = true;
|
||||
gridOptions.groupKeys = ['a','b']
|
||||
gridOptions.groupAggFields = ['a','b']
|
||||
gridOptions.columnDefs = [];
|
||||
gridOptions.datasource = {};
|
||||
gridOptions.pinnedColumnCount = 0;
|
||||
gridOptions.groupHeaders = true;
|
||||
gridOptions.headerHeight = 0;
|
||||
gridOptions.groupRowInnerRenderer = function(params) {};
|
||||
gridOptions.groupRowRenderer = {};
|
||||
gridOptions.isScrollLag = function() {return true;}
|
||||
gridOptions.isExternalFilterPresent = function() { return true; };
|
||||
gridOptions.doesExternalFilterPass = function(node: ag.grid.RowNode) { return false; };
|
||||
gridOptions.getRowStyle = function() {};
|
||||
gridOptions.getRowClass = function() {};
|
||||
gridOptions.headerCellRenderer = function() {};
|
||||
gridOptions.groupAggFunction = function(nodes: any[]) {};
|
||||
gridOptions.onReady = function(api: any) {};
|
||||
gridOptions.onModelUpdated = function() {};
|
||||
gridOptions.onCellClicked = function(params) {};
|
||||
gridOptions.onCellDoubleClicked = function(params) {};
|
||||
gridOptions.onCellContextMenu = function(params) {};
|
||||
gridOptions.onCellValueChanged = function(params) {};
|
||||
gridOptions.onCellFocused = function(params) {};
|
||||
gridOptions.onRowSelected = function(params) {};
|
||||
gridOptions.onSelectionChanged = function() {};
|
||||
gridOptions.onBeforeFilterChanged = function() {};
|
||||
gridOptions.onAfterFilterChanged = function() {};
|
||||
gridOptions.onFilterModified = function() {};
|
||||
gridOptions.onBeforeSortChanged = function() {};
|
||||
gridOptions.onAfterSortChanged = function() {};
|
||||
gridOptions.onVirtualRowRemoved = function(params) {};
|
||||
gridOptions.onRowClicked = function(params) {};
|
||||
gridOptions.api = null;
|
||||
gridOptions.columnApi = null;
|
||||
|
||||
}
|
||||
|
||||
function checkColDef(colDef: ag.grid.ColDef): void {
|
||||
|
||||
colDef.sort = 'test';
|
||||
colDef.sortedAt = 0;
|
||||
colDef.sortingOrder = ['asc','desc'];
|
||||
colDef.headerName = 'test';
|
||||
colDef.field = 'test';
|
||||
colDef.headerValueGetter = 'test';
|
||||
colDef.colId = 'test';
|
||||
colDef.hide = true;
|
||||
colDef.headerTooltip = 'test';
|
||||
colDef.valueGetter = 'test';
|
||||
colDef.headerCellRenderer = {};
|
||||
colDef.headerClass = 'test';
|
||||
colDef.width = 0;
|
||||
colDef.minWidth = 0;
|
||||
colDef.maxWidth = 0;
|
||||
colDef.cellClass = 'test';
|
||||
colDef.cellStyle = {color: 'test'};
|
||||
colDef.cellRenderer = function() {};
|
||||
colDef.floatingCellRenderer = function() {};
|
||||
colDef.aggFunc = 'test';
|
||||
colDef.comparator = function() {};
|
||||
colDef.checkboxSelection = true;
|
||||
colDef.suppressMenu = true;
|
||||
colDef.suppressSorting = true;
|
||||
colDef.unSortIcon = true;
|
||||
colDef.suppressSizeToFit = true;
|
||||
colDef.suppressResize = true;
|
||||
colDef.headerGroup = 'test';
|
||||
colDef.headerGroupShow = 'test';
|
||||
colDef.editable = true;
|
||||
colDef.newValueHandler = function() {};
|
||||
colDef.volatile = true;
|
||||
colDef.template = 'test';
|
||||
colDef.templateUrl = 'test';
|
||||
colDef.filter = 'test';
|
||||
colDef.filterParams = {};
|
||||
colDef.onCellValueChanged = function() {};
|
||||
colDef.onCellClicked = function() {};
|
||||
colDef.onCellDoubleClicked = function() {};
|
||||
colDef.onCellContextMenu = function() {};
|
||||
colDef.cellClassRules = {};
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Vendored
+1991
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,143 @@
|
||||
/**
|
||||
* Created by shearerbeard on 6/28/15.
|
||||
*/
|
||||
///<reference path="alt.d.ts"/>
|
||||
///<reference path="../es6-promise/es6-promise.d.ts" />
|
||||
|
||||
import Alt = require("alt");
|
||||
import Promise = require("es6-promise");
|
||||
|
||||
//New alt instance
|
||||
var alt = new Alt();
|
||||
|
||||
//Interfaces for our Action Types
|
||||
interface TestActionsGenerate {
|
||||
notifyTest(str:string):void;
|
||||
}
|
||||
|
||||
interface TestActionsExplicit {
|
||||
doTest(str:string):void;
|
||||
success():void;
|
||||
error():void;
|
||||
loading():void;
|
||||
}
|
||||
|
||||
//Create abstracts to inherit ghost methods
|
||||
class AbstractActions implements AltJS.ActionsClass {
|
||||
constructor( alt:AltJS.Alt){}
|
||||
actions:any;
|
||||
dispatch: ( ...payload:Array<any>) => void;
|
||||
generateActions:( ...actions:Array<string>) => void;
|
||||
}
|
||||
|
||||
class AbstractStoreModel<S> implements AltJS.StoreModel<S> {
|
||||
bindActions:( ...actions:Array<Object>) => void;
|
||||
bindAction:( ...args:Array<any>) => void;
|
||||
bindListeners:(obj:any)=> void;
|
||||
exportPublicMethods:(config:{[key:string]:(...args:Array<any>) => any}) => any;
|
||||
exportAsync:( source:any) => void;
|
||||
waitFor:any;
|
||||
exportConfig:any;
|
||||
getState:() => S;
|
||||
}
|
||||
|
||||
class GenerateActionsClass extends AbstractActions {
|
||||
constructor(config:AltJS.Alt) {
|
||||
this.generateActions("notifyTest");
|
||||
super(config);
|
||||
}
|
||||
}
|
||||
|
||||
class ExplicitActionsClass extends AbstractActions {
|
||||
doTest(str:string) {
|
||||
this.dispatch(str);
|
||||
}
|
||||
success() {
|
||||
this.dispatch();
|
||||
}
|
||||
error() {
|
||||
this.dispatch();
|
||||
}
|
||||
loading() {
|
||||
this.dispatch();
|
||||
}
|
||||
}
|
||||
|
||||
var generatedActions = alt.createActions<TestActionsGenerate>(GenerateActionsClass);
|
||||
var explicitActions = alt.createActions<ExplicitActionsClass>(ExplicitActionsClass);
|
||||
|
||||
interface AltTestState {
|
||||
hello:string;
|
||||
}
|
||||
|
||||
var testSource:AltJS.Source = {
|
||||
fakeLoad():AltJS.SourceModel<string> {
|
||||
return {
|
||||
remote() {
|
||||
return new Promise.Promise<string>((res:any, rej:any) => {
|
||||
setTimeout(() => {
|
||||
if(true) {
|
||||
res("stuff");
|
||||
} else {
|
||||
rej("Things have broken");
|
||||
}
|
||||
}, 250)
|
||||
});
|
||||
},
|
||||
local() {
|
||||
return "local";
|
||||
},
|
||||
success: explicitActions.success,
|
||||
error: explicitActions.error,
|
||||
loading:explicitActions.loading
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
class TestStore extends AbstractStoreModel<AltTestState> implements AltTestState {
|
||||
hello:string = "world";
|
||||
constructor() {
|
||||
super();
|
||||
this.bindAction(generatedActions.notifyTest, this.onTest);
|
||||
this.bindActions(explicitActions);
|
||||
this.exportAsync(testSource);
|
||||
this.exportPublicMethods({
|
||||
split: this.split
|
||||
});
|
||||
}
|
||||
onTest(str:string) {
|
||||
this.hello = str;
|
||||
}
|
||||
|
||||
onDoTest(str:string) {
|
||||
this.hello = str;
|
||||
}
|
||||
|
||||
split():string[] {
|
||||
return this.hello.split("");
|
||||
}
|
||||
}
|
||||
|
||||
interface ExtendedTestStore extends AltJS.AltStore<AltTestState> {
|
||||
fakeLoad():string;
|
||||
split():Array<string>;
|
||||
}
|
||||
|
||||
var testStore = <ExtendedTestStore>alt.createStore<AltTestState>(TestStore);
|
||||
|
||||
function testCallback(state:AltTestState) {
|
||||
console.log(state);
|
||||
}
|
||||
|
||||
//Listen allows a typed state callback
|
||||
testStore.listen(testCallback);
|
||||
testStore.unlisten(testCallback);
|
||||
|
||||
//State generic passes to derived store
|
||||
var name:string = testStore.getState().hello;
|
||||
var nameChars:Array<string> = testStore.split();
|
||||
|
||||
generatedActions.notifyTest("types");
|
||||
explicitActions.doTest("more types");
|
||||
|
||||
export var result = testStore.getState();
|
||||
Vendored
+167
@@ -0,0 +1,167 @@
|
||||
// Type definitions for Alt 0.16.10
|
||||
// Project: https://github.com/goatslacker/alt
|
||||
// Definitions by: Michael Shearer <https://github.com/Shearerbeard>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
///<reference path="../react/react.d.ts"/>
|
||||
///<reference path="../es6-promise/es6-promise.d.ts" />
|
||||
|
||||
declare module AltJS {
|
||||
|
||||
interface StoreReduce {
|
||||
action:any;
|
||||
data: any;
|
||||
}
|
||||
|
||||
export interface StoreModel<S> {
|
||||
//Actions
|
||||
bindAction?( action:Action<any>, handler:ActionHandler):void;
|
||||
bindActions?(actions:ActionsClass):void;
|
||||
|
||||
//Methods/Listeners
|
||||
exportPublicMethods?(exportConfig:any):void;
|
||||
bindListeners?(config:{[methodName:string]:Action<any> | Actions}):void;
|
||||
exportAsync?(source:Source):void;
|
||||
registerAsync?(datasource:Source):void;
|
||||
|
||||
//state
|
||||
setState?(state:S):void;
|
||||
setState?(stateFn:(currentState:S, nextState:S) => S):void;
|
||||
getState?():S;
|
||||
waitFor?(store:AltStore<any>):void;
|
||||
|
||||
//events
|
||||
onSerialize?(fn:(data:any) => any):void;
|
||||
onDeserialize?(fn:(data:any) => any):void;
|
||||
on?(event:AltJS.lifeCycleEvents, callback:() => any):void;
|
||||
emitChange?():void;
|
||||
waitFor?(storeOrStores:AltStore<any> | Array<AltStore<any>>):void;
|
||||
otherwise?(data:any, action:AltJS.Action<any>):void;
|
||||
observe?(alt:Alt):any;
|
||||
reduce?(state:any, config:StoreReduce):Object;
|
||||
preventDefault?():void;
|
||||
afterEach?(payload:Object, state:Object):void;
|
||||
beforeEach?(payload:Object, state:Object):void;
|
||||
// TODO: Embed dispatcher interface in def
|
||||
dispatcher?:any;
|
||||
|
||||
//instance
|
||||
getInstance?():AltJS.AltStore<S>;
|
||||
alt?:Alt;
|
||||
displayName?:string;
|
||||
}
|
||||
|
||||
export type Source = {[name:string]: () => SourceModel<any>};
|
||||
|
||||
export interface SourceModel<S> {
|
||||
local(state:any):any;
|
||||
remote(state:any):Promise<S>;
|
||||
shouldFetch?(fetchFn:(...args:Array<any>) => boolean):void;
|
||||
loading?:(args:any) => void;
|
||||
success?:(state:S) => void;
|
||||
error?:(args:any) => void;
|
||||
interceptResponse?(response:any, action:Action<any>, ...args:Array<any>):any;
|
||||
}
|
||||
|
||||
export interface AltStore<S> {
|
||||
getState():S;
|
||||
listen(handler:(state:S) => any):() => void;
|
||||
unlisten(handler:(state:S) => any):void;
|
||||
emitChange():void;
|
||||
}
|
||||
|
||||
export enum lifeCycleEvents {
|
||||
bootstrap,
|
||||
snapshot,
|
||||
init,
|
||||
rollback,
|
||||
error
|
||||
}
|
||||
|
||||
export type Actions = {[action:string]:Action<any>};
|
||||
|
||||
export interface Action<T> {
|
||||
( args:T):void;
|
||||
defer(data:any):void;
|
||||
}
|
||||
|
||||
export interface ActionsClass {
|
||||
generateActions?( ...action:Array<string>):void;
|
||||
dispatch( ...payload:Array<any>):void;
|
||||
actions?:Actions;
|
||||
}
|
||||
|
||||
type StateTransform = (store:StoreModel<any>) => AltJS.AltStore<any>;
|
||||
|
||||
interface AltConfig {
|
||||
dispatcher?:any;
|
||||
serialize?:(serializeFn:(data:Object) => string) => void;
|
||||
deserialize?:(deserializeFn:(serialData:string) => Object) => void;
|
||||
storeTransforms?:Array<StateTransform>;
|
||||
batchingFunction?:(callback:( ...data:Array<any>) => any) => void;
|
||||
}
|
||||
|
||||
class Alt {
|
||||
constructor(config?:AltConfig);
|
||||
actions:Actions;
|
||||
bootstrap(jsonData:string):void;
|
||||
takeSnapshot( ...storeNames:Array<string>):string;
|
||||
flush():Object;
|
||||
recycle( ...stores:Array<AltJS.AltStore<any>>):void;
|
||||
rollback():void;
|
||||
dispatch(action?:AltJS.Action<any>, data?:Object, details?:any):void;
|
||||
|
||||
//Actions methods
|
||||
addActions(actionsName:string, ActionsClass: ActionsClassConstructor):void;
|
||||
createActions<T>(ActionsClass: ActionsClassConstructor, exportObj?: Object):T;
|
||||
createActions<T>(ActionsClass: ActionsClassConstructor, exportObj?: Object, ...constructorArgs:Array<any>):T;
|
||||
generateActions<T>( ...actions:Array<string>):T;
|
||||
getActions(actionsName:string):AltJS.Actions;
|
||||
|
||||
//Stores methods
|
||||
addStore(name:string, store:StoreModel<any>, saveStore?:boolean):void;
|
||||
createStore<S>(store:StoreModel<S>, name?:string):AltJS.AltStore<S>;
|
||||
getStore(name:string):AltJS.AltStore<any>;
|
||||
}
|
||||
|
||||
export interface AltFactory {
|
||||
new(config?:AltConfig):Alt;
|
||||
}
|
||||
|
||||
type ActionsClassConstructor = new (alt:Alt) => AltJS.ActionsClass;
|
||||
|
||||
type ActionHandler = ( ...data:Array<any>) => any;
|
||||
type ExportConfig = {[key:string]:(...args:Array<any>) => any};
|
||||
}
|
||||
|
||||
declare module "alt/utils/chromeDebug" {
|
||||
function chromeDebug(alt:AltJS.Alt):void;
|
||||
export = chromeDebug;
|
||||
}
|
||||
|
||||
declare module "alt/AltContainer" {
|
||||
|
||||
import React = require("react");
|
||||
|
||||
interface ContainerProps {
|
||||
store?:AltJS.AltStore<any>;
|
||||
stores?:Array<AltJS.AltStore<any>>;
|
||||
inject?:{[key:string]:any};
|
||||
actions?:{[key:string]:Object};
|
||||
render?:(...props:Array<any>) => React.ReactElement<any>;
|
||||
flux?:AltJS.Alt;
|
||||
transform?:(store:AltJS.AltStore<any>, actions:any) => any;
|
||||
shouldComponentUpdate?:(props:any) => boolean;
|
||||
component?:React.Component<any, any>;
|
||||
}
|
||||
|
||||
type AltContainer = React.ReactElement<ContainerProps>;
|
||||
var AltContainer:React.ComponentClass<ContainerProps>;
|
||||
|
||||
export = AltContainer;
|
||||
}
|
||||
|
||||
declare module "alt" {
|
||||
var alt:AltJS.AltFactory;
|
||||
export = alt;
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
/// <reference path="./amazon-product-api.d.ts" />
|
||||
/// <reference path="../node/node.d.ts"/>
|
||||
|
||||
import amazon = require('amazon-product-api');
|
||||
|
||||
var client = amazon.createClient({
|
||||
awsId: process.env.AWS_ACCESS_KEY_ID,
|
||||
awsSecret: process.env.AWS_SECRET,
|
||||
awsTag: process.env.AWS_ASSOCIATE_TAG
|
||||
});
|
||||
|
||||
|
||||
// Item Search
|
||||
|
||||
var searchQuery = {
|
||||
director: 'Quentin Tarantino',
|
||||
actor: 'Samuel L. Jackson',
|
||||
searchIndex: 'DVD',
|
||||
audienceRating: 'R',
|
||||
responseGroup: 'ItemAttributes,Offers,Images'
|
||||
};
|
||||
|
||||
client.itemSearch(searchQuery).then((results) => {
|
||||
console.log(getResultCount(results) + " search results");
|
||||
}).catch(function(err){
|
||||
console.log(err);
|
||||
});
|
||||
|
||||
client.itemSearch(searchQuery, (err, results) => {
|
||||
if(err) {
|
||||
console.log(err);
|
||||
return;
|
||||
}
|
||||
console.log(getResultCount(results) + " search results");
|
||||
});
|
||||
|
||||
|
||||
// Item Lookup
|
||||
|
||||
var lookupQuery = {
|
||||
itemId: 'B00008OE6I',
|
||||
idType: 'ASIN',
|
||||
responseGroup: 'OfferFull',
|
||||
Condition: 'All'
|
||||
};
|
||||
|
||||
client.itemLookup(lookupQuery).then((results) => {
|
||||
console.log(getResultCount(results) + " lookup results");
|
||||
}).catch(function(err){
|
||||
console.log(err);
|
||||
});
|
||||
|
||||
client.itemLookup(lookupQuery, (err, results) => {
|
||||
if(err) {
|
||||
console.log(err);
|
||||
return;
|
||||
}
|
||||
console.log(getResultCount(results) + " lookup results");
|
||||
});
|
||||
|
||||
// Browse Node Lookup
|
||||
|
||||
var nodeLookupQuery = {
|
||||
browseNodeId: '2625373011'
|
||||
};
|
||||
|
||||
client.browseNodeLookup(nodeLookupQuery).then((results) => {
|
||||
console.log(getResultCount(results) + " node lookup results");
|
||||
}).catch(function(err){
|
||||
console.log(err);
|
||||
});
|
||||
|
||||
client.browseNodeLookup(nodeLookupQuery, (err, results) => {
|
||||
if(err) {
|
||||
console.log(err);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(getResultCount(results) + " node lookup results");
|
||||
});
|
||||
|
||||
function getResultCount(results: Object[]) {
|
||||
return results != undefined ? results.length : 0;
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
// Type definitions for amazon-product-api
|
||||
// Project: https://github.com/t3chnoboy/amazon-product-api
|
||||
// Definitions by: Matti Lehtinen <https://github.com/MattiLehtinen/>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../es6-promise/es6-promise.d.ts"/>
|
||||
|
||||
declare module "amazon-product-api" {
|
||||
|
||||
interface ICredentials {
|
||||
awsId: string,
|
||||
awsSecret: string,
|
||||
awsTag: string
|
||||
}
|
||||
|
||||
interface IAmazonProductQueryCallback {
|
||||
(err: string, results: Object[]): void;
|
||||
}
|
||||
|
||||
interface IAmazonProductClient {
|
||||
itemSearch(query: any, callback?: IAmazonProductQueryCallback) : Promise<Object[]>;
|
||||
itemLookup(query: any, callback?: IAmazonProductQueryCallback) : Promise<Object[]>;
|
||||
browseNodeLookup(query: any, callback?: IAmazonProductQueryCallback) : Promise<Object[]>;
|
||||
}
|
||||
|
||||
export function createClient(credentials:ICredentials) : IAmazonProductClient;
|
||||
}
|
||||
Vendored
+288
-80
@@ -178,15 +178,15 @@ declare module AmCharts {
|
||||
/** You can trigger the animation of the pie chart. */
|
||||
animateAgain();
|
||||
/** You can trigger the click on a slice from outside. index - the number of a slice or Slice object. */
|
||||
clickSlice(index);
|
||||
clickSlice(index: number);
|
||||
/** Hides slice. index - the number of a slice or Slice object. */
|
||||
hideSlice(index);
|
||||
hideSlice(index: number);
|
||||
/** You can simulate roll-out of a slice from outside. index - the number of a slice or Slice object. */
|
||||
rollOutSlice(index);
|
||||
rollOutSlice(index: number);
|
||||
/** You can simulate roll-over a slice from outside. index - the number of a slice or Slice object. */
|
||||
rollOverSlice(index);
|
||||
rollOverSlice(index: number);
|
||||
/** Shows slice. index - the number of a slice or Slice object. */
|
||||
showSlice(index);
|
||||
showSlice(index: number);
|
||||
|
||||
/** Adds event listener of the type "clickSlice" or "pullInSlice" or "pullOutSlice" to the object.
|
||||
@param type Always "clickSlice" or "pullInSlice" or "pullOutSlice".
|
||||
@@ -311,22 +311,32 @@ declare module AmCharts {
|
||||
|
||||
If you do not set properties such as dashLength, lineAlpha, lineColor, etc - values of the axis are used.*/
|
||||
class Guide {
|
||||
/** If you set it to true, the guide will be displayed above the graphs. */
|
||||
above: boolean;
|
||||
/** Radar chart only. Specifies angle at which guide should start. Affects only fills, not lines. */
|
||||
angle: number;
|
||||
/** Baloon fill color. */
|
||||
balloonColor: string;
|
||||
/** The text which will be displayed if the user rolls-over the guide. */
|
||||
balloonText: string;
|
||||
/** Specifies if label should be bold or not. */
|
||||
boldLabel: boolean;
|
||||
/** Category of the guide (in case the guide is for category axis). */
|
||||
category: string;
|
||||
/** Dash length. */
|
||||
dashLength: number;
|
||||
/** Date of the guide (in case the guide is for category axis and parseDates is set to true). */
|
||||
date: Date;
|
||||
/** Works if a guide is added to CategoryAxis and this axis is non-date-based. If you set it to true, the guide will start (or be placed, if it's not a fill) on the beginning of the category cell and will end at the end of toCategory cell. */
|
||||
expand: boolean;
|
||||
/** Fill opacity. Value range is 0 - 1. */
|
||||
fillAlpha: number;
|
||||
/** Fill color. */
|
||||
fillColor: string;
|
||||
/** Font size of guide label. */
|
||||
fontSize: string;
|
||||
/** Unique id of a Guide. You don't need to set it, unless you want to. */
|
||||
id: string;
|
||||
/** Specifies whether label should be placed inside or outside plot area. */
|
||||
inside: boolean;
|
||||
/** The label which will be displayed near the guide. */
|
||||
@@ -339,6 +349,8 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
lineColor: string;
|
||||
/** Line thickness. */
|
||||
lineThickness: number;
|
||||
/** Position of guide label. Possible values are "left" or "right" for horizontal axis and "top" or "bottom" for vertical axis. */
|
||||
position: string;
|
||||
/** Tick length. */
|
||||
tickLength: number;
|
||||
/** Radar chart only. Specifies angle at which guide should end. Affects only fills, not lines. */
|
||||
@@ -351,6 +363,8 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
toValue: number;
|
||||
/** Value of the guide (in case the guide is for value axis). */
|
||||
value: number;
|
||||
/** Value axis of a guide. As you can add guides directly to the chart, you might need to specify which which value axis should be used. */
|
||||
valueAxis: ValueAxis;
|
||||
}
|
||||
/** ImagesSettings is a class which holds common settings of all MapImage objects. */
|
||||
class ImagesSettings {
|
||||
@@ -381,7 +395,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** Font size of a label.
|
||||
@default 11
|
||||
*/
|
||||
labelFontSize: number;
|
||||
labelfontSize: string;
|
||||
/** Position of the label. Allowed values are: left, right, top, bottom and middle. right */
|
||||
labelPosition: string;
|
||||
/** Label roll-over color. #00CC00 */
|
||||
@@ -546,7 +560,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** Hides event bullets. */
|
||||
hideStockEvents();
|
||||
/** Removes event listener from the object. */
|
||||
removeListener(obj, type, handler);
|
||||
removeListener(obj: any, type: string, handler: any);
|
||||
/** Removes panel from the stock chart. Requires stockChart.validateNow() method to be called after this action. */
|
||||
removePanel(panel: StockPanel);
|
||||
/** Shows event bullets. */
|
||||
@@ -556,7 +570,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** Method which forces the stock chart to rebuild. Should be called after properties are changed. */
|
||||
validateNow();
|
||||
/** Zooms chart to specified dates. startDate, endDate - Date objects. */
|
||||
zoom(startDate, endDate);
|
||||
zoom(startDate: Date, endDate: Date);
|
||||
/** Zooms out the chart. */
|
||||
zoomOut();
|
||||
|
||||
@@ -716,7 +730,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
*/
|
||||
equalWidths: boolean;
|
||||
/** Font size. Will use chart's font size if not set. */
|
||||
fontSize: number;
|
||||
fontSize: string;
|
||||
/** Horizontal space between legend item and left/right border. */
|
||||
horizontalGap: number;
|
||||
/** The text which will be displayed in the legend. Tag [[title]] will be replaced with the title of the graph. [[title]] */
|
||||
@@ -886,8 +900,17 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** AmChart is a base class of all charts. It can not be instantiated explicitly. AmCoordinateChart, AmPieChart and AmMap extend AmChart class. */
|
||||
class AmChart {
|
||||
/** used when constructing a chart with a theme */
|
||||
constructor(theme: any);
|
||||
/** Background color. You should set backgroundAlpha to >0 value in order background to be visible. We recommend setting background color directly on a chart's DIV instead of using this property. #FFFFFF */
|
||||
constructor(theme?: any);
|
||||
/** Specifies, if class names should be added to chart elements. */
|
||||
addClassNames: boolean;
|
||||
/** Array of Labels. Example of label object, with all possible properties:
|
||||
{"x": 20, "y": 20, "text": "this is label", "align": "left", "size": 12, "color": "#CC0000", "alpha": 1, "rotation": 0, "bold": true, "url": "http://www.amcharts.com"} */
|
||||
allLabels: Label[];
|
||||
/** Set this to false if you don't want chart to resize itself whenever its parent container size changes. */
|
||||
autoResize: boolean;
|
||||
/** Opacity of background. Set it to >0 value if you want backgroundColor to work. However we recommend changing div's background-color style for changing background color. */
|
||||
backgroundAlpha: number;
|
||||
/** Background color. You should set backgroundAlpha to >0 value in order background to be visible. We recommend setting background color directly on a chart's DIV instead of using this property. #FFFFFF */
|
||||
backgroundColor: string;
|
||||
/** The chart creates AmBalloon class itself. If you want to customize balloon, get balloon instance using this property, and then change balloon's properties. AmBalloon */
|
||||
balloon: AmBalloon;
|
||||
@@ -895,32 +918,83 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
borderAlpha: number;
|
||||
/** Color of chart's border. You should set borderAlpha >0 in order border to be visible. We recommend setting border color directly on a chart's DIV instead of using this property. #000000 */
|
||||
borderColor: string;
|
||||
/** This prefix is added to all class names which are added to all visual elements of a chart in case addClassNames is set to true. */
|
||||
classNamePrefix: string;
|
||||
/** Text color. #000000 */
|
||||
color: string;
|
||||
/** Non-commercial version only. Specifies position of link to amCharts site. Allowed values are: top-left, top-right, bottom-left and bottom-right.
|
||||
@default 'top-left'
|
||||
*/
|
||||
creditsPosition: string;
|
||||
/** Array of data objects, for example: [{country:"US", value:524},{country:"UK", value:624},{country:"Lithuania", value:824}]. You can have any number of fields and use any field names. In case of AmMap, data provider should be MapData object. */
|
||||
dataProvider: any[];
|
||||
/** Decimal separator.
|
||||
@Default . */
|
||||
decimalSeparator: string;
|
||||
/** Using this property you can add any additional information to SVG, like SVG filters or clip paths. The structure of this object should be identical to XML structure of a object you are adding, only in JSON format. */
|
||||
defs: any;
|
||||
/** Export config. Specifies how export to image/data export/print/annotate menu will look and behave. You can find a lot of examples in amcharts/plugins/export folder. */
|
||||
export: ExportSettings;
|
||||
/** Font family. Verdana */
|
||||
fontFamily: string;
|
||||
/** Font size.
|
||||
@default 11
|
||||
*/
|
||||
fontSize: number;
|
||||
/** Height of a chart. "100%" means the chart's height will be equal to it's container's (DIV) height and will resize if height of the container changes. Set a number instead of percents if your chart's size needs to be fixed.
|
||||
@default 1
|
||||
fontSize: string;
|
||||
/** If you set this to true, the lines of the chart will be distorted and will produce hand-drawn effect. Try to adjust chart.handDrawScatter and chart.handDrawThickness properties for a more scattered result.
|
||||
@Default false
|
||||
*/
|
||||
height: any;
|
||||
handDrawn: boolean;
|
||||
/** Defines by how many pixels hand-drawn line (when handDrawn is set to true) will fluctuate.
|
||||
@Default 2
|
||||
*/
|
||||
handDrawScatter: number;
|
||||
/** Defines by how many pixels line thickness will fluctuate (when handDrawn is set to true).
|
||||
@Default 1
|
||||
*/
|
||||
handDrawThickness: number;
|
||||
/** Time, in milliseconds after which balloon is hidden if the user rolls-out of the object. Might be useful for AmMap to avoid balloon flickering while moving mouse over the areas. Note, this is not duration of fade-out. Duration of fade-out is set in AmBalloon class.
|
||||
@Default 150
|
||||
*/
|
||||
hideBalloonTime: number;
|
||||
/** Legend of a chart. */
|
||||
legend: AmLegend;
|
||||
/** Reference to the div of the legend. */
|
||||
legendDiv: HTMLElement;
|
||||
/** Object with precision, decimalSeparator and thousandsSeparator set which will be used for number formatting. Precision set to -1 means that values won't be rounded. {precision:-1, decimalSeparator:'.', thousandsSeparator:','} */
|
||||
numberFormatter: Object;
|
||||
/** You can add listeners of events using this property. Example: listeners = [{"event":"dataUpdated", "method":handleEvent}]; */
|
||||
listerns: Object[];
|
||||
/** This setting affects touch-screen devices only. If a chart is on a page, and panEventsEnabled are set to true, the page won't move if the user touches the chart first. If a chart is big enough and occupies all the screen of your touch device, the user won’t be able to move the page at all. That's why the default value is "false". If you think that selecting/panning the chart or moving/pinching the map is a primary purpose of your users, you should set panEventsEnabled to true. */
|
||||
panEventsEnabled: boolean;
|
||||
/** Object with precision, decimalSeparator and thousandsSeparator set which will be used for formatting percent values. {precision:2, decimalSeparator:'.', thousandsSeparator:','} */
|
||||
percentFormatter: Object;
|
||||
/** Specifies absolute or relative path to amCharts files, i.e. "amcharts/". (where all .js files are located)
|
||||
If relative URLs are used, they will be relative to the current web page, displaying the chart.
|
||||
You can also set path globally, using global JavaScript variable AmCharts_path. If this variable is set, and "path" is not set in chart config, the chart will assume the path from the global variable. This allows setting amCharts path globally. I.e.:
|
||||
var AmCharts_path = "/libs/amcharts/";
|
||||
"path" parameter will be used by the charts to locate it's files, like images, plugins or patterns.*/
|
||||
path: string;
|
||||
/** Specifies path to the folder where images like resize grips, lens and similar are.
|
||||
IMPORTANT: Since V3.14.12, you should use "path" to point to amCharts directory instead. The "pathToImages" will be automatically set and does not need to be in the chart config, unless you keep your images separately from other amCharts files. */
|
||||
pathToImages: string;
|
||||
/** Precision of percent values. -1 means percent values won't be rounded at all and show as they are.
|
||||
@default 2
|
||||
*/
|
||||
percentPrecision: number;
|
||||
/** Precision of values. -1 means values won't be rounded at all and show as they are.
|
||||
@Default 1*/
|
||||
precision: number;
|
||||
/** Prefixes which are used to make big numbers shorter: 2M instead of 2000000, etc. Prefixes are used on value axes and in the legend. To enable prefixes, set usePrefixes property to true. [{number:1e+3,prefix:"k"},{number:1e+6,prefix:"M"},{number:1e+9,prefix:"G"},{number:1e+12,prefix:"T"},{number:1e+15,prefix:"P"},{number:1e+18,prefix:"E"},{number:1e+21,prefix:"Z"},{number:1e+24,prefix:"Y"}] */
|
||||
prefixesOfBigNumbers: any[];
|
||||
/** Prefixes which are used to make small numbers shorter: 2μ instead of 0.000002, etc. Prefixes are used on value axes and in the legend. To enable prefixes, set usePrefixes property to true. [{number:1e-24, prefix:"y"},{number:1e-21, prefix:"z"},{number:1e-18, prefix:"a"},{number:1e-15, prefix:"f"},{number:1e-12, prefix:"p"},{number:1e-9, prefix:"n"},{number:1e-6, prefix:"μ"},{number:1e-3, prefix:"m"}] */
|
||||
prefixesOfSmallNumbers: any[];
|
||||
/** Theme of a chart. Config files of themes can be found in amcharts/themes/ folder. More info about using themes. */
|
||||
theme: string;
|
||||
/** Thousands separator.
|
||||
@default .
|
||||
*/
|
||||
thousandsSeparator: string;
|
||||
/** Array of Title objects. */
|
||||
titles: Title[];
|
||||
/** Type of a chart. Required when creating chart using JSON. Possible types are: serial, pie, xy, radar, funnel, gauge, map, stock. */
|
||||
type: string;
|
||||
/** If true, prefixes will be used for big and small numbers. You can set arrays of prefixes via prefixesOfSmallNumbers and prefixesOfBigNumbers properties. */
|
||||
usePrefixes: boolean;
|
||||
/** Read-only. Indicates current version of a script. */
|
||||
@@ -938,7 +1012,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
bold - specifies if text is bold (true/false),
|
||||
url - url
|
||||
*/
|
||||
addLabel(x: number, y: number, text: string, align: string, size, color: string, rotation, alpha: number, bold: boolean, url: string);
|
||||
addLabel(x: number, y: number, text: string, align: string, size: number, color: string, rotation: number, alpha: number, bold: boolean, url: string);
|
||||
/** Adds a legend to the chart.
|
||||
By default, you don't need to create div for your legend, however if you want it to be positioned in some different way, you can create div anywhere you want and pass id or reference to your div as a second parameter.
|
||||
(NOTE: This method will not work on StockPanel.)
|
||||
@@ -955,7 +1029,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
addLegend(legend: AmLegend, legendDiv: HTMLElement);
|
||||
|
||||
/** Adds title to the top of the chart. Pie, Radar positions are updated so that they won't overlap. Plot area of Serial/XY chart is also updated unless autoMargins property is set to false. You can add any number of titles - each of them will be placed in a new line. To remove titles, simply clear titles array: chart.titles = []; and call chart.validateNow() method. text - text of a title size - font size color - title color alpha - title opacity bold - boolean value indicating if title should be bold. */
|
||||
addTitle(text, size, color, alpha, bold);
|
||||
addTitle(text: string, size: number, color: string, alpha: number, bold: boolean);
|
||||
/** Clears the chart area, intervals, etc. */
|
||||
clear();
|
||||
/** Removes all labels added to the chart. */
|
||||
@@ -996,34 +1070,22 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** AmCoordinateChart is a base class of AmRectangularChart. It can not be instantiated explicitly. */
|
||||
|
||||
class AmCoordinateChart extends AmChart {
|
||||
/** Read-only. Array, holding processed chart's data. */
|
||||
chartData: Object[];
|
||||
/** Specifies the colors of the graphs if the lineColor of a graph is not set.
|
||||
It there are more graphs then colors in this array, the chart picks random color.
|
||||
@default ['#FF6600', '#FCD202', '#B0DE09', '#0D8ECF', '#2A0CD0', '#CD0D74', '#CC0000', '#00CC00', '#0000CC', '#DDDDDD', '#999999', '#333333', '#990000'] */
|
||||
colors: any[];
|
||||
colors: string[];
|
||||
/** The array of graphs belonging to this chart.
|
||||
To add/remove graph use addGraph/removeGraph methods instead of adding/removing graphs directly to array.
|
||||
*/
|
||||
graphs: any[];
|
||||
/** The opacity of plot area's border.
|
||||
Value range is 0 - 1.
|
||||
graphs: AmGraph[];
|
||||
/** Specifies if grid should be drawn above the graphs or below. Will not work properly with 3D charts.
|
||||
@default false
|
||||
*/
|
||||
plotAreaBorderAlpha: number;
|
||||
/** The color of the plot area's border.
|
||||
Note, the it is invisible by default, as plotAreaBorderAlpha default value is 0.
|
||||
Set it to a value higher than 0 to make it visible.
|
||||
@default #000000
|
||||
*/
|
||||
plotAreaBorderColor: string;
|
||||
/** Opacity of plot area.
|
||||
Plural form is used to keep the same property names as our Flex charts'.
|
||||
Flex charts can accept array of numbers to generate gradients.
|
||||
Although you can set array here, only first value of this array will be used.
|
||||
*/
|
||||
plotAreaFillAlphas: number;
|
||||
/** You can set both one color if you need a solid color or array of colors to generate gradients, for example: ["#000000", "#0000CC"]
|
||||
@default #FFFFFF
|
||||
*/
|
||||
plotAreaFillColors: any;
|
||||
gridAboveGraphs: boolean;
|
||||
/** Instead of adding guides to the axes, you can push all of them to this array. In case guide has category or date defined, it will automatically will be assigned to the category axis. Otherwise to first value axis, unless you specify a different valueAxis for the guide. */
|
||||
guides: Guide[];
|
||||
/** Specifies whether the animation should be sequenced or all objects should appear at once.
|
||||
@default true
|
||||
*/
|
||||
@@ -1053,6 +1115,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** Adds a graph to the chart.
|
||||
*/
|
||||
addGraph(graph: AmGraph);
|
||||
/** Adds a legend to the chart. By default, you don't need to create div for your legend, however if you want it to be positioned in some different way, you can create div anywhere you want and pass id or reference to your div as a second parameter. (NOTE: This method will not work on StockPanel.) */
|
||||
/** Adds value axis to the chart.
|
||||
One value axis is created automatically, so if you don't want to change anything or add more value axes, you don't need to add it.
|
||||
*/
|
||||
@@ -1186,16 +1249,16 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
startOnAxis: boolean;
|
||||
|
||||
/** Number returns coordinate of a category. Works only if parseDates is false. If parseDates is true, use dateToCoordinate method. category - String */
|
||||
categoryToCoordinate(category);
|
||||
categoryToCoordinate(category: string);
|
||||
|
||||
/** date - Date object Returns Date of the coordinate, in case parseDates is set to true and equalSpacing is set to false. coordinate - Number */
|
||||
coordinateToDate(coordinate);
|
||||
coordinateToDate(coordinate: number);
|
||||
|
||||
/** Number Returns coordinate of the date, in case parseDates is set to true. if parseDates is false, use categoryToCoordinate method. date - Date object */
|
||||
dateToCoordinate(date);
|
||||
dateToCoordinate(date: Date);
|
||||
|
||||
/** Number Returns index of the category which is most close to specified coordinate. x - coordinate */
|
||||
xToIndex(x);
|
||||
xToIndex(x: number);
|
||||
}
|
||||
|
||||
/** ChartScrollbar class displays chart scrollbar. Supported by AmSerialChart and AmXYChart.
|
||||
@@ -1269,7 +1332,9 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
|
||||
/** AmRectangularChart is a base class of AmSerialChart and AmXYChart. It can not be instantiated explicitly.*/
|
||||
class AmRectangularChart extends AmCoordinateChart {
|
||||
/** The angle of the 3D part of plot area. This creates a 3D effect (if the "depth3D" is > 0). */
|
||||
/** The angle of the 3D part of plot area. This creates a 3D effect (if the "depth3D" is > 0).
|
||||
@default 0
|
||||
*/
|
||||
angle: number;
|
||||
/** Space left from axis labels/title to the chart's outside border, if autoMargins set to true.
|
||||
@default 10
|
||||
@@ -1279,11 +1344,12 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
@default true
|
||||
*/
|
||||
autoMargins: boolean;
|
||||
/** Chart cursor. */
|
||||
/** Cursor of a chart. */
|
||||
chartCursor: ChartCursor;
|
||||
/** Chart scrollbar. */
|
||||
chartScrollbar: ChartScrollbar;
|
||||
/** The depth of the 3D part of plot area. This creates a 3D effect (if the "angle" is > 0). */
|
||||
/** The depth of the 3D part of plot area. This creates a 3D effect (if the "angle" is > 0).
|
||||
@default 0*/
|
||||
depth3D: number;
|
||||
/** Number of pixels between the container's bottom border and plot area. This space can be used for bottom axis' values. If autoMargin is true and bottom side has axis, this property is ignored.
|
||||
@default 20
|
||||
@@ -1297,18 +1363,66 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
@default 20
|
||||
*/
|
||||
marginRight: number;
|
||||
/** Flag which should be set to false if you need margins to be recalculated on next chart.validateNow() call. */
|
||||
/** Flag which should be set to false if you need margins to be recalculated on next chart.validateNow() call.
|
||||
@default false
|
||||
*/
|
||||
marginsUpdated: boolean;
|
||||
/** Number of pixels between the container's top border and plot area. This space can be used for top axis' values. If autoMargin is true and top side has axis, this property is ignored.
|
||||
@default 20
|
||||
*/
|
||||
marginTop: number;
|
||||
/** The opacity of plot area's border. Value range is 0 - 1.
|
||||
@default 0
|
||||
*/
|
||||
plotAreaBorderAlpha: number;
|
||||
/** The color of the plot area's border. Note, the it is invisible by default, as plotAreaBorderAlpha default value is 0. Set it to a value higher than 0 to make it visible.
|
||||
@default '#000000'*/
|
||||
plotAreaBorderColor: string;
|
||||
/** Opacity of plot area. Plural form is used to keep the same property names as our Flex charts'. Flex charts can accept array of numbers to generate gradients. Although you can set array here, only first value of this array will be used.
|
||||
@default 0
|
||||
*/
|
||||
plotAreaFillAlphas: number;
|
||||
/** You can set both one color if you need a solid color or array of colors to generate gradients, for example: ["#000000", "#0000CC"]
|
||||
@default '#FFFFFF'
|
||||
*/
|
||||
plotAreaFillColors: any;
|
||||
/** If you are using gradients to fill the plot area, you can use this property to set gradient angle. The only allowed values are horizontal and vertical: 0, 90, 180, 270.
|
||||
@default 0
|
||||
*/
|
||||
plotAreaGradientAngle: number;
|
||||
/** Array of trend lines added to a chart. You can add trend lines to a chart using this array or access already existing trend lines */
|
||||
trendLines: any[];
|
||||
/** It's a simple object containing information about zoom-out button. Other available properties of this object are fontSize and color. color specifies text color of a button. {backgroundColor:'#b2e1ff',backgroundAlpha:1} */
|
||||
zoomOutButton: Object;
|
||||
trendLines: TrendLine[];
|
||||
/** Opacity of zoom-out button background.
|
||||
@default 0
|
||||
*/
|
||||
zoomOutButtonAlpha: number;
|
||||
/** Zoom-out button background color.
|
||||
@default '#e5e5e5'
|
||||
*/
|
||||
zoomOutButtonColor: string;
|
||||
/** Name of zoom-out button image. In the images folder there is another lens image, called lensWhite.png. You might want to have white lens when background is dark. Or you can simply use your own image.
|
||||
@default lens.png
|
||||
*/
|
||||
zoomOutButtonImage: string;
|
||||
/** Size of zoom-out button image
|
||||
@default: 17
|
||||
*/
|
||||
zoomOutButtonImageSize: number;
|
||||
/** Padding around the text and image.
|
||||
@default: 8
|
||||
*/
|
||||
zoomOutButtonPadding: number;
|
||||
/** Opacity of zoom-out button background when mouse is over it.
|
||||
@default: 1
|
||||
*/
|
||||
zoomOutButtonRollOverAlpha: number;
|
||||
/** Text in the zoom-out button. Show all */
|
||||
zoomOutText: string;
|
||||
|
||||
/** Adds a ChartCursor object to a chart */
|
||||
addChartCursor(cursor: ChartCursor);
|
||||
/** Adds a ChartScrollbar to a chart */
|
||||
addChartScrollbar(scrollbar: ChartScrollbar);
|
||||
/** Adds a TrendLine to a chart.
|
||||
You should call chart.validateNow() after this method is called in order the trend line to be visible. */
|
||||
addTrendLine(trendLine: TrendLine);
|
||||
@@ -1318,7 +1432,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
removeChartScrollbar();
|
||||
/** Removes a trend line from a chart.
|
||||
You should call chart.validateNow() in order the changes to be visible. */
|
||||
removeTrendLine;
|
||||
removeTrendLine(trendLine: TrendLine);
|
||||
}
|
||||
|
||||
/* Trend lines are straight lines indicating trends, might also be used for some different purposes. Can be used by Serial and XY charts. To add/remove trend line, use chart.addTrendLine(trendLine)/chart.removeTrendLine(trendLine) methods or simply pass array of trend lines: chart.trendLines = [trendLine1, trendLine2].
|
||||
@@ -1395,7 +1509,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** Hides cursor. */
|
||||
hideCursor();
|
||||
/** You can force cursor to appear at specified cateogry or date. */
|
||||
showCursorAt(category);
|
||||
showCursorAt(category: string);
|
||||
/** Adds event listener of the type "changed" to the object.
|
||||
@param type Always "changed".
|
||||
@param handler Dispatched when cursor position is changed. "index" is a series index over which chart cursors currently is. "zooming" specifies if user is currently zooming (is selecting) the chart. mostCloseGraph property is set only when oneBalloonOnly is set to true.*/
|
||||
@@ -1439,20 +1553,26 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
chart.write("chartdiv");
|
||||
*/
|
||||
class AmSerialChart extends AmRectangularChart {
|
||||
/** Read-only. Chart creates category axis itself. If you want to change some properties, you should get this axis from the chart and set properties to this object. */
|
||||
/** Date format of the graph balloon (if chart parses dates and you don't use chartCursor).
|
||||
@default 'MMM DD, YYYY'
|
||||
*/
|
||||
balloonDateFormat: string;
|
||||
/** Read-only. Chart creates category axis itself. If you want to change some properties, you should get this axis from the chart and set properties to this object. */
|
||||
categoryAxis: CategoryAxis;
|
||||
/** Category field name tells the chart the name of the field in your dataProvider object which will be used for category axis values. */
|
||||
categoryField: string;
|
||||
/** Read-only. Array of SerialDataItem objects generated from dataProvider. */
|
||||
chartData: any[];
|
||||
/** The gap in pixels between two columns of the same category.
|
||||
@default 5
|
||||
*/
|
||||
columnSpacing: number;
|
||||
/** Relative width of columns. Value range is 0 - 1. 0.8 */
|
||||
/** Space between 3D stacked columns.
|
||||
@default 0
|
||||
*/
|
||||
columnSpacing3D: number;
|
||||
/** Relative width of columns. Value range is 0 - 1.
|
||||
@default 0.8
|
||||
*/
|
||||
columnWidth: number;
|
||||
/** Array holding chart's data. */
|
||||
dataProvider: any[];
|
||||
/** Read-only. If category axis parses dates endDate indicates date to which the chart is currently displayed. */
|
||||
endDate: Date;
|
||||
/** Read-only. Category index to which the chart is currently displayed. */
|
||||
@@ -1461,8 +1581,14 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
maxSelectedSeries: number;
|
||||
/** The longest time span allowed to select (in milliseconds) for example, 259200000 will limit selection to 3 days. */
|
||||
maxSelectedTime: number;
|
||||
/** The shortest time span allowed to select (in milliseconds) for example, 1000 will limit selection to 1 second. */
|
||||
/** The shortest time span allowed to select (in milliseconds) for example, 1000 will limit selection to 1 second.
|
||||
@default 0
|
||||
*/
|
||||
minSelectedTime: number;
|
||||
/** Specifies if scrolling of a chart with mouse wheel is enabled. If you press shift while rotating mouse wheel, the chart will zoom-in/out. */
|
||||
mouseWheelScrollEnabled: boolean;
|
||||
/** Specifies if zooming of a chart with mouse wheel is enabled. If you press shift while rotating mouse wheel, the chart will scroll. */
|
||||
mouseWheelZoomEnabled: boolean;
|
||||
/** If you set this to true, the chart will be rotated by 90 degrees (the columns will become bars). */
|
||||
rotate: boolean;
|
||||
/** Read-only. If category axis parses dates startDate indicates date from which the chart is currently displayed. */
|
||||
@@ -1475,15 +1601,15 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
zoomOutOnDataUpdate: boolean;
|
||||
|
||||
/** Number Returns index of the specified category value. value - series (category value) which index you want to find. */
|
||||
getCategoryIndexByValue(value);
|
||||
getCategoryIndexByValue(value: number);
|
||||
/** Zooms out, charts shows all available data. */
|
||||
zoomOut();
|
||||
/** Zooms the chart by the value of the category axis. start - category value, String \\ end - category value, String */
|
||||
zoomToCategoryValues(start, end);
|
||||
zoomToCategoryValues(start: Date, end: Date);
|
||||
/** Zooms the chart from one date to another. start - start date, Date object \\ end - end date, Date object */
|
||||
zoomToDates(start, end);
|
||||
zoomToDates(start: Date, end: Date);
|
||||
/** Zooms the chart by the index of the category. start - start index, Number \\ end - end index, Number */
|
||||
zoomToIndexes(start, end);
|
||||
zoomToIndexes(start: Date, end: Date);
|
||||
}
|
||||
|
||||
class PeriodSelector {
|
||||
@@ -1522,7 +1648,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
.
|
||||
@param handler - Dispatched when dates in period selector input fields are changed or user clicks on one of the predefined period buttons. */
|
||||
|
||||
addListener(type, handler: (e: {
|
||||
addListener(type: string, handler: (e: {
|
||||
/** Always: "changed" */
|
||||
|
||||
type: string;
|
||||
@@ -1695,6 +1821,31 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
urlTarget: string;
|
||||
}
|
||||
|
||||
/** Creates a label on the chart which can be placed anywhere, multiple can be assigned. */
|
||||
class Label {
|
||||
/** @Default 'left' */
|
||||
align: string;
|
||||
/** @Default 1 */
|
||||
alpha: number;
|
||||
/** Specifies if label is bold or not. */
|
||||
bold: boolean;
|
||||
/** Color of a label */
|
||||
color: string;
|
||||
/** Unique id of a Label. You don't need to set it, unless you want to. */
|
||||
id: string;
|
||||
/** Rotation angle. */
|
||||
rotation: number;
|
||||
/** Text size */
|
||||
size: number;
|
||||
/** Text of a label */
|
||||
text: string;
|
||||
/** URL which will be access if user clicks on a label. */
|
||||
url: string;
|
||||
/** X position of a label. */
|
||||
x: number|string;
|
||||
/** y position of a label. */
|
||||
y: number|string;
|
||||
}
|
||||
/** Common settings of legends. If you change a property after the chart is initialized, you should call stockChart.validateNow() method in order for it to work. If there is no default value specified, default value of StockLegend class will be used. */
|
||||
class LegendSettings {
|
||||
/** Alignment of legend entries. Possible values are: "left", "right" and "center". */
|
||||
@@ -1807,7 +1958,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** Balloon background color. Usually balloon background color is set by the chart. Only if "adjustBorderColor" is "true" this color will be used. #CC0000 */
|
||||
fillColor: string;
|
||||
/** Size of text in the balloon. Chart's fontSize is used by default. */
|
||||
fontSize: number;
|
||||
fontSize: string;
|
||||
/** Horizontal padding of the balloon.
|
||||
@default 8
|
||||
3*/
|
||||
@@ -1865,7 +2016,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** Fill color. Every second space between grid lines can be filled with color. Set fillAlpha to a value greater than 0 to see the fills. */
|
||||
fillColor: string;
|
||||
/** Text size. */
|
||||
fontSize: number;
|
||||
fontSize: string;
|
||||
/** Opacity of grid lines. */
|
||||
gridAlpha: number;
|
||||
/** Color of grid lines. */
|
||||
@@ -1945,7 +2096,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
*/
|
||||
enabled: boolean;
|
||||
/** Font size. */
|
||||
fontSize: number;
|
||||
fontSize: string;
|
||||
/** Specifies which graph will be displayed in the scrollbar. */
|
||||
graph: AmGraph;
|
||||
/** Graph fill opacity. */
|
||||
@@ -2004,6 +2155,8 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
alphaField: string;
|
||||
/** Value balloon color. Will use graph or data item color if not set. */
|
||||
balloonColor: string;
|
||||
/** If you set some function, the graph will call it and pass GraphDataItem and AmGraph object to it. This function should return a string which will be displayed in a balloon. */
|
||||
balloonFunction(graphDataItem: GraphDataItem, amGraph: AmGraph): string;
|
||||
/** Balloon text. You can use tags like [[value]], [[description]], [[percents]], [[open]], [[category]] [[value]] */
|
||||
balloonText: string;
|
||||
/** Specifies if the line graph should be placed behind column graphs */
|
||||
@@ -2069,7 +2222,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** You can set another graph here and if fillAlpha is >0, the area from this graph to fillToGraph will be filled (instead of filling the area to the X axis). */
|
||||
fillToGraph: AmGraph;
|
||||
/** Size of value labels text. Will use chart's fontSize if not set. */
|
||||
fontSize: number;
|
||||
fontSize: string;
|
||||
/** Orientation of the gradient fills (only for "column" graph type). Possible values are "vertical" and "horizontal". vertical */
|
||||
gradientOrientation: string;
|
||||
/** Specifies whether the graph is hidden. Do not use this to show/hide the graph, use hideGraph(graph) and showGraph(graph) methods instead. */
|
||||
@@ -2193,7 +2346,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** Fill color. Every second space between grid lines can be filled with color. Set fillAlpha to a value greater than 0 to see the fills. #FFFFFF */
|
||||
fillColor: string;
|
||||
/** Size of value labels text. Will use chart's fontSize if not set. */
|
||||
fontSize: number;
|
||||
fontSize: string;
|
||||
/** Opacity of grid lines. 0.2 */
|
||||
gridAlpha: number;
|
||||
/** Color of grid lines. #000000 */
|
||||
@@ -2247,7 +2400,7 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** Color of axis title. Will use text color of chart if not set any. */
|
||||
titleColor: string;
|
||||
/** Font size of axis title. Will use font size of chart plus two pixels if not set any. */
|
||||
titleFontSize: number;
|
||||
titlefontSize: string;
|
||||
|
||||
/** Adds guide to the axis. */
|
||||
addGuide(guide:Guide);
|
||||
@@ -2269,24 +2422,43 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
durationUnits: Object;
|
||||
/** Radar chart only. Possible values are: "polygons" and "circles". Set "circles" for polar charts. polygons */
|
||||
gridType: string;
|
||||
/** Unique id of value axis. It is not required to set it, unless you need to tell the graph which exact value axis it should use. */
|
||||
id: string;
|
||||
/** Specifies whether guide values should be included when calculating min and max of the axis. */
|
||||
includeGuidesInMinMax: boolean;
|
||||
/** If true, the axis will include hidden graphs when calculating min and max values. */
|
||||
includeHidden: boolean;
|
||||
/** Specifies whether values on axis can only be integers or both integers and doubles. */
|
||||
integersOnly: boolean;
|
||||
/** You can use this function to format Value axis labels. This function is called and these parameters are passed: labelFunction(value, valueText, valueAxis);
|
||||
Where value is numeric value, valueText is formatted string and valueAxis is a reference to valueAxis object.
|
||||
|
||||
If axis type is "date", labelFunction will pass different arguments:
|
||||
labelFunction(valueText, date, valueAxis)
|
||||
|
||||
Your function should return string.*/
|
||||
labelFunction(value: number, valueText: string, valueAxis: ValueAxis): string;
|
||||
labelFunction(valueText: string, data: Date, valueAxis: ValueAxis): string;
|
||||
/** Specifies if this value axis' scale should be logarithmic. */
|
||||
logarithmic: boolean;
|
||||
/** Read-only. Maximum value of the axis. */
|
||||
max: number;
|
||||
/** If you don't want max value to be calculated by the chart, set it using this property. This value might still be adjusted so that it would be possible to draw grid at rounded intervals. */
|
||||
maximum: number;
|
||||
/** If your value axis is date-based, you can specify maximum date of the axis. Can be set as date object, timestamp number or string if dataDateFormat is set. */
|
||||
maximumData: Date;
|
||||
/** Read-only. Minimum value of the axis. */
|
||||
min: number;
|
||||
/** If you don't want min value to be calculated by the chart, set it using this property. This value might still be adjusted so that it would be possible to draw grid at rounded intervals. */
|
||||
minimum: number;
|
||||
/** If your value axis is date-based, you can specify minimum date of the axis. Can be set as date object, timestamp number or string if dataDateFormat is set. */
|
||||
minimumDate: Date;
|
||||
/** If set value axis scale (min and max numbers) will be multiplied by it. I.e. if set to 1.2 the scope of values will increase by 20%. */
|
||||
minMaxMultiplier: number;
|
||||
/** Works with radar charts only. If you set it to “middle”, labels and data points will be placed in the middle between axes. */
|
||||
pointPosition: string;
|
||||
/** Possible values are: "top", "bottom", "left", "right". If axis is vertical, default position is "left". If axis is horizontal, default position is "bottom". */
|
||||
position: string;
|
||||
/** Precision (number of decimals) of values. */
|
||||
precision: number;
|
||||
/** Radar chart only. Specifies if categories (axes' titles) should be displayed near axes)
|
||||
@@ -2301,10 +2473,22 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
stackType: string;
|
||||
/** Read-only. Value difference between two grid lines. */
|
||||
step: number;
|
||||
/** If you set minimum and maximum for your axis, chart adjusts them so that grid would start and end on the beginning and end of plot area and grid would be at equal intervals. If you set strictMinMax to true, the chart will not adjust minimum and maximum of value axis. */
|
||||
strictMinMax: boolean;
|
||||
/** In case you synchronize one value axis with another, you need to set the synchronization multiplier. Use synchronizeWithAxis method to set with which axis it should be synced. */
|
||||
synchronizationMultiplier: number;
|
||||
/** One value axis can be synchronized with another value axis. You can use both reference to your axis or id of the axis here. You should set synchronizationMultiplyer in order for this to work. */
|
||||
synchronizeWith: ValueAxis;
|
||||
/** If this value axis is stacked and has columns, setting valueAxis.totalText = "[[total]]" will make it to display total value above the most-top column. */
|
||||
totalText: string;
|
||||
/** Color of total text. */
|
||||
totalTextColor: string;
|
||||
/** Distance from data point to total text. */
|
||||
totalTextOffset: number;
|
||||
/** This allows you to have logarithmic value axis and have zero values in the data. You must set it to >0 value in order to work. */
|
||||
treatZeroAs: number;
|
||||
/** Type of value axis. If your values in data provider are dates and you want this axis to show dates instead of numbers, set it to "date". */
|
||||
type: string;
|
||||
/** Unit which will be added to the value label. */
|
||||
unit: string;
|
||||
/** Position of the unit. Possible values are "left" and "right". right */
|
||||
@@ -2314,20 +2498,23 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** If true, values will always be formatted using scientific notation (5e+8, 5e-8...) Otherwise only values bigger then 1e+21 and smaller then 1e-7 will be displayed in scientific notation. */
|
||||
useScientificNotation: boolean;
|
||||
|
||||
/** Adds guide to the axis. */
|
||||
addGuide(guide: Guide);
|
||||
/** Adds event listener to the object. type - string like 'axisChanged' (should be listed in 'events' section of this class or classes which extend this class). handler - function which is called when event happens */
|
||||
addListener(type, handler);
|
||||
addListener(type: string, handler: any);
|
||||
/** Number, - value of coordinate. Returns value of the coordinate. coordinate - y or x coordinate, in pixels. */
|
||||
coordinateToValue(coordinate);
|
||||
coordinateToValue(coordinate: number);
|
||||
/** Number - coordinate Returns coordinate of the value in pixels. value - Number */
|
||||
getCoordinate(value);
|
||||
|
||||
getCoordinate(value: number);
|
||||
/** Removes guide from the axis.*/
|
||||
removeGuide(guide: Guide);
|
||||
/** Removes event listener from the object. */
|
||||
removeListener(obj, type, handler);
|
||||
removeListener(obj: any, type: string, handler: any);
|
||||
|
||||
/** One value axis can be synchronized with another value axis. You should set synchronizationMultiplyer in order for this to work. */
|
||||
synchronizeWithAxis(axis:ValueAxis);
|
||||
/** XY Chart only. Zooms-in the axis to the provided values. */
|
||||
zoomToValues(startValue, endValue);
|
||||
zoomToValues(startValue: number, endValue: number);
|
||||
|
||||
/** Adds event listener of the type "axisZoomed" to the object.
|
||||
@param type Always "axisZoomed".
|
||||
@@ -2347,4 +2534,25 @@ If you do not set properties such as dashLength, lineAlpha, lineColor, etc - val
|
||||
/** Removes event listener from chart object. */
|
||||
removeListener(chart: AmChart, type: string, handler: any);
|
||||
}
|
||||
}
|
||||
|
||||
class Title {
|
||||
/** @default 1 */
|
||||
alpha: number;
|
||||
/** Specifies if the tile is bold or not.
|
||||
@default false*/
|
||||
bold: boolean;
|
||||
/** Text color of a title. */
|
||||
color: string;
|
||||
/** Unique id of a Title. You don't need to set it, unless you want to. */
|
||||
id: string;
|
||||
/** Text size */
|
||||
size: number;
|
||||
/** Text of a label */
|
||||
text: string;
|
||||
}
|
||||
class ExportSettings {
|
||||
enabled: boolean;
|
||||
libs: Object;
|
||||
menu: Object;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,265 @@
|
||||
/// <reference path="amplify-deferred.d.ts" />
|
||||
/// <reference path="../jquery/jquery.d.ts" />
|
||||
|
||||
// Copied examples directly from AmplifyJs site
|
||||
|
||||
// Subscribe and publish with no data
|
||||
|
||||
amplify.subscribe("nodataexample", function () {
|
||||
alert("nodataexample topic published!");
|
||||
});
|
||||
|
||||
// Subscribe and publish with data
|
||||
|
||||
amplify.publish("nodataexample");
|
||||
|
||||
amplify.subscribe("dataexample", function (data) {
|
||||
alert(data.foo); // bar
|
||||
});
|
||||
|
||||
|
||||
amplify.publish("dataexample", { foo: "bar" });
|
||||
|
||||
amplify.subscribe("dataexample2", function (param1, param2) {
|
||||
alert(param1 + param2); // barbaz
|
||||
});
|
||||
|
||||
//...
|
||||
|
||||
amplify.publish("dataexample2", "bar", "baz");
|
||||
|
||||
// Subscribe and publish with context and data
|
||||
|
||||
amplify.subscribe("datacontextexample", $("p:first"), function (data) {
|
||||
this.text(data.exampleText); // first p element would have "foo bar baz" as text
|
||||
});
|
||||
|
||||
amplify.publish("datacontextexample", { exampleText: "foo bar baz" });
|
||||
|
||||
// Subscribe to a topic with high priority
|
||||
|
||||
amplify.subscribe("priorityexample", function (data) {
|
||||
alert(data.foo);
|
||||
});
|
||||
|
||||
amplify.subscribe("priorityexample", function (data) {
|
||||
if (data.foo === "oops") {
|
||||
return false;
|
||||
}
|
||||
}, 1);
|
||||
|
||||
|
||||
// Store data with amplify storage picking the default storage technology:
|
||||
|
||||
amplify.publish("priorityexample", { foo: "bar" });
|
||||
amplify.publish("priorityexample", { foo: "oops" });
|
||||
|
||||
amplify.store("storeExample1", { foo: "bar" });
|
||||
amplify.store("storeExample2", "baz");
|
||||
// retrieve the data later via the key
|
||||
var myStoredValue = amplify.store("storeExample1"),
|
||||
myStoredValue2 = amplify.store("storeExample2"),
|
||||
myStoredValues = amplify.store();
|
||||
myStoredValue.foo; // bar
|
||||
myStoredValue2; // baz
|
||||
myStoredValues.storeExample1.foo; // bar
|
||||
myStoredValues.storeExample2; // baz
|
||||
|
||||
// Store data explicitly with session storage
|
||||
|
||||
amplify.store.sessionStorage("explicitExample", { foo2: "baz" });
|
||||
// retrieve the data later via the key
|
||||
var myStoredValue2 = amplify.store.sessionStorage("explicitExample");
|
||||
myStoredValue2.foo2; // baz
|
||||
|
||||
|
||||
// REQUEST
|
||||
|
||||
// Set up and use a request utilizing Ajax
|
||||
|
||||
|
||||
amplify.request.define("ajaxExample1", "ajax", {
|
||||
url: "/myApiUrl",
|
||||
dataType: "json",
|
||||
type: "GET"
|
||||
});
|
||||
|
||||
// later in code
|
||||
amplify.request("ajaxExample1", function (data) {
|
||||
data.foo; // bar
|
||||
});
|
||||
|
||||
// Set up and use a request utilizing Ajax and Caching
|
||||
|
||||
amplify.request.define("ajaxExample2", "ajax", {
|
||||
url: "/myApiUrl",
|
||||
dataType: "json",
|
||||
type: "GET",
|
||||
cache: "persist"
|
||||
});
|
||||
|
||||
// later in code
|
||||
amplify.request("ajaxExample2", function (data) {
|
||||
data.foo; // bar
|
||||
});
|
||||
|
||||
// a second call will result in pulling from the cache
|
||||
amplify.request("ajaxExample2", function (data) {
|
||||
data.baz; // qux
|
||||
})
|
||||
|
||||
// Set up and use a RESTful request utilizing Ajax
|
||||
|
||||
amplify.request.define("ajaxRESTFulExample", "ajax", {
|
||||
url: "/myRestFulApi/{type}/{id}",
|
||||
type: "GET"
|
||||
})
|
||||
|
||||
// later in code
|
||||
amplify.request("ajaxRESTFulExample",
|
||||
{
|
||||
type: "foo",
|
||||
id: "bar"
|
||||
},
|
||||
function (data) {
|
||||
// /myRESTFulApi/foo/bar was the URL used
|
||||
data.foo; // bar
|
||||
}
|
||||
);
|
||||
|
||||
// POST data with Ajax
|
||||
|
||||
amplify.request.define("ajaxPostExample", "ajax", {
|
||||
url: "/myRestFulApi",
|
||||
type: "POST"
|
||||
})
|
||||
|
||||
// later in code
|
||||
amplify.request("ajaxPostExample",
|
||||
{
|
||||
type: "foo",
|
||||
id: "bar"
|
||||
},
|
||||
function (data) {
|
||||
data.foo; // bar
|
||||
}
|
||||
);
|
||||
// Using data maps
|
||||
|
||||
// When searching Twitter, the key for the search phrase is q.If we want a more descriptive name, such as term, we can use a data map:
|
||||
|
||||
amplify.request.define("twitter-search", "ajax", {
|
||||
url: "http://search.twitter.com/search.json",
|
||||
dataType: "jsonp",
|
||||
dataMap: {
|
||||
term: "q"
|
||||
}
|
||||
});
|
||||
|
||||
amplify.request("twitter-search", { term: "amplifyjs" });
|
||||
|
||||
// Similarly, we can create a request that searches for mentions, by accepting a username:
|
||||
|
||||
amplify.request.define("twitter-mentions", "ajax", {
|
||||
url: "http://search.twitter.com/search.json",
|
||||
dataType: "jsonp",
|
||||
dataMap: function (data) {
|
||||
return {
|
||||
q: "@" + data.user
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
amplify.request("twitter-mentions", { user: "amplifyjs" });
|
||||
|
||||
// Setting up and using decoders
|
||||
|
||||
//Example:
|
||||
|
||||
var appEnvelopeDecoder: amplifyDecoder = function (data, status, xhr, success, error) {
|
||||
if (data.status === "success") {
|
||||
success(data.data);
|
||||
} else if (data.status === "fail" || data.status === "error") {
|
||||
error(data.message, data.status);
|
||||
} else {
|
||||
error(data.message, "fatal");
|
||||
}
|
||||
};
|
||||
|
||||
//a new decoder can be added to the amplifyDecoders interface
|
||||
interface amplifyDecoders {
|
||||
appEnvelope: amplifyDecoder;
|
||||
}
|
||||
|
||||
amplify.request.decoders.appEnvelope = appEnvelopeDecoder;
|
||||
|
||||
//but you can also just add it via an index
|
||||
amplify.request.decoders['appEnvelopeStr'] = appEnvelopeDecoder;
|
||||
|
||||
|
||||
amplify.request.define("decoderExample", "ajax", {
|
||||
url: "/myAjaxUrl",
|
||||
type: "POST",
|
||||
decoder: "appEnvelope"
|
||||
});
|
||||
|
||||
amplify.request({
|
||||
resourceId: "decoderExample",
|
||||
success: function (data) {
|
||||
data.foo; // bar
|
||||
},
|
||||
error: function (message, level) {
|
||||
alert("always handle errors with alerts.");
|
||||
}
|
||||
});
|
||||
|
||||
// POST with caching and single - use decoder
|
||||
|
||||
// Example:
|
||||
|
||||
amplify.request.define("decoderSingleExample", "ajax", {
|
||||
url: "/myAjaxUrl",
|
||||
type: "POST",
|
||||
decoder: function (data, status, xhr, success, error) {
|
||||
if (data.status === "success") {
|
||||
success(data.data);
|
||||
} else if (data.status === "fail" || data.status === "error") {
|
||||
error(data.message, data.status);
|
||||
} else {
|
||||
error(data.message, "fatal");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
amplify.request({
|
||||
resourceId: "decoderSingleExample",
|
||||
success: function (data) {
|
||||
data.foo; // bar
|
||||
},
|
||||
error: function (message, level) {
|
||||
alert("always handle errors with alerts.");
|
||||
}
|
||||
});
|
||||
// Handling Status
|
||||
// Status in Success and Error Callbacks
|
||||
|
||||
// amplify.request comes with built in support for status.The status parameter appears in the default success or error callbacks when using an ajax definition.
|
||||
|
||||
amplify.request.define("statusExample1", "ajax", {
|
||||
//...
|
||||
});
|
||||
|
||||
amplify.request({
|
||||
resourceId: "statusExample1",
|
||||
success: function (data, status) {
|
||||
},
|
||||
error: function (data, status) {
|
||||
}
|
||||
});
|
||||
|
||||
amplify.request({
|
||||
resourceId: "statusExample1"
|
||||
}).done(function (data, status) {
|
||||
}).fail(function (data, status) {
|
||||
}).always(function (data, status) { });
|
||||
|
||||
+182
@@ -0,0 +1,182 @@
|
||||
// Type definitions for AmplifyJs 1.1.0 using JQuery Deferred
|
||||
// Project: http://amplifyjs.com/
|
||||
// Definitions by: Jonas Eriksson <https://github.com/joeriks/>, Laurentiu Stamate <https://github.com/laurentiustamate94>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../jquery/jquery.d.ts" />
|
||||
|
||||
interface amplifyRequestSettings {
|
||||
resourceId: string;
|
||||
data?: any;
|
||||
success?: (...args: any[]) => void;
|
||||
error?: (...args: any[]) => void;
|
||||
}
|
||||
|
||||
interface amplifyDecoder {
|
||||
(
|
||||
data?: any,
|
||||
status?: string,
|
||||
xhr?: JQueryXHR,
|
||||
success?: (...args: any[]) => void,
|
||||
error?: (...args: any[]) => void
|
||||
): void
|
||||
}
|
||||
|
||||
interface amplifyDecoders {
|
||||
[decoderName: string]: amplifyDecoder;
|
||||
jsSend: amplifyDecoder;
|
||||
}
|
||||
|
||||
interface amplifyAjaxSettings extends JQueryAjaxSettings {
|
||||
cache?: any;
|
||||
dataMap?: {} | ((data: any) => {});
|
||||
decoder?: any /* string or amplifyDecoder */;
|
||||
}
|
||||
|
||||
interface amplifyRequest {
|
||||
|
||||
/***
|
||||
* Request a resource.
|
||||
* resourceId: Identifier string for the resource.
|
||||
* data: A set of key/value pairs of data to be sent to the resource.
|
||||
* callback: A function to invoke if the resource is retrieved successfully.
|
||||
*/
|
||||
(resourceId: string, hash?: any, callback?: Function): JQueryPromise<any>;
|
||||
|
||||
/***
|
||||
* Request a resource.
|
||||
* settings: A set of key/value pairs of settings for the request.
|
||||
* resourceId: Identifier string for the resource.
|
||||
* data (optional): Data associated with the request.
|
||||
* success (optional): Function to invoke on success.
|
||||
* error (optional): Function to invoke on error.
|
||||
*/
|
||||
(settings: amplifyRequestSettings): JQueryPromise<any>;
|
||||
|
||||
/***
|
||||
* Define a resource.
|
||||
* resourceId: Identifier string for the resource.
|
||||
* requestType: The type of data retrieval method from the server. See the request types sections for more information.
|
||||
* settings: A set of key/value pairs that relate to the server communication technology. The following settings are available:
|
||||
* Any settings found in jQuery.ajax().
|
||||
* cache: See the cache section for more details.
|
||||
* decoder: See the decoder section for more details.
|
||||
*/
|
||||
define(resourceId: string, requestType: string, settings?: amplifyAjaxSettings): void;
|
||||
|
||||
/***
|
||||
* Define a custom request.
|
||||
* resourceId: Identifier string for the resource.
|
||||
* resource: Function to handle requests. Receives a hash with the following properties:
|
||||
* resourceId: Identifier string for the resource.
|
||||
* data: Data provided by the user.
|
||||
* success: Callback to invoke on success.
|
||||
* error: Callback to invoke on error.
|
||||
*/
|
||||
define(resourceId: string, resource: (settings: amplifyRequestSettings) => void): void;
|
||||
|
||||
decoders: amplifyDecoders;
|
||||
cache: any;
|
||||
}
|
||||
|
||||
interface amplifySubscribe {
|
||||
/***
|
||||
* Subscribe to a message.
|
||||
* topic: Name of the message to subscribe to.
|
||||
* callback: Function to invoke when the message is published.
|
||||
*/
|
||||
(topic: string, callback: Function): void;
|
||||
/***
|
||||
* Subscribe to a message.
|
||||
* topic: Name of the message to subscribe to.
|
||||
* context: What this will be when the callback is invoked.
|
||||
* callback: Function to invoke when the message is published.
|
||||
* [priority]: Priority relative to other subscriptions for the same message. Lower values have higher priority. Default is 10.
|
||||
*/
|
||||
(topic: string, context: any, callback: Function, priority?: number): void;
|
||||
/***
|
||||
* Subscribe to a message.
|
||||
* topic: Name of the message to subscribe to.
|
||||
* callback: Function to invoke when the message is published.
|
||||
* [priority]: Priority relative to other subscriptions for the same message. Lower values have higher priority. Default is 10.
|
||||
*/
|
||||
(topic: string, callback: Function, priority?: number): void;
|
||||
}
|
||||
interface amplifyStorageTypeStore {
|
||||
/***
|
||||
* Stores a value for a given key using the default storage type.
|
||||
*
|
||||
* key: Identifier for the value being stored.
|
||||
* value: The value to store. The value can be anything that can be serialized as JSON.
|
||||
* [options]: A set of key/value pairs that relate to settings for storing the value.
|
||||
*/
|
||||
(key: string, value: any, options?: any): void;
|
||||
|
||||
/***
|
||||
* Gets a stored value based on the key.
|
||||
*/
|
||||
(key: string): any;
|
||||
|
||||
/***
|
||||
* Gets a hash of all stored values.
|
||||
*/
|
||||
(): any;
|
||||
}
|
||||
|
||||
interface amplifyStore extends amplifyStorageTypeStore {
|
||||
|
||||
/***
|
||||
* IE 8+, Firefox 3.5+, Safari 4+, Chrome, Opera 10.5+, iPhone 2+, Android 2+
|
||||
*/
|
||||
localStorage: amplifyStorageTypeStore;
|
||||
|
||||
/***
|
||||
* IE 8+, Firefox 2+, Safari 4+, Chrome, Opera 10.5+, iPhone 2+, Android 2+
|
||||
*/
|
||||
sessionStorage: amplifyStorageTypeStore;
|
||||
|
||||
/***
|
||||
* Firefox 2+
|
||||
*/
|
||||
globalStorage: amplifyStorageTypeStore;
|
||||
|
||||
/***
|
||||
* IE 5 - 7
|
||||
*/
|
||||
userData: amplifyStorageTypeStore;
|
||||
|
||||
/***
|
||||
* An in-memory store is provided as a fallback if none of the other storage types are available.
|
||||
*/
|
||||
memory: amplifyStorageTypeStore;
|
||||
|
||||
|
||||
}
|
||||
|
||||
interface amplifyStatic {
|
||||
|
||||
subscribe: amplifySubscribe;
|
||||
|
||||
/***
|
||||
* Remove a subscription.
|
||||
* topic: The topic being unsubscribed from.
|
||||
* callback: The callback that was originally subscribed.
|
||||
*/
|
||||
unsubscribe(topic: string, callback: Function): void;
|
||||
|
||||
/***
|
||||
* Publish a message.
|
||||
* topic: The name of the message to publish.
|
||||
* Any additional parameters will be passed to the subscriptions.
|
||||
* amplify.publish returns a boolean indicating whether any subscriptions returned false. The return value is true if none of the subscriptions returned false, and false otherwise. Note that only one subscription can return false because doing so will prevent additional subscriptions from being invoked.
|
||||
*/
|
||||
publish(topic: string, ...args: any[]): boolean;
|
||||
|
||||
store: amplifyStore;
|
||||
|
||||
request: amplifyRequest;
|
||||
|
||||
}
|
||||
|
||||
declare var amplify: amplifyStatic;
|
||||
|
||||
Vendored
+2
-1
@@ -29,6 +29,7 @@ interface amplifyDecoders {
|
||||
|
||||
interface amplifyAjaxSettings extends JQueryAjaxSettings {
|
||||
cache?: any;
|
||||
dataMap?: {} | ((data: any) => {});
|
||||
decoder?: any /* string or amplifyDecoder */;
|
||||
}
|
||||
|
||||
@@ -50,7 +51,7 @@ interface amplifyRequest {
|
||||
* success (optional): Function to invoke on success.
|
||||
* error (optional): Function to invoke on error.
|
||||
*/
|
||||
(settings: amplifyRequestSettings);
|
||||
(settings: amplifyRequestSettings): any;
|
||||
|
||||
/***
|
||||
* Define a resource.
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
/// <reference path="amqplib.d.ts" />
|
||||
|
||||
// promise api tests
|
||||
import amqp = require("amqplib");
|
||||
|
||||
var msg = "Hello World";
|
||||
|
||||
// test promise api
|
||||
amqp.connect("amqp://localhost")
|
||||
.then(connection => {
|
||||
return connection.createChannel()
|
||||
.tap(channel => channel.checkQueue("myQueue"))
|
||||
.then(channel => channel.sendToQueue("myQueue", new Buffer(msg)))
|
||||
.ensure(() => connection.close());
|
||||
});
|
||||
|
||||
amqp.connect("amqp://localhost")
|
||||
.then(connection => {
|
||||
return connection.createChannel()
|
||||
.tap(channel => channel.checkQueue("myQueue"))
|
||||
.then(channel => channel.consume("myQueue", newMsg => console.log("New Message: " + newMsg.content.toString())))
|
||||
.ensure(() => connection.close());
|
||||
});
|
||||
|
||||
// test promise api properties
|
||||
var amqpMessage: amqp.Message;
|
||||
amqpMessage.properties.contentType = "application/json";
|
||||
var amqpAssertExchangeOptions: amqp.Options.AssertExchange;
|
||||
var anqpAssertExchangeReplies: amqp.Replies.AssertExchange;
|
||||
|
||||
|
||||
// callback api tests
|
||||
import amqpcb = require("amqplib/callback_api");
|
||||
|
||||
amqpcb.connect("amqp://localhost", (err, connection) => {
|
||||
if(!err) {
|
||||
connection.createChannel((err, channel) => {
|
||||
if (!err) {
|
||||
channel.assertQueue("myQueue", {}, (err, ok) => {
|
||||
if(!err) {
|
||||
channel.sendToQueue("myQueue", new Buffer(msg));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
amqpcb.connect("amqp://localhost", (err, connection) => {
|
||||
if(!err) {
|
||||
connection.createChannel((err, channel) => {
|
||||
if (!err) {
|
||||
channel.assertQueue("myQueue", {}, (err, ok) => {
|
||||
if(!err) {
|
||||
channel.consume("myQueue", newMsg => console.log("New Message: " + newMsg.content.toString()));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// test callback api properties
|
||||
var amqpcbMessage: amqpcb.Message;
|
||||
amqpcbMessage.properties.contentType = "application/json";
|
||||
var amqpcbAssertExchangeOptions: amqpcb.Options.AssertExchange;
|
||||
var anqpcbAssertExchangeReplies: amqpcb.Replies.AssertExchange;
|
||||
Vendored
+218
@@ -0,0 +1,218 @@
|
||||
// Type definitions for amqplib 0.3.x
|
||||
// Project: https://github.com/squaremo/amqp.node
|
||||
// Definitions by: Michael Nahkies <https://github.com/mnahkies>, Ab Reitsma <https://github.com/abreits>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../when/when.d.ts" />
|
||||
/// <reference path="../node/node.d.ts" />
|
||||
|
||||
declare module "amqplib/properties" {
|
||||
module Replies {
|
||||
interface Empty {
|
||||
}
|
||||
interface AssertQueue {
|
||||
queue: string;
|
||||
messageCount: number;
|
||||
consumerCount: number;
|
||||
}
|
||||
interface PurgeQueue {
|
||||
messageCount: number;
|
||||
}
|
||||
interface DeleteQueue {
|
||||
messageCount: number;
|
||||
}
|
||||
interface AssertExchange {
|
||||
exchange: string;
|
||||
}
|
||||
interface Consume {
|
||||
consumerTag: string;
|
||||
}
|
||||
}
|
||||
|
||||
module Options {
|
||||
interface AssertQueue {
|
||||
exclusive?: boolean;
|
||||
durable?: boolean;
|
||||
autoDelete?: boolean;
|
||||
arguments?: any;
|
||||
messageTtl?: number;
|
||||
expires?: number;
|
||||
deadLetterExchange?: string;
|
||||
maxLength?: number;
|
||||
}
|
||||
interface DeleteQueue {
|
||||
ifUnused?: boolean;
|
||||
ifEmpty?: boolean;
|
||||
}
|
||||
interface AssertExchange {
|
||||
durable?: boolean;
|
||||
internal?: boolean;
|
||||
autoDelete?: boolean;
|
||||
alternateExchange?: string;
|
||||
arguments?: any;
|
||||
}
|
||||
interface DeleteExchange {
|
||||
ifUnused?: boolean;
|
||||
}
|
||||
interface Publish {
|
||||
expiration?: string;
|
||||
userId?: string;
|
||||
CC?: string | string[];
|
||||
|
||||
mandatory?: boolean;
|
||||
persistent?: boolean;
|
||||
deliveryMode?: boolean | number;
|
||||
BCC?: string | string[];
|
||||
|
||||
contentType?: string;
|
||||
contentEncoding?: string;
|
||||
headers?: any;
|
||||
priority?: number;
|
||||
correlationId?: string;
|
||||
replyTo?: string;
|
||||
messageId?: string;
|
||||
timestamp?: number;
|
||||
type?: string;
|
||||
appId?: string;
|
||||
}
|
||||
interface Consume {
|
||||
consumerTag?: string;
|
||||
noLocal?: boolean;
|
||||
noAck?: boolean;
|
||||
exclusive?: boolean;
|
||||
priority?: number;
|
||||
arguments?: any;
|
||||
}
|
||||
interface Get {
|
||||
noAck?: boolean;
|
||||
}
|
||||
}
|
||||
|
||||
interface Message {
|
||||
content: Buffer;
|
||||
fields: any;
|
||||
properties: any;
|
||||
}
|
||||
}
|
||||
|
||||
declare module "amqplib" {
|
||||
|
||||
import events = require("events");
|
||||
import when = require("when");
|
||||
import shared = require("amqplib/properties")
|
||||
export import Replies = shared.Replies;
|
||||
export import Options = shared.Options;
|
||||
export import Message = shared.Message;
|
||||
|
||||
interface Connection extends events.EventEmitter {
|
||||
close(): when.Promise<void>;
|
||||
createChannel(): when.Promise<Channel>;
|
||||
createConfirmChannel(): when.Promise<Channel>;
|
||||
}
|
||||
|
||||
interface Channel extends events.EventEmitter {
|
||||
close(): when.Promise<void>;
|
||||
|
||||
assertQueue(queue: string, options?: Options.AssertQueue): when.Promise<Replies.AssertQueue>;
|
||||
checkQueue(queue: string): when.Promise<Replies.AssertQueue>;
|
||||
|
||||
deleteQueue(queue: string, options?: Options.DeleteQueue): when.Promise<Replies.DeleteQueue>;
|
||||
purgeQueue(queue: string): when.Promise<Replies.PurgeQueue>;
|
||||
|
||||
bindQueue(queue: string, source: string, pattern: string, args?: any): when.Promise<Replies.Empty>;
|
||||
unbindQueue(queue: string, source: string, pattern: string, args?: any): when.Promise<Replies.Empty>;
|
||||
|
||||
assertExchange(exchange: string, type: string, options?: Options.AssertExchange): when.Promise<Replies.AssertExchange>;
|
||||
checkExchange(exchange: string): when.Promise<Replies.Empty>;
|
||||
|
||||
deleteExchange(exchange: string, options?: Options.DeleteExchange): when.Promise<Replies.Empty>;
|
||||
|
||||
bindExchange(destination: string, source: string, pattern: string, args?: any): when.Promise<Replies.Empty>;
|
||||
unbindExchange(destination: string, source: string, pattern: string, args?: any): when.Promise<Replies.Empty>;
|
||||
|
||||
publish(exchange: string, routingKey: string, content: Buffer, options?: Options.Publish): boolean;
|
||||
sendToQueue(queue: string, content: Buffer, options?: Options.Publish): boolean;
|
||||
|
||||
consume(queue: string, onMessage: (msg: Message) => any, options?: Options.Consume): when.Promise<Replies.Consume>;
|
||||
|
||||
cancel(consumerTag: string): when.Promise<Replies.Empty>;
|
||||
get(queue: string, options?: Options.Get): when.Promise<Message | boolean>;
|
||||
|
||||
ack(message: Message, allUpTo?: boolean): void;
|
||||
ackAll(): void;
|
||||
|
||||
nack(message: Message, allUpTo?: boolean, requeue?: boolean): void;
|
||||
nackAll(requeue?: boolean): void;
|
||||
reject(message: Message, requeue?: boolean): void;
|
||||
|
||||
prefetch(count: number, global?: boolean): when.Promise<Replies.Empty>;
|
||||
recover(): when.Promise<Replies.Empty>;
|
||||
}
|
||||
|
||||
function connect(url: string, socketOptions?: any): when.Promise<Connection>;
|
||||
}
|
||||
|
||||
declare module "amqplib/callback_api" {
|
||||
|
||||
import events = require("events");
|
||||
import shared = require("amqplib/properties")
|
||||
export import Replies = shared.Replies;
|
||||
export import Options = shared.Options;
|
||||
export import Message = shared.Message;
|
||||
|
||||
interface Connection extends events.EventEmitter {
|
||||
close(callback?: (err: any) => void): void;
|
||||
createChannel(callback: (err: any, channel: Channel) => void): void;
|
||||
createConfirmChannel(callback: (err: any, confirmChannel: ConfirmChannel) => void): void;
|
||||
}
|
||||
|
||||
interface Channel extends events.EventEmitter {
|
||||
close(callback: (err: any) => void): void;
|
||||
|
||||
assertQueue(queue?: string, options?: Options.AssertQueue, callback?: (err:any, ok: Replies.AssertQueue) => void): void;
|
||||
checkQueue(queue: string, callback?: (err: any, ok: Replies.AssertQueue) => void): void;
|
||||
|
||||
deleteQueue(queue: string, options?: Options.DeleteQueue, callback?: (err:any, ok: Replies.DeleteQueue) => void): void;
|
||||
purgeQueue(queue: string, callback?: (err:any, ok: Replies.PurgeQueue) => void): void;
|
||||
|
||||
bindQueue(queue: string, source: string, pattern: string, args?: any, callback?: (err: any, ok: Replies.Empty) => void): void;
|
||||
unbindQueue(queue: string, source: string, pattern: string, args?: any, callback?: (err: any, ok: Replies.Empty) => void): void;
|
||||
|
||||
assertExchange(exchange: string, type: string, options?: Options.AssertExchange, callback?: (err: any, ok: Replies.AssertExchange) => void): void;
|
||||
checkExchange(exchange: string, callback?: (err: any, ok: Replies.Empty) => void): void;
|
||||
|
||||
deleteExchange(exchange: string, options?: Options.DeleteExchange, callback?: (err: any, ok: Replies.Empty) => void): void;
|
||||
|
||||
bindExchange(destination: string, source: string, pattern: string, args?: any, callback?: (err: any, ok: Replies.Empty) => void): void;
|
||||
unbindExchange(destination: string, source: string, pattern: string, args?: any, callback?: (err: any, ok: Replies.Empty) => void): void;
|
||||
|
||||
publish(exchange: string, routingKey: string, content: Buffer, options?: Options.Publish): boolean;
|
||||
sendToQueue(queue: string, content: Buffer, options?: Options.Publish): boolean;
|
||||
|
||||
consume(queue: string, onMessage: (msg: Message) => any, options?: Options.Consume, callback?: (err: any, ok: Replies.Consume) => void): void;
|
||||
|
||||
cancel(consumerTag: string, callback?: (err: any, ok: Replies.Empty) => void): void;
|
||||
get(queue: string, options?: Options.Get, callback?: (err: any, ok: Message | boolean) => void): void;
|
||||
|
||||
ack(message: Message, allUpTo?: boolean): void;
|
||||
ackAll(): void;
|
||||
|
||||
nack(message: Message, allUpTo?: boolean, requeue?: boolean): void;
|
||||
nackAll(requeue?: boolean): void;
|
||||
reject(message: Message, requeue?: boolean): void;
|
||||
|
||||
prefetch(count: number, global?: boolean): void;
|
||||
recover(callback?: (err: any, ok: Replies.Empty) => void): void;
|
||||
}
|
||||
|
||||
interface ConfirmChannel extends Channel {
|
||||
publish(exchange: string, routingKey: string, content: Buffer, options?: Options.Publish, callback?: (err: any, ok: Replies.Empty) => void): boolean;
|
||||
sendToQueue(queue: string, content: Buffer, options?: Options.Publish, callback?: (err: any, ok: Replies.Empty) => void): boolean;
|
||||
|
||||
waitForConfirms(callback?: (err: any) => void): void;
|
||||
}
|
||||
|
||||
function connect(callback: (err: any, connection: Connection) => void): void;
|
||||
function connect(url: string, callback: (err: any, connection: Connection) => void): void;
|
||||
function connect(url: string, socketOptions: any, callback: (err: any, connection: Connection) => void): void;
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
/// <reference path="./analytics-node.d.ts" />
|
||||
|
||||
var analytics: AnalyticsNode.Analytics;
|
||||
import Analytics = require("analytics-node");
|
||||
|
||||
function testConfig(): void {
|
||||
analytics = new Analytics('YOUR_WRITE_KEY', {
|
||||
flushAt: 20,
|
||||
flushAfter: 10000
|
||||
});
|
||||
}
|
||||
|
||||
function testIdentify(): void {
|
||||
analytics.identify({
|
||||
userId: '019mr8mf4r',
|
||||
traits: {
|
||||
name: 'Michael Bolton',
|
||||
email: 'mbolton@initech.com',
|
||||
plan: 'Enterprise',
|
||||
friends: 42
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function testTrack(): void {
|
||||
analytics.track({
|
||||
userId: '019mr8mf4r',
|
||||
event: 'Purchased an Item',
|
||||
properties: {
|
||||
revenue: 39.95,
|
||||
shippingMethod: '2-day'
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function testPage(): void {
|
||||
analytics.page({
|
||||
userId: '019mr8mf4r',
|
||||
category: 'Docs',
|
||||
name: 'Node.js Library',
|
||||
properties: {
|
||||
url: 'https://segment.com/docs/libraries/node',
|
||||
path: '/docs/libraries/node/',
|
||||
title: 'Node.js Library - Segment',
|
||||
referrer: 'https://github.com/segmentio/analytics-node'
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function testAlias(): void {
|
||||
// the anonymous user does actions ...
|
||||
analytics.track({ userId: 'anonymous_user', event: 'Anonymous Event' })
|
||||
// the anonymous user signs up and is aliased
|
||||
analytics.alias({ previousId: 'anonymous_user', userId: 'identified@gmail.com' })
|
||||
// the identified user is identified
|
||||
analytics.identify({ userId: 'identified@gmail.com', traits: { plan: 'Free' } })
|
||||
// the identified user does actions ...
|
||||
analytics.track({ userId: 'identified@gmail.com', event: 'Identified Action' })
|
||||
}
|
||||
|
||||
function testGroup(): void {
|
||||
analytics.group({
|
||||
userId: '019mr8mf4r',
|
||||
groupId: '56',
|
||||
traits: {
|
||||
name: 'Initech',
|
||||
description: 'Accounting Software'
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function testIntegrations(): void {
|
||||
analytics.track({
|
||||
event: 'Upgraded Membershipt',
|
||||
userId: '97234974',
|
||||
integrations: {
|
||||
'All': false,
|
||||
'Vero': true,
|
||||
'Google Analytics': false
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function testFlush(): void {
|
||||
analytics.flush();
|
||||
analytics.flush(function(err, batch) {
|
||||
if (err) { alert("Oh nos!"); }
|
||||
else { console.log(batch.batch[0].type); }
|
||||
});
|
||||
}
|
||||
|
||||
Vendored
+83
@@ -0,0 +1,83 @@
|
||||
// Type definitions for Segment's analytics.js for Node.js
|
||||
// Project: https://segment.com/docs/libraries/node/
|
||||
// Definitions by: Andrew Fong <https://github.com/fongandrew>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
declare module AnalyticsNode {
|
||||
|
||||
interface Integrations {
|
||||
[index: string]: boolean;
|
||||
}
|
||||
|
||||
export class Analytics {
|
||||
constructor(writeKey: string, opts?: {
|
||||
flushAt?: number,
|
||||
flushAfter?: number
|
||||
});
|
||||
|
||||
/* The identify method lets you tie a user to their actions and record
|
||||
traits about them. */
|
||||
identify(message: {
|
||||
userId: string | number;
|
||||
traits?: Object;
|
||||
timestamp?: Date;
|
||||
context?: Object;
|
||||
integrations?: Integrations;
|
||||
}): Analytics;
|
||||
|
||||
/* The track method lets you record the actions your users perform. */
|
||||
track(message: {
|
||||
userId: string | number;
|
||||
event: string;
|
||||
properties?: Object;
|
||||
timestamp?: Date;
|
||||
context?: Object;
|
||||
integrations?: Integrations;
|
||||
}): Analytics;
|
||||
|
||||
/* The page method lets you record page views on your website, along with
|
||||
optional extra information about the page being viewed. */
|
||||
page(message: {
|
||||
userId: string | number;
|
||||
category?: string;
|
||||
name?: string;
|
||||
properties?: Object;
|
||||
timestamp?: Date;
|
||||
context?: Object;
|
||||
integrations?: Integrations;
|
||||
}): Analytics;
|
||||
|
||||
/* alias is how you associate one identity with another. */
|
||||
alias(message: {
|
||||
previousId: string | number;
|
||||
userId: string | number;
|
||||
integrations?: Integrations;
|
||||
}): Analytics;
|
||||
|
||||
/* Group calls can be used to associate individual users with shared
|
||||
accounts or companies. */
|
||||
group(message: {
|
||||
userId: string | number;
|
||||
groupId: string | number;
|
||||
traits?: Object;
|
||||
context?: Object;
|
||||
timestamp?: Date;
|
||||
anonymous_id?: string | number;
|
||||
integrations?: Integrations;
|
||||
}): Analytics;
|
||||
|
||||
/* Flush batched calls to make sure nothing is left in the queue */
|
||||
flush(fn?: (err: Error, batch: {
|
||||
batch: Array<{
|
||||
type: string;
|
||||
}>;
|
||||
messageId: string;
|
||||
sentAt: Date;
|
||||
timestamp: Date;
|
||||
}) => void): Analytics;
|
||||
}
|
||||
}
|
||||
|
||||
declare module "analytics-node" {
|
||||
export = AnalyticsNode.Analytics;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
/// <reference path="angular-dialog-service.d.ts" />
|
||||
|
||||
|
||||
var options : angular.dialogservice.IDialogOptions = {};
|
||||
options.animation = true;
|
||||
options.backdrop = true;
|
||||
options.keyboard = true;
|
||||
options.backdropClass = "some-css-class";
|
||||
options.windowClass = "some-css-class";
|
||||
options.size = 'md';
|
||||
|
||||
var dialogs : angular.dialogservice.IDialogService;
|
||||
dialogs.error('Error','An unknown error occurred preventing the completion of the requested action.');
|
||||
dialogs.wait('Creating User','Please wait while we attempt to create user "Michael Conroy."<br><br>This should only take a moment.',50);
|
||||
dialogs.notify('Something Happened','Something happened at this point in the application that I wish to let you know about');
|
||||
dialogs.create('url/to/a/template','ctrlrToUse',{},{});
|
||||
@@ -0,0 +1,82 @@
|
||||
// Type definitions for Angular Dialog Service 5.2.8
|
||||
// Project: https://github.com/m-e-conroy/angular-dialog-service
|
||||
// Definitions by: William Comartin <https://github.com/wcomartin>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts"/>
|
||||
/// <reference path="../angular-ui-bootstrap/angular-ui-bootstrap.d.ts"/>
|
||||
|
||||
declare module angular.dialogservice {
|
||||
|
||||
interface IDialogOptions {
|
||||
/**
|
||||
* Set to false to disable animations on new modal/backdrop. Does not toggle animations for modals/backdrops that are already displayed.
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
animation?: boolean;
|
||||
|
||||
/**
|
||||
* controls the presence of a backdrop
|
||||
* Allowed values:
|
||||
* - true (default)
|
||||
* - false (no backdrop)
|
||||
* - 'static' backdrop is present but modal window is not closed when clicking outside of the modal window
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
backdrop?: boolean | string;
|
||||
|
||||
/**
|
||||
* indicates whether the dialog should be closable by hitting the ESC key
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
keyboard?: boolean;
|
||||
|
||||
/**
|
||||
* additional CSS class(es) to be added to a modal backdrop template
|
||||
*
|
||||
* @default 'dialogs-backdrop-default'
|
||||
*/
|
||||
backdropClass?: string;
|
||||
|
||||
/**
|
||||
* additional CSS class(es) to be added to a modal window template
|
||||
*
|
||||
* @default 'dialogs-default'
|
||||
*/
|
||||
windowClass?: string;
|
||||
|
||||
/**
|
||||
* Optional suffix of modal window class. The value used is appended to the `modal-` class, i.e. a value of `sm` gives `modal-sm`.
|
||||
*
|
||||
* @default 'lg'
|
||||
*/
|
||||
size?: string;
|
||||
}
|
||||
|
||||
interface IDialogService {
|
||||
/**
|
||||
* Opens a new error modal instance.
|
||||
*/
|
||||
error(header: string, msg: string, opts?: IDialogOptions): ng.ui.bootstrap.IModalServiceInstance
|
||||
/**
|
||||
* Opens a new wait modal instance.
|
||||
*/
|
||||
wait(header: string, msg: string, progress: number, opts?: IDialogOptions): ng.ui.bootstrap.IModalServiceInstance
|
||||
/**
|
||||
* Opens a new notify modal instance.
|
||||
*/
|
||||
notify(header: string, msg: string, opts?: IDialogOptions): ng.ui.bootstrap.IModalServiceInstance
|
||||
/**
|
||||
* Opens a new confirm modal instance.
|
||||
*/
|
||||
confirm(header: string, msg: string, opts?: IDialogOptions): ng.ui.bootstrap.IModalServiceInstance
|
||||
/**
|
||||
* Opens a new custom modal instance.
|
||||
*/
|
||||
create(url: string, ctrlr: string, data: any, opts?: IDialogOptions): ng.ui.bootstrap.IModalServiceInstance
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/// <reference path='../angularjs/angular.d.ts' />
|
||||
/// <reference path='angular-dynamic-locale.d.ts' />
|
||||
|
||||
var app = angular.module('testModule', ['tmh.dynamicLocale']);
|
||||
app.config((localStorageServiceProvider: angular.dynamicLocale.tmhDynamicLocaleProvider) => {
|
||||
localStorageServiceProvider
|
||||
.localeLocationPattern("app/config/locales/")
|
||||
.useCookieStorage();
|
||||
});
|
||||
|
||||
class LocaleTestController {
|
||||
|
||||
constructor(tmhDynamicLocaleService: angular.dynamicLocale.tmhDynamicLocaleService) {
|
||||
|
||||
var locale = tmhDynamicLocaleService.get();
|
||||
|
||||
var newLocale = "mt"
|
||||
tmhDynamicLocaleService.set(newLocale);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
app.controller('TestController', LocaleTestController);
|
||||
@@ -0,0 +1,21 @@
|
||||
// Type definitions for angular-dynamic-locale v0.1.27
|
||||
// Project: https://github.com/lgalfaso/angular-dynamic-locale
|
||||
// Definitions by: Stephen Lautier <https://github.com/stephenlautier>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module angular.dynamicLocale {
|
||||
|
||||
interface tmhDynamicLocaleService {
|
||||
set(locale: string): void;
|
||||
get(): string;
|
||||
}
|
||||
|
||||
interface tmhDynamicLocaleProvider extends angular.IServiceProvider {
|
||||
localeLocationPattern(location: string): tmhDynamicLocaleProvider;
|
||||
localeLocationPattern(): string;
|
||||
useStorage(storageName: string): void;
|
||||
useCookieStorage(): void;
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
/// <reference path="angular-file-upload.d.ts" />
|
||||
|
||||
module controllers {
|
||||
|
||||
"use strict";
|
||||
|
||||
var controllerId = "upload";
|
||||
|
||||
class Upload {
|
||||
|
||||
static $inject = ["$upload"];
|
||||
constructor(
|
||||
private $upload: ng.angularFileUpload.IUploadService
|
||||
) {
|
||||
}
|
||||
|
||||
onFileSelect($files: File[]) {
|
||||
//$files: an array of files selected, each file has name, size, and type.
|
||||
var uploads: ng.IPromise<any>[] = [];
|
||||
for (var i = 0; i < $files.length; i++) {
|
||||
var file = $files[i];
|
||||
uploads.push(this.$upload.upload<any>({
|
||||
url: "/api/upload",
|
||||
method: "POST",
|
||||
data: {
|
||||
extraData: {
|
||||
fileName: file.name, test: "anything"
|
||||
}
|
||||
},
|
||||
file: file
|
||||
})
|
||||
.progress((evt: any) => {
|
||||
console.log('progress');
|
||||
})
|
||||
.then(success => {
|
||||
// file is uploaded successfully
|
||||
console.log(success.data);
|
||||
})
|
||||
.catch(err => {
|
||||
console.error(err);
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
angular.module("app").controller(controllerId, Upload);
|
||||
}
|
||||
+4
-22
@@ -1,26 +1,8 @@
|
||||
// Type definitions for Angular File Upload 1.6.7
|
||||
// Project: https://github.com/danialfarid/angular-file-upload
|
||||
// Type definitions for Angular File Upload 4.2.1
|
||||
// Project: https://github.com/danialfarid/ng-file-upload
|
||||
// Definitions by: John Reilly <https://github.com/johnnyreilly>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
/// <reference path="../ng-file-upload/ng-file-upload.d.ts" />
|
||||
|
||||
declare module angular.angularFileUpload {
|
||||
|
||||
interface IUploadService {
|
||||
|
||||
http<T>(config: ng.IRequestConfig): IUploadPromise<T>;
|
||||
upload<T>(config: IFileUploadConfig): IUploadPromise<T>;
|
||||
}
|
||||
|
||||
interface IUploadPromise<T> extends IHttpPromise<T> {
|
||||
|
||||
progress(callback: IHttpPromiseCallback<T>): IUploadPromise<T>;
|
||||
}
|
||||
|
||||
interface IFileUploadConfig extends ng.IRequestConfig {
|
||||
|
||||
file: File;
|
||||
fileName?: string;
|
||||
}
|
||||
}
|
||||
// THIS FILE WILL REMOVE IF angular-file-upload.d.ts incoming.
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
/// <reference path="angular-formly.d.ts" />
|
||||
|
||||
var app = angular.module('app', ['formly']);
|
||||
|
||||
interface IScope extends ng.IScope {
|
||||
to: { label: string; }
|
||||
}
|
||||
|
||||
class FormConfig {
|
||||
constructor(formlyConfig: AngularFormly.IFormlyConfig, formlyValidationMessages: AngularFormly.IValidationMessages) {
|
||||
formlyConfig.setWrapper({
|
||||
name: 'validation',
|
||||
types: ['input', 'customInput'],
|
||||
templateUrl: 'my-messages.html'
|
||||
});
|
||||
|
||||
formlyValidationMessages.addStringMessage('required', 'This field is required');
|
||||
|
||||
formlyConfig.setType({
|
||||
name: 'customInput',
|
||||
extends: 'input'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class AppController {
|
||||
fields: AngularFormly.IFieldConfigurationObject[];
|
||||
constructor() {
|
||||
var vm = this;
|
||||
vm.fields = [
|
||||
{
|
||||
key: 'firstName',
|
||||
type: 'customInput',
|
||||
templateOptions: {
|
||||
required: true,
|
||||
label: 'First Name',
|
||||
foo: 'hi'
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'email',
|
||||
type: 'input',
|
||||
templateOptions: {
|
||||
label: 'Email',
|
||||
required: true,
|
||||
type: 'email',
|
||||
maxlength: 10,
|
||||
minlength: 6,
|
||||
placeholder: 'example@example.com'
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'ip',
|
||||
type: 'input',
|
||||
validators: {
|
||||
ipAddress: {
|
||||
expression: function(viewValue, modelValue) {
|
||||
var value = modelValue || viewValue;
|
||||
return /(\d{1,3}\.){3}\d{1,3}/.test(value);
|
||||
},
|
||||
message: '$viewValue + " is not a valid IP Address"'
|
||||
}
|
||||
},
|
||||
templateOptions: {
|
||||
label: 'IP Address',
|
||||
required: true,
|
||||
type: 'text',
|
||||
placeholder: '127.0.0.1',
|
||||
},
|
||||
validation: {
|
||||
messages: {
|
||||
required: function($viewValue: any, $modelValue: any, scope: AngularFormly.ITemplateScope) {
|
||||
return scope.to.label + ' is required'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'mac',
|
||||
type: 'input',
|
||||
templateOptions: {
|
||||
label: 'MAC Address',
|
||||
required: true,
|
||||
placeholder: '49-8A-BD-4E-00-1D',
|
||||
pattern: '([0-9A-F]{2}[:-]){5}([0-9A-F]{2})'
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'checkbox',
|
||||
key: 'checked',
|
||||
templateOptions: {
|
||||
label: 'Check this'
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'checked2',
|
||||
type: 'checkbox',
|
||||
wrapper: null,
|
||||
templateOptions: {
|
||||
label: 'no wrapper here...'
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
app.controller("AppController", AppController);
|
||||
|
||||
Vendored
+591
@@ -0,0 +1,591 @@
|
||||
// Type definitions for angular-formly 6.18.0
|
||||
// Project: https://github.com/formly-js/angular-formly
|
||||
// Definitions by: Scott Hatcher <https://github.com/scatcher>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module 'AngularFormly' {
|
||||
export = AngularFormly;
|
||||
}
|
||||
|
||||
declare module 'angular-formly' {
|
||||
var angularFormlyDefaultExport: string;
|
||||
export = angularFormlyDefaultExport;
|
||||
}
|
||||
|
||||
declare module AngularFormly {
|
||||
|
||||
|
||||
interface IFieldGroup {
|
||||
data?: Object;
|
||||
className?: string;
|
||||
elementAttributes?: { [key: string]: string };
|
||||
fieldGroup: IFieldConfigurationObject[];
|
||||
form?: Object;
|
||||
hide?: boolean;
|
||||
hideExpression?: string | IExpresssionFunction;
|
||||
key?: string | number;
|
||||
model?: string | Object;
|
||||
options?: IFormOptionsAPI
|
||||
}
|
||||
|
||||
|
||||
interface IFormOptionsAPI {
|
||||
data?: Object;
|
||||
fieldTransform?: Function;
|
||||
formState?: Object;
|
||||
removeChromeAutoComplete?: boolean;
|
||||
resetModel?: Function;
|
||||
templateManipulators?: ITemplateManipulators;
|
||||
updateInitialValue?: Function;
|
||||
wrapper?: string | string[];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* see http://docs.angular-formly.com/docs/formly-expressions#expressionproperties-validators--messages
|
||||
*/
|
||||
interface IExpresssionFunction {
|
||||
($viewValue: any, $modelValue: any, scope: ITemplateScope): any;
|
||||
}
|
||||
|
||||
|
||||
interface IModelOptions {
|
||||
updateOn?: string;
|
||||
debounce?: number;
|
||||
allowInvalid?: boolean;
|
||||
getterSetter?: string;
|
||||
timezone?: string;
|
||||
}
|
||||
|
||||
|
||||
interface ITemplateManipulator {
|
||||
(template: string | HTMLElement, options: Object, scope: ITemplateScope): string | HTMLElement;
|
||||
}
|
||||
|
||||
|
||||
interface ITemplateManipulators {
|
||||
preWrapper?: ITemplateManipulator[];
|
||||
postWrapper?: ITemplateManipulator[];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* see http://docs.angular-formly.com/docs/ngmodelattrstemplatemanipulator
|
||||
*/
|
||||
interface ITemplateOptions {
|
||||
|
||||
// both attribute or regular attribute
|
||||
disabled?: boolean;
|
||||
maxlength?: number;
|
||||
minlength?: number;
|
||||
pattern?: string;
|
||||
required?: boolean;
|
||||
|
||||
//attribute only
|
||||
max?: number;
|
||||
min?: number;
|
||||
placeholder?: number | string;
|
||||
tabindex?: number;
|
||||
type?: string;
|
||||
|
||||
//expression types
|
||||
onBlur?: string;
|
||||
onChange?: string;
|
||||
onClick?: string;
|
||||
onFocus?: string;
|
||||
onKeydown?: string;
|
||||
onKeypress?: string;
|
||||
onKeyup?: string;
|
||||
|
||||
//Bootstrap types
|
||||
label?: string;
|
||||
description?: string;
|
||||
[key: string]: any;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#validators-object
|
||||
*/
|
||||
interface IValidator {
|
||||
expression: string | IExpresssionFunction;
|
||||
message?: string | IExpresssionFunction;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* An object which has at least two properties called expression and listener. The watch.expression
|
||||
* is added to the formly-form directive's scope (to allow it to run even when hide is true). You
|
||||
* can specify a type ($watchCollection or $watchGroup) via the watcher.type property (defaults to
|
||||
* $watch) and whether you want it to be a deep watch via the watcher.deep property (defaults to false).
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#watcher-objectarray-of-watches
|
||||
*/
|
||||
interface IWatcher {
|
||||
deep?: boolean; //Defaults to false
|
||||
expression?: string | { (field: string, scope: ITemplateScope): boolean };
|
||||
listener: (field: string, newValue: any, oldValue: any, scope: ITemplateScope, stopWatching: Function) => void;
|
||||
type?: string; //Defaults to $watch but can be set to $watchCollection or $watchGroup
|
||||
}
|
||||
|
||||
|
||||
// see http://docs.angular-formly.com/docs/field-configuration-object
|
||||
interface IFieldConfigurationObject {
|
||||
|
||||
|
||||
/**
|
||||
* Added in 6.18.0
|
||||
*
|
||||
* Demo
|
||||
* see http://angular-formly.com/#/example/other/unique-value-async-validation
|
||||
*/
|
||||
asyncValidators?: {
|
||||
[key: string]: string | IExpresssionFunction | IValidator;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a great way to add custom behavior to a specific field. It is injectable with the $scope of the
|
||||
* field, and anything else you have in your injector.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#controller-controller-name-as-string--controller-f
|
||||
*/
|
||||
controller?: string | Function;
|
||||
|
||||
|
||||
/**
|
||||
* This is reserved for the developer. You have our guarantee to be able to use this and not worry about
|
||||
* future versions of formly overriding your usage and preventing you from upgrading :-)
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#data-object
|
||||
*/
|
||||
data?: Object;
|
||||
|
||||
|
||||
/**
|
||||
* Use defaultValue to initialize it the model. If this is provided and the value of the
|
||||
* model at compile-time is undefined, then the value of the model will be assigned to defaultValue.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#defaultvalue-any
|
||||
*/
|
||||
defaultValue?: any;
|
||||
|
||||
|
||||
/**
|
||||
* You can specify your own class that will be applied to the formly-field directive (or ng-form of
|
||||
* a fieldGroup).
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#classname-string
|
||||
*/
|
||||
className?: string;
|
||||
|
||||
|
||||
elementAttributes?: string;
|
||||
|
||||
|
||||
/**
|
||||
* An object where the key is a property to be set on the main field config and the value is an
|
||||
* expression used to assign that property. The value is a formly expressions. The returned value is
|
||||
* wrapped in $q.when so you can return a promise from your function :-)
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#expressionproperties-object
|
||||
*/
|
||||
expressionProperties?: {
|
||||
[key: string]: string | IExpresssionFunction | IValidator;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Uses ng-if. Whether to hide the field. Defaults to false. If you wish this to be conditional, use
|
||||
* hideExpression. See below.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#hide-boolean
|
||||
*/
|
||||
hide?: boolean
|
||||
|
||||
|
||||
/**
|
||||
* This is similar to expressionProperties with a slight difference. You should (hopefully) never
|
||||
* notice the difference with the most common use case. This is available due to limitations with
|
||||
* expressionProperties and ng-if not working together very nicely.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#hideexpression-string--function
|
||||
*/
|
||||
hideExpression?: string | IExpresssionFunction;
|
||||
|
||||
|
||||
/**
|
||||
* This allows you to specify the id of your field (which will be used for its name as well unless
|
||||
* a name is provided). Note, you can also override the id generation code using the formlyConfig
|
||||
* extra called getFieldId.
|
||||
*
|
||||
* AVOID THIS
|
||||
* If you don't have to do this, don't. Specifying IDs makes it harder to re-use things and it's
|
||||
* just extra work. Part of the beauty that angular-formly provides is the fact that you don't need
|
||||
* to concern yourself with making sure that this is unique.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#id-string
|
||||
*/
|
||||
id?: string;
|
||||
|
||||
|
||||
initialValue?: any;
|
||||
|
||||
|
||||
/**
|
||||
* Can be set instead of type or template to use a custom html template form field. Works
|
||||
* just like a directive templateUrl and uses the $templateCache
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#key-string
|
||||
*/
|
||||
key?: string | number;
|
||||
|
||||
|
||||
/**
|
||||
* This allows you to specify a link function. It is invoked after your template has finished compiling.
|
||||
* You are passed the normal arguments for a normal link function.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#link-link-function
|
||||
*/
|
||||
link?: ng.IDirectiveLinkFn;
|
||||
|
||||
|
||||
/**
|
||||
* By default, the model passed to the formly-field directive is the same as the model passed to the
|
||||
* formly-form. However, if the field has a model specified, then it is used for that field (and that
|
||||
* field only). In addition, a deep watch is added to the formly-field directive's scope to run the
|
||||
* expressionProperties when the specified model changes.
|
||||
*
|
||||
* Note, the formly-form directive will allow you to specify a string which is an (almost) formly
|
||||
* expression which allows you to define the model as relative to the scope of the form.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#model-object--string
|
||||
*/
|
||||
model?: Object | string;
|
||||
|
||||
|
||||
/**
|
||||
* Allows you to take advantage of ng-model-options directive. Formly's built-in templateManipulator (see
|
||||
* below) will add this attribute to your ng-model element automatically if this property exists. Note,
|
||||
* if you use the getter/setter option, formly's templateManipulator will change the value of ng-model
|
||||
* to options.value which is a getterSetter that formly adds to field options.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#modeloptions
|
||||
*/
|
||||
modelOptions?: IModelOptions;
|
||||
|
||||
|
||||
/**
|
||||
* If you wish to, you can specify a specific name for your ng-model. This is useful if you're posting
|
||||
* the form to a server using techniques of yester-year.
|
||||
*
|
||||
* AVOID THIS
|
||||
* If you don't have to do this, don't. It's just extra work. Part of the beauty that angular-formly
|
||||
* provides is the fact that you don't need to concern yourself with stuff like this.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#name-string
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
|
||||
/**
|
||||
* This is used by ngModelAttrsTemplateManipulator to automatically add attributes to the ng-model element
|
||||
* of field templates. You will likely not use this often. This object is a little complex, but extremely
|
||||
* powerful. It's best to explain this api via an example. For more information, see the guide on ngModelAttrs.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#ngmodelattrs-object
|
||||
*/
|
||||
ngModelAttrs?: {
|
||||
attribute?: any;
|
||||
bound?: any;
|
||||
expression?: any;
|
||||
value?: any;
|
||||
[key: string]: any;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* This allows you to place attributes with string values on the ng-model element.
|
||||
* Easy to use alternative to ngModelAttrs option.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#ngmodelelattrs-object
|
||||
*/
|
||||
ngModelElAttrs?: {
|
||||
[key: string]: string;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Used to tell angular-formly to not attempt to add the formControl property to your object. This is useful
|
||||
* for things like validation, but not necessary if your "field" doesn't use ng-model (if it's just a horizontal
|
||||
* line for example). Defaults to undefined.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#noformcontrol-boolean
|
||||
*/
|
||||
noFormControl?: boolean;
|
||||
|
||||
|
||||
/**
|
||||
* Allows you to specify extra types to get options from. Duplicate options are overridden in later priority
|
||||
* (index 1 will override index 0 properties). Also, these are applied after the type's defaultOptions and
|
||||
* hence will override any duplicates of those properties as well.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#optionstypes-string--array-of-strings
|
||||
*/
|
||||
optionsTypes?: string | string[];
|
||||
|
||||
|
||||
/**
|
||||
* Can be set instead of type or templateUrl to use a custom html
|
||||
* template form field. Recommended to be used with one-liners mostly
|
||||
* (like a directive), or if you're using webpack with the ability to require templates :-)
|
||||
*
|
||||
* If a function is passed, it is invoked with the field configuration object and can return
|
||||
* either a string for the template or a promise that resolves to a string.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#template-string--function
|
||||
*/
|
||||
template?: string | { (fieldConfiguration: IFieldConfigurationObject): string | ng.IPromise<string> };
|
||||
|
||||
|
||||
/**
|
||||
* Allows you to specify custom template manipulators for this specific field. (use defaultOptions in a
|
||||
* type configuration if you want it to apply to all fields of a certain type).
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#templatemanipulator-object-of-arrays-of-functions
|
||||
*/
|
||||
templateManipulators?: ITemplateManipulators;
|
||||
|
||||
|
||||
/**
|
||||
* This is reserved for the templates. Any template-specific options go in here. Look at your specific
|
||||
* template implementation to know the options required for this.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#templateoptions-object
|
||||
*/
|
||||
templateOptions?: ITemplateOptions;
|
||||
|
||||
|
||||
/**
|
||||
* Can be set instead of type or template to use a custom html template form field. Works
|
||||
* just like a directive templateUrl and uses the $templateCache
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#templateurl-string--function
|
||||
*/
|
||||
templateUrl?: string | { (fieldConfiguration: IFieldConfigurationObject): string | ng.IPromise<string> };
|
||||
|
||||
|
||||
/**
|
||||
* The type of field to be rendered. This is the recommended method
|
||||
* for defining fields. Types must be pre-defined using formlyConfig.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#type-string
|
||||
*/
|
||||
type?: string;
|
||||
|
||||
|
||||
/**
|
||||
* An object with a few useful properties mostly handy when used in combination with ng-messages
|
||||
*/
|
||||
validation?: {
|
||||
|
||||
/**
|
||||
* This is set by angular-formly. This is a boolean indicating whether an error message should be shown. Because
|
||||
* you generally only want to show error messages when the user has interacted with a specific field, this value
|
||||
* is set to true based on this rule: field invalid && (field touched || validation.show) (with slight difference
|
||||
* for pre-angular 1.3 because it doesn't have touched support).
|
||||
*/
|
||||
errorExistsAndShouldBeVisible?: boolean;
|
||||
|
||||
|
||||
/**
|
||||
* A map of Formly Expressions mapped to message names. This is really useful when you're using ng-messages
|
||||
* like in this example.
|
||||
*/
|
||||
messages?: {
|
||||
[key: string]: IExpresssionFunction | string;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* A boolean you as the developer can set to specify to force options.validation.errorExistsAndShouldBeVisible
|
||||
* to be set to true when there are $errors. This is useful when you're trying to call the user's attention to
|
||||
* some fields for some reason.
|
||||
*/
|
||||
show?: boolean;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* An object where the keys are the name of the validator and the values are Formly Expressions;
|
||||
*
|
||||
* Async Validation
|
||||
* All function validators can return true/false/Promise. A validator passes if it returns true or a promise
|
||||
* that is resolved. A validator fails if it returns false or a promise that is rejected.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#validators-object
|
||||
*/
|
||||
validators?: {
|
||||
[key: string]: string | IExpresssionFunction | IValidator;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This is a getter/setter function for the value that your field is representing. Useful when using getterSetter: true
|
||||
* in the modelOptions (in fact, if you don't disable the ngModelAttrsTemplateManipulator that comes built-in with formly,
|
||||
* it will automagically change your field's ng-model attribute to use options.value.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#value-gettersetter-function
|
||||
*/
|
||||
value?(): any; //Getter
|
||||
value?(val: any): void; //Setter
|
||||
|
||||
|
||||
/**
|
||||
* An object which has at least two properties called expression and listener. The watch.expression is added
|
||||
* to the formly-form directive's scope (to allow it to run even when hide is true). You can specify a type
|
||||
* ($watchCollection or $watchGroup) via the watcher.type property (defaults to $watch) and whether you want
|
||||
* it to be a deep watch via the watcher.deep property (defaults to false).
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#watcher-objectarray-of-watches
|
||||
*/
|
||||
watcher?: IWatcher | IWatcher[];
|
||||
|
||||
|
||||
/**
|
||||
* This makes reference to setWrapper in formlyConfig. It is expected to be the name of the wrapper. If
|
||||
* given an array, the formly field template will be wrapped by the first wrapper, then the second, then
|
||||
* the third, etc. You can also specify these as part of a type (which is the recommended approach).
|
||||
* Specifying this property will override the wrappers for the type for this field.
|
||||
*
|
||||
* http://docs.angular-formly.com/docs/field-configuration-object#wrapper-string--array-of-strings
|
||||
*/
|
||||
wrapper?: string | string[];
|
||||
|
||||
|
||||
//ALL PROPERTIES BELOW ARE ADDED (So you should not be setting them yourself.)
|
||||
|
||||
|
||||
/**
|
||||
* This is the NgModelController for the field. It provides you with awesome stuff like $errors :-)
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#formcontrol-ngmodelcontroller
|
||||
*/
|
||||
formControl?: ng.IFormController | ng.IFormController[];
|
||||
|
||||
|
||||
/**
|
||||
* Will reset the field's model and the field control to the last initialValue. This is used by the
|
||||
* formly-form's options.resetModel function.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#resetmodel-function
|
||||
*/
|
||||
resetModel?: () => void;
|
||||
|
||||
|
||||
/**
|
||||
* It is not likely that you'll ever want to invoke this function. It simply runs the expressionProperties expressions.
|
||||
* It is used internally and you shouldn't have to use it, but you can if you want to, and any breaking changes to the
|
||||
* way it works will result in a major version change, so you can rely on its api.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#runexpressions-function
|
||||
*/
|
||||
runExpressions?: () => void;
|
||||
|
||||
|
||||
/**
|
||||
* Will reset the field's initialValue to the current state of the model. Useful if you load the model asynchronously.
|
||||
* Invoke this when the model gets set. This is used by the formly-form's options.updateInitialValue function.
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/field-configuration-object#updateinitialvalue-function
|
||||
*/
|
||||
updateInitialValue?: () => void;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* see http://docs.angular-formly.com/docs/custom-templates#section-formlyconfig-settype-options
|
||||
*/
|
||||
interface ITypeOptions {
|
||||
apiCheck?: { [key: string]: Function };
|
||||
apiCheckFunction?: string; //'throw' or 'warn
|
||||
apiCheckInstance?: any;
|
||||
apiCheckOptions?: Object;
|
||||
defaultOptions?: IFieldConfigurationObject | Function;
|
||||
controller?: Function | string | any[];
|
||||
data?: Object;
|
||||
extends?: string;
|
||||
link?: ng.IDirectiveLinkFn;
|
||||
overwriteOk?: boolean;
|
||||
name: string;
|
||||
template?: Function | string;
|
||||
templateUrl?: Function | string;
|
||||
validateOptions?: Function;
|
||||
wrapper?: string | string[];
|
||||
}
|
||||
|
||||
interface IWrapperOptions {
|
||||
apiCheck?: { [key: string]: Function };
|
||||
apiCheckFunction?: string; //'throw' or 'warn
|
||||
apiCheckInstance?: any;
|
||||
apiCheckOptions?: Object;
|
||||
overwriteOk?: boolean;
|
||||
name?: string;
|
||||
template?: string;
|
||||
templateUrl?: string;
|
||||
types?: string[];
|
||||
validateOptions?: Function;
|
||||
}
|
||||
|
||||
interface IFormlyConfig {
|
||||
setType(typeOptions: ITypeOptions): void;
|
||||
setWrapper(wrapperOptions: IWrapperOptions): void;
|
||||
|
||||
}
|
||||
|
||||
interface ITemplateScopeOptions {
|
||||
formControl: ng.IFormController | ng.IFormController[];
|
||||
templateOptions: ITemplateOptions;
|
||||
validation: Object;
|
||||
}
|
||||
|
||||
/**
|
||||
* see http://docs.angular-formly.com/docs/custom-templates#templates-scope
|
||||
*/
|
||||
interface ITemplateScope {
|
||||
options: ITemplateScopeOptions;
|
||||
//Shortcut to options.formControl
|
||||
fc: ng.IFormController | ng.IFormController[];
|
||||
//all the fields for the form
|
||||
fields: IFieldConfigurationObject[];
|
||||
//the form controller the field is in
|
||||
form: any;
|
||||
//The object passed as options.formState to the formly-form directive. Use this to share state between fields.
|
||||
formState: Object;
|
||||
//The id of the field. You shouldn't have to use this.
|
||||
id: string;
|
||||
//The index of the field the form is on (in ng-repeat)
|
||||
index: number;
|
||||
//the model of the form (or the model specified by the field if it was specified).
|
||||
model: Object | string;
|
||||
//Shortcut to options.validation.errorExistsAndShouldBeVisible
|
||||
showError: boolean;
|
||||
//Shortcut to options.templateOptions
|
||||
to: ITemplateOptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* see http://docs.angular-formly.com/docs/formlyvalidationmessages#addtemplateoptionvaluemessage
|
||||
*/
|
||||
interface IValidationMessages {
|
||||
addTemplateOptionValueMessage(name: string, prop: string, prefix: string, suffix: string, alternate: string): void;
|
||||
addStringMessage(name: string, string: string): void;
|
||||
messages: { [key: string]: ($viewValue: any, $modelValue: any, scope: ITemplateScope) => string };
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/// <reference path="angular-gettext.d.ts" />
|
||||
|
||||
module angular_gettext_tests {
|
||||
|
||||
|
||||
// Configuring angular-gettext
|
||||
// https://angular-gettext.rocketeer.be/dev-guide/configure/
|
||||
//Setting the language
|
||||
angular.module('myApp').run(function (gettextCatalog: angular.gettext.gettextCatalog) {
|
||||
gettextCatalog.setCurrentLanguage('nl');
|
||||
});
|
||||
|
||||
//Highlighting untranslated strings
|
||||
angular.module('myApp').run(function (gettextCatalog: angular.gettext.gettextCatalog) {
|
||||
gettextCatalog.debug = true;
|
||||
});
|
||||
|
||||
|
||||
// Marking strings in JavaScript code as translatable.
|
||||
// https://angular-gettext.rocketeer.be/dev-guide/annotate-js/
|
||||
angular.module("myApp").controller("helloController", function (gettext: angular.gettext.gettextFunction) {
|
||||
var myString = gettext("Hello");
|
||||
});
|
||||
|
||||
//Translating directly in JavaScript.
|
||||
angular.module("myApp").controller("helloController", function (gettextCatalog: angular.gettext.gettextCatalog) {
|
||||
var translated: string = gettextCatalog.getString("Hello");
|
||||
});
|
||||
|
||||
angular.module("myApp").controller("helloController", function (gettextCatalog: angular.gettext.gettextCatalog) {
|
||||
var myString2: string = gettextCatalog.getPlural(3, "Bird", "Birds");
|
||||
});
|
||||
|
||||
angular.module("myApp").controller("helloController", function (gettextCatalog: angular.gettext.gettextCatalog) {
|
||||
var translated: string = gettextCatalog.getString("Hello {{name}}", { name: "Ruben" });
|
||||
});
|
||||
|
||||
// Setting strings manually
|
||||
// https://angular-gettext.rocketeer.be/dev-guide/manual-setstrings/
|
||||
|
||||
angular.module("myApp").run(function (gettextCatalog: angular.gettext.gettextCatalog) {
|
||||
// Load the strings automatically during initialization.
|
||||
gettextCatalog.setStrings("nl", {
|
||||
"Hello": "Hallo",
|
||||
"One boat": ["Een boot", "{{$count}} boats"]
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
interface helloControllerScope extends ng.IScope {
|
||||
switchLanguage: (lang: string) => void;
|
||||
}
|
||||
// Lazy-loading languages
|
||||
// https://angular-gettext.rocketeer.be/dev-guide/lazy-loading/
|
||||
angular.module("myApp").controller("helloController", function ($scope: helloControllerScope, gettextCatalog: angular.gettext.gettextCatalog) {
|
||||
$scope.switchLanguage = function (lang: string) {
|
||||
gettextCatalog.setCurrentLanguage(lang);
|
||||
gettextCatalog.loadRemote("/languages/" + lang + ".json");
|
||||
};
|
||||
});
|
||||
}
|
||||
Vendored
+73
@@ -0,0 +1,73 @@
|
||||
// Type definitions for angular-gettext v2.1.0
|
||||
// Project: https://angular-gettext.rocketeer.be/
|
||||
// Definitions by: Ákos Lukács <https://github.com/AkosLukacs>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module angular.gettext {
|
||||
interface gettextCatalog {
|
||||
|
||||
//////////////
|
||||
/// Fields ///
|
||||
//////////////
|
||||
|
||||
/** (default: false): Whether or not to prefix untranslated strings with [MISSING]: or a custom prefix. */
|
||||
debug: boolean;
|
||||
/** (default: [MISSING]:): Custom prefix for untranslated strings. */
|
||||
debugPrefix: string;
|
||||
/** (default: false): Whether or not to wrap all processed text with markers.Example output: [Welcome] */
|
||||
showTranslatedMarkers: boolean;
|
||||
/** (default: [): Custom prefix to mark strings that have been run through angular-gettext. */
|
||||
translatedMarkerPrefix: string;
|
||||
/** (default: ]): Custom suffix to mark strings that have been run through angular-gettext. */
|
||||
translatedMarkerSuffix: string;
|
||||
/** An object of loaded translation strings.Shouldn't be used directly. */
|
||||
strings: {};
|
||||
/** The default language, in which you're application is written. This defaults to English and it's generally a bad idea to use anything else: if your language has different pluralization rules you'll end up with incorrect translations. Deprecated
|
||||
* @deprecreated
|
||||
*/
|
||||
baseLanguage: string;
|
||||
|
||||
|
||||
///////////////
|
||||
/// Methods ///
|
||||
///////////////
|
||||
|
||||
/** Sets the current language and makes sure that all translations get updated correctly. */
|
||||
setCurrentLanguage(lang: string): void;
|
||||
|
||||
/** Returns the current language. */
|
||||
getCurrentLanguage(): string;
|
||||
|
||||
/** Processes an object of string definitions. More details https://angular-gettext.rocketeer.be/dev-guide/manual-setstrings/
|
||||
* @param language A language code.
|
||||
* @param strings A dictionary of strings. The format of this dictionary is:
|
||||
* - Keys: Singular English strings (as defined in the source files)
|
||||
* - Values: Either a single string for signular-only strings or an array of plural forms.
|
||||
*/
|
||||
setStrings(language: string, strings: { [key: string]: string|string[] }): void;
|
||||
|
||||
/** Get the correct pluralized (but untranslated) string for the value of n. */
|
||||
getStringForm(string: string, n: number): string;
|
||||
|
||||
/** Translate a string with the given context. Uses Angular.JS interpolation, so something like this will do what you expect:
|
||||
* var hello = gettextCatalog.getString("Hello {{name}}!", { name: "Ruben" });
|
||||
* // var hello will be "Hallo Ruben!" in Dutch.
|
||||
* The context parameter is optional: pass null (or don't pass anything) if you're not using it: this skips interpolation and is a lot faster.
|
||||
*/
|
||||
getString(string: string, context?: any): string;
|
||||
|
||||
/** Translate a plural string with the given context. */
|
||||
getPlural(n: number, string: string, stringPlural: string, context?: any): string;
|
||||
|
||||
/** Load a set of translation strings from a given URL.This should be a JSON catalog generated with grunt-angular-gettext. More details https://angular-gettext.rocketeer.be/dev-guide/lazy-loading/ */
|
||||
loadRemote(url: string): ng.IHttpPromise<any>;
|
||||
}
|
||||
|
||||
/** If you have text that should be translated in your JavaScript code, wrap it with a call to a function named gettext. This module provides an injectable function to do so */
|
||||
interface gettextFunction {
|
||||
(dummyString: string): string;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/// <reference path="angular-google-analytics.d.ts" />
|
||||
|
||||
function ConfigurationMethodChaining(AnalyticsProvider: angular.google.analytics.AnalyticsProvider) {
|
||||
AnalyticsProvider
|
||||
.logAllCalls(true)
|
||||
.startOffline(true)
|
||||
.useECommerce(true, true);
|
||||
}
|
||||
|
||||
function EnableECommerce(AnalyticsProvider: angular.google.analytics.AnalyticsProvider) {
|
||||
AnalyticsProvider.useECommerce(true, false);
|
||||
AnalyticsProvider.useECommerce(true, true);
|
||||
AnalyticsProvider.setCurrency("CDN");
|
||||
}
|
||||
|
||||
function SetGoogleAnalyticsAccounts(AnalyticsProvider: angular.google.analytics.AnalyticsProvider) {
|
||||
AnalyticsProvider.setAccount("UA-XXXXX-xx");
|
||||
AnalyticsProvider.setAccount([
|
||||
{ tracker: "UA-12345-12", name: "tracker1" },
|
||||
{ tracker: "UA-12345-34", name: "tracker2" }
|
||||
]);
|
||||
}
|
||||
|
||||
function UseClassicAnalytics(AnalyticsProvider: angular.google.analytics.AnalyticsProvider) {
|
||||
AnalyticsProvider.useAnalytics(false);
|
||||
}
|
||||
|
||||
function UseDisplayFeatures(AnalyticsProvider: angular.google.analytics.AnalyticsProvider) {
|
||||
AnalyticsProvider.useDisplayFeatures(true);
|
||||
}
|
||||
|
||||
function UseEnhancedLinkAttribution(AnalyticsProvider: angular.google.analytics.AnalyticsProvider) {
|
||||
AnalyticsProvider.useEnhancedLinkAttribution(true);
|
||||
}
|
||||
|
||||
function UseCrossDomainLinking(AnalyticsProvider: angular.google.analytics.AnalyticsProvider) {
|
||||
AnalyticsProvider.useCrossDomainLinker(true);
|
||||
AnalyticsProvider.setCrossLinkDomains(["domain-1.com", "domain-2.com"]);
|
||||
}
|
||||
|
||||
function SetCookieConfiguration(AnalyticsProvider: angular.google.analytics.AnalyticsProvider) {
|
||||
AnalyticsProvider.setCookieConfig({
|
||||
cookieDomain: "foo.example.com",
|
||||
cookieName: "myNewName",
|
||||
cookieExpires: 20000
|
||||
});
|
||||
}
|
||||
|
||||
function SetRouteTrackingBehaviors(AnalyticsProvider: angular.google.analytics.AnalyticsProvider) {
|
||||
AnalyticsProvider.trackPages(true);
|
||||
AnalyticsProvider.trackUrlParams(true);
|
||||
AnalyticsProvider.ignoreFirstPageLoad(true);
|
||||
AnalyticsProvider.trackPrefix("my-application");
|
||||
AnalyticsProvider.setPageEvent("$stateChangeSuccess");
|
||||
AnalyticsProvider.setRemoveRegExp(/\/\d+?$/);
|
||||
}
|
||||
@@ -0,0 +1,173 @@
|
||||
// Type definitions for angular-google-analytics v1.1.0
|
||||
// Project: https://github.com/revolunet/angular-google-analytics
|
||||
// Definitions by: Cyril Schumacher <https://github.com/cyrilschumacher>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module angular.google.analytics {
|
||||
/**
|
||||
* @summary Interface for {@link AnalysticsProvider}.
|
||||
* @interface
|
||||
*/
|
||||
interface AnalyticsProvider {
|
||||
/**
|
||||
* @summary Use Delay Script Tag Insertion.
|
||||
* @param {boolean} val If true, the delay script tag is inserted.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
delayScriptTag(val: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Activates the test mode.
|
||||
*/
|
||||
enterTestMode(): void;
|
||||
|
||||
/**
|
||||
* @summary Gets the global cookie configuration.
|
||||
* @return {Object} The global cookie configuration.
|
||||
*/
|
||||
getCookieConfig(): Object;
|
||||
|
||||
/**
|
||||
* @summary Ignore first page view.
|
||||
* @param {boolean} val If true, the first page view is ignored.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
ignoreFirstPageLoad(val: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Enable Service Logging.
|
||||
* @param {boolean} val If true, log all outbound calls to an in-memory array accessible.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
logAllCalls(val: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Set Google Analytics Accounts.
|
||||
* @param {Object} tracker The account identifier(s).
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
setAccount(tracker: string|Object|Array<Object>): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Set Cookie Configuration.
|
||||
* @param {Object} config The custom cookie parameters.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
* @deprecated
|
||||
*/
|
||||
setCookieConfig(config: Object): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Set cross-linked domains.
|
||||
* @param {Array<string>} domains The domains.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
setCrossLinkDomains(domains: Array<string>): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Set currency.
|
||||
* @param {string} currencyCode The currency code.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
setCurrency(currencyCode: string): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Set Domain Name.
|
||||
* @param {string} domain The domain name.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
setDomainName(domain: string): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Enable Experiment (universal analytics only).
|
||||
* @param {string} id The experiment identifier.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
setExperimentId(id: string): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Support Hybrid Mobile Applications.
|
||||
* @param {boolean} val If true, each account object will disable protocol checking and all injected scripts will use the HTTPS protocol.
|
||||
*/
|
||||
setHybridMobileSupport(val: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Set the default page event name.
|
||||
* @param {string} name The default page event name.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
setPageEvent(name: string): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Sets the regex to scrub location before sending to analytics.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
* @param {RegExp} regex The regex.
|
||||
*/
|
||||
setRemoveRegExp(regex: RegExp): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Starts the offline mode.
|
||||
* @param {boolean} val If true, the offline mode is started.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
startOffline(val: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Track all routes.
|
||||
* @param {boolean} val If true, all routes are tracked.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
trackPages(doTrack: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Sets the URL prefix.
|
||||
* @param {string} prefix The URL prefix.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
trackPrefix(prefix: string): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Track all URL query parameters.
|
||||
* @param {boolean} val If true, all URL query parameters are tracked.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
trackUrlParams(val: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Use Classic Analytics.
|
||||
* @param {boolean} val If true, use classic analytics.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
useAnalytics(val: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Use Cross Domain Linking.
|
||||
* @param {boolean} val If true, the cross-linked domains are registered with Google Analytics.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
useCrossDomainLinker(val: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Use Display Features.
|
||||
* @param {boolean} val If true, the display features module is loaded with Google Analytics.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
useDisplayFeatures(val: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Enable enhanced e-commerce module.
|
||||
* @param {boolean} val If true, the enhanced e-commerce module is enabled.
|
||||
* @param {boolean} enhanced If true, the "ec.js" file is used, otherwises, the "ecommerce.js" is used.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
useECommerce(val: boolean, enhanced: boolean): AnalyticsProvider;
|
||||
|
||||
/**
|
||||
* @summary Use Enhanced Link Attribution.
|
||||
* @param {boolean} val If true, the enhanced link attribution module is loaded with Google Analytics.
|
||||
* @return {angular.google.analytics.IAnalyticsProvider} The object instance.
|
||||
*/
|
||||
useEnhancedLinkAttribution(val: boolean): AnalyticsProvider;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
/// <reference path="angular-growl-v2.d.ts" />
|
||||
|
||||
var app = angular.module("ag", ["pascalprecht.translate", "$httpProvider"]);
|
||||
|
||||
app.config((growlProvider:angular.growl.IGrowlProvider, $httpProvider:angular.IHttpProvider) => {
|
||||
var ttl:angular.growl.IGrowlTTLConfig = {
|
||||
success: 5000,
|
||||
error: 4000
|
||||
};
|
||||
|
||||
growlProvider.globalTimeToLive(ttl)
|
||||
.globalTimeToLive(5000)
|
||||
.globalDisableCloseButton(true)
|
||||
.globalDisableIcons(true)
|
||||
.globalReversedOrder(false)
|
||||
.globalDisableCountDown(true)
|
||||
.messageVariableKey("someKey")
|
||||
.globalInlineMessages(false)
|
||||
.globalPosition("top-center")
|
||||
.messagesKey("someKey")
|
||||
.messageTextKey("someKey")
|
||||
.messageTitleKey("someKey")
|
||||
.messageSeverityKey("someKey")
|
||||
.onlyUniqueMessages(false);
|
||||
|
||||
$httpProvider.interceptors.push(growlProvider.serverMessagesInterceptor);
|
||||
});
|
||||
|
||||
app.controller("Ctrl", ($scope:angular.IScope,
|
||||
growl:angular.growl.IGrowlService,
|
||||
growlMessages:angular.growl.IGrowlMessagesService) => {
|
||||
var config:angular.growl.IGrowlMessageConfig = {
|
||||
ttl: 5000,
|
||||
disableCountDown: true,
|
||||
disableCloseButton: true
|
||||
};
|
||||
|
||||
var message = "Some message";
|
||||
|
||||
growl.warning(message);
|
||||
growl.warning(message, config);
|
||||
growl.error(message);
|
||||
growl.error(message, config);
|
||||
growl.info(message);
|
||||
growl.info(message, config);
|
||||
growl.success(message);
|
||||
growl.success(message, config);
|
||||
growl.general(message);
|
||||
growl.general(message, config);
|
||||
growl.general(message, config, "error");
|
||||
growl.onlyUnique();
|
||||
growl.reverseOrder();
|
||||
growl.inlineMessages();
|
||||
growl.position();
|
||||
|
||||
growlMessages.initDirective(1, 10);
|
||||
var messages:angular.growl.IGrowlMessage[] = growlMessages.getAllMessages(2);
|
||||
growlMessages.destroyAllMessages(0);
|
||||
growlMessages.addMessage(messages[0]);
|
||||
growlMessages.deleteMessage(messages[1]);
|
||||
});
|
||||
+249
@@ -0,0 +1,249 @@
|
||||
// Type definitions for Angular Growl 2 v.0.7.5
|
||||
// Project: http://janstevens.github.io/angular-growl-2
|
||||
// Definitions by: Tadeusz Hucal <https://github.com/mkp05>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module angular.growl {
|
||||
|
||||
/**
|
||||
* Global Time-To-Leave configuration.
|
||||
*/
|
||||
interface IGrowlTTLConfig {
|
||||
success?: number;
|
||||
error?: number;
|
||||
warning?: number;
|
||||
info?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Custom configuration used in single message call.
|
||||
*/
|
||||
interface IGrowlMessageConfig {
|
||||
title?: string;
|
||||
ttl?: number;
|
||||
disableCountDown?: boolean;
|
||||
disableIcons?: boolean;
|
||||
disableCloseButton?: boolean;
|
||||
onclose?: Function;
|
||||
onopen?: Function;
|
||||
position?: string;
|
||||
referenceId?: number;
|
||||
translateMessage?: boolean;
|
||||
variables?: { [variable: string]: any; };
|
||||
}
|
||||
|
||||
/**
|
||||
* Growl message with configuration.
|
||||
*/
|
||||
interface IGrowlMessage extends IGrowlMessageConfig {
|
||||
text: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Growl service provider.
|
||||
*/
|
||||
interface IGrowlProvider extends angular.IServiceProvider {
|
||||
/**
|
||||
* Pre-defined server error interceptor.
|
||||
*/
|
||||
serverMessagesInterceptor: (string|IHttpInterceptorFactory)[];
|
||||
|
||||
/**
|
||||
* Set default TTL settings.
|
||||
* @param ttl configuration of TTL for different type of message
|
||||
*/
|
||||
globalTimeToLive(ttl: IGrowlTTLConfig): IGrowlProvider;
|
||||
/**
|
||||
* Set default TTL settings.
|
||||
* @param ttl ttl in milliseconds
|
||||
*/
|
||||
globalTimeToLive(ttl: number): IGrowlProvider;
|
||||
/**
|
||||
* Set default setting for disabling close button.
|
||||
* @param disableCloseButton
|
||||
*/
|
||||
globalDisableCloseButton(disableCloseButton: boolean): IGrowlProvider;
|
||||
/**
|
||||
* Set default setting for disabling icons.
|
||||
* @param disableIcons
|
||||
*/
|
||||
globalDisableIcons(disableIcons: boolean): IGrowlProvider;
|
||||
/**
|
||||
* Set reversing order of displaying new messages.
|
||||
* @param reverseOrder
|
||||
*/
|
||||
globalReversedOrder(reverseOrder: boolean): IGrowlProvider;
|
||||
/**
|
||||
* Set default setting for displaying message disappear countdown.
|
||||
* @param disableCountDown
|
||||
*/
|
||||
globalDisableCountDown(disableCountDown: boolean): IGrowlProvider;
|
||||
/**
|
||||
* Set default allowance for inline messages.
|
||||
* @param inline
|
||||
*/
|
||||
globalInlineMessages(inline: boolean): IGrowlProvider;
|
||||
/**
|
||||
* Set default message position.
|
||||
* @param position
|
||||
*/
|
||||
globalPosition(position: string): IGrowlProvider;
|
||||
/**
|
||||
* Enable/disable displaying only unique messages.
|
||||
* @param onlyUniqueMessages
|
||||
*/
|
||||
onlyUniqueMessages(onlyUniqueMessages: boolean): IGrowlProvider;
|
||||
|
||||
/**
|
||||
* Set key where messages are stored (for http interceptor).
|
||||
* @param messageVariableKey
|
||||
*/
|
||||
messagesKey(messageKey: string): IGrowlProvider;
|
||||
/**
|
||||
* Set key where message text is stored (for http interceptor).
|
||||
* @param messageVariableKey
|
||||
*/
|
||||
messageTextKey(messageTextKey: string): IGrowlProvider;
|
||||
/**
|
||||
* Set key where title of message is stored (for http interceptor).
|
||||
* @param messageVariableKey
|
||||
*/
|
||||
messageTitleKey(messageTitleKey: string): IGrowlProvider;
|
||||
/**
|
||||
* Set key where severity of message is stored (for http interceptor).
|
||||
* @param messageVariableKey
|
||||
*/
|
||||
messageSeverityKey(messageSeverityKey: string): IGrowlProvider;
|
||||
/**
|
||||
* Set key where variables for message are stored (for http interceptor).
|
||||
* @param messageVariableKey
|
||||
*/
|
||||
messageVariableKey(messageVariableKey: string): IGrowlProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* Growl service.
|
||||
*/
|
||||
interface IGrowlService {
|
||||
/**
|
||||
* Show warning message.
|
||||
* @param message text to display (or code for angular-translate)
|
||||
*/
|
||||
warning(message: string): IGrowlMessage;
|
||||
/**
|
||||
* Show warning message.
|
||||
* @param message text to display (or code for angular-translate)
|
||||
* @param config additional message configuration
|
||||
*/
|
||||
warning(message: string, config: IGrowlMessageConfig): IGrowlMessage;
|
||||
|
||||
/**
|
||||
* Show error message.
|
||||
* @param message text to display (or code for angular-translate)
|
||||
*/
|
||||
error(message: string): IGrowlMessage;
|
||||
/**
|
||||
* Show error message.
|
||||
* @param message text to display (or code for angular-translate)
|
||||
* @param config additional message configuration
|
||||
*/
|
||||
error(message: string, config: IGrowlMessageConfig): IGrowlMessage;
|
||||
|
||||
/**
|
||||
* Show information message.
|
||||
* @param message text to display (or code for angular-translate)
|
||||
*/
|
||||
info(message: string): IGrowlMessage;
|
||||
/**
|
||||
* Show information message.
|
||||
* @param message text to display (or code for angular-translate)
|
||||
* @param config additional message configuration
|
||||
*/
|
||||
info(message: string, config: IGrowlMessageConfig): IGrowlMessage;
|
||||
|
||||
/**
|
||||
* Show success message.
|
||||
* @param message text to display (or code for angular-translate)
|
||||
* @param config additional message configuration
|
||||
*/
|
||||
success(message: string): IGrowlMessage;
|
||||
/**
|
||||
* Show success message.
|
||||
* @param message text to display (or code for angular-translate)
|
||||
*/
|
||||
success(message: string, config: IGrowlMessageConfig): IGrowlMessage;
|
||||
|
||||
/**
|
||||
* Show message (generic).
|
||||
* @param message text to display (or code for angular-translate)
|
||||
*/
|
||||
general(message: string): IGrowlMessage;
|
||||
/**
|
||||
* Show message (generic).
|
||||
* @param message text to display (or code for angular-translate)
|
||||
* @param config additional message configuration
|
||||
*/
|
||||
general(message: string, config: IGrowlMessageConfig): IGrowlMessage;
|
||||
/**
|
||||
* Show message (generic).
|
||||
* @param message text to display (or code for angular-translate)
|
||||
* @param config additional message configuration
|
||||
* @param severity message severity (error, warning, success, info).
|
||||
*/
|
||||
general(message: string, config: IGrowlMessageConfig, severity: string): IGrowlMessage;
|
||||
|
||||
/**
|
||||
* Get current setting for displaying only unique messages.
|
||||
*/
|
||||
onlyUnique(): boolean;
|
||||
/**
|
||||
* Get current setting for reversing messages order.
|
||||
*/
|
||||
reverseOrder(): boolean;
|
||||
/**
|
||||
* Get current allowance for inline messages.
|
||||
*/
|
||||
inlineMessages(): boolean;
|
||||
/**
|
||||
* Get current messages position.
|
||||
*/
|
||||
position(): string;
|
||||
}
|
||||
|
||||
/**
|
||||
* GrowlMessages service.
|
||||
*/
|
||||
interface IGrowlMessagesService {
|
||||
/**
|
||||
* Initialize a directive
|
||||
* We look at the preloaded directive and use this else we
|
||||
* create a new blank object
|
||||
* @param referenceId
|
||||
* @param limitMessages
|
||||
*/
|
||||
initDirective(referenceId: number, limitMessages: number): ng.IDirective;
|
||||
|
||||
/**
|
||||
* Get current messages
|
||||
*/
|
||||
getAllMessages(referenceId?: number): IGrowlMessage[];
|
||||
|
||||
/**
|
||||
* Destroy all messages
|
||||
*/
|
||||
destroyAllMessages(referenceId?: number): void;
|
||||
|
||||
/**
|
||||
* Add a message
|
||||
*/
|
||||
addMessage(message: IGrowlMessage): IGrowlMessage;
|
||||
|
||||
/**
|
||||
* Delete a message
|
||||
*/
|
||||
deleteMessage(message: IGrowlMessage): void;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/// <reference path="./angular-httpi.d.ts" />
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
var app = angular.module("Demo", ["httpi"]);
|
||||
// -------------------------------------------------- //
|
||||
// -------------------------------------------------- //
|
||||
// I control the main demo.
|
||||
app.controller(
|
||||
"DemoController",
|
||||
function($scope: ng.IScope, httpi: Httpi.HttpiFactory) {
|
||||
|
||||
console.warn("None of the API endpoints exist - they will all throw 404.");
|
||||
// NOTE: The (.|.) notation will be stripped out automatically; it's only
|
||||
// here to improve readability of the "happy paths" for interpolation
|
||||
// labels. The following urls are pre-processed to be identical:
|
||||
// --
|
||||
// api/friends/( :listCommand | :id/:itemCommand )
|
||||
// api/friends/:listCommand:id/:itemCommand
|
||||
var resource = httpi.resource("api/friends/( :listCommand | :id/:itemCommand )");
|
||||
// Clear list of friends - matching listCommand.
|
||||
resource.post({
|
||||
data: {
|
||||
listCommand: "reset"
|
||||
}
|
||||
});
|
||||
// Create a new friend - no matching URL parameters.
|
||||
resource.post({
|
||||
data: {
|
||||
name: "Tricia"
|
||||
}
|
||||
});
|
||||
// Get a given friend - ID matching.
|
||||
resource.get({
|
||||
data: {
|
||||
id: 4
|
||||
}
|
||||
});
|
||||
// Make best friend - ID, itemCommand matching.
|
||||
resource.post({
|
||||
data: {
|
||||
id: 4,
|
||||
itemCommand: "make-best-friend"
|
||||
}
|
||||
});
|
||||
// Get gets friends - no matching URL parameters.
|
||||
resource.get({
|
||||
params: {
|
||||
limit: "besties"
|
||||
}
|
||||
});
|
||||
// Get a friend as a JSONP request.
|
||||
// --
|
||||
// NOTE: The "resource" will auto-inject the "JSON_CALLBACK" marker that
|
||||
// AngularJS will automatically replace with an internal callback name.
|
||||
resource.jsonp({
|
||||
data: {
|
||||
id: 43
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
})();
|
||||
Vendored
+42
@@ -0,0 +1,42 @@
|
||||
// Type definitions for angular-httpi
|
||||
// Project: https://github.com/bennadel/httpi
|
||||
// Definitions by: Andrew Camilleri <https://github.com/Kukks>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module Httpi {
|
||||
export interface HttpiPayload extends ng.IRequestShortcutConfig {
|
||||
method?: string;
|
||||
url?: string;
|
||||
params?: {};
|
||||
data?: {};
|
||||
keepTrailingSlash?: boolean;
|
||||
}
|
||||
|
||||
export interface HttpiFactory {
|
||||
|
||||
(config: HttpiPayload): ng.IHttpPromise<{}>;
|
||||
|
||||
resource(url: string): HttpiResource;
|
||||
}
|
||||
|
||||
export class HttpiResource {
|
||||
|
||||
constructor(http: ng.IHttpService, url: string);
|
||||
|
||||
delete<T>(config: HttpiPayload): ng.IHttpPromise<T>;
|
||||
|
||||
get<T>(config: HttpiPayload): ng.IHttpPromise<T>;
|
||||
|
||||
head<T>(config: HttpiPayload): ng.IHttpPromise<T>;
|
||||
|
||||
jsonp<T>(config: HttpiPayload): ng.IHttpPromise<T>;
|
||||
|
||||
post<T>(config: HttpiPayload): ng.IHttpPromise<T>;
|
||||
|
||||
put<T>(config: HttpiPayload): ng.IHttpPromise<T>;
|
||||
|
||||
setKeepTrailingSlash(newKeepTrailingSlash: boolean): HttpiResource;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
/// <reference path="angular-jwt.d.ts" />
|
||||
|
||||
var app = angular.module("angular-jwt-tests", ["angular-jwt"]);
|
||||
|
||||
var $jwtHelper: angular.jwt.IJwtHelper;
|
||||
|
||||
var expToken = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NhbXBsZXMuYXV0aDAuY29tLyIsInN1YiI6ImZhY2Vib29rfDEwMTU0Mjg3MDI3NTEwMzAyIiwiYXVkIjoiQlVJSlNXOXg2MHNJSEJ3OEtkOUVtQ2JqOGVESUZ4REMiLCJleHAiOjE0MTIyMzQ3MzAsImlhdCI6MTQxMjE5ODczMH0.7M5sAV50fF1-_h9qVbdSgqAnXVF7mz3I6RjS6JiH0H8';
|
||||
var tokenPayload = $jwtHelper.decodeToken(expToken);
|
||||
var date = $jwtHelper.getTokenExpirationDate(expToken);
|
||||
var bool = $jwtHelper.isTokenExpired(expToken);
|
||||
|
||||
var $jwtInterceptor: angular.jwt.IJwtInterceptor;
|
||||
|
||||
$jwtInterceptor.tokenGetter = () => {
|
||||
return expToken;
|
||||
}
|
||||
Vendored
+30
@@ -0,0 +1,30 @@
|
||||
// Type definitions for angular-jwt 0.0.8
|
||||
// Project: https://github.com/auth0/angular-jwt
|
||||
// Definitions by: Reto Rezzonico <https://github.com/rerezz>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module angular.jwt {
|
||||
|
||||
interface JwtToken {
|
||||
iss: string;
|
||||
sub: string;
|
||||
aud: string;
|
||||
exp: number;
|
||||
nbf: number;
|
||||
iat: number;
|
||||
jti: string;
|
||||
unique_name: string;
|
||||
}
|
||||
|
||||
interface IJwtHelper {
|
||||
decodeToken(token: string): JwtToken;
|
||||
getTokenExpirationDate(token: any): Date;
|
||||
isTokenExpired(token: any, offsetSeconds?: number): boolean;
|
||||
}
|
||||
|
||||
interface IJwtInterceptor {
|
||||
tokenGetter(...params : any[]): string;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
/// <reference path="angular-loading-bar.d.ts" />
|
||||
|
||||
var app = angular.module('testModule', ['angular-loading-bar']);
|
||||
|
||||
class TestController {
|
||||
|
||||
constructor($http: ng.IHttpService) {
|
||||
|
||||
$http.get("http://xyz.com", { ignoreLoadingBar: true })
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
app.controller('TestController', TestController);
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
// Type definitions for angular-loading-bar
|
||||
// Project: https://github.com/chieffancypants/angular-loading-bar
|
||||
// Definitions by: Stephen Lautier <https://github.com/stephenlautier>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
|
||||
declare module angular {
|
||||
|
||||
interface IRequestShortcutConfig {
|
||||
/**
|
||||
* Indicates that the loading bar should be hidden.
|
||||
*/
|
||||
ignoreLoadingBar?: boolean;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,7 +13,7 @@ interface TestScope extends ng.IScope {
|
||||
}
|
||||
|
||||
export class TestController {
|
||||
constructor($scope: TestScope, localStorageService: ng.local.storage.ILocalStorageService<string>) {
|
||||
constructor($scope: TestScope, localStorageService: ng.local.storage.ILocalStorageService) {
|
||||
// isSupported
|
||||
if (localStorageService.isSupported) {
|
||||
// do something
|
||||
@@ -29,7 +29,7 @@ export class TestController {
|
||||
|
||||
// get
|
||||
$scope.getItem = (key) => {
|
||||
return localStorageService.get(key);
|
||||
return localStorageService.get<string>(key);
|
||||
};
|
||||
|
||||
// remove
|
||||
|
||||
+5
-5
@@ -6,7 +6,7 @@
|
||||
/// <reference path='../angularjs/angular.d.ts' />
|
||||
|
||||
declare module angular.local.storage {
|
||||
interface ILocalStorageServiceProvider extends IServiceProvider {
|
||||
interface ILocalStorageServiceProvider extends angular.IServiceProvider {
|
||||
/**
|
||||
* Setter for the prefix
|
||||
* You should set a prefix to avoid overwriting any local storage variables from the rest of your app
|
||||
@@ -75,7 +75,7 @@ declare module angular.local.storage {
|
||||
|
||||
}
|
||||
|
||||
interface ILocalStorageService<T> {
|
||||
interface ILocalStorageService {
|
||||
/**
|
||||
* Checks if the browser support the current storage type(e.g: localStorage, sessionStorage).
|
||||
* Returns: Boolean
|
||||
@@ -92,14 +92,14 @@ declare module angular.local.storage {
|
||||
* @param key
|
||||
* @param value
|
||||
*/
|
||||
set(key: string, value: T): boolean;
|
||||
set<T>(key: string, value: T): boolean;
|
||||
/**
|
||||
* Directly get a value from local storage.
|
||||
* If local storage is not supported, use cookies instead.
|
||||
* Returns: value from local storage
|
||||
* @param key
|
||||
*/
|
||||
get(key: string): T;
|
||||
get<T>(key: string): T;
|
||||
/**
|
||||
* Return array of keys for local storage, ignore keys that not owned.
|
||||
* Returns: value from local storage
|
||||
@@ -129,7 +129,7 @@ declare module angular.local.storage {
|
||||
* @param value optional
|
||||
* @param key The corresponding key used in local storage
|
||||
*/
|
||||
bind(scope:ng.IScope, property: string, value?: any, key?: string): Function;
|
||||
bind(scope: angular.IScope, property: string, value?: any, key?: string): Function;
|
||||
/**
|
||||
* Return the derive key
|
||||
* Returns String
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
/// <reference path='../angularjs/angular.d.ts' />
|
||||
/// <reference path='angular-localForage.d.ts' />
|
||||
|
||||
var app = angular.module('angular-localForage-tests', ['LocalForageModule']);
|
||||
app.config(function (localStorageServiceProvider:angular.localForage.ILocalForageProvider) {
|
||||
|
||||
//TODO
|
||||
});
|
||||
|
||||
var $rootScope:angular.IRootScopeService,
|
||||
$localForage:angular.localForage.ILocalForageService,
|
||||
instanceVersion = 0;
|
||||
|
||||
// create a fresh instance
|
||||
$localForage.clear().then(function () {
|
||||
$localForage = $localForage.createInstance({
|
||||
name: ++instanceVersion
|
||||
});
|
||||
});
|
||||
|
||||
$localForage.getItem('this key is unknown').then(function (value) {
|
||||
|
||||
});
|
||||
|
||||
|
||||
$localForage.setItem('myName', 'Olivier Combe').then(function (data) {
|
||||
|
||||
$localForage.getItem('myName').then(function (data) {
|
||||
});
|
||||
});
|
||||
|
||||
var values = ['Olivier Combe', 'AngularJs', 'Open Source'];
|
||||
|
||||
$localForage.setItem(['myName', 'myPassion', 'myHobbie'], values).then(function (data) {
|
||||
|
||||
$localForage.getItem(['myHobbie', 'myName']).then(function (data) {
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$localForage.removeItem('myName').then(function () {
|
||||
|
||||
$localForage.getItem('myName').then(function (data) {
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$localForage.removeItem(['myName', 'myPassion']).then(function () {
|
||||
|
||||
$localForage.getItem(['myName', 'myPassion', 'myHobbie']).then(function (data) {
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$localForage.pull('myName').then(function (data) {
|
||||
|
||||
$localForage.getItem('myName').then(function (data) {
|
||||
});
|
||||
|
||||
});
|
||||
$localForage.pull(['myName', 'myPassion']).then(function (data) {
|
||||
|
||||
$localForage.getItem(['myName', 'myPassion', 'myHobbie']).then(function (data) {
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
$localForage.setItem('myName', 'Olivier Combe').then(function (d) {
|
||||
|
||||
$localForage.getItem('myName').then(function (data) {
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
$localForage.setDriver('localStorageWrapper').then(function () {
|
||||
$localForage.setItem('myName', 'Olivier Combe').then(function (d) {
|
||||
$localForage.getItem('myName').then(function (data) {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$localForage.setItem('myArray', [{
|
||||
$$hashKey: '00A',
|
||||
name: 'Olivier Combe'
|
||||
}]).then(function (d) {
|
||||
|
||||
$localForage.getItem('myArray').then(function (data) {
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$localForage.setDriver('localStorageWrapper').then(function () {
|
||||
$localForage.setItem('myArray', [{
|
||||
$$hashKey: '00A',
|
||||
name: 'Olivier Combe'
|
||||
}]).then(function (d) {
|
||||
|
||||
$localForage.getItem('myArray').then(function (data) {
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
var aFileParts = ["<a id=\"a\"><b id=\"b\">hey!<\/b><\/a>"];
|
||||
var oMyBlob = new Blob(aFileParts, {"type": "text\/xml"}); // the blob
|
||||
|
||||
$localForage.setItem('myBlob', oMyBlob).then(function (data) {
|
||||
});
|
||||
|
||||
// $localForage.setItem(['myName', 'myPassion', 'myHobbie'], 'value');
|
||||
|
||||
// $localForage.setItem();
|
||||
|
||||
|
||||
$localForage.iterate(function (value, key) {
|
||||
}).then(function (data) {
|
||||
});
|
||||
|
||||
$localForage.iterate(function (value, key) {
|
||||
if (key == 'myPassion') {
|
||||
return value;
|
||||
}
|
||||
}).then(function (data) {
|
||||
});
|
||||
|
||||
$localForage.bind($rootScope, 'key').then(function(data) {
|
||||
});
|
||||
|
||||
$localForage.bind($rootScope, {key: 'key'}).then(function(data) {
|
||||
});
|
||||
|
||||
$localForage.bind($rootScope, {key: 'key', defaultValue: 'defaultValue'}).then(function(data) {
|
||||
});
|
||||
|
||||
$localForage.bind($rootScope, {key: 'key', scopeKey: 'scopeKey'}).then(function(data) {
|
||||
});
|
||||
|
||||
$localForage.bind($rootScope, {key: 'key', name: 'name'}).then(function(data) {
|
||||
});
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
// Type definitions for angular-localForage 1.2.2
|
||||
// Project: https://github.com/ocombe/angular-localForage
|
||||
// Definitions by: Stefan Steinhart <https://github.com/reppners>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../localForage/localForage.d.ts" />
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module angular.localForage {
|
||||
|
||||
interface LocalForageConfig {
|
||||
driver?:string;
|
||||
name?:string | number;
|
||||
version?:number;
|
||||
storeName?:string;
|
||||
description?:string;
|
||||
}
|
||||
|
||||
interface ILocalForageProvider {
|
||||
config(config:LocalForageConfig):void;
|
||||
setNotify(onItemSet:boolean, onItemRemove:boolean):void;
|
||||
}
|
||||
|
||||
interface ILocalForageService {
|
||||
driver(): LocalForageDriver;
|
||||
setDriver(name: string | string[]): angular.IPromise<void>;
|
||||
|
||||
setItem(key:string, value:any):angular.IPromise<void>;
|
||||
setItem(keys:Array<string>, values:Array<any>):angular.IPromise<void>;
|
||||
|
||||
getItem(key:string):angular.IPromise<any>;
|
||||
getItem(keys:Array<string>):angular.IPromise<Array<any>>;
|
||||
|
||||
removeItem(key:string | Array<string>):angular.IPromise<void>;
|
||||
|
||||
pull(key:string):angular.IPromise<any>;
|
||||
pull(keys:Array<string>):angular.IPromise<Array<any>>;
|
||||
|
||||
clear():angular.IPromise<void>;
|
||||
|
||||
key(n:number):angular.IPromise<string>;
|
||||
|
||||
keys():angular.IPromise<string>;
|
||||
|
||||
length():angular.IPromise<number>;
|
||||
|
||||
iterate<T>(iteratorCallback:(value:string | number, key:string)=>T):angular.IPromise<T>;
|
||||
|
||||
bind($scope:ng.IScope, key:string):angular.IPromise<any>;
|
||||
|
||||
bind($scope:ng.IScope, config:{
|
||||
key:string;
|
||||
defaultValue?:any;
|
||||
scopeKey?:string;
|
||||
name?:string;
|
||||
}):angular.IPromise<any>;
|
||||
|
||||
unbind($scope:ng.IScope, key:string, scopeKey?:string):void;
|
||||
|
||||
createInstance(config:LocalForageConfig):ILocalForageService;
|
||||
instance(name:string):ILocalForageService;
|
||||
}
|
||||
}
|
||||
+195
@@ -0,0 +1,195 @@
|
||||
// Type definitions for Angular Material 0.8.3+ (angular.material module)
|
||||
// Project: https://github.com/angular/material
|
||||
// Definitions by: Matt Traynham <https://github.com/mtraynham>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
declare module angular.material {
|
||||
|
||||
interface MDBottomSheetOptions {
|
||||
templateUrl?: string;
|
||||
template?: string;
|
||||
controller?: any;
|
||||
locals?: {[index: string]: any};
|
||||
targetEvent?: any;
|
||||
resolve?: {[index: string]: angular.IPromise<any>}
|
||||
controllerAs?: string;
|
||||
parent?: Element;
|
||||
disableParentScroll?: boolean;
|
||||
}
|
||||
|
||||
interface MDBottomSheetService {
|
||||
show(options: MDBottomSheetOptions): angular.IPromise<any>;
|
||||
hide(response?: any): void;
|
||||
cancel(response?: any): void;
|
||||
}
|
||||
|
||||
interface MDPresetDialog<T> {
|
||||
title(title: string): T;
|
||||
content(content: string): T;
|
||||
ok(content: string): T;
|
||||
theme(theme: string): T;
|
||||
}
|
||||
|
||||
interface MDAlertDialog extends MDPresetDialog<MDAlertDialog> {
|
||||
}
|
||||
|
||||
interface MDConfirmDialog extends MDPresetDialog<MDConfirmDialog> {
|
||||
cancel(reason?: string): MDConfirmDialog;
|
||||
}
|
||||
|
||||
interface MDDialogOptions {
|
||||
templateUrl?: string;
|
||||
template?: string;
|
||||
domClickEvent?: any;
|
||||
disableParentScroll?: boolean;
|
||||
clickOutsideToClose?: boolean;
|
||||
hasBackdrop?: boolean;
|
||||
escapeToClose?: boolean;
|
||||
controller?: any;
|
||||
locals?: {[index: string]: any};
|
||||
bindToController?: boolean;
|
||||
resolve?: {[index: string]: angular.IPromise<any>}
|
||||
controllerAs?: string;
|
||||
parent?: Element;
|
||||
onComplete?: Function;
|
||||
}
|
||||
|
||||
interface MDDialogService {
|
||||
show(dialog: MDDialogOptions|MDPresetDialog<any>): angular.IPromise<any>;
|
||||
confirm(): MDConfirmDialog;
|
||||
alert(): MDAlertDialog;
|
||||
hide(response?: any): void;
|
||||
cancel(response?: any): void;
|
||||
}
|
||||
|
||||
interface MDIcon {
|
||||
(path: string): angular.IPromise<Element>;
|
||||
}
|
||||
|
||||
interface MDIconProvider {
|
||||
icon(id: string, url: string, iconSize?: string): MDIconProvider;
|
||||
iconSet(id: string, url: string, iconSize?: string): MDIconProvider;
|
||||
defaultIconSet(url: string, iconSize?: string): MDIconProvider;
|
||||
defaultIconSize(iconSize: string): MDIconProvider;
|
||||
}
|
||||
|
||||
interface MDMedia {
|
||||
(media: string): boolean;
|
||||
}
|
||||
|
||||
interface MDSidenavObject {
|
||||
toggle(): void;
|
||||
open(): void;
|
||||
close(): void;
|
||||
isOpen(): boolean;
|
||||
isLockedOpen(): boolean;
|
||||
}
|
||||
|
||||
interface MDSidenavService {
|
||||
(component: string): MDSidenavObject;
|
||||
}
|
||||
|
||||
interface MDToastPreset<T> {
|
||||
content(content: string): T;
|
||||
action(action: string): T;
|
||||
highlightAction(highlightAction: boolean): T;
|
||||
capsule(capsule: boolean): T;
|
||||
theme(theme: string): T;
|
||||
hideDelay(delay: number): T;
|
||||
}
|
||||
|
||||
interface MDSimpleToastPreset extends MDToastPreset<MDSimpleToastPreset> {
|
||||
}
|
||||
|
||||
interface MDToastOptions {
|
||||
templateUrl?: string;
|
||||
template?: string;
|
||||
hideDelay?: number;
|
||||
position?: string;
|
||||
controller?: any;
|
||||
locals?: {[index: string]: any};
|
||||
bindToController?: boolean;
|
||||
resolve?: {[index: string]: angular.IPromise<any>}
|
||||
controllerAs?: string;
|
||||
parent?: Element;
|
||||
}
|
||||
|
||||
interface MDToastService {
|
||||
show(optionsOrPreset: MDToastOptions|MDToastPreset<any>): angular.IPromise<any>;
|
||||
showSimple(): angular.IPromise<any>;
|
||||
simple(): MDSimpleToastPreset;
|
||||
build(): MDToastPreset<any>;
|
||||
updateContent(): void;
|
||||
hide(response?: any): void;
|
||||
cancel(response?: any): void;
|
||||
}
|
||||
|
||||
interface MDPalette {
|
||||
0?: string;
|
||||
50?: string;
|
||||
100?: string;
|
||||
200?: string;
|
||||
300?: string;
|
||||
400?: string;
|
||||
500?: string;
|
||||
600?: string;
|
||||
700?: string;
|
||||
800?: string;
|
||||
900?: string;
|
||||
A100?: string;
|
||||
A200?: string;
|
||||
A400?: string;
|
||||
A700?: string;
|
||||
contrastDefaultColor?: string;
|
||||
contrastDarkColors?: string;
|
||||
contrastStrongLightColors?: string;
|
||||
}
|
||||
|
||||
interface MDThemeHues {
|
||||
default?: string;
|
||||
'hue-1'?: string;
|
||||
'hue-2'?: string;
|
||||
'hue-3'?: string;
|
||||
}
|
||||
|
||||
interface MDThemePalette {
|
||||
name: string;
|
||||
hues: MDThemeHues;
|
||||
}
|
||||
|
||||
interface MDThemeColors {
|
||||
accent: MDThemePalette;
|
||||
background: MDThemePalette;
|
||||
primary: MDThemePalette;
|
||||
warn: MDThemePalette;
|
||||
}
|
||||
|
||||
interface MDThemeGrayScalePalette {
|
||||
1: string;
|
||||
2: string;
|
||||
3: string;
|
||||
4: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
interface MDTheme {
|
||||
name: string;
|
||||
colors: MDThemeColors;
|
||||
foregroundPalette: MDThemeGrayScalePalette;
|
||||
foregroundShadow: string;
|
||||
accentPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
primaryPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
warnPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
backgroundPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
dark(isDark?: boolean): MDTheme;
|
||||
}
|
||||
|
||||
interface MDThemingProvider {
|
||||
theme(name: string, inheritFrom?: string): MDTheme;
|
||||
definePalette(name: string, palette: MDPalette): MDThemingProvider;
|
||||
extendPalette(name: string, palette: MDPalette): MDPalette;
|
||||
setDefaultTheme(theme: string): void;
|
||||
alwaysWatchTheme(alwaysWatch: boolean): void;
|
||||
}
|
||||
}
|
||||
+204
@@ -0,0 +1,204 @@
|
||||
// Type definitions for Angular Material 0.9.0-rc1+ (angular.material module)
|
||||
// Project: https://github.com/angular/material
|
||||
// Definitions by: Matt Traynham <https://github.com/mtraynham>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
declare module angular.material {
|
||||
|
||||
interface MDBottomSheetOptions {
|
||||
templateUrl?: string;
|
||||
template?: string;
|
||||
scope?: angular.IScope; // default: new child scope
|
||||
preserveScope?: boolean; // default: false
|
||||
controller?: string|Function;
|
||||
locals?: {[index: string]: any};
|
||||
targetEvent?: MouseEvent;
|
||||
resolve?: {[index: string]: angular.IPromise<any>}
|
||||
controllerAs?: string;
|
||||
parent?: string|Element|JQuery; // default: root node
|
||||
disableParentScroll?: boolean; // default: true
|
||||
}
|
||||
|
||||
interface MDBottomSheetService {
|
||||
show(options: MDBottomSheetOptions): angular.IPromise<any>;
|
||||
hide(response?: any): void;
|
||||
cancel(response?: any): void;
|
||||
}
|
||||
|
||||
interface MDPresetDialog<T> {
|
||||
title(title: string): T;
|
||||
content(content: string): T;
|
||||
ok(ok: string): T;
|
||||
theme(theme: string): T;
|
||||
}
|
||||
|
||||
interface MDAlertDialog extends MDPresetDialog<MDAlertDialog> {
|
||||
}
|
||||
|
||||
interface MDConfirmDialog extends MDPresetDialog<MDConfirmDialog> {
|
||||
cancel(cancel: string): MDConfirmDialog;
|
||||
}
|
||||
|
||||
interface MDDialogOptions {
|
||||
templateUrl?: string;
|
||||
template?: string;
|
||||
targetEvent?: MouseEvent;
|
||||
scope?: angular.IScope; // default: new child scope
|
||||
preserveScope?: boolean; // default: false
|
||||
disableParentScroll?: boolean; // default: true
|
||||
hasBackdrop?: boolean // default: true
|
||||
clickOutsideToClose?: boolean; // default: false
|
||||
escapeToClose?: boolean; // default: true
|
||||
focusOnOpen?: boolean; // default: true
|
||||
controller?: string|Function;
|
||||
locals?: {[index: string]: any};
|
||||
bindToController?: boolean; // default: false
|
||||
resolve?: {[index: string]: angular.IPromise<any>}
|
||||
controllerAs?: string;
|
||||
parent?: string|Element|JQuery; // default: root node
|
||||
onComplete?: Function;
|
||||
}
|
||||
|
||||
interface MDDialogService {
|
||||
show(dialog: MDDialogOptions|MDAlertDialog|MDConfirmDialog): angular.IPromise<any>;
|
||||
confirm(): MDConfirmDialog;
|
||||
alert(): MDAlertDialog;
|
||||
hide(response?: any): void;
|
||||
cancel(response?: any): void;
|
||||
}
|
||||
|
||||
interface MDIcon {
|
||||
(id: string): angular.IPromise<Element>; // id is a unique ID or URL
|
||||
}
|
||||
|
||||
interface MDIconProvider {
|
||||
icon(id: string, url: string, iconSize?: string): MDIconProvider; // iconSize default: '24px'
|
||||
iconSet(id: string, url: string, iconSize?: string): MDIconProvider; // iconSize default: '24px'
|
||||
defaultIconSet(url: string, iconSize?: string): MDIconProvider; // iconSize default: '24px'
|
||||
defaultIconSize(iconSize: string): MDIconProvider; // default: '24px'
|
||||
}
|
||||
|
||||
interface MDMedia {
|
||||
(media: string): boolean;
|
||||
}
|
||||
|
||||
interface MDSidenavObject {
|
||||
toggle(): angular.IPromise<void>;
|
||||
open(): angular.IPromise<void>;
|
||||
close(): angular.IPromise<void>;
|
||||
isOpen(): boolean;
|
||||
isLockedOpen(): boolean;
|
||||
}
|
||||
|
||||
interface MDSidenavService {
|
||||
(component: string): MDSidenavObject;
|
||||
}
|
||||
|
||||
interface MDToastPreset<T> {
|
||||
content(content: string): T;
|
||||
action(action: string): T;
|
||||
highlightAction(highlightAction: boolean): T;
|
||||
capsule(capsule: boolean): T;
|
||||
theme(theme: string): T;
|
||||
hideDelay(delay: number): T;
|
||||
position(position: string): T;
|
||||
}
|
||||
|
||||
interface MDSimpleToastPreset extends MDToastPreset<MDSimpleToastPreset> {
|
||||
}
|
||||
|
||||
interface MDToastOptions {
|
||||
templateUrl?: string;
|
||||
template?: string;
|
||||
scope?: angular.IScope; // default: new child scope
|
||||
preserveScope?: boolean; // default: false
|
||||
hideDelay?: number; // default (ms): 3000
|
||||
position?: string; // any combination of 'bottom'/'left'/'top'/'right'/'fit'; default: 'bottom left'
|
||||
controller?: string|Function;
|
||||
locals?: {[index: string]: any};
|
||||
bindToController?: boolean; // default: false
|
||||
resolve?: {[index: string]: angular.IPromise<any>}
|
||||
controllerAs?: string;
|
||||
parent?: string|Element|JQuery; // default: root node
|
||||
}
|
||||
|
||||
interface MDToastService {
|
||||
show(optionsOrPreset: MDToastOptions|MDToastPreset<any>): angular.IPromise<any>;
|
||||
showSimple(): angular.IPromise<any>;
|
||||
simple(): MDSimpleToastPreset;
|
||||
build(): MDToastPreset<any>;
|
||||
updateContent(): void;
|
||||
hide(response?: any): void;
|
||||
cancel(response?: any): void;
|
||||
}
|
||||
|
||||
interface MDPalette {
|
||||
0?: string;
|
||||
50?: string;
|
||||
100?: string;
|
||||
200?: string;
|
||||
300?: string;
|
||||
400?: string;
|
||||
500?: string;
|
||||
600?: string;
|
||||
700?: string;
|
||||
800?: string;
|
||||
900?: string;
|
||||
A100?: string;
|
||||
A200?: string;
|
||||
A400?: string;
|
||||
A700?: string;
|
||||
contrastDefaultColor?: string;
|
||||
contrastDarkColors?: string|string[];
|
||||
contrastLightColors?: string|string[];
|
||||
}
|
||||
|
||||
interface MDThemeHues {
|
||||
default?: string;
|
||||
'hue-1'?: string;
|
||||
'hue-2'?: string;
|
||||
'hue-3'?: string;
|
||||
}
|
||||
|
||||
interface MDThemePalette {
|
||||
name: string;
|
||||
hues: MDThemeHues;
|
||||
}
|
||||
|
||||
interface MDThemeColors {
|
||||
accent: MDThemePalette;
|
||||
background: MDThemePalette;
|
||||
primary: MDThemePalette;
|
||||
warn: MDThemePalette;
|
||||
}
|
||||
|
||||
interface MDThemeGrayScalePalette {
|
||||
1: string;
|
||||
2: string;
|
||||
3: string;
|
||||
4: string;
|
||||
name: string;
|
||||
}
|
||||
|
||||
interface MDTheme {
|
||||
name: string;
|
||||
isDark: boolean;
|
||||
colors: MDThemeColors;
|
||||
foregroundPalette: MDThemeGrayScalePalette;
|
||||
foregroundShadow: string;
|
||||
accentPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
primaryPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
warnPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
backgroundPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
dark(isDark?: boolean): MDTheme;
|
||||
}
|
||||
|
||||
interface MDThemingProvider {
|
||||
theme(name: string, inheritFrom?: string): MDTheme;
|
||||
definePalette(name: string, palette: MDPalette): MDThemingProvider;
|
||||
extendPalette(name: string, palette: MDPalette): MDPalette;
|
||||
setDefaultTheme(theme: string): void;
|
||||
alwaysWatchTheme(alwaysWatch: boolean): void;
|
||||
}
|
||||
}
|
||||
@@ -3,11 +3,11 @@
|
||||
var myApp = angular.module('testModule', ['ngMaterial']);
|
||||
|
||||
myApp.config((
|
||||
$mdThemingProvider: ng.material.MDThemingProvider,
|
||||
$mdIconProvider: ng.material.MDIconProvider) => {
|
||||
$mdThemingProvider: ng.material.IThemingProvider,
|
||||
$mdIconProvider: ng.material.IIconProvider) => {
|
||||
|
||||
$mdThemingProvider.alwaysWatchTheme(true);
|
||||
var neonRedMap: ng.material.MDPalette = $mdThemingProvider.extendPalette('red', {
|
||||
var neonRedMap: ng.material.IPalette = $mdThemingProvider.extendPalette('red', {
|
||||
'500': 'ff0000'
|
||||
});
|
||||
// Register the new color palette map with the name <code>neonRed</code>
|
||||
@@ -27,7 +27,7 @@ myApp.config((
|
||||
.icon('work:chair', 'my/app/chair.svg'); // Register icon in a specific set
|
||||
});
|
||||
|
||||
myApp.controller('BottomSheetController', ($scope: ng.IScope, $mdBottomSheet: ng.material.MDBottomSheetService) => {
|
||||
myApp.controller('BottomSheetController', ($scope: ng.IScope, $mdBottomSheet: ng.material.IBottomSheetService) => {
|
||||
$scope['openBottomSheet'] = () => {
|
||||
$mdBottomSheet.show({
|
||||
template: '<md-bottom-sheet>Hello!</md-bottom-sheet>'
|
||||
@@ -37,17 +37,23 @@ myApp.controller('BottomSheetController', ($scope: ng.IScope, $mdBottomSheet: ng
|
||||
$scope['cancelBottomSheet'] = $mdBottomSheet.cancel.bind($mdBottomSheet, 'cancel');
|
||||
});
|
||||
|
||||
myApp.controller('DialogController', ($scope: ng.IScope, $mdDialog: ng.material.MDDialogService) => {
|
||||
myApp.controller('DialogController', ($scope: ng.IScope, $mdDialog: ng.material.IDialogService) => {
|
||||
$scope['openDialog'] = () => {
|
||||
$mdDialog.show({
|
||||
template: '<md-dialog>Hello!</md-dialog>'
|
||||
});
|
||||
};
|
||||
$scope['alertDialog'] = () => {
|
||||
$mdDialog.show($mdDialog.alert().content('Alert!'));
|
||||
$mdDialog.show($mdDialog.alert().textContent('Alert!'));
|
||||
};
|
||||
$scope['alertDialog'] = () => {
|
||||
$mdDialog.show($mdDialog.alert().htmlContent('<span>Alert!</span>'));
|
||||
};
|
||||
$scope['confirmDialog'] = () => {
|
||||
$mdDialog.show($mdDialog.confirm().content('Confirm!'));
|
||||
$mdDialog.show($mdDialog.confirm().textContent('Confirm!'));
|
||||
};
|
||||
$scope['confirmDialog'] = () => {
|
||||
$mdDialog.show($mdDialog.confirm().htmlContent('<span>Confirm!</span>'));
|
||||
};
|
||||
$scope['hideDialog'] = $mdDialog.hide.bind($mdDialog, 'hide');
|
||||
$scope['cancelDialog'] = $mdDialog.cancel.bind($mdDialog, 'cancel');
|
||||
@@ -55,8 +61,8 @@ myApp.controller('DialogController', ($scope: ng.IScope, $mdDialog: ng.material.
|
||||
|
||||
class IconDirective implements ng.IDirective {
|
||||
|
||||
private $mdIcon: ng.material.MDIcon;
|
||||
constructor($mdIcon: ng.material.MDIcon) {
|
||||
private $mdIcon: ng.material.IIcon;
|
||||
constructor($mdIcon: ng.material.IIcon) {
|
||||
this.$mdIcon = $mdIcon;
|
||||
}
|
||||
|
||||
@@ -69,9 +75,9 @@ class IconDirective implements ng.IDirective {
|
||||
});
|
||||
}
|
||||
}
|
||||
myApp.directive('icon-directive', ($mdIcon: ng.material.MDIcon) => new IconDirective($mdIcon));
|
||||
myApp.directive('icon-directive', ($mdIcon: ng.material.IIcon) => new IconDirective($mdIcon));
|
||||
|
||||
myApp.controller('MediaController', ($scope: ng.IScope, $mdMedia: ng.material.MDMedia) => {
|
||||
myApp.controller('MediaController', ($scope: ng.IScope, $mdMedia: ng.material.IMedia) => {
|
||||
$scope.$watch(() => $mdMedia('lg'), (big: boolean) => {
|
||||
$scope['bigScreen'] = big;
|
||||
});
|
||||
@@ -80,7 +86,7 @@ myApp.controller('MediaController', ($scope: ng.IScope, $mdMedia: ng.material.MD
|
||||
$scope['anotherCustom'] = $mdMedia('max-width: 300px');
|
||||
});
|
||||
|
||||
myApp.controller('SidenavController', ($scope: ng.IScope, $mdSidenav: ng.material.MDSidenavService) => {
|
||||
myApp.controller('SidenavController', ($scope: ng.IScope, $mdSidenav: ng.material.ISidenavService) => {
|
||||
var componentId = 'left';
|
||||
$scope['toggle'] = () => $mdSidenav(componentId).toggle();
|
||||
$scope['open'] = () => $mdSidenav(componentId).open();
|
||||
@@ -89,6 +95,6 @@ myApp.controller('SidenavController', ($scope: ng.IScope, $mdSidenav: ng.materia
|
||||
$scope['isLockedOpen'] = $mdSidenav(componentId).isLockedOpen();
|
||||
});
|
||||
|
||||
myApp.controller('ToastController', ($scope: ng.IScope, $mdToast: ng.material.MDToastService) => {
|
||||
$scope['openToast'] = () => $mdToast.show($mdToast.simple().content('Hello!'));
|
||||
});
|
||||
myApp.controller('ToastController', ($scope: ng.IScope, $mdToast: ng.material.IToastService) => {
|
||||
$scope['openToast'] = () => $mdToast.show($mdToast.simple().textContent('Hello!'));
|
||||
});
|
||||
|
||||
+127
-82
@@ -1,4 +1,4 @@
|
||||
// Type definitions for Angular Material 0.8.3+ (ng.material module)
|
||||
// Type definitions for Angular Material 1.0.0-rc5+ (angular.material module)
|
||||
// Project: https://github.com/angular/material
|
||||
// Definitions by: Matt Traynham <https://github.com/mtraynham>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
@@ -6,126 +6,155 @@
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
declare module angular.material {
|
||||
|
||||
interface MDBottomSheetOptions {
|
||||
interface IBottomSheetOptions {
|
||||
templateUrl?: string;
|
||||
template?: string;
|
||||
controller?: any;
|
||||
scope?: angular.IScope; // default: new child scope
|
||||
preserveScope?: boolean; // default: false
|
||||
controller?: string|Function;
|
||||
locals?: {[index: string]: any};
|
||||
targetEvent?: any;
|
||||
resolve?: {[index: string]: ng.IPromise<any>}
|
||||
targetEvent?: MouseEvent;
|
||||
resolve?: {[index: string]: angular.IPromise<any>}
|
||||
controllerAs?: string;
|
||||
parent?: Element;
|
||||
disableParentScroll?: boolean;
|
||||
parent?: string|Element|JQuery; // default: root node
|
||||
disableParentScroll?: boolean; // default: true
|
||||
}
|
||||
|
||||
interface MDBottomSheetService {
|
||||
show(options: MDBottomSheetOptions): ng.IPromise<any>;
|
||||
interface IBottomSheetService {
|
||||
show(options: IBottomSheetOptions): angular.IPromise<any>;
|
||||
hide(response?: any): void;
|
||||
cancel(response?: any): void;
|
||||
}
|
||||
|
||||
interface MDPresetDialog<T> {
|
||||
interface IPresetDialog<T> {
|
||||
title(title: string): T;
|
||||
content(content: string): T;
|
||||
ok(content: string): T;
|
||||
textContent(textContent: string): T;
|
||||
htmlContent(htmlContent: string): T;
|
||||
ok(ok: string): T;
|
||||
theme(theme: string): T;
|
||||
templateUrl(templateUrl?: string): T;
|
||||
template(template?: string): T;
|
||||
targetEvent(targetEvent?: MouseEvent): T;
|
||||
scope(scope?: angular.IScope): T; // default: new child scope
|
||||
preserveScope(preserveScope?: boolean): T; // default: false
|
||||
disableParentScroll(disableParentScroll?: boolean): T; // default: true
|
||||
hasBackdrop(hasBackdrop?: boolean): T; // default: true
|
||||
clickOutsideToClose(clickOutsideToClose?: boolean): T; // default: false
|
||||
escapeToClose(escapeToClose?: boolean): T; // default: true
|
||||
focusOnOpen(focusOnOpen?: boolean): T; // default: true
|
||||
controller(controller?: string|Function): T;
|
||||
locals(locals?: {[index: string]: any}): T;
|
||||
bindToController(bindToController?: boolean): T; // default: false
|
||||
resolve(resolve?: {[index: string]: angular.IPromise<any>}): T;
|
||||
controllerAs(controllerAs?: string): T;
|
||||
parent(parent?: string|Element|JQuery): T; // default: root node
|
||||
onComplete(onComplete?: Function): T;
|
||||
ariaLabel(ariaLabel: string): T;
|
||||
}
|
||||
|
||||
interface MDAlertDialog extends MDPresetDialog<MDAlertDialog> {
|
||||
interface IAlertDialog extends IPresetDialog<IAlertDialog> {
|
||||
}
|
||||
|
||||
interface MDConfirmDialog extends MDPresetDialog<MDConfirmDialog> {
|
||||
cancel(reason?: string): MDConfirmDialog;
|
||||
interface IConfirmDialog extends IPresetDialog<IConfirmDialog> {
|
||||
cancel(cancel: string): IConfirmDialog;
|
||||
}
|
||||
|
||||
interface MDDialogOptions {
|
||||
interface IDialogOptions {
|
||||
templateUrl?: string;
|
||||
template?: string;
|
||||
domClickEvent?: any;
|
||||
disableParentScroll?: boolean;
|
||||
clickOutsideToClose?: boolean;
|
||||
hasBackdrop?: boolean;
|
||||
escapeToClose?: boolean;
|
||||
controller?: any;
|
||||
targetEvent?: MouseEvent;
|
||||
scope?: angular.IScope; // default: new child scope
|
||||
preserveScope?: boolean; // default: false
|
||||
disableParentScroll?: boolean; // default: true
|
||||
hasBackdrop?: boolean // default: true
|
||||
clickOutsideToClose?: boolean; // default: false
|
||||
escapeToClose?: boolean; // default: true
|
||||
focusOnOpen?: boolean; // default: true
|
||||
controller?: string|Function;
|
||||
locals?: {[index: string]: any};
|
||||
bindToController?: boolean;
|
||||
resolve?: {[index: string]: ng.IPromise<any>}
|
||||
bindToController?: boolean; // default: false
|
||||
resolve?: {[index: string]: angular.IPromise<any>}
|
||||
controllerAs?: string;
|
||||
parent?: Element;
|
||||
parent?: string|Element|JQuery; // default: root node
|
||||
onComplete?: Function;
|
||||
}
|
||||
|
||||
interface MDDialogService {
|
||||
show(dialog: MDDialogOptions|MDPresetDialog<any>): ng.IPromise<any>;
|
||||
confirm(): MDConfirmDialog;
|
||||
alert(): MDAlertDialog;
|
||||
interface IDialogService {
|
||||
show(dialog: IDialogOptions|IAlertDialog|IConfirmDialog): angular.IPromise<any>;
|
||||
confirm(): IConfirmDialog;
|
||||
alert(): IAlertDialog;
|
||||
hide(response?: any): void;
|
||||
cancel(response?: any): void;
|
||||
}
|
||||
|
||||
interface MDIcon {
|
||||
(path: string): ng.IPromise<Element>;
|
||||
interface IIcon {
|
||||
(id: string): angular.IPromise<Element>; // id is a unique ID or URL
|
||||
}
|
||||
|
||||
interface MDIconProvider {
|
||||
icon(id: string, url: string, iconSize?: string): MDIconProvider;
|
||||
iconSet(id: string, url: string, iconSize?: string): MDIconProvider;
|
||||
defaultIconSet(url: string, iconSize?: string): MDIconProvider;
|
||||
defaultIconSize(iconSize: string): MDIconProvider;
|
||||
interface IIconProvider {
|
||||
icon(id: string, url: string, viewBoxSize?: number): IIconProvider; // viewBoxSize default: 24
|
||||
iconSet(id: string, url: string, viewBoxSize?: number): IIconProvider; // viewBoxSize default: 24
|
||||
defaultIconSet(url: string, viewBoxSize?: number): IIconProvider; // viewBoxSize default: 24
|
||||
defaultViewBoxSize(viewBoxSize: number): IIconProvider; // default: 24
|
||||
defaultFontSet(name: string): IIconProvider;
|
||||
}
|
||||
|
||||
interface MDMedia {
|
||||
interface IMedia {
|
||||
(media: string): boolean;
|
||||
}
|
||||
|
||||
interface MDSidenavObject {
|
||||
toggle(): void;
|
||||
open(): void;
|
||||
close(): void;
|
||||
interface ISidenavObject {
|
||||
toggle(): angular.IPromise<void>;
|
||||
open(): angular.IPromise<void>;
|
||||
close(): angular.IPromise<void>;
|
||||
isOpen(): boolean;
|
||||
isLockedOpen(): boolean;
|
||||
}
|
||||
|
||||
interface MDSidenavService {
|
||||
(component: string): MDSidenavObject;
|
||||
interface ISidenavService {
|
||||
(component: string): ISidenavObject;
|
||||
}
|
||||
|
||||
interface MDToastPreset<T> {
|
||||
content(content: string): T;
|
||||
interface IToastPreset<T> {
|
||||
textContent(content: string): T;
|
||||
action(action: string): T;
|
||||
highlightAction(highlightAction: boolean): T;
|
||||
capsule(capsule: boolean): T;
|
||||
theme(theme: string): T;
|
||||
hideDelay(delay: number): T;
|
||||
position(position: string): T;
|
||||
parent(parent?: string|Element|JQuery): T; // default: root node
|
||||
}
|
||||
|
||||
interface MDSimpleToastPreset extends MDToastPreset<MDSimpleToastPreset> {
|
||||
interface ISimpleToastPreset extends IToastPreset<ISimpleToastPreset> {
|
||||
}
|
||||
|
||||
interface MDToastOptions {
|
||||
interface IToastOptions {
|
||||
templateUrl?: string;
|
||||
template?: string;
|
||||
hideDelay?: number;
|
||||
position?: string;
|
||||
controller?: any;
|
||||
scope?: angular.IScope; // default: new child scope
|
||||
preserveScope?: boolean; // default: false
|
||||
hideDelay?: number; // default (ms): 3000
|
||||
position?: string; // any combination of 'bottom'/'left'/'top'/'right'/'fit'; default: 'bottom left'
|
||||
controller?: string|Function;
|
||||
locals?: {[index: string]: any};
|
||||
bindToController?: boolean;
|
||||
resolve?: {[index: string]: ng.IPromise<any>}
|
||||
bindToController?: boolean; // default: false
|
||||
resolve?: {[index: string]: angular.IPromise<any>}
|
||||
controllerAs?: string;
|
||||
parent?: Element;
|
||||
parent?: string|Element|JQuery; // default: root node
|
||||
}
|
||||
|
||||
interface MDToastService {
|
||||
show(optionsOrPreset: MDToastOptions|MDToastPreset<any>): ng.IPromise<any>;
|
||||
showSimple(): ng.IPromise<any>;
|
||||
simple(): MDSimpleToastPreset;
|
||||
build(): MDToastPreset<any>;
|
||||
interface IToastService {
|
||||
show(optionsOrPreset: IToastOptions|IToastPreset<any>): angular.IPromise<any>;
|
||||
showSimple(content: string): angular.IPromise<any>;
|
||||
simple(): ISimpleToastPreset;
|
||||
build(): IToastPreset<any>;
|
||||
updateContent(): void;
|
||||
hide(response?: any): void;
|
||||
cancel(response?: any): void;
|
||||
}
|
||||
|
||||
interface MDPalette {
|
||||
interface IPalette {
|
||||
0?: string;
|
||||
50?: string;
|
||||
100?: string;
|
||||
@@ -142,30 +171,30 @@ declare module angular.material {
|
||||
A400?: string;
|
||||
A700?: string;
|
||||
contrastDefaultColor?: string;
|
||||
contrastDarkColors?: string;
|
||||
contrastStrongLightColors?: string;
|
||||
contrastDarkColors?: string|string[];
|
||||
contrastLightColors?: string|string[];
|
||||
}
|
||||
|
||||
interface MDThemeHues {
|
||||
interface IThemeHues {
|
||||
default?: string;
|
||||
'hue-1'?: string;
|
||||
'hue-2'?: string;
|
||||
'hue-3'?: string;
|
||||
}
|
||||
|
||||
interface MDThemePalette {
|
||||
interface IThemePalette {
|
||||
name: string;
|
||||
hues: MDThemeHues;
|
||||
hues: IThemeHues;
|
||||
}
|
||||
|
||||
interface MDThemeColors {
|
||||
accent: MDThemePalette;
|
||||
background: MDThemePalette;
|
||||
primary: MDThemePalette;
|
||||
warn: MDThemePalette;
|
||||
interface IThemeColors {
|
||||
accent: IThemePalette;
|
||||
background: IThemePalette;
|
||||
primary: IThemePalette;
|
||||
warn: IThemePalette;
|
||||
}
|
||||
|
||||
interface MDThemeGrayScalePalette {
|
||||
interface IThemeGrayScalePalette {
|
||||
1: string;
|
||||
2: string;
|
||||
3: string;
|
||||
@@ -173,23 +202,39 @@ declare module angular.material {
|
||||
name: string;
|
||||
}
|
||||
|
||||
interface MDTheme {
|
||||
interface ITheme {
|
||||
name: string;
|
||||
colors: MDThemeColors;
|
||||
foregroundPalette: MDThemeGrayScalePalette;
|
||||
isDark: boolean;
|
||||
colors: IThemeColors;
|
||||
foregroundPalette: IThemeGrayScalePalette;
|
||||
foregroundShadow: string;
|
||||
accentPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
primaryPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
warnPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
backgroundPalette(name: string, hues?: MDThemeHues): MDTheme;
|
||||
dark(isDark?: boolean): MDTheme;
|
||||
accentPalette(name: string, hues?: IThemeHues): ITheme;
|
||||
primaryPalette(name: string, hues?: IThemeHues): ITheme;
|
||||
warnPalette(name: string, hues?: IThemeHues): ITheme;
|
||||
backgroundPalette(name: string, hues?: IThemeHues): ITheme;
|
||||
dark(isDark?: boolean): ITheme;
|
||||
}
|
||||
|
||||
interface MDThemingProvider {
|
||||
theme(name: string, inheritFrom?: string): MDTheme;
|
||||
definePalette(name: string, palette: MDPalette): MDThemingProvider;
|
||||
extendPalette(name: string, palette: MDPalette): MDPalette;
|
||||
interface IThemingProvider {
|
||||
theme(name: string, inheritFrom?: string): ITheme;
|
||||
definePalette(name: string, palette: IPalette): IThemingProvider;
|
||||
extendPalette(name: string, palette: IPalette): IPalette;
|
||||
setDefaultTheme(theme: string): void;
|
||||
alwaysWatchTheme(alwaysWatch: boolean): void;
|
||||
}
|
||||
|
||||
interface IDateLocaleProvider {
|
||||
months: string[];
|
||||
shortMonths: string[];
|
||||
days: string[];
|
||||
shortDays: string[];
|
||||
dates: string[];
|
||||
firstDayOfWeek: number;
|
||||
parseDate(dateString: string): Date;
|
||||
formatDate(date: Date): string;
|
||||
monthHeaderFormatter(date: Date): string;
|
||||
weekNumberFormatter(weekNumber: number): string;
|
||||
msgCalendar: string;
|
||||
msgOpenCalendar: string;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,255 @@
|
||||
/// <reference path="angular-meteor.d.ts" />
|
||||
|
||||
interface ITodo {
|
||||
_id?: string;
|
||||
name: string;
|
||||
public?: boolean;
|
||||
sticky?: boolean;
|
||||
}
|
||||
|
||||
interface TodoAngularMeteorObject extends ITodo, angular.meteor.AngularMeteorObject<ITodo> {}
|
||||
|
||||
interface CustomScope extends angular.meteor.IScope {
|
||||
sticky: boolean;
|
||||
|
||||
todos: angular.meteor.AngularMeteorCollection<ITodo>;
|
||||
stickyTodos: angular.meteor.AngularMeteorCollection<ITodo>;
|
||||
notAutoTodos: angular.meteor.AngularMeteorCollection<ITodo>;
|
||||
|
||||
todo: ITodo;
|
||||
todoNotAuto: TodoAngularMeteorObject;
|
||||
todoSubscribed: TodoAngularMeteorObject;
|
||||
|
||||
save: (todo: ITodo) => void;
|
||||
saveAll: () =>void;
|
||||
autoSave: (todo: ITodo) => void;
|
||||
remove: (todoId: string) => void;
|
||||
removeAll: () => void;
|
||||
removeAuto: (todo: ITodo) => void;
|
||||
toSticky: (todo: ITodo) => void;
|
||||
}
|
||||
|
||||
var Todos = new Mongo.Collection<ITodo>('todos');
|
||||
|
||||
var app = angular.module('angularMeteorTestApp');
|
||||
|
||||
app.controller("mainCtrl", ['$scope', '$meteor', ($scope: CustomScope, $meteor: angular.meteor.IMeteorService) => {
|
||||
// Bind all the todos to $scope.todos
|
||||
$scope.todos = $meteor.collection(Todos);
|
||||
|
||||
$scope.sticky = true;
|
||||
// Bind all sticky todos to $scope.stickyTodos
|
||||
// Binds the query to $scope.sticky so that if it changes, Meteor will re-run the query and bind it
|
||||
// to $scope.stickyTodos
|
||||
$scope.stickyTodos = $meteor.collection<ITodo>(function(){
|
||||
return Todos.find({sticky: $scope.getReactively('sticky')});
|
||||
});
|
||||
|
||||
// Bind without auto-save all todos to $scope.notAutoTodos
|
||||
$scope.notAutoTodos = $meteor.collection(Todos, false).subscribe("publicTodos");
|
||||
|
||||
$scope.todoNotAuto = <TodoAngularMeteorObject>$meteor.object(Todos, 'TodoID', false);
|
||||
$scope.todoSubscribed = <TodoAngularMeteorObject>$meteor.object(Todos, 'TodoID').subscribe('todos');
|
||||
$scope.todo = $scope.todoNotAuto.getRawObject();
|
||||
$scope.todoNotAuto.reset();
|
||||
$scope.todoNotAuto.save($scope.todo).then((data) => { return data == 1; });;
|
||||
|
||||
// todo might be an object like this {text: "Learn Angular", sticky: false}
|
||||
// or an array like this:
|
||||
// [{text: "Learn Angular", sticky: false}, {text: "Hello World", sticky: true}]
|
||||
|
||||
$scope.save = function(todo) {
|
||||
$scope.notAutoTodos.save(todo);
|
||||
};
|
||||
|
||||
$scope.saveAll = function() {
|
||||
$scope.notAutoTodos.save();
|
||||
};
|
||||
|
||||
$scope.autoSave = function(todo) {
|
||||
$scope.todos.push(todo);
|
||||
};
|
||||
|
||||
// todoId might be an string like this "WhrnEez5yBRgo4yEm"
|
||||
// or an array like this ["WhrnEez5yBRgo4yEm","gH6Fa4DXA3XxQjXNS"]
|
||||
$scope.remove = function(todoId) {
|
||||
$scope.notAutoTodos.remove(todoId);
|
||||
};
|
||||
|
||||
$scope.removeAll = function() {
|
||||
$scope.notAutoTodos.remove();
|
||||
};
|
||||
|
||||
$scope.removeAuto = function(todo) {
|
||||
$scope.todos.splice( $scope.todos.indexOf(todo), 1 );
|
||||
}
|
||||
|
||||
$scope.toSticky = function(todo) {
|
||||
if (angular.isArray(todo)){
|
||||
angular.forEach(todo, function(object) {
|
||||
object.sticky = true;
|
||||
});
|
||||
} else {
|
||||
todo.sticky = true;
|
||||
}
|
||||
|
||||
$scope.stickyTodos.save(todo);
|
||||
};
|
||||
|
||||
var todoObject = {name:'first todo'};
|
||||
var todosArray = [{name:'second todo'}, {name:'third todo'}];
|
||||
var todoSecondObject = {name:'forth todo'};
|
||||
|
||||
$scope.todos.save(todoObject); // todos equals [{name:'first todo'}]
|
||||
|
||||
$scope.todos.save(todosArray); // todos equals [{name:'first todo'}, {name:'second todo'}, {name:'third todo'}]
|
||||
|
||||
$scope.todos.push(todoSecondObject); // The scope variable equals to [{name:'first todo'}, {name:'second todo'}, {name:'third todo'}, {name:'forth todo'}]
|
||||
// but the collection still equals to [{name:'first todo'}, {name:'second todo'}, {name:'third todo'}]
|
||||
|
||||
$scope.todos.save(); // Now the collection also equals to [{name:'first todo'}, {name:'second todo'}, {name:'third todo'}, {name:'forth todo'}]
|
||||
|
||||
$scope.todos.remove('firstTodoId'); // scope and collection equals to [{name:'second todo'}, {name:'third todo'}, {name:'forth todo'}]
|
||||
|
||||
var todoIdsArray = ['secondTodoId', 'thirdTodoId'];
|
||||
$scope.todos.remove(todoIdsArray); // removes everything matches the array of IDs both in scope and in collection
|
||||
|
||||
$scope.todos.pop(); // removes only in scope
|
||||
|
||||
$scope.todos.remove(); // syncs also in Meteor collection
|
||||
|
||||
// Subscribe ->
|
||||
|
||||
$meteor.subscribe('todos').then((subscriptionHandle) => {
|
||||
// Bind all the todos to $scope.todos
|
||||
$scope.todos = $meteor.collection(Todos);
|
||||
|
||||
console.log($scope.todos + ' is ready');
|
||||
|
||||
// You can use the subscription handle to stop the subscription if you want
|
||||
subscriptionHandle.stop();
|
||||
});
|
||||
|
||||
$scope.subscribe('todos').then((subscriptionHandle) => {
|
||||
// Bind all the todos to $scope.books
|
||||
$scope.todos = $meteor.collection(Todos);
|
||||
|
||||
console.log($scope.todos + ' is ready');
|
||||
|
||||
// No need to stop the subscription, it will automatically close on scope destroy
|
||||
});
|
||||
|
||||
$meteor.call<ITodo>('subscribe', $scope.todo._id, $scope.currentUser._id).then((data) => {
|
||||
// Handle success
|
||||
console.log('success subscribing', data.name);
|
||||
}, (err) => {
|
||||
// Handle error
|
||||
console.log('failed', err);
|
||||
});
|
||||
|
||||
if (!$scope.loggingIn) {
|
||||
$meteor.waitForUser();
|
||||
|
||||
$meteor.requireUser();
|
||||
|
||||
$meteor.requireValidUser(user => {
|
||||
return user.username == 'admin';
|
||||
});
|
||||
|
||||
$meteor.loginWithPassword('user', 'password').then(() => {
|
||||
console.log('Login success');
|
||||
}, err => {
|
||||
console.log('Login error - ', err);
|
||||
});
|
||||
|
||||
$meteor.createUser({
|
||||
username:'moma',
|
||||
email:'example@gmail.com',
|
||||
password: 'Bksd@asdf',
|
||||
profile: {expertize: 'Developer'}
|
||||
}).then(() => {
|
||||
console.log('Login success');
|
||||
}, err => {
|
||||
console.log('Login error - ', err);
|
||||
});
|
||||
|
||||
$meteor.changePassword('old', 'new232f3').then(() => {
|
||||
console.log('Change password success');
|
||||
}, err => {
|
||||
console.log('Error changing password - ', err);
|
||||
});
|
||||
|
||||
$meteor.forgotPassword({email: 'sample@gmail.com'}).then(() => {
|
||||
console.log('Success sending forgot password email');
|
||||
}, err => {
|
||||
console.log('Error sending forgot password email - ', err);
|
||||
});
|
||||
|
||||
$meteor.resetPassword('tokenID', 'new232f3').then(() => {
|
||||
console.log('Reset password success');
|
||||
}, err => {
|
||||
console.log('Error resetting password - ', err);
|
||||
});
|
||||
|
||||
$meteor.verifyEmail('tokenID').then(() => {
|
||||
console.log('Success verifying password ');
|
||||
}, err => {
|
||||
console.log('Error verifying password - ', err);
|
||||
});
|
||||
|
||||
$meteor.logout().then(() => {
|
||||
console.log('Logout success');
|
||||
}, err => {
|
||||
console.log('logout error - ', err);
|
||||
});
|
||||
|
||||
$meteor.logoutOtherClients().then(() => {
|
||||
console.log('Logout success');
|
||||
}, err => {
|
||||
console.log('logout error - ', err);
|
||||
});
|
||||
|
||||
var loginWithOptions = {requestPermissions: ['email']};
|
||||
|
||||
$meteor.loginWithFacebook({requestPermissions: ['email']}).then(() => {
|
||||
console.log('Login success');
|
||||
}, err => {
|
||||
console.log('Login error - ', err);
|
||||
});
|
||||
$meteor.loginWithGithub({requestPermissions: ['email']}).then(() => {
|
||||
console.log('Login success');
|
||||
}, err => {
|
||||
console.log('Login error - ', err);
|
||||
});
|
||||
$meteor.loginWithGoogle({requestPermissions: ['email']}).then(() => {
|
||||
console.log('Login success');
|
||||
}, err => {
|
||||
console.log('Login error - ', err);
|
||||
});
|
||||
$meteor.loginWithMeetup({requestPermissions: ['email']}).then(() => {
|
||||
console.log('Login success');
|
||||
}, err => {
|
||||
console.log('Login error - ', err);
|
||||
});
|
||||
$meteor.loginWithTwitter({requestPermissions: ['email']}).then(() => {
|
||||
console.log('Login success');
|
||||
}, err => {
|
||||
console.log('Login error - ', err);
|
||||
});
|
||||
$meteor.loginWithWeibo({requestPermissions: ['email']}).then(() => {
|
||||
console.log('Login success');
|
||||
}, err => {
|
||||
console.log('Login error - ', err);
|
||||
});
|
||||
}
|
||||
|
||||
$meteor.autorun($scope, () => { console.log("Aurorun triggered."); });
|
||||
$meteor.getCollectionByName('collectionName');
|
||||
|
||||
// requires meteor add mdg:camera
|
||||
$meteor.getPicture().then(function(data){
|
||||
$scope['picture'] = data;
|
||||
});
|
||||
|
||||
$meteor.session('counter').bind($scope, 'counter');
|
||||
}]);
|
||||
Vendored
+330
@@ -0,0 +1,330 @@
|
||||
// Type definitions for Angular JS Meteor v0.8.8 (angular.meteor module)
|
||||
// Project: https://github.com/Urigo/angular-meteor
|
||||
// Definitions by: Peter Grman <https://github.com/pgrm>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../meteor/meteor.d.ts" />
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module angular.meteor {
|
||||
interface IRootScopeService extends angular.IRootScopeService {
|
||||
/**
|
||||
* The current logged in user and it's data. it is null if the user is not logged in. A reactive data source.
|
||||
*/
|
||||
currentUser: Meteor.User;
|
||||
|
||||
/**
|
||||
* True if a login method (such as Meteor.loginWithPassword, Meteor.loginWithFacebook, or Accounts.createUser) is currently in progress.
|
||||
* A reactive data source. Can be use to display animation while user is logging in.
|
||||
*/
|
||||
loggingIn: boolean;
|
||||
}
|
||||
|
||||
interface IScope extends angular.IScope, IRootScopeService {
|
||||
/**
|
||||
* A method to get a $scope variable and watch it reactivly
|
||||
*
|
||||
* @param scopeVariableName - The name of the scope's variable to bind to
|
||||
* @param [objectEquality=false] - Watch the object equality using angular.equals instead of comparing for reference equality, deeper watch but also slower
|
||||
*/
|
||||
getReactively(scopeVariableName: string, objectEquality?: boolean): ReactiveResult;
|
||||
|
||||
/**
|
||||
* A service which is a wrapper for Meteor.subscribe. It subscribes to a Meteor.publish method in the client and returns a AngularJS promise when ready.
|
||||
* Calling $scope.subscribe will automatically stop the subscription when the scope is destroyed.
|
||||
*
|
||||
* @param name - Name of the subscription. Matches the name of the server's publish() call.
|
||||
* @param publisherArguments - Optional arguments passed to publisher function on server.
|
||||
*
|
||||
* @return The promise solved successfully when subscription is ready. The success promise holds the subscription handle.
|
||||
*/
|
||||
subscribe(name: string, ...publisherArguments: any[]): angular.IPromise<Meteor.SubscriptionHandle>;
|
||||
}
|
||||
|
||||
/**
|
||||
* $meteor in angularjs
|
||||
*/
|
||||
interface IMeteorService {
|
||||
/**
|
||||
* A service that wraps the Meteor collections to enable reactivity within AngularJS.
|
||||
*
|
||||
* @param collection - A Meteor Collection or a reactive function to bind to.
|
||||
* - Reactive function can be used with $scope.getReactively to add $scope variable as reactive variable to the cursor.
|
||||
* @param [autoClientSave=true] - By default, changes in the Angular collection will automatically update the Meteor collection.
|
||||
* - However if set to false, changes in the client won't be automatically propagated back to the Meteor collection.
|
||||
*/
|
||||
collection<T>(collection: Mongo.Collection<T>|ReactiveResult|Function|(()=>T), autoClientSave?: boolean): AngularMeteorCollection<T>;
|
||||
|
||||
/**
|
||||
* A service that wraps the Meteor collections to enable reactivity within AngularJS.
|
||||
*
|
||||
* @param collection - A Meteor Collection or a reactive function to bind to.
|
||||
* - Reactive function can be used with $scope.getReactively to add $scope variable as reactive variable to the cursor.
|
||||
* @param [autoClientSave=true] - By default, changes in the Angular collection will automatically update the Meteor collection.
|
||||
* - However if set to false, changes in the client won't be automatically propagated back to the Meteor collection.
|
||||
* @param [updateCollection] - A collection object which will be used for updates (insert, update, delete).
|
||||
*/
|
||||
collection<T, U>(collection: Mongo.Collection<T>|ReactiveResult|Function|(()=>T), autoClientSave: boolean, updateCollection: Mongo.Collection<U>): AngularMeteorCollection2<T, U>;
|
||||
|
||||
/**
|
||||
* A service that wraps a Meteor object to enable reactivity within AngularJS.
|
||||
* Finds the first document that matches the selector, as ordered by sort and skip options. Wraps collection.findOne
|
||||
*
|
||||
* @param collection - A Meteor Collection to bind to.
|
||||
* @param selector - A query describing the documents to find or just the ID of the document.
|
||||
* - $meteor.object will find the first document that matches the selector,
|
||||
* - as ordered by sort and skip options, exactly like Meteor's collection.findOne
|
||||
* @param [autoClientSave=true] - By default, changes in the Angular object will automatically update the Meteor object.
|
||||
* - However if set to false, changes in the client won't be automatically propagated back to the Meteor object.
|
||||
*/
|
||||
object<T>(collection: Mongo.Collection<T>, selector: Mongo.Selector|Mongo.ObjectID|string, autoClientSave?: boolean): AngularMeteorObject<T>;
|
||||
|
||||
/**
|
||||
* A service which is a wrapper for Meteor.subscribe. It subscribes to a Meteor.publish method in the client and returns a AngularJS promise when ready.
|
||||
*
|
||||
* @param name - Name of the subscription. Matches the name of the server's publish() call.
|
||||
* @param publisherArguments - Optional arguments passed to publisher function on server.
|
||||
*
|
||||
* @return The promise solved successfully when subscription is ready. The success promise holds the subscription handle.
|
||||
*/
|
||||
subscribe(name: string, ...publisherArguments: any[]): angular.IPromise<Meteor.SubscriptionHandle>;
|
||||
|
||||
/**
|
||||
* A service service which wraps up Meteor.methods with AngularJS promises.
|
||||
*
|
||||
* @param name - Name of method to invoke
|
||||
* @param methodArguments - Optional method arguments
|
||||
*
|
||||
* @return The promise solves successfully with the return value of the method or return reject with the error from the method.
|
||||
*/
|
||||
call<T>(name: string, ...methodArguments: any[]): angular.IPromise<T>;
|
||||
|
||||
// User Authentication BEGIN ->
|
||||
|
||||
/**
|
||||
* Returns a promise fulfilled with the currentUser when the user subscription is ready.
|
||||
* This is useful when you want to grab the current user before the route is rendered.
|
||||
* If there is no logged in user, it will return null.
|
||||
* See the “Authentication with Routers” section of our tutorial for more information and a full example.
|
||||
*/
|
||||
waitForUser(): angular.IPromise<Meteor.User>;
|
||||
|
||||
/**
|
||||
* Resolves the promise successfully if a user is authenticated and rejects otherwise.
|
||||
* This is useful in cases where you want to require a route to have an authenticated user.
|
||||
* You can catch the rejected promise and redirect the unauthenticated user to a different page, such as the login page.
|
||||
* See the “Authentication with Routers” section of our tutorial for more information and a full example.
|
||||
*/
|
||||
requireUser(): angular.IPromise<Meteor.User>;
|
||||
|
||||
/**
|
||||
* Resolves the promise successfully if a user is authenticated and the validatorFn returns true; rejects otherwise.
|
||||
* This is useful in cases where you want to require a route to have an authenticated user and do extra validation like the user's role or group.
|
||||
* You can catch the rejected promise and redirect the unauthenticated user to a different page, such as the login page.
|
||||
* See the “Authentication with Routers” section of our tutorial for more information and a full example.
|
||||
*
|
||||
* The mandatory validator function will be called with the authenticated user as the single param and it's expected to return true in order to resolve.
|
||||
* If it returns a string, the promise will be rejected using said string as the reason.
|
||||
* Any other return (false, null, undefined) will be rejected with the default "FORBIDDEN" reason.
|
||||
*/
|
||||
requireValidUser(validatorFn: (user: Meteor.User) => boolean|string): angular.IPromise<Meteor.User>;
|
||||
|
||||
/**
|
||||
* Log the user in with a password.
|
||||
*
|
||||
* @param user - Either a string interpreted as a username or an email; or an object with a single key: email, username or id.
|
||||
* @param password - The user's password.
|
||||
*/
|
||||
loginWithPassword(user: string|{email: string}|{username: string}|{id: string}, password: string): angular.IPromise<void>;
|
||||
|
||||
/**
|
||||
* Create a new user. More information: http://docs.meteor.com/#/full/accounts_createuser
|
||||
*
|
||||
* @param options.username - A unique name for this user. Either this, or email is required.
|
||||
* @param options.email - The user's email address. Either this, or username is required.
|
||||
* @param options.password - The user's password. This is not sent in plain text over the wire.
|
||||
* @param options.profile - The user's profile, typically including the name field.
|
||||
*/
|
||||
createUser(options: {username?: string; email?: string; password: string; profile?: Object}): angular.IPromise<void>;
|
||||
|
||||
/**
|
||||
* Change the current user's password. Must be logged in.
|
||||
*
|
||||
* @param oldPassword - The user's current password. This is not sent in plain text over the wire.
|
||||
* @param newPassword - A new password for the user. This is not sent in plain text over the wire.
|
||||
*/
|
||||
changePassword(oldPassword: string, newPassword: string): angular.IPromise<void>;
|
||||
|
||||
/**
|
||||
* Request a forgot password email.
|
||||
*
|
||||
* @param options.email - The email address to send a password reset link.
|
||||
*/
|
||||
forgotPassword(options: {email: string}): angular.IPromise<void>;
|
||||
|
||||
/**
|
||||
* Reset the password for a user using a token received in email. Logs the user in afterwards.
|
||||
*
|
||||
* @param token - The token retrieved from the reset password URL.
|
||||
* @param newPassword - A new password for the user. This is not sent in plain text over the wire.
|
||||
*/
|
||||
resetPassword(token: string, newPassword: string): angular.IPromise<void>;
|
||||
|
||||
/**
|
||||
* Marks the user's email address as verified. Logs the user in afterwards.
|
||||
*
|
||||
* @param token - The token retrieved from the reset password URL.
|
||||
*/
|
||||
verifyEmail(token: string): angular.IPromise<void>;
|
||||
|
||||
loginWithFacebook: ILoginWithExternalService;
|
||||
loginWithTwitter: ILoginWithExternalService;
|
||||
loginWithGoogle: ILoginWithExternalService;
|
||||
loginWithGithub: ILoginWithExternalService;
|
||||
loginWithMeetup: ILoginWithExternalService;
|
||||
loginWithWeibo: ILoginWithExternalService;
|
||||
|
||||
/**
|
||||
* Log the user out.
|
||||
*
|
||||
* @return Resolves with no arguments on success, or reject with a Error argument on failure.
|
||||
*/
|
||||
logout(): angular.IPromise<void>;
|
||||
|
||||
/**
|
||||
* Log out other clients logged in as the current user, but does not log out the client that calls this function.
|
||||
* For example, when called in a user's browser, connections in that browser remain logged in,
|
||||
* but any other browsers or DDP clients logged in as that user will be logged out.
|
||||
*
|
||||
* @return Resolves with no arguments on success, or reject with a Error argument on failure.
|
||||
*/
|
||||
logoutOtherClients(): angular.IPromise<void>;
|
||||
|
||||
// <- User Authentication END
|
||||
// $meteorUtils BEGIN ->
|
||||
|
||||
/**
|
||||
* @param scope - The AngularJS scope you use the autorun on.
|
||||
* @param fn - The function that will re-run every time a reactive variable changes inside it.
|
||||
*/
|
||||
autorun(scope: angular.IScope, fn: Function): void;
|
||||
|
||||
/**
|
||||
* @param collectionName - The name of the collection you want to get back
|
||||
*/
|
||||
getCollectionByName<T>(collectionName: string): Mongo.Collection<T>;
|
||||
|
||||
// <- $meteorUtils END
|
||||
// $meteorCamera BEGIN ->
|
||||
|
||||
/**
|
||||
* A helper service for taking pictures across platforms.
|
||||
* Must add mdg:camera package to use! (meteor add mdg:camera)
|
||||
*
|
||||
* @param [options] - options is an optional argument that is an Object with the following possible keys:
|
||||
* @param options.width - An integer that specifies the minimum width of the returned photo.
|
||||
* @param options.height - An integer that specifies the minimum height of the returned photo.
|
||||
* @param options.quality - A number from 0 to 100 specifying the desired quality of JPEG encoding.
|
||||
*
|
||||
* @return The promise solved successfully when the picture is taken with the data as a parameter or rejected with an error as a parameter in case of error.
|
||||
*/
|
||||
getPicture(options?: {width?: number; height?: number; quality?: number}): angular.IPromise<any>;
|
||||
|
||||
// <- $meteorCamera END
|
||||
|
||||
/**
|
||||
* A service that binds a scope variable to a Meteor Session variable.
|
||||
*
|
||||
* @param sessionKey - The name of the session variable
|
||||
* @return An object with a single function bind - to bind to that variable.
|
||||
*/
|
||||
session(sessionKey: string): {
|
||||
/**
|
||||
* @param scope - The scope the document will be bound to.
|
||||
* @param model - The name of the scope's model variable that the document will be bound to.
|
||||
*/
|
||||
bind: (scope: IScope, model: string) => void;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* An object that connects a Meteor Object to an AngularJS scope variable.
|
||||
*
|
||||
* The object contains also all the properties from the generic type T,
|
||||
* unfortunately TypeScript doesn't at the moment allow to extend a generic type (see https://github.com/Microsoft/TypeScript/issues/2225 for details and updates).
|
||||
* For a workaround, you'll need to implement an interface which will merge AngularMeteorObject<T> together with T and cast it, like this:
|
||||
*
|
||||
* interface TodoAngularMeteorObject extends ITodo, AngularMeteorObject<ITodo> { }
|
||||
* var todo = <TodoAngularMeteorObject>$meteor.object(TodoCollection, 'TodoID');
|
||||
*/
|
||||
interface AngularMeteorObject<T> {
|
||||
/**
|
||||
* @param [doc] - The doc to save to the Meteor Object. If nothing is passed, the method saves everything in the AngularMeteorObject as is.
|
||||
* - Unchanged properties will be overridden with their existing values, which may trigger hooks.
|
||||
* - If doc is passed, the method only updates the Meteor Object with the properties passed, and no other changes will be saved.
|
||||
*
|
||||
* @return Returns a promise with an error in case for an error or a number of successful docs changed in case of success.
|
||||
*/
|
||||
save(doc?: T): angular.IPromise<number>;
|
||||
|
||||
/**
|
||||
* Reset the current value of the object to the one in the server.
|
||||
*/
|
||||
reset(): void;
|
||||
|
||||
/**
|
||||
* Returns a copy of the AngularMeteorObject with all the AngularMeteor-specific internal properties removed.
|
||||
* The returned object is then safe to use as a parameter for method calls, or anywhere else where the data needs to be converted to JSON.
|
||||
*/
|
||||
getRawObject(): T;
|
||||
|
||||
/**
|
||||
* A shorten (Syntactic sugar) function for the $meteor.subscribe function.
|
||||
* Takes only one parameter and not returns a promise like $meteor.subscribe does.
|
||||
*
|
||||
* @param subscriptionName - The subscription name to subscribe to. Exactly like the first parameter in $meteor.subscribe service.
|
||||
*/
|
||||
subscribe(subscriptionName:string): AngularMeteorObject<T>;
|
||||
}
|
||||
|
||||
/**
|
||||
* An object that connects a Meteor Collection to an AngularJS scope variable
|
||||
*/
|
||||
interface AngularMeteorCollection<T> extends AngularMeteorCollection2<T, T> { }
|
||||
|
||||
/**
|
||||
* An object that connects a Meteor Collection to an AngularJS scope variable,
|
||||
* but can use a differen type for updates.
|
||||
*/
|
||||
interface AngularMeteorCollection2<T, U> extends Array<T> {
|
||||
/**
|
||||
* @param [docs] - The docs to save to the Meteor Collection.
|
||||
* - If the docs parameter is empty, the method saves everything in the AngularMeteorCollection as is.
|
||||
* - If an object is passed, the method pushes that object into the AngularMeteorCollection.
|
||||
* - If an array is passed, the method pushes all objects in the array into the AngularMeteorCollection.
|
||||
*/
|
||||
save(docs?: U|U[]): void;
|
||||
|
||||
/**
|
||||
* @param [keys] - The keys of the object to remove from the Meteor Collection.
|
||||
* - If nothing is passed, the method removes all the documents from the AngularMeteorCollection.
|
||||
* - If an object is passed, the method removes the object with that key from the AngularMeteorCollection.
|
||||
* - If an array is passed, the method removes all objects that matches the keys in the array from the AngularMeteorCollection.
|
||||
*/
|
||||
remove(keys?: U|string|number|string[]|number[]): void;
|
||||
|
||||
/**
|
||||
* A shorten (Syntactic sugar) function for the $meteor.subscribe function.
|
||||
* Takes only one parameter and not returns a promise like $meteor.subscribe does.
|
||||
*
|
||||
* @param subscriptionName - The subscription name to subscribe to. Exactly like the first parameter in $meteor.subscribe service.
|
||||
*/
|
||||
subscribe(subscriptionName:string): AngularMeteorCollection2<T, U>;
|
||||
}
|
||||
|
||||
interface ILoginWithExternalService {
|
||||
(options: Meteor.LoginWithExternalServiceOptions): angular.IPromise<void>;
|
||||
}
|
||||
|
||||
interface ReactiveResult { }
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
/// <reference path="../jquery/jquery.d.ts" />
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
/// <reference path="angular-modal.d.ts" />
|
||||
|
||||
var btfModal: angularModal.AngularModalFactory;
|
||||
|
||||
// Using template URL
|
||||
function withTemplateUrl() {
|
||||
btfModal({
|
||||
controller: 'SomeController',
|
||||
controllerAs: 'vm',
|
||||
templateUrl: 'some-template.html'
|
||||
});
|
||||
}
|
||||
|
||||
// Using template
|
||||
function withTemplate() {
|
||||
btfModal({
|
||||
controller: 'SomeController',
|
||||
controllerAs: 'vm',
|
||||
template: '<div></div>'
|
||||
});
|
||||
}
|
||||
|
||||
// Using controller function
|
||||
function withControllerAsFunction() {
|
||||
btfModal({
|
||||
controller: function () {},
|
||||
template: '<div></div>'
|
||||
})
|
||||
}
|
||||
|
||||
// Using constructor function
|
||||
function withControllerClass() {
|
||||
class TestController {
|
||||
constructor(dependency1:any, dependency2:any) {}
|
||||
}
|
||||
btfModal({
|
||||
controller: TestController,
|
||||
template: '<div></div>'
|
||||
});
|
||||
}
|
||||
|
||||
// With container as selector
|
||||
function withContainerAsString() {
|
||||
btfModal({
|
||||
template: '<div></div>',
|
||||
container: '.container'
|
||||
});
|
||||
}
|
||||
|
||||
// With container as jQuery element
|
||||
function withContainerAsJquery() {
|
||||
var container: JQuery = $('body');
|
||||
btfModal({
|
||||
template: '<div></div>',
|
||||
container: container
|
||||
});
|
||||
}
|
||||
|
||||
// With container as DOM Element
|
||||
function withContainerAsDom() {
|
||||
var container: Element = document.getElementById('container');
|
||||
btfModal({
|
||||
template: '<div></div>',
|
||||
container: container
|
||||
});
|
||||
}
|
||||
|
||||
// With container as DOM Element Array
|
||||
function withContainerAsDomArray() {
|
||||
var container: Element[] = [document.getElementById('container'), document.getElementById('container2')];
|
||||
btfModal({
|
||||
template: '<div></div>',
|
||||
container: container
|
||||
});
|
||||
}
|
||||
|
||||
// With container as function
|
||||
function withContainerAsFunction() {
|
||||
btfModal({
|
||||
template: '<div></div>',
|
||||
container: function() {}
|
||||
});
|
||||
}
|
||||
|
||||
// With container as array
|
||||
function withContainerAsArray() {
|
||||
btfModal({
|
||||
template: '<div></div>',
|
||||
container: ['1', 2]
|
||||
});
|
||||
}
|
||||
|
||||
// Calling return values
|
||||
function callingValues() {
|
||||
var modal: angularModal.AngularModal = btfModal({
|
||||
template: '<div></div>'
|
||||
});
|
||||
modal.activate().then(() => {}, () => {});
|
||||
modal.deactivate().then(() => {}, () => {});
|
||||
var isActive: boolean = modal.active();
|
||||
}
|
||||
|
||||
Vendored
+38
@@ -0,0 +1,38 @@
|
||||
// Type definitions for angular-modal 0.5.0
|
||||
// Project: https://github.com/btford/angular-modal
|
||||
// Definitions by: Paul Lessing <https://github.com/paullessing>
|
||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
/// <reference path="../jquery/jquery.d.ts" />
|
||||
|
||||
declare module angularModal {
|
||||
|
||||
type AngularModalControllerDefinition = (new (...args: any[]) => any) | Function | string; // Possible arguments to IControllerService
|
||||
|
||||
type AngularModalJQuerySelector = string | Element | Element[] | JQuery | Function | any[] | {}; // Possible arguments to IAugmentedJQueryStatic
|
||||
|
||||
interface AngularModalSettings {
|
||||
controller?: AngularModalControllerDefinition;
|
||||
controllerAs?: string;
|
||||
container?: AngularModalJQuerySelector;
|
||||
}
|
||||
|
||||
export interface AngularModalSettingsWithTemplate extends AngularModalSettings {
|
||||
template: any;
|
||||
}
|
||||
|
||||
export interface AngularModalSettingsWithTemplateUrl extends AngularModalSettings {
|
||||
templateUrl: string;
|
||||
}
|
||||
|
||||
export interface AngularModal {
|
||||
activate(): angular.IPromise<void>;
|
||||
deactivate(): angular.IPromise<void>;
|
||||
active(): boolean;
|
||||
}
|
||||
|
||||
export interface AngularModalFactory {
|
||||
(settings: AngularModalSettingsWithTemplate | AngularModalSettingsWithTemplateUrl): AngularModal;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
/// <reference path="angular-notifications.d.ts" />
|
||||
|
||||
var myapp = angular.module("myapp", ["notifications"]);
|
||||
|
||||
myapp.controller("MyController", ["$scope", "notifications",
|
||||
function ($scope:ng.IScope, notifications:angular.notifications.INotificationFactory) { // <-- Inject notifications
|
||||
|
||||
var userData = {'some': 'data', 'optional': true};
|
||||
notifications.info("Something happened", "here is the content of what happened", userData);
|
||||
|
||||
}
|
||||
]);
|
||||
@@ -0,0 +1,82 @@
|
||||
// Type definitions for angular-notifications
|
||||
// Project: https://github.com/DerekRies/angular-notifications
|
||||
// Definitions by: Tomasz Ducin <https://github.com/ducin/DefinitelyTyped>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module angular.notifications {
|
||||
|
||||
interface IAnimation {
|
||||
duration: number;
|
||||
enabled: boolean;
|
||||
}
|
||||
|
||||
interface ISettings {
|
||||
info: IAnimation;
|
||||
warning: IAnimation;
|
||||
error: IAnimation;
|
||||
success: IAnimation;
|
||||
progress: IAnimation;
|
||||
custom: IAnimation;
|
||||
details: boolean;
|
||||
localStorage: boolean;
|
||||
html5Mode: boolean;
|
||||
html5DefaultIcon: string;
|
||||
}
|
||||
|
||||
interface INotification {
|
||||
type: string;
|
||||
image: string;
|
||||
icon: string;
|
||||
title: string;
|
||||
content: string;
|
||||
timestamp: string;
|
||||
userData: string;
|
||||
}
|
||||
|
||||
interface INotificationFactory extends angular.IModule {
|
||||
|
||||
/* ========== SETTINGS RELATED METHODS =============*/
|
||||
|
||||
disableHtml5Mode(): void;
|
||||
disableType(notificationType: string): void;
|
||||
enableHtml5Mode(): void;
|
||||
enableType(notificationType: string): void;
|
||||
getSettings(): ISettings;
|
||||
toggleType(notificationType: string): void;
|
||||
toggleHtml5Mode(): void;
|
||||
requestHtml5ModePermissions(): boolean;
|
||||
|
||||
/* ============ QUERYING RELATED METHODS ============*/
|
||||
|
||||
getAll(): Array<INotification>;
|
||||
getQueue(): Array<INotification>;
|
||||
|
||||
/* ============== NOTIFICATION METHODS ==============*/
|
||||
|
||||
info(title: string): INotification;
|
||||
info(title: string, content: string): INotification;
|
||||
info(title: string, content: string, userData: any): INotification;
|
||||
error(title: string): INotification;
|
||||
error(title: string, content: string): INotification;
|
||||
error(title: string, content: string, userData: any): INotification;
|
||||
success(title: string): INotification;
|
||||
success(title: string, content: string): INotification;
|
||||
success(title: string, content: string, userData: any): INotification;
|
||||
warning(title: string): INotification;
|
||||
warning(title: string, content: string): INotification;
|
||||
warning(title: string, content: string, userData: any): INotification;
|
||||
awesomeNotify(type: string, icon: string, title: string, content: string, userData: any): INotification;
|
||||
notify(image: string, title: string, content: string, userData: any): INotification;
|
||||
makeNotification(type: string, image: string, icon: string, title: string, content: string, userData: any): INotification;
|
||||
|
||||
/* ============ PERSISTENCE METHODS ============ */
|
||||
|
||||
save(): void;
|
||||
restore(): void;
|
||||
clear(): void;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Vendored
+11
-1
@@ -1,4 +1,4 @@
|
||||
// Type definitions for angular-notify 2.0.2
|
||||
// Type definitions for angular-notify 2.5.0
|
||||
// Project: https://github.com/cgross/angular-notify
|
||||
// Definitions by: Suwato <https://github.com/Suwato/DefinitelyTyped>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
@@ -51,6 +51,11 @@ declare module angular.cgNotify {
|
||||
* Optional. Currently center and right are the only acceptable values.
|
||||
*/
|
||||
position? : string;
|
||||
|
||||
/**
|
||||
* Optional. The duration (in milliseconds) of the message. A duration of 0 will prevent the message from closing automatically.
|
||||
*/
|
||||
duration? : number;
|
||||
|
||||
/**
|
||||
* Optional. Element that contains each notification. Defaults to document.body.
|
||||
@@ -94,6 +99,11 @@ declare module angular.cgNotify {
|
||||
* The default element that contains each notification. Defaults to document.body.
|
||||
*/
|
||||
container? : any;
|
||||
|
||||
/**
|
||||
* The maximum number of total notifications that can be visible at one time. Older notifications will be closed when the maximum is reached.
|
||||
*/
|
||||
maximumOpen? : number;
|
||||
}):void;
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,208 @@
|
||||
/// <reference path="angular-odata-resources.d.ts" />
|
||||
|
||||
interface IMyResource extends OData.IResource<IMyResource> { };
|
||||
interface IMyResourceClass extends OData.IResourceClass<IMyResource> { };
|
||||
|
||||
///////////////////////////////////////
|
||||
// IActionDescriptor
|
||||
///////////////////////////////////////
|
||||
var actionDescriptor: OData.IActionDescriptor;
|
||||
|
||||
actionDescriptor.url = '/api/test-url/'
|
||||
actionDescriptor.headers = { header: 'value' };
|
||||
actionDescriptor.isArray = true;
|
||||
actionDescriptor.method = 'method action';
|
||||
actionDescriptor.params = { key: 'value' };
|
||||
|
||||
///////////////////////////////////////
|
||||
// IResourceClass
|
||||
///////////////////////////////////////
|
||||
var resourceClass: IMyResourceClass;
|
||||
var resource: IMyResource;
|
||||
var resourceArray: OData.IResourceArray<IMyResource>;
|
||||
|
||||
resource = resourceClass.delete();
|
||||
resource = resourceClass.delete({ key: 'value' });
|
||||
resource = resourceClass.delete({ key: 'value' }, function() { });
|
||||
resource = resourceClass.delete(function() { });
|
||||
resource = resourceClass.delete(function() { }, function() { });
|
||||
resource = resourceClass.delete({ key: 'value' }, { key: 'value' });
|
||||
resource = resourceClass.delete({ key: 'value' }, { key: 'value' }, function() { });
|
||||
resource = resourceClass.delete({ key: 'value' }, { key: 'value' }, function() { }, function() { });
|
||||
resource.$promise.then(function(data: IMyResource) { });
|
||||
|
||||
resource = resourceClass.get();
|
||||
resource = resourceClass.get({ key: 'value' });
|
||||
resource = resourceClass.get({ key: 'value' }, function() { });
|
||||
resource = resourceClass.get(function() { });
|
||||
resource = resourceClass.get(function() { }, function() { });
|
||||
resource = resourceClass.get({ key: 'value' }, { key: 'value' });
|
||||
resource = resourceClass.get({ key: 'value' }, { key: 'value' }, function() { });
|
||||
resource = resourceClass.get({ key: 'value' }, { key: 'value' }, function() { }, function() { });
|
||||
|
||||
resourceArray = resourceClass.query();
|
||||
resourceArray = resourceClass.query({ key: 'value' });
|
||||
resourceArray = resourceClass.query({ key: 'value' }, function() { });
|
||||
resourceArray = resourceClass.query(function() { });
|
||||
resourceArray = resourceClass.query(function() { }, function() { });
|
||||
resourceArray = resourceClass.query({ key: 'value' }, { key: 'value' });
|
||||
resourceArray = resourceClass.query({ key: 'value' }, { key: 'value' }, function() { });
|
||||
resourceArray = resourceClass.query({ key: 'value' }, { key: 'value' }, function() { }, function() { });
|
||||
resourceArray.push(resource);
|
||||
resourceArray.$promise.then(function(data: OData.IResourceArray<IMyResource>) { });
|
||||
|
||||
resource = resourceClass.remove();
|
||||
resource = resourceClass.remove({ key: 'value' });
|
||||
resource = resourceClass.remove({ key: 'value' }, function() { });
|
||||
resource = resourceClass.remove(function() { });
|
||||
resource = resourceClass.remove(function() { }, function() { });
|
||||
resource = resourceClass.remove({ key: 'value' }, { key: 'value' });
|
||||
resource = resourceClass.remove({ key: 'value' }, { key: 'value' }, function() { });
|
||||
resource = resourceClass.remove({ key: 'value' }, { key: 'value' }, function() { }, function() { });
|
||||
|
||||
resource = resourceClass.save();
|
||||
resource = resourceClass.save({ key: 'value' });
|
||||
resource = resourceClass.save({ key: 'value' }, function() { });
|
||||
resource = resourceClass.save(function() { });
|
||||
resource = resourceClass.save(function() { }, function() { });
|
||||
resource = resourceClass.save({ key: 'value' }, { key: 'value' });
|
||||
resource = resourceClass.save({ key: 'value' }, { key: 'value' }, function() { });
|
||||
resource = resourceClass.save({ key: 'value' }, { key: 'value' }, function() { }, function() { });
|
||||
|
||||
///////////////////////////////////////
|
||||
// IResource
|
||||
///////////////////////////////////////
|
||||
|
||||
var promise: angular.IPromise<IMyResource>;
|
||||
var arrayPromise: angular.IPromise<IMyResource[]>;
|
||||
|
||||
promise = resource.$delete();
|
||||
promise = resource.$delete({ key: 'value' });
|
||||
promise = resource.$delete({ key: 'value' }, function() { });
|
||||
promise = resource.$delete(function() { });
|
||||
promise = resource.$delete(function() { }, function() { });
|
||||
promise = resource.$delete({ key: 'value' }, function() { }, function() { });
|
||||
promise.then(function(data: IMyResource) { });
|
||||
|
||||
promise = resource.$get();
|
||||
promise = resource.$get({ key: 'value' });
|
||||
promise = resource.$get({ key: 'value' }, function() { });
|
||||
promise = resource.$get(function() { });
|
||||
promise = resource.$get(function() { }, function() { });
|
||||
promise = resource.$get({ key: 'value' }, function() { }, function() { });
|
||||
|
||||
arrayPromise = resourceArray[0].$query();
|
||||
arrayPromise = resourceArray[0].$query({ key: 'value' });
|
||||
arrayPromise = resourceArray[0].$query({ key: 'value' }, function() { });
|
||||
arrayPromise = resourceArray[0].$query(function() { });
|
||||
arrayPromise = resourceArray[0].$query(function() { }, function() { });
|
||||
arrayPromise = resourceArray[0].$query({ key: 'value' }, function() { }, function() { });
|
||||
arrayPromise.then(function(data: OData.IResourceArray<IMyResource>) { });
|
||||
|
||||
promise = resource.$remove();
|
||||
promise = resource.$remove({ key: 'value' });
|
||||
promise = resource.$remove({ key: 'value' }, function() { });
|
||||
promise = resource.$remove(function() { });
|
||||
promise = resource.$remove(function() { }, function() { });
|
||||
promise = resource.$remove({ key: 'value' }, function() { }, function() { });
|
||||
|
||||
promise = resource.$save();
|
||||
promise = resource.$save({ key: 'value' });
|
||||
promise = resource.$save({ key: 'value' }, function() { });
|
||||
promise = resource.$save(function() { });
|
||||
promise = resource.$save(function() { }, function() { });
|
||||
promise = resource.$save({ key: 'value' }, function() { }, function() { });
|
||||
|
||||
///////////////////////////////////////
|
||||
// IResourceService
|
||||
///////////////////////////////////////
|
||||
var resourceService: OData.IResourceService;
|
||||
resourceClass = resourceService<IMyResource, IMyResourceClass>('test');
|
||||
resourceClass = resourceService<IMyResource>('test');
|
||||
resourceClass = resourceService('test');
|
||||
|
||||
///////////////////////////////////////
|
||||
// IModule
|
||||
///////////////////////////////////////
|
||||
var mod: ng.IModule;
|
||||
var resourceServiceFactoryFunction: OData.IResourceServiceFactoryFunction<IMyResource>;
|
||||
var resourceService: OData.IResourceService;
|
||||
|
||||
resourceClass = resourceServiceFactoryFunction<IMyResourceClass>(resourceService);
|
||||
|
||||
resourceServiceFactoryFunction = function(resourceService: OData.IResourceService) { return <any>resourceClass; };
|
||||
mod = mod.factory('factory name', resourceServiceFactoryFunction);
|
||||
|
||||
///////////////////////////////////////
|
||||
// IResource
|
||||
///////////////////////////////////////
|
||||
|
||||
|
||||
///////////////////////////////////////
|
||||
// IResourceServiceProvider
|
||||
///////////////////////////////////////
|
||||
var resourceServiceProvider: OData.IResourceServiceProvider;
|
||||
resourceServiceProvider.defaults.stripTrailingSlashes = false;
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////
|
||||
// OData
|
||||
///////////////////////////////////////
|
||||
|
||||
interface User extends OData.IResource<User> {
|
||||
name: string;
|
||||
}
|
||||
|
||||
var resourceService: OData.IResourceService;
|
||||
var odataResourceClass = resourceService<User>("my/url", {}, {}, { odata: { method: 'POST' } });
|
||||
|
||||
var Value: OData.ValueFactory;
|
||||
var Property: OData.PropertyFactory;
|
||||
var Predicate: OData.PredicateFactory;
|
||||
|
||||
var users = odataResourceClass.odata().query();
|
||||
|
||||
users[0].name;
|
||||
users[0].$save;
|
||||
users[0].$update;
|
||||
|
||||
var user = odataResourceClass.odata()
|
||||
.filter(new Value("1", OData.ValueTypes.Int32), new Property("abc"))
|
||||
.filter("Name", "John")
|
||||
.filter("Age", ">", 20)
|
||||
.skip(10)
|
||||
.take(20)
|
||||
.orderBy("Name", "desc")
|
||||
.single();
|
||||
user.$save();
|
||||
|
||||
var predicate1 = new Predicate("a", "b");
|
||||
var predicate2 = new Predicate("c", "d");
|
||||
var predicate3 = new Predicate("Age", '>', 10);
|
||||
|
||||
var combination1 = Predicate.or([predicate1, predicate2]);
|
||||
var combination2 = Predicate.and([combination1, predicate2]);
|
||||
|
||||
var predicate = new Predicate("FirstName", "John")
|
||||
.or(new Predicate("LastName", '!=', "Doe"))
|
||||
.and(new Predicate("Age", '>', 10));
|
||||
|
||||
|
||||
users = odataResourceClass.odata()
|
||||
.withInlineCount()
|
||||
.query();
|
||||
|
||||
|
||||
var countResult = odataResourceClass.odata().count();
|
||||
var total = countResult.result;
|
||||
|
||||
|
||||
|
||||
|
||||
var usersSelect1 = odataResourceClass.odata()
|
||||
.select('name', 'user');
|
||||
|
||||
|
||||
var usersSelect2 = odataResourceClass.odata()
|
||||
.select(['name', 'user']);
|
||||
@@ -0,0 +1,326 @@
|
||||
// Type definitions for OData Angular Resources
|
||||
// Project: https://github.com/devnixs/ODataAngularResources
|
||||
// Definitions by: Raphael ATALLAH <http://raphael.atallah.me>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module OData {
|
||||
|
||||
/**
|
||||
* Currently supported options for the $resource factory options argument.
|
||||
*/
|
||||
interface IResourceOptions {
|
||||
/**
|
||||
* If true then the trailing slashes from any calculated URL will be stripped (defaults to true)
|
||||
*/
|
||||
stripTrailingSlashes?: boolean;
|
||||
odata?: {
|
||||
url?: string;
|
||||
method?: string;
|
||||
};
|
||||
isodatav4?: boolean;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// ResourceService
|
||||
// see http://docs.angularjs.org/api/ngResource.$resource
|
||||
// Most part of the following definitions were achieved by analyzing the
|
||||
// actual implementation, since the documentation doesn't seem to cover
|
||||
// that deeply.
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
interface IResourceService {
|
||||
(url: string, paramDefaults?: any,
|
||||
/** example: {update: { method: 'PUT' }, delete: deleteDescriptor }
|
||||
where deleteDescriptor : IActionDescriptor */
|
||||
actions?: any, options?: IResourceOptions): IResourceClass<IResource<any>>;
|
||||
<T, U>(url: string, paramDefaults?: any,
|
||||
/** example: {update: { method: 'PUT' }, delete: deleteDescriptor }
|
||||
where deleteDescriptor : IActionDescriptor */
|
||||
actions?: any, options?: IResourceOptions): U;
|
||||
<T>(url: string, paramDefaults?: any,
|
||||
/** example: {update: { method: 'PUT' }, delete: deleteDescriptor }
|
||||
where deleteDescriptor : IActionDescriptor */
|
||||
actions?: any, options?: IResourceOptions): IResourceClass<T>;
|
||||
}
|
||||
|
||||
// Just a reference to facilitate describing new actions
|
||||
interface IActionDescriptor {
|
||||
url?: string;
|
||||
method: string;
|
||||
isArray?: boolean;
|
||||
params?: any;
|
||||
headers?: any;
|
||||
}
|
||||
|
||||
// Baseclass for everyresource with default actions.
|
||||
// If you define your new actions for the resource, you will need
|
||||
// to extend this interface and typecast the ResourceClass to it.
|
||||
//
|
||||
// In case of passing the first argument as anything but a function,
|
||||
// it's gonna be considered data if the action method is POST, PUT or
|
||||
// PATCH (in other words, methods with body). Otherwise, it's going
|
||||
// to be considered as parameters to the request.
|
||||
// https://github.com/angular/angular.js/blob/v1.2.0/src/ngResource/resource.js#L461-L465
|
||||
//
|
||||
// Only those methods with an HTTP body do have 'data' as first parameter:
|
||||
// https://github.com/angular/angular.js/blob/v1.2.0/src/ngResource/resource.js#L463
|
||||
// More specifically, those methods are POST, PUT and PATCH:
|
||||
// https://github.com/angular/angular.js/blob/v1.2.0/src/ngResource/resource.js#L432
|
||||
//
|
||||
// Also, static calls always return the IResource (or IResourceArray) retrieved
|
||||
// https://github.com/angular/angular.js/blob/v1.2.0/src/ngResource/resource.js#L538-L549
|
||||
interface IResourceClass<T> {
|
||||
new(dataOrParams? : any) : IResource<T>;
|
||||
get(): IResource<T>;
|
||||
get(params: Object): IResource<T>;
|
||||
get(success: Function, error?: Function): IResource<T>;
|
||||
get(params: Object, success: Function, error?: Function): IResource<T>;
|
||||
get(params: Object, data: Object, success?: Function, error?: Function): IResource<T>;
|
||||
|
||||
query(): IResourceArray<T>;
|
||||
query(params: Object): IResourceArray<T>;
|
||||
query(success: Function, error?: Function): IResourceArray<T>;
|
||||
query(params: Object, success: Function, error?: Function): IResourceArray<T>;
|
||||
query(params: Object, data: Object, success?: Function, error?: Function): IResourceArray<T>;
|
||||
|
||||
save(): IResource<T>;
|
||||
save(data: Object): IResource<T>;
|
||||
save(success: Function, error?: Function): IResource<T>;
|
||||
save(data: Object, success: Function, error?: Function): IResource<T>;
|
||||
save(params: Object, data: Object, success?: Function, error?: Function): IResource<T>;
|
||||
|
||||
update(): IResource<T>;
|
||||
update(data: Object): IResource<T>;
|
||||
update(success: Function, error?: Function): IResource<T>;
|
||||
update(data: Object, success: Function, error?: Function): IResource<T>;
|
||||
update(params: Object, data: Object, success?: Function, error?: Function): IResource<T>;
|
||||
|
||||
remove(): IResource<T>;
|
||||
remove(params: Object): IResource<T>;
|
||||
remove(success: Function, error?: Function): IResource<T>;
|
||||
remove(params: Object, success: Function, error?: Function): IResource<T>;
|
||||
remove(params: Object, data: Object, success?: Function, error?: Function): IResource<T>;
|
||||
|
||||
delete(): IResource<T>;
|
||||
delete(params: Object): IResource<T>;
|
||||
delete(success: Function, error?: Function): IResource<T>;
|
||||
delete(params: Object, success: Function, error?: Function): IResource<T>;
|
||||
delete(params: Object, data: Object, success?: Function, error?: Function): IResource<T>;
|
||||
|
||||
odata(): OData.Provider<T>;
|
||||
}
|
||||
|
||||
// Instance calls always return the the promise of the request which retrieved the object
|
||||
// https://github.com/angular/angular.js/blob/v1.2.0/src/ngResource/resource.js#L538-L546
|
||||
interface IResource<T> {
|
||||
$get(): angular.IPromise<T>;
|
||||
$get(params?: Object, success?: Function, error?: Function): angular.IPromise<T>;
|
||||
$get(success: Function, error?: Function): angular.IPromise<T>;
|
||||
|
||||
$query(): angular.IPromise<IResourceArray<T>>;
|
||||
$query(params?: Object, success?: Function, error?: Function): angular.IPromise<IResourceArray<T>>;
|
||||
$query(success: Function, error?: Function): angular.IPromise<IResourceArray<T>>;
|
||||
|
||||
$save(): angular.IPromise<T>;
|
||||
$save(params?: Object, success?: Function, error?: Function): angular.IPromise<T>;
|
||||
$save(success: Function, error?: Function): angular.IPromise<T>;
|
||||
|
||||
$update(): angular.IPromise<T>;
|
||||
$update(params?: Object, success?: Function, error?: Function): angular.IPromise<T>;
|
||||
$update(success: Function, error?: Function): angular.IPromise<T>;
|
||||
|
||||
$remove(): angular.IPromise<T>;
|
||||
$remove(params?: Object, success?: Function, error?: Function): angular.IPromise<T>;
|
||||
$remove(success: Function, error?: Function): angular.IPromise<T>;
|
||||
|
||||
$delete(): angular.IPromise<T>;
|
||||
$delete(params?: Object, success?: Function, error?: Function): angular.IPromise<T>;
|
||||
$delete(success: Function, error?: Function): angular.IPromise<T>;
|
||||
|
||||
/** the promise of the original server interaction that created this instance. **/
|
||||
$promise: angular.IPromise<T>;
|
||||
$resolved: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Really just a regular Array object with $promise and $resolve attached to it
|
||||
*/
|
||||
interface IResourceArray<T> extends Array<T> {
|
||||
/** the promise of the original server interaction that created this collection. **/
|
||||
$promise: angular.IPromise<IResourceArray<T>>;
|
||||
$resolved: boolean;
|
||||
}
|
||||
|
||||
/** when creating a resource factory via IModule.factory */
|
||||
interface IResourceServiceFactoryFunction<T> {
|
||||
($resource: OData.IResourceService): IResourceClass<T>;
|
||||
<U extends IResourceClass<T>>($resource: OData.IResourceService): U;
|
||||
}
|
||||
|
||||
// IResourceServiceProvider used to configure global settings
|
||||
interface IResourceServiceProvider extends angular.IServiceProvider {
|
||||
|
||||
defaults: IResourceOptions;
|
||||
}
|
||||
|
||||
|
||||
interface IExecutable {
|
||||
execute(noParenthesis?: any): string;
|
||||
}
|
||||
class Global {
|
||||
static $inject: string[];
|
||||
constructor(ODataBinaryOperation: any, ODataProvider: any, ODataValue: any, ODataProperty: any, ODataMethodCall: any, ODataPredicate: any, ODataOrderByStatement: any);
|
||||
Provider: Provider<any>;
|
||||
BinaryOperation: typeof BinaryOperation;
|
||||
Value: typeof Value;
|
||||
Property: typeof Property;
|
||||
Func: typeof MethodCall;
|
||||
Predicate: typeof Predicate;
|
||||
OrderBy: typeof OrderByStatement;
|
||||
}
|
||||
|
||||
interface BinaryOperationFactory {
|
||||
new (propertyOrPredicate: any, valueOrOperator?: any, value?: any): BinaryOperation;
|
||||
}
|
||||
class BinaryOperation implements IExecutable {
|
||||
private operandA;
|
||||
private operandB;
|
||||
private filterOperator;
|
||||
constructor(propertyOrPredicate: any, valueOrOperator?: any, value?: any);
|
||||
execute(noParenthesis?: any): string;
|
||||
or(propertyOrPredicate: any, operatorOrValue?: any, value?: any): BinaryOperation;
|
||||
and(propertyOrPredicate: any, operatorOrValue?: any, value?: any): BinaryOperation;
|
||||
}
|
||||
|
||||
interface MethodCallFactory {
|
||||
new (methodName: string, ...args: any[]): MethodCall;
|
||||
}
|
||||
class MethodCall implements IExecutable {
|
||||
private methodName;
|
||||
private params;
|
||||
execute(): string;
|
||||
constructor(methodName: string, ...args: any[]);
|
||||
}
|
||||
|
||||
class Operators {
|
||||
operators: {
|
||||
'eq': string[];
|
||||
'ne': string[];
|
||||
'gt': string[];
|
||||
'ge': string[];
|
||||
'lt': string[];
|
||||
'le': string[];
|
||||
'and': string[];
|
||||
'or': string[];
|
||||
'not': string[];
|
||||
'add': string[];
|
||||
'sub': string[];
|
||||
'mul': string[];
|
||||
'div': string[];
|
||||
'mod': string[];
|
||||
};
|
||||
private rtrim;
|
||||
private trim(value);
|
||||
convert(from: string): any;
|
||||
}
|
||||
|
||||
interface OrderByStatementFactory {
|
||||
new (propertyName: string, sortOrder?: string): OrderByStatement;
|
||||
}
|
||||
class OrderByStatement implements IExecutable {
|
||||
private propertyName;
|
||||
private direction;
|
||||
execute(): string;
|
||||
constructor(propertyName: string, sortOrder?: string);
|
||||
}
|
||||
|
||||
interface PredicateFactory {
|
||||
new (propertyOrValueOrPredicate: any, valueOrOperator?: any, value?: any): Predicate;
|
||||
or(orStatements: any[]): IExecutable;
|
||||
create(propertyOrPredicate: any, operatorOrValue?: any, value?: any): IExecutable;
|
||||
and(andStatements: any): IExecutable;
|
||||
}
|
||||
class Predicate extends BinaryOperation {
|
||||
constructor(propertyOrValueOrPredicate: any, valueOrOperator?: any, value?: any);
|
||||
static or(orStatements: any[]): IExecutable;
|
||||
static create(propertyOrPredicate: any, operatorOrValue?: any, value?: any): IExecutable;
|
||||
static and(andStatements: any): IExecutable;
|
||||
}
|
||||
|
||||
interface PropertyFactory {
|
||||
new (value: string): Property;
|
||||
}
|
||||
class Property implements IExecutable {
|
||||
private value;
|
||||
constructor(value: string);
|
||||
execute(): string;
|
||||
}
|
||||
|
||||
interface ProviderFactory {
|
||||
new <T>(callback: ProviderCallback<T>): Provider<T>;
|
||||
}
|
||||
interface ProviderCallback<T> {
|
||||
(queryString: string, success: () => any, error: () => any): T[];
|
||||
(queryString: string, success: () => any, error: () => any, isSingleElement?: boolean, forceSingleElement?: boolean): T;
|
||||
}
|
||||
|
||||
interface ICountResult{
|
||||
result: number;
|
||||
$promise: angular.IPromise<any>;
|
||||
}
|
||||
|
||||
class Provider<T> {
|
||||
private callback;
|
||||
private filters;
|
||||
private sortOrders;
|
||||
private takeAmount;
|
||||
private skipAmount;
|
||||
private expandables;
|
||||
constructor(callback: ProviderCallback<T>);
|
||||
filter(operand1: any, operand2?: any, operand3?: any): Provider<T>;
|
||||
orderBy(arg1: string, arg2?: string): Provider<T>;
|
||||
take(amount: number): Provider<T>;
|
||||
skip(amount: number): Provider<T>;
|
||||
private execute();
|
||||
query(success?: ((p:T[])=>void), error?: (()=>void)): T[];
|
||||
single(success?: ((p:T)=>void), error?: (()=>void)): T;
|
||||
get(key: any, success?: ((p:T)=>void), error?: (()=>void)): T;
|
||||
expand(...params: string[]): Provider<T>;
|
||||
expand(params: string[]): Provider<T>;
|
||||
select(...params: string[]): Provider<T>;
|
||||
select(params: string[]): Provider<T>;
|
||||
count(success?: (result: ICountResult) => any, error?: () => any):ICountResult;
|
||||
withInlineCount(): Provider<T>;
|
||||
}
|
||||
|
||||
interface ValueFactory {
|
||||
new (value: any, type?: string): Value;
|
||||
}
|
||||
class ValueTypes {
|
||||
static Boolean: string;
|
||||
static Byte: string;
|
||||
static DateTime: string;
|
||||
static Decimal: string;
|
||||
static Double: string;
|
||||
static Single: string;
|
||||
static Guid: string;
|
||||
static Int32: string;
|
||||
static String: string;
|
||||
}
|
||||
class Value {
|
||||
private value;
|
||||
private type;
|
||||
private illegalChars;
|
||||
private escapeIllegalChars(haystack);
|
||||
private generateDate(date);
|
||||
executeWithUndefinedType(): any;
|
||||
executeWithType(): any;
|
||||
execute(): string;
|
||||
constructor(value: any, type?: string);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -374,7 +374,7 @@ function TestElementArrayFinder() {
|
||||
var b: boolean = elementArrayFinder.isPending();
|
||||
var locator: webdriver.Locator = elementArrayFinder.locator();
|
||||
|
||||
var findersArray: protractor.ElementFinder[] = elementArrayFinder.asElementFinders_();
|
||||
var findersArrayPromise: protractor.promise.Promise<protractor.ElementFinder[]> = elementArrayFinder.asElementFinders_();
|
||||
|
||||
var driverElementArray: webdriver.WebElement[] = elementArrayFinder.getWebElements();
|
||||
var elementFinder: protractor.ElementFinder = elementArrayFinder.get(42);
|
||||
|
||||
+29
-14
@@ -564,7 +564,7 @@ declare module protractor {
|
||||
*/
|
||||
element(subLocator: webdriver.Locator): ElementFinder;
|
||||
|
||||
/**
|
||||
/**
|
||||
* Calls to element may be chained to find an array of elements within a parent.
|
||||
*
|
||||
* @alias element(locator).all(locator)
|
||||
@@ -652,7 +652,7 @@ declare module protractor {
|
||||
/**
|
||||
* Override for WebElement.prototype.isElementPresent so that protractor waits
|
||||
* for Angular to settle before making the check.
|
||||
*
|
||||
*
|
||||
* @see ElementFinder.isPresent
|
||||
*
|
||||
* @param {webdriver.Locator} subLocator Locator for element to look for.
|
||||
@@ -879,7 +879,7 @@ declare module protractor {
|
||||
* filteredElements[0].click();
|
||||
* });
|
||||
*
|
||||
* @param {function(ElementFinder, number): webdriver.WebElement.Promise} filterFn
|
||||
* @param {function(ElementFinder, number): webdriver.WebElement.Promise} filterFn
|
||||
* Filter function that will test if an element should be returned.
|
||||
* filterFn can either return a boolean or a promise that resolves to a boolean.
|
||||
* @return {!ElementArrayFinder} A ElementArrayFinder that represents an array
|
||||
@@ -888,11 +888,11 @@ declare module protractor {
|
||||
filter(filterFn: (element: ElementFinder, index: number) => any): ElementArrayFinder;
|
||||
|
||||
/**
|
||||
* Apply a reduce function against an accumulator and every element found
|
||||
* Apply a reduce function against an accumulator and every element found
|
||||
* using the locator (from left-to-right). The reduce function has to reduce
|
||||
* every element into a single value (the accumulator). Returns promise of
|
||||
* the accumulator. The reduce function receives the accumulator, current
|
||||
* ElementFinder, the index, and the entire array of ElementFinders,
|
||||
* every element into a single value (the accumulator). Returns promise of
|
||||
* the accumulator. The reduce function receives the accumulator, current
|
||||
* ElementFinder, the index, and the entire array of ElementFinders,
|
||||
* respectively.
|
||||
*
|
||||
* @alias element.all(locator).reduce(reduceFn)
|
||||
@@ -912,11 +912,11 @@ declare module protractor {
|
||||
*
|
||||
* expect(value).toEqual('First Second Third ');
|
||||
*
|
||||
* @param {function(number, ElementFinder, number, Array.<ElementFinder>)}
|
||||
* @param {function(number, ElementFinder, number, Array.<ElementFinder>)}
|
||||
* reduceFn Reduce function that reduces every element into a single value.
|
||||
* @param {*} initialValue Initial value of the accumulator.
|
||||
* @param {*} initialValue Initial value of the accumulator.
|
||||
* @return {!webdriver.promise.Promise} A promise that resolves to the final
|
||||
* value of the accumulator.
|
||||
* value of the accumulator.
|
||||
*/
|
||||
reduce<T>(reduceFn: (acc: T, element: ElementFinder, index: number, arr: ElementFinder[]) => webdriver.promise.Promise<T>, initialValue: T): webdriver.promise.Promise<T>;
|
||||
reduce<T>(reduceFn: (acc: T, element: ElementFinder, index: number, arr: ElementFinder[]) => T, initialValue: T): webdriver.promise.Promise<T>;
|
||||
@@ -924,10 +924,10 @@ declare module protractor {
|
||||
/**
|
||||
* Represents the ElementArrayFinder as an array of ElementFinders.
|
||||
*
|
||||
* @return {Array.<ElementFinder>} Return a promise, which resolves to a list
|
||||
* @return {Array.<ElementFinder>} Return a promise, which resolves to a list
|
||||
* of ElementFinders specified by the locator.
|
||||
*/
|
||||
asElementFinders_(): ElementFinder[];
|
||||
asElementFinders_(): webdriver.promise.Promise<ElementFinder[]>;
|
||||
|
||||
/**
|
||||
* Create a shallow copy of ElementArrayFinder.
|
||||
@@ -1221,13 +1221,28 @@ declare module protractor {
|
||||
|
||||
interface LocatorWithColumn extends webdriver.Locator {
|
||||
column(index: number): webdriver.Locator;
|
||||
column(name: string): webdriver.Locator;
|
||||
}
|
||||
|
||||
interface RepeaterLocator extends LocatorWithColumn {
|
||||
row(index: number): LocatorWithColumn;
|
||||
}
|
||||
|
||||
interface IProtractorLocatorStrategy extends webdriver.ILocatorStrategy {
|
||||
interface IProtractorLocatorStrategy {
|
||||
/**
|
||||
* webdriver's By is an enum of locator functions, so we must set it to
|
||||
* a prototype before inheriting from it.
|
||||
*/
|
||||
className: typeof webdriver.By.className;
|
||||
css: typeof webdriver.By.css;
|
||||
id: typeof webdriver.By.id;
|
||||
linkText: typeof webdriver.By.linkText;
|
||||
js: typeof webdriver.By.js;
|
||||
name: typeof webdriver.By.name;
|
||||
partialLinkText: typeof webdriver.By.partialLinkText;
|
||||
tagName: typeof webdriver.By.tagName;
|
||||
xpath: typeof webdriver.By.xpath;
|
||||
|
||||
/**
|
||||
* Add a locator to this instance of ProtractorBy. This locator can then be
|
||||
* used with element(by.locatorName(args)).
|
||||
@@ -1299,7 +1314,7 @@ declare module protractor {
|
||||
* expect(element(by.exactBinding('person_phone')).isPresent()).toBe(true);
|
||||
* expect(element(by.exactBinding('person_phone|uppercase')).isPresent()).toBe(true);
|
||||
* expect(element(by.exactBinding('phone')).isPresent()).toBe(false);
|
||||
*
|
||||
*
|
||||
* @param {string} bindingDescriptor
|
||||
* @return {{findElementsOverride: findElementsOverride, toString: Function|string}}
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
/// <reference path='angular-signalr-hub.d.ts' />
|
||||
/// <reference path='../angularjs/angular.d.ts' />
|
||||
|
||||
angular
|
||||
.module('app', ['SignalR'])
|
||||
.factory('Employees', ngSignalrTest.EmployeesFactory);
|
||||
|
||||
module ngSignalrTest {
|
||||
export class EmployeesFactory {
|
||||
static $inject = ['$rootScope', 'Hub', '$timeout'];
|
||||
private hub: ngSignalr.Hub;
|
||||
public all: Array<Employee>;
|
||||
|
||||
constructor($rootScope: ng.IRootScopeService, Hub: ngSignalr.HubFactory, $timeout: ng.ITimeoutService) {
|
||||
// declaring the hub connection
|
||||
this.hub = new Hub('employee', {
|
||||
// client-side methods
|
||||
listeners: {
|
||||
'lockEmployee': (id: number) => {
|
||||
var employee = this.find(id);
|
||||
employee.Locked = true;
|
||||
$rootScope.$apply();
|
||||
},
|
||||
'unlockEmployee': (id: number) => {
|
||||
var employee = this.find(id);
|
||||
employee.Locked = false;
|
||||
$rootScope.$apply();
|
||||
}
|
||||
},
|
||||
|
||||
// server-side methods
|
||||
methods: ['lock', 'unlock'],
|
||||
|
||||
// query params sent on initial connection
|
||||
queryParams:{
|
||||
'token': 'exampletoken'
|
||||
},
|
||||
|
||||
// handle connection error
|
||||
errorHandler: (message: string) => {
|
||||
console.error(message);
|
||||
},
|
||||
|
||||
stateChanged: (state: SignalRStateChange) => {
|
||||
// your code here
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private find(id: number) {
|
||||
for (var i = 0; i < this.all.length; i++) {
|
||||
if (this.all[i].Id === id) return this.all[i];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public edit = (employee: Employee) => {
|
||||
employee.Edit = true;
|
||||
this.hub.invoke('lock', employee.Id);
|
||||
};
|
||||
|
||||
public done = (employee: Employee) => {
|
||||
employee.Edit = false;
|
||||
this.hub.invoke('unlock', employee.Id);
|
||||
}
|
||||
}
|
||||
|
||||
interface Employee {
|
||||
Id: number;
|
||||
Name: string;
|
||||
Email: string;
|
||||
Salary: number;
|
||||
Edit: boolean;
|
||||
Locked: boolean;
|
||||
}
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
// Type definitions for angular-signalr-hub v1.5.0
|
||||
// Project: https://github.com/JustMaier/angular-signalr-hub
|
||||
// Definitions by: Adam Santaniello <https://github.com/AdamSantaniello>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path='../signalr/signalr.d.ts' />
|
||||
|
||||
declare module ngSignalr {
|
||||
interface HubFactory {
|
||||
/**
|
||||
* Creates a new Hub connection
|
||||
*/
|
||||
new(hubName: string, options: HubOptions) : Hub
|
||||
}
|
||||
|
||||
class Hub {
|
||||
hubName: string;
|
||||
connection: SignalR;
|
||||
proxy: HubProxy;
|
||||
|
||||
on(event: string, fn: (...args: any[]) => void): void;
|
||||
invoke(method: string, ...args: any[]): JQueryDeferred<any>;
|
||||
disconnect(): void;
|
||||
connect(): JQueryPromise<any>;
|
||||
}
|
||||
|
||||
interface HubOptions {
|
||||
/**
|
||||
* Collection of client side callbacks
|
||||
*/
|
||||
listeners?: { [index: string] : (...args: any[]) => void };
|
||||
|
||||
/**
|
||||
* String array of server side methods which the client can call
|
||||
*/
|
||||
methods?: Array<string>;
|
||||
|
||||
/**
|
||||
* Sets the root path for the SignalR web service
|
||||
*/
|
||||
rootPath?: string;
|
||||
|
||||
/**
|
||||
* Object representing additional query params to be sent on connection
|
||||
*/
|
||||
queryParams?: { [index: string] : string };
|
||||
|
||||
/**
|
||||
* Function to handle hub connection errors
|
||||
*/
|
||||
errorHandler?: (error: string) => void;
|
||||
|
||||
/**
|
||||
* Enable/disable logging
|
||||
*/
|
||||
logging?: boolean;
|
||||
|
||||
/**
|
||||
* Use a shared global connection or create a new one just for this hub, defaults to true
|
||||
*/
|
||||
useSharedConnection?: boolean;
|
||||
|
||||
/**
|
||||
* Sets transport method (e.g 'longPolling' or ['webSockets', 'longPolling'] )
|
||||
*/
|
||||
transport?: any;
|
||||
|
||||
/**
|
||||
* Function to handle hub connection state changed event
|
||||
*/
|
||||
stateChanged?: (state: SignalRStateChange) => void;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/// <reference path='../angularjs/angular.d.ts' />
|
||||
/// <reference path='angular-storage.d.ts' />
|
||||
|
||||
// Samples taken from the a0-angular-storage Readme.md
|
||||
|
||||
var app = angular.module('angular-storage-tests', ['angular-storage']);
|
||||
|
||||
angular.module('angular-storage-tests')
|
||||
.controller('StoreController', function(store: angular.a0.storage.IStoreService) {
|
||||
var myObj = {
|
||||
name: 'mgonto'
|
||||
};
|
||||
|
||||
store.set('obj', myObj);
|
||||
|
||||
var myNewObject = store.get('obj');
|
||||
|
||||
console.log('Should be true: ', angular.equals(myNewObject, myObj));
|
||||
|
||||
store.remove('obj');
|
||||
|
||||
store.set('number', 2);
|
||||
|
||||
console.log('Should be true: ', typeof(store.get('number')) === 'number');
|
||||
})
|
||||
.factory('Auth0Store', function(store: angular.a0.storage.IStoreService) {
|
||||
return store.getNamespacedStore('auth0');
|
||||
})
|
||||
.controller('NamespacedStoreController', function(Auth0Store: angular.a0.storage.INamespacedStoreService) {
|
||||
|
||||
var myObj = {
|
||||
name: 'mgonto'
|
||||
};
|
||||
|
||||
// This will be saved in localStorage as auth0.obj
|
||||
Auth0Store.set('obj', myObj);
|
||||
|
||||
// This will look for auth0.obj
|
||||
var myNewObject = Auth0Store.get('obj');
|
||||
|
||||
console.log('Should be true: ', angular.equals(myNewObject, myObj));
|
||||
});;
|
||||
|
||||
Vendored
+53
@@ -0,0 +1,53 @@
|
||||
// Type definitions for angular-storage v0.0.11
|
||||
// Project: https://github.com/auth0/angular-storage
|
||||
// Definitions by: Matthew DeKrey <https://github.com/mdekrey>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
declare module angular.a0.storage {
|
||||
interface IStoreService extends INamespacedStoreService {
|
||||
/**
|
||||
* Returns a namespaced store
|
||||
*
|
||||
* @param {String} namespace - The namespace
|
||||
* @param {String} storage - The name of the storage service. Defaults to local storage.
|
||||
* @param {String} delimiter - The delimiter to use to separate the namespace and the keys.
|
||||
* @returns {INamespacedStoreService}
|
||||
*/
|
||||
getNamespacedStore(namespace: string, storage?: string, delimiter?: string): INamespacedStoreService;
|
||||
}
|
||||
|
||||
interface INamespacedStoreService {
|
||||
/**
|
||||
* Sets a new value to the storage with the key name. It can be any object.
|
||||
*
|
||||
* @param {String} name - The key name for the location of the value
|
||||
* @param value - The value to store
|
||||
*/
|
||||
set(name: string, value: any): void;
|
||||
|
||||
/**
|
||||
* Returns the saved value with they key name.
|
||||
*
|
||||
* @param {String} name - The key name for the location of the value
|
||||
* @returns The saved value; if you saved an object, you get an object
|
||||
*/
|
||||
get(name: string): any;
|
||||
|
||||
/**
|
||||
* Deletes the saved value with the key name
|
||||
*
|
||||
* @param {String} name - The key name for the location of the value to remove
|
||||
*/
|
||||
remove(name: string): void;
|
||||
}
|
||||
|
||||
interface IStoreProvider {
|
||||
|
||||
/**
|
||||
* Sets the storage.
|
||||
*
|
||||
* @param {String} storage - The storage name
|
||||
*/
|
||||
setStore(storage: string): void;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
/// <reference path="angular-toasty.d.ts" />
|
||||
|
||||
interface AngularToastyTestControllerScope extends ng.IScope {
|
||||
button:string;
|
||||
options:toasty.IToastyConfig;
|
||||
runToasts(): void;
|
||||
runQuickToasts(): void;
|
||||
newToast(): void;
|
||||
clearToasts(): void;
|
||||
}
|
||||
|
||||
class AngularToastyTestController {
|
||||
|
||||
static $inject = ['$scope', 'toasty'];
|
||||
|
||||
constructor($scope:AngularToastyTestControllerScope, toasty:toasty.IToastyService) {
|
||||
|
||||
var options: toasty.IToastyConfig = {
|
||||
title: 'Toast It!',
|
||||
msg: 'Mmmm, tasties...',
|
||||
showClose: true,
|
||||
clickToClose: false,
|
||||
timeout: 5000,
|
||||
sound: true,
|
||||
html: false,
|
||||
shake: false,
|
||||
theme: 'bootstrap',
|
||||
onAdd: function () {
|
||||
console.log('Toasty ' + this.id + ' has been added!', this);
|
||||
},
|
||||
onRemove: function () {
|
||||
console.log('Toasty ' + this.id + ' has been removed!', this);
|
||||
},
|
||||
onClick: function () {
|
||||
console.log('Toasty ' + this.id + ' has been clicked!', this);
|
||||
}
|
||||
};
|
||||
|
||||
$scope.runToasts = function () {
|
||||
toasty(options);
|
||||
toasty.default(options);
|
||||
toasty.info(options);
|
||||
toasty.success(options);
|
||||
toasty.wait(options);
|
||||
toasty.error(options);
|
||||
toasty.warning(options);
|
||||
};
|
||||
|
||||
$scope.runQuickToasts = function () {
|
||||
var title = 'Toast it!'
|
||||
toasty(title);
|
||||
toasty.default(title);
|
||||
toasty.info(title);
|
||||
toasty.success(title);
|
||||
toasty.wait(title);
|
||||
toasty.error(title);
|
||||
toasty.warning(title);
|
||||
};
|
||||
|
||||
$scope.clearToasts = function () {
|
||||
toasty.clear();
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
angular
|
||||
.module('main', ['angular-toasty'])
|
||||
.config(['toastyConfigProvider', (toastyConfigProvider:toasty.IToastyConfigProvider) => {
|
||||
toastyConfigProvider.setConfig({
|
||||
title: 'global',
|
||||
limit: 10,
|
||||
sound: false,
|
||||
shake: true
|
||||
});
|
||||
}])
|
||||
.controller('MainController', AngularToastyTestController);
|
||||
Vendored
+251
@@ -0,0 +1,251 @@
|
||||
// Type definitions for Angular Toasty v1.0.2
|
||||
// Project: https://github.com/invertase/angular-toasty
|
||||
// Definitions by: Dominik Muench <https://github.com/muenchdo>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module toasty {
|
||||
|
||||
interface IToastyService {
|
||||
/**
|
||||
* Create a toast with the given options and type.
|
||||
* @param options
|
||||
* @param type
|
||||
*/
|
||||
(options: IToastyConfig, type?: string): void;
|
||||
|
||||
/**
|
||||
* Create a default "quick toast" with the given title.
|
||||
* @param title
|
||||
*/
|
||||
(title: string|number): void;
|
||||
|
||||
/**
|
||||
* Create a default toast with the given options.
|
||||
* @param options
|
||||
*/
|
||||
default(options: IToastyConfig): void;
|
||||
|
||||
/**
|
||||
* Create a default "quick toast" with the given title.
|
||||
* @param title
|
||||
*/
|
||||
default(title: string|number): void;
|
||||
|
||||
/**
|
||||
* Create an info toast with the given options.
|
||||
* @param options
|
||||
*/
|
||||
info(options: IToastyConfig): void;
|
||||
|
||||
/**
|
||||
* Create an info "quick toast" with the given title.
|
||||
* @param title
|
||||
*/
|
||||
info(title: string|number): void;
|
||||
|
||||
/**
|
||||
* Create a wait toast with the given options.
|
||||
* @param options
|
||||
*/
|
||||
wait(options: IToastyConfig): void;
|
||||
|
||||
/**
|
||||
* Create a wait "quick toast" with the given title.
|
||||
* @param title
|
||||
*/
|
||||
wait(title: string|number): void;
|
||||
|
||||
/**
|
||||
* Create a success toast with the given options.
|
||||
* @param options
|
||||
*/
|
||||
success(options: IToastyConfig): void;
|
||||
|
||||
/**
|
||||
* Create a success "quick toast" with the given title.
|
||||
* @param title
|
||||
*/
|
||||
success(title: string|number): void;
|
||||
|
||||
/**
|
||||
* Create an error toast with the given options.
|
||||
* @param options
|
||||
*/
|
||||
error(options: IToastyConfig): void;
|
||||
|
||||
/**
|
||||
* Create an error "quick toast" with the given title.
|
||||
* @param title
|
||||
*/
|
||||
error(title: string|number): void;
|
||||
|
||||
/**
|
||||
* Create a warning toast with the given options.
|
||||
* @param options
|
||||
*/
|
||||
warning(options: IToastyConfig): void;
|
||||
|
||||
/**
|
||||
* Create a warning "quick toast" with the given title.
|
||||
* @param title
|
||||
*/
|
||||
warning(title: string|number): void;
|
||||
|
||||
/**
|
||||
* Clear toast(s).
|
||||
* @param id Optional ID to clear a specific toast.
|
||||
*/
|
||||
clear(id?: number): void;
|
||||
|
||||
/**
|
||||
* Get the global config.
|
||||
*/
|
||||
getGlobalConfig(): IGlobalConfig;
|
||||
|
||||
}
|
||||
|
||||
interface IToastyConfig {
|
||||
/**
|
||||
* The toast's title.
|
||||
*/
|
||||
title: string;
|
||||
|
||||
/**
|
||||
* The toast's message.
|
||||
*/
|
||||
msg?: string;
|
||||
|
||||
/**
|
||||
* Whether to show the 'X' icon to close the toast.
|
||||
*/
|
||||
showClose?: boolean;
|
||||
|
||||
/**
|
||||
* Whether clicking the toast closes it.
|
||||
*/
|
||||
clickToClose?: boolean;
|
||||
|
||||
/**
|
||||
* How long (in milliseconds) the toast shows before it's removed. Set to false to disable.
|
||||
*/
|
||||
timeout?: number;
|
||||
|
||||
/**
|
||||
* Whether to play a sound when a toast is added.
|
||||
*/
|
||||
sound?: boolean;
|
||||
|
||||
/**
|
||||
* Whether HTML is allowed in toasts.
|
||||
*/
|
||||
html?: boolean;
|
||||
|
||||
/**
|
||||
* Whether to shake the toasts.
|
||||
*/
|
||||
shake?: boolean;
|
||||
|
||||
/**
|
||||
* What theme to use.
|
||||
* - 'default'
|
||||
* - 'material'
|
||||
* - 'bootstrap'
|
||||
*/
|
||||
theme?: string;
|
||||
|
||||
/**
|
||||
* The toast's type:
|
||||
* - 'default'
|
||||
* - 'info'
|
||||
* - 'success'
|
||||
* - 'wait'
|
||||
* - 'error'
|
||||
* - 'warning'
|
||||
*/
|
||||
type?: string;
|
||||
|
||||
/**
|
||||
* Add event handler.
|
||||
*/
|
||||
onAdd?: Function;
|
||||
|
||||
/**
|
||||
* Remove event handler.
|
||||
*/
|
||||
onRemove?: Function;
|
||||
|
||||
/**
|
||||
* Click event handler.
|
||||
*/
|
||||
onClick?: Function;
|
||||
}
|
||||
|
||||
interface IGlobalConfig {
|
||||
|
||||
/**
|
||||
* Maximum number of toasts to show at once.
|
||||
*/
|
||||
limit?: number;
|
||||
|
||||
/**
|
||||
* The toast's title.
|
||||
*/
|
||||
title?: string;
|
||||
|
||||
/**
|
||||
* The toast's message.
|
||||
*/
|
||||
msg?: string;
|
||||
|
||||
/**
|
||||
* Whether to show the 'X' icon to close the toast.
|
||||
*/
|
||||
showClose?: boolean;
|
||||
|
||||
/**
|
||||
* Whether clicking the toast closes it.
|
||||
*/
|
||||
clickToClose?: boolean;
|
||||
|
||||
/**
|
||||
* The window position where the toast pops up.
|
||||
*
|
||||
*/
|
||||
position?: string;
|
||||
|
||||
/**
|
||||
* How long (in miliseconds) the toast shows before it's removed. Set to false to disable.
|
||||
*/
|
||||
timeout?: number|boolean;
|
||||
|
||||
/**
|
||||
* Whether to play a sound when a toast is added.
|
||||
*/
|
||||
sound?: boolean;
|
||||
|
||||
/**
|
||||
* Whether HTML is allowed in toast.
|
||||
*/
|
||||
html?: boolean;
|
||||
|
||||
/**
|
||||
* Whether to shake the toast.
|
||||
*/
|
||||
shake?: boolean;
|
||||
|
||||
/**
|
||||
* What theme to use.
|
||||
* - 'default'
|
||||
* - 'material'
|
||||
* - 'bootstrap'
|
||||
*/
|
||||
theme?: string;
|
||||
}
|
||||
|
||||
interface IToastyConfigProvider {
|
||||
setConfig(override: IGlobalConfig): void;
|
||||
$get(): IGlobalConfig;
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,15 @@
|
||||
|
||||
var app = angular.module('at', ['pascalprecht.translate']);
|
||||
|
||||
app.config(($translateProvider: ng.translate.ITranslateProvider) => {
|
||||
app.factory('customLoader', ($q:angular.IQService) => {
|
||||
return (options:any) => {
|
||||
var dfd:angular.IDeferred<string> = $q.defer();
|
||||
dfd.resolve('whatever you wanted to translate, I simply know nothing about the language with the key ' + options.key);
|
||||
return dfd.promise;
|
||||
}
|
||||
});
|
||||
|
||||
app.config(($translateProvider: angular.translate.ITranslateProvider) => {
|
||||
$translateProvider.translations('en', {
|
||||
TITLE: 'Hello',
|
||||
FOO: 'This is a paragraph.',
|
||||
@@ -16,13 +24,15 @@ app.config(($translateProvider: ng.translate.ITranslateProvider) => {
|
||||
BUTTON_LANG_DE: 'deutsch'
|
||||
});
|
||||
$translateProvider.preferredLanguage('en');
|
||||
|
||||
$translateProvider.useLoader('customLoader');
|
||||
});
|
||||
|
||||
interface Scope extends ng.IScope {
|
||||
changeLanguage(key: any): void;
|
||||
}
|
||||
|
||||
app.controller('Ctrl', ($scope: Scope, $translate: ng.translate.ITranslateService) => {
|
||||
app.controller('Ctrl', ($scope: Scope, $translate: angular.translate.ITranslateService) => {
|
||||
$scope['changeLanguage'] = function (key: any) {
|
||||
$translate.use(key);
|
||||
};
|
||||
|
||||
+30
-16
@@ -5,16 +5,15 @@
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module "angular-translate" {
|
||||
var _: string;
|
||||
export = _;
|
||||
}
|
||||
|
||||
declare module angular.translate {
|
||||
|
||||
interface ITranslatePartialLoaderService {
|
||||
addPart(name: string): ITranslatePartialLoaderService;
|
||||
deletePart(name: string, removeData?: boolean): ITranslatePartialLoaderService;
|
||||
isPartAvailable(name: string): boolean;
|
||||
}
|
||||
|
||||
|
||||
interface ITranslationTable {
|
||||
[key: string]: string;
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
interface ILanguageKeyAlias {
|
||||
@@ -26,15 +25,30 @@ declare module angular.translate {
|
||||
set(name: string, value: string): void;
|
||||
}
|
||||
|
||||
interface ISTaticFilesLoaderOptions {
|
||||
interface IStaticFilesLoaderOptions {
|
||||
prefix: string;
|
||||
suffix: string;
|
||||
key?: string;
|
||||
}
|
||||
|
||||
interface IPartialLoader<T> {
|
||||
addPart(name : string, priority? : number) : T;
|
||||
deletePart(name : string) : T;
|
||||
isPartAvailable(name : string) : boolean;
|
||||
}
|
||||
|
||||
interface ITranslatePartialLoaderService extends IPartialLoader<ITranslatePartialLoaderService> {
|
||||
getRegisteredParts() : Array<string>;
|
||||
isPartLoaded(name : string, lang : string) : boolean;
|
||||
}
|
||||
|
||||
interface ITranslatePartialLoaderProvider extends angular.IServiceProvider, IPartialLoader<ITranslatePartialLoaderProvider> {
|
||||
setPart(lang : string, part : string, table : ITranslationTable) : ITranslatePartialLoaderProvider;
|
||||
}
|
||||
|
||||
interface ITranslateService {
|
||||
(translationId: string, interpolateParams?: any, interpolationId?: string): ng.IPromise<string>;
|
||||
(translationId: string[], interpolateParams?: any, interpolationId?: string): ng.IPromise<{ [key: string]: string }>;
|
||||
(translationId: string, interpolateParams?: any, interpolationId?: string): angular.IPromise<string>;
|
||||
(translationId: string[], interpolateParams?: any, interpolationId?: string): angular.IPromise<{ [key: string]: string }>;
|
||||
cloakClassName(): string;
|
||||
cloakClassName(name: string): ITranslateProvider;
|
||||
fallbackLanguage(langKey?: string): string;
|
||||
@@ -44,17 +58,17 @@ declare module angular.translate {
|
||||
isPostCompilingEnabled(): boolean;
|
||||
preferredLanguage(langKey?: string): string;
|
||||
proposedLanguage(): string;
|
||||
refresh(langKey?: string): ng.IPromise<void>;
|
||||
refresh(langKey?: string): angular.IPromise<void>;
|
||||
storage(): IStorage;
|
||||
storageKey(): string;
|
||||
use(): string;
|
||||
use(key: string): ng.IPromise<string>;
|
||||
use(key: string): angular.IPromise<string>;
|
||||
useFallbackLanguage(langKey?: string): void;
|
||||
versionInfo(): string;
|
||||
loaderCache(): any;
|
||||
}
|
||||
|
||||
interface ITranslateProvider extends ng.IServiceProvider {
|
||||
interface ITranslateProvider extends angular.IServiceProvider {
|
||||
translations(): ITranslationTable;
|
||||
translations(key: string, translationTable: ITranslationTable): ITranslateProvider;
|
||||
cloakClassName(): string;
|
||||
@@ -78,8 +92,8 @@ declare module angular.translate {
|
||||
storageKey(): string;
|
||||
storageKey(key: string): void; // JeroMiya - the library should probably return ITranslateProvider but it doesn't here
|
||||
useUrlLoader(url: string): ITranslateProvider;
|
||||
useStaticFilesLoader(options: ISTaticFilesLoaderOptions): ITranslateProvider;
|
||||
useLoader(loaderFactory: string, options: any): ITranslateProvider;
|
||||
useStaticFilesLoader(options: IStaticFilesLoaderOptions): ITranslateProvider;
|
||||
useLoader(loaderFactory: string, options?: any): ITranslateProvider;
|
||||
useLocalStorage(): ITranslateProvider;
|
||||
useCookieStorage(): ITranslateProvider;
|
||||
useStorage(storageFactory: any): ITranslateProvider;
|
||||
|
||||
@@ -7,6 +7,7 @@ testApp.config((
|
||||
$buttonConfig: ng.ui.bootstrap.IButtonConfig,
|
||||
$datepickerConfig: ng.ui.bootstrap.IDatepickerConfig,
|
||||
$datepickerPopupConfig: ng.ui.bootstrap.IDatepickerPopupConfig,
|
||||
$modalProvider: ng.ui.bootstrap.IModalProvider,
|
||||
$paginationConfig: ng.ui.bootstrap.IPaginationConfig,
|
||||
$pagerConfig: ng.ui.bootstrap.IPagerConfig,
|
||||
$progressConfig: ng.ui.bootstrap.IProgressConfig,
|
||||
@@ -30,19 +31,25 @@ testApp.config((
|
||||
/**
|
||||
* $datepickerConfig tests
|
||||
*/
|
||||
$datepickerConfig.dayFormat = 'd';
|
||||
$datepickerConfig.dayHeaderFormat = 'E';
|
||||
$datepickerConfig.dayTitleFormat = 'dd-MM-yyyy';
|
||||
$datepickerConfig.datepickerMode = 'month';
|
||||
$datepickerConfig.formatDay = 'd';
|
||||
$datepickerConfig.formatDayHeader = 'E';
|
||||
$datepickerConfig.formatDayTitle = 'dd-MM-yyyy';
|
||||
$datepickerConfig.formatMonth = 'M';
|
||||
$datepickerConfig.formatMonthTitle = 'yy';
|
||||
$datepickerConfig.formatYear = 'y';
|
||||
$datepickerConfig.maxDate = '1389586124979';
|
||||
$datepickerConfig.maxMode = 'month';
|
||||
$datepickerConfig.minDate = '1389586124979';
|
||||
$datepickerConfig.monthFormat = 'M';
|
||||
$datepickerConfig.monthTitleFormat = 'yy';
|
||||
$datepickerConfig.minMode = 'month';
|
||||
$datepickerConfig.shortcutPropagation = true;
|
||||
$datepickerConfig.showWeeks = false;
|
||||
$datepickerConfig.startingDay = 1;
|
||||
$datepickerConfig.yearFormat = 'y';
|
||||
$datepickerConfig.yearRange = 10;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* $datepickerPopupConfig tests
|
||||
*/
|
||||
@@ -51,9 +58,18 @@ testApp.config((
|
||||
$datepickerPopupConfig.clearText = 'Reset Selection';
|
||||
$datepickerPopupConfig.closeOnDateSelection = false;
|
||||
$datepickerPopupConfig.closeText = 'Finished';
|
||||
$datepickerPopupConfig.dateFormat = 'dd-MM-yyyy';
|
||||
$datepickerPopupConfig.datepickerPopup = 'dd-MM-yyyy';
|
||||
$datepickerPopupConfig.datepickerPopupTemplateUrl = 'template.html';
|
||||
$datepickerPopupConfig.datepickerTemplateUrl = 'template.html';
|
||||
$datepickerPopupConfig.html5Types.date = 'MM-dd-yyyy';
|
||||
$datepickerPopupConfig.onOpenFocus = false;
|
||||
$datepickerPopupConfig.showButtonBar = false;
|
||||
$datepickerPopupConfig.toggleWeeksText = 'Show Weeks';
|
||||
|
||||
|
||||
/**
|
||||
* $modalProvider tests
|
||||
*/
|
||||
$modalProvider.options.animation = false;
|
||||
|
||||
|
||||
/**
|
||||
@@ -64,9 +80,13 @@ testApp.config((
|
||||
$paginationConfig.firstText = 'First Page';
|
||||
$paginationConfig.itemsPerPage = 25;
|
||||
$paginationConfig.lastText = 'Last Page';
|
||||
$paginationConfig.maxSize = 13;
|
||||
$paginationConfig.numPages = 13;
|
||||
$paginationConfig.nextText = 'Next Page';
|
||||
$paginationConfig.previousText = 'Previous Page';
|
||||
$paginationConfig.rotate = false;
|
||||
$paginationConfig.templateUrl = 'template.html';
|
||||
$paginationConfig.totalItems = 13;
|
||||
|
||||
|
||||
/**
|
||||
@@ -91,6 +111,7 @@ testApp.config((
|
||||
$ratingConfig.max = 10;
|
||||
$ratingConfig.stateOff = 'rating-state-off';
|
||||
$ratingConfig.stateOn = 'rating-state-on';
|
||||
$ratingConfig.titles = ['1', '2', '3', '4', '5'];
|
||||
|
||||
|
||||
/**
|
||||
@@ -102,6 +123,8 @@ testApp.config((
|
||||
$timepickerConfig.mousewheel = false;
|
||||
$timepickerConfig.readonlyInput = true;
|
||||
$timepickerConfig.showMeridian = false;
|
||||
$timepickerConfig.arrowkeys = false;
|
||||
$timepickerConfig.showSpinners = false;
|
||||
|
||||
/**
|
||||
* $tooltipProvider tests
|
||||
@@ -110,7 +133,9 @@ testApp.config((
|
||||
placement: 'bottom',
|
||||
animation: false,
|
||||
popupDelay: 1000,
|
||||
appendtoBody: true
|
||||
appendToBody: true,
|
||||
trigger: 'mouseenter hover',
|
||||
useContentExp: true,
|
||||
});
|
||||
$tooltipProvider.setTriggers({
|
||||
'customOpenTrigger': 'customCloseTrigger'
|
||||
@@ -129,9 +154,14 @@ testApp.controller('TestCtrl', (
|
||||
* test the $modal service
|
||||
*/
|
||||
var modalInstance = $modal.open({
|
||||
animation: false,
|
||||
backdrop: 'static',
|
||||
backdropClass: 'modal-backdrop-test',
|
||||
bindToController: true,
|
||||
controller: 'ModalTestCtrl',
|
||||
controllerAs: 'vm',
|
||||
keyboard: true,
|
||||
openedClass: 'modal-open my-modal',
|
||||
resolve: {
|
||||
items: ()=> {
|
||||
return [1, 2, 3, 4, 5];
|
||||
@@ -147,12 +177,23 @@ testApp.controller('TestCtrl', (
|
||||
$log.log('modal opened');
|
||||
});
|
||||
|
||||
modalInstance.rendered.then(() => {
|
||||
$log.log('modal rendered');
|
||||
});
|
||||
|
||||
modalInstance.result.then((closeResult:any)=> {
|
||||
$log.log('modal closed', closeResult);
|
||||
}, (dismissResult:any)=> {
|
||||
$log.log('modal dismissed', dismissResult);
|
||||
});
|
||||
|
||||
$modal.open({
|
||||
backdrop: 'static'
|
||||
});
|
||||
|
||||
$modal.open({
|
||||
templateUrl: () => '/templates/modal.html'
|
||||
});
|
||||
|
||||
/**
|
||||
* test the $modalStack service
|
||||
@@ -226,4 +267,4 @@ interface IModalTestCtrlScope {
|
||||
|
||||
close(): void;
|
||||
dismiss(): void;
|
||||
}
|
||||
}
|
||||
|
||||
+183
-74
@@ -1,10 +1,13 @@
|
||||
// Type definitions for Angular UI Bootstrap 0.11.0
|
||||
// Type definitions for Angular UI Bootstrap 0.13.3
|
||||
// Project: https://github.com/angular-ui/bootstrap
|
||||
// Definitions by: Brian Surowiec <https://github.com/xt0rted>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
// Support for AMD require
|
||||
declare module 'angular-bootstrap' {}
|
||||
|
||||
declare module angular.ui.bootstrap {
|
||||
|
||||
interface IAccordionConfig {
|
||||
@@ -36,42 +39,63 @@ declare module angular.ui.bootstrap {
|
||||
*
|
||||
* @default 'dd'
|
||||
*/
|
||||
dayFormat?: string;
|
||||
formatDay?: string;
|
||||
|
||||
/**
|
||||
* Format of month in year.
|
||||
*
|
||||
* @default 'MMM'
|
||||
*/
|
||||
monthFormat?: string;
|
||||
formatMonth?: string;
|
||||
|
||||
/**
|
||||
* Format of year in year range.
|
||||
*
|
||||
* @default 'yyyy'
|
||||
*/
|
||||
yearFormat?: string;
|
||||
formatYear?: string;
|
||||
|
||||
/**
|
||||
* Format of day in week header.
|
||||
*
|
||||
* @default 'EEE'
|
||||
*/
|
||||
dayHeaderFormat?: string;
|
||||
formatDayHeader?: string;
|
||||
|
||||
/**
|
||||
* Format of title when selecting day.
|
||||
*
|
||||
* @default 'MMM yyyy'
|
||||
*/
|
||||
dayTitleFormat?: string;
|
||||
formatDayTitle?: string;
|
||||
|
||||
/**
|
||||
* Format of title when selecting month.
|
||||
*
|
||||
* @default 'yyyy'
|
||||
*/
|
||||
monthTitleFormat?: string;
|
||||
formatMonthTitle?: string;
|
||||
|
||||
/**
|
||||
* Current mode of the datepicker (day|month|year). Can be used to initialize datepicker to specific mode.
|
||||
*
|
||||
* @default 'day'
|
||||
*/
|
||||
datepickerMode?: string;
|
||||
|
||||
/**
|
||||
* Set a lower limit for mode.
|
||||
*
|
||||
* @default 'day'
|
||||
*/
|
||||
minMode?: string;
|
||||
|
||||
/**
|
||||
* Set an upper limit for mode.
|
||||
*
|
||||
* @default 'year'
|
||||
*/
|
||||
maxMode?: string;
|
||||
|
||||
/**
|
||||
* Whether to display week numbers.
|
||||
@@ -107,6 +131,13 @@ declare module angular.ui.bootstrap {
|
||||
* @default null
|
||||
*/
|
||||
maxDate?: any;
|
||||
|
||||
/**
|
||||
* An option to disable or enable shortcut's event propagation
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
shortcutPropagation?: boolean;
|
||||
}
|
||||
|
||||
interface IDatepickerPopupConfig {
|
||||
@@ -115,7 +146,30 @@ declare module angular.ui.bootstrap {
|
||||
*
|
||||
* @default 'yyyy-MM-dd'
|
||||
*/
|
||||
dateFormat?: string;
|
||||
datepickerPopup?: string;
|
||||
|
||||
/**
|
||||
* Allows overriding of default template of the popup.
|
||||
*
|
||||
* @default 'template/datepicker/popup.html'
|
||||
*/
|
||||
datepickerPopupTemplateUrl?: string;
|
||||
|
||||
/**
|
||||
* Allows overriding of default template of the datepicker used in popup.
|
||||
*
|
||||
* @default 'template/datepicker/popup.html'
|
||||
*/
|
||||
datepickerTemplateUrl?: string;
|
||||
|
||||
/**
|
||||
* Allows overriding of the default format for html5 date inputs.
|
||||
*/
|
||||
html5Types?: {
|
||||
date?: string;
|
||||
'datetime-local'?: string;
|
||||
month?: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* The text to display for the current day button.
|
||||
@@ -124,13 +178,6 @@ declare module angular.ui.bootstrap {
|
||||
*/
|
||||
currentText?: string;
|
||||
|
||||
/**
|
||||
* The text to display for the toggling week numbers button.
|
||||
*
|
||||
* @default 'Weeks'
|
||||
*/
|
||||
toggleWeeksText?: string;
|
||||
|
||||
/**
|
||||
* The text to display for the clear button.
|
||||
*
|
||||
@@ -165,9 +212,23 @@ declare module angular.ui.bootstrap {
|
||||
* @default true
|
||||
*/
|
||||
showButtonBar?: boolean;
|
||||
|
||||
/**
|
||||
* Whether to focus the datepicker popup upon opening.
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
onOpenFocus?: boolean;
|
||||
}
|
||||
|
||||
|
||||
interface IModalProvider {
|
||||
/**
|
||||
* Default options all modals will use.
|
||||
*/
|
||||
options: IModalSettings;
|
||||
}
|
||||
|
||||
interface IModalService {
|
||||
/**
|
||||
* @param {IModalSettings} options
|
||||
@@ -178,47 +239,52 @@ declare module angular.ui.bootstrap {
|
||||
|
||||
interface IModalServiceInstance {
|
||||
/**
|
||||
* a method that can be used to close a modal, passing a result
|
||||
* A method that can be used to close a modal, passing a result. If `preventDefault` is called on the `modal.closing` event then the modal will remain open.
|
||||
*/
|
||||
close(result?: any): void;
|
||||
|
||||
/**
|
||||
* a method that can be used to dismiss a modal, passing a reason
|
||||
* A method that can be used to dismiss a modal, passing a reason. If `preventDefault` is called on the `modal.closing` event then the modal will remain open.
|
||||
*/
|
||||
dismiss(reason?: any): void;
|
||||
|
||||
/**
|
||||
* a promise that is resolved when a modal is closed and rejected when a modal is dismissed
|
||||
* A promise that is resolved when a modal is closed and rejected when a modal is dismissed.
|
||||
*/
|
||||
result: ng.IPromise<any>;
|
||||
result: angular.IPromise<any>;
|
||||
|
||||
/**
|
||||
* a promise that is resolved when a modal gets opened after downloading content's template and resolving all variables
|
||||
* A promise that is resolved when a modal gets opened after downloading content's template and resolving all variables.
|
||||
*/
|
||||
opened: ng.IPromise<any>;
|
||||
opened: angular.IPromise<any>;
|
||||
|
||||
/**
|
||||
* A promise that is resolved when a modal is rendered.
|
||||
*/
|
||||
rendered: angular.IPromise<any>;
|
||||
}
|
||||
|
||||
interface IModalScope extends ng.IScope {
|
||||
interface IModalScope extends angular.IScope {
|
||||
/**
|
||||
* Those methods make it easy to close a modal window without a need to create a dedicated controller
|
||||
* Dismiss the dialog without assigning a value to the promise output. If `preventDefault` is called on the `modal.closing` event then the modal will remain open.
|
||||
*
|
||||
* @returns true if the modal was closed; otherwise false
|
||||
*/
|
||||
$dismiss(reason?: any): boolean;
|
||||
|
||||
/**
|
||||
* Dismiss the dialog without assigning a value to the promise output
|
||||
* Close the dialog resolving the promise to the given value. If `preventDefault` is called on the `modal.closing` event then the modal will remain open.
|
||||
*
|
||||
* @returns true if the modal was closed; otherwise false
|
||||
*/
|
||||
$dismiss(reason?: any): void;
|
||||
|
||||
/**
|
||||
* Close the dialog resolving the promise to the given value
|
||||
*/
|
||||
$close(result?: any): void;
|
||||
$close(result?: any): boolean;
|
||||
}
|
||||
|
||||
interface IModalSettings {
|
||||
/**
|
||||
* a path to a template representing modal's content
|
||||
*/
|
||||
templateUrl?: string;
|
||||
templateUrl?: string | (() => string);
|
||||
|
||||
/**
|
||||
* inline template representing the modal's content
|
||||
@@ -229,7 +295,7 @@ declare module angular.ui.bootstrap {
|
||||
* a scope instance to be used for the modal's content (actually the $modal service is going to create a child scope of a provided scope).
|
||||
* Defaults to `$rootScope`.
|
||||
*/
|
||||
scope?: IModalScope;
|
||||
scope?: angular.IScope|IModalScope;
|
||||
|
||||
/**
|
||||
* a controller for a modal instance - it can initialize scope used by modal.
|
||||
@@ -237,11 +303,31 @@ declare module angular.ui.bootstrap {
|
||||
*/
|
||||
controller?: any;
|
||||
|
||||
/**
|
||||
* an alternative to the controller-as syntax, matching the API of directive definitions.
|
||||
* Requires the controller option to be provided as well
|
||||
*/
|
||||
controllerAs?: string;
|
||||
|
||||
/**
|
||||
* When used with controllerAs and set to true, it will bind the controller properties onto the $scope directly.
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
bindToController?: boolean;
|
||||
|
||||
/**
|
||||
* members that will be resolved and passed to the controller as locals; it is equivalent of the `resolve` property for AngularJS routes
|
||||
*/
|
||||
resolve?: any;
|
||||
|
||||
/**
|
||||
* Set to false to disable animations on new modal/backdrop. Does not toggle animations for modals/backdrops that are already displayed.
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
animation?: boolean;
|
||||
|
||||
/**
|
||||
* controls the presence of a backdrop
|
||||
* Allowed values:
|
||||
@@ -251,20 +337,27 @@ declare module angular.ui.bootstrap {
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
backdrop?: any;
|
||||
backdrop?: boolean | string;
|
||||
|
||||
/**
|
||||
* indicates whether the dialog should be closable by hitting the ESC key, defaults to true
|
||||
* indicates whether the dialog should be closable by hitting the ESC key
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
keyboard?: boolean;
|
||||
|
||||
/**
|
||||
* additional CSS class(es) to be added to a modal backdrop template
|
||||
*/
|
||||
backdropClass?: string;
|
||||
|
||||
/**
|
||||
* additional CSS class(es) to be added to a modal window template
|
||||
*/
|
||||
windowClass?: string;
|
||||
|
||||
/**
|
||||
* optional size of modal window. Allowed values: 'sm' (small) or 'lg' (large). Requires Bootstrap 3.1.0 or later
|
||||
* Optional suffix of modal window class. The value used is appended to the `modal-` class, i.e. a value of `sm` gives `modal-sm`.
|
||||
*/
|
||||
size?: string;
|
||||
|
||||
@@ -272,6 +365,13 @@ declare module angular.ui.bootstrap {
|
||||
* a path to a template overriding modal's window template
|
||||
*/
|
||||
windowTemplateUrl?: string;
|
||||
|
||||
/**
|
||||
* The class added to the body element when the modal is opened.
|
||||
*
|
||||
* @default 'model-open'
|
||||
*/
|
||||
openedClass?: string;
|
||||
}
|
||||
|
||||
interface IModalStackService {
|
||||
@@ -308,11 +408,6 @@ declare module angular.ui.bootstrap {
|
||||
|
||||
|
||||
interface IPaginationConfig {
|
||||
/**
|
||||
* Current page number. First page is 1.
|
||||
*/
|
||||
page?: number;
|
||||
|
||||
/**
|
||||
* Total number of items in all pages.
|
||||
*/
|
||||
@@ -346,13 +441,6 @@ declare module angular.ui.bootstrap {
|
||||
*/
|
||||
rotate?: boolean;
|
||||
|
||||
/**
|
||||
* An optional expression called when a page is selected having the page number as argument.
|
||||
*
|
||||
* @default null
|
||||
*/
|
||||
onSelectPage?(page: number): void;
|
||||
|
||||
/**
|
||||
* Whether to display Previous / Next buttons.
|
||||
*
|
||||
@@ -394,6 +482,13 @@ declare module angular.ui.bootstrap {
|
||||
* @default 'Last'
|
||||
*/
|
||||
lastText?: string;
|
||||
|
||||
/**
|
||||
* Override the template for the component with a custom provided template.
|
||||
*
|
||||
* @default 'template/pagination/pagination.html'
|
||||
*/
|
||||
templateUrl?: string;
|
||||
}
|
||||
|
||||
interface IPagerConfig {
|
||||
@@ -404,16 +499,6 @@ declare module angular.ui.bootstrap {
|
||||
*/
|
||||
align?: boolean;
|
||||
|
||||
/**
|
||||
* Current page number. First page is 1.
|
||||
*/
|
||||
page?: number;
|
||||
|
||||
/**
|
||||
* Total number of items in all pages.
|
||||
*/
|
||||
totalItems?: number;
|
||||
|
||||
/**
|
||||
* Maximum number of items per page. A value less than one indicates all items on one page.
|
||||
*
|
||||
@@ -421,20 +506,6 @@ declare module angular.ui.bootstrap {
|
||||
*/
|
||||
itemsPerPage?: number;
|
||||
|
||||
/**
|
||||
* An optional expression assigned the total number of pages to display.
|
||||
*
|
||||
* @default angular.noop
|
||||
*/
|
||||
numPages?: number;
|
||||
|
||||
/**
|
||||
* An optional expression called when a page is selected having the page number as argument.
|
||||
*
|
||||
* @default null
|
||||
*/
|
||||
onSelectPage?(page: number): void;
|
||||
|
||||
/**
|
||||
* Text for Previous button.
|
||||
*
|
||||
@@ -509,6 +580,13 @@ declare module angular.ui.bootstrap {
|
||||
* @default: null
|
||||
*/
|
||||
stateOff?: string;
|
||||
|
||||
/**
|
||||
* An array of strings defining titles for all icons.
|
||||
*
|
||||
* @default: ["one", "two", "three", "four", "five"]
|
||||
*/
|
||||
titles?: Array<string>;
|
||||
}
|
||||
|
||||
|
||||
@@ -554,6 +632,20 @@ declare module angular.ui.bootstrap {
|
||||
* @default true
|
||||
*/
|
||||
mousewheel?: boolean;
|
||||
|
||||
/**
|
||||
* Whether the user can use up/down arrowkeys inside the hours & minutes input to increase or decrease it's values.
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
arrowkeys?: boolean;
|
||||
|
||||
/**
|
||||
* Shows spinner arrows above and below the inputs.
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
showSpinners?: boolean;
|
||||
}
|
||||
|
||||
|
||||
@@ -566,7 +658,7 @@ declare module angular.ui.bootstrap {
|
||||
placement?: string;
|
||||
|
||||
/**
|
||||
* Should it fade in and out?
|
||||
* Should the modal fade in and out?
|
||||
*
|
||||
* @default true
|
||||
*/
|
||||
@@ -584,7 +676,21 @@ declare module angular.ui.bootstrap {
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
appendtoBody?: boolean;
|
||||
appendToBody?: boolean;
|
||||
|
||||
/**
|
||||
* What should trigger a show of the tooltip? Supports a space separated list of event names.
|
||||
*
|
||||
* @default 'mouseenter' for tooltip, 'click' for popover
|
||||
*/
|
||||
trigger?: string;
|
||||
|
||||
/**
|
||||
* Should an expression on the scope be used to load the content?
|
||||
*
|
||||
* @default false
|
||||
*/
|
||||
useContentExp?: boolean;
|
||||
}
|
||||
|
||||
interface ITooltipProvider {
|
||||
@@ -600,6 +706,9 @@ declare module angular.ui.bootstrap {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* WARNING: $transition is now deprecated. Use $animate from ngAnimate instead.
|
||||
*/
|
||||
interface ITransitionService {
|
||||
/**
|
||||
* The browser specific animation event name.
|
||||
@@ -623,7 +732,7 @@ declare module angular.ui.bootstrap {
|
||||
*
|
||||
* @return A promise that is resolved when the transition finishes.
|
||||
*/
|
||||
(element: ng.IAugmentedJQuery, trigger: any, options?: ITransitionServiceOptions): ng.IPromise<ng.IAugmentedJQuery>;
|
||||
(element: angular.IAugmentedJQuery, trigger: any, options?: ITransitionServiceOptions): angular.IPromise<angular.IAugmentedJQuery>;
|
||||
}
|
||||
|
||||
interface ITransitionServiceOptions {
|
||||
|
||||
@@ -14,12 +14,28 @@ myApp.config((
|
||||
|
||||
var matcher: ng.ui.IUrlMatcher = $urlMatcherFactory.compile("/foo/:bar?param1");
|
||||
|
||||
$urlMatcherFactory.caseInsensitive(false);
|
||||
var isCaseInsensitive = $urlMatcherFactory.caseInsensitive();
|
||||
|
||||
$urlMatcherFactory.defaultSquashPolicy("nosquash");
|
||||
|
||||
$urlMatcherFactory.strictMode(true);
|
||||
var isStrictMode = $urlMatcherFactory.strictMode();
|
||||
|
||||
$urlMatcherFactory.type("myType2", {
|
||||
encode: function (item: any) { return item; },
|
||||
decode: function (item: any) { return item; },
|
||||
is: function (item: any) { return true; }
|
||||
});
|
||||
|
||||
$urlMatcherFactory.type("fullType", {
|
||||
decode: (val) => parseInt(val, 10),
|
||||
encode: (val) => val && val.toString(),
|
||||
equals: (a, b) => this.is(a) && a === b,
|
||||
is: (val) => angular.isNumber(val) && isFinite(val) && val % 1 === 0,
|
||||
pattern: /\d+/
|
||||
});
|
||||
|
||||
var obj: Object = matcher.exec('/user/bob', { x:'1', q:'hello' });
|
||||
var concat: ng.ui.IUrlMatcher = matcher.concat('/test');
|
||||
var str: string = matcher.format({ id:'bob', q:'yes' });
|
||||
@@ -50,10 +66,17 @@ myApp.config((
|
||||
.state('state1.list', {
|
||||
url: "/list",
|
||||
templateUrl: "partials/state1.list.html",
|
||||
controller: function ($scope: MyAppScope) {
|
||||
controller: function ($scope: MyAppScope) {
|
||||
$scope.items = ["A", "List", "Of", "Items"];
|
||||
}
|
||||
})
|
||||
.state('state1.list', {
|
||||
url: "/list",
|
||||
templateUrl: "partials/state1.list.html",
|
||||
controller: ['$scope', function ($scope: MyAppScope) {
|
||||
$scope.items = ["A", "List", "Of", "Items"];
|
||||
}]
|
||||
})
|
||||
.state('state2', {
|
||||
url: "/state2",
|
||||
templateUrl: "partials/state2.html"
|
||||
@@ -61,10 +84,26 @@ myApp.config((
|
||||
.state('state2.list', {
|
||||
url: "/list",
|
||||
templateUrl: "partials/state2.list.html",
|
||||
controller: function ($scope: MyAppScope) {
|
||||
controller: function ($scope: MyAppScope) {
|
||||
$scope.things = ["A", "Set", "Of", "Things"];
|
||||
}
|
||||
}).state('index', {
|
||||
})
|
||||
.state('list', {
|
||||
parent: 'state3',
|
||||
url: "/list",
|
||||
templateUrl: "partials/state3.list.html",
|
||||
controller: function ($scope: MyAppScope) {
|
||||
$scope.things = ["A", "Set", "Of", "Things"];
|
||||
}
|
||||
})
|
||||
.state('state4', {
|
||||
url: "/state4",
|
||||
templateUrl: function($stateParams: ng.ui.IStateParamsService){
|
||||
//Logic could go here based on $stateParams
|
||||
return "partials/state4.html";
|
||||
}
|
||||
})
|
||||
.state('index', {
|
||||
url: "",
|
||||
views: {
|
||||
"viewA": { template: "index.viewA" },
|
||||
@@ -126,7 +165,9 @@ class UrlLocatorTestService implements IUrlLocatorTestService {
|
||||
|
||||
private stateServiceTest() {
|
||||
this.$state.go("myState");
|
||||
this.$state.go(this.$state.current);
|
||||
this.$state.transitionTo("myState");
|
||||
this.$state.transitionTo(this.$state.current);
|
||||
if (this.$state.includes("myState") === true) {
|
||||
//
|
||||
}
|
||||
@@ -139,6 +180,24 @@ class UrlLocatorTestService implements IUrlLocatorTestService {
|
||||
this.$state.get("myState");
|
||||
this.$state.get();
|
||||
this.$state.reload();
|
||||
|
||||
// http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#properties
|
||||
if (this.$state.transition) {
|
||||
var transitionPromise: ng.IPromise<{}> = this.$state.transition;
|
||||
transitionPromise.then(() => {
|
||||
// transition success
|
||||
}, () => {
|
||||
// transition failure
|
||||
}).catch(() => {
|
||||
// transition failure
|
||||
}).finally(() => {
|
||||
// transition ended (success or failure)
|
||||
});
|
||||
}
|
||||
|
||||
// Accesses the currently resolved values for the current state
|
||||
// http://stackoverflow.com/questions/28026620/is-there-a-way-to-access-resolved-state-dependencies-besides-injecting-them-into/28027023#28027023
|
||||
var resolvedValues = this.$state.$current.locals.globals;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,3 +216,35 @@ module UiViewScrollProviderTests {
|
||||
$uiViewScrollProvider.useAnchorScroll();
|
||||
}]);
|
||||
}
|
||||
|
||||
interface ITestUserService {
|
||||
isLoggedIn: () => boolean;
|
||||
handleLogin: () => ng.IPromise<{}>;
|
||||
}
|
||||
|
||||
module UrlRouterProviderTests {
|
||||
var app = angular.module("urlRouterProviderTests", ["ui.router"]);
|
||||
|
||||
app.config(($urlRouterProvider: ng.ui.IUrlRouterProvider) => {
|
||||
// Prevent $urlRouter from automatically intercepting URL changes;
|
||||
// this allows you to configure custom behavior in between
|
||||
// location changes and route synchronization:
|
||||
$urlRouterProvider.deferIntercept();
|
||||
}).run(($rootScope: ng.IRootScopeService, $urlRouter: ng.ui.IUrlRouterService, UserService: ITestUserService) => {
|
||||
$rootScope.$on('$locationChangeSuccess', e => {
|
||||
// UserService is an example service for managing user state
|
||||
if (UserService.isLoggedIn()) return;
|
||||
|
||||
// Prevent $urlRouter's default handler from firing
|
||||
e.preventDefault();
|
||||
|
||||
UserService.handleLogin().then(() => {
|
||||
// Once the user has logged in, sync the current URL to the router:
|
||||
$urlRouter.sync();
|
||||
});
|
||||
});
|
||||
|
||||
// Configures $urlRouter's listener *after* your custom listener
|
||||
$urlRouter.listen();
|
||||
});
|
||||
}
|
||||
|
||||
+172
-19
@@ -5,6 +5,12 @@
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
// Support for AMD require
|
||||
declare module 'angular-ui-router' {
|
||||
var _: string;
|
||||
export = _;
|
||||
}
|
||||
|
||||
declare module angular.ui {
|
||||
|
||||
interface IState {
|
||||
@@ -16,25 +22,32 @@ declare module angular.ui {
|
||||
/**
|
||||
* String URL path to template file OR Function, returns URL path string
|
||||
*/
|
||||
templateUrl?: string | {(): string};
|
||||
templateUrl?: string | {(params: IStateParamsService): string};
|
||||
/**
|
||||
* Function, returns HTML content string
|
||||
*/
|
||||
templateProvider?: Function;
|
||||
templateProvider?: Function | Array<string|Function>;
|
||||
/**
|
||||
* A controller paired to the state. Function OR name as String
|
||||
* A controller paired to the state. Function, annotated array or name as String
|
||||
*/
|
||||
controller?: Function | string;
|
||||
controller?: Function|string|Array<string|Function>;
|
||||
controllerAs?: string;
|
||||
/**
|
||||
* Function (injectable), returns the actual controller function or string.
|
||||
*/
|
||||
controllerProvider?: Function;
|
||||
resolve?: {};
|
||||
controllerProvider?: Function|Array<string|Function>;
|
||||
|
||||
/**
|
||||
* Specifies the parent state of this state
|
||||
*/
|
||||
parent?: string | IState;
|
||||
|
||||
|
||||
resolve?: { [name:string]: any };
|
||||
/**
|
||||
* A url with optional parameters. When a state is navigated or transitioned to, the $stateParams service will be populated with any parameters that were passed.
|
||||
*/
|
||||
url?: string;
|
||||
url?: string | IUrlMatcher;
|
||||
/**
|
||||
* A map which optionally configures parameters declared in the url, or defines additional non-url parameters. Only use this within a state if you are not using url. Otherwise you can specify your parameters within the url. When a state is navigated or transitioned to, the $stateParams service will be populated with any parameters that were passed.
|
||||
*/
|
||||
@@ -42,27 +55,35 @@ declare module angular.ui {
|
||||
/**
|
||||
* Use the views property to set up multiple views. If you don't need multiple views within a single state this property is not needed. Tip: remember that often nested views are more useful and powerful than multiple sibling views.
|
||||
*/
|
||||
views?: {};
|
||||
views?: { [name:string]: IState };
|
||||
abstract?: boolean;
|
||||
/**
|
||||
* Callback functions for when a state is entered and exited. Good way to trigger an action or dispatch an event, such as opening a dialog.
|
||||
* Callback function for when a state is entered. Good way to trigger an action or dispatch an event, such as opening a dialog.
|
||||
* If minifying your scripts, make sure to explicitly annotate this function, because it won't be automatically annotated by your build tools.
|
||||
*/
|
||||
onEnter?: Function;
|
||||
onEnter?: Function|Array<string|Function>;
|
||||
/**
|
||||
* Callback functions for when a state is entered and exited. Good way to trigger an action or dispatch an event, such as opening a dialog.
|
||||
* If minifying your scripts, make sure to explicitly annotate this function, because it won't be automatically annotated by your build tools.
|
||||
*/
|
||||
onExit?: Function;
|
||||
onExit?: Function|Array<string|Function>;
|
||||
/**
|
||||
* Arbitrary data object, useful for custom configuration.
|
||||
*/
|
||||
data?: any;
|
||||
|
||||
/**
|
||||
* Boolean (default true). If false will not retrigger the same state just because a search/query parameter has changed. Useful for when you'd like to modify $location.search() without triggering a reload.
|
||||
* Boolean (default true). If false will not re-trigger the same state just because a search/query parameter has changed. Useful for when you'd like to modify $location.search() without triggering a reload.
|
||||
*/
|
||||
reloadOnSearch?: boolean;
|
||||
|
||||
/**
|
||||
* Boolean (default true). If false will reload state on everytransitions. Useful for when you'd like to restore all data to its initial state.
|
||||
*/
|
||||
cache?: boolean;
|
||||
}
|
||||
|
||||
interface IStateProvider extends IServiceProvider {
|
||||
interface IStateProvider extends angular.IServiceProvider {
|
||||
state(name:string, config:IState): IStateProvider;
|
||||
state(config:IState): IStateProvider;
|
||||
decorator(name?: string, decorator?: (state: IState, parent: Function) => any): any;
|
||||
@@ -76,12 +97,73 @@ declare module angular.ui {
|
||||
}
|
||||
|
||||
interface IUrlMatcherFactory {
|
||||
/**
|
||||
* Creates a UrlMatcher for the specified pattern.
|
||||
*
|
||||
* @param pattern {string} The URL pattern.
|
||||
*
|
||||
* @returns {IUrlMatcher} The UrlMatcher.
|
||||
*/
|
||||
compile(pattern: string): IUrlMatcher;
|
||||
/**
|
||||
* Returns true if the specified object is a UrlMatcher, or false otherwise.
|
||||
*
|
||||
* @param o {any} The object to perform the type check against.
|
||||
*
|
||||
* @returns {boolean} Returns true if the object matches the IUrlMatcher interface, by implementing all the same methods.
|
||||
*/
|
||||
isMatcher(o: any): boolean;
|
||||
type(name: string, definition: any, definitionFn?: any): any;
|
||||
/**
|
||||
* Returns a type definition for the specified name
|
||||
*
|
||||
* @param name {string} The type definition name
|
||||
*
|
||||
* @returns {IType} The type definition
|
||||
*/
|
||||
type(name: string): IType;
|
||||
/**
|
||||
* Registers a custom Type object that can be used to generate URLs with typed parameters.
|
||||
*
|
||||
* @param {IType} definition The type definition.
|
||||
* @param {any[]} inlineAnnotedDefinitionFn A function that is injected before the app runtime starts. The result of this function is merged into the existing definition.
|
||||
*
|
||||
* @returns {IUrlMatcherFactory} Returns $urlMatcherFactoryProvider.
|
||||
*/
|
||||
type(name: string, definition: IType, inlineAnnotedDefinitionFn?: any[]): IUrlMatcherFactory;
|
||||
/**
|
||||
* Registers a custom Type object that can be used to generate URLs with typed parameters.
|
||||
*
|
||||
* @param {IType} definition The type definition.
|
||||
* @param {any[]} inlineAnnotedDefinitionFn A function that is injected before the app runtime starts. The result of this function is merged into the existing definition.
|
||||
*
|
||||
* @returns {IUrlMatcherFactory} Returns $urlMatcherFactoryProvider.
|
||||
*/
|
||||
type(name: string, definition: IType, definitionFn?: (...args:any[]) => IType): IUrlMatcherFactory;
|
||||
/**
|
||||
* Defines whether URL matching should be case sensitive (the default behavior), or not.
|
||||
*
|
||||
* @param value {boolean} false to match URL in a case sensitive manner; otherwise true;
|
||||
*
|
||||
* @returns {boolean} the current value of caseInsensitive
|
||||
*/
|
||||
caseInsensitive(value?: boolean): boolean;
|
||||
/**
|
||||
* Sets the default behavior when generating or matching URLs with default parameter values
|
||||
*
|
||||
* @param value {string} A string that defines the default parameter URL squashing behavior. nosquash: When generating an href with a default parameter value, do not squash the parameter value from the URL slash: When generating an href with a default parameter value, squash (remove) the parameter value, and, if the parameter is surrounded by slashes, squash (remove) one slash from the URL any other string, e.g. "~": When generating an href with a default parameter value, squash (remove) the parameter value from the URL and replace it with this string.
|
||||
*/
|
||||
defaultSquashPolicy(value: string): void;
|
||||
/**
|
||||
* Defines whether URLs should match trailing slashes, or not (the default behavior).
|
||||
*
|
||||
* @param value {boolean} false to match trailing slashes in URLs, otherwise true.
|
||||
*
|
||||
* @returns {boolean} the current value of strictMode
|
||||
*/
|
||||
strictMode(value?: boolean): boolean;
|
||||
}
|
||||
|
||||
interface IUrlRouterProvider extends IServiceProvider {
|
||||
interface IUrlRouterProvider extends angular.IServiceProvider {
|
||||
when(whenPath: RegExp, handler: Function): IUrlRouterProvider;
|
||||
when(whenPath: RegExp, handler: any[]): IUrlRouterProvider;
|
||||
when(whenPath: RegExp, toPath: string): IUrlRouterProvider;
|
||||
@@ -96,6 +178,14 @@ declare module angular.ui {
|
||||
otherwise(path: string): IUrlRouterProvider;
|
||||
rule(handler: Function): IUrlRouterProvider;
|
||||
rule(handler: any[]): IUrlRouterProvider;
|
||||
/**
|
||||
* Disables (or enables) deferring location change interception.
|
||||
*
|
||||
* If you wish to customize the behavior of syncing the URL (for example, if you wish to defer a transition but maintain the current URL), call this method at configuration time. Then, at run time, call $urlRouter.listen() after you have configured your own $locationChangeSuccess event handler.
|
||||
*
|
||||
* @param {boolean} defer Indicates whether to defer location change interception. Passing no parameter is equivalent to true.
|
||||
*/
|
||||
deferIntercept(defer?: boolean): void;
|
||||
}
|
||||
|
||||
interface IStateOptions {
|
||||
@@ -143,9 +233,12 @@ declare module angular.ui {
|
||||
*
|
||||
* @param options Options object.
|
||||
*/
|
||||
go(to: string, params?: {}, options?: IStateOptions): IPromise<any>;
|
||||
transitionTo(state: string, params?: {}, updateLocation?: boolean): void;
|
||||
transitionTo(state: string, params?: {}, options?: IStateOptions): void;
|
||||
go(to: string, params?: {}, options?: IStateOptions): angular.IPromise<any>;
|
||||
go(to: IState, params?: {}, options?: IStateOptions): angular.IPromise<any>;
|
||||
transitionTo(state: string, params?: {}, updateLocation?: boolean): angular.IPromise<any>;
|
||||
transitionTo(state: IState, params?: {}, updateLocation?: boolean): angular.IPromise<any>;
|
||||
transitionTo(state: string, params?: {}, options?: IStateOptions): angular.IPromise<any>;
|
||||
transitionTo(state: IState, params?: {}, options?: IStateOptions): angular.IPromise<any>;
|
||||
includes(state: string, params?: {}): boolean;
|
||||
is(state:string, params?: {}): boolean;
|
||||
is(state: IState, params?: {}): boolean;
|
||||
@@ -153,9 +246,25 @@ declare module angular.ui {
|
||||
href(state: string, params?: {}, options?: IHrefOptions): string;
|
||||
get(state: string): IState;
|
||||
get(): IState[];
|
||||
/** A reference to the state's config object. However you passed it in. Useful for accessing custom data. */
|
||||
current: IState;
|
||||
/** A param object, e.g. {sectionId: section.id)}, that you'd like to test against the current active state. */
|
||||
params: IStateParamsService;
|
||||
reload(): void;
|
||||
reload(): angular.IPromise<any>;
|
||||
|
||||
/** Currently pending transition. A promise that'll resolve or reject. */
|
||||
transition: angular.IPromise<{}>;
|
||||
|
||||
$current: IResolvedState;
|
||||
}
|
||||
|
||||
interface IResolvedState {
|
||||
locals: {
|
||||
/**
|
||||
* Currently resolved "resolve" values from the current state
|
||||
*/
|
||||
globals: { [key: string]: any; };
|
||||
};
|
||||
}
|
||||
|
||||
interface IStateParamsService {
|
||||
@@ -174,6 +283,7 @@ declare module angular.ui {
|
||||
*
|
||||
*/
|
||||
sync(): void;
|
||||
listen(): void;
|
||||
}
|
||||
|
||||
interface IUiViewScrollProvider {
|
||||
@@ -183,4 +293,47 @@ declare module angular.ui {
|
||||
*/
|
||||
useAnchorScroll(): void;
|
||||
}
|
||||
|
||||
interface IType {
|
||||
/**
|
||||
* Converts a parameter value (from URL string or transition param) to a custom/native value.
|
||||
*
|
||||
* @param val {string} The URL parameter value to decode.
|
||||
* @param key {string} The name of the parameter in which val is stored. Can be used for meta-programming of Type objects.
|
||||
*
|
||||
* @returns {any} Returns a custom representation of the URL parameter value.
|
||||
*/
|
||||
decode(val: string, key: string): any;
|
||||
/**
|
||||
* Encodes a custom/native type value to a string that can be embedded in a URL. Note that the return value does not need to be URL-safe (i.e. passed through encodeURIComponent()), it only needs to be a representation of val that has been coerced to a string.
|
||||
*
|
||||
* @param val {any} The value to encode.
|
||||
* @param key {string} The name of the parameter in which val is stored. Can be used for meta-programming of Type objects.
|
||||
*
|
||||
* @returns {string} Returns a string representation of val that can be encoded in a URL.
|
||||
*/
|
||||
encode(val: any, key: string): string;
|
||||
/**
|
||||
* Determines whether two decoded values are equivalent.
|
||||
*
|
||||
* @param a {any} A value to compare against.
|
||||
* @param b {any} A value to compare against.
|
||||
*
|
||||
* @returns {boolean} Returns true if the values are equivalent/equal, otherwise false.
|
||||
*/
|
||||
equals? (a: any, b: any): boolean;
|
||||
/**
|
||||
* Detects whether a value is of a particular type. Accepts a native (decoded) value and determines whether it matches the current Type object.
|
||||
*
|
||||
* @param val {any} The value to check.
|
||||
* @param key {any} Optional. If the type check is happening in the context of a specific UrlMatcher object, this is the name of the parameter in which val is stored. Can be used for meta-programming of Type objects.
|
||||
*
|
||||
* @returns {boolean} Returns true if the value matches the type, otherwise false.
|
||||
*/
|
||||
is(val: any, key: string): boolean;
|
||||
/**
|
||||
* The regular expression pattern used to match values of this type when coming from a substring of a URL.
|
||||
*/
|
||||
pattern?: RegExp;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
/// <reference path="angular-ui-scroll.d.ts" />
|
||||
var myApp = angular.module('application', ['ui.scroll', 'ui.scroll.jqlite']);
|
||||
|
||||
module application {
|
||||
interface IItem {
|
||||
id: number;
|
||||
content: string;
|
||||
}
|
||||
|
||||
class DatasourceTest implements ng.ui.IScrollDatasource<IItem> {
|
||||
get(index: number, count: number, success: (results: IItem[]) => void): void {
|
||||
var ret = new Array<IItem>();
|
||||
for (var i=0; i < count; i++) {
|
||||
ret.push({id: i, content: 'item ' + i.toString()});
|
||||
}
|
||||
success(ret);
|
||||
}
|
||||
}
|
||||
|
||||
function factory(): any {
|
||||
return DatasourceTest;
|
||||
}
|
||||
|
||||
myApp.factory('DatasourceTest', factory);
|
||||
|
||||
// demo/examples/adapter
|
||||
myApp.controller('mainController', ['$scope', 'DatasourceTest', function($scope: ng.IScope, datasource: DatasourceTest) {
|
||||
var firstListAdapter: ng.ui.IScrollAdapter, secondListAdapter: ng.ui.IScrollAdapter;
|
||||
$scope['datasource'] = datasource;
|
||||
|
||||
$scope['updateList1'] = (): void => {
|
||||
firstListAdapter.applyUpdates( (item: IItem, scope: ng.IRepeatScope) => {
|
||||
return item.content += ' *';
|
||||
})
|
||||
};
|
||||
|
||||
$scope['removeFromList1'] = (): void => {
|
||||
firstListAdapter.applyUpdates( (item: IItem, scope: ng.IRepeatScope) => {
|
||||
if (scope.$index % 2 === 0) {
|
||||
return []
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
var idList1: number = 1000;
|
||||
$scope['addToList1'] = (): void => {
|
||||
firstListAdapter.applyUpdates((item: IItem, scope: ng.IRepeatScope) => {
|
||||
var newItem: IItem;
|
||||
newItem = void 0;
|
||||
if (scope.$index === 2) {
|
||||
newItem = {
|
||||
id: idList1,
|
||||
content: 'a new one #' + idList1
|
||||
};
|
||||
idList1++;
|
||||
return [item, newItem];
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$scope['updateList2'] = (): void => {
|
||||
secondListAdapter.applyUpdates((item: IItem, scope: ng.IRepeatScope) => {
|
||||
return item.content += ' *';
|
||||
});
|
||||
};
|
||||
|
||||
$scope['removeFromList2'] = (): void => {
|
||||
secondListAdapter.applyUpdates((item: IItem, scope: ng.IRepeatScope) => {
|
||||
if (scope.$index % 2 !== 0) {
|
||||
return [];
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
var idList2: number = 2000;
|
||||
$scope['addToList2'] = (): void => {
|
||||
secondListAdapter.applyUpdates((item: IItem, scope: ng.IRepeatScope) => {
|
||||
var newItem: IItem;
|
||||
newItem = void 0;
|
||||
if (scope.$index === 4) {
|
||||
newItem = {
|
||||
id: idList2,
|
||||
content: 'a new one #' + idList1
|
||||
};
|
||||
idList2++;
|
||||
return [item, newItem];
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
}]);
|
||||
}
|
||||
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
// Type definitions for Angular JS 1.3.1+ (ui.scroll module)
|
||||
// Project: https://github.com/angular-ui/ui-scroll
|
||||
// Definitions by: Mark Nadig <https://github.com/marknadig>
|
||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
||||
|
||||
/// <reference path="../angularjs/angular.d.ts" />
|
||||
|
||||
declare module angular.ui {
|
||||
interface IScrollDatasource<T> {
|
||||
/**
|
||||
* The datasource object implements methods and properties to be used by the directive to access the data
|
||||
*
|
||||
* @param index indicates the first data row requested
|
||||
*
|
||||
* @param count indicates number of data rows requested
|
||||
*
|
||||
* @param success function to call when the data are retrieved. The implementation of the service has to call
|
||||
* this function when the data are retrieved and pass it an array of the items retrieved. If no items are
|
||||
* retrieved, an empty array has to be passed.
|
||||
*
|
||||
* Important: Make sure to respect the index and count parameters of the request. The array passed to the
|
||||
* success method should have exactly count elements unless it hit eof/bof
|
||||
*/
|
||||
get(index: number, count: number, success: (results: Array<T>) => any): void;
|
||||
}
|
||||
|
||||
interface IScrollAdapter {
|
||||
/**
|
||||
* a boolean value indicating whether there are any pending load requests.
|
||||
*/
|
||||
isLoading: boolean;
|
||||
/**
|
||||
* a reference to the item currently in the topmost visible position.
|
||||
*/
|
||||
topVisible: any;
|
||||
/**
|
||||
* a reference to the DOM element currently in the topmost visible position.
|
||||
*/
|
||||
topVisibleElement: ng.IAugmentedJQueryStatic;
|
||||
/**
|
||||
* a reference to the scope created for the item currently in the topmost visible position.
|
||||
*/
|
||||
topVisibleScope: ng.IRepeatScope;
|
||||
/**
|
||||
* calling this method reinitializes and reloads the scroller content.
|
||||
*/
|
||||
reload(): void;
|
||||
/**
|
||||
* Replaces the item in the buffer at the given index with the new items.
|
||||
*
|
||||
* @param index provides position of the item to be affected in the dataset (not in the buffer). If the item with
|
||||
* the given index currently is not in the buffer no updates will be applied. $index property of the item $scope
|
||||
* can be used to access the index value for a given item
|
||||
*
|
||||
* @param newItems is an array of items to replace the affected item. If the array is empty ([]) the item will
|
||||
* be deleted, otherwise the items in the array replace the item. If the newItem array contains the old item,
|
||||
* the old item stays in place.
|
||||
*/
|
||||
applyUpdates(index: number, newItems: any[]): void;
|
||||
/**
|
||||
* Replaces the item in the buffer at the given index with the new items.
|
||||
*
|
||||
* @param updater is a function to be applied to every item currently in the buffer. The function will receive
|
||||
* 3 parameters: item, scope, and element. Here item is the item to be affected, scope is the item $scope, and
|
||||
* element is the html element for the item. The return value of the function should be an array of items.
|
||||
* Similarly to the newItem parameter (see above), if the array is empty([]), the item is deleted, otherwise
|
||||
* the item is replaced by the items in the array. If the return value is not an array, the item remains
|
||||
* unaffected, unless some updates were made to the item in the updater function. This can be thought of as
|
||||
* in place update.
|
||||
*/
|
||||
applyUpdates(updater: (item: any, scope: ng.IRepeatScope) => any): void;
|
||||
/**
|
||||
* Adds new items after the last item in the buffer
|
||||
*
|
||||
* @param newItems provides an array of items to be appended.
|
||||
*/
|
||||
append(newItems: any[]): void;
|
||||
/**
|
||||
* Adds new items before the first item in the buffer
|
||||
*
|
||||
* @param newItems provides an array of items to be prepended.
|
||||
*/
|
||||
prepend(newItems: any[]): void;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
/// <reference path="angular-ui-tree.d.ts" />
|
||||
|
||||
var treeNode: AngularUITree.ITreeNode = {
|
||||
id: 0,
|
||||
nodes: [],
|
||||
title: "test"
|
||||
};
|
||||
|
||||
var treeNode2: AngularUITree.ITreeNode = {
|
||||
id: "0",
|
||||
nodes: [treeNode],
|
||||
title: "test2"
|
||||
};
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user