全站通知:

Widget:雷吉斯托环上传

来自托拉姆物语WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

上传表格

           <form>
                   名字:
<input type="text" name="name" class="nameinput form-control" value="" required="required" pattern="" placeholder="输入托环的名字" title="">


                   等级上限:
                   最低1
                   <input placeholder="num" type="number" name="maxlv" class=" form-control " value="" required="required" pattern="" title="输入数字">
                   最大100
                   粉末消耗:
                   0
                   <input type="text" name="powder" class="  form-control " value="" required="required" pattern="" title="输入粉末消耗"
                       placeholder="托环升一级需要的粉末">
                   1000
                   托环类型:
                   <label>
                       <input type="radio" name="type" value="1" checked="0">
                       数值类
                   </label>
                   <label>
                       <input type="radio" name="type" value="2" checked="0">技能强化
                   </label>
                   <label>
                       <input type="radio" name="type" value="3" checked="0">技能变异
                   </label>
                   <label>
                       <input type="radio" name="type" value="4" checked="0">自身变异
                   </label>


                   效果:
                   <textarea placeholder="游戏内的介绍和实际效果" name="effect" name="effect" class="form-control" rows="3" required="required"></textarea>


                   来源地图:
                   <label>
                       <input type="checkbox" name="from" value="10" checked="0">
                       【10】 渊底的遗迹
                   </label>
                   <label>
                       <input type="checkbox" name="from" value="30" checked="0">
                       【30】 灼热山峰
                   </label>
                   <label>
                       <input type="checkbox" name="from" value="50" checked="0">
                       【50】 上古女帝陵墓
                   </label>
                   <label>
                       <input type="checkbox" name="from" value="70" checked="0">
                       【70】 砂石梯层
                   </label>
                   <label>
                       <input type="checkbox" name="from" value="90" checked="0">
                       【90】 升华 观园
                   </label>
                   <label>
                       <input type="checkbox" name="from" value="110" checked="0">
                       【110】 灼烧地沟
                   </label>
                   <label>
                       <input type="checkbox" name="from" value="130" checked="0">
                       【130】 怪物森林
                   </label>
                   <label>
                       <input type="checkbox" name="from" value="150" checked="0">
                       【150】 暗龙神殿
                   </label>
                   <label>
                       <input type="checkbox" name="from" value="170" checked="0">
                       【170】 拉比兰斯地区
                   </label>
                   <label>
                       <input type="checkbox" name="from" value="190" checked="0">
                       【190】 多西亚海岸
                   </label>
                   <label>
                       <input type="checkbox" name="from" value="210" checked="0">
                       【210】 隐匿的湖泊
                   </label>
                   <button type="button" class="btn btn-info mark" name="mark" value="0">标记为上传</button>
                   <button type="button" class="btn btn-default copry">复制</button>
                   <button type="button" class="btn btn-primary delete">移除</button>


       </form>
           <button type="button" class="btn btn-warning" onclick="submits();">提交</button>🧡


<script type="text/javascript"> function start() {

   try {
       gettoken();
   } catch (tokenerror) {
       console.log('获取token错误');
   }
   
   $(".mw-parser-output").append($(".datainput"));
   initiaControl();
   intiadoms();

} function initiaControl() {

   //初始化复制和删除自身的方法
   $(".thuploaC").on('click', '.copry', function (e) {
       console.log('复制自身', e.delegateTarget);
       let $this = $(e.delegateTarget);
       $this.after($this.clone(true));
   });
   $(".thuploaC").on('click', '.delete', function (e) {
       if ($(".thuploaC")[1] == undefined) {
           return alert('最后一个了不允许删除')
       }
       let $this = e.delegateTarget;
       console.log('删除自身',);
       $($this).remove();
   });
    //标记单位托环是否上传
    $(".thuploaC").on('click', '.mark', function (e) {
       if(this.value==0){
           this.value=1;
           this.innerText='数据错误,标记删除';
           this.className='btn btn-danger mark';
       }else{
           this.value=0;
           this.innerText='标记为上传';
           this.className='btn  btn-info m mark';
       }
   });


   //定义查找输入托环的事件响应
   $(".thuploaC ").on('input', '.nameinput', function (e) {
       let $this = $(e.delegateTarget);
       let $list = $this.find('.haslist');
       $list.empty();
       $list.append(getTresultsByname(this.value));
       $list.parent().addClass('open');
   });
   //定义选中
   $(".thuploaC ").on('click', '.haslist li', function (e) {
       let $this = $(e.delegateTarget);
       let o = Doms[this.innerText];
       $this.find('[name=name]').val(o.name)
       $this.find('[name=maxlv]').val(o.maxlv)
       $this.find('[name=powder]').val(o.powder);
       $this.find('[name=type]').filter(function () {
           return this.value == o.type;
       })[0].checked = 1;
       $this.find('[name=effect]').val(o.effect);
       $this.find('[name=from]').each(function (index, checkbox) {
           if (o.textfroms[checkbox.value] == undefined) {
               checkbox.checked = 0;
           } else {
               checkbox.checked = 1;
           }
       });;
   });

}

/**

* 通过名字查找结果
* @param {string} name 
*/

function getTresultsByname(name) {

   let arr = [];
   Doms.forEach(function (v, i) {
       if (v.name.indexOf(name) != -1) {

arr.push($(`

  • ${v.name}
  • `)); } }) return arr; } var Doms = []; Doms.flushadd = function (o) { //模型插入与刷新数据 let k = Doms[o.name]; if (k == undefined) { o.index = Doms.length; Doms.push(o); } else { o.index=k.index; Doms[k.index] = o; } Doms[o.name] = o; } const proto = { typeenum: [, '数值类', '技能强化', '改变技能效果', '自身获得新特性'], fromenum: { '10': '【10】 渊底的遗迹 ', '30': "【30】 灼热山峰 ", "50": "【50】 上古女帝陵墓", "70": "【70】 砂石梯层 ", "90": "【90】 升华 观园", "110": "【110】 灼烧地沟 ", "130": "【130】 怪物森林", "150": "【150】 暗龙神殿 ", "170": "【170】 拉比兰斯地区", "190": "【190】 多西亚海岸 ", "210": "【210】 隐匿的湖泊 " }, }; function intiadoms() { let $doms = $('.Onering '); let $names = $doms.find('.mw-headline'); $doms.each(function (index, dom) { let $dom = $(dom); let o = {//原型 name: $dom.find('.mw-headline').text(), maxlv: $dom.find('.maxlv').text(), powder: $dom.find('.powder').text(), type: $dom.find(".type").text(), effect: $dom.find('.effect').text(), from: $dom.find('.from').text(), append: $dom.find('.append').text() }; Object.setPrototypeOf(o, proto) o.texttype = o.typeenum[o.type] o.textfroms = (() => { let arr = [] o.from.split(/[\s]*[,,][\s]*/).forEach(function (text, index) { let c = o.fromenum[text]; arr.push(c); arr[text] = c; }); return arr; })() Doms.flushadd(o); }) } function submits() { let $forms = $(".datainput .thuploaC form"); let n=; $.each($forms, function (index, form) { let formdata = new FormData(form); console.log("------------") let O = { name: formdata.get('name'), maxlv: formdata.get("maxlv"), powder: formdata.get('powder'), type: formdata.get('type'), effect: formdata.get('effect'), from: formdata.getAll('from').join(','), mark:$(form).find('.mark').val() } if (O.name == ) { return; } if (O.maxlv == ) { return; } Doms.flushadd(O); n=O.name; }); let results = Doms.filter(function (e) { return e.mark=='1'?false:true; }).map(function (O, i, arr) { return text = `

    托环图标.png${O.name}

    等级上限:
    ${O.maxlv}
    粉末消耗:
    ${O.powder}
    托环类型:
    ${O.type}
    效果:
    ${O.effect}
    来源地图:
    ${O.from}

    `;

       });
    
       uploadtowiki(results.join(),n);
    

    } let config = {

       title: "雷吉斯托环",
       action: "edit",
       format: "json",
       assert: "user",
       token: ,
       basetxt:`
        

    上传表格

    名字:
    等级上限:
    最低1 最大100
    粉末消耗:
    0 1000
    托环类型:
    效果:
    来源地图:
    🧡
    \r\n

    \r\n`

    };

    function gettoken() {

       $.get(mw.util.wikiScript('api'), {
           'action': 'query',
           'meta': 'tokens',
           'format': 'json'
       }, function (data, textStatus) {
           config.token = data['query']['tokens'].csrftoken;
           console.log(`this token(${textStatus}):`, config.token);
       }
       );
    

    } function uploadtowiki(text,name) {

       if (config.token == ) {
           gettoken();
           return  alert("token错误,正在获取token,请重试");
       }
       if (uploadtowiki) {
           $.post(mw.util.wikiScript('api'), {
               "title": config.title,
               "text": config.basetxt+text,
               "action": config.action,
               "format": config.format,
               "assert": config.assert,
               'token': config.token
           }, function (data, textStatus, jqXHR) {
               console.log('resultdatais:', data);
               console.log('textStatus:', jqXHR);
               if(data.edit!=undefined&&data.edit.result=='Success'){
                   if(confirm('Success:成功!\r\n是否刷新并转到最后编辑位置?')){
                       location.hash=name;
                       location.reload();
                   }else{
    
                   }
               }else{
                   let a='\r\n';
                   if(data.edit){
                       a+=data.edit.result;
                   }
                   if(data.error){
                       a+=data.error.code;
                   }
                   alert("失败",a)
               }
    
           }
           );
       }
    

    };


    setTimeout(function f(count) {

       try {
           if ($) {
               start();
    
           }
       } catch (notFindDataerr) {
           if (count < 10) {
               setTimeout(f, 200, ++count)
           } else {
               console.log("$ load timeout")
           }
       }
    

    }, 200, 0); </script>