chat-make-room.js 10.5 KB
Newer Older
1
// 名前空間
2
var ChatMakeRoom = {};
Kang Donghun committed
3

Kim Peace committed
4
document.addEventListener("DOMContentLoaded", function () {
Kim Peace committed
5
  // メンバー検索
Kim Peace committed
6
  ChatMakeRoom.searchMember();
Kim Peace committed
7

Kim Peace committed
8
  // iOSキーボード変換検知用
Kim Peace committed
9
  ChatMakeRoom.bindiOSKeyBoardEvent();
10

Kim Peace committed
11
  ChatMakeRoom.bindSearchCancel();
12
});
13

14
// メンバー検索
15
ChatMakeRoom.searchUser = function (keyword) {
Kim Peace committed
16 17 18 19
  const overlayMessage = $(".overlay_src_msg");
  const isAllGroup = $("#tabAllGroupOnMakeRoom").is(":checked");
  let hasNoData = false;
  overlayMessage.empty();
Kang Donghun committed
20

Kim Peace committed
21 22 23
  //全グループ検索画面
  if (isAllGroup) {
    //グループデータ検索
Kim Peace committed
24 25
    const groupList = NativeBridgeDataSource.getGroupByName(keyword);
    const groupTemplate = getTemplate(TemplateURL.MAKE_ROOM_GROUP_LIST);
Kang Donghun committed
26

Kim Peace committed
27
    groupList.forEach(function (group) {
Kim Peace committed
28 29 30 31 32
      let html = ChatMakeRoom.renderRoomList(
        groupTemplate,
        group.groupName,
        group.groupId
      );
Kim Peace committed
33
      let obj = jQuery.parseHTML(html);
Kim Peace committed
34
      overlayMessage.append(obj);
Kim Peace committed
35
    });
Kang Donghun committed
36

Kim Peace committed
37
    //ユーザデータ検索
Kim Peace committed
38 39 40 41 42 43
    const userList =
      NativeBridgeDataSource.getAllGroupShopMemberByName(keyword);
    ChatMakeRoom.searchUserData(userList);
    const userTemplate = getTemplate(TemplateURL.MAKE_ROOM_USER_LIST);
    const html = ChatMakeRoom.renderUser(userTemplate, userList);
    const obj = jQuery.parseHTML(html);
Kim Peace committed
44
    overlayMessage.append(obj);
Kim Peace committed
45

Kim Peace committed
46
    hasNoData = groupList.length == 0 && userList.length == 0;
Kim Peace committed
47 48
  } else {
    // 連絡先画面
49
    const userList = NativeBridgeDataSource.getMyGroupShopMemberByName(keyword);
Kim Peace committed
50
    ChatMakeRoom.searchUserData(userList);
Kim Peace committed
51
    var userTemplate = getTemplate(TemplateURL.MAKE_ROOM_USER_LIST);
Kim Peace committed
52
    let html = ChatMakeRoom.renderUser(userTemplate, userList);
Kim Peace committed
53
    let obj = jQuery.parseHTML(html);
Kim Peace committed
54
    overlayMessage.html(obj);
Kim Peace committed
55 56

    hasNoData = userList.length == 0;
Kim Peace committed
57
  }
Kim Peace committed
58 59 60 61 62 63 64 65 66

  if (hasNoData) {
    const noResultMsg = getNoResultMessage();
    overlayMessage.append(noResultMsg);
  }
};

/** UTIL */

Kim Peace committed
67
ChatMakeRoom.searchMember = function () {
Kim Peace committed
68 69 70 71 72 73
  const searchInput = $('#chatMakeRoom .search_form input[type="search"]');
  searchInput.click(function (e) {
    let contactListTitle = getLocalizedString("userSearch");
    $("#makeRoomTitle").text(contactListTitle);
  });
  searchInput.keyup(function (e) {
Kim Peace committed
74
    const keyword = searchInput.val();
Kim Peace committed
75 76 77 78 79 80 81 82 83 84 85 86 87
    const enterKeyPressed = e.KeyCode == 13 || e.key == "Enter";
    const keywordEmpty = keyword == "" || keyword.length < 2;
    const keywordNotEmpty = keyword != "" && keyword.length != 0;
    //画面タイトル設定
    if (enterKeyPressed) {
      if (keywordNotEmpty) {
        searchInput.blur();
        return false;
      }
    } else if (keywordEmpty) {
      $(".overlay_src_msg").empty();
      return false;
    }
88
    ChatMakeRoom.searchUser(keyword);
Kim Peace committed
89 90 91 92 93 94 95
    if (enterKeyPressed) {
      searchInput.blur();
      return;
    }
  });
};

Kim Peace committed
96 97 98 99
ChatMakeRoom.bindiOSKeyBoardEvent = function () {
  if (deviceInfo.isiOS()) {
    const searchInput = $('#chatMakeRoom .search_form input[type="search"]');
    searchInput.on("compositionend", function () {
Kim Peace committed
100
      var keyword = searchInput.val();
101
      ChatMakeRoom.searchUser(keyword);
Kim Peace committed
102 103
    });
  }
Kim Peace committed
104 105
};

Kim Peace committed
106
ChatMakeRoom.bindSearchCancel = function () {
107 108 109 110 111 112
  $("#chatMakeRoom .search_form .cancel").click(function () {
    let roomListTitle = getLocalizedString("createRoomTitle");
    $("#makeRoomTitle").text(roomListTitle);
  });
};

Kim Peace committed
113
ChatMakeRoom.renderRoomList = function (url, groupName, groupID) {
Kim Peace committed
114 115 116 117 118 119
  return Mustache.render(url, {
    name: groupName,
    id: groupID,
  });
};

Kim Peace committed
120
ChatMakeRoom.searchUserData = function (userList) {
Kim Peace committed
121
  userList.forEach(function (user) {
122 123 124 125
    user.profileUrl = Common.getProfileImgUrl(user.profileUrl);
    let findObj = ChatManagementCommon.selectedUserList.find(function (
      shopMemberId
    ) {
Kim Peace committed
126 127 128 129 130 131 132 133
      return shopMemberId == user.shopMemberId;
    });
    if (findObj) {
      user.checked = "checked";
    }
  });
};

Kim Peace committed
134
ChatMakeRoom.renderUser = function (url, userList) {
Kim Peace committed
135 136 137
  return Mustache.render(url, {
    userList: userList,
  });
Kim Peace committed
138
};
139 140

$("#makeRoomConfirmBtn").on("click", function (e) {
Kim Peace committed
141
  const selectedUserList = ChatManagementCommon.selectedUserList.join(",");
142 143 144 145 146
  NativeBridgeDelegate.saveSelectedUserList(selectedUserList);
  $("#makeRoomForm").submit();
});

$("#tabAllGroupOnMakeRoom").on("click", function (e) {
147
  ChatMakeRoom.refreshAllGroupForMakeRoom("0");
148 149 150
});

$("#tabMyGroupOnMakeRoom").on("click", function (e) {
151
  ChatMakeRoom.refreshMyGroupForMakeRoom();
152 153
});

154
ChatMakeRoom.refreshMyGroupForMakeRoom = function () {
155 156 157 158 159 160 161
  $(".modal-backdrop").remove();
  $("#favoriteListForMakeRoom").html("");
  $("#myGroupListForMakeRoom").html("");
  //画面タイトル設定
  let contactListTitle = getLocalizedString("userSearch");
  $("#title").text(contactListTitle);

Kim Peace committed
162
  NativeBridgeDelegate.updateContactInfo();
163

Kim Peace committed
164
  ChatMakeRoom.appendFavoriteGroupList();
165

Kim Peace committed
166
  ChatMakeRoom.appendFavoriteUserList();
167

Kim Peace committed
168 169
  ChatMakeRoom.appendMyGroupList();
};
170

Kim Peace committed
171 172 173
ChatMakeRoom.appendFavoriteGroupList = function () {
  // グループの様式を読み込む
  const groupTemplate = getTemplate(TemplateURL.MAKE_ROOM_GROUP_LIST);
174
  //お気に入りグループ取得。
Kim Peace committed
175
  const favoriteGroupList = NativeBridgeDataSource.getFavoriteGroups();
176 177 178 179 180 181 182 183 184
  favoriteGroupList.forEach(function (favoriteGroup) {
    let html = Mustache.render(groupTemplate, {
      name: favoriteGroup.groupName,
      id: favoriteGroup.groupId,
    });

    let obj = $(jQuery.parseHTML(html)).on("click", function () {});
    $("#favoriteListForMakeRoom").append(obj);
  });
Kim Peace committed
185 186 187 188 189 190
};

ChatMakeRoom.appendFavoriteUserList = function () {
  // ユーザの様式を読み込む
  const userTemplate = getTemplate(TemplateURL.MAKE_ROOM_USER_LIST);
  const favoriteUserList = NativeBridgeDataSource.getFavoriteUsers();
191 192 193
  favoriteUserList.forEach(function (favoriteUser) {
    favoriteUser.profileUrl = Common.getProfileImgUrl(favoriteUser.profileUrl);
    let findObj = ChatManagementCommon.selectedUserList.find(function (
Kim Peace committed
194
      shopMemberID
195
    ) {
Kim Peace committed
196
      return shopMemberID == favoriteUser.shopMemberId;
197 198 199 200 201 202 203 204 205 206
    });
    if (findObj) {
      favoriteUser.checked = "checked";
    }
  });
  let html = Mustache.render(userTemplate, {
    userList: favoriteUserList,
  });
  let obj = jQuery.parseHTML(html);
  $("#favoriteListForMakeRoom").append(obj);
Kim Peace committed
207
};
208

Kim Peace committed
209 210 211
ChatMakeRoom.appendMyGroupList = function () {
  const groupUserTemplate = getTemplate(TemplateURL.MAKE_ROOM_GROUP_USER_LIST);
  const myGroupList = NativeBridgeDataSource.getMyGroupUsers();
212 213 214 215
  myGroupList.forEach(function (myGroup) {
    myGroup.groupUserList.forEach(function (groupUser) {
      groupUser.profileUrl = Common.getProfileImgUrl(groupUser.profileUrl);
      let findObj = ChatManagementCommon.selectedUserList.find(function (
Kim Peace committed
216
        shopMemberID
217
      ) {
Kim Peace committed
218
        return shopMemberID == groupUser.shopMemberId;
219 220 221 222 223 224 225 226 227 228 229 230 231 232
      });
      if (findObj) {
        groupUser.checked = "checked";
      }
    });
    let html = Mustache.render(groupUserTemplate, {
      groupName: myGroup.groupName,
      groupUserList: myGroup.groupUserList,
    });
    let obj = $(jQuery.parseHTML(html)).on("click", function () {});

    $("#myGroupListForMakeRoom").append(obj);
  });
};
233 234

ChatMakeRoom.refreshAllGroupForMakeRoom = function (paramGroupId) {
Kim Peace committed
235
  let groupId = paramGroupId;
236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
  $(".cancel").addClass("none");
  $(".search_form input").removeClass("focus");
  $(".search_form input").val("");
  $(".search_form form").removeClass();
  $(".content").removeClass("none");
  $(".overlay_src_msg").empty();

  $("#tabAllGroupOnMakeRoom").prop("checked", true);

  //オンライン状態であればサーバから情報更新。
  NativeBridgeDelegate.updateGroupInfo(groupId);

  //画面エリアを初期化。
  $("#parentGroupBtnForMakeRoom").off();
  $("#rootGroupBtnForMakeRoom").off();
  $("#childGroupListAreaForMakeRoom").html("");
  $("#userInGroupListForMakeRoom").html("");
  $("#groupPathAreaForMakeRoom").html("");

  //DBからグループ情報を取得。
  var result = NativeBridgeDataSource.getGroupInfo(groupId);

  //上位グループ、トップグループ遷移ボタンのイベント追加。
  if (typeof result.parentGroupId !== "undefined") {
    $("#parentGroupBtnForMakeRoom").on("click", function () {
      ChatMakeRoom.refreshAllGroupForMakeRoom(result.parentGroupId);
    });
  }
  if (typeof result.rootGroupId !== "undefined") {
    if (paramGroupId == 0) {
      groupId = result.rootGroupId;
    }
    $("#rootGroupBtnForMakeRoom").on("click", function () {
      ChatMakeRoom.refreshAllGroupForMakeRoom(result.rootGroupId);
    });
  }
Kim Peace committed
272

273 274 275 276 277 278 279 280
  if (groupId == result.rootGroupId || paramGroupId == "0") {
    $("#rootGroupArea").addClass("none");
    $("#parentGroupArea").addClass("none");
  } else {
    $("#rootGroupArea").removeClass("none");
    $("#parentGroupArea").removeClass("none");
  }
  //該当グループのパースを表示。
Kim Peace committed
281
  ChatMakeRoom.appendGroupPathList(result.groupPathList);
282

Kim Peace committed
283 284 285 286 287 288 289 290 291 292 293 294 295
  //該当グループの下位グループ表示。
  ChatMakeRoom.appendGroupList(result.childGroupList);

  //該当グループの所属ユーザを表示。
  ChatMakeRoom.appendUsersInGroup(result.groupUserList);
};

ChatMakeRoom.appendGroupPathList = function (groupPathList) {
  const groupPathTemplate = getTemplate(TemplateURL.MAKE_ROOM_GROUP_PATH);

  let groupPathCount = 0;
  groupPathList.forEach(function (groupPath) {
    if (!(groupPathCount < groupPathList.length - 3)) {
296 297 298 299 300 301 302 303 304
      let html = Mustache.render(groupPathTemplate, {
        name: groupPath.groupName,
        id: groupPath.groupId,
      });
      let obj = jQuery.parseHTML(html);
      $("#groupPathAreaForMakeRoom").append(obj);
    }
    groupPathCount++;
  });
Kim Peace committed
305
};
306

Kim Peace committed
307 308
ChatMakeRoom.appendGroupList = function (childGroupList) {
  const groupTemplate = getTemplate(TemplateURL.MAKE_ROOM_GROUP_LIST);
309

Kim Peace committed
310
  childGroupList.forEach(function (childGroup) {
311 312 313 314 315 316 317 318
    let html = Mustache.render(groupTemplate, {
      name: childGroup.groupName,
      id: childGroup.groupId,
    });

    let obj = $(jQuery.parseHTML(html)).on("click", function () {});
    $("#childGroupListAreaForMakeRoom").append(obj);
  });
Kim Peace committed
319
};
320

Kim Peace committed
321
ChatMakeRoom.appendUsersInGroup = function (groupUserList) {
322 323
  var userTemplate = getTemplate(TemplateURL.MAKE_ROOM_USER_LIST);

Kim Peace committed
324
  groupUserList.forEach(function (groupUser) {
325 326
    groupUser.profileUrl = Common.getProfileImgUrl(groupUser.profileUrl);
    let findObj = ChatManagementCommon.selectedUserList.find(function (
Kim Peace committed
327
      shopMemberID
328
    ) {
Kim Peace committed
329
      return shopMemberID == groupUser.shopMemberId;
330 331 332 333 334 335
    });
    if (findObj) {
      groupUser.checked = "checked";
    }
  });
  let html = Mustache.render(userTemplate, {
Kim Peace committed
336
    userList: groupUserList,
337 338 339
  });
  let obj = jQuery.parseHTML(html);
  $("#userInGroupListForMakeRoom").append(obj);
Kim Peace committed
340
};