chat-add-user.js 10.8 KB
Newer Older
1 2 3 4 5
// 名前空間
var ChatAddUser = {};

document.addEventListener("DOMContentLoaded", function () {
  // メンバー検索
Kim Peace committed
6
  ChatAddUser.bindMemberSearch();
7
  // iOSキーボード変換検知用
Kim Peace committed
8
  ChatAddUser.bindiOSKeyBoardEvent();
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

  $("#chat_add_user .search_form .cancel").click(function () {
    let roomListTitle = getLocalizedString("inviteUsersSubtitle");
    $("#addUserTitle").text(roomListTitle);
  });
});

// ユーザー検索
ChatAddUser.searchUser = function (keyword) {
  const isAllGroup = $("#tabAllGroupOnAddUser").is(":checked");
  const overlayMessage = $(".overlay_src_msg");
  let hasNoData = false;
  overlayMessage.empty();

  //全グループ検索画面
  if (isAllGroup) {
    //グループデータ検索
    const groupList = NativeBridgeDataSource.getGroupByName(keyword);
Kim Peace committed
27
    ChatAddUser.searchGroupData(groupList, overlayMessage);
28 29

    //ユーザデータ検索
Kim Peace committed
30
    const userList =
31
      NativeBridgeDataSource.getAllGroupShopMemberNotInRoomByName(keyword);
Kim Peace committed
32
    ChatAddUser.searchUserData(userList, overlayMessage);
33 34 35 36
    hasNoData = userList.length == 0 && groupList.length == 0;

    //連絡先画面
  } else {
Kim Peace committed
37
    const userList =
38 39 40 41 42 43 44 45 46 47 48 49 50
      NativeBridgeDataSource.getMyGroupShopMemberNotInRoomByName(keyword);
    searchUserData(userList, overlayMessage);
    hasNoData = userList.length == 0;
  }
  // Set NoResult
  if (hasNoData) {
    const noResultMessage = getNoResultMessage();
    overlayMessage.append(noResultMessage);
  }
};

/** UTILS */

Kim Peace committed
51
ChatAddUser.bindMemberSearch = function () {
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
  const searchInput = $('#chat_add_user .search_form input[type="search"]');
  searchInput.click(function (e) {
    //画面タイトル設定
    let contactListTitle = getLocalizedString("userSearch");
    $("#addUserTitle").text(contactListTitle);
  });

  searchInput.keyup(function (e) {
    const keyword = searchInput.val();
    const enterKeyPressed = e.key == "Enter" || e.KeyCode == 13;
    const keywordNotEmpty = keyword != "" && keyword.length != 0;
    const keywordEmpty = keyword == "" || keyword.length < 2;

    if (enterKeyPressed) {
      if (keywordNotEmpty) {
        searchInput.blur();
        return false;
      }
    } else if (keywordEmpty) {
      $(".overlay_src_msg").empty();
      return false;
    }

    ChatAddUser.searchUser(keyword);

    if (enterKeyPressed) {
      searchInput.blur();
      return;
    }
  });
};

Kim Peace committed
84
ChatAddUser.bindiOSKeyBoardEvent = function () {
85 86 87 88 89 90 91 92 93
  const searchInput = $('#chat_add_user .search_form input[type="search"]');
  searchInput.on("compositionend", function () {
    if (deviceInfo.isiOS()) {
      var keyword = searchInput.val();
      ChatAddUser.searchUser(keyword);
    }
  });
};

Kim Peace committed
94
ChatAddUser.searchGroupData = function (groupList, overlayMessage) {
95 96 97 98 99 100 101 102 103 104 105 106 107 108
  const groupTemplate = getTemplate(TemplateURL.MAKE_ROOM_GROUP_LIST);

  groupList.forEach(function (group) {
    let html = renderGroupTemplate(
      groupTemplate,
      group.groupName,
      group.groupId
    );

    let obj = jQuery.parseHTML(html);
    overlayMessage.append(obj);
  });
};

Kim Peace committed
109
ChatAddUser.renderGroupTemplate = function (groupTemplate, groupName, groupID) {
110 111 112 113 114 115
  return Mustache.render(groupTemplate, {
    name: groupName,
    id: groupID,
  });
};

Kim Peace committed
116
ChatAddUser.searchUserData = function (userList, overlayMessage) {
117 118
  const userTemplate = getTemplate(TemplateURL.MAKE_ROOM_USER_LIST);
  userList.forEach(function (user) {
Kim Peace committed
119 120
    ChatAddUser.setUserProfile(user);
    ChatAddUser.checkUser(user);
121
  });
Kim Peace committed
122
  let html = ChatAddUser.renderUserTemplate(userTemplate, userList);
123 124 125 126
  let obj = jQuery.parseHTML(html);
  overlayMessage.append(obj);
};

Kim Peace committed
127
ChatAddUser.setUserProfile = function (user) {
128 129 130
  user.profileUrl = Common.getProfileImgUrl(user.profileUrl);
};

Kim Peace committed
131
ChatAddUser.checkUser = function (user) {
132
  let findObj = ChatManagementCommon.selectedUserList.find(function (
Kim Peace committed
133
    shopMemberID
134
  ) {
Kim Peace committed
135
    return shopMemberID == user.shopMemberId;
136 137 138 139 140 141
  });
  if (findObj) {
    user.checked = "checked";
  }
};

Kim Peace committed
142
ChatAddUser.renderUserTemplate = function (userTemplate, userList) {
143 144 145 146 147 148
  return Mustache.render(userTemplate, {
    userList: userList,
  });
};

$("#addUserConfirmBtn").on("click", function (e) {
149
  const selectedUserList = ChatManagementCommon.selectedUserList.join(",");
150 151 152 153 154
  NativeBridgeDelegate.saveSelectedUserList(selectedUserList);
  $("#addUserForm").submit();
});

$("#tabAllGroupOnAddUser").on("click", function (e) {
155
  ChatAddUser.refreshAllGroupForAddUser("0");
156 157 158
});

$("#tabMyGroupOnAddUser").on("click", function (e) {
159
  ChatAddUser.refreshMyGroupForAddUser();
160 161
});

162
ChatAddUser.refreshMyGroupForAddUser = function () {
163 164 165 166 167 168 169 170 171
  $(".modal-backdrop").remove();
  $("#favoriteListForMakeRoom").html("");
  $("#myGroupListForMakeRoom").html("");
  //画面タイトル設定
  let contactListTitle = getLocalizedString("userSearch");
  $("#title").text(contactListTitle);

  NativeBridgeDelegate.updateContactInfo();

172 173 174 175 176 177 178 179 180 181 182 183 184
  // お気に入りグループ表示
  ChatAddUser.appendFavoriteGroup();
  // お気に入りユーザー表示
  ChatAddUser.appendFavoriteUser();
  // マイグループ表示
  ChatAddUser.appendMyGroupList();
};

ChatAddUser.appendFavoriteGroup = function () {
  // グループの様式を読み込む
  const groupTemplate = getTemplate(TemplateURL.ADD_USER_GROUP_LIST);
  // お気に入りグループ取得。
  const favoriteGroupList = NativeBridgeDataSource.getFavoriteGroups();
185 186 187 188 189 190 191 192 193
  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);
  });
194 195 196 197 198
};

ChatAddUser.appendFavoriteUser = function () {
  // ユーザの様式を読み込む
  const userTemplate = getTemplate(TemplateURL.ADD_USER_USER_LIST);
199
  //お気に入りユーザ取得。
200
  const favoriteUserList = NativeBridgeDataSource.getFavoriteUsersNotInRoom();
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
  favoriteUserList.forEach(function (favoriteUser) {
    favoriteUser.profileUrl = Common.getProfileImgUrl(favoriteUser.profileUrl);
    let findObj = ChatManagementCommon.selectedUserList.find(function (
      shopMemberId
    ) {
      return shopMemberId == favoriteUser.shopMemberId;
    });
    if (findObj) {
      favoriteUser.checked = "checked";
    }
  });
  let html = Mustache.render(userTemplate, {
    userList: favoriteUserList,
  });
  let obj = jQuery.parseHTML(html);
  $("#favoriteListForMakeRoom").append(obj);
217
};
218

219 220 221
ChatAddUser.appendMyGroupList = function () {
  const groupUserTemplate = getTemplate(TemplateURL.ADD_USER_GROUP_USER_LIST);
  const myGroupList = NativeBridgeDataSource.getMyGroupUsersNotInRoom();
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
  myGroupList.forEach(function (myGroup) {
    myGroup.groupUserList.forEach(function (groupUser) {
      groupUser.profileUrl = Common.getProfileImgUrl(groupUser.profileUrl);
      let findObj = ChatManagementCommon.selectedUserList.find(function (
        shopMemberId
      ) {
        return shopMemberId == groupUser.shopMemberId;
      });
      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);
  });
};

244
ChatAddUser.refreshAllGroupForAddUser = function (paramGroupId) {
245 246 247 248 249 250 251
  $(".cancel").addClass("none");
  $(".search_form input").removeClass("focus");
  $(".search_form input").val("");
  $(".search_form form").removeClass();
  $(".content").removeClass("none");
  $(".overlay_src_msg").empty();
  $("#tabAllGroupOnAddUser").prop("checked", true);
252
  let groupId = paramGroupId;
253 254 255 256
  //オンライン状態であればサーバから情報更新。
  NativeBridgeDelegate.updateGroupInfo(groupId);

  //画面エリアを初期化。
Kim Peace committed
257
  ChatAddUser.initialzScreen();
258 259

  //DBからグループ情報を取得。
260
  const result = NativeBridgeDataSource.getGroupInfoForAddUser(groupId);
261 262 263 264

  //上位グループ、トップグループ遷移ボタンのイベント追加。
  if (typeof result.parentGroupId !== "undefined") {
    $("#parentGroupBtnForAddUser").on("click", function () {
265
      ChatAddUser.refreshAllGroupForAddUser(result.parentGroupId);
266 267
    });
  }
268

269 270 271 272 273
  if (typeof result.rootGroupId !== "undefined") {
    if (paramGroupId == 0) {
      groupId = result.rootGroupId;
    }
    $("#rootGroupBtnForAddUser").on("click", function () {
274
      ChatAddUser.refreshAllGroupForAddUser(result.rootGroupId);
275 276
    });
  }
277

278 279 280 281 282 283 284
  if (groupId == result.rootGroupId || paramGroupId == "0") {
    $("#rootGroupArea").addClass("none");
    $("#parentGroupArea").addClass("none");
  } else {
    $("#rootGroupArea").removeClass("none");
    $("#parentGroupArea").removeClass("none");
  }
285

286
  //該当グループのパースを表示。
Kim Peace committed
287
  ChatAddUser.appendGroupPath(result.groupPathList);
288 289

  //該当グループの下位グループ表示。
Kim Peace committed
290
  ChatAddUser.appendGroupInGroup(result.childGroupList);
291 292

  //該当グループの所属ユーザを表示。
Kim Peace committed
293
  ChatAddUser.appendUserInGroup(result.groupUserList);
294 295
};

Kim Peace committed
296
ChatAddUser.initialzScreen = function () {
297 298 299 300 301 302 303
  $("#parentGroupBtnForAddUser").off();
  $("#rootGroupBtnForAddUser").off();
  $("#childGroupListAreaForAddUser").html("");
  $("#userInGroupListForAddUser").html("");
  $("#groupPathAreaForAddUser").html("");
};

Kim Peace committed
304
ChatAddUser.appendGroupPath = function (groupPathList) {
305 306 307 308
  const groupPathTemplate = getTemplate(TemplateURL.ADD_USER_GROUP_PATH);
  let groupPathCount = 0;
  groupPathList.forEach(function (groupPath) {
    if (!(groupPathCount < groupPathList.length - 3)) {
309 310 311 312 313 314 315 316 317
      let html = Mustache.render(groupPathTemplate, {
        name: groupPath.groupName,
        id: groupPath.groupId,
      });
      let obj = jQuery.parseHTML(html);
      $("#groupPathAreaForAddUser").append(obj);
    }
    groupPathCount++;
  });
318
};
319

Kim Peace committed
320
ChatAddUser.appendGroupInGroup = function (childGroupList) {
321
  const groupTemplate = getTemplate(TemplateURL.ADD_USER_GROUP_LIST);
322

323
  childGroupList.forEach(function (childGroup) {
324 325 326 327 328 329 330 331
    let html = Mustache.render(groupTemplate, {
      name: childGroup.groupName,
      id: childGroup.groupId,
    });

    let obj = $(jQuery.parseHTML(html)).on("click", function () {});
    $("#childGroupListAreaForAddUser").append(obj);
  });
332
};
333

Kim Peace committed
334
ChatAddUser.appendUserInGroup = function (groupUserList) {
335
  const userTemplate = getTemplate(TemplateURL.ADD_USER_USER_LIST);
336
  groupUserList.forEach(function (groupUser) {
337 338
    groupUser.profileUrl = Common.getProfileImgUrl(groupUser.profileUrl);
    let findObj = ChatManagementCommon.selectedUserList.find(function (
Kim Peace committed
339
      shopMemberID
340
    ) {
Kim Peace committed
341
      return shopMemberID == groupUser.shopMemberId;
342 343 344 345 346 347
    });
    if (findObj) {
      groupUser.checked = "checked";
    }
  });
  let html = Mustache.render(userTemplate, {
348
    userList: groupUserList,
349 350 351 352
  });
  let obj = jQuery.parseHTML(html);
  $("#userInGroupListForAddUser").append(obj);
};