Commit 7cc4d958 by Lee Munkyeong

Merge branch 'devlop_contactUI' into 'release_sp3'

Devlop contact ui

See merge request !3
parents 65204d49 f2274453
...@@ -122,6 +122,12 @@ img { ...@@ -122,6 +122,12 @@ img {
float: left; float: left;
width: 11%; width: 11%;
} }
.namecard_img {
margin: 5% 35% 5% 35%;
width: 30%;
}
.srch_bar input { border:1px solid #cdcdcd; border-width:0 0 1px 0; width:90%; padding:4px 0 4px 6px; background:none; } .srch_bar input { border:1px solid #cdcdcd; border-width:0 0 1px 0; width:90%; padding:4px 0 4px 6px; background:none; }
.srch_bar .input-group-addon button { .srch_bar .input-group-addon button {
background: rgba(0, 0, 0, 0) none repeat scroll 0 0; background: rgba(0, 0, 0, 0) none repeat scroll 0 0;
...@@ -389,7 +395,7 @@ a.article:hover { ...@@ -389,7 +395,7 @@ a.article:hover {
position:fixed; position:fixed;
width:60px; width:60px;
height:60px; height:60px;
bottom:20px; bottom:60px;
right:18px; right:18px;
background-color:#095395; background-color:#095395;
color:#FFF; color:#FFF;
...@@ -680,3 +686,76 @@ a.article:hover { ...@@ -680,3 +686,76 @@ a.article:hover {
#errorEnd{ #errorEnd{
margin-top: 15vh; margin-top: 15vh;
} }
.collapsible {
height: 40px;
background-color: #eee;
color: #444;
cursor: pointer;
width: 100%;
border: none;
text-align: left;
outline: none;
font-size: 15px;
}
.collapsible-active, .collapsible:hover {
background-color: #ccc;
}
.collapsible-content {
display: none;
overflow: hidden;
background-color: #f1f1f1;
}
.chat-list-type-btn {
width: 30%;
}
#my_info > div > div {
padding-left: 5%;
}
#favorite_list > div > div {
padding-left: 5%;
}
#my_group_list > div > div {
padding-left: 5%;
}
.contact-seperator {
width: 100%;
background-color: #095395!important;
color: white;
margin-bottom: 0px;
}
.popup {
display: none;
position: fixed;
padding: 10px;
width: 80%;
left: 10%;
min-height: 250px;
top: 20%;
background: #F7FFF4;
}
#namecard {
z-index: 10051;
}
.namecard-login-id {
margin-top: 15%;
text-align: center;
}
.namedard-img-upload {
background: rgba(0,0,0,0.6);
position: relative;
margin-top: -25%;
color: white;
text-align: center;
}
...@@ -22,15 +22,7 @@ ...@@ -22,15 +22,7 @@
let IS_MOBILE = true; let IS_MOBILE = true;
let IS_ONLINE = false; let IS_ONLINE = false;
function getGlobalParam(chatServerUrl, cmsServerUrl, platform, isMobile, isOnline) {
CHAT_SERVER_URL = chatServerUrl;
CMS_SERVER_URL = cmsServerUrl;
PLATFORM = platform;
IS_MOBILE = isMobile;
IS_ONLINE = isOnline;
};
android.getGlobalParameter();
</script> </script>
</head> </head>
<body> <body>
...@@ -149,12 +141,17 @@ ...@@ -149,12 +141,17 @@
</div> </div>
<div class="tab-content" id="pills-tabContent"> <div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-chatlist" role="tabpanel" aria-labelledby="pills-chatlist-tab"> <div class="tab-pane fade show active" id="pills-chatlist" role="tabpanel" aria-labelledby="pills-chatlist-tab">
<div class="search-group"> <div class="search-group">
<div class="input-group search-bar-fixed"> <div class="input-group search-bar-fixed">
<input style="font-family:Arial, FontAwesome !important;" id="room-search" type="text" class="write_msg form-control" name="message" placeholder="&#xF002;" autocomplete="off"> <input style="font-family:Arial, FontAwesome !important;" id="room-search" type="text" class="write_msg form-control" name="message" placeholder="&#xF002;" autocomplete="off">
</div> </div>
</div> </div>
<div class="text-center">
<button type="button" class="btn btn-primary chat-list-type-btn" id="dmBtn"></button>
<button type="button" class="btn btn-primary chat-list-type-btn" id="groupBtn"></button>
</div>
<div class="inbox_people"> <div class="inbox_people">
<div id="room_list" class="inbox_chat row"> <div id="room_list" class="inbox_chat row">
</div> </div>
...@@ -163,6 +160,7 @@ ...@@ -163,6 +160,7 @@
</a> </a>
</div> </div>
</div> </div>
<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab"> <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">
... ...
</div> </div>
...@@ -221,6 +219,33 @@ ...@@ -221,6 +219,33 @@
</div> </div>
</div> </div>
</div> </div>
<div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">
<div class="inbox_people">
<div class="heading_srch">
<div class="srch_bar">
<div class="stylish-input-group">
<input id="contactListKeyword" type="text" class="search-bar" placeholder="Search">
<span class="input-group-addon">
<button type="button"> <i class="fa fa-search" aria-hidden="true"></i> </button>
</span>
</div>
</div>
</div>
<div id="my_info" class="inbox_user row">
</div>
<label class="contact-seperator" id="favorite-seperator">Favorite</label>
<div id="favorite_list" class="inbox_user row">
</div>
<label class="contact-seperator" id="mygroup-seperator">MY GROUP</label>
<div id="my_group_list" class="inbox_user row">
</div>
</div>
</div>
<div class="tab-pane fade" id="pills-group" role="tabpanel" aria-labelledby="pills-group-tab"> <div class="tab-pane fade" id="pills-group" role="tabpanel" aria-labelledby="pills-group-tab">
<div class="inbox_people"> <div class="inbox_people">
<div class="heading_srch"> <div class="heading_srch">
...@@ -291,6 +316,12 @@ ...@@ -291,6 +316,12 @@
<i class="fa fa-comments fa-6" aria-hidden="true"></i> <i class="fa fa-comments fa-6" aria-hidden="true"></i>
</a> </a>
</li> </li>
<!-- Display None (d-none) contact -->
<li class="nav-item d-none justify-content-center">
<a class="nav-link" id="pills-contact-tab" data-toggle="pill" href="#pills-contact" role="tab" aria-controls="pills-contact" aria-selected="false">
<i class="fa fa-comments fa-6" aria-hidden="true"></i>
</a>
</li>
<!-- Display None (d-none) chatList --> <!-- Display None (d-none) chatList -->
<li class="nav-item d-none justify-content-center"> <li class="nav-item d-none justify-content-center">
<a class="nav-link" id="pills-group-tab" data-toggle="pill" href="#pills-group" role="tab" aria-controls="pills-group" aria-selected="false"> <a class="nav-link" id="pills-group-tab" data-toggle="pill" href="#pills-group" role="tab" aria-controls="pills-group" aria-selected="false">
...@@ -326,6 +357,45 @@ ...@@ -326,6 +357,45 @@
</li> </li>
</ul> </ul>
</div> </div>
<div class="popup" id="namecard"></div>
<nav class="navbar navbar-expand navbar-dark fixed-bottom flex-md-nowrap p-2 bg-footer talign-center border footer-nav" id="bottomNav">
<div class="col-4">
<img src="./icon/ic_communication_meeting_gray.png" style="width: 35%;" id="contactButton">
</div>
<div class="col-4">
<img src="./icon/ic_communication_menu.png" style="width: 35%;" id="chatButton">
</div>
<div class="col-4">
<img src="./icon/home_common_content_icon_on.png" style="width: 35%;" id="archiveButton">
</div>
</nav>
<script id="my-namecard-template" type="text/template">
<div style="float: right;"><i class="fa fa-times my-name-card-close" aria-hidden="true"></i></div>
<div class="namecard_img">
<img src="./images/user-profile.png" alt>
<div class="namedard-img-upload" >Upload</div>
<div class="namecard-login-id" >{{name}}</div>
</div>
<div id="myGroupNameList">
{{#groupPathList}}
<li><b>{{.}}</b></li>
{{/groupPathList}}
</div>
</script>
<script id="namecard-template" type="text/template">
<div style="float: right;"><i class="fa fa-times my-name-card-close" aria-hidden="true"></i></div>
<div class="namecard_img">
<img src="./images/user-profile.png" alt>
<div class="namecard-login-id">{{name}}</div>
</div>
<div id="groupNameList">
{{#groupPathList}}
<li><b>{{.}}</b></li>
{{/groupPathList}}
</div>
</script>
<script id="message-template" type="text/template"> <script id="message-template" type="text/template">
<div class="incoming_msg"> <div class="incoming_msg">
<div class="incoming_msg_img"> <div class="incoming_msg_img">
...@@ -385,7 +455,7 @@ ...@@ -385,7 +455,7 @@
<div class="group_list col-12" data-name="{{name}}"> <div class="group_list col-12" data-name="{{name}}">
<div class="group_people"> <div class="group_people">
<div class="group_img"> <div class="group_img">
<img src="${chatUrl}images/group-image.png" alt=""> <img src="./images/group-image.png" alt="">
</div> </div>
<div class="group_ib"> <div class="group_ib">
<h5>{{name}}</h5> <h5>{{name}}</h5>
...@@ -416,6 +486,28 @@ ...@@ -416,6 +486,28 @@
</div> </div>
</div> </div>
</script> </script>
<script id="favorite-user-template" type="text/template">
<div class="user_list col-12" data-name="{{name}}">
<div class="user_people">
<div class="user_img">
<img src="{{profileImage}}" alt="">
</div>
<div class="user_ib">
<h5>{{name}}</h5>
<p>{{info}}</p>
</div>
<div class="squareBox userCheckBox" data-name="{{name}}" data-id="{{id}}">
<div class="squareBoxContent">
<div>
<span>
<i class="fas fa-check"></i>
</span>
</div>
</div>
</div>
</div>
</div>
</script>
<script src="./socket.io/dist/socket.io.js"></script> <script src="./socket.io/dist/socket.io.js"></script>
<script src="./js/libs/socket.io.js"></script> <script src="./js/libs/socket.io.js"></script>
<script src="./js/libs/jquery-3.3.1.min.js"></script> <script src="./js/libs/jquery-3.3.1.min.js"></script>
......
...@@ -3,11 +3,57 @@ var CHAT_DB = {}; ...@@ -3,11 +3,57 @@ var CHAT_DB = {};
//ロカールDBからルーム一覧情報を取得 //ロカールDBからルーム一覧情報を取得
CHAT_DB.getRoomList = function(input) { CHAT_DB.getRoomList = function(roomType) {
if (CHAT_UTIL.isIOS()) { if (CHAT_UTIL.isIOS()) {
//TODO IOS処理追加必要 //TODO IOS処理追加必要
} else if (CHAT_UTIL.isAndroid()) { } else if (CHAT_UTIL.isAndroid()) {
//String形式をJsonに変更してReturn //String形式をJsonに変更してReturn
return JSON.parse(android.getRoomList()); return JSON.parse(android.getRoomList(roomType));
}
};
//ロカールDBからログインしたユーザのデータを取得する。
CHAT_DB.getMyInfo = function(input) {
if (CHAT_UTIL.isIOS()) {
//TODO IOS処理追加必要
} else if (CHAT_UTIL.isAndroid()) {
//String形式をJsonに変更してReturn
return JSON.parse(android.getMyInfo());
}
};
CHAT_DB.getMessages = function(roomId) {
if (CHAT_UTIL.isIOS()) {
//TODO IOS処理追加必要
} else if (CHAT_UTIL.isAndroid()) {
//String形式をJsonに変更してReturn
return JSON.parse(android.getMessageList(roomId));
}
};
CHAT_DB.getFavoriteUsers = function() {
if (CHAT_UTIL.isIOS()) {
//TODO IOS処理追加必要
} else if (CHAT_UTIL.isAndroid()) {
//String形式をJsonに変更してReturn
return JSON.parse(android.getFavoriteUsers());
}
};
CHAT_DB.getFavoriteGroups = function() {
if (CHAT_UTIL.isIOS()) {
//TODO IOS処理追加必要
} else if (CHAT_UTIL.isAndroid()) {
//String形式をJsonに変更してReturn
return JSON.parse(android.getFavoriteGroups());
}
};
CHAT_DB.getMyGroupUsers = function() {
if (CHAT_UTIL.isIOS()) {
//TODO IOS処理追加必要
} else if (CHAT_UTIL.isAndroid()) {
//String形式をJsonに変更してReturn
return JSON.parse(android.getMyGroupUsers());
} }
}; };
\ No newline at end of file
...@@ -2,41 +2,42 @@ ...@@ -2,41 +2,42 @@
var CHAT_UI = {}; var CHAT_UI = {};
$(function() { $(function() {
let navbarHeight = document.getElementsByClassName("navbar")[0].offsetHeight let navbarHeight = document.getElementsByClassName("navbar")[0].offsetHeight
let searchBarHeight = document.getElementsByClassName("search-bar-fixed")[0].offsetHeight let searchBarHeight = document.getElementsByClassName("search-bar-fixed")[0].offsetHeight
$(".tab-pane").css('padding', `${navbarHeight + 'px'} 0px 0px`) let footerHeight = document.getElementsByClassName("footer-nav")[0].offsetHeight
$(".tab-pane").css('padding', `${navbarHeight + 'px'} 0px 0px`)
/* チャットルーム一覧画面スクロール範囲
* 画面の高さ - (画面上部タイトルの高さ + ルーム名検索欄の高さ) */ /* チャットルーム一覧画面スクロール範囲
$(".inbox_chat").css('max-height', `calc(100vh - ${(navbarHeight + searchBarHeight) + 'px'})`) * 画面の高さ - (画面上部タイトルの高さ + ルーム名検索欄の高さ) */
$(".inbox_chat").css('max-height', `calc(100vh - ${(navbarHeight + searchBarHeight + footerHeight) + 'px'})`)
$('.roomListIcon').hide();
$('#userSelectionDeleteBtn').hide(); $('.roomListIcon').hide();
//$('#createChatRoom').hide(); $('#userSelectionDeleteBtn').hide();
//$('#createChatRoom').hide();
}); });
// Rotate // Rotate
$(window).on('resize', function() { $(window).on('resize', function() {
if (CHAT_UTIL.isMobile()) { if (CHAT_UTIL.isMobile()) {
return; return;
} }
console.log(`width : ${$(this).width()}`); console.log(`width : ${$(this).width()}`);
console.log(`height : ${$(this).height()}`); console.log(`height : ${$(this).height()}`);
if(CHAT_UI.isLandscapeMode()) { if(CHAT_UI.isLandscapeMode()) {
$(".group_list").addClass("col-6").removeClass("col-12"); $(".group_list").addClass("col-6").removeClass("col-12");
$(".user_list").addClass("col-6").removeClass("col-12"); $(".user_list").addClass("col-6").removeClass("col-12");
$(".chat_list").addClass("col-6").removeClass("col-12"); $(".chat_list").addClass("col-6").removeClass("col-12");
$(".squareBoxContent span").addClass("landscape_span"); $(".squareBoxContent span").addClass("landscape_span");
$(".mesgs").addClass("landscape_mesgs"); $(".mesgs").addClass("landscape_mesgs");
} else { } else {
$(".group_list").removeClass("col-6").addClass("col-12"); $(".group_list").removeClass("col-6").addClass("col-12");
$(".user_list").removeClass("col-6").addClass("col-12"); $(".user_list").removeClass("col-6").addClass("col-12");
$(".chat_list").removeClass("col-6").addClass("col-12"); $(".chat_list").removeClass("col-6").addClass("col-12");
$(".squareBoxContent span").removeClass("landscape_span"); $(".squareBoxContent span").removeClass("landscape_span");
$(".mesgs").removeClass("landscape_mesgs"); $(".mesgs").removeClass("landscape_mesgs");
} }
...@@ -53,109 +54,114 @@ $(window).on('resize', function() { ...@@ -53,109 +54,114 @@ $(window).on('resize', function() {
// New Room // New Room
// チャットルーム生成ボタン処理 // チャットルーム生成ボタン処理
$('#createChatRoom').on('click', function() { $('#createChatRoom').on('click', function() {
//loadingIndicatorを表示 //loadingIndicatorを表示
CHAT_UI.showLoadingIndicator(); CHAT_UI.showLoadingIndicator();
let isInvite = false; let isInvite = false;
CHAT.globalIsInvite = isInvite; CHAT.globalIsInvite = isInvite;
socket.emit('getGroupList', isInvite); socket.emit('getGroupList', isInvite);
}); });
// Room Delete // Room Delete
// チャットルーム削除ボタン処理 // チャットルーム削除ボタン処理
$('#roomDeleteButton').on('click', function(e) { $('#roomDeleteButton').on('click', function(e) {
if ($('.deleteBox').is(':visible')) { if ($('.deleteBox').is(':visible')) {
// チャットルーム削除アイコンが表示されている時、ブラインド処理を行う // チャットルーム削除アイコンが表示されている時、ブラインド処理を行う
$('.deleteBox').finish().show().fadeTo('slow', 0, function() { $('.deleteBox').finish().show().fadeTo('slow', 0, function() {
$(this).hide(); $(this).hide();
}); });
// チャットリストについてクリックイベントを与える // チャットリストについてクリックイベントを与える
$('.chat_list').off('click'); $('.chat_list').off('click');
$('.chat_list:not(.active_chat)').on('click', function(e) { $('.chat_list:not(.active_chat)').on('click', function(e) {
//loadingIndicatorを表示 //loadingIndicatorを表示
CHAT_UI.showLoadingIndicator(); CHAT_UI.showLoadingIndicator();
let roomId = $(this).data('roomId'); let roomId = $(this).data('roomId');
let roomName = $(this).data('roomname'); let roomName = $(this).data('roomname');
socket.emit('joinRoom', roomId, roomName, function() { socket.emit('joinRoom', roomId, roomName, function() {
$('#messages').html(''); $('#messages').html('');
$('.titleRoomName').text(roomName).data('roomName', roomName); $('.titleRoomName').text(roomName).data('roomName', roomName);
$('#pills-chat-tab').tab('show'); $('#pills-chat-tab').tab('show');
$("#message-search").attr("placeholder", $("#message-search").attr("placeholder")+getLocalizedString("chat_search_placeholder")); $("#message-search").attr("placeholder", getLocalizedString("chat_search_placeholder"));
}); });
}); });
let roomListTitle = getLocalizedString("roomListTitle") let roomListTitle = getLocalizedString("roomListTitle")
$('.titleRoomName').text(roomListTitle) $('.titleRoomName').text(roomListTitle)
$('.chat_list.active_chat').on('click', function(e){ $('.chat_list.active_chat').on('click', function(e){
$('#pills-chat-tab').tab('show'); $('#pills-chat-tab').tab('show');
}); });
} else { } else {
// チャットルーム削除アイコンが表示されていない場合、表示する // チャットルーム削除アイコンが表示されていない場合、表示する
$('.deleteBox').finish().hide().fadeTo('slow',1).show(); $('.deleteBox').finish().hide().fadeTo('slow',1).show();
// #36129に対応 // #36129に対応
let deleteRoomTitle = getLocalizedString("deleteRoomTitle") let deleteRoomTitle = getLocalizedString("deleteRoomTitle")
$('.titleRoomName').text(deleteRoomTitle) $('.titleRoomName').text(deleteRoomTitle)
// 重複処理を防ぐためにチャットリストのクリックイベントを消す // 重複処理を防ぐためにチャットリストのクリックイベントを消す
$('.chat_list').off('click'); $('.chat_list').off('click');
// チャットルームの削除アイコンにクリックイベントを与える // チャットルームの削除アイコンにクリックイベントを与える
$('.deleteBox').off('click'); $('.deleteBox').off('click');
$('.deleteBox').on('click', function(e){ $('.deleteBox').on('click', function(e){
// #36174 // #36174
let roomId = $(this).data('roomId'); let roomId = $(this).data('roomId');
let activeRoom = $(this).data('activeRoom'); let activeRoom = $(this).data('activeRoom');
$("#roomDeleteTitle").text(getLocalizedString("roomDeleteTitle")); $("#roomDeleteTitle").text(getLocalizedString("roomDeleteTitle"));
$("#roomDelete").text(getLocalizedString("roomDelete")); $("#roomDelete").text(getLocalizedString("roomDelete"));
$("#cancelTitle").text(getLocalizedString("cancelTitle")); $("#cancelTitle").text(getLocalizedString("cancelTitle"));
// #36128 // #36128
$('#roomDeleteConfirm').appendTo("body").modal({ $('#roomDeleteConfirm').appendTo("body").modal({
backdrop: 'static', backdrop: 'static',
keyboard: false keyboard: false
}) })
.on('click', '#roomDelete', function(e) { .on('click', '#roomDelete', function(e) {
//loadingIndicatorを表示 //loadingIndicatorを表示
CHAT_UI.showLoadingIndicator(); CHAT_UI.showLoadingIndicator();
// 現在接続されているチャットルームを離れるとメッセージテップを初期化する // 現在接続されているチャットルームを離れるとメッセージテップを初期化する
if (activeRoom) { if (activeRoom) {
$('#messages').html(''); $('#messages').html('');
CHAT.saveRoomInfo('', ''); CHAT.saveRoomInfo('', '');
} }
// チャットルームから退場する // チャットルームから退場する
socket.emit('exitRoom', roomId); socket.emit('exitRoom', roomId);
// #36129に対応 // #36129に対応
let roomListTitle = getLocalizedString("roomListTitle") let roomListTitle = getLocalizedString("roomListTitle")
$('.titleRoomName').text(roomListTitle) $('.titleRoomName').text(roomListTitle)
}); });
}); });
} }
}); });
$('#room-search').on('input', function(event) { $('#room-search').on('input', function(event) {
if ($('#room-search').val().length > 0) { if ($('#room-search').val().length > 0) {
// 検索結果が有る場合、結果を表示する // 検索結果が有る場合、結果を表示する
socket.emit('roomSearch', encodeURIComponent($('#room-search').val())); socket.emit('roomSearch', encodeURIComponent($('#room-search').val()));
} else { } else {
socket.emit('getRoomList'); if (IS_ONLINE == 'true') {
} android.updateRoomList();
CHAT_UI.refreshRoomList(chatRoomType.DM);
CHAT_UI.dismissLoadingIndicator();
}
}
}); });
//上にスクロールすると新しいメッセージを呼ぶ処理。 //上にスクロールすると新しいメッセージを呼ぶ処理。
$('#messages').scroll(function(){ $('#messages').scroll(function(){
if ($(this).scrollTop() === 0) { if ($(this).scrollTop() === 0) {
if (!$('#chatLoader').is(':visible')) { if (!$('#chatLoader').is(':visible')) {
// 現在、メッセージの個数以前をメッセージを読み込む // 現在、メッセージの個数以前をメッセージを読み込む
// ローディングアイコンを追加する // ローディングアイコンを追加する
let loader = $('<div id="chatLoader" class="text-center"><div class="spinner-grow spinner-grow-sm" role="status" /></div>') let loader = $('<div id="chatLoader" class="text-center"><div class="spinner-grow spinner-grow-sm" role="status" /></div>')
$('#messages').prepend(loader) $('#messages').prepend(loader)
socket.emit('getMessages', $(this).children().length, function() { loader.remove();
// ローディングアイコンを削除する // socket.emit('getMessages', $(this).children().length, function() {
loader.remove(); // // ローディングアイコンを削除する
}); // loader.remove();
} // });
} }
}
}); });
// UIの位置調整(キーボード出現時) // UIの位置調整(キーボード出現時)
...@@ -202,622 +208,816 @@ CHAT_UI.setOrientation = function(isLandscapeMode){ ...@@ -202,622 +208,816 @@ CHAT_UI.setOrientation = function(isLandscapeMode){
//メッセージ送信 //メッセージ送信
$('#message-form').on('keypress', function(event){ $('#message-form').on('keypress', function(event){
if (event.which == 13) { if (event.which == 13) {
// Enterキーの処理 // Enterキーの処理
$('#message-send-btn').click(); $('#message-send-btn').click();
} }
}); });
// 送信ボタンの処理 // 送信ボタンの処理
$('#message-send-btn').on('click', function (e){ $('#message-send-btn').on('click', function (e){
e.preventDefault(); e.preventDefault();
const messageTextBox = $('#message-form'); const messageTextBox = $('#message-form');
const message = messageTextBox.val().length > 0 ? encodeURIComponent(messageTextBox.val() + " ") : ""; const message = messageTextBox.val().length > 0 ? encodeURIComponent(messageTextBox.val() + " ") : "";
messageTextBox.val(''); messageTextBox.val('');
if (message.length > 0) { if (message.length > 0) {
socket.emit( socket.emit(
'createMessage', { text: message } 'createMessage', { text: message }
, 0 , 0
); );
} }
$('#message-form').focus(); $('#message-form').focus();
}); });
// 写真アップロード // 写真アップロード
$('#fileUploadButton').on('click', function(){ $('#fileUploadButton').on('click', function(){
$('#imageInputTag').click(); $('#imageInputTag').click();
}); });
// 動画アップロード // 動画アップロード
$('#fileUploadButton2').on('click', function(){ $('#fileUploadButton2').on('click', function(){
$('#imageInputTag2').click(); $('#imageInputTag2').click();
}); });
$('#imageInputTag').on('change', function(){ $('#imageInputTag').on('change', function(){
$('#image-form').submit(); $('#image-form').submit();
}); });
$('#imageInputTag2').on('change', function(){ $('#imageInputTag2').on('change', function(){
$('#image-form2').submit(); $('#image-form2').submit();
}); });
$('#image-form').on('submit', function(e){ $('#image-form').on('submit', function(e){
e.preventDefault(); e.preventDefault();
const imageInputTag = $('#imageInputTag'); const imageInputTag = $('#imageInputTag');
const file = imageInputTag.prop('files')[0]; const file = imageInputTag.prop('files')[0];
if (file) { if (file) {
$('.overlay').addClass('active undismissable'); $('.overlay').addClass('active undismissable');
$('.loader').addClass('active'); $('.loader').addClass('active');
CHAT_UI.showLoadingIndicator(); CHAT_UI.showLoadingIndicator();
var fd = new FormData($(this)[0]); var fd = new FormData($(this)[0]);
//画像の大きさが500pixelより大きかったら、thumbnailを生成 //画像の大きさが500pixelより大きかったら、thumbnailを生成
CHAT.createThumbnailAndUpload(file, function(resizeFile, thumbnailCreated){ CHAT.createThumbnailAndUpload(file, function(resizeFile, thumbnailCreated){
if (resizeFile && thumbnailCreated) { if (resizeFile && thumbnailCreated) {
//ただ、画像の大きさが500pixel以下の場合はthumbnailは生成されない //ただ、画像の大きさが500pixel以下の場合はthumbnailは生成されない
fd.append('thumb', resizeFile) fd.append('thumb', resizeFile)
} }
// イメージをアップロード // イメージをアップロード
CHAT.uploadImage(fd) CHAT.uploadImage(fd)
}) })
} }
}); });
$('#image-form2').on('submit', function(e){ $('#image-form2').on('submit', function(e){
e.preventDefault(); e.preventDefault();
const imageInputTag2 = $('#imageInputTag2'); const imageInputTag2 = $('#imageInputTag2');
const file = imageInputTag2.prop('files')[0]; const file = imageInputTag2.prop('files')[0];
if (file) { if (file) {
$('.overlay').addClass('active undismissable'); $('.overlay').addClass('active undismissable');
$('.loader').addClass('active'); $('.loader').addClass('active');
CHAT_UI.showLoadingIndicator(); CHAT_UI.showLoadingIndicator();
var fd = new FormData($(this)[0]); var fd = new FormData($(this)[0]);
if(!file.type.includes("image")) { // video 保存 if(!file.type.includes("image")) { // video 保存
CHAT.createVideoThumbnailAndUpload(file, function(resizeFile, thumbnailCreated){ CHAT.createVideoThumbnailAndUpload(file, function(resizeFile, thumbnailCreated){
if(resizeFile && thumbnailCreated) { if(resizeFile && thumbnailCreated) {
//ただ、画像の大きさが500pixel以下の場合はthumbnailは生成されない //ただ、画像の大きさが500pixel以下の場合はthumbnailは生成されない
fd.append('thumb', resizeFile) fd.append('thumb', resizeFile)
} }
CHAT.uploadImage(fd); CHAT.uploadImage(fd);
}) })
return; return;
} }
} }
}); });
/* --------------------------------------------------- */ /* --------------------------------------------------- */
/* Nav Bar Functions */ /* Nav Bar Functions */
/* --------------------------------------------------- */ /* --------------------------------------------------- */
// Gallery Button // Gallery Button
// ギャラリーボタンを押すと最後の写真をクリックさせる。 (ボタン非活性化中) // ギャラリーボタンを押すと最後の写真をクリックさせる。 (ボタン非活性化中)
$('#imageGalleryButton').on('click', function(){ $('#imageGalleryButton').on('click', function(){
$('[data-lightbox=attachedImages]:last').click(); $('[data-lightbox=attachedImages]:last').click();
}); });
//lightbox Configuration //lightbox Configuration
lightbox.option({ lightbox.option({
'resizeDuration': 0, 'resizeDuration': 0,
'imageFadeDuration': 0, 'imageFadeDuration': 0,
'fadeDuration': 300, 'fadeDuration': 300,
'alwaysShowNavOnTouchDevices': true 'alwaysShowNavOnTouchDevices': true
}); });
$('#message-search').on('input', function(event) { $('#message-search').on('input', function(event) {
// チャットキーワードを入力するとページ内にある単語をハイライトする。(mark.js 使用) // チャットキーワードを入力するとページ内にある単語をハイライトする。(mark.js 使用)
if ($(this).val()) { if ($(this).val()) {
$('.message_content').unmark(); $('.message_content').unmark();
$('.message_content').mark($(this).val()); $('.message_content').mark($(this).val());
if ($('[data-markjs=true]').length > 0) { if ($('[data-markjs=true]').length > 0) {
// マーキングされている単語があった場合、最後の単語にスクロールを移動する。 // マーキングされている単語があった場合、最後の単語にスクロールを移動する。
CHAT_UI.scrollToLastMarkedUnseen($(this).val()); CHAT_UI.scrollToLastMarkedUnseen($(this).val());
} else { } else {
// マーキングされている単語がない場合、下段にスクロールする。 // マーキングされている単語がない場合、下段にスクロールする。
CHAT_UI.scrollToBottom(); CHAT_UI.scrollToBottom();
} }
} else { } else {
// チャットキーワードが空欄になるとマーキングを解除し、下段にスクロールする。 // チャットキーワードが空欄になるとマーキングを解除し、下段にスクロールする。
$('.message_content').unmark(); $('.message_content').unmark();
CHAT_UI.scrollToBottom(); CHAT_UI.scrollToBottom();
} }
}); });
//次のマーキングされた単語にスクロールを移動する。 //次のマーキングされた単語にスクロールを移動する。
$('#pre-search').on('click', function(event) { $('#pre-search').on('click', function(event) {
CHAT_UI.scrollToLastMarkedUnseen(jQuery('#message-search').val()); CHAT_UI.scrollToLastMarkedUnseen(jQuery('#message-search').val());
}); });
// Exit Room // Exit Room
$('#exitRoom').on('click', function(event){ $('#exitRoom').on('click', function(event){
// 36174 // 36174
$("#exitRoomTitle").text(getLocalizedString("exitRoomTitle")); $("#exitRoomTitle").text(getLocalizedString("exitRoomTitle"));
$("#exitRoomOk").text(getLocalizedString("yesTitle")); $("#exitRoomOk").text(getLocalizedString("yesTitle"));
$("#noExit").text(getLocalizedString("cancelTitle")); $("#noExit").text(getLocalizedString("cancelTitle"));
$('#exitRoomConfirm').appendTo("body").modal({ $('#exitRoomConfirm').appendTo("body").modal({
backdrop: 'static', backdrop: 'static',
keyboard: false keyboard: false
}) })
.on('click', '#exitRoomOk', function(e) { .on('click', '#exitRoomOk', function(e) {
//loadingIndicatorを表示 //loadingIndicatorを表示
CHAT_UI.showLoadingIndicator(); CHAT_UI.showLoadingIndicator();
// チャットルームから退場する // チャットルームから退場する
socket.emit('exitRoom'); socket.emit('exitRoom');
$('#dismiss').click(); $('#dismiss').click();
CHAT.saveRoomInfo('', ''); CHAT.saveRoomInfo('', '');
}); });
}); });
// Side Bar // Side Bar
$('#sidebarCollapse').on('click', function (){ $('#sidebarCollapse').on('click', function (){
// open sidebar // open sidebar
$('#sidebar').addClass('active'); $('#sidebar').addClass('active');
// fade in the overlay // fade in the overlay
$('.overlay').addClass('active'); $('.overlay').addClass('active');
$('.collapse.in').toggleClass('in'); $('.collapse.in').toggleClass('in');
$('a[aria-expanded=true]').attr('aria-expanded', 'false'); $('a[aria-expanded=true]').attr('aria-expanded', 'false');
}); });
$('#dismiss, .overlay').on('click', function (){ $('#dismiss, .overlay').on('click', function (){
// hide sidebar // hide sidebar
$('#sidebar').removeClass('active'); $('#sidebar').removeClass('active');
// hide overlay if dismissable // hide overlay if dismissable
$('.overlay:not(.undismissable)').removeClass('active'); $('.overlay:not(.undismissable)').removeClass('active');
}); });
//Invite User //Invite User
//招待ボタンを押すとグループリストを持ってくる。(ボタンを動的に追加して微動作中) //招待ボタンを押すとグループリストを持ってくる。(ボタンを動的に追加して微動作中)
$('#addUser').on('click', function(event){ $('#addUser').on('click', function(event){
//loadingIndicatorを表示 //loadingIndicatorを表示
CHAT_UI.showLoadingIndicator(); CHAT_UI.showLoadingIndicator();
let isInvite = true; let isInvite = true;
CHAT.globalIsInvite = isInvite; CHAT.globalIsInvite = isInvite;
socket.emit('getGroupList', isInvite); socket.emit('getGroupList', isInvite);
}); });
//グループ画面での検索 //グループ画面での検索
$('#groupListKeyword').on('input', function(event) { $('#groupListKeyword').on('input', function(event) {
// data-name値で当該キーワードが入っているグループのみを表示する。 // data-name値で当該キーワードが入っているグループのみを表示する。
if ($(this).val()) { if ($(this).val()) {
$('.group_list:not([data-name*="'+$(this).val()+'" i])').hide(); $('.group_list:not([data-name*="'+$(this).val()+'" i])').hide();
$('.group_list[data-name*="'+$(this).val()+'" i]').show(); $('.group_list[data-name*="'+$(this).val()+'" i]').show();
} else { } else {
$('.group_list').show(); $('.group_list').show();
} }
}); });
$('#userListKeyword').on('input', function(event) { $('#userListKeyword').on('input', function(event) {
// data-name値で当該キーワードが入っているユーザーのみを表示する。 // data-name値で当該キーワードが入っているユーザーのみを表示する。
if ($(this).val()) { if ($(this).val()) {
$('.user_list:not([data-name*="'+$(this).val()+'" i])').hide(); $('.user_list:not([data-name*="'+$(this).val()+'" i])').hide();
$('.user_list[data-name*="'+$(this).val()+'" i]').show(); $('.user_list[data-name*="'+$(this).val()+'" i]').show();
} else { } else {
$('.user_list').show(); $('.user_list').show();
} }
}); });
$('#selectListKeyword').on('input', function(event) { $('#selectListKeyword').on('input', function(event) {
if ($(this).val()) { if ($(this).val()) {
$('.select_user_list:not([data-name*="'+$(this).val()+'" i])').hide(); $('.select_user_list:not([data-name*="'+$(this).val()+'" i])').hide();
$('.select_user_list[data-name*="'+$(this).val()+'" i]').show(); $('.select_user_list[data-name*="'+$(this).val()+'" i]').show();
} else { } else {
$('.select_user_list').show(); $('.select_user_list').show();
} }
}); });
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
/* */ /* */
/* Etc */ /* Etc */
/* */ /* */
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
// Tab Open/Shown Event // Tab Open/Shown Event
$('a[data-toggle="pill"]').on('show.bs.tab', function (e) { $('a[data-toggle="pill"]').on('show.bs.tab', function (e) {
var target = $(e.target).attr("href"); // e.target : activated tab var target = $(e.target).attr("href"); // e.target : activated tab
switch(target) { switch(target) {
case '#pills-chat': case '#pills-chat':
if (CHAT_UI.isLandscapeMode()) { if (CHAT_UI.isLandscapeMode()) {
$(".mesgs").addClass("landscape_mesgs"); $(".mesgs").addClass("landscape_mesgs");
} else { } else {
$(".mesgs").removeClass("landscape_mesgs"); $(".mesgs").removeClass("landscape_mesgs");
} }
CHAT.globalIsInvite = true; CHAT.globalIsInvite = true;
$('.chatRoomIcon, .titleRoomName, #backButton').show(); $('.chatRoomIcon, .titleRoomName, #backButton').show();
$('.roomListIcon, #userSelectionConfirmBtn, #newRoomName, #userSelectionDeleteBtn').hide(); $('.roomListIcon, #userSelectionConfirmBtn, #newRoomName, #userSelectionDeleteBtn').hide();
$('#homeButton').hide(); $('#homeButton').hide();
$('.titleRoomName').text($('.titleRoomName').data('roomName')); $('.titleRoomName').text($('.titleRoomName').data('roomName'));
$('#newRoomName').val(''); $('#newRoomName').val('');
$('#userSelectionLength').text(''); $('#userSelectionLength').text('');
CHAT.globalSelectedUserList = []; CHAT.globalSelectedUserList = [];
$('#bottomNav').hide();
$('#backButton').off().on('click', function() { $('#backButton').off().on('click', function() {
//loadingIndicatorを表示 //loadingIndicatorを表示
CHAT_UI.showLoadingIndicator(); CHAT_UI.showLoadingIndicator();
socket.emit('leaveRoom', function() { CHAT.saveRoomInfo();
CHAT.saveRoomInfo(); if (IS_ONLINE == 'true') {
socket.emit('getRoomList'); socket.emit('leaveRoom', function() {
}); android.updateRoomList();
}); });
console.log("show #pills-chat") }
//loadingIndicatorを表示しない CHAT_UI.refreshRoomList(chatRoomType.DM);
CHAT_UI.dismissLoadingIndicator(); CHAT_UI.dismissLoadingIndicator();
break; });
case '#pills-chatlist': //loadingIndicatorを表示しない
$('.titleRoomName, #backButton').show(); CHAT_UI.dismissLoadingIndicator();
$('.chatRoomIcon, #backButton, #userSelectionConfirmBtn, #newRoomName, #userSelectionDeleteBtn').hide(); break;
$('#homeButton').show(); case '#pills-chatlist':
$('#room-search').val(''); $('.titleRoomName, #backButton').show();
// set Title $('.chatRoomIcon, #backButton, #userSelectionConfirmBtn, #newRoomName, #userSelectionDeleteBtn').hide();
let roomListTitle = getLocalizedString("roomListTitle") $('#homeButton').show();
$('#room-search').val('');
$('.titleRoomName').text(roomListTitle); $('#room-search').show();
$('#newRoomName').val(''); $('#room_list').show();
$('#userSelectionLength').text(''); // set Title
CHAT.globalSelectedUserList = []; let roomListTitle = getLocalizedString("roomListTitle")
$('#bottomNav').show();
break; $('.titleRoomName').text(roomListTitle);
case '#pills-user': $('#newRoomName').val('');
$("#backButton").show(); $('#userSelectionLength').text('');
$("#userSelectionDeleteBtn").hide(); CHAT.globalSelectedUserList = [];
$('#homeButton').hide();
//loadingIndicatorを表示しない break;
CHAT_UI.dismissLoadingIndicator();
break; case '#pills-contact':
case '#pills-group': $('#namecard').html('');
$("#backButton").show(); $('#homeButton').show();
$("#userSelectionDeleteBtn").hide(); $("#backButton").hide();
$('#homeButton').hide(); $('.titleRoomName').show();
//loadingIndicatorを表示しない $('#my_info').show();
CHAT_UI.dismissLoadingIndicator(); $('#bottomNav').show();
break; break;
case '#pills-confirm':
$("#backButton").show(); case '#pills-user':
//loadingIndicatorを表示しない $("#backButton").show();
CHAT_UI.dismissLoadingIndicator(); $("#userSelectionDeleteBtn").hide();
$('#homeButton').hide(); $('#homeButton').hide();
$('.user_people').css("paddingLeft", "0px"); $('#bottomNav').hide();
break; //loadingIndicatorを表示しない
case '#pills-communication': // コミュニケーションのタブ CHAT_UI.dismissLoadingIndicator();
case '#pills-setting': // 設定のタブ break;
case '#pills-profile': // ユーザプロファイルのタブ case '#pills-group':
$('.titleRoomName').show(); $("#backButton").show();
$('.roomListIcon, .chatRoomIcon, #userSelectionConfirmBtn, #newRoomName, #userSelectionDeleteBtn').hide(); $("#userSelectionDeleteBtn").hide();
$('#backButton').hide(); $('#homeButton').hide();
break; $('#bottomNav').hide();
default: //loadingIndicatorを表示しない
$('.titleRoomName').show(); CHAT_UI.dismissLoadingIndicator();
$('.roomListIcon, .chatRoomIcon, #userSelectionConfirmBtn, #newRoomName, #userSelectionDeleteBtn').hide(); break;
$('#backButton').hide(); case '#pills-confirm':
break; $("#backButton").show();
} //loadingIndicatorを表示しない
CHAT_UI.dismissLoadingIndicator();
$('#homeButton').hide();
$('#bottomNav').hide();
$('.user_people').css("paddingLeft", "0px");
break;
case '#pills-communication': // コミュニケーションのタブ
case '#pills-setting': // 設定のタブ
case '#pills-profile': // ユーザプロファイルのタブ
$('#bottomNav').hide();
$('.titleRoomName').show();
$('.roomListIcon, .chatRoomIcon, #userSelectionConfirmBtn, #newRoomName, #userSelectionDeleteBtn').hide();
$('#backButton').hide();
break;
default:
$('.titleRoomName').show();
$('.roomListIcon, .chatRoomIcon, #userSelectionConfirmBtn, #newRoomName, #userSelectionDeleteBtn').hide();
$('#backButton').hide();
break;
}
}); });
// Tab Close/Hidden Event // Tab Close/Hidden Event
$('a[data-toggle="pill"]').on('hide.bs.tab', function(e) { $('a[data-toggle="pill"]').on('hide.bs.tab', function(e) {
var target = $(e.target).attr("href"); // e.target : activated tab var target = $(e.target).attr("href"); // e.target : activated tab
switch(target) { switch(target) {
case '#pills-chat': case '#pills-chat':
$('#message-search').val(''); $('#message-search').val('');
break; break;
case '#pills-chatlist': case '#pills-chatlist':
$('#room-search').val(''); $('#room-search').val('');
break; $('#room-search').show();
case '#pills-group': break;
$('#groupListKeyword').val(''); case '#pills-group':
break; $('#groupListKeyword').val('');
case '#pills-user': break;
$('#userListKeyword').val(''); case '#pills-contact':
break; break;
case '#pills-confirm': case '#pills-user':
$('#select_user_list').html(''); $('#userListKeyword').val('');
$('#selectUserListKeyword').val(''); break;
$('.titleRoomName').show(); case '#pills-confirm':
$('.user_people').css("paddingLeft", "12%"); $('#select_user_list').html('');
break; $('#selectUserListKeyword').val('');
case '#pills-communication': $('.titleRoomName').show();
case '#pills-setting': $('.user_people').css("paddingLeft", "12%");
case '#pills-profile': break;
break; case '#pills-communication':
default: case '#pills-setting':
break; case '#pills-profile':
} break;
default:
break;
}
}); });
$('#pills-chat-tab').on('shown.bs.tab', function (e){ $('#pills-chat-tab').on('shown.bs.tab', function (e){
CHAT_UI.scrollToBottom(); CHAT_UI.scrollToBottom();
}); });
$('#pills-user-tab').on('shown.bs.tab', function (e){ $('#pills-user-tab').on('shown.bs.tab', function (e){
$('#userSelectionConfirmBtn').show(); $('#userSelectionConfirmBtn').show();
}); });
$('#pills-confirm-tab').on('shown.bs.tab', function (e){ $('#pills-confirm-tab').on('shown.bs.tab', function (e){
$('#userSelectionConfirmBtn').show(); $('#userSelectionConfirmBtn').show();
$('#userSelectionLength').text(''); $('#userSelectionLength').text('');
$('#userSelectionDeleteBtn').hide(); $('#userSelectionDeleteBtn').hide();
}); });
CHAT_UI.scrollToBottom = function() { CHAT_UI.scrollToBottom = function() {
const messages = $('#messages'); const messages = $('#messages');
const scrollHeight = messages.prop('scrollHeight'); const scrollHeight = messages.prop('scrollHeight');
messages.scrollTop(scrollHeight); messages.scrollTop(scrollHeight);
}; };
CHAT_UI.scrollToLastMarkedUnseen = function(value) { CHAT_UI.scrollToLastMarkedUnseen = function(value) {
let target = $('[data-markjs=true]:not([data-seen=true])').last(); let target = $('[data-markjs=true]:not([data-seen=true])').last();
let messages = $('#messages'); let messages = $('#messages');
if (target.length > 0) { if (target.length > 0) {
messages.scrollTop(target.prop('offsetTop') - target.prop('offsetHeight') - messages.prop('offsetHeight') + target.parent().parent().height()); messages.scrollTop(target.prop('offsetTop') - target.prop('offsetHeight') - messages.prop('offsetHeight') + target.parent().parent().height());
target.attr('data-seen', true); target.attr('data-seen', true);
} else { } else {
messages.scrollTop(0); messages.scrollTop(0);
$('.message_content').unmark(); $('.message_content').unmark();
$('.message_content').mark(value); $('.message_content').mark(value);
} }
}; };
//loadingIndicatorを表示 //loadingIndicatorを表示
CHAT_UI.showLoadingIndicator = function() { CHAT_UI.showLoadingIndicator = function() {
$("#loadingIndicator").addClass('active undismissable'); $("#loadingIndicator").addClass('active undismissable');
} }
//loadingIndicatorを表示しない //loadingIndicatorを表示しない
CHAT_UI.dismissLoadingIndicator = function() { CHAT_UI.dismissLoadingIndicator = function() {
$("#loadingIndicator").removeClass('active undismissable'); $("#loadingIndicator").removeClass('active undismissable');
} }
//画面の方向をcheck //画面の方向をcheck
CHAT_UI.isLandscapeMode = function() { CHAT_UI.isLandscapeMode = function() {
if (CHAT_UTIL.isMobile()) { if (CHAT_UTIL.isMobile()) {
return false; return false;
} }
return $(window).width() > $(window).height() return $(window).width() > $(window).height()
} }
CHAT_UI.setConfirmButtonEvent = function(isInvite) { CHAT_UI.setConfirmButtonEvent = function(isInvite) {
let titleText = isInvite ? getLocalizedString("inviteUsersSubtitle") : getLocalizedString("createRoomSubtitle") let titleText = isInvite ? getLocalizedString("inviteUsersSubtitle") : getLocalizedString("createRoomSubtitle")
let invitedUserText = getLocalizedString("invitedUser") let invitedUserText = getLocalizedString("invitedUser")
if (!isInvite) { if (!isInvite) {
$('#newRoomName').show(); $('#newRoomName').show();
} }
$('#userSelectionConfirmBtn').off().on('click', function(event) { $('#userSelectionConfirmBtn').off().on('click', function(event) {
//loadingIndicatorを表示 //loadingIndicatorを表示
CHAT_UI.showLoadingIndicator(); CHAT_UI.showLoadingIndicator();
CHAT_UI.showConfirmView(isInvite); CHAT_UI.showConfirmView(isInvite);
}); });
CHAT_UI.showConfirmView(isInvite); CHAT_UI.showConfirmView(isInvite);
$('#inviteStatus').text(titleText); $('#inviteStatus').text(titleText);
$('#invitedUsers').text(invitedUserText); $('#invitedUsers').text(invitedUserText);
$('#pills-confirm-tab').tab('show'); $('#pills-confirm-tab').tab('show');
} }
//ConfirmView initialize //ConfirmView initialize
CHAT_UI.showConfirmView = function(isInvite) { CHAT_UI.showConfirmView = function(isInvite) {
const template = $('#user-template').html(); const template = $('#user-template').html();
$('#select_user_list').html(''); $('#select_user_list').html('');
CHAT.globalSelectedUserList.forEach(function(user){
let html = Mustache.render(template, {
id: user.shopMemberId,
profileImage: user.profileImagePath,
name: user.loginId
});
// TODO 次のコミットに参考事項
// チャットルーム開設画面で参加ユーザー削除用チェックロジックが残っているので
// 影響テスト後、削除予定。 kang-dh
let obj = $(jQuery.parseHTML(html)).on('click',function(){
$(this).find('.userCheckBox').toggleClass('active');
});
$('#select_user_list').append(obj);
});
let roomListTitle = getLocalizedString("createRoomTitle")
$('.titleRoomName').text(roomListTitle)
// Rotate
if(CHAT_UI.isLandscapeMode()){
$(".user_list").addClass("col-6").removeClass("col-12");
$(".squareBoxContent span").addClass("landscape_span");
}
$('#backButton').off().on('click', function() { CHAT.globalSelectedUserList.forEach(function(user){
//loadingIndicatorを表示 let html = Mustache.render(template, {
CHAT_UI.showLoadingIndicator(); id: user.shopMemberId,
socket.emit('getGroupList', isInvite) profileImage: user.profileImagePath,
}); name: user.loginId
});
$("#userSelectionConfirmBtn").off().on('click', function(){ // TODO 次のコミットに参考事項
if (isInvite) { // チャットルーム開設画面で参加ユーザー削除用チェックロジックが残っているので
let userIdList = jQuery.makeArray($('#select_user_list .user_list').find('.userCheckBox')).map(function (e) { // 影響テスト後、削除予定。 kang-dh
return e.dataset.id; let obj = $(jQuery.parseHTML(html)).on('click',function(){
}); $(this).find('.userCheckBox').toggleClass('active');
// ユーザーの名前(login id)リスト。 });
let loginIdList = jQuery.makeArray($('#select_user_list .user_list').find('.userCheckBox')).map(function (e) {
return e.dataset.name;
});
if(userIdList.length > 0 && loginIdList.length > 0) {
//loadingIndicatorを表示
CHAT_UI.showLoadingIndicator();
socket.emit('inviteUsers', userIdList, loginIdList, function() {
$("#userSelectionDeleteBtn").hide();
$('#pills-chat-tab').tab('show');
});
}
} else {
if ($('#select_user_list .user_list').find('.userCheckBox').length > 0) {
// #36130に対応
const trimmedRoomName = $('#newRoomName').val().trim()
if (trimmedRoomName.length == 0) {
// loadingIndicatorを表示
CHAT_UI.showLoadingIndicator();
let userIdList = jQuery.makeArray($('#select_user_list .user_list').find('.userCheckBox')).map(function (e) {
return e.dataset.id;
});
let userNameList = jQuery.makeArray($('#select_user_list .user_list').find('.userCheckBox')).map(function (e) {
return e.dataset.name;
});
//TODO DB作業が終わったら自分のユーザ名を表示するかを判断し、修正予定。
// 参加ユーザ名でルーム名を生成
let newRoomName = CHAT.globalLoginParameter.loginId + ',' + userNameList.join(',');
// ルーム名のURIencodingを行う
const encodedRoomName = encodeURIComponent(newRoomName);
socket.emit('createNewRoom', userIdList, encodedRoomName, function(newRoomId) {
socket.emit('joinRoom', newRoomId, newRoomName, function () {
CHAT.saveRoomInfo(newRoomId, newRoomName);
$('#messages').html('');
$('.titleRoomName').text(newRoomName).data('roomName', newRoomName);
$("#userSelectionDeleteBtn").hide();
$('#pills-chat-tab').tab('show');
});
});
} else if(trimmedRoomName.includes(';') || trimmedRoomName.includes('/') || trimmedRoomName.includes('?') || trimmedRoomName.includes(':') || trimmedRoomName.includes("@")
|| trimmedRoomName.includes('&') || trimmedRoomName.includes('=') || trimmedRoomName.includes("+") || trimmedRoomName.includes('$') || trimmedRoomName.includes(",") || trimmedRoomName.includes('-')
|| trimmedRoomName.includes('_') || trimmedRoomName.includes('.') || trimmedRoomName.includes('!') || trimmedRoomName.includes('~') || trimmedRoomName.includes('*') || trimmedRoomName.includes("\'")
|| trimmedRoomName.includes('(') || trimmedRoomName.includes(')') || trimmedRoomName.includes('#') || trimmedRoomName.includes("\\") || trimmedRoomName.includes("\"") || trimmedRoomName.includes("`")) {
// #36147
// #36174
$("#customAlertTitle").text(getLocalizedString("invalidCharacter"));
$("#customAlertOk").text(getLocalizedString("yesTitle"));
$('#customAlert').appendTo("body").modal({
backdrop: 'static',
keyboard: false
})
.on('click', '#customAlertOk', function(e) {
});
} else if (trimmedRoomName.length > 20) {
// #36142
var inputText = $('#newRoomName').val().trim(); // #36142 文字列の前又は後の空白文字列を削除
// #36174
$("#customAlertTitle").text(getLocalizedString("nameTooLong"));
$("#customAlertOk").text(getLocalizedString("yesTitle"));
$('#customAlert').appendTo("body").modal({
backdrop: 'static',
keyboard: false
})
.on('click', '#customAlertOk', function(e) {
$('#newRoomName').val(inputText.substr(0, $('#newRoomName').prop("maxlength")));
});
} else {
//loadingIndicatorを表示
CHAT_UI.showLoadingIndicator();
let userIdList = jQuery.makeArray($('#select_user_list .user_list').find('.userCheckBox')).map(function (e) {
return e.dataset.id;
});
// ルーム名のtrimmingした後、URIencodingを行う
const encodedRoomName = encodeURIComponent(trimmedRoomName);
socket.emit('createNewRoom', userIdList, encodedRoomName, function(newRoomId) {
socket.emit('joinRoom', newRoomId, trimmedRoomName, function () {
CHAT.saveRoomInfo(newRoomId, trimmedRoomName);
$('#messages').html('');
$('.titleRoomName').text(trimmedRoomName).data('roomName', trimmedRoomName);
$("#userSelectionDeleteBtn").hide();
$('#pills-chat-tab').tab('show');
});
});
}
}
}
});
$("#userSelectionDeleteBtn").hide(); $('#select_user_list').append(obj);
});
$("#userSelectionDeleteBtn").off().on('click', function() { let roomListTitle = getLocalizedString("createRoomTitle")
// #36174 $('.titleRoomName').text(roomListTitle)
$("#customConfirmTitle").text(getLocalizedString("memberDeleteTitle"));
$("#customConfirmOk").text(getLocalizedString("roomDelete"));
$("#customAlertCancel").text(getLocalizedString("cancelTitle"));
$('#customConfirm').appendTo("body").modal({ // Rotate
backdrop: 'static', if (CHAT_UI.isLandscapeMode()) {
keyboard: false $(".user_list").addClass("col-6").removeClass("col-12");
}) $(".squareBoxContent span").addClass("landscape_span");
.on('click', '#customConfirmOk', function(e) { }
CHAT_UI.deleteButtonAction(isInvite);
}); $('#backButton').off().on('click', function() {
//loadingIndicatorを表示
CHAT_UI.showLoadingIndicator();
socket.emit('getGroupList', isInvite)
});
}); $("#userSelectionConfirmBtn").off().on('click', function(){
if (isInvite) {
let userIdList = jQuery.makeArray($('#select_user_list .user_list').find('.userCheckBox')).map(function (e) {
return e.dataset.id;
});
// ユーザーの名前(login id)リスト。
let loginIdList = jQuery.makeArray($('#select_user_list .user_list').find('.userCheckBox')).map(function (e) {
return e.dataset.name;
});
if(userIdList.length > 0 && loginIdList.length > 0) {
//loadingIndicatorを表示
CHAT_UI.showLoadingIndicator();
socket.emit('inviteUsers', userIdList, loginIdList, function() {
$("#userSelectionDeleteBtn").hide();
$('#pills-chat-tab').tab('show');
});
}
} else {
if ($('#select_user_list .user_list').find('.userCheckBox').length > 0) {
// #36130に対応
const trimmedRoomName = $('#newRoomName').val().trim()
if (trimmedRoomName.length == 0) {
// loadingIndicatorを表示
CHAT_UI.showLoadingIndicator();
let userIdList = jQuery.makeArray($('#select_user_list .user_list').find('.userCheckBox')).map(function (e) {
return e.dataset.id;
});
let userNameList = jQuery.makeArray($('#select_user_list .user_list').find('.userCheckBox')).map(function (e) {
return e.dataset.name;
});
//TODO DB作業が終わったら自分のユーザ名を表示するかを判断し、修正予定。
// 参加ユーザ名でルーム名を生成
let newRoomName = CHAT.globalLoginParameter.loginId + ',' + userNameList.join(',');
// ルーム名のURIencodingを行う
//const encodedRoomName = encodeURIComponent(newRoomName);
//todo android create room api
android.createChatRoom("1",userIdList.join(','),newRoomName);
/*socket.emit('createNewRoom', userIdList, encodedRoomName, function(newRoomId) {
socket.emit('joinRoom', newRoomId, newRoomName, function () {
CHAT.saveRoomInfo(newRoomId, newRoomName);
$('#messages').html('');
$('.titleRoomName').text(newRoomName).data('roomName', newRoomName);
$("#userSelectionDeleteBtn").hide();
$('#pills-chat-tab').tab('show');
});
});*/
/*socket.on('createNewRoom', (shopMemberIdList, newRoomName, callback) => {
const user = onlineUsers.getUser(socket.id)
if(user){
var loginIdListObj = new Object();
var newRoomNameObj = new Object();
loginIdListObj.type = 'loginIdList'
loginIdListObj.value = shopMemberIdList
newRoomNameObj.type = 'newRoomName'
newRoomNameObj.value = newRoomName
var path = httpRequest.makeChatRoomManageUrlPath(user.shopName, constant.ROOM_CREATENEWROOM, user.sid, loginIdListObj, newRoomNameObj)
winston.info('path' + path)
httpRequest.readResult(path, (res) =>{
const error = serverErrorHandler(res)
if(error.errorFlag) {
winston.error("Failed to [createNewRoom] process.")
socket.emit("showServerError", error.errorMessage);
return;
}
winston.info('create new room from server '+ util.inspect(res, false, null, false))
callback(res.roomId)
// ユーザーリストをアップデートする
socket.emit(res.roomId).emit('updateUserList', res.userList, [user.shop_member_id])
})
} else {
socket.emit("retryJoinProcess")
//join process
}
})*/
} else if(trimmedRoomName.includes(';') || trimmedRoomName.includes('/') || trimmedRoomName.includes('?') || trimmedRoomName.includes(':') || trimmedRoomName.includes("@")
|| trimmedRoomName.includes('&') || trimmedRoomName.includes('=') || trimmedRoomName.includes("+") || trimmedRoomName.includes('$') || trimmedRoomName.includes(",") || trimmedRoomName.includes('-')
|| trimmedRoomName.includes('_') || trimmedRoomName.includes('.') || trimmedRoomName.includes('!') || trimmedRoomName.includes('~') || trimmedRoomName.includes('*') || trimmedRoomName.includes("\'")
|| trimmedRoomName.includes('(') || trimmedRoomName.includes(')') || trimmedRoomName.includes('#') || trimmedRoomName.includes("\\") || trimmedRoomName.includes("\"") || trimmedRoomName.includes("`")) {
// #36147
// #36174
$("#customAlertTitle").text(getLocalizedString("invalidCharacter"));
$("#customAlertOk").text(getLocalizedString("yesTitle"));
$('#customAlert').appendTo("body").modal({
backdrop: 'static',
keyboard: false
})
.on('click', '#customAlertOk', function(e) {
});
} else if (trimmedRoomName.length > 20) {
// #36142
var inputText = $('#newRoomName').val().trim(); // #36142 文字列の前又は後の空白文字列を削除
// #36174
$("#customAlertTitle").text(getLocalizedString("nameTooLong"));
$("#customAlertOk").text(getLocalizedString("yesTitle"));
$('#customAlert').appendTo("body").modal({
backdrop: 'static',
keyboard: false
})
.on('click', '#customAlertOk', function(e) {
$('#newRoomName').val(inputText.substr(0, $('#newRoomName').prop("maxlength")));
});
} else {
//loadingIndicatorを表示
CHAT_UI.showLoadingIndicator();
let userIdList = jQuery.makeArray($('#select_user_list .user_list').find('.userCheckBox')).map(function (e) {
return e.dataset.id;
});
// ルーム名のtrimmingした後、URIencodingを行う
const encodedRoomName = encodeURIComponent(trimmedRoomName);
socket.emit('createNewRoom', userIdList, encodedRoomName, function(newRoomId) {
socket.emit('joinRoom', newRoomId, trimmedRoomName, function () {
CHAT.saveRoomInfo(newRoomId, trimmedRoomName);
$('#messages').html('');
$('.titleRoomName').text(trimmedRoomName).data('roomName', trimmedRoomName);
$("#userSelectionDeleteBtn").hide();
$('#pills-chat-tab').tab('show');
});
});
}
}
}
});
$("#userSelectionDeleteBtn").hide();
$("#userSelectionDeleteBtn").off().on('click', function() {
// #36174
$("#customConfirmTitle").text(getLocalizedString("memberDeleteTitle"));
$("#customConfirmOk").text(getLocalizedString("roomDelete"));
$("#customAlertCancel").text(getLocalizedString("cancelTitle"));
$('#customConfirm').appendTo("body").modal({
backdrop: 'static',
keyboard: false
})
.on('click', '#customConfirmOk', function(e) {
CHAT_UI.deleteButtonAction(isInvite);
});
});
} }
CHAT_UI.deleteButtonAction = function(isInvite) { CHAT_UI.deleteButtonAction = function(isInvite) {
//配列の整理 //配列の整理
jQuery.makeArray($('#select_user_list .user_list').find(".userCheckBox.active")).map(function (e) { jQuery.makeArray($('#select_user_list .user_list').find(".userCheckBox.active")).map(function (e) {
CHAT.globalSelectedUserList = CHAT.globalSelectedUserList.filter(function(element) { CHAT.globalSelectedUserList = CHAT.globalSelectedUserList.filter(function(element) {
return e.dataset.name != element.loginId; return e.dataset.name != element.loginId;
}); });
}); });
CHAT_UI.showConfirmView(isInvite) CHAT_UI.showConfirmView(isInvite)
$('#select_user_list .user_list').find('.userCheckBox').show(); $('#select_user_list .user_list').find('.userCheckBox').show();
} }
CHAT_UI.htmlElementTextInitialize = function(languageCode) { CHAT_UI.htmlElementTextInitialize = function(languageCode) {
moment.locale(languageCode); moment.locale(languageCode);
setLanguage(languageCode); setLanguage(languageCode);
$(".titleRoomName").text(getLocalizedString("roomListTitle")); $(".titleRoomName").text(getLocalizedString("roomListTitle"));
$("#message-form").attr("placeholder", getLocalizedString("chat_placeholder")); $("#message-form").attr("placeholder", getLocalizedString("chat_placeholder"));
$("#message-search").attr("placeholder",$("#message-search").attr("placeholder")+getLocalizedString("chat_search_placeholder")); $("#message-search").attr("placeholder",getLocalizedString("chat_search_placeholder"));
$("#exitRoom").text(getLocalizedString("exitRoom")).append("<i class='fas fa-door-open'></i>") $("#exitRoom").text(getLocalizedString("exitRoom")).append("<i class='fas fa-door-open'></i>")
$("#participants").text(getLocalizedString("participants")) $("#participants").text(getLocalizedString("participants"))
$("#fileUploadButton").text(getLocalizedString("photo")) $("#fileUploadButton").text(getLocalizedString("photo"))
$("#fileUploadButton2").text(getLocalizedString("video")) $("#fileUploadButton2").text(getLocalizedString("video"))
$("#okayLabel").text(getLocalizedString("okayLabel")) $("#okayLabel").text(getLocalizedString("okayLabel"))
$("#completeLabel").text(getLocalizedString("completeLabel")) $("#completeLabel").text(getLocalizedString("completeLabel"))
$("#thankLabel").text(getLocalizedString("thankLabel")) $("#thankLabel").text(getLocalizedString("thankLabel"))
$("#startToWorkLabel").text(getLocalizedString("startToWorkLabel")) $("#startToWorkLabel").text(getLocalizedString("startToWorkLabel"))
$("#groupListKeyword").attr("placeholder", getLocalizedString("groupSearch")) $("#groupListKeyword").attr("placeholder", getLocalizedString("groupSearch"))
$("#room-search").attr("placeholder",$("#room-search").attr("placeholder")+getLocalizedString("room_search_placeholder")); $("#contactListKeyword").attr("placeholder", getLocalizedString("contactSearch"))
$("#userListKeyword").attr("placeholder", getLocalizedString("userSearch")) $("#room-search").attr("placeholder",$("#room-search").attr("placeholder")+getLocalizedString("room_search_placeholder"));
$("#newRoomName").attr("placeholder", getLocalizedString("newRoomName")) $("#userListKeyword").attr("placeholder", getLocalizedString("userSearch"))
$("#newRoomName").attr("placeholder", getLocalizedString("newRoomName"))
$("#dmBtn").text(getLocalizedString("directMessageChatRoom"))
$("#groupBtn").text(getLocalizedString("groupChatRoom"))
$("#favorite-seperator").text(getLocalizedString("favorite"))
$("#mygroup-seperator").text(getLocalizedString("mygroup"))
} }
// 画像の読み込みが全て終わったタイミングでコールバック実行 // 画像の読み込みが全て終わったタイミングでコールバック実行
// FIXME 追加読み込みの場合は差分の画像のみ監視すべきだが、現状新規入室時にしか対応出来ていない。 // FIXME 追加読み込みの場合は差分の画像のみ監視すべきだが、現状新規入室時にしか対応出来ていない。
CHAT_UI.waitForLoadingImage = function(div, callback) { CHAT_UI.waitForLoadingImage = function(div, callback) {
var imgs = div.find("img"); var imgs = div.find("img");
var count = imgs.length; var count = imgs.length;
if (count==0) if (count==0)
callback(); callback();
var loaded = 0; var loaded = 0;
imgs.one( "load" , function ( e ) { imgs.one( "load" , function ( e ) {
// イメージが読み込まれた // イメージが読み込まれた
loaded++; loaded++;
if ( loaded === count ) { if ( loaded === count ) {
callback(); callback();
} }
}).each( function () { }).each( function () {
if ( this.complete || this.readyState === readyState.COMPLETED ) { if ( this.complete || this.readyState === readyState.COMPLETED ) {
$(this).trigger("load"); $(this).trigger("load");
} }
}); });
} }
CHAT_UI.refreshRoomList = function() { $('#contactButton').on('click', function(event){
var rooms = CHAT_DB.getRoomList(); CHAT_UI.refreshContactScreen();
});
$('#chatButton').on('click', function(event){
CHAT_UI.refreshRoomList(chatRoomType.DM);
});
CHAT_UI.refreshContactScreen = function() {
//loadingIndicatorを表示
$('#my_info').html('');
$('#favorite_list').html('');
$('#my_group_list').html('');
CHAT_UI.showLoadingIndicator();
$('#pills-contact-tab').tab('show');
//画面タイトル設定
let contactListTitle = getLocalizedString("contactListTitle");
$('.titleRoomName').text(contactListTitle);
// グループの様式を読み込む
const groupTemplate = $('#group-template').html();
// ユーザの様式を読み込む
const userTemplate = $('#user-template').html();
const myNamecardTemplate = $('#my-namecard-template').html();
if (IS_ONLINE == 'true') {
android.updateGroupInfo();
android.updateMyInfo();
android.updateGroupUser();
}
var myInfo = CHAT_DB.getMyInfo();
myInfo.profileImagePath = CHAT.getProfileImgUrl(myInfo.profileUrl)
let myNamecardHtml = Mustache.render(myNamecardTemplate, {
loginId: myInfo.shopMemberId,
profileImage: myInfo.profileImagePath,
name: myInfo.shopMemberName,
groupPathList: myInfo.groupPathList
});
let myNamecardObj = $(jQuery.parseHTML(myNamecardHtml)).on('click', function(){
});
$('#namecard').append(myNamecardObj);
let html = Mustache.render(userTemplate, {
id: myInfo.shopMemberId,
profileImage: myInfo.profileImagePath,
name: myInfo.shopMemberName
});
let obj = $(jQuery.parseHTML(html)).on('click', function(){
CHAT_UI.showNamecard('namecard');
});
$('#my_info').append(obj);
var groupUserList = CHAT_DB.getMyGroupUsers();
groupUserList.forEach(function(groupUser) {
groupUser.profileImagePath = CHAT.getProfileImgUrl(groupUser.profileUrl)
let html = Mustache.render(userTemplate, {
id: groupUser.shopMemberId,
profileImage: groupUser.profileImagePath,
name: groupUser.shopMemberName
});
let obj = $(jQuery.parseHTML(html)).on('click', function(){
//TODO need onClick Action
if (IS_ONLINE == 'true') {
android.updateUserInfo(groupUser.shopMemberId);
}
});
$('#my_group_list').append(obj);
})
var favoriteCount = 0;
var favoriteGroupList = CHAT_DB.getFavoriteGroups();
favoriteGroupList.forEach(function(favoriteGroup) {
let html = Mustache.render(groupTemplate, {
name: favoriteGroup.groupName
});
let obj = $(jQuery.parseHTML(html)).on('click', function(){
//TODO need onClick Action
});
favoriteCount++
$('#favorite_list').append(obj);
})
var favoriteUserList = CHAT_DB.getFavoriteUsers();
favoriteUserList.forEach(function(favoriteUser) {
favoriteUser.profileImagePath = CHAT.getProfileImgUrl(favoriteUser.profileUrl)
let html = Mustache.render(groupTemplate, {
id: favoriteUser.shopMemberId,
profileImage: favoriteUser.profileImagePath,
name: favoriteUser.shopMemberName
});
let obj = $(jQuery.parseHTML(html)).on('click', function(){
//TODO need onClick Action
});
favoriteCount++
$('#favorite_list').append(obj);
})
if (favoriteCount == 0) {
$('#favorite_list').hide();
$('#favorite-seperator').hide();
} else {
$('#favorite_list').show();
$('#favorite-seperator').show();
}
CHAT_UI.dismissLoadingIndicator();
}
CHAT_UI.refreshRoomList = function(roomType) {
var rooms = CHAT_DB.getRoomList(roomType);
CHAT.globalIsInvite = false; CHAT.globalIsInvite = false;
activeRoomId = null; activeRoomId = null;
// #36146に対応 // #36146に対応
...@@ -863,6 +1063,9 @@ CHAT_UI.refreshRoomList = function() { ...@@ -863,6 +1063,9 @@ CHAT_UI.refreshRoomList = function() {
}); });
// Click event // Click event
let obj = $(jQuery.parseHTML(html)).on('click', function() { let obj = $(jQuery.parseHTML(html)).on('click', function() {
let roomId = $(this).data('roomId');
let roomName = $(this).data('roomname');
CHAT_UI.joinRoom(roomId,roomName);
//TODO ルームに入る処理追加必要 //TODO ルームに入る処理追加必要
}); });
// チャットルームリストに追加する // チャットルームリストに追加する
...@@ -896,3 +1099,113 @@ CHAT_UI.refreshRoomList = function() { ...@@ -896,3 +1099,113 @@ CHAT_UI.refreshRoomList = function() {
// loadingIndicatorを表示しない // loadingIndicatorを表示しない
CHAT_UI.dismissLoadingIndicator(); CHAT_UI.dismissLoadingIndicator();
}; };
CHAT_UI.joinRoom = function(roomId,roomName) {
if (IS_ONLINE == 'true') {
android.updateMessages(roomId);
socket.emit('joinRoom', roomId, roomName, function() {
});
}
var messages = CHAT_DB.getMessages(roomId);
CHAT_UI.loadMessages(messages, roomId, roomName)
};
CHAT_UI.loadMessages = function(messages, roomId, roomName) {
$('#messages').html('');
$('.titleRoomName').text(roomName).data('roomName', roomName);
$('#pills-chat-tab').tab('show');
$("#message-search").attr("placeholder", getLocalizedString("chat_search_placeholder"));
let jQueryMessages = $('#messages');
// スクロールの変化を防ぐため以前画面の高さを保存する
let beforeHeight = jQueryMessages.prop('scrollHeight');
// メッセージ文字列の生成
let workVal = "";
messages.forEach(function(message) {
let template = $('#message-template').html();
if (message.selfFlg == 1) {
template = $('#message-template-me').html();
}
let messageTime = CHAT_UTIL.formatDate(message.insertDate);
if (message.profileUrl) {
message.profileImagePath = CHAT.getProfileImgUrl(message.profileUrl)
} else {
message.profileImagePath = CHAT.getProfileImgUrl("")
}
// #36147
message.message = message.message.toString();
var replacePath = message.message;
replacePath = replacePath.replaceAll('/acms',CHAT_SERVER_URL+'/acms');
message.message = replacePath;
let html = Mustache.render(template, {
text: message.message,
from: message.loginId,
profileImage: message.profileImagePath,
createdAtDay: messageTime.createdAtDay,
createdAtTime: messageTime.createdAtTime
});
html = message.message.includes('attachedImages') || message.message.includes('attachedVideos') ? CHAT_UTIL.htmlDecode(html) : html;
workVal = html + workVal;
})
// メッセージの画面描画
jQueryMessages.prepend(workVal);
if (beforeHeight !== 0) {
// 追加のメッセージ読み込み時は読み込み前のスクロール位置を維持
setTimeout(function () {
jQueryMessages.scrollTop(jQueryMessages.prop('scrollHeight') - beforeHeight);
}, 400);
} else {
// 新規に入室の場合は最下部へスクロール
CHAT_UI.waitForLoadingImage(jQueryMessages, CHAT_UI.scrollToBottom);
// タブレット等、画面サイズが大きい場合、スクロール出来なくならないよう追加で10件メッセージを取得
if ($(window).height() > jQueryMessages.height()) {
$('#messages').scroll();
}
}
// ユーザ削除ボタン表示しない
$("#userSelectionDeleteBtn").hide();
CHAT_UI.dismissLoadingIndicator();// add some...
// チャットに遷移する
$('#pills-chat-tab').tab('show');
};
$('#dmBtn').on('click', function (e){
CHAT_UI.refreshRoomList(chatRoomType.DM);
});
$('#groupBtn').on('click', function (e){
CHAT_UI.refreshRoomList(chatRoomType.GROUP);
});
CHAT_UI.showNamecard = function(id) {
$('#namecard').appendTo("body").modal({
backdrop: 'static',
keyboard: false
})
}
CHAT_UI.hideNamecard = function(id) {
$('#namecard').modal('hide');
}
$(document).click(function (e) {
if($(e.target).hasClass('my-name-card-close')){
CHAT_UI.hideNamecard('namecard');
}
});
CHAT_UI.showUserNamecard = function(shopMemberId) {
// $('#namecard').appendTo("body").modal({
// backdrop: 'static',
// keyboard: false
// })
}
var socket; var socket;
connectSocket(IS_ONLINE);
function connectSocket(isOnline) { function getGlobalParam(chatServerUrl, cmsServerUrl, platform, isMobile, isOnline) {
if (isOnline == 'true') { CHAT_SERVER_URL = chatServerUrl;
CMS_SERVER_URL = cmsServerUrl;
PLATFORM = platform;
IS_MOBILE = isMobile;
IS_ONLINE = isOnline;
connectSocket();
};
android.getGlobalParameter();
function connectSocket() {
CHAT_UI.dismissLoadingIndicator();
if (IS_ONLINE == 'true') {
socket = io(CHAT_SERVER_URL); socket = io(CHAT_SERVER_URL);
setSocketAction(); setSocketAction();
android.updateRoomList(); android.updateRoomList();
CHAT_UI.refreshRoomList(); CHAT_UI.refreshRoomList(chatRoomType.DM);
CHAT_UI.dismissLoadingIndicator(); CHAT_UI.dismissLoadingIndicator();
$('#createChatRoom').show(); $('#createChatRoom').show();
} else { } else {
...@@ -14,11 +25,11 @@ function connectSocket(isOnline) { ...@@ -14,11 +25,11 @@ function connectSocket(isOnline) {
if (CHAT_UTIL.isIOS()) { if (CHAT_UTIL.isIOS()) {
//TODO IOSの場合 //TODO IOSの場合
} else if (CHAT_UTIL.isAndroid()) { } else if (CHAT_UTIL.isAndroid()) {
$('.overlay').removeClass('active undismissable'); //$('.overlay').removeClass('active undismissable');
// loadingIndicatorを表示 // loadingIndicatorを表示
CHAT_UI.showLoadingIndicator(); CHAT_UI.showLoadingIndicator();
android.getLoginParameter(); android.getLoginParameter();
CHAT_UI.refreshRoomList(); CHAT_UI.refreshRoomList(chatRoomType.DM);
CHAT_UI.dismissLoadingIndicator(); CHAT_UI.dismissLoadingIndicator();
$('#createChatRoom').show(); $('#createChatRoom').show();
} }
...@@ -211,72 +222,72 @@ function setSocketAction () { ...@@ -211,72 +222,72 @@ function setSocketAction () {
// 新しいメッセージを受信する場合の処理 // 新しいメッセージを受信する場合の処理
// #36170 // #36170
socket.on('loadMessages', function(messages, shopMemberId, users, roomId, roomName){ // socket.on('loadMessages', function(messages, shopMemberId, users, roomId, roomName){
let jQueryMessages = $('#messages'); // let jQueryMessages = $('#messages');
// スクロールの変化を防ぐため以前画面の高さを保存する // // スクロールの変化を防ぐため以前画面の高さを保存する
let beforeHeight = jQueryMessages.prop('scrollHeight'); // let beforeHeight = jQueryMessages.prop('scrollHeight');
// メッセージ文字列の生成 // // メッセージ文字列の生成
let workVal = ""; // let workVal = "";
messages.forEach(function(message) { // messages.forEach(function(message) {
let template = $('#message-template').html(); // let template = $('#message-template').html();
if (message.shopMemberId == shopMemberId) { // if (message.shopMemberId == shopMemberId) {
template = $('#message-template-me').html(); // template = $('#message-template-me').html();
} // }
let messageTime = CHAT_UTIL.formatDate(message.time.time); // let messageTime = CHAT_UTIL.formatDate(message.time.time);
//
if (users != undefined) { // if (users != undefined) {
let user = users.find((user) => user.loginId == message.loginId) // let user = users.find((user) => user.loginId == message.loginId)
//
// userProfilePathが使えるpathかをcheckして使えないpathの場合、default画像の経路に変更 // // userProfilePathが使えるpathかをcheckして使えないpathの場合、default画像の経路に変更
if (user) { // if (user) {
message.profileImagePath = CHAT.getProfileImgUrl(user.profileImagePath) // message.profileImagePath = CHAT.getProfileImgUrl(user.profileImagePath)
} else { // } else {
message.profileImagePath = CHAT.getProfileImgUrl("") // message.profileImagePath = CHAT.getProfileImgUrl("")
} // }
} else { // } else {
message.profileImagePath = CHAT.getProfileImgUrl(message.profileImagePath) // message.profileImagePath = CHAT.getProfileImgUrl(message.profileImagePath)
} // }
//
// #36147 // // #36147
message.message = message.message.toString(); // message.message = message.message.toString();
var replacePath = message.message; // var replacePath = message.message;
replacePath = replacePath.replaceAll('/acms',CHAT_SERVER_URL+'/acms'); // replacePath = replacePath.replaceAll('/acms',CHAT_SERVER_URL+'/acms');
message.message = replacePath; // message.message = replacePath;
let html = Mustache.render(template, { // let html = Mustache.render(template, {
text: message.message, // text: message.message,
from: message.loginId, // from: message.loginId,
profileImage: message.profileImagePath, // profileImage: message.profileImagePath,
createdAtDay: messageTime.createdAtDay, // createdAtDay: messageTime.createdAtDay,
createdAtTime: messageTime.createdAtTime // createdAtTime: messageTime.createdAtTime
}); // });
html = message.message.includes('attachedImages') || message.message.includes('attachedVideos') ? CHAT_UTIL.htmlDecode(html) : html; // html = message.message.includes('attachedImages') || message.message.includes('attachedVideos') ? CHAT_UTIL.htmlDecode(html) : html;
workVal = html + workVal; // workVal = html + workVal;
}) // })
//
// メッセージの画面描画 // // メッセージの画面描画
jQueryMessages.prepend(workVal); // jQueryMessages.prepend(workVal);
if (beforeHeight !== 0) { // if (beforeHeight !== 0) {
// 追加のメッセージ読み込み時は読み込み前のスクロール位置を維持 // // 追加のメッセージ読み込み時は読み込み前のスクロール位置を維持
setTimeout(function () { // setTimeout(function () {
jQueryMessages.scrollTop(jQueryMessages.prop('scrollHeight') - beforeHeight); // jQueryMessages.scrollTop(jQueryMessages.prop('scrollHeight') - beforeHeight);
}, 400); // }, 400);
} else { // } else {
// 新規に入室の場合は最下部へスクロール // // 新規に入室の場合は最下部へスクロール
CHAT_UI.waitForLoadingImage(jQueryMessages, CHAT_UI.scrollToBottom); // CHAT_UI.waitForLoadingImage(jQueryMessages, CHAT_UI.scrollToBottom);
// タブレット等、画面サイズが大きい場合、スクロール出来なくならないよう追加で10件メッセージを取得 // // タブレット等、画面サイズが大きい場合、スクロール出来なくならないよう追加で10件メッセージを取得
if ($(window).height() > jQueryMessages.height()) { // if ($(window).height() > jQueryMessages.height()) {
$('#messages').scroll(); // $('#messages').scroll();
} // }
} // }
//
// ユーザ削除ボタン表示しない // // ユーザ削除ボタン表示しない
$("#userSelectionDeleteBtn").hide(); // $("#userSelectionDeleteBtn").hide();
//
CHAT_UI.dismissLoadingIndicator();// add some... // CHAT_UI.dismissLoadingIndicator();// add some...
//
// チャットに遷移する // // チャットに遷移する
$('#pills-chat-tab').tab('show'); // $('#pills-chat-tab').tab('show');
}); // });
// Update User List In Room // Update User List In Room
// サイドバーのユーザーリストアップデート。 // サイドバーのユーザーリストアップデート。
...@@ -383,7 +394,11 @@ function setSocketAction () { ...@@ -383,7 +394,11 @@ function setSocketAction () {
if (isInvite) { if (isInvite) {
$('#pills-chat-tab').tab('show'); $('#pills-chat-tab').tab('show');
} else { } else {
socket.emit('getRoomList'); if (IS_ONLINE == 'true') {
android.updateRoomList();
CHAT_UI.refreshRoomList(chatRoomType.DM);
CHAT_UI.dismissLoadingIndicator();
}
} }
}); });
}); });
......
...@@ -267,4 +267,17 @@ getLoginParameter = function(sid, loginId, shopName, roomId = undefined, roomNam ...@@ -267,4 +267,17 @@ getLoginParameter = function(sid, loginId, shopName, roomId = undefined, roomNam
CHAT.leaveRoom = function() { CHAT.leaveRoom = function() {
socket.emit('leaveRoom', function() { socket.emit('leaveRoom', function() {
}); });
}
CHAT.requestMyinfo = function() {
jQuery.ajax({
async: true,
url: CMS_SERVER_URL + "/chatapi/user?sid=" + CHAT.globalLoginParameter.sid + "&cmd=" + userAPICmd.MYINFO,
type: "get",
processData: false,
contentType: false
}).done(function(res) {
console.log(res);
return res;
})
} }
\ No newline at end of file
...@@ -16,3 +16,12 @@ const messageType = { ...@@ -16,3 +16,12 @@ const messageType = {
SYSTEM : 3 , SYSTEM : 3 ,
COMMUNICATION : 4 COMMUNICATION : 4
} }
const userAPICmd = {
MYINFO : 9
}
const chatRoomType = {
DM : "1",
GROUP : "0"
}
...@@ -52,5 +52,11 @@ $.lang.en = { ...@@ -52,5 +52,11 @@ $.lang.en = {
"serverErrorOccured":"App will not be able to communicate with the server. \n After a few moments, please try again.", "serverErrorOccured":"App will not be able to communicate with the server. \n After a few moments, please try again.",
"memberDeleteTitle":"Do you want to remove selected members from the list?", "memberDeleteTitle":"Do you want to remove selected members from the list?",
"photo":"Photo", "photo":"Photo",
"video":"Video" "video":"Video",
"contactListTitle":"Contact",
"contactSearch":"Contact search",
"directMessageChatRoom":"DM",
"favorite":"Favorite List",
"mygroup":"My Group",
"groupChatRoom":"Group"
} }
...@@ -52,5 +52,11 @@ $.lang.ja = { ...@@ -52,5 +52,11 @@ $.lang.ja = {
"serverErrorOccured":"サーバと通信できません。\nしばらく時間をおいて再度操作してください。", "serverErrorOccured":"サーバと通信できません。\nしばらく時間をおいて再度操作してください。",
"memberDeleteTitle":"選択したメンバーをリストから削除しますか?", "memberDeleteTitle":"選択したメンバーをリストから削除しますか?",
"photo":"写真", "photo":"写真",
"video":"動画" "video":"動画",
"contactListTitle":"コンタクト",
"contactSearch":"コンタクト検索",
"directMessageChatRoom":"DM",
"favorite":"お気に入りリスト",
"mygroup":"マイグループ",
"groupChatRoom":"グループ"
} }
...@@ -52,5 +52,11 @@ $.lang.ko = { ...@@ -52,5 +52,11 @@ $.lang.ko = {
"serverErrorOccured":"서버와 통신할 수 없습니다.\n잠시 후 다시 시도해보시기 바랍니다.", "serverErrorOccured":"서버와 통신할 수 없습니다.\n잠시 후 다시 시도해보시기 바랍니다.",
"memberDeleteTitle":"목록에서 선택된 멤버를 삭제하시겠습니까?", "memberDeleteTitle":"목록에서 선택된 멤버를 삭제하시겠습니까?",
"photo":"사진", "photo":"사진",
"video":"동영상" "video":"동영상",
"contactListTitle":"연락처",
"contactSearch":"연락처 검색",
"directMessageChatRoom":"DM",
"favorite":"즐겨찾기리스트",
"mygroup":"마이그룹",
"groupChatRoom":"그룹"
} }
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("collapsible-active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment