Advertisement
Denkoko

test

Jun 17th, 2020
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var TeamLists = {};
  2. var AllTeams = {};
  3. var CurrentTeamList = null;
  4. var CurrentTeamListName;
  5. var defaultIconSrc = "https://implyingrigged.info/w/images/d/df/Vglg_icon.png";
  6. var scrollingToTeam = false;
  7.  
  8. function setTeamList(teamList){
  9. var teamListName = "";
  10. if(typeof(teamList) === 'string'){
  11. teamListName = teamList;
  12. teamList = TeamLists[teamList];
  13. }
  14.  
  15. if(teamList === CurrentTeamList)
  16. return;
  17.  
  18. if(typeof(UserCustomTeamList) !== 'undefined')
  19. teamList = teamList.concat(UserCustomTeamList);
  20.  
  21. var tmpTeamsCssLines = [ '<style type="text/css" id="iconcss_tmp">' ];
  22. var selector = $('#teamcolor');
  23. selector.html('<option></option>');
  24. selector.removeClass("teamlist_" + CurrentTeamListName);
  25. selector.addClass("teamlist_" + teamListName);
  26. $("#messagebuffer").removeClass("teamlist_" + CurrentTeamListName);
  27. $("#messagebuffer").addClass("teamlist_" + teamListName);
  28.  
  29. var newSelector = $("#selectteam ul");
  30. newSelector.html('<li tabindex="0" data-val=""><img src="' + defaultIconSrc + '"></li>');
  31.  
  32. var selectedColorInList = false;
  33. var addOption = function(teamObj){
  34. if(!teamObj.ExclusiveTo || teamObj.ExclusiveTo == CLIENT.name){
  35. selector.append('<option value="' + teamObj.id + '">' + teamObj.name + '</option>');
  36. newSelector.append('<li tabindex="0" data-val="' + teamObj.id + '"><img src="' + teamObj.icon + '"><p>' + teamObj.name + '</p></li>');
  37.  
  38. selectedColorInList = selectedColorInList || teamObj.id === TEAMCOLOR;
  39. }
  40. };
  41. teamList.forEach(function(team){
  42. if(typeof(team) === 'string' && AllTeams.hasOwnProperty(team)){
  43. addOption(AllTeams[team]);
  44. }
  45. else if(typeof(team) === 'object'){
  46. if(!AllTeams.hasOwnProperty(team.id)){
  47. InitTeam(team);
  48. tmpTeamsCssLines.push(team.css);
  49. }
  50. addOption(team);
  51. }
  52.  
  53. });
  54.  
  55. if (tmpTeamsCssLines.length > 1){
  56. tmpTeamsCssLines.push('</style>');
  57. $('#iconcss_tmp').remove();
  58. $(document.head).append(tmpTeamsCssLines.join('\n'));
  59. }
  60.  
  61. if(selectedColorInList){
  62. selector.val(TEAMCOLOR);
  63. $("#selectteam li[data-val='"+TEAMCOLOR+"']").click();
  64. }
  65. else{
  66. selector.val("");
  67. $("#selectteam li:first").click();
  68. }
  69.  
  70. CurrentTeamList = teamList;
  71. CurrentTeamListName = teamListName;
  72. };
  73.  
  74. function InitTeamLists(){
  75. var cssLines = [
  76. '<style type="text/css" id="iconcss">'
  77. ];
  78. Object.keys(TeamLists).forEach(function(key){
  79. var list = TeamLists[key];
  80. cssLines.push("\n/* " + key + " */");
  81. list.forEach(function(team){
  82. if(typeof(team) === 'object'){
  83. InitTeam(team);
  84. cssLines.push(team.css);
  85. }
  86. });
  87. });
  88. cssLines.push('</style>');
  89.  
  90. var css = cssLines.join('\n');
  91.  
  92. $("#iconcss").remove();
  93. $(document.head).append(css);
  94.  
  95. $("#selectteam").remove();
  96. $("#chatline2").remove();
  97. $('<textarea class="form-control" id="chatline2" rows="1"></textarea>').insertAfter('#chatline');
  98. var dropup = $('<span class="dropup"></span>');
  99. var selectteam = $('<div id="selectteam"></div>').insertBefore('#chatline').append(dropup);
  100. dropup.append('<img class="dropdown-toggle" data-toggle="dropdown" title="Team Icon">');
  101. dropup.on('shown.bs.dropdown', function(){
  102. var elm = $('#selectteam li[data-val="'+TEAMCOLOR+'"]');
  103. if(elm && elm[0]){
  104. elm[0].parentNode.scrollTop = elm[0].offsetTop;
  105. elm[0].focus({preventScroll:true});
  106. }
  107. });
  108. var iconsPerRow = 11;
  109. $('<ul class="dropdown-menu"></ul>').appendTo(dropup)
  110. .on("click", "li", function(){
  111. TEAMCOLOR = this.dataset.val;
  112. setOpt(CHANNEL.name + "_TEAMCOLOR", TEAMCOLOR);
  113. if(TEAMCOLOR)
  114. $("#selectteam>span>img").attr("src", AllTeams[TEAMCOLOR].icon);
  115. else
  116. $("#selectteam>span>img").attr("src", defaultIconSrc);
  117. }).on("mouseover", "li", function(){
  118. if(!scrollingToTeam)
  119. this.focus({preventScroll:true});
  120. scrollingToTeam = false;
  121. }).on("keydown", function(event){
  122. var selected = $(document.activeElement);
  123. var elm = null;
  124. switch (event.key){
  125. case 'ArrowUp': case 'Up':
  126. if(selectteam.hasClass('grid')) {
  127. var length = selected.siblings().length;
  128. var iconsInLastRow = length % iconsPerRow;
  129. var indexAbove = selected.index() - iconsPerRow;
  130. if(iconsInLastRow != 0 && selected.index() >= (Math.floor(length / iconsPerRow) * iconsPerRow))
  131. indexAbove += Math.floor((iconsPerRow - iconsInLastRow) / 2);
  132. if(indexAbove >= 0)
  133. elm = $(selected.parent().children()[indexAbove]);
  134. } else
  135. elm = selected.prev();
  136. break;
  137. case 'ArrowDown': case 'Down':
  138. if(selectteam.hasClass('grid')) {
  139. var length = selected.siblings().length;
  140. var iconsInLastRow = length % iconsPerRow;
  141. var indexBelow = selected.index() + iconsPerRow;
  142. if(iconsInLastRow != 0 && indexBelow >= (Math.floor(length / iconsPerRow) * iconsPerRow)) {
  143. var lastRowAdjustment = Math.floor((iconsPerRow - iconsInLastRow) / 2);
  144. var indexInLastRow = indexBelow % iconsPerRow;
  145. if(indexInLastRow >= lastRowAdjustment)
  146. elm = $(selected.parent().children()[indexBelow - lastRowAdjustment]);
  147. } else if(indexBelow < selected.siblings().length)
  148. elm = $(selected.parent().children()[indexBelow]);
  149. } else
  150. elm = selected.next();
  151. break;
  152. case 'ArrowLeft': case 'Left':
  153. if(selectteam.hasClass('grid') && selected.index() % iconsPerRow != 0)
  154. elm = selected.prev();
  155. break;
  156. case 'ArrowRight': case 'Right':
  157. if(selectteam.hasClass('grid') && (selected.index()+1) % iconsPerRow != 0)
  158. elm = selected.next();
  159. break;
  160. case 'Tab':
  161. elm = event.shiftKey ? selected.prev() : selected.next();
  162. break;
  163. case 'Backspace': case 'Delete':
  164. elm = $('#selectteam li:first-child');
  165. break;
  166. case 'Enter':
  167. event.stopPropagation();
  168. if(selected.parentsUntil('#selectteam').length)
  169. selected.click();
  170. break;
  171. case 'Escape':
  172. event.stopPropagation();
  173. selectteam.children('.dropdown-toggle').click();
  174. break;
  175. default:
  176. if(event.key.length == 1){
  177. var itemSel = 'li[data-val^="'+event.key.toLowerCase()+'"]';
  178. elm = $('#selectteam li:focus~'+itemSel).first();
  179. if(!elm.length) elm = $('#selectteam '+itemSel).first();
  180. }
  181. break;
  182. }
  183. if(elm && elm[0]){
  184. event.stopPropagation();
  185. event.preventDefault();
  186. var liRect = elm[0].getBoundingClientRect();
  187. var ulRect = elm.parent()[0].getBoundingClientRect();
  188. if(liRect.top < ulRect.top || liRect.bottom > ulRect.bottom){
  189. scrollingToTeam = true;
  190. elm[0].parentNode.scrollTop = elm[0].offsetTop;
  191. }
  192. elm[0].focus({preventScroll:true});
  193. }
  194. });
  195.  
  196. }
  197.  
  198. function InitTeam(team) {
  199. if(team.icon.startsWith("/")){
  200. team.icon = "https://implyingrigged.info" + team.icon;
  201. }
  202. if(!team.hasOwnProperty('name')){
  203. team.name = '/' + team.id + '/';
  204. }
  205.  
  206. var cssSel = (team.ExclusiveTo ? ".chat-msg-" + team.ExclusiveTo + " ": "") + ".team" + team.id;
  207. team.css = cssSel+"{ color:"+team.color+"!important;} "+cssSel+"::before{ background-image:url('"+team.icon+"');}";
  208.  
  209. if(!AllTeams.hasOwnProperty(team.id))
  210. AllTeams[team.id] = team;
  211. }
  212.  
  213. var TeamLists = {
  214. "4cc":[
  215. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  216. {id:"2hug", color:"#7FAC75",icon:"/w/images/thumb/3/34/2hug_icon.png/25px-2hug_icon.png"},
  217. {id:"aceg", color:"#CE5200",icon:"/w/images/thumb/e/e5/Aceg_icon.png/25px-Aceg_icon.png"},
  218. {id:"agdg", color:"#000000",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  219. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  220. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  221. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  222. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  223. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  224. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  225. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  226. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  227. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  228. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  229. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  230. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  231. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  232. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  233. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  234. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  235. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  236. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  237. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  238. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  239. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  240. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  241. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  242. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  243. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  244. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  245. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  246. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  247. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  248. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  249. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  250. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  251. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  252. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  253. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  254. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  255. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  256. {id:"imas", color:"#F20972",icon:"/w/images/thumb/7/7a/%40_icon.png/25px-%40_icon.png"},
  257.  
  258. ]
  259. /* when somebody makes an invitational and the teams are all in a neat multi-column list on the page,
  260. inspect element > right-click > store as global variable > then in the console (edit as needed):
  261. [].slice.call(temp1.querySelectorAll('li')).map(function(li){ return { id:li.querySelector('b a').innerHTML.replace('/', '').replace('/', ''), color:'#999999', icon:li.querySelector('img').getAttribute('src') }; })
  262. */
  263. };
  264.  
  265. InitTeamLists();
  266.  
  267. if(getOrDefault(CHANNEL.name + "_SELECTTEAM_GRID", false))
  268. $('#toggleTeamSelStyle').click();
  269. var TEAMCOLOR = getOrDefault(CHANNEL.name + "_TEAMCOLOR", '');
  270. setTeamList("4cc");
  271. if (TEAMCOLOR){
  272. $('#teamcolor').val(TEAMCOLOR);
  273. $("#selectteam>span>img").attr("src", AllTeams[TEAMCOLOR].icon);
  274. }
  275. else{
  276. $("#selectteam>span>img").attr("src", defaultIconSrc);
  277. }
  278. $('#teamcolor').change(function(){
  279. TEAMCOLOR = $(this).val();
  280. setOpt(CHANNEL.name + "_TEAMCOLOR", TEAMCOLOR);
  281. });
  282.  
  283. //Format messages upon page load because they're handled differently and I can't find the function
  284. $('.teamColorSpan').each(function(){
  285. var color = $(this).text().replace(new RegExp('-','g'),'');
  286. $(this).parent().parent().find('.username').addClass(color);
  287. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement