로그인 form draw 예시

This commit is contained in:
2020-06-26 23:31:45 +09:00
parent f74a7b31c3
commit cfc897055b
5 changed files with 1219 additions and 1108 deletions
+75 -74
View File
@@ -1,131 +1,132 @@
body, html{ body,
html {
height: 100%; height: 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
} }
.main{ .main {
margin-top: 70px; margin-top: 70px;
} }
h1.title { h1.title {
font-size: 50px; font-size: 50px;
font-family: 'Passion One', cursive; font-family: 'Passion One', cursive;
font-weight: 400; font-weight: 400;
} }
hr{ hr {
width: 10%; width: 10%;
/*color: #fff;*/ /*color: #fff;*/
} }
.form-group{ .form-group {
margin-bottom: 15px; margin-bottom: 15px;
} }
label{ label {
margin-bottom: 15px; margin-bottom: 15px;
} }
input, input,
input::-webkit-input-placeholder { input::-webkit-input-placeholder {
font-size: 11px; font-size: 11px;
padding-top: 3px; padding-top: 3px;
} }
.main-login{ .main-login {
/*background-color: #fff;*/ /*background-color: #fff;*/
/* shadows and rounded borders */ /* shadows and rounded borders */
-moz-border-radius: 2px; -moz-border-radius: 2px;
-webkit-border-radius: 2px; -webkit-border-radius: 2px;
border-radius: 2px; border-radius: 2px;
-moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3); -webkit-box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3); box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
} }
.main-center{ .main-center {
margin-top: 30px; margin-top: 30px;
margin: 0 auto; margin: 0 auto;
max-width: 330px; max-width: 330px;
padding: 40px 40px; padding: 40px 40px;
} }
.login_btn_group{ .login_btn_group {
margin-top: 5px; margin-top: 5px;
} }
.login-register{ .login-register {
font-size: 11px; font-size: 11px;
text-align: center; text-align: center;
} }
.col-form-label {
.col-form-label{ text-align: center;
text-align:center;
} }
.terms{ .terms {
max-height: 200px; overflow-y: auto; max-height: 200px;
overflow-y: auto;
} }
.terms pre{ .terms pre {
width:100%; width: 100%;
white-space: pre-wrap; /* Since CSS 2.1 */ white-space: pre-wrap;
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ /* Since CSS 2.1 */
white-space: -pre-wrap; /* Opera 4-6 */ white-space: -moz-pre-wrap;
white-space: -o-pre-wrap; /* Opera 7 */ /* Mozilla, since 1999 */
word-wrap: break-word; /* Internet Explorer 5.5+ */ white-space: -pre-wrap;
/* Opera 4-6 */
white-space: -o-pre-wrap;
/* Opera 7 */
word-wrap: break-word;
/* Internet Explorer 5.5+ */
} }
.vertical-center { .vertical-center {
min-height: 100%; /* Fallback for browsers do NOT support vh unit */ min-height: 100%;
min-height: 100vh; /* These two lines are counted as one :-) */ /* Fallback for browsers do NOT support vh unit */
min-height: 100vh;
/* These two lines are counted as one :-) */
display: flex; display: flex;
align-items: center; align-items: center;
} }
.full-content { #login_card {
position:fixed; z-index: 801;
left:0;
top:0;
width:100%;
height:100%;
margin:0;
padding:0;
z-index:800;
} }
#login_card{ #btn_kakao_login {
z-index:801;
}
#btn_kakao_login{
cursor: pointer; cursor: pointer;
height:46px; height: 46px;
width:116px; width: 116px;
background-color: transparent; background-color: transparent;
color:transparent; color: transparent;
border:0; border: 0;
background-size: 100%; /* To fill the dimensions of container (button), or */ background-size: 100%;
/* To fill the dimensions of container (button), or */
background-repeat: no-repeat; background-repeat: no-repeat;
background-position: bottom center; background-position: bottom center;
margin-top:5px; margin-top: 5px;
background-image:url('../oauth_kakao/kakao_login_join.png'); background-image: url('../oauth_kakao/kakao_login_join.png');
} }
#btn_kakao_login:hover { #btn_kakao_login:hover {
background-image:url('../oauth_kakao/kakao_login_join_ov.png'); background-image: url('../oauth_kakao/kakao_login_join_ov.png');
} }
#bottom_box{ #bottom_box .container {
position:fixed; text-align: center;
bottom:0;
width:100%;
left:0;
} }
#bottom_box .container{
text-align:center; .btn-group-xs>.btn,
.btn-xs {
padding: .25rem .4rem;
font-size: .875rem;
line-height: .5;
border-radius: .2rem;
}
#running_map {
margin-top: 20px;
} }
+6 -1
View File
@@ -54,7 +54,7 @@ $defaultPost = [
'showMe' => false, 'showMe' => false,
]; ];
$history = getGlobalHistoryLogRecent(15); $history = formatHistoryToHTML(getGlobalHistoryLogRecent(10));
$rawMap = getWorldMap([ $rawMap = getWorldMap([
'year' => null, 'year' => null,
'month' => null, 'month' => null,
@@ -63,7 +63,12 @@ $rawMap = getWorldMap([
'showMe' => false, 'showMe' => false,
]); ]);
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
$mapTheme = $gameStor->map_theme ?? 'che';
$rawMap['history'] = $history; $rawMap['history'] = $history;
$rawMap['theme'] = $mapTheme;
$etag = hash('sha256', $serverID.$now); $etag = hash('sha256', $serverID.$now);
$map = [ $map = [
+216 -184
View File
@@ -1,8 +1,7 @@
function is_touch_device() { function is_touch_device() {
var prefixes = ' -webkit- -moz- -o- -ms- '.split(' '); var prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');
var mq = function(query) { var mq = function(query) {
return window.matchMedia(query).matches; return window.matchMedia(query).matches;
} }
if (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch) { if (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch) {
@@ -14,32 +13,39 @@ function is_touch_device() {
// https://git.io/vznFH // https://git.io/vznFH
var query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join(''); var query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');
return mq(query); return mq(query);
} }
function reloadWorldMap(option){ function reloadWorldMap(option, drawTarget) {
var $world_map = $('.world_map'); if (drawTarget === undefined || drawTarget === null) {
drawTarget = '.world_map'
}
var $world_map = $(drawTarget);
if($world_map.length == 0){ if ($world_map.length == 0) {
return; return;
} }
var defaultOption = { var defaultOption = {
isDetailMap:true, //복잡 지도, 단순 지도 isDetailMap: true, //복잡 지도, 단순 지도
clickableAll:false, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도. clickableAll: false, //어떤 경우든 클릭을 가능하게 함. 해당 동작의 동작 가능성 여부와는 별도.
selectCallback:null, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행. selectCallback: null, //callback을 지정시 clickable과 관계 없이 해당 함수를 실행.
hrefTemplate:'#', //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨 hrefTemplate: '#', //도시가 클릭가능할 경우 지정할 href값. {0}은 도시 id로 변환됨
useCachedMap:false, //맵 캐시를 사용 useCachedMap: false, //맵 캐시를 사용
//아래부터는 post query에 들어갈 녀석 //아래부터는 post query에 들어갈 녀석
year:null, //year값, 연감등에 사용 year: null, //year값, 연감등에 사용
month:null, //month값, 연감등에 사용 month: null, //month값, 연감등에 사용
aux:null, //기타 넣고 싶은 값을 입력 aux: null, //기타 넣고 싶은 값을 입력
neutralView:false, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정 neutralView: false, //clickable, 소속 국가, 첩보 여부 등을 반환여부를 설정
showMe:true, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개 showMe: true, //반환 값에 본인이 위치한 도시 값을 반환하도록 설정. neutralView와 별개
targetJson:'j_map.php',
targetJson: 'j_map.php',
reqType: 'post',
dynamicMapTheme: false,
callback: null,
//기타 보조 값 //기타 보조 값
startYear:null, startYear: null,
}; };
option = $.extend(defaultOption, option); option = $.extend(defaultOption, option);
@@ -56,23 +62,23 @@ function reloadWorldMap(option){
var storedStartYear = 'sam.{0}.startYear'.format(serverNick); var storedStartYear = 'sam.{0}.startYear'.format(serverNick);
//OBJ : startYear, year, month, cityList, nationList, spyList, shownByGeneralList, myCity //OBJ : startYear, year, month, cityList, nationList, spyList, shownByGeneralList, myCity
function checkReturnObject(obj){ function checkReturnObject(obj) {
if(!obj.result){ if (!obj.result) {
var obj = $.Deferred(); var obj = $.Deferred();
obj.reject('fail'); obj.reject('fail');
return obj.promise(); return obj.promise();
} }
if(!$.isNumeric(obj.startYear) if (!$.isNumeric(obj.startYear) ||
||!$.isNumeric(obj.year) !$.isNumeric(obj.year) ||
||!$.isNumeric(obj.month) !$.isNumeric(obj.month)
){ ) {
var obj = $.Deferred(); var obj = $.Deferred();
obj.reject('fail'); obj.reject('fail');
return obj.promise(); return obj.promise();
} }
if(useCachedMap){ if (useCachedMap) {
localStorage.setItem(storedOldMapKey, JSON.stringify([serverID, obj])); localStorage.setItem(storedOldMapKey, JSON.stringify([serverID, obj]));
localStorage.setItem(storedStartYear, JSON.stringify(obj.startYear)); localStorage.setItem(storedStartYear, JSON.stringify(obj.startYear));
} }
@@ -82,26 +88,40 @@ function reloadWorldMap(option){
return obj; return obj;
} }
function setMapBackground(obj){
function setMapBackground(obj) {
function setTheme() {
var oldTheme = $world_map.data('currentTheme');
var newTheme = obj.theme;
if (oldTheme === newTheme) {
return;
}
if (oldTheme) {
$world_map.removeClass('map_theme_' + oldTheme);
}
$world_map.addClass('map_theme_' + newTheme);
$world_map.data('currentTheme', newTheme);
}
if (option.dynamicMapTheme) {
setTheme();
}
var startYear = obj.startYear; var startYear = obj.startYear;
var year = obj.year; var year = obj.year;
var month = obj.month; var month = obj.month;
if(isDetailMap){ if (isDetailMap) {
$world_map.addClass('map_detail').removeClass('map_basic'); $world_map.addClass('map_detail').removeClass('map_basic');
} } else {
else{
$world_map.addClass('map_basic').removeClass('map_detail'); $world_map.addClass('map_basic').removeClass('map_detail');
} }
var $map_title = $('.map_title_text'); var $map_title = $('.map_title_text');
if(year < startYear + 1){ if (year < startYear + 1) {
$map_title.css('color', 'magenta'); $map_title.css('color', 'magenta');
} } else if (year < startYear + 2) {
else if(year < startYear + 2){
$map_title.css('color', 'orange'); $map_title.css('color', 'orange');
} } else if (year < startYear + 3) {
else if(year < startYear + 3){
$map_title.css('color', 'yellow'); $map_title.css('color', 'yellow');
} }
@@ -109,17 +129,17 @@ function reloadWorldMap(option){
$map_title_tooltip.empty(); $map_title_tooltip.empty();
var tooltipTexts = []; var tooltipTexts = [];
if(year < startYear + 3){ if (year < startYear + 3) {
var startYearText = []; var startYearText = [];
var remainYear = startYear + 3 - year; var remainYear = startYear + 3 - year;
var remainMonth = 12 - month + 1; var remainMonth = 12 - month + 1;
if(remainMonth > 0){ if (remainMonth > 0) {
remainYear -= 1; remainYear -= 1;
} }
if(remainYear){ if (remainYear) {
startYearText.push('{0}년'.format(remainYear)); startYearText.push('{0}년'.format(remainYear));
} }
if(remainMonth){ if (remainMonth) {
startYearText.push('{0}개월'.format(remainMonth)); startYearText.push('{0}개월'.format(remainMonth));
} }
@@ -129,20 +149,17 @@ function reloadWorldMap(option){
var currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1; var currentTechLimit = Math.floor(Math.max(0, year - startYear) / 5) + 1;
var nextTechLimitYear = currentTechLimit * 5 + startYear; var nextTechLimitYear = currentTechLimit * 5 + startYear;
tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit+1)); tooltipTexts.push('기술등급 제한 : {0}등급 ({1}년 해제)'.format(currentTechLimit, nextTechLimitYear, currentTechLimit + 1));
$map_title_tooltip.html(tooltipTexts.join('<br>')); $map_title_tooltip.html(tooltipTexts.join('<br>'));
$world_map.removeClass('map_string map_summer map_fall map_winter'); $world_map.removeClass('map_string map_summer map_fall map_winter');
if(month <= 3){ if (month <= 3) {
$world_map.addClass('map_spring'); $world_map.addClass('map_spring');
} } else if (month <= 6) {
else if(month <= 6){
$world_map.addClass('map_summer'); $world_map.addClass('map_summer');
} } else if (month <= 9) {
else if(month <= 9){
$world_map.addClass('map_fall'); $world_map.addClass('map_fall');
} } else {
else{
$world_map.addClass('map_winter'); $world_map.addClass('map_winter');
} }
@@ -151,26 +168,26 @@ function reloadWorldMap(option){
return obj; return obj;
} }
function convertCityObjs(obj){ function convertCityObjs(obj) {
//원본 Obj는 굉장히 간소하게 온다, Object 형태로 변환해서 사용한다. //원본 Obj는 굉장히 간소하게 온다, Object 형태로 변환해서 사용한다.
function toCityObj(arr){ function toCityObj(arr) {
return { return {
id:arr[0], id: arr[0],
level:arr[1], level: arr[1],
state:arr[2], state: arr[2],
nationId:(arr[3]>0)?arr[3]:null, nationId: (arr[3] > 0) ? arr[3] : null,
region:arr[4], region: arr[4],
supply:(arr[5]!=0) supply: (arr[5] != 0)
}; };
} }
function toNationObj(arr){ function toNationObj(arr) {
return { return {
id:arr[0], id: arr[0],
name:arr[1], name: arr[1],
color:arr[2], color: arr[2],
capital:arr[3] capital: arr[3]
}; };
} }
@@ -179,15 +196,15 @@ function reloadWorldMap(option){
nationList = convertDictById(nationList); //array of object -> dict nationList = convertDictById(nationList); //array of object -> dict
var spyList = obj.spyList; var spyList = obj.spyList;
var shownByGeneralList = convertSet(obj.shownByGeneralList);//Array -> Set var shownByGeneralList = convertSet(obj.shownByGeneralList); //Array -> Set
var myCity = obj.myCity; var myCity = obj.myCity;
var myNation = obj.myNation; var myNation = obj.myNation;
function mergePositionInfo(city){ function mergePositionInfo(city) {
var id = city.id; var id = city.id;
if(!(id in cityPosition)){ if (!(id in cityPosition)) {
return city; return city;
} }
var xy_val = cityPosition[id]; var xy_val = cityPosition[id];
@@ -197,11 +214,11 @@ function reloadWorldMap(option){
return city; return city;
} }
function mergeNationInfo(city){ function mergeNationInfo(city) {
//nationId 값으로 isCapital, color, nation을 통합 //nationId 값으로 isCapital, color, nation을 통합
var nationId = city.nationId; var nationId = city.nationId;
if(nationId === null || !(nationId in nationList)){ if (nationId === null || !(nationId in nationList)) {
city.nationId = null; city.nationId = null;
city.nation = null; city.nation = null;
city.color = null; city.color = null;
@@ -217,24 +234,24 @@ function reloadWorldMap(option){
return city; return city;
} }
function mergeClickable(city){ function mergeClickable(city) {
//clickable = (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll //clickable = (remainSpy << 3) | (ourCity << 2) | (shownByGeneral << 1) | clickableAll
var id = city.id; var id = city.id;
var nationId = city.nationId; var nationId = city.nationId;
var clickable = 0; var clickable = 0;
if(id in spyList){ if (id in spyList) {
clickable |= spyList[id] << 3; clickable |= spyList[id] << 3;
} }
if(myNation !== null && nationId == myNation){ if (myNation !== null && nationId == myNation) {
clickable |= 4; clickable |= 4;
} }
if(shownByGeneralList.hasOwnProperty(id)){ if (shownByGeneralList.hasOwnProperty(id)) {
clickable |= 2; clickable |= 2;
} }
if(myCity !== null && id == myCity){ if (myCity !== null && id == myCity) {
clickable |= 2; clickable |= 2;
} }
if(clickableAll){ if (clickableAll) {
clickable |= 1; clickable |= 1;
} }
@@ -250,35 +267,35 @@ function reloadWorldMap(option){
.map(formatCityInfo); .map(formatCityInfo);
return { return {
'cityList' : cityList, 'cityList': cityList,
'myCity' : myCity 'myCity': myCity
}; };
} }
function drawDetailWorldMap(obj){ function drawDetailWorldMap(obj) {
var $map_body = $('.world_map .map_body'); var $map_body = $(drawTarget + ' .map_body');
var cityList = obj.cityList; var cityList = obj.cityList;
var myCity = obj.myCity; var myCity = obj.myCity;
cityList.forEach(function(city){ cityList.forEach(function(city) {
var id = city.id; var id = city.id;
$('.city_base_{0}'.format(id)).detach(); $('.city_base_{0}'.format(id)).detach();
//이전 도시는 지운다. //이전 도시는 지운다.
var $cityObj = $('<div class="city_base city_base_{0}"></div>'.format(id)); var $cityObj = $('<div class="city_base city_base_{0}"></div>'.format(id));
$cityObj.addClass('city_level_{0}'.format(city.level)); $cityObj.addClass('city_level_{0}'.format(city.level));
$cityObj.data('obj', city).css({'left':city.x-20,'top':city.y-15}); $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });
if('color' in city && city.color !== null){ if ('color' in city && city.color !== null) {
var $bgObj = $('<div class="city_bg"></div>'); var $bgObj = $('<div class="city_bg"></div>');
$cityObj.append($bgObj); $cityObj.append($bgObj);
$bgObj.css({'background-image':'url({0}/b{1}.png)'.format(pathConfig.gameImage, convColorValue(city.color))}); $bgObj.css({ 'background-image': 'url({0}/b{1}.png)'.format(pathConfig.gameImage, convColorValue(city.color)) });
} }
var $linkObj = $('<a class="city_link"></a>'); var $linkObj = $('<a class="city_link"></a>');
$linkObj.data({'text':city.text,'nation':city.nation,'id':city.id}); $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });
$cityObj.append($linkObj); $cityObj.append($linkObj);
var $imgObj = $('<div class="city_img"><img src="{0}/cast_{1}.gif"><div class="city_filler"></div></div>'.format(pathConfig.gameImage, city.level)); var $imgObj = $('<div class="city_img"><img src="{0}/cast_{1}.gif"><div class="city_filler"></div></div>'.format(pathConfig.gameImage, city.level));
@@ -286,15 +303,15 @@ function reloadWorldMap(option){
if(city.state > 0){ if (city.state > 0) {
var $stateObj = $('<div class="city_state"><img src="{0}/event{1}.gif"></div>'.format(pathConfig.gameImage, city.state)); var $stateObj = $('<div class="city_state"><img src="{0}/event{1}.gif"></div>'.format(pathConfig.gameImage, city.state));
$linkObj.append($stateObj); $linkObj.append($stateObj);
} }
if(city.nationId && city.nationId > 0){ if (city.nationId && city.nationId > 0) {
var flagType = city.supply?'f':'d'; var flagType = city.supply ? 'f' : 'd';
var $flagObj = $('<div class="city_flag"><img src="{0}/{1}{2}.gif"></div>'.format(pathConfig.gameImage, flagType, convColorValue(city.color))); var $flagObj = $('<div class="city_flag"><img src="{0}/{1}{2}.gif"></div>'.format(pathConfig.gameImage, flagType, convColorValue(city.color)));
if(city.isCapital){ if (city.isCapital) {
var $capitalObj = $('<div class="city_capital"><img src="{0}/event51.gif"></div>'.format(pathConfig.gameImage)); var $capitalObj = $('<div class="city_capital"><img src="{0}/event51.gif"></div>'.format(pathConfig.gameImage));
$flagObj.append($capitalObj); $flagObj.append($capitalObj);
} }
@@ -315,41 +332,39 @@ function reloadWorldMap(option){
return obj; return obj;
} }
function drawBasicWorldMap(obj){ function drawBasicWorldMap(obj) {
var $map_body = $('.world_map .map_body'); var $map_body = $(drawTarget + ' .map_body');
var cityList = obj.cityList; var cityList = obj.cityList;
var myCity = obj.myCity; var myCity = obj.myCity;
cityList.forEach(function(city){ cityList.forEach(function(city) {
var id = city.id; var id = city.id;
$('.city_base_{0}'.format(id)).detach(); $('.city_base_{0}'.format(id)).detach();
//이전 도시는 지운다. //이전 도시는 지운다.
var $cityObj = $('<div class="city_base city_base_{0}"></div>'.format(id)); var $cityObj = $('<div class="city_base city_base_{0}"></div>'.format(id));
$cityObj.addClass('city_level_{0}'.format(city.level)); $cityObj.addClass('city_level_{0}'.format(city.level));
$cityObj.data('obj', city).css({'left':city.x-20,'top':city.y-15}); $cityObj.data('obj', city).css({ 'left': city.x - 20, 'top': city.y - 15 });
var $linkObj = $('<a class="city_link"></a>'); var $linkObj = $('<a class="city_link"></a>');
$linkObj.data({'text':city.text,'nation':city.nation,'id':city.id}); $linkObj.data({ 'text': city.text, 'nation': city.nation, 'id': city.id });
$cityObj.append($linkObj); $cityObj.append($linkObj);
var $imgObj = $('<div class="city_img"><div class="city_filler"></div></div>'); var $imgObj = $('<div class="city_img"><div class="city_filler"></div></div>');
if('color' in city && city.color !== null){ if ('color' in city && city.color !== null) {
$imgObj.css({'background-color':city.color}); $imgObj.css({ 'background-color': city.color });
} }
$linkObj.append($imgObj); $linkObj.append($imgObj);
if(city.state > 0){ if (city.state > 0) {
var state_text = 'wrong'; var state_text = 'wrong';
if(city.state < 10){ if (city.state < 10) {
state_text = 'good'; state_text = 'good';
} } else if (city.state < 40) {
else if(city.state < 40){
state_text = 'bad'; state_text = 'bad';
} } else if (city.state < 50) {
else if(city.state < 50){
state_text = 'war'; state_text = 'war';
} }
@@ -358,7 +373,7 @@ function reloadWorldMap(option){
} }
//단순 표기에서는 깃발 여부가 없음 //단순 표기에서는 깃발 여부가 없음
if(city.isCapital){ if (city.isCapital) {
var $capitalObj = $('<div class="city_capital"></div>'); var $capitalObj = $('<div class="city_capital"></div>');
$imgObj.append($capitalObj); $imgObj.append($capitalObj);
} }
@@ -374,32 +389,30 @@ function reloadWorldMap(option){
return obj; return obj;
} }
function setMouseWork(obj){ function setMouseWork(obj) {
var $tooltip = $('.world_map .city_tooltip'); var $tooltip = $(drawTarget + ' .city_tooltip');
var $tooltip_city = $tooltip.find('.city_name'); var $tooltip_city = $tooltip.find('.city_name');
var $tooltip_nation = $tooltip.find('.nation_name'); var $tooltip_nation = $tooltip.find('.nation_name');
var $objs = $('.world_map .city_link'); var $objs = $(drawTarget + ' .city_link');
var $map_body = $('.world_map .map_body'); var $map_body = $(drawTarget + ' .map_body');
//터치스크린 탭 //터치스크린 탭
if(!option.neutralView && is_touch_device()){ if (!option.neutralView && is_touch_device()) {
$objs.on('touchstart', function(e){ $objs.on('touchstart', function(e) {
if(window.sam_toggleSingleTap){ if (window.sam_toggleSingleTap) {
return true; return true;
} }
var $this = $(this); var $this = $(this);
var touchMode = $this.data('touchMode'); var touchMode = $this.data('touchMode');
if($tooltip_city.data('target') != $this.data('id')){ if ($tooltip_city.data('target') != $this.data('id')) {
$this.data('touchMode', 1); $this.data('touchMode', 1);
} } else if (touchMode === undefined) {
else if(touchMode === undefined){
$this.data('touchMode', 1); $this.data('touchMode', 1);
} } else {
else{
$this.data('touchMode', touchMode + 1); $this.data('touchMode', touchMode + 1);
} }
$map_body.data('touchMode', 1); $map_body.data('touchMode', 1);
@@ -409,8 +422,8 @@ function reloadWorldMap(option){
}); });
$objs.on('touchend', function(e){ $objs.on('touchend', function(e) {
if(window.sam_toggleSingleTap){ if (window.sam_toggleSingleTap) {
return true; return true;
} }
var $this = $(this); var $this = $(this);
@@ -418,17 +431,25 @@ function reloadWorldMap(option){
$tooltip_city.html($this.data('text')); $tooltip_city.html($this.data('text'));
var nation_text = $this.data('nation'); var nation_text = $this.data('nation');
if(nation_text){ if (nation_text) {
$tooltip_nation.html(nation_text).show(); $tooltip_nation.html(nation_text).show();
} } else {
else{
$tooltip_nation.html('').hide(); $tooltip_nation.html('').hide();
} }
$tooltip.css({'top': position.top + 25, 'left': position.left + 35}).show(); var left = position.left;
var top = position.top;
var scale = $map_body.data('scale');
if (scale) {
left /= scale;
top /= scale;
}
$tooltip.css({ 'top': top + 25, 'left': left + 35 }).show();
var touchMode = $this.data('touchMode'); var touchMode = $this.data('touchMode');
if(touchMode <= 1){ if (touchMode <= 1) {
return false; return false;
} }
@@ -436,8 +457,8 @@ function reloadWorldMap(option){
$this.data('touchMode', 0); $this.data('touchMode', 0);
}); });
$map_body.on('touchend',function(e){ $map_body.on('touchend', function(e) {
if(window.sam_toggleSingleTap){ if (window.sam_toggleSingleTap) {
return true; return true;
} }
//위의 touchend bind에 해당하지 않는 경우 -> 빈 지도 터치 //위의 touchend bind에 해당하지 않는 경우 -> 빈 지도 터치
@@ -448,20 +469,26 @@ function reloadWorldMap(option){
//Mouse over 모드 작동 //Mouse over 모드 작동
$map_body.on('mousemove', function(e){ $map_body.on('mousemove', function(e) {
if($(this).data('touchMode')){ if ($(this).data('touchMode')) {
return true; return true;
} }
var parentOffset = $map_body.offset(); var rect = this.getBoundingClientRect();
var relX = e.pageX - parentOffset.left; var left = (e.clientX - rect.left - this.clientLeft + this.scrollLeft);
var relY = e.pageY - parentOffset.top; var top = (e.clientY - rect.top - this.clientTop + this.scrollTop);
$tooltip.css({'top': relY + 10, 'left': relX + 10}); var scale = $map_body.data('scale');
if (scale) {
left /= scale;
top /= scale;
}
$tooltip.css({ 'top': top + 10, 'left': left + 10 });
}); });
$objs.on('mouseenter', function(e){ $objs.on('mouseenter', function(e) {
if($map_body.data('touchMode')){ if ($map_body.data('touchMode')) {
return true; return true;
} }
@@ -470,28 +497,27 @@ function reloadWorldMap(option){
$tooltip_city.data('target', $this.data('id')); $tooltip_city.data('target', $this.data('id'));
$tooltip_city.html($this.data('text')); $tooltip_city.html($this.data('text'));
var nation_text = $this.data('nation'); var nation_text = $this.data('nation');
if(nation_text){ if (nation_text) {
$tooltip_nation.html(nation_text).show(); $tooltip_nation.html(nation_text).show();
} } else {
else{
$tooltip_nation.html('').hide(); $tooltip_nation.html('').hide();
} }
$tooltip.show(); $tooltip.show();
}); });
$objs.on('mouseleave', function(event){ $objs.on('mouseleave', function(event) {
$tooltip.hide(); $tooltip.hide();
}); });
$objs.on('click', function(e){ $objs.on('click', function(e) {
//xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다. //xxx: touchend 다음 click 이벤트가 갈 수도 있고, 안 갈 수도 있다.
var touchMode = $(this).data('touchMode'); var touchMode = $(this).data('touchMode');
if(touchMode === undefined){ if (touchMode === undefined) {
return; return;
} }
if(touchMode === 1){ if (touchMode === 1) {
return false; return false;
} }
}); });
@@ -500,17 +526,17 @@ function reloadWorldMap(option){
return obj; return obj;
} }
function setCityClickable(obj){ function setCityClickable(obj) {
obj.cityList.forEach(function(city){ obj.cityList.forEach(function(city) {
var $cityLink = $world_map.find('.city_base_{0} .city_link'.format(city.id)); var $cityLink = $world_map.find('.city_base_{0} .city_link'.format(city.id));
if('clickable' in city && city.clickable > 0){ if ('clickable' in city && city.clickable > 0) {
$cityLink.attr('href',hrefTemplate.format(city.id)); $cityLink.attr('href', hrefTemplate.format(city.id));
} }
if(selectCallback){ if (selectCallback) {
$cityLink.click(function(){ $cityLink.click(function() {
return selectCallback(city); return selectCallback(city);
}); });
} }
@@ -519,127 +545,133 @@ function reloadWorldMap(option){
return obj; return obj;
} }
function saveCityInfo(obj){ function saveCityInfo(obj) {
$world_map.data('cityInfo', obj); $world_map.data('cityInfo', obj);
return obj; return obj;
} }
var $hideCityNameBtn = $world_map.find('.map_toggle_cityname'); var $hideCityNameBtn = $world_map.find('.map_toggle_cityname');
if(localStorage.getItem('sam.hideMapCityName') == 'yes'){ if (localStorage.getItem('sam.hideMapCityName') == 'yes') {
$world_map.addClass('hide_cityname'); $world_map.addClass('hide_cityname');
$hideCityNameBtn.addClass('active').attr('aria-pressed', 'true'); $hideCityNameBtn.addClass('active').attr('aria-pressed', 'true');
} }
$hideCityNameBtn.click(function(){ $hideCityNameBtn.click(function() {
//이전 상태 확인 //이전 상태 확인
var state = !$hideCityNameBtn.hasClass('active'); var state = !$hideCityNameBtn.hasClass('active');
if(state){ if (state) {
$world_map.addClass('hide_cityname'); $world_map.addClass('hide_cityname');
localStorage.setItem('sam.hideMapCityName', 'yes'); localStorage.setItem('sam.hideMapCityName', 'yes');
} } else {
else{
$world_map.removeClass('hide_cityname'); $world_map.removeClass('hide_cityname');
localStorage.setItem('sam.hideMapCityName', 'no'); localStorage.setItem('sam.hideMapCityName', 'no');
} }
}); });
var $toggleSingleTapBtn = $world_map.find('.map_toggle_single_tap'); var $toggleSingleTapBtn = $world_map.find('.map_toggle_single_tap');
if(localStorage.getItem('sam.toggleSingleTap') == 'yes'){ if (localStorage.getItem('sam.toggleSingleTap') == 'yes') {
window.sam_toggleSingleTap = true; window.sam_toggleSingleTap = true;
$toggleSingleTapBtn.addClass('active').attr('aria-pressed', 'true'); $toggleSingleTapBtn.addClass('active').attr('aria-pressed', 'true');
} } else {
else{
window.sam_toggleSingleTap = false; window.sam_toggleSingleTap = false;
} }
var $map_body = $('.world_map .map_body'); var $map_body = $(drawTarget + ' .map_body');
$toggleSingleTapBtn.click(function(){ $toggleSingleTapBtn.click(function() {
//이전 상태 확인 //이전 상태 확인
var state = !$toggleSingleTapBtn.hasClass('active'); var state = !$toggleSingleTapBtn.hasClass('active');
if(state){ if (state) {
$map_body.removeData('touchMode'); $map_body.removeData('touchMode');
localStorage.setItem('sam.toggleSingleTap', 'yes'); localStorage.setItem('sam.toggleSingleTap', 'yes');
window.sam_toggleSingleTap = true; window.sam_toggleSingleTap = true;
} } else {
else{
localStorage.setItem('sam.toggleSingleTap', 'no'); localStorage.setItem('sam.toggleSingleTap', 'no');
window.sam_toggleSingleTap = false; window.sam_toggleSingleTap = false;
} }
}); });
if(isDetailMap){ if (isDetailMap) {
$world_map.addClass('map_detail'); $world_map.addClass('map_detail');
} } else {
else{
$world_map.removeClass('map_datail'); $world_map.removeClass('map_datail');
} }
//deferred mode of jQuery. != promise-then. //deferred mode of jQuery. != promise-then.
var deferred = $.ajax({ var deferred = $.ajax({
url: option.targetJson, url: option.targetJson,
type: 'post', type: option.reqType,
dataType:'json', dataType: 'json',
ifModified: true,
data: { data: {
data: JSON.stringify({ data: JSON.stringify({
neutralView:option.neutralView, neutralView: option.neutralView,
year:option.year, year: option.year,
month:option.month, month: option.month,
showMe:option.showMe, showMe: option.showMe,
aux:option.aux aux: option.aux
}) })
} }
}); });
var rawObject = null;
deferred deferred
.then(function(data) {
rawObject = data;
return data;
})
.then(checkReturnObject) .then(checkReturnObject)
.then(setMapBackground) .then(setMapBackground)
.then(convertCityObjs) .then(convertCityObjs)
.then(isDetailMap?drawDetailWorldMap:drawBasicWorldMap) .then(isDetailMap ? drawDetailWorldMap : drawBasicWorldMap)
.then(setMouseWork) .then(setMouseWork)
.then(setCityClickable) .then(setCityClickable)
.then(saveCityInfo); .then(saveCityInfo)
.then(function(data) {
if (option.callback) {
option.callback(data, rawObject);
}
if($world_map.hasClass('draw_required')){ });
if(useCachedMap){
if ($world_map.hasClass('draw_required')) {
if (useCachedMap) {
//일단 불러옴 //일단 불러옴
do{ do {
var storedMap = localStorage.getItem(storedOldMapKey); var storedMap = localStorage.getItem(storedOldMapKey);
if(!storedMap){ if (!storedMap) {
break; break;
} }
storedMap = JSON.parse(storedMap); storedMap = JSON.parse(storedMap);
var storedServerID = storedMap[0]; var storedServerID = storedMap[0];
if(storedServerID != serverID){ if (storedServerID != serverID) {
break; break;
} }
storedMap = storedMap[1]; storedMap = storedMap[1];
storedMap = setMapBackground(storedMap); storedMap = setMapBackground(storedMap);
storedMap = convertCityObjs(storedMap); storedMap = convertCityObjs(storedMap);
if(isDetailMap){ if (isDetailMap) {
storedMap = drawDetailWorldMap(storedMap); storedMap = drawDetailWorldMap(storedMap);
} } else {
else{
storedMap = drawBasicWorldMap(storedMap); storedMap = drawBasicWorldMap(storedMap);
} }
storedMap = setMouseWork(storedMap); storedMap = setMouseWork(storedMap);
storedMap = setCityClickable(storedMap); storedMap = setCityClickable(storedMap);
storedMap = saveCityInfo(storedMap); storedMap = saveCityInfo(storedMap);
}while(false); } while (false);
} } else if (option.year && option.month) {
else if(option.year && option.month){
var startYear = localStorage.getItem(storedStartYear); var startYear = localStorage.getItem(storedStartYear);
if(startYear){ if (startYear) {
startYear = JSON.parse(startYear); startYear = JSON.parse(startYear);
} } else {
else{
startYear = option.year; startYear = option.year;
} }
var tmp = { var tmp = {
year : option.year, year: option.year,
month : option.month, month: option.month,
startYear : startYear startYear: startYear
}; };
setMapBackground(tmp); setMapBackground(tmp);
} }
@@ -647,8 +679,8 @@ function reloadWorldMap(option){
} }
} }
$(function(){ $(function() {
if(is_touch_device()){ if (is_touch_device()) {
$('.map_body .map_toggle_single_tap').show(); $('.map_body .map_toggle_single_tap').show();
} }
}) })
+85 -36
View File
@@ -19,6 +19,28 @@ if ($session->isLoggedIn()) {
die(); die();
} }
$runningServer = null;
foreach(ServConfig::getServerList() as $setting){
if(!$setting->isExists()){
continue;
}
if(!$setting->isRunning()){
continue;
}
$runningServer = [
'color'=>$setting->getColor(),
'korName'=>$setting->getKorName(),
'name'=>$setting->getShortName(),
'exists'=>$setting->isExists(),
'enable'=>$setting->isRunning()
];
}
if($runningServer){
$subTemplates = new \League\Plates\Engine(__DIR__.'/'.$runningServer['name'].'/templates');
}
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ko"> <html lang="ko">
@@ -28,14 +50,27 @@ if ($session->isLoggedIn()) {
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>삼국지 모의전투 HiDCHe</title> <title>삼국지 모의전투 HiDCHe</title>
<script>
var runningServer = <?=Json::encode($runningServer)?>;
</script>
<?= WebUtil::printJS('e_lib/jquery-3.3.1.min.js') ?> <?= WebUtil::printJS('e_lib/jquery-3.3.1.min.js') ?>
<?= WebUtil::printJS('e_lib/bootstrap.bundle.min.js') ?> <?= WebUtil::printJS('e_lib/bootstrap.bundle.min.js') ?>
<?= WebUtil::printJS('e_lib/jquery.validate.min.js') ?> <?= WebUtil::printJS('e_lib/jquery.validate.min.js') ?>
<?= WebUtil::printJS('e_lib/sha512.min.js') ?> <?= WebUtil::printJS('e_lib/sha512.min.js') ?>
<?= WebUtil::printJS('js/common.js') ?> <?= WebUtil::printJS('js/common.js') ?>
<?= WebUtil::printJS('js/login.js') ?> <?= WebUtil::printJS('js/login.js') ?>
<?= WebUtil::printJS('d_shared/common_path.js') ?>
<?= WebUtil::printCSS('d_shared/common.css') ?>
<?= WebUtil::printCSS('e_lib/bootstrap.min.css') ?> <?= WebUtil::printCSS('e_lib/bootstrap.min.css') ?>
<?= WebUtil::printCSS('css/login.css') ?> <?= WebUtil::printCSS('css/login.css') ?>
<?php if($runningServer): ?>
<script>
var serverNick = '<?=$runningServer['korName']?>';
</script>
<?= WebUtil::printJS($runningServer['name'].'/d_shared/base_map.js') ?>
<?= WebUtil::printJS($runningServer['name'].'/js/map.js') ?>
<?= WebUtil::printCSS($runningServer['name'].'/css/map.css') ?>
<?php endif; ?>
<meta name="description" content="실시간으로 진행되는 삼국지 웹게임(삼모전)입니다"> <meta name="description" content="실시간으로 진행되는 삼국지 웹게임(삼모전)입니다">
<meta name="keywords" content="삼국지,삼모전,웹게임,힏체,힏체섭,히데체,히데체섭,HiDCHe,체섭"> <meta name="keywords" content="삼국지,삼모전,웹게임,힏체,힏체섭,히데체,히데체섭,HiDCHe,체섭">
<meta property="og:type" content="website"> <meta property="og:type" content="website">
@@ -139,61 +174,75 @@ if ($session->isLoggedIn()) {
</ul> </ul>
</div> </div>
</nav> </nav>
<div class="full-content"> <div class="container" style="margin-top:120px;">
<div class="vertical-center"> <h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe</h1>
<div class="container"> <div class="row justify-content-md-center">
<h1 class="row justify-content-md-center">삼국지 모의전투 HiDCHe</h1> <div class="col" style="max-width:450px;">
<div class="row justify-content-md-center"> <div class="card" id="login_card">
<div class="col" style="max-width:450px;"> <h3 class="card-header">
<div class="card" id="login_card"> 로그인
<h3 class="card-header"> </h3>
로그인 <div class="card-body">
</h3>
<div class="card-body">
<form id="main_form" method="post" action="#"> <form id="main_form" method="post" action="#">
<div class="form-group row"> <div class="form-group row">
<label for="username" class="col-5 col-md-4 col-form-label">계정명</label> <label for="username" class="col-5 col-md-4 col-form-label">계정명</label>
<div class="col-7 col-md-8"> <div class="col-7 col-md-8">
<input autocomplete="username" type="text" class="form-control" name="username" id="username" autofocus="autofocus" placeholder="계정명" /> <input autocomplete="username" type="text" class="form-control" name="username" id="username" autofocus="autofocus" placeholder="계정명" />
</div>
</div> </div>
</div>
<div class="form-group row"> <div class="form-group row">
<label for="password" class="col-5 col-md-4 col-form-label">비밀번호</label> <label for="password" class="col-5 col-md-4 col-form-label">비밀번호</label>
<div class="col-7 col-md-8"> <div class="col-7 col-md-8">
<input autocomplete="current-password" type="password" class="form-control" name="password" id="password" placeholder="비밀번호" /> <input autocomplete="current-password" type="password" class="form-control" name="password" id="password" placeholder="비밀번호" />
</div>
</div> </div>
</div>
<input type="hidden" id="global_salt" name="global_salt" value="<?= RootDB::getGlobalSalt() ?>"> <input type="hidden" id="global_salt" name="global_salt" value="<?= RootDB::getGlobalSalt() ?>">
<div class="form-group row"> <div class="form-group row">
<div class="col-5 col-md-4 " style="position:relative;"><button type="button" onclick="getOAuthToken('login', ['account_email','talk_message']);" id="btn_kakao_login" title="카카오톡으로 가입&amp;로그인"></button></div> <div class="col-5 col-md-4 " style="position:relative;"><button type="button" onclick="getOAuthToken('login', ['account_email','talk_message']);" id="btn_kakao_login" title="카카오톡으로 가입&amp;로그인"></button></div>
<div class="col-7 col-md-8"> <div class="col-7 col-md-8">
<div class="btn-group btn-group-lg d-flex login_btn_group" role="group"> <div class="btn-group btn-group-lg d-flex login_btn_group" role="group">
<button type="submit" class="btn btn-primary login-button w-100">로그인</button> <button type="submit" class="btn btn-primary login-button w-100">로그인</button>
<div class="btn-group" role="group"> <div class="btn-group" role="group">
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> </button> <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> </button>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="btnGroupDrop1"> <div class="dropdown-menu dropdown-menu-right" aria-labelledby="btnGroupDrop1">
<a class="dropdown-item" href="javascript:getOAuthToken('change_pw', 'talk_message');">비밀번호 초기화</a> <a class="dropdown-item" href="javascript:getOAuthToken('change_pw', 'talk_message');">비밀번호 초기화</a>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</form> </div>
</div> </form>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<?php if($runningServer): ?>
<div class="row justify-content-md-center" id="running_map">
<div class="col" style="max-width:700px;">
<div class="card" style="width:700px;">
<h3 class="card-header">
<?=$runningServer['korName']?> 현황
</h3>
<div class='map-container' style='position:relative;'>
<?=$subTemplates->render('map', [
'mapTheme' => ''
])?>
</div>
<div class="card-body">
</div>
</div>
</div>
</div>
<?php endif; ?>
</div> </div>
<div id="bottom_box"> <div id="bottom_box">
<div class="container"><a href="terms.2.html">개인정보처리방침</a> &amp; <a href="terms.1.html">이용약관</a><br>© 2020 • HideD <div class="container"><a href="terms.2.html">개인정보처리방침</a> &amp; <a href="terms.1.html">이용약관</a><br>© 2020 • HideD
<br>크롬과 파이어폭스에 최적화되어있습니다.</div> <br>크롬과 파이어폭스에 최적화되어있습니다.</div>
</div> </div>
</div>
<div class="modal fade" id="modalOTP" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal fade" id="modalOTP" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
+56 -32
View File
@@ -1,5 +1,5 @@
$(document).ready( function () { $(document).ready(function() {
$( "#main_form" ).validate( { $("#main_form").validate({
rules: { rules: {
username: { username: {
required: true required: true
@@ -17,48 +17,48 @@ $(document).ready( function () {
} }
}, },
errorElement: "div", errorElement: "div",
errorPlacement: function ( error, element ) { errorPlacement: function(error, element) {
// Add the `help-block` class to the error element // Add the `help-block` class to the error element
error.addClass( "invalid-feedback" ); error.addClass("invalid-feedback");
if ( element.prop( "type" ) === "checkbox" ) { if (element.prop("type") === "checkbox") {
error.insertAfter( element.parent( "label" ) ); error.insertAfter(element.parent("label"));
} else { } else {
error.insertAfter( element ); error.insertAfter(element);
} }
}, },
highlight: function ( element, errorClass, validClass ) { highlight: function(element, errorClass, validClass) {
$( element ).addClass( "is-invalid" ).removeClass( "is-valid" ); $(element).addClass("is-invalid").removeClass("is-valid");
}, },
unhighlight: function (element, errorClass, validClass) { unhighlight: function(element, errorClass, validClass) {
$( element ).addClass( "is-valid" ).removeClass( "is-invalid" ); $(element).addClass("is-valid").removeClass("is-invalid");
} }
} ); });
$( "#main_form" ).submit(function(){ $("#main_form").submit(function() {
var raw_password = $('#password').val(); var raw_password = $('#password').val();
var salt = $('#global_salt').val(); var salt = $('#global_salt').val();
var hash_pw = sha512(salt + raw_password + salt); var hash_pw = sha512(salt + raw_password + salt);
$.post({ $.post({
url:'j_login.php', url: 'j_login.php',
dataType:'json', dataType: 'json',
data:{ data: {
'username':$('#username').val(), 'username': $('#username').val(),
'password':hash_pw 'password': hash_pw
} }
}).then(function(obj){ }).then(function(obj) {
if(obj.result){ if (obj.result) {
window.location.href = "./"; window.location.href = "./";
return; return;
} }
if(!obj.reqOTP){ if (!obj.reqOTP) {
alert(obj.reason); alert(obj.reason);
return; return;
} }
var $modal = $('#modalOTP').modal(); var $modal = $('#modalOTP').modal();
$modal.on('shown.bs.modal', function(){ $modal.on('shown.bs.modal', function() {
$('#otp_code').focus(); $('#otp_code').focus();
}); });
@@ -67,15 +67,15 @@ $(document).ready( function () {
return false; return false;
}); });
$('#otp_form').submit(function(){ $('#otp_form').submit(function() {
$.post({ $.post({
url:'oauth_kakao/j_check_OTP.php', url: 'oauth_kakao/j_check_OTP.php',
dataType:'json', dataType: 'json',
data:{ data: {
'otp':$('#otp_code').val(), 'otp': $('#otp_code').val(),
} }
}).then(function(obj){ }).then(function(obj) {
if(obj.result){ if (obj.result) {
alert(obj.reason); alert(obj.reason);
window.location.href = "./"; window.location.href = "./";
return; return;
@@ -83,11 +83,35 @@ $(document).ready( function () {
alert(obj.reason); alert(obj.reason);
if(obj.reset){ if (obj.reset) {
$('#modalOTP').modal('hide') $('#modalOTP').modal('hide')
return; return;
} }
}); });
return false; return false;
}) });
} );
if (document.body.clientWidth < 700) {
var targetWidth = document.body.clientWidth * 0.9;
var scale = targetWidth / 700;
var $map = $('#running_map');
$map.find('.col').css('max-width', targetWidth);
$map.find('.card').css('width', targetWidth);
$map.find('.map-container').css({
'transform-origin': 'top left',
'transform': 'scale({0}, {0})'.format(scale),
'height': 500 * scale,
});
$map.find('.map_body').data('scale', scale);
}
reloadWorldMap({
targetJson: "{0}/j_map_recent.php".format(runningServer.name),
reqType: 'get',
dynamicMapTheme: true,
callback: function(data, rawObject) {
$('#running_map .card-body').html(rawObject.history);
}
});
});