MediaWiki:Gadget-charFilter.js

来自PRTS
跳到导航 跳到搜索

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
"use strict";

$().ready(function () {
  var w; //worker

  window['filterResult'] = [];
  var datalist = [];
  $('.smwdata').each(function (index, element) {
    var o = {};

    for (var k in element.dataset) {
      o[k] = element.dataset[k];
    }

    o.tag = o.tag.split(' ');
    o.race = o.race.split('/');
    o.approach = o.approach.split(', ');
    datalist.push(o);
    element.remove();
  });
  console.log(datalist);
  $('#list-filter-url-title>a').attr('data-clipboard-text', $('#list-filter-url').html());
  U2D();
  $('.iF-select-all').on('click', function () {
    $(this).parent().parents('td').find(':not(#and *,#and) input').prop("checked", true);
    apply_filters({
      currentTarget: null
    });
  });
  $('.iF-select-none').on('click', function () {
    $(this).parent().parents('td').find(':not(#and *,#and) input').prop("checked", false);
    apply_filters({
      currentTarget: null
    });
  });
  $('.charFilter').find('input').on('change', apply_filters);
  $('#filter_search').on('input', apply_filters);
  $('#PrevPage').on('click', setPage);
  $('#NextPage').on('click', setPage);
  $('#per-page').on('change', setLength);
  $('#cur-page').on('change', setPage);
  $('#cancel').on('click', function () {
    w.terminate();
    $('#process').html('0%');
    $('#worker').css('display', 'none');
    $('#filter-wrapper').find('input,button').prop('disabled', null);
    $('#result-table').css('display', 'none');
    $('.calc-row').remove();
    $('#no-result').remove();
    $('#filter_result').css('display', 'none');
    $('#calc-result').css('display', 'table');
    $('#page-info-div').css('display', 'none');
    $('#calc-result-header').after('<tr id="no-result"><td colspan="2">无结果</td></tr>');
  });
  var urlData = JSON.parse('{"lhData": ["0/0b/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_lh_0%2C1%2C2.png", "0/0b/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_lh_0%2C1%2C2.png", "0/0b/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_lh_0%2C1%2C2.png", "a/a5/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_lh_3.png", "9/9e/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_lh_4.png", "a/a5/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_lh_5.png"], "uhData": ["6/68/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_uh_0.png", "d/d7/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_uh_1.png", "6/69/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_uh_2.png", "e/e5/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_uh_3.png", "9/92/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_uh_4.png", "4/45/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_uh_5.png"], "lightData": ["a/a7/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E7%A8%80%E6%9C%89%E5%BA%A6_%E4%BA%AE%E5%85%89_0.png", "9/9c/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E7%A8%80%E6%9C%89%E5%BA%A6_%E4%BA%AE%E5%85%89_1.png", "b/b0/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E7%A8%80%E6%9C%89%E5%BA%A6_%E4%BA%AE%E5%85%89_2.png", "0/0d/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E7%A8%80%E6%9C%89%E5%BA%A6_%E4%BA%AE%E5%85%89_3.png", "f/f7/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E7%A8%80%E6%9C%89%E5%BA%A6_%E4%BA%AE%E5%85%89_4.png", "1/19/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E7%A8%80%E6%9C%89%E5%BA%A6_%E4%BA%AE%E5%85%89_5.png"], "bgData": ["2/25/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E8%83%8C%E6%99%AF_0%2C1%2C2.png", "2/25/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E8%83%8C%E6%99%AF_0%2C1%2C2.png", "2/25/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E8%83%8C%E6%99%AF_0%2C1%2C2.png", "b/b1/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E8%83%8C%E6%99%AF_3.png", "a/ad/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E8%83%8C%E6%99%AF_4.png", "c/c9/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_%E8%83%8C%E6%99%AF_5.png"], "rarityData": ["6/62/%E7%A8%80%E6%9C%89%E5%BA%A6_%E9%BB%84_0.png", "0/02/%E7%A8%80%E6%9C%89%E5%BA%A6_%E9%BB%84_1.png", "4/4b/%E7%A8%80%E6%9C%89%E5%BA%A6_%E9%BB%84_2.png", "4/4c/%E7%A8%80%E6%9C%89%E5%BA%A6_%E9%BB%84_3.png", "8/81/%E7%A8%80%E6%9C%89%E5%BA%A6_%E9%BB%84_4.png", "4/46/%E7%A8%80%E6%9C%89%E5%BA%A6_%E9%BB%84_5.png"], "classData": {"先锋": "7/78/%E5%9B%BE%E6%A0%87_%E8%81%8C%E4%B8%9A_%E5%85%88%E9%94%8B.png", "医疗": "b/be/%E5%9B%BE%E6%A0%87_%E8%81%8C%E4%B8%9A_%E5%8C%BB%E7%96%97.png", "术师": "2/23/%E5%9B%BE%E6%A0%87_%E8%81%8C%E4%B8%9A_%E6%9C%AF%E5%B8%88.png", "特种": "f/f1/%E5%9B%BE%E6%A0%87_%E8%81%8C%E4%B8%9A_%E7%89%B9%E7%A7%8D.png", "狙击": "9/96/%E5%9B%BE%E6%A0%87_%E8%81%8C%E4%B8%9A_%E7%8B%99%E5%87%BB.png", "辅助": "c/c7/%E5%9B%BE%E6%A0%87_%E8%81%8C%E4%B8%9A_%E8%BE%85%E5%8A%A9.png", "近卫": "7/7d/%E5%9B%BE%E6%A0%87_%E8%81%8C%E4%B8%9A_%E8%BF%91%E5%8D%AB.png", "重装": "3/3c/%E5%9B%BE%E6%A0%87_%E8%81%8C%E4%B8%9A_%E9%87%8D%E8%A3%85.png"}}');
  apply_filters({
    currentTarget: $('#mode').find('input:checked')[0]
  });

  function apply_filters(e) {
    if ($(e.currentTarget).data('f') == 'calc') {
      $('.hr-options').css('display', 'table-row');
      $('.six-dimension').css('display', 'none');
      $('.six-dimension').find('input').prop('checked', false);
      $('.team').css('display', 'none');
      $('.team').find('input').prop('checked', false);
      $('.approach').find('input').prop('checked', false);
      $($('.approach').find('input')[0]).prop('checked', true);
      $('.approach').css('display', 'none');
      $('.rarity').css('display', 'none');
      $('.rarity').find('input').prop('checked', false);
      $($('.filter-sort').find('input')[3]).prop('checked', true);
      $("#and > div.checkBoxWrapper > div > label > input[type=checkbox]").prop('disabled', 1);
      $('.sex').css('display', 'none');
      $('#and_button').css('opacity', '0');
    }

    if ($(e.currentTarget).data('f') == 'filter') {
      $('.hr-options').css('display', 'none');
      $('.hr-options').find('input').prop('checked', false);
      $('.six-dimension').css('display', 'table');
      $('.team').css('display', 'table');
      $('.approach').css('display', 'table-row');
      $('.approach').find('input').prop('checked', false);
      $('.rarity').css('display', 'table-row');
      $("#and > div.checkBoxWrapper > div > label > input[type=checkbox]").prop('disabled', null);
      $('.sex').css('display', 'table-row');
      $('#and_button').css('opacity', '1');
    }

    var fil = [];
    $('.charFilter').find('td').each(function (index, element) {
      var temp = [];
      $(element).find('input').each(function (i, e) {
        if ($(e).prop('checked')) {
          $(e).data('f').toString().split(',').forEach(function (s) {
            temp.push(s);
          });
        }
      });
      fil.push(temp);

      if (temp.length === 0 || temp.length === 1 && temp[0] === 'AND') {
        $(element).parent().removeClass('enabled');
        $(element).parent().addClass('disabled');
      } else {
        $(element).parent().removeClass('disabled');
        $(element).parent().addClass('enabled');
      }
    });
    fil[8] = $('#filter_search').val();
    console.log(fil);
    console.log(D2B());

    if (fil[7].includes('calc')) {
      (function () {
        var display = function display(subset) {
          subset.sort(function (a, b) {
            if (a.score !== b.score) {
              return b.score - a.score;
            } else {
              if (a["char"].length === b["char"].length) {
                return a.tags.length - b.tags.length;
              } else {
                return a["char"].length - b["char"].length;
              }
            }
          });
          $('#result-table').css('display', 'none');
          $('.calc-row').remove();
          $('#no-result').remove();
          $('#filter_result').css('display', 'none');
          $('#calc-result').css('display', 'table');
          $('#page-info-div').css('display', 'none');
          console.log(subset);
          var temp = '';
          subset.forEach(function (v, i) {
            temp += '<tr class="calc-row"><td>';
            v.tags.forEach(function (tv, ti) {
              temp += '<span class="tags">' + tv + '</span>';
            });
            temp += '</td><td>';
            v["char"].forEach(function (cv, ci) {
              if ($('#min-cb input').prop('checked')) {
                temp += '<span class="chars rarity-$">'.replace('$', datalist[cv].rarity) + datalist[cv].cn + '</span>';
              } else {
                temp += '<div class="chars rarity-$r"><img style="width:60px" class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="$path"><div style="text-align: center;">$cn</div></div>'.replace('$r', datalist[cv].rarity).replace('$path', datalist[cv].icon).replace('$cn', datalist[cv].cn);
              }
            });
            temp += '</td></tr>';
          });

          if (temp.length === 0) {
            temp = '<tr id="no-result"><td colspan="2">无结果</td></tr>';
          }

          $('#calc-result-header').after(temp);
        };

        //calc
        var t = [];
        t.push(fil[0]);
        t.push(fil[2]);
        t.push(fil[4]);

        for (var i = 0; i < fil[6].length; i++) {
          if (fil[6][i] === 'AND') {
            fil[6].splice(i, 1);
            break;
          }
        }

        t.push(fil[6]);
        var s = t.reduce(function (a, b) {
          return a.concat(b);
        }); //subset

        var subset = [];

        if (s.length > 10) {
          //webworker
          $('#worker').css('display', 'block');
          $('#filter-wrapper').find('input,button').prop('disabled', '1');
          $('#cancel').prop('disabled', null);
          /*https://prts.wiki/index.php?title=Widget:%E5%B9%B2%E5%91%98%E7%AD%9B%E9%80%89&oldid=28422*/

          w = new Worker('//media.prts.wiki/js/enlistCalc.js');
          w.postMessage({
            datalist: datalist,
            s: s,
            fil: fil
          });

          w.onmessage = function (e) {
            if (typeof e.data == 'number') {
              $('#process').html(e.data + '%');
            } else {
              subset = e.data;
              w.terminate();
              $('#process').html('0%');
              $('#worker').css('display', 'none');
              $('#filter-wrapper').find('input,button').prop('disabled', null);
              display(subset);
            }
          };
        } else {
          (function () {
            var tags = ['治疗', '支援', '输出', '群攻', '减速', '生存', '防护', '削弱', '位移', '控场', '爆发', '召唤', '快速复活', '费用回复', '支援机械'];
            var zili = ['新手', '资深干员', '高级资深干员'];
            var zhiye = ['先锋', '近卫', '狙击', '重装', '医疗', '辅助', '术师', '特种'];
            var weizhi = ['近战位', '远程位']; // let xingbie = ['男', '女'];

            var classOrder = ['先锋', '近卫', '狙击', '重装', '医疗', '辅助', '术师', '特种'];

            var _loop = function _loop(b) {
              var current = [];
              (Array(s.length).join('0') + b.toString(2)).slice(-s.length).split('').forEach(function (v, i) {
                if (v === '1') {
                  current.push(s[i]);
                }
              });
              var score = 0;
              var _char = [];
              datalist.forEach(function (dv, di) {
                var flag = true;

                if (!dv.approach.includes('公开招募')) {
                  flag = false;
                }

                current.forEach(function (tv, ti) {
                  if (tags.includes(tv)) {
                    if (!dv.tag.includes(tv)) {
                      flag = false;
                    }
                  } else if (zili.includes(tv)) {
                    if (tv === '新手' && !dv.tag.includes(tv)) {
                      flag = false;
                    }

                    if (tv === '高级资深干员' && parseInt(dv.rarity) !== 5) {
                      flag = false;
                    }

                    if (tv === '资深干员' && parseInt(dv.rarity) !== 4) {
                      flag = false;
                    }
                  } else if (zhiye.includes(tv)) {
                    if (!dv["class"].includes(tv)) {
                      flag = false;
                    }
                  } else if (weizhi.includes(tv)) {
                    if (!dv.position.includes(tv)) {
                      flag = false;
                    }
                  } else {
                    console.error(tv);
                  }
                });

                if (!current.includes('高级资深干员') && parseInt(dv.rarity) === 5) {
                  flag = false;
                }

                if (flag && current.length !== 0) {
                  score += parseInt(dv.rarity);

                  _char.push(di);
                }
              });
              score = score / _char.length;

              if (_char.length !== 0) {
                switch (fil[7][0]) {
                  case 'name_ascend':
                    _char.sort(function (a, b) {
                      return datalist[a].cn.localeCompare(datalist[b].cn, 'zh');
                    });

                    break;

                  case 'name_descend':
                    _char.sort(function (a, b) {
                      return datalist[b].cn.localeCompare(datalist[a].cn, 'zh');
                    });

                    break;

                  case 'rarity_ascend':
                    _char.sort(function (a, b) {
                      return datalist[a].cn.localeCompare(datalist[b].cn, 'zh');
                    });

                    _char.sort(function (a, b) {
                      return classOrder.indexOf(datalist[a]['class']) - classOrder.indexOf(datalist[b]['class']);
                    });

                    _char.sort(function (a, b) {
                      return datalist[a]['rarity'] - datalist[b]['rarity'];
                    });

                    break;

                  case 'rarity_descend':
                    _char.sort(function (a, b) {
                      return datalist[a].cn.localeCompare(datalist[b].cn, 'zh');
                    });

                    _char.sort(function (a, b) {
                      return classOrder.indexOf(datalist[a]['class']) - classOrder.indexOf(datalist[b]['class']);
                    });

                    _char.sort(function (a, b) {
                      return datalist[b]['rarity'] - datalist[a]['rarity'];
                    });

                    break;

                  case 'id_descend':
                    result.sort(function (a, b) {
                      return datalist[b]['sort_id'] - datalist[a]['sort_id'];
                    });
                    break;
                }

                subset.push({
                  tags: current,
                  "char": _char,
                  score: score
                });
              }
            };

            for (var b = 0; b < 1 << s.length; b++) {
              _loop(b);
            }

            display(subset);
          })();
        }
      })();
    } else {
      /**
       * @return {boolean}
       */
      var NotMatch = function NotMatch(index, prop, i) {
        if (fil[index].length !== 0 && !fil[index].includes(datalist[i][prop])) {
          return true;
        }
      };

      var _result = [];

      var _loop2 = function _loop2(i) {
        if (NotMatch(0, 'class', i)) {
          return "continue";
        }

        if (NotMatch(1, 'rarity', i)) {
          return "continue";
        }

        if (NotMatch(2, 'position', i)) {
          return "continue";
        }

        if (NotMatch(3, 'sex', i)) {
          return "continue";
        }

        if (fil[4].length !== 0) {
          var flag = true;

          if (fil[4].includes('新手')) {
            if (datalist[i].tag.includes('新手')) {
              flag = false;
            }
          }

          if (fil[4].includes('资深干员')) {
            if (parseInt(datalist[i].rarity) === 4) {
              flag = false;
            }
          }

          if (fil[4].includes('高级资深干员')) {
            if (parseInt(datalist[i].rarity) === 5) {
              flag = false;
            }
          }

          if (flag) {
            return "continue";
          }
        }

        if (fil[5].find(function (v) {
          return datalist[i].approach.find(function (value) {
            return value === v;
          }) !== undefined;
        }) === undefined && fil[5].length !== 0) {
          return "continue";
        }

        if (fil[6].includes('AND')) {
          var _flag = false;

          for (var t in fil[6]) {
            if (fil[6][t] === 'AND') {
              continue;
            }

            if (!datalist[i].tag.includes(fil[6][t])) {
              _flag = true;
              break;
            }
          }

          if (_flag) {
            return "continue";
          }
        } else {
          if (fil[6].find(function (v) {
            return datalist[i].tag.find(function (value) {
              return value === v;
            }) !== undefined;
          }) === undefined && fil[6].length !== 0) {
            return "continue";
          }
        }

        if (NotMatch(9, 'str', i)) {
          return "continue";
        }

        if (NotMatch(10, 'flex', i)) {
          return "continue";
        }

        if (NotMatch(11, 'tolerance', i)) {
          return "continue";
        }

        if (NotMatch(12, 'plan', i)) {
          return "continue";
        }

        if (NotMatch(13, 'skill', i)) {
          return "continue";
        }

        if (NotMatch(14, 'adapt', i)) {
          return "continue";
        }

        if (NotMatch(15, 'nation', i) && NotMatch(15, 'group', i) && NotMatch(15, 'team', i)) {
          return "continue";
        }

        // if (NotMatch(15, 'camp', i)) {
        //   return "continue";
        // }

        if (NotMatch(16, 'birthplace', i)) {
          return "continue";
        }

        // if (NotMatch(17, 'team', i)) {
        //   return "continue";
        // }

        if (fil[17].find(function (v) {
          return datalist[i].race.find(function (value) {
            return value === v;
          }) !== undefined;
        }) === undefined && fil[17].length !== 0) {
          return "continue";
        }

        if (datalist[i].cn.toLowerCase().indexOf(fil[8].toLowerCase()) === -1 && datalist[i].en.toLowerCase().indexOf(fil[8].toLowerCase()) === -1 && datalist[i].jp.toLowerCase().indexOf(fil[8].toLowerCase()) === -1 && datalist[i].des.toLowerCase().indexOf(fil[8].toLowerCase()) === -1 && datalist[i].moredes.toLowerCase().indexOf(fil[8].toLowerCase()) === -1 && datalist[i].feature.toLowerCase().indexOf(fil[8].toLowerCase()) === -1) {
          return "continue";
        }

        _result.push(datalist[i]);
      };

      for (var i = 0; i < datalist.length; i++) {
        var _ret = _loop2(i);

        if (_ret === "continue") continue;
      }

      var compare = ['?', 'S', 'A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D'];
      var classOrder = ['先锋', '近卫', '狙击', '重装', '医疗', '辅助', '术师', '特种'];

      switch (fil[7][0]) {
        case 'name_ascend':
          _result.sort(function (a, b) {
            return a.cn.localeCompare(b.cn, 'zh');
          });

          break;

        case 'name_descend':
          _result.sort(function (a, b) {
            return b.cn.localeCompare(a.cn, 'zh');
          });

          break;

        case 'rarity_ascend':
          _result.sort(function (a, b) {
            return a.cn.localeCompare(b.cn, 'zh');
          });

          _result.sort(function (a, b) {
            return classOrder.indexOf(a['class']) - classOrder.indexOf(b['class']);
          });

          _result.sort(function (a, b) {
            return a['rarity'] - b['rarity'];
          });

          break;

        case 'rarity_descend':
          _result.sort(function (a, b) {
            return a.cn.localeCompare(b.cn, 'zh');
          });

          _result.sort(function (a, b) {
            return classOrder.indexOf(a['class']) - classOrder.indexOf(b['class']);
          });

          _result.sort(function (a, b) {
            return b['rarity'] - a['rarity'];
          });

          break;

        case 'id_descend':
          _result.sort(function (a, b) {
            return b['sort_id'] - a['sort_id'];
          });

          break;
      }

      console.log(_result);
      window['filterResult'] = _result;
      $('#PageInfo').html('共' + _result.length + '条数据');
      setLength();
    }
  }

  function setLength() {
    var size = $('#per-page').val();
    var temp = '';

    for (var i = 0; i < Math.floor(window['filterResult'].length / size) + 1; i++) {
      temp += '<option>' + (i + 1) + '</option>';
    }

    $('#cur-page').html(temp); //console.log(size);
    //console.log(curPage);

    setPage();
  }

  function setPage(event) {
    var $curpage = $('#cur-page');

    if (event) {
      console.log(event.currentTarget.id);

      switch (event.currentTarget.id) {
        case "cur-page":
          console.log($curpage.val());
          break;

        case "NextPage":
          $curpage.val(parseInt($curpage.val()) + 1);
          break;

        case "PrevPage":
          $curpage.val(parseInt($curpage.val()) - 1);
          break;
      }
    }

    if ($curpage.children().length === $curpage.val()) {
      $('#NextPage').css('visibility', 'hidden');
    } else {
      $('#NextPage').css('visibility', 'visible');
    }

    if ("1" === $curpage.val()) {
      $('#PrevPage').css('visibility', 'hidden');
    } else {
      $('#PrevPage').css('visibility', 'visible');
    }

    var temp = '';
    var result = window['filterResult'];
    var size = $('#per-page').val();
    var index = $curpage.val() - 1;

    for (var i = index * size; i < result.length && i < (index + 1) * size; i++) {
      temp += buildRow(result[i]);
    }

    $('#page-info-div').css('display', 'block');
    $('#calc-result').css('display', 'none');

    if ($('#min-cb input').prop('checked')) {
      $('#result-table').css('display', 'none');
      $('.result-row').remove();

      if (temp.length === 0) {
        temp = '<div style="text-align: center;">无结果</div>';
      }

      $('#filter_result').css('display', 'block').html(temp);
      $('.char-icon-wrapper').addClass('min-mode');
    } else {
      $('#result-table').css('display', 'table');
      $('#filter_result').css('display', 'none').html("");

      if (temp.length === 0) {
        temp = '<tr class="result-row><td colspan="9">无结果</td></tr>';
      }

      $('.result-row').remove();
      $('.result-header').after(temp);
      $('.char-icon-wrapper').removeClass('min-mode');
    }
  }

  function buildRow(_char2) {
    if ($('#min-cb input').prop('checked')) {
      return '<div class="char"><a href="/w/$CN"><div class="uh"><img src="$UH" width="70px"></div><div class="uhs"><img src="//media.prts.wiki/7/7f/%E5%B9%B2%E5%91%98%E5%9B%BE%E9%89%B4_uh_%E9%98%B4%E5%BD%B1.png" width="70px"></div><div class="class"><img src="$CLASS" width="25px"></div><div class="rarity"><img src="$RARITY" height="18px"></div><div class="lh"><img src="$LH" width="120px"></div><div class="light"><img src="$LIGHT" width="110px"></div><div class="bg"><img src="$BACKGROUND" width="110px"></div><div class="svt"><img class="lazyload" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="$SVT" width="110px"></div><div class="patch"><img src="//media.prts.wiki/2/20/干员图鉴_补丁.png" width="80px" height="30px"></div><div class="camp"><img src="$CAMP" width="50px"></div><div class="cn">$CN</div><div class="en">$EN</div></div>'.replace('$UH', '//media.prts.wiki/' + urlData.uhData[parseInt(_char2.rarity)]).replace('$LH', '//media.prts.wiki/' + urlData.lhData[parseInt(_char2.rarity)]).replace('$LIGHT', '//media.prts.wiki/' + urlData.lightData[parseInt(_char2.rarity)]).replace('$BACKGROUND', '//media.prts.wiki/' + urlData.bgData[parseInt(_char2.rarity)]).replace('$RARITY', '//media.prts.wiki/' + urlData.rarityData[parseInt(_char2.rarity)]).replace('$CAMP', get_filepath("Logo_" + _char2.camp + ".png")).replace('$SVT', _char2.half).replace('$CLASS', '//media.prts.wiki/' + urlData.classData[_char2["class"]]).replace('$EN', _char2.en).replace(/\$CN/g, _char2.cn);
    } else {
      return '<tr class="result-row"><td><div style="position:relative"><a href="/w/$cn"><img class="lazyload" style="width:100px" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="$icon"><div style="position:absolute;bottom:0px;right: 0px;"><img src="$rarity"height="18px"></div><div style="position:absolute;top:0px;"><img src="$class" width="25px"></div></a></div></td><td><div><a href="/w/$cn"><div>$cn</div></a><div>$en</div><div>$jp</div><div>$index</div></div></td><td><div>$camp<br/>$birthplace<br/>$race</div></td><td><div>$ori-hp</div></td><td><div>$ori-atk</div></td><td><div>$ori-def</div></td><td><div>$ori-res</div></td><td><div>$ori-dt</div></td><td><div>$ori-dc</div></td><td><div>$ori-block</div></td><td><div>$ori-cd</div></td><td><div>$tags</div></td><td><div>$feature</div></td></tr>'.replace('$icon', _char2.icon).replace(/\$cn/g, _char2.cn).replace('$en', _char2.en).replace('$jp', _char2.jp ? _char2.jp : '').replace('$rarity', '//media.prts.wiki/' + urlData.rarityData[parseInt(_char2.rarity)]).replace('$class', '//media.prts.wiki/' + urlData.classData[_char2["class"]]).replace('$ori-hp', _char2.oriHp).replace('$ori-atk', _char2.oriAtk).replace('$ori-def', _char2.oriDef).replace('$ori-res', _char2.oriRes).replace('$ori-dt', _char2.oriDt.split('→')[0]).replace('$ori-dc', _char2.oriDc.split('→')[0]).replace('$ori-block', _char2.oriBlock.split('→')[0]).replace('$ori-cd', _char2.oriCd.split('→')[0]).replace('$feature', _char2.feature.replace(/_\$lt_/g, '<').replace(/_\$gt_/g, '>')).replace('$tags', _char2.position + '<br/>' + _char2.sex + '性干员<br/>' + _char2.tag.join('<br/>')).replace('$camp', _char2.camp).replace('$race', _char2.race.join('/')).replace('$index', _char2.index.trim()).replace('$birthplace', _char2.birthplace);
    }
  }

  function D2B() {
    var str = '';
    var arr = [];
    $('.charFilter').find('input[type=checkbox],input[type=button],input[type=radio]').each(function (i, e) {
      if (str.length === 6) {
        arr.push(str);
        str = '';
      }

      if ($(e).prop('checked')) {
        str += 1;
      } else {
        str += 0;
      }
    });
    arr.push(str);

    while (arr[arr.length - 1].length !== 6) {
      arr[arr.length - 1] += 0;
    }

    console.log(arr);
    var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,";
    var result = '';

    for (var i = 0; i < arr.length; i++) {
      result += _keyStr.charAt(parseInt(arr[i], 2));
    }

    var $filter_search = $('#filter_search');
    var search = $filter_search.val().length === 0 ? '' : '&s=' + encodeURI($filter_search.val());
    $('#list-filter-url').html('https://prts.wiki/w/CHAR?filter=' + result + search);
    $('#list-filter-url-title>a').attr('data-clipboard-text', 'https://prts.wiki/w/CHAR?filter=' + result + search);
  }

  function U2D() {
    var uri = new URLSearchParams(window.location.search);
    var u = uri.get('filter');
    var s = uri.get('s');

    if (!u) {
      return;
    }

    var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,";
    var result = '';

    for (var i = 0; i < u.length; i++) {
      var temp = _keyStr.indexOf(u[i]).toString(2);

      while (temp.length !== 6) {
        temp = '0' + temp;
      }

      result += temp;
    }

    console.log(result);
    $('.charFilter').find('input[type=checkbox],input[type=button],input[type=radio]').each(function (i, e) {
      if (result.charAt(i) === '1') {
        $(e).prop('checked', true);
      } else {
        $(e).prop('checked', false);
      }
    });

    if (s) {
      $('#filter_search').val(s);
    }
  }

  function copyURL(e) {
    if (!clip_board) return;
    var copyText = document.getElementById("list-filter-url").innerHTML.replace(/&amp;/g, "&");
    e.currentTarget.setAttribute("data-clipboard-text", copyText);
    alert("链接已复制: " + copyText);
  }
  function get_filepath(fname)
	{
		var d = CryptoJS.MD5(fname).toString();
		d = "//media.prts.wiki/" + d.substr(0,1) + "/" + d.substr(0,2) + "/" + fname;
		return d;
	}
});