awaken-direct-democracy
Version:
This is the functional skeleton / working mock up of a disruptive app to increase voter turnout and participation driven at the start by just one person - Tom Atkinson in New Zealand - after watching in horror the signing of the TPPA in Auckland February
100 lines (86 loc) • 2.73 kB
text/typescript
import { Component } from '@angular/core';
import { ActionSheet, ActionSheetController, Config, NavController } from 'ionic-angular';
// import { InAppBrowser } from 'ionic-native';
import { ConferenceData } from '../../providers/conference-data';
import { SessionDetailPage } from '../session-detail/session-detail';
import { SpeakerDetailPage } from '../speaker-detail/speaker-detail';
({
selector: 'page-candidate-list',
templateUrl: 'candidate-list.html'
})
export class CandidateListPage {
actionSheet: ActionSheet;
speakers = [];
constructor(public actionSheetCtrl: ActionSheetController, public navCtrl: NavController, public confData: ConferenceData, public config: Config) {
confData.getSpeakers().then(speakers => {
this.speakers = speakers;
});
}
goToSessionDetail(session) {
this.navCtrl.push(SessionDetailPage, session);
}
goToSpeakerDetail(speakerName: string) {
this.navCtrl.push(SpeakerDetailPage, speakerName);
}
goToSpeakerTwitter(speaker) {
// TODO FIX
// let app = new InAppBrowser(`https://twitter.com/${speaker.twitter}`, '_blank');
// app.on('loadstop').subscribe(
// (ev) => {
// console.log('InAppBrowser loaded!');
// });
}
openSpeakerShare(speaker) {
let actionSheet = this.actionSheetCtrl.create({
title: 'Share ' + speaker.name,
buttons: [
{
text: 'Copy Link',
handler: () => {
console.log('Copy link clicked on https://twitter.com/' + speaker.twitter);
if (window['cordova'] && window['cordova'].plugins.clipboard) {
window['cordova'].plugins.clipboard.copy('https://twitter.com/' + speaker.twitter);
}
}
},
{
text: 'Share via ...',
handler: () => {
console.log('Share via clicked');
}
},
{
text: 'Cancel',
role: 'cancel',
handler: () => {
console.log('Cancel clicked');
}
}
]
});
actionSheet.present();
}
openContact(speaker) {
let mode = this.config.get('mode');
let actionSheet = this.actionSheetCtrl.create({
title: 'Contact with ' + speaker.name,
buttons: [
{
text: `Email ( ${speaker.email} )`,
icon: mode !== 'ios' ? 'mail' : null,
handler: () => {
window.open('mailto:' + speaker.email);
}
},
{
text: `Call ( ${speaker.phone} )`,
icon: mode !== 'ios' ? 'call' : null,
handler: () => {
window.open('tel:' + speaker.phone);
}
}
]
});
actionSheet.present();
}
}