새메시지, mailboxList를 처리하는 코드 일부 추가

This commit is contained in:
2018-02-12 22:42:05 +09:00
parent 8a2d4c3540
commit 7d465c444d
3 changed files with 185 additions and 87 deletions
+8 -1
View File
@@ -44,7 +44,7 @@
} }
.msg_time{ .msg_time{
font-size:0.7em; font-size:0.75em;
font-weight:normal; font-weight:normal;
} }
@@ -90,9 +90,11 @@
border-radius: 3px; border-radius: 3px;
} }
/*
.public_message .msg_target{ .public_message .msg_target{
box-shadow: 2px 2px darkslategrey; box-shadow: 2px 2px darkslategrey;
} }
*/
.msg_target.msg_bright{ .msg_target.msg_bright{
color:black; color:black;
@@ -115,4 +117,9 @@
text-align:right; text-align:right;
margin-top:5px; margin-top:5px;
margin-right:5px; margin-right:5px;
}
#mailbox_list option{
color:white;
background-color:black;
} }
+175 -82
View File
@@ -21,109 +21,202 @@ function isBrightColor(color){
} }
var messageTemplate = ''; var messageTemplate = '';
var generalID=null;
var isChief = false;
var sequence =null;
var refreshMsg = (function(){ function refreshMsg(){
var generalID=null; var deferred = $.ajax({
var isChief = false; url: 'json_result.php',
var sequence =null; type: 'post',
dataType:'json',
contentType: 'application/json',
data: JSON.stringify({
sequence:sequence
})
});
return function(){ function registerGlobal(obj){
var deferred = $.ajax({ if(!obj.result){
url: 'json_result.php', deferred.reject();
type: 'post', return;
dataType:'json', }
contentType: 'application/json', sequence = obj.sequence;
data: JSON.stringify({ return obj;
sequence:sequence }
})
}); function refineMessageObjs(obj){
var msgList = [obj.public, obj.private, obj.diplomacy, obj.national];
function registerGlobal(obj){ $.each(msgList, function(){
if(!obj.result){ if(!this){
deferred.reject(); return true;
return;
} }
generalID = obj.generalID;
isChief = obj.isChief;
sequence = obj.sequence;
return obj;
}
function refineMessageObjs(obj){ $.each(this, function(){
var msgList = [obj.public, obj.private, obj.diplomacy, obj.national]; var msg = this;
$.each(msgList, function(){ if(!msg.src.nation){
if(!this){ msg.src.nation = '재야';
return true; msg.src.color = '#ffffff';
} }
console.log(this); if(!msg.dest.nation){
msg.dest.nation = '재야';
$.each(this, function(){ msg.dest.color = '#ffffff';
var msg = this;
if(!msg.src.nation){
msg.src.nation = '재야';
msg.src.color = '#ffffff';
}
if(!msg.dest.nation){
msg.dest.nation = '재야';
msg.dest.color = '#ffffff';
}
msg.src.colorType = isBrightColor(msg.src.color)?'bright':'dark';
msg.dest.colorType = isBrightColor(msg.dest.color)?'bright':'dark';
});
});
return obj;
}
function printTemplate(obj){
var printList = [
[obj.public, $('#message_board .public_message'), 'public'],
[obj.private, $('#message_board .private_message'), 'private'],
[obj.diplomacy, $('#message_board .diplomacy_message'), 'diplomacy'],
[obj.national, $('#message_board .national_message'), 'national'],
];
$.each(printList, function(){
var msgSource = this[0];
var $msgBoard = this[1];
var msgType = this[2];
if(!msgSource || $msgBoard.length == 0){
console.log('No Items', msgSource, $msgBoard);
return true;
} }
//list의 맨 앞이 가장 최신 메시지임. msg.src.colorType = isBrightColor(msg.src.color)?'bright':'dark';
var msgHtmls = msgSource.map(function(msg){ msg.dest.colorType = isBrightColor(msg.dest.color)?'bright':'dark';
msg.msgType = msgType; });
var msgHtml = TemplateEngine(messageTemplate, msg); });
console.log(msgHtml); return obj;
return msgHtml; }
});
var $items = $(msgHtmls.join('')); function printTemplate(obj){
console.log($items); var printList = [
$msgBoard.prepend($items); [obj.public, $('#message_board .public_message'), 'public'],
[obj.private, $('#message_board .private_message'), 'private'],
[obj.diplomacy, $('#message_board .diplomacy_message'), 'diplomacy'],
[obj.national, $('#message_board .national_message'), 'national'],
];
$.each(printList, function(){
var msgSource = this[0];
var $msgBoard = this[1];
var msgType = this[2];
if(!msgSource || $msgBoard.length == 0){
console.log('No Items', msgSource, $msgBoard);
return true;
}
if(msgType == 'diplomacy'){
//외교는 항상 새로 그린다
$msgBoard.empty();
}
//list의 맨 앞이 가장 최신 메시지임.
var msgHtmls = msgSource.map(function(msg){
msg.msgType = msgType;
var msgHtml = TemplateEngine(messageTemplate, msg);
return msgHtml;
}); });
} var $items = $(msgHtmls.join(''));
$msgBoard.prepend($items);
});
deferred }
.then(registerGlobal)
.then(refineMessageObjs) deferred
.then(printTemplate); .then(registerGlobal)
.then(refineMessageObjs)
.then(printTemplate);
}
function refreshMailboxList(obj){
generalID = obj.generalID;
isChief = obj.isChief;
var last = {
'id':obj.last
}; };
})(); var myNation = {
'mailbox':obj.myNationMailbox,
'color':'#000000',
'nation':'재야'
};
var $mailboxList = $('#mailbox_list');
$mailboxList.change(function(){
console.log($(this).val());
})
var oldSelected = $mailboxList.val();
$mailboxList.empty();
$.each(obj.nation, function(){
var nation = this;
var $optgroup = $('<optgroup label="{0}"></optgroup>'.format(nation.nation));
$optgroup.css('background-color', nation.color);
if(myNation.mailbox == nation.mailbox){
myNation.color = nation.color;
}
if(isBrightColor(nation.color)){
$optgroup.css('color', 'black');
}
else{
$optgroup.css('color', 'white');
}
$.each(nation.general, function(){
var generalID = this[0];
var generalName = this[1];
var isRuler = this.length>2;
if(generalID == last.id){
last.name = generalName;
}
var textName = generalName;
if(isRuler){
textName = '*{0}*'.format(textName);
}
var $item = $('<option value="{0}">{1}</option>'.format(generalID, textName));
$optgroup.append($item);
});
$mailboxList.append($optgroup);
});
var $favorite = $('<optgroup label="즐겨찾기"></optgroup>');
//아국메시지, 전체메시지
var $ourCountry = $('<option value="{0}">【 아국 메세지 】</option>'.format(myNation.mailbox))
.css({'background-color':myNation.color, 'color':isBrightColor(myNation.color)?'black':'white'});
var $toPublic = $('<option value="9999">【 전체 메세지 】</option>');
$favorite.append($ourCountry);
$favorite.append($toPublic);
//최근 대화상대
if(last.id){
var $last = $('<option value="{0}">{1}</option>'.format(last.id, last.name));
$favorite.append($last);
}
//TODO:운영자를 추가하는 코드도 넣을 것.
$mailboxList.prepend($favorite);
if(!oldSelected){
$mailboxList.val(myNation.mailbox);
}
else{
$mailboxList.val(oldSelected);
}
}
jQuery(function($){ jQuery(function($){
$.get('tmp_template.html',function(obj){ $.get('tmp_template.html',function(obj){
messageTemplate = obj; messageTemplate = obj;
}).then(refreshMsg); }).then(refreshMsg);
//refreshMsg(); //refreshMsg();
$.ajax({
url: 'sender_list.json',
type: 'post',
dataType:'json',
contentType: 'application/json',
data: JSON.stringify({
})
}).then(refreshMailboxList);
}); });
+2 -4
View File
@@ -27,10 +27,8 @@
<span class="msg_time">&lt;<%e(time)%>&gt;</span> <span class="msg_time">&lt;<%e(time)%>&gt;</span>
</div> </div>
<div class="msg_content"> <div class="msg_content"><%e(text)%></div>
<%e(text)%> <%if(this.option) {%>
</div>
<%if(this.option){ console.log('HasOption!!'); %>
<div class="msg_prompt"> <div class="msg_prompt">
<button class="prompt_yes btn_prompt">수락</button> <button class="prompt_no btn_prompt">거절</button> <button class="prompt_yes btn_prompt">수락</button> <button class="prompt_no btn_prompt">거절</button>
</div> </div>