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 @@
-