").css("font-size", "12px").addClass("visible-xs visible-sm visible-md visible-lg").appendTo(titleTd);
var innerSpan = $("
").appendTo(innerDiv).addClass("visible-xs visible-sm visible-md visible-lg").html(" " + session.tracks[0] + "" + session.speaker + " (" + session.from + ")");
/*
$("").appendTo(newTr).html(session.tracks[0]).addClass("visible-sm visible-md visible-lg");
$(" | ").appendTo(newTr)
.html("" + session.speaker + " " + session.from )
.addClass("ex-overflowtd")
.addClass("visible-lg");
$(" | ").appendTo(newTr).html(session.conf).addClass("visible-md").addClass("visible-lg").css("text-align", "center");
*/
});
// session list pagination
refreshPagination(resultList.length, page);
if (resultList.length == 0) {
$("#sessionListPagination").addClass("hidden");
$("#tblSessionList").addClass("hidden");
$("#divSessionListNotFound").removeClass("hidden");
}
else {
$("#sessionListPagination").removeClass("hidden");
$("#tblSessionList").removeClass("hidden");
$("#divSessionListNotFound").addClass("hidden");
}
if (g_isSessionDetailHtml == false) {
g_currentHash = stringifyFilterPageQuery(filter, page);
window.location.hash = g_currentHash;
}
$(document).scrollTop(0);
switchSessionListAndDetail(true);
}
function refreshPagination(totalLength, currentPage) {
// < minPage . . . . maxPage >
var totalPages = Math.floor(totalLength / g_sessionsPerPage) + 1;
var minPage = Math.max(1, currentPage - 2);
var maxPage = Math.min(minPage + 4, totalPages);
var paginationDiv = $('#sessionListPagination');
paginationDiv.addClass("pagination");
paginationDiv.children().remove();
var prevLi = $('')
.addClass('prev')
.html('<')
.click(function () { showSessionList(g_filter, currentPage - 1); })
.appendTo(paginationDiv);
if (currentPage == 1)
prevLi.addClass('hidden');
for (var pageNum = minPage; pageNum <= maxPage; pageNum++) {
var pageLi = $('')
.addClass('page')
.data('page', pageNum)
.html('' + pageNum + '')
.click(function () { showSessionList(g_filter, $(this).data('page')); })
.appendTo(paginationDiv);
if (pageNum == currentPage)
pageLi.addClass('active');
}
var nextLi = $('')
.addClass('next')
.html('>')
.click(function () { showSessionList(g_filter, currentPage + 1); })
.appendTo(paginationDiv);
if (currentPage == totalPages)
nextLi.addClass('hidden');
}
function stringifyFilterPageQuery(filter, page) {
if (JSON.stringify(filter) == "{}" && page == 1)
return "";
var queryObject = {};
if (typeof filter.conf !== 'undefined' && filter.conf != "")
queryObject["c"] = filter.conf;
if (typeof filter.tracks !== 'undefined' && filter.tracks.length != 0)
queryObject["t"] = filter.tracks;
if (typeof filter.keywords !== 'undefined')
queryObject["k"] = filter.keywords;
if (typeof page !== 'undefined' && page != "" && page != 1)
queryObject["p"] = page;
return $.param(queryObject);
}
function parseFilterPageQuery(query) {
if (query == "")
return { f: {}, p: 1 };
var queryObject = $.deparam(query);
var filter = {};
var page = 1;
if (typeof queryObject["c"] !== 'undefined' && queryObject["c"] != "")
filter.conf = queryObject["c"];
if (typeof queryObject["t"] !== 'undefined' && queryObject["t"] != "")
filter.tracks = queryObject["t"];
if (typeof queryObject["k"] !== 'undefined' && queryObject["k"] != "")
filter.keywords = queryObject["k"];
if (typeof queryObject["p"] !== 'undefined' && queryObject["p"] != "")
page = queryObject["p"];
return { f: filter, p: page };
}
function switchSessionListAndDetail(showSessionList) {
if (showSessionList) {
$("#divSessionListV2Container").removeClass("hidden");
$("#searchBox").removeClass("hidden");
$("#upperInfoBar").addClass("hidden");
$("#divSessionDetail").addClass("hidden");
$("#backButtonBox").addClass("hidden");
}
else {
$("#divSessionListV2Container").addClass("hidden");
$("#searchBox").addClass("hidden");
$("#upperInfoBar").removeClass("hidden");
$("#divSessionDetail").removeClass("hidden");
$("#backButtonBox").removeClass("hidden");
}
}
function onClickSession() {
var sessionId = $(this).attr('session-id');
var sessionDetail = NDCREPLAY.sessionMap.getSession(sessionId);
if (g_conf_separatedViewMode) {
var hashString = window.location.hash;
if (hashString == "#")
hashString = "";
window.location.href = getSessionLinks(sessionDetail)[2] + hashString;
return;
}
fillAndSwitchToSessionView(sessionId);
}
function fillAndSwitchToSessionView(sessionId) {
var sessionDetail = NDCREPLAY.sessionMap.getSession(sessionId);
$("#sessionDetailTitle").attr('data-conf', sessionDetail.conf);
$("#sessionDetailTitle").attr('data-session', sessionDetail.id);
$("#sessionDetailTitle").text(sessionDetail.title);
if (typeof sessionDetail.subtitle !== 'undefined')
$("#sessionDetailSubtitle").text(sessionDetail.subtitle);
else
$("#sessionDetailSubtitle").text('');
$("#sessionDetailSpeaker").text(sessionDetail.speaker);
$("#sessionDetailFrom").text(sessionDetail.from);
$("#sessionDetailSpeakerSmall").text(sessionDetail.speaker);
$("#sessionDetailFromSmall").text(sessionDetail.from);
$("#sessionDetailDesc").text(sessionDetail.desc || ("from " + sessionDetail.conf));
$("#sessionDetailSpeakerIntro").text(sessionDetail.speaker_intro || ("from " + sessionDetail.from));
$('#sessionDetailScript').text("자막이 없습니다.");
displaySessionView();
}
function getSessionLinks(session) {
return [
"http://ndc.vod.nexoncdn.co.kr/" + session.conf + "/slides/" + session.id + "/index.html",
"http://ndc.vod.nexoncdn.co.kr/" + session.conf + "/videos/" + session.id + ".mp4",
"./" + session.conf + "/sessions/" + session.id + ".html"
];
}
function displaySessionView() {
switchSessionListAndDetail(false);
if ($("#sessionDetailSubtitle").text() != '')
$("#sessionDetailSubtitle").removeClass('hidden');
var session = NDCREPLAY.sessionMap.getSession($("#sessionDetailTitle").attr('data-session'));
$("#confName").text(session.conf);
var uniqueTracks = [];
$.each(session.tracks, function () {
if (uniqueTracks.indexOf("" + this) >= 0)
return true;
uniqueTracks.push("" + this);
});
$("#tracksList").text(uniqueTracks.join(" | "));
var slideLink = getSessionLinks(session)[0];
var slideLinkMobileSafari = ''; // TODO
$("#sessionDetailSlideContainer").toggleClass('hidden', !session.slidePublic);
$("#sessionDetailSlideLinkContainer").toggleClass('hidden', !session.slidePublic);
$("#sessionDetailVideoContainer").toggleClass('hidden', !session.videoPublic);
$("#sessionDetailScriptContainer").toggleClass('hidden', !session.scriptPublic); // or : $('#sessionDetailScript').text("자막이 없습니다.");
$("#mobileSafariLoadingContainer").addClass('hidden');
$("#sessionDetailSlideContainerMobileSafariIFrameAlert").addClass('hidden');
if (navigator.userAgent.match(/(iPod|iPhone|iPad)/) && navigator.userAgent.match(/AppleWebKit/)) {
if (slideLinkMobileSafari == '') {
loadSlide_iphone(); // iphone workaround
$(window).on("orientationchange", function (event) {
if (window.orientation % 180 == 0)
loadSlide_iphone();
});
}
else {
slideLink = slideLinkMobileSafari;
}
}
$("#sessionDetailSlide").attr('src', slideLink);
$("#sessionDetailSlideExternalLink").attr('href', slideLink);
if (session.videoPublic) {
if (processExternalVideo($("#sessionDetailVideo").attr('data-externalVideoUrl')) == false) {
$("#sessionVideoSource").attr('src', getSessionLinks(session)[1]);
videojs(document.getElementById('sessionVideo'), { "width": "100%", "height": "100%" }, function () { })
.on('fullscreenchange', function (ev) {
var session = NDCREPLAY.sessionMap.getSession($("#sessionDetailTitle").attr('data-session'));
if (session.slidePublic)
$("#sessionDetailSlideContainer").toggleClass('hidden', videojs(ev.target).isFullscreen());
});
}
}
}
function processExternalVideo(externalVideoUrl) {
if (typeof externalVideoUrl === 'undefined')
return false;
if (externalVideoUrl == "")
return false;
// https://stackoverflow.com/a/8260383
var regExp_yt = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match_yt = externalVideoUrl.match(regExp_yt);
g_youtube_videoId = "";
if (match_yt && match_yt[7].length == 11)
g_youtube_videoId = match_yt[7];
if (g_youtube_videoId == "")
return false;
// https://developers.google.com/youtube/player_parameters
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
return true;
}
function onYouTubePlayerAPIReady() {
if (g_youtube_videoId == "")
return;
var g_yt_player = new YT.Player('sessionDetailVideo', {
height: '100%',
width: '100%',
videoId: g_youtube_videoId,
rel: 0
});
}
var loadSlide_loadingNow = false;
var loadSlide_outerHTMLCache = "";
var loadSlide_interval = null;
function loadSlide_iphone() {
if (loadSlide_loadingNow)
return;
loadSlide_loadingNow = true;
var session = NDCREPLAY.sessionMap.getSession($("#sessionDetailTitle").attr('data-session'));
var slideLink = getSessionLinks(session)[0];
// 매 로드 때마다 내용을 리셋한다.
if (loadSlide_outerHTMLCache == "")
loadSlide_outerHTMLCache = $('#sessionDetailSlideContainer')[0].outerHTML;
$('#sessionDetailSlideContainer')[0].outerHTML = loadSlide_outerHTMLCache;
$("#sessionDetailSlideContainer").addClass('hidden');
$("#sessionDetailSlide").attr('src', slideLink);
$("#mobileSafariLoadingContainer").removeClass('hidden');
//$("#sessionDetailSlideContainerMobileSafariIFrameAlert").removeClass('hidden');
loadSlide_interval = setInterval(function () {
var iFrameAlert = $("#sessionDetailSlideContainerMobileSafariIFrameAlert");
var repeatCount = (iFrameAlert.attr('data-cnt') || 0);
iFrameAlert.attr('data-cnt', (repeatCount + 1) % 3);
var iFrameAlertMsg = "슬라이드 불러오는 중.";
for (var i = 0; i < repeatCount; i++)
iFrameAlertMsg += "..";
iFrameAlert.text(iFrameAlertMsg);
}, 300);
setTimeout(function () { clearInterval(loadSlide_interval); loadSlide_showSlide() }, 5000);
return;
}
function loadSlide_showSlide() {
$("#sessionDetailSlideContainer").removeClass('hidden');
$("#mobileSafariLoadingContainer").addClass('hidden');
$("#sessionDetailSlideContainerMobileSafariIFrameAlert").addClass('hidden');
loadSlide_loadingNow = false;
}
function filterByMenu(menuItem) {
filter = {};
if (menuItem.attr('ndc-conf') != "")
filter.conf = menuItem.attr('ndc-conf');
var filterTrack = menuItem.attr('ndc-track');
if (typeof (filterTrack) !== 'undefined' && filterTrack != "")
filter.tracks = [filterTrack];
showSessionList(filter);
}
function generateConfTrackLink(title, conf, track) {
return $('')
.attr('href', '#')
.text(title)
.attr('ndc-conf', conf)
.attr('ndc-track', track)
.click(function (e) { e.preventDefault(); filterByMenu($(this)); });
}
function buildNavMenuFromConfMap(navbarItems, confMap) {
for (var confName in confMap) {
var dropDown = $('').addClass("dropDown");
dropDown.appendTo(navbarItems);
var title = $('').attr('href', '#').addClass("dropdown-toggle").attr('data-toggle', 'dropdown');
title.click(function (e) { e.preventDefault(); });
title.text(confName); //.append($('').addClass("caret"));
dropDown.append(title);
createDropDownUl(confMap[confName]).appendTo(dropDown);
}
// TEST
$('#navbarItems').html('');
var sessionListLeft = $("#divSessionListLeft");
sessionListLeft.html('');
sessionListLeft.append($(''));
var linkBase = $('')
sessionListLeft.append(linkBase);
var showAllMenu = $('전체 보기');
showAllMenu.appendTo(linkBase);
for (var confName in confMap) {
var dropDown = $('- ');
dropDown.appendTo(linkBase);
var submenuId = 'sideSubMenu-' + confName;
var dropDownHead = $('Pages');
dropDownHead.appendTo(dropDown);
dropDownHead.html('
' + confName + '');
var confInfo = confMap[confName];
var confName = confInfo.confName;
var _ul = $(' |