diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj index eeadb7baf..42df25130 100644 --- a/CrossPlatformModules.csproj +++ b/CrossPlatformModules.csproj @@ -77,6 +77,8 @@ + + @@ -541,6 +543,8 @@ Designer + + @@ -664,7 +668,7 @@ - + @@ -1508,7 +1512,7 @@ False - + \ No newline at end of file diff --git a/apps/TelerikNEXT/app-view-model.ts b/apps/TelerikNEXT/app-view-model.ts index f20cc5dc8..b04b1d3d2 100644 --- a/apps/TelerikNEXT/app-view-model.ts +++ b/apps/TelerikNEXT/app-view-model.ts @@ -1,14 +1,103 @@ import observable = require("data/observable"); +import dialogs = require("ui/dialogs"); +import localSettings = require("local-settings"); import button = require("ui/button"); +var everlive = require("./lib/everlive"); + +interface ConferenceDay { + date: Date; + title: string; +} + +interface Speaker { + //Id: string; + name: string; + title: string; + company: string; + picture: string; +} + +interface Session { + Id: string; + title: string; + start: Date; + end: Date; + room: string; + speakers: Array; +} + +var conferenceDays: Array = [ + { title: "WORKSHOPS", date: new Date(2015, 5, 3) }, + { title: "CONFERENCE DAY 1", date: new Date(2015, 5, 4) }, + { title: "CONFERENCE DAY 2", date: new Date(2015, 5, 5) } +]; +var sessions: Array = new Array(); + +var FAVOURITES = "FAVOURITES"; +var favourites: Array; +try { + favourites = >JSON.parse(localSettings.getString(FAVOURITES, "[]")); +} +catch (error) { + console.log("Error while retrieveing favourites: " + error); + favourites = new Array(); + updateFavourites() +} + +function addToFavourites(session: SessionModel) { + if (favourites.indexOf(session.Id) < 0) { + favourites.push(session.Id); + updateFavourites(); + } +} + +function removeFromFavourites(session: SessionModel) { + var index = favourites.indexOf(session.Id); + if (index >= 0) { + favourites.splice(index, 1); + updateFavourites(); + } +} + +function updateFavourites() { + var newValue = JSON.stringify(favourites); + localSettings.setString(FAVOURITES, newValue); +} + +var el = new everlive("mzacGkKPFlZUfbMq"); +var expandExp = { + "speakers": true +}; +el.data('NextSessions').expand(expandExp).get().then( + function (data) { + //console.log("Sessions are[" + data.result[1].Data + "]") + var sessionsFromEvelive: Array = > data.result; + + for (var i = 0; i < sessionsFromEvelive.length; i++) { + var newSession = new SessionModel(sessionsFromEvelive[i]); + if (favourites.indexOf(newSession.Id) >= 0) { + newSession.favorite = true; + } + sessions.push(newSession); + } + + appModel.onDataLoaded(); + + }, function (error) { + dialogs.alert("Could not load sessions. Error: " + error); + } +); export class AppViewModel extends observable.Observable { public selectedViewIndex: number; + private _selectedIndex; constructor() { super(); this.selectedIndex = 0; this.selectedViewIndex = 1; + this.set("isLoading", true); } private _sessions: Array; @@ -16,8 +105,8 @@ export class AppViewModel extends observable.Observable { return this._sessions; } - get speakers(): Array { - return speakers; + get favorites(): Array { + return this.sessions.filter(i=> { return i.favorite }); } private _search = ""; @@ -33,7 +122,6 @@ export class AppViewModel extends observable.Observable { } } - private _selectedIndex; get selectedIndex(): number { return this._selectedIndex; } @@ -42,6 +130,8 @@ export class AppViewModel extends observable.Observable { this._selectedIndex = value; this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "selectedIndex", value: value }); + this.set("dayHeader", conferenceDays[value].title); + if (this.search !== "") { this.search = ""; } else { @@ -52,7 +142,7 @@ export class AppViewModel extends observable.Observable { private filter() { this._sessions = sessions.filter(s=> { - return s.start.getDay() === dates[this.selectedIndex].getDay() + return s.start.getDate() === conferenceDays[this.selectedIndex].date.getDate() && s.title.toLocaleLowerCase().indexOf(this.search.toLocaleLowerCase()) >= 0; }); @@ -63,6 +153,11 @@ export class AppViewModel extends observable.Observable { this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "sessions", value: this._sessions }); } + public onDataLoaded() { + this.set("isLoading", false); + this.filter(); + } + public selectView(args: observable.EventData) { var btn = args.object; @@ -80,24 +175,33 @@ export class AppViewModel extends observable.Observable { } } +export var appModel = new AppViewModel(); + export class SessionModel extends observable.Observable implements Session { constructor(source?: Session) { super(); if (source) { + this._id = source.Id; this._title = source.title; this._room = source.room; this._start = source.start; this._end = source.end; + this._speakers = source.speakers; } } - + private _id: string; + private _speakers: Array; private _title: string; private _start: Date; private _end: Date; private _room: string; private _favorite: boolean; + get Id(): string { + return this._id; + } + get title(): string { return this._title; } @@ -114,12 +218,18 @@ export class SessionModel extends observable.Observable implements Session { return this._end; } + get speakers(): Array { + return this._speakers; + } + get range(): string { var startMinutes = this.start.getMinutes() + ""; var endMinutes = this.end.getMinutes() + ""; + var startAM = this.start.getHours() < 12 ? "am" : "pm"; + var endAM = this.end.getHours() < 12 ? "am" : "pm"; - return this.start.getHours() + ':' + (startMinutes.length === 1 ? '0' + startMinutes : startMinutes) + - ' - ' + this.end.getHours() + ':' + (endMinutes.length === 1 ? '0' + endMinutes : endMinutes); + return this.start.getHours() + ':' + (startMinutes.length === 1 ? '0' + startMinutes : startMinutes) + startAM + + ' - ' + this.end.getHours() + ':' + (endMinutes.length === 1 ? '0' + endMinutes : endMinutes) + endAM; } get canBeFavorited(): boolean { @@ -135,414 +245,14 @@ export class SessionModel extends observable.Observable implements Session { this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "favorite", value: this._favorite }); } } + + public toggleFavorite() { + this.favorite = !this.favorite; + if (this.favorite) { + addToFavourites(this); + } + else { + removeFromFavourites(this); + } + } } - -var sessions: Array = [ - new SessionModel({ - title: "Registration", - start: new Date(2015, 5, 3, 8, 30), - end: new Date(2015, 5, 3, 9, 30), - room: "" - }), - new SessionModel({ - title: "NativeScript Deep Dive", - start: new Date(2015, 5, 3, 9, 30), - end: new Date(2015, 5, 3, 12, 30), - room: "Workshop Room 1" - }), - new SessionModel({ - title: "Smart Design for Smartphones", - start: new Date(2015, 5, 3, 9, 30), - end: new Date(2015, 5, 3, 12, 30), - room: "Workshop Room 2" - }), - new SessionModel({ - title: "Modern .NET Apps!", - start: new Date(2015, 5, 3, 9, 30), - end: new Date(2015, 5, 3, 12, 30), - room: "Workshop Room 3" - }), - new SessionModel({ - title: "Telerik Sitefinity as a Data Integration Platform", - start: new Date(2015, 5, 3, 9, 30), - end: new Date(2015, 5, 3, 12, 30), - room: "Workshop Room 4" - }), - new SessionModel({ - title: "Lunch", - start: new Date(2015, 5, 3, 9, 30), - end: new Date(2015, 5, 3, 12, 30), - room: "" - }), - new SessionModel({ - title: "NativeScript Deep Dive", - start: new Date(2015, 5, 3, 1, 30), - end: new Date(2015, 5, 3, 4, 30), - room: "Workshop Room 1" - }), - new SessionModel({ - title: "Smart Design for Smartphones", - start: new Date(2015, 5, 3, 1, 30), - end: new Date(2015, 5, 3, 4, 30), - room: "Workshop Room 2" - }), - new SessionModel({ - title: "Responsive Apps with Telerik DevCraft", - start: new Date(2015, 5, 3, 1, 30), - end: new Date(2015, 5, 3, 4, 30), - room: "Workshop Room 3" - }), - new SessionModel({ - title: "ASP .NET MVC Development in Telerik Sitefinity", - start: new Date(2015, 5, 3, 1, 30), - end: new Date(2015, 5, 3, 4, 30), - room: "Workshop Room 4" - }), new SessionModel({ - title: "Registration", - start: new Date(2015, 5, 4, 7, 30), - end: new Date(2015, 5, 4, 9, 0), - room: "" - }), new SessionModel({ - title: "Telerik Keynote", - start: new Date(2015, 5, 4, 9, 0), - end: new Date(2015, 5, 4, 10, 30), - room: "General Session" - }), new SessionModel({ - title: "A Lap Around NativeScript", - start: new Date(2015, 5, 4, 10, 45), - end: new Date(2015, 5, 4, 11, 30), - room: "Conference Room 1" - }), new SessionModel({ - title: "Kendo UI Building Blocks", - start: new Date(2015, 5, 4, 10, 45), - end: new Date(2015, 5, 4, 11, 30), - room: "Conference Room 2" - }), new SessionModel({ - title: "CRUD with ASP.NET MVC, Web API, EF and Kendo UI", - start: new Date(2015, 5, 4, 10, 45), - end: new Date(2015, 5, 4, 11, 30), - room: "Conference Room 3" - }), new SessionModel({ - title: "Best Practices for Understanding and Implementing Website Project Requirements", - start: new Date(2015, 5, 4, 10, 45), - end: new Date(2015, 5, 4, 11, 30), - room: "Conference Room 4" - }), new SessionModel({ - title: "Getting Started with ScreenBuilder", - start: new Date(2015, 5, 4, 11, 45), - end: new Date(2015, 5, 4, 12, 30), - room: "Conference Room 1" - }), new SessionModel({ - title: "Getting Started with AngularJS", - start: new Date(2015, 5, 4, 11, 45), - end: new Date(2015, 5, 4, 12, 30), - room: "Conference Room 2" - }), new SessionModel({ - title: "Zero to Hipster with the M.I.K.E. Stack", - start: new Date(2015, 5, 4, 11, 45), - end: new Date(2015, 5, 4, 12, 30), - room: "Conference Room 3" - }), new SessionModel({ - title: "Content Meets Commerce, Email and Analytics to Build the New Data-Driven Marketing Machine", - start: new Date(2015, 5, 4, 11, 45), - end: new Date(2015, 5, 4, 12, 30), - room: "Conference Room 4" - }), new SessionModel({ - title: "Lunch", - start: new Date(2015, 5, 4, 12, 30), - end: new Date(2015, 5, 4, 1, 30), - room: "" - }), new SessionModel({ - title: "Hybrid vs Native vs Web: Which is Right for Me?", - start: new Date(2015, 5, 4, 1, 30), - end: new Date(2015, 5, 4, 2, 15), - room: "Conference Room 1" - }), new SessionModel({ - title: "AngularJS Directives For Kendo UI", - start: new Date(2015, 5, 4, 1, 30), - end: new Date(2015, 5, 4, 2, 15), - room: "Conference Room 2" - }), new SessionModel({ - title: "Using Kendo UI in SharePoint/Office 365", - start: new Date(2015, 5, 4, 1, 30), - end: new Date(2015, 5, 4, 2, 15), - room: "Conference Room 3" - }), new SessionModel({ - title: "Develop the Next Generation of Content-Driven Mobile Apps", - start: new Date(2015, 5, 4, 1, 30), - end: new Date(2015, 5, 4, 2, 15), - room: "Conference Room 3" - }), new SessionModel({ - title: "PM Break", - start: new Date(2015, 5, 4, 2, 15), - end: new Date(2015, 5, 4, 2, 30), - room: "" - }), new SessionModel({ - title: "AppBuilder in 45 Minutes", - start: new Date(2015, 5, 4, 2, 30), - end: new Date(2015, 5, 4, 3, 15), - room: "Conference Room 1" - }), new SessionModel({ - title: "Mastering JavaScript", - start: new Date(2015, 5, 4, 2, 30), - end: new Date(2015, 5, 4, 3, 15), - room: "Conference Room 2" - }), new SessionModel({ - title: "Building Mobile Apps with Visual Studio", - start: new Date(2015, 5, 4, 2, 30), - end: new Date(2015, 5, 4, 3, 15), - room: "Conference Room 3" - }), new SessionModel({ - title: "Building a CRM Portal in 60 Minutes", - start: new Date(2015, 5, 4, 2, 30), - end: new Date(2015, 5, 4, 3, 15), - room: "Conference Room 4" - }), new SessionModel({ - title: "NativeScript Extensibility", - start: new Date(2015, 5, 4, 3, 30), - end: new Date(2015, 5, 4, 4, 15), - room: "Conference Room 1" - }), new SessionModel({ - title: "There's a Cordova Plugin for that!", - start: new Date(2015, 5, 4, 3, 30), - end: new Date(2015, 5, 4, 4, 15), - room: "Conference Room 2" - }), new SessionModel({ - title: "AngularJS and Kendo UI", - start: new Date(2015, 5, 4, 3, 30), - end: new Date(2015, 5, 4, 4, 15), - room: "Conference Room 3" - }), new SessionModel({ - title: "Continuous Delivery and Telerik Sitefinity", - start: new Date(2015, 5, 4, 3, 30), - end: new Date(2015, 5, 4, 4, 15), - room: "Conference Room 4" - }), new SessionModel({ - title: "Telerik Leadership Panel - Q&A", - start: new Date(2015, 5, 4, 4, 30), - end: new Date(2015, 5, 4, 5, 15), - room: "Conference Room 1" - }), new SessionModel({ - title: "Accelerate your Agile Adoption", - start: new Date(2015, 5, 4, 4, 30), - end: new Date(2015, 5, 4, 5, 15), - room: "Conference Room 2" - }), new SessionModel({ - title: "No Kidding, Real World Tester/Developer Collaboration", - start: new Date(2015, 5, 4, 4, 30), - end: new Date(2015, 5, 4, 5, 15), - room: "Conference Room 3" - }), new SessionModel({ - title: "Sitefinity", - start: new Date(2015, 5, 4, 4, 30), - end: new Date(2015, 5, 4, 5, 15), - room: "Conference Room 4" - }), new SessionModel({ - title: "Attendee Appreciation Party", - start: new Date(2015, 5, 4, 7, 0), - end: new Date(2015, 5, 4, 10, 30), - room: "" - }), new SessionModel({ - title: "Registration", - start: new Date(2015, 5, 5, 8, 0), - end: new Date(2015, 5, 5, 9, 0), - room: "" - }), new SessionModel({ - title: "Sitefinity Keynote", - start: new Date(2015, 5, 5, 9, 0), - end: new Date(2015, 5, 5, 10, 30), - room: "General Session" - }), new SessionModel({ - title: "Introduction to Mobile Testing and Device Cloud", - start: new Date(2015, 5, 5, 10, 45), - end: new Date(2015, 5, 5, 11, 30), - room: "Conference Room 1" - }), new SessionModel({ - title: "Data is Beautiful with Kendo UI DataViz", - start: new Date(2015, 5, 5, 10, 45), - end: new Date(2015, 5, 5, 11, 30), - room: "Conference Room 2" - }), new SessionModel({ - title: "Mastering How to Visualize Data in ASP.NET MVC", - start: new Date(2015, 5, 5, 10, 45), - end: new Date(2015, 5, 5, 11, 30), - room: "Conference Room 3" - }), new SessionModel({ - title: "Using Sitefinity to Power Web 3.0 Experiences", - start: new Date(2015, 5, 5, 10, 45), - end: new Date(2015, 5, 5, 11, 30), - room: "Conference Room 4" - }), new SessionModel({ - title: "Building Offline-Ready Mobile Apps", - start: new Date(2015, 5, 5, 11, 45), - end: new Date(2015, 5, 5, 12, 30), - room: "Conference Room 1" - }), new SessionModel({ - title: "Kendo UI Mobile: What It Can And Can't Do For You", - start: new Date(2015, 5, 5, 11, 45), - end: new Date(2015, 5, 5, 12, 30), - room: "Conference Room 2" - }), new SessionModel({ - title: "ASP.NET with Telerik UI!", - start: new Date(2015, 5, 5, 11, 45), - end: new Date(2015, 5, 5, 12, 30), - room: "Conference Room 3" - }), new SessionModel({ - title: "Cross-Channel Data Integration with Digital Experience Cloud", - start: new Date(2015, 5, 5, 11, 45), - end: new Date(2015, 5, 5, 12, 30), - room: "Conference Room 4" - }), new SessionModel({ - title: "Lunch", - start: new Date(2015, 5, 5, 12, 30), - end: new Date(2015, 5, 5, 1, 30), - room: "" - }), new SessionModel({ - title: "Performance Tuning Your Mobile Web Apps", - start: new Date(2015, 5, 5, 1, 30), - end: new Date(2015, 5, 5, 2, 15), - room: "Conference Room 1" - }), new SessionModel({ - title: "Improving Applications with Telerik Analytics", - start: new Date(2015, 5, 5, 1, 30), - end: new Date(2015, 5, 5, 2, 15), - room: "Conference Room 2" - }), new SessionModel({ - title: "Reporting vs Dashboards vs UI Data Apps", - start: new Date(2015, 5, 5, 1, 30), - end: new Date(2015, 5, 5, 2, 15), - room: "Conference Room 3" - }), new SessionModel({ - title: "Modern MVC and Front-End Development with Telerik Sitefinity", - start: new Date(2015, 5, 5, 1, 30), - end: new Date(2015, 5, 5, 2, 15), - room: "Conference Room 4" - }), new SessionModel({ - title: "PM Break", - start: new Date(2015, 5, 5, 2, 15), - end: new Date(2015, 5, 5, 2, 30), - room: "" - }), new SessionModel({ - title: "Telerik Native Mobile UI for iOS and Android", - start: new Date(2015, 5, 5, 2, 30), - end: new Date(2015, 5, 5, 3, 15), - room: "Conference Room 1" - }), new SessionModel({ - title: "IoT and the Telerik Platform", - start: new Date(2015, 5, 5, 2, 30), - end: new Date(2015, 5, 5, 3, 15), - room: "Conference Room 2" - }), new SessionModel({ - title: "Debugging with Fiddler", - start: new Date(2015, 5, 5, 2, 30), - end: new Date(2015, 5, 5, 3, 15), - room: "Conference Room 3" - }), new SessionModel({ - title: "Anticipating & Planning of Peak Online Traffic for Professional Football's Biggest Games", - start: new Date(2015, 5, 5, 2, 30), - end: new Date(2015, 5, 5, 3, 15), - room: "Conference Room 4" - }), new SessionModel({ - title: "Building a Mobile App API using MongoDB and Node.js", - start: new Date(2015, 5, 5, 3, 30), - end: new Date(2015, 5, 5, 4, 15), - room: "Conference Room 1" - }), new SessionModel({ - title: "Advanced Kendo UI", - start: new Date(2015, 5, 5, 3, 30), - end: new Date(2015, 5, 5, 4, 15), - room: "Conference Room 2" - }), new SessionModel({ - title: "Building Touch Apps with UI for WPF", - start: new Date(2015, 5, 5, 3, 30), - end: new Date(2015, 5, 5, 4, 15), - room: "Conference Room 3" - }), new SessionModel({ - title: "Making the Most Out of Sitefinity Personalization", - start: new Date(2015, 5, 5, 3, 30), - end: new Date(2015, 5, 5, 4, 15), - room: "Conference Room 4" - }), new SessionModel({ - title: "Closing Keynote", - start: new Date(2015, 5, 5, 4, 30), - end: new Date(2015, 5, 5, 5, 15), - room: "General Session" - })]; - -var dates: Array = [new Date(2015, 5, 3), new Date(2015, 5, 4), new Date(2015, 5, 5)]; - -interface Session { - title: string; - start: Date; - end: Date; - room: string; -} - -interface Speakers { - name: string; - title: string; - company: string; - picture: string; -} - -var speakers: Array = [ - { - name: "Todd Anglin", - title: "Vice President of Product Strategy", - company: "Telerik", - picture: "~/app/images/todd.png" - }, - { - name: "Aaron Mahimainathan", - title: "Senior Vice President, Platform & Tools", - company: "Telerik", - picture: "~/app/images/aaron.png" - }, - { - name: "Burke Holland", - title: "Director of Developer Relations", - company: "Telerik", - picture: "~/app/images/burke.png" - }, - { - name: "Brian Rinaldi", - title: "Developer Content Manager", - company: "Telerik", - picture: "~/app/images/brian.png" - }, - { - name: "TJ VanToll", - title: "Senior Developer Advocate", - company: "Telerik", - picture: "~/app/images/tj.png" - }, - { - name: "Jen Looper", - title: "Developer Advocate", - company: "Telerik", - picture: "~/app/images/jen.png" - }, - { - name: "Brandon Satrom", - title: "Director of Product Management", - company: "Telerik", - picture: "~/app/images/brandon.png" - }, - { - name: "Michael Crump", - title: "Senior Developer Advocate", - company: "Telerik", - picture: "~/app/images/michael.png" - }, - { - name: "Sam Basu", - title: "Developer Advocate", - company: "Telerik", - picture: "~/app/images/sam.png" - }, - { - name: "Svetla Yankova", - title: "Product Marketing Manager", - company: "Telerik", - picture: "~/app/images/svetla.png" - }]; \ No newline at end of file diff --git a/apps/TelerikNEXT/app.css b/apps/TelerikNEXT/app.css new file mode 100644 index 000000000..223782c62 --- /dev/null +++ b/apps/TelerikNEXT/app.css @@ -0,0 +1,53 @@ +Page{ + background-color: white; +} + +Label, Button, Image { + margin: 0 5; +} + +.page-title { + font-size: 18; + color: #fac950; +} + +.favourite-image{ + width: 32; + height: 32; + vertical-align: center; + margin: 20; +} + +.info { + color: #555555; +} + +.info-bigger { + color: #555555; + font-size: 18; +} + +.info-orange { + font-size: 16; + color: #A17201; +} + +.break-row { + padding: 5; + background-color: #FFFBF0; +} + +.list-view-row { + padding: 5; +} + +.section-header { + color: #A17201; + margin: 5 5 0 5; +} + +.horizontal-line { + height: 1; + background-color: #FAC950; + margin: 5 5 0 5; +} diff --git a/apps/TelerikNEXT/app.ts b/apps/TelerikNEXT/app.ts index 643df21ff..741c77ffe 100644 --- a/apps/TelerikNEXT/app.ts +++ b/apps/TelerikNEXT/app.ts @@ -3,5 +3,8 @@ // Set the start module for the application application.mainModule = "app/main-page"; +// TODO: This is only neede because of the deply script. +application.cssFile = "app/TelerikNEXT/app.css"; + // Start the application application.start(); diff --git a/apps/TelerikNEXT/everlive-upload.ts b/apps/TelerikNEXT/everlive-upload.ts new file mode 100644 index 000000000..21cbd4751 --- /dev/null +++ b/apps/TelerikNEXT/everlive-upload.ts @@ -0,0 +1,413 @@ +var everlive = require("./lib/everlive"); +var el = new everlive("mzacGkKPFlZUfbMq"); +var i = 0; + +// UPLOAD Sessions +var sessionsStatic = [ + { + title: "Registration", + start: new Date(2015, 4, 3, 8, 30), + end: new Date(2015, 4, 3, 9, 30), + room: "" + }, { + title: "NativeScript Deep Dive", + start: new Date(2015, 4, 3, 9, 30), + end: new Date(2015, 4, 3, 12, 30), + room: "Workshop Room 1" + }, { + title: "Smart Design for Smartphones", + start: new Date(2015, 4, 3, 9, 30), + end: new Date(2015, 4, 3, 12, 30), + room: "Workshop Room 2" + } + , { + title: "Modern .NET Apps!", + start: new Date(2015, 4, 3, 9, 30), + end: new Date(2015, 4, 3, 12, 30), + room: "Workshop Room 3" + }, { + title: "Telerik Sitefinity as a Data Integration Platform", + start: new Date(2015, 4, 3, 9, 30), + end: new Date(2015, 4, 3, 12, 30), + room: "Workshop Room 4" + }, { + title: "Lunch", + start: new Date(2015, 4, 3, 9, 30), + end: new Date(2015, 4, 3, 12, 30), + room: "" + }, { + title: "NativeScript Deep Dive", + start: new Date(2015, 4, 3, 13, 30), + end: new Date(2015, 4, 3, 16, 30), + room: "Workshop Room 1" + }, { + title: "Smart Design for Smartphones", + start: new Date(2015, 4, 3, 13, 30), + end: new Date(2015, 4, 3, 16, 30), + room: "Workshop Room 2" + }, { + title: "Responsive Apps with Telerik DevCraft", + start: new Date(2015, 4, 3, 13, 30), + end: new Date(2015, 4, 3, 16, 30), + room: "Workshop Room 3" + }, { + title: "ASP .NET MVC Development in Telerik Sitefinity", + start: new Date(2015, 4, 3, 13, 30), + end: new Date(2015, 4, 3, 16, 30), + room: "Workshop Room 4" + }, { + title: "Registration", + start: new Date(2015, 4, 4, 7, 30), + end: new Date(2015, 4, 4, 9, 0), + room: "" + }, { + title: "Telerik Keynote", + start: new Date(2015, 4, 4, 9, 0), + end: new Date(2015, 4, 4, 10, 30), + room: "General Session" + }, { + title: "A Lap Around NativeScript", + start: new Date(2015, 4, 4, 10, 45), + end: new Date(2015, 4, 4, 11, 30), + room: "Conference Room 1" + }, { + title: "Kendo UI Building Blocks", + start: new Date(2015, 4, 4, 10, 45), + end: new Date(2015, 4, 4, 11, 30), + room: "Conference Room 2" + }, { + title: "CRUD with ASP.NET MVC, Web API, EF and Kendo UI", + start: new Date(2015, 4, 4, 10, 45), + end: new Date(2015, 4, 4, 11, 30), + room: "Conference Room 3" + }, { + title: "Best Practices for Understanding and Implementing Website Project Requirements", + start: new Date(2015, 4, 4, 10, 45), + end: new Date(2015, 4, 4, 11, 30), + room: "Conference Room 4" + }, { + title: "Getting Started with ScreenBuilder", + start: new Date(2015, 4, 4, 11, 45), + end: new Date(2015, 4, 4, 12, 30), + room: "Conference Room 1" + }, { + title: "Getting Started with AngularJS", + start: new Date(2015, 4, 4, 11, 45), + end: new Date(2015, 4, 4, 12, 30), + room: "Conference Room 2" + }, { + title: "Zero to Hipster with the M.I.K.E. Stack", + start: new Date(2015, 4, 4, 11, 45), + end: new Date(2015, 4, 4, 12, 30), + room: "Conference Room 3" + }, { + title: "Content Meets Commerce, Email and Analytics to Build the New Data-Driven Marketing Machine", + start: new Date(2015, 4, 4, 11, 45), + end: new Date(2015, 4, 4, 12, 30), + room: "Conference Room 4" + }, { + title: "Lunch", + start: new Date(2015, 4, 4, 12, 30), + end: new Date(2015, 4, 4, 13, 30), + room: "" + }, { + title: "Hybrid vs Native vs Web: Which is Right for Me?", + start: new Date(2015, 4, 4, 13, 30), + end: new Date(2015, 4, 4, 14, 15), + room: "Conference Room 1" + }, { + title: "AngularJS Directives For Kendo UI", + start: new Date(2015, 4, 4, 13, 30), + end: new Date(2015, 4, 4, 14, 15), + room: "Conference Room 2" + }, { + title: "Using Kendo UI in SharePoint/Office 365", + start: new Date(2015, 4, 4, 13, 30), + end: new Date(2015, 4, 4, 14, 15), + room: "Conference Room 3" + }, { + title: "Develop the Next Generation of Content-Driven Mobile Apps", + start: new Date(2015, 4, 4, 13, 30), + end: new Date(2015, 4, 4, 14, 15), + room: "Conference Room 3" + }, { + title: "PM Break", + start: new Date(2015, 4, 4, 14, 15), + end: new Date(2015, 4, 4, 14, 30), + room: "" + }, { + title: "AppBuilder in 45 Minutes", + start: new Date(2015, 4, 4, 14, 30), + end: new Date(2015, 4, 16, 15, 15), + room: "Conference Room 1" + }, { + title: "Mastering JavaScript", + start: new Date(2015, 4, 4, 14, 30), + end: new Date(2015, 4, 16, 15, 15), + room: "Conference Room 2" + }, { + title: "Building Mobile Apps with Visual Studio", + start: new Date(2015, 4, 4, 14, 30), + end: new Date(2015, 4, 16, 15, 15), + room: "Conference Room 3" + }, { + title: "Building a CRM Portal in 60 Minutes", + start: new Date(2015, 4, 4, 14, 30), + end: new Date(2015, 4, 16, 15, 15), + room: "Conference Room 4" + }, { + title: "NativeScript Extensibility", + start: new Date(2015, 4, 4, 15, 30), + end: new Date(2015, 4, 4, 16, 15), + room: "Conference Room 1" + }, { + title: "There's a Cordova Plugin for that!", + start: new Date(2015, 4, 4, 15, 30), + end: new Date(2015, 4, 4, 16, 15), + room: "Conference Room 2" + }, { + title: "AngularJS and Kendo UI", + start: new Date(2015, 4, 4, 15, 30), + end: new Date(2015, 4, 4, 16, 15), + room: "Conference Room 3" + }, { + title: "Continuous Delivery and Telerik Sitefinity", + start: new Date(2015, 4, 4, 15, 30), + end: new Date(2015, 4, 4, 16, 15), + room: "Conference Room 4" + }, { + title: "Telerik Leadership Panel - Q&A", + start: new Date(2015, 4, 4, 16, 30), + end: new Date(2015, 4, 4, 17, 15), + room: "Conference Room 1" + }, { + title: "Accelerate your Agile Adoption", + start: new Date(2015, 4, 4, 16, 30), + end: new Date(2015, 4, 4, 17, 15), + room: "Conference Room 2" + }, { + title: "No Kidding, Real World Tester/Developer Collaboration", + start: new Date(2015, 4, 4, 16, 30), + end: new Date(2015, 4, 4, 17, 15), + room: "Conference Room 3" + }, { + title: "Sitefinity", + start: new Date(2015, 4, 4, 16, 30), + end: new Date(2015, 4, 4, 17, 15), + room: "Conference Room 4" + }, { + title: "Attendee Appreciation Party", + start: new Date(2015, 4, 4, 19, 0), + end: new Date(2015, 4, 4, 22, 30), + room: "" + }, { + title: "Registration", + start: new Date(2015, 4, 5, 8, 0), + end: new Date(2015, 4, 5, 9, 0), + room: "" + }, { + title: "Sitefinity Keynote", + start: new Date(2015, 4, 5, 9, 0), + end: new Date(2015, 4, 5, 10, 30), + room: "General Session" + }, { + title: "Introduction to Mobile Testing and Device Cloud", + start: new Date(2015, 4, 5, 10, 45), + end: new Date(2015, 4, 5, 11, 30), + room: "Conference Room 1" + }, { + title: "Data is Beautiful with Kendo UI DataViz", + start: new Date(2015, 4, 5, 10, 45), + end: new Date(2015, 4, 5, 11, 30), + room: "Conference Room 2" + }, { + title: "Mastering How to Visualize Data in ASP.NET MVC", + start: new Date(2015, 4, 5, 10, 45), + end: new Date(2015, 4, 5, 11, 30), + room: "Conference Room 3" + }, { + title: "Using Sitefinity to Power Web 3.0 Experiences", + start: new Date(2015, 4, 5, 10, 45), + end: new Date(2015, 4, 5, 11, 30), + room: "Conference Room 4" + }, { + title: "Building Offline-Ready Mobile Apps", + start: new Date(2015, 4, 5, 11, 45), + end: new Date(2015, 4, 5, 12, 30), + room: "Conference Room 1" + }, { + title: "Kendo UI Mobile: What It Can And Can't Do For You", + start: new Date(2015, 4, 5, 11, 45), + end: new Date(2015, 4, 5, 12, 30), + room: "Conference Room 2" + }, { + title: "ASP.NET with Telerik UI!", + start: new Date(2015, 4, 5, 11, 45), + end: new Date(2015, 4, 5, 12, 30), + room: "Conference Room 3" + }, { + title: "Cross-Channel Data Integration with Digital Experience Cloud", + start: new Date(2015, 4, 5, 11, 45), + end: new Date(2015, 4, 5, 12, 30), + room: "Conference Room 4" + }, { + title: "Lunch", + start: new Date(2015, 4, 5, 12, 30), + end: new Date(2015, 4, 5, 13, 30), + room: "" + }, { + title: "Performance Tuning Your Mobile Web Apps", + start: new Date(2015, 4, 5, 13, 30), + end: new Date(2015, 4, 5, 14, 15), + room: "Conference Room 1" + }, { + title: "Improving Applications with Telerik Analytics", + start: new Date(2015, 4, 5, 13, 30), + end: new Date(2015, 4, 5, 14, 15), + room: "Conference Room 2" + }, { + title: "Reporting vs Dashboards vs UI Data Apps", + start: new Date(2015, 4, 5, 13, 30), + end: new Date(2015, 4, 5, 14, 15), + room: "Conference Room 3" + }, { + title: "Modern MVC and Front-End Development with Telerik Sitefinity", + start: new Date(2015, 4, 5, 13, 30), + end: new Date(2015, 4, 5, 14, 15), + room: "Conference Room 4" + }, { + title: "PM Break", + start: new Date(2015, 4, 5, 14, 15), + end: new Date(2015, 4, 5, 14, 30), + room: "" + }, { + title: "Telerik Native Mobile UI for iOS and Android", + start: new Date(2015, 4, 5, 14, 30), + end: new Date(2015, 4, 17, 15, 15), + room: "Conference Room 1" + }, { + title: "IoT and the Telerik Platform", + start: new Date(2015, 4, 5, 14, 30), + end: new Date(2015, 4, 17, 15, 15), + room: "Conference Room 2" + }, { + title: "Debugging with Fiddler", + start: new Date(2015, 4, 5, 14, 30), + end: new Date(2015, 4, 17, 15, 15), + room: "Conference Room 3" + }, { + title: "Anticipating & Planning of Peak Online Traffic for Professional Football's Biggest Games", + start: new Date(2015, 4, 5, 14, 30), + end: new Date(2015, 4, 17, 15, 15), + room: "Conference Room 4" + }, { + title: "Building a Mobile App API using MongoDB and Node.js", + start: new Date(2015, 4, 5, 15, 30), + end: new Date(2015, 4, 5, 16, 15), + room: "Conference Room 1" + }, { + title: "Advanced Kendo UI", + start: new Date(2015, 4, 5, 15, 30), + end: new Date(2015, 4, 5, 16, 15), + room: "Conference Room 2" + }, { + title: "Building Touch Apps with UI for WPF", + start: new Date(2015, 4, 5, 15, 30), + end: new Date(2015, 4, 5, 16, 15), + room: "Conference Room 3" + }, { + title: "Making the Most Out of Sitefinity Personalization", + start: new Date(2015, 4, 5, 15, 30), + end: new Date(2015, 4, 5, 16, 15), + room: "Conference Room 4" + }, { + title: "Closing Keynote", + start: new Date(2015, 4, 5, 16, 30), + end: new Date(2015, 4, 5, 17, 15), + room: "General Session" + }]; + +var dataSessions = el.data('NextSessions'); +for (i = 0; i < sessionsStatic.length; i++) { + dataSessions.create(sessionsStatic[i], + function (data) { + console.log("session added: " + JSON.stringify(data)); + }, + function (error) { + console.log("error: " + error); + }); +} + +// UPLOAD SPEAKERS +var speakersStatic = [ + { + name: "Todd Anglin", + title: "Vice President of Product Strategy", + company: "Telerik", + picture: "todd.png" + }, + { + name: "Aaron Mahimainathan", + title: "Senior Vice President, Platform & Tools", + company: "Telerik", + picture: "aaron.png" + }, + { + name: "Burke Holland", + title: "Director of Developer Relations", + company: "Telerik", + picture: "burke.png" + }, + { + name: "Brian Rinaldi", + title: "Developer Content Manager", + company: "Telerik", + picture: "brian.png" + }, + { + name: "TJ VanToll", + title: "Senior Developer Advocate", + company: "Telerik", + picture: "tj.png" + }, + { + name: "Jen Looper", + title: "Developer Advocate", + company: "Telerik", + picture: "jen.png" + }, + { + name: "Brandon Satrom", + title: "Director of Product Management", + company: "Telerik", + picture: "brandon.png" + }, + { + name: "Michael Crump", + title: "Senior Developer Advocate", + company: "Telerik", + picture: "michael.png" + }, + { + name: "Sam Basu", + title: "Developer Advocate", + company: "Telerik", + picture: "sam.png" + }, + { + name: "Svetla Yankova", + title: "Product Marketing Manager", + company: "Telerik", + picture: "svetla.png" + }]; + +var data = el.data('NextSpeakers'); +for (i = 0; i < speakersStatic.length; i++) { + data.create(speakersStatic[i], + function (data) { + console.log("speaker added: " + JSON.stringify(data)); + }, + function (error) { + console.log("error: " + error); + }); +} \ No newline at end of file diff --git a/apps/TelerikNEXT/images/background.jpg b/apps/TelerikNEXT/images/background.jpg index 3c8134b00..9a17becc5 100644 Binary files a/apps/TelerikNEXT/images/background.jpg and b/apps/TelerikNEXT/images/background.jpg differ diff --git a/apps/TelerikNEXT/main-page.css b/apps/TelerikNEXT/main-page.css deleted file mode 100644 index c95259bcc..000000000 --- a/apps/TelerikNEXT/main-page.css +++ /dev/null @@ -1,23 +0,0 @@ -Label, Button, Image { - margin: 5; -} - -.speakerPicture { - width: 100; - height: 100; -} - -.speakerTitle, .speakerCompany { - font-size: 18; - color: #07ab9e; -} - -.speakerName { - font-size: 22; - color: black; -} - -.title { - font-size: 22; - color: black; -} diff --git a/apps/TelerikNEXT/main-page.ts b/apps/TelerikNEXT/main-page.ts index 4dc8a1ddf..a7ea12436 100644 --- a/apps/TelerikNEXT/main-page.ts +++ b/apps/TelerikNEXT/main-page.ts @@ -1,16 +1,24 @@ import observable = require("data/observable"); import pages = require("ui/page"); import gestures = require("ui/gestures"); +import listView = require("ui/list-view"); +import frame = require("ui/frame"); import appViewModel = require("./app-view-model"); export function pageLoaded(args: observable.EventData) { var page = args.object; - page.bindingContext = new appViewModel.AppViewModel(); + page.bindingContext = appViewModel.appModel; +} + +export function selectSession(args: listView.ItemEventData) { + frame.topmost().navigate({ + moduleName: "app/session-page", + context: args.view.bindingContext + }); } export function toggleFavorite(args: gestures.GestureEventData) { var item = args.view.bindingContext; - - item.favorite = !item.favorite; + item.toggleFavorite(); } \ No newline at end of file diff --git a/apps/TelerikNEXT/main-page.xml b/apps/TelerikNEXT/main-page.xml index 446b2c046..5d535e205 100644 --- a/apps/TelerikNEXT/main-page.xml +++ b/apps/TelerikNEXT/main-page.xml @@ -38,11 +38,11 @@ -