refactor(wheel-selector): added display key to override default values, added more docs (#1590)

This commit is contained in:
jasonmamy 2017-05-20 03:25:34 -07:00 committed by Ibby Hadeed
parent 2b3d4c9090
commit c2a6198576

View File

@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core'; import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export interface WheelSelectorItem { export interface WheelSelectorItem {
description: string; description?: string;
} }
export interface WheelSelectorOptions { export interface WheelSelectorOptions {
@ -44,6 +44,13 @@ export interface WheelSelectorOptions {
* Default: false * Default: false
*/ */
wrapWheelText?: boolean; wrapWheelText?: boolean;
/**
* The json key to display, by default it is description, this allows for setting any
* key/value to be displayed
* Default: description
*/
displayKey?: string;
} }
export interface WheelSelectorData { export interface WheelSelectorData {
@ -75,44 +82,85 @@ export interface WheelSelectorData {
* { description: "Banana" }, * { description: "Banana" },
* { description: "Tangerine" } * { description: "Tangerine" }
* ], * ],
* }; * firstNames: [
* * { name: "Fred", id: '1' },
* //use most of the default values * { name: "Jane", id: '2' },
* this.selector.show({ * { name: "Bob", id: '3' },
* title: "Select some Fruit", * { name: "Earl", id: '4' },
* items: [ * { name: "Eunice", id: '5' }
* jsonData.numbers, * ],
* jsonData.fruits * lastNames: [
* { name: "Johnson", id: '100' },
* { name: "Doe", id: '101' },
* { name: "Kinishiwa", id: '102' },
* { name: "Gordon", id: '103' },
* { name: "Smith", id: '104' }
* ] * ]
* }).then( * };
* result => {
* console.log('Selected: ' + result[0].description + ' at index: ' + result[0].index
* + ' and ' + result[1].description + ' at index: ' + result[1].index);
* },
* err => console.log('Error occurred while getting result: ', err)
* );
* *
* ... * ...
* *
* //set some initial default values to display: "2", "Tangerine" * //basic number selection, index is always returned in the result
* selectANumber() {
* this.selector.show({ * this.selector.show({
* title: "Select some Fruit", * title: "How Many?",
* items: [ * items: [
* jsonData.numbers, * this.jsonData.numbers
* jsonData.fruits
* ], * ],
* }).then(
* result => {
* console.log(result[0].description + ' at index: ' + result[0].index);
* },
* err => console.log('Error: ', err)
* );
* }
*
* ...
*
* //basic selection, setting initial displayed default values: '3' 'Banana'
* selectFruit() {
* this.selector.show({
* title: "How Much?",
* items: [
* this.jsonData.numbers, this.jsonData.fruits
* ],
* positiveButtonText: "Ok",
* negativeButtonText: "Nope",
* defaultItems: [ * defaultItems: [
* jsonData.numbers[1], * this.jsonData.numbers[2], // '3'
* jsonData.fruits[2] * this.jsonData.fruits[3] // 'Banana'
* ] * ]
* }).then( * }).then(
* result => { * result => {
* console.log('Selected: ' + result[0].description + ' at index: ' + result[0].index * console.log(result[0].description + ' ' + result[1].description);
* + ' and ' + result[1].description + ' at index: ' + result[1].index);
* }, * },
* err => console.log('Error occurred while getting result: ', err) * err => console.log('Error: ' + JSON.stringify(err))
* ); * );
* }
* *
* ...
*
* //more complex as overrides which key to display
* //then retrieve properties from original data
* selectNamesUsingDisplayKey() {
* this.selector.show({
* title: "Who?",
* items: [
* this.jsonData.firstNames, this.jsonData.lastNames
* ],
* displayKey: 'name',
* defaultItems: [
* this.jsonData.firstNames[2],
* this.jsonData.lastNames[3]
* ]
* }).then(
* result => {
* console.log(result[0].name + ' (id= ' + this.jsonData.firstNames[result[0].index].id + '), ' +
* result[1].name + ' (id=' + this.jsonData.lastNames[result[1].index].id + ')');
* },
* err => console.log('Error: ' + JSON.stringify(err))
* );
* }
* *
* ``` * ```
* *