打开/关闭搜索
搜索
打开/关闭菜单
1.3K
143
375
74K
医林拾薪
导航
首页
医林拾薪论坛
最近更改
随机页面
特殊页面
上传文件
快捷入口
医学本科题库
待翻译的英语单词
待补充英文的名词
小工具
导出ANKI卡组
本科题库创建向导
题库录入工具
录入英语单词
录入名称解释
Toggle preferences menu
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
登录
查看“MediaWiki:Gadget-unziprecords.js”的源代码
MediaWiki界面页面
分享此页面
查看
阅读
查看源代码
查看历史
associated-pages
消息
讨论
更多操作
←
MediaWiki:Gadget-unziprecords.js
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
function unzip(b64Data) { var strData = atob(b64Data); strData = pako.ungzip(strData,{to: 'string'}); return decodeURIComponent(strData); } //检查是否为刷题云储存页面 function isRecordsPages(){ var url = window.location.href var isEditPage = url.indexOf('&action=edit') url = url.split('Records/') console.log(url) if(url.length>1&&isEditPage===-1){ var id = url[1] return id }else{ return false } } //获取某个页面的历史版本 function getPageRevision(url, title, pageCount){ var PARAMS = { "action": "query", "format": "json", "prop": "revisions", "titles": title, "utf8": 1, "rvprop": "content", "rvlimit": pageCount, "rvdir": "older", "origin":"*" } var isSuccess = {} $.ajax( { url: url, method: "post", async: false, data: PARAMS, timeout: 5000, success: function (results){ if('-1' in results.query.pages){ console.log('===无此页面===') isSuccess = {isSuccess:false, result:results} }else { isSuccess = {isSuccess:true, result:results} } } }) return isSuccess } function getFirstPageContent(obj){ obj = obj.result.query.pages for(var i in obj){ obj = obj[i] } obj = obj.revisions[0]['*'] return obj } //解析json function parseRecordsJSON(url,content){ var data var PARAMS = { "action": "parse", "format": "json", "text":content, "contentmodel": "json", "utf8": 1, "origin":"*" } $.ajax({ async: true, type: "post", url: url, data: PARAMS, datatype: 'json', success: function (datas) { data = datas['parse']['text']['*'] // $('#mw-content-text').html(data) } }); return data } function getFormatTime(timestamp, clean){ clean = clean !== undefined ? clean: true var nowDate if(timestamp===undefined){ nowDate= new Date(); }else { nowDate = new Date(timestamp); } var year = nowDate.getFullYear(); var month = nowDate.getMonth() + 1 < 10 ? "0" + (nowDate.getMonth() + 1) : nowDate.getMonth() + 1; var date = nowDate.getDate() < 10 ? "0" + nowDate.getDate() : nowDate.getDate(); var hour = nowDate.getHours()< 10 ? "0" + nowDate.getHours() : nowDate.getHours(); var minute = nowDate.getMinutes()< 10 ? "0" + nowDate.getMinutes() : nowDate.getMinutes(); var second = nowDate.getSeconds()< 10 ? "0" + nowDate.getSeconds() : nowDate.getSeconds(); var time = '' if(clean){ time = year + "-" + month + "-" + date+" "+hour+":"+minute+":"+second; }else { time = year + "-" + month + "-" + date+"T"+hour+":"+minute+":"+second+'Z' } return time } function dicToList(obj){ var result = [] for(var i in obj){ result.push(obj[i]) } return result } // function readResult(data) { // for(var i in data.results){ // if(typeof(data.results[i])=='object'){ // data.results[i] = dicToList(data.results[i]) // } // if(data.results[i].length>0) { // container.append('<h3>' + i + '型题</h3>') // for (var n = 0; n < data.results[i].length; n++) { // var btn = $('<button id="' + id + '-' + i + '-' + n + '" class="btn btn-circle">' + (n+1) + '</button>') // if(data.results[i][n].isDone && data.results[i][n].isRight){ // btn.addClass('green') // }else if(!data.results[i][n].isDone){ // btn.addClass('yellow') // }else { // btn.addClass('red') // } // btn.appendTo(resultsContainer) // // console.log(n) // // console.log(data.results[i][n]) // } // resultsContainer.appendTo(container) // resultsContainer = $('<div class="results"></div>') // } // } // header.append('<div><h2>'+data.info.title+'</h2><div><p class="inline">id:'+data.info.id+'</p>|<p class="inline">做题时间:'+getFormatTime(data.info.time)+'</p></div></div>') // console.log(container) // container.appendTo(singleContainer) // } function readResult(data) { var result = {all:0, notdone:0, right:0, wrong:0} for(var i in data.results){ if(typeof(data.results[i])=='object'){ data.results[i] = dicToList(data.results[i]) } if(data.results[i].length>0) { for (var n = 0; n < data.results[i].length; n++) { result.all += 1 if(data.results[i][n].isDone && data.results[i][n].isRight){ result.right += 1 }else if(!data.results[i][n].isDone){ result.notdone += 1 }else { result.wrong += 1 } } } } return result } function round(number,digit) { var result var dig = 1 for(var i=0;i<digit;i++){ dig = dig * 10 } result = Math.round(number * dig) / dig result = result.toString() console.log(result*100) return result } function getSameData(fullData, searchTitle, order) { var container = $('<div class="single-data-container"></div>') var counter = 1 var latestTime = '' for(var i in fullData){ var data = fullData[i] var title = data.info.title if(searchTitle === title){ latestTime = data.list.time var singleData = $('<div class="single-data"></div>') var header = $('<div class="single-header"></div>') var content = $('<div class="single-content"></div>') var ending = $('<div class="single-ending"></div>') var headerText = '' var result = readResult(data) headerText = '在<b>'+data.list.time+'</b>的第<b>' + counter + '</b>次做题' + '(完成度:'+(result.all-result.notdone)+'/'+result.all+'['+(round((result.all-result.notdone)/result.all,4)*100).toFixed(2)+'%],' + '正确率:'+result.right+'/'+(result.all-result.notdone)+'['+(round(result.right/(result.all-result.notdone),4)*100).toFixed(2)+'%])' header.html(headerText) singleData.append(header,content,ending) if(order){ container.append(singleData) }else { container.prepend(singleData) } counter += 1 } } return {container:container,counter:counter-1,latestTime:latestTime} } function mainFrame(fullData) { var mainFrame = $('<div class="main-data-container"></div>') var titlesSet = [] for(var i in fullData){ var data = fullData[i] var title = data.info.title if(titlesSet.indexOf(title)!==-1){continue} var singleDataSet = $('<div id="dataset-'+i+'" class="single-data-set data-folded"></div>') var dataContainers = getSameData(fullData,title,true) var header = $('<div class="list-title">' + '<p class="title-id">'+i+'</p>' + '<span class="title-content">' + '<a href="https://www.medforest.cn/dic/'+title+'">'+title+'</a>' + '<p class="title-content-time">最近一次答题:'+dataContainers.latestTime+'</p>' + '<p class="title-content-counter">共 '+dataContainers.counter+' 条数据</p>' + '</span></div>') header.bind('click', function () { fold($(this).parent()) }) singleDataSet.append(header,dataContainers.container) singleDataSet.prependTo(mainFrame) } return mainFrame } function fold(selector) { var defaultHeight = $('.data-folded').height() var paddingHeight = 10 var targetHeight = defaultHeight + paddingHeight + selector.children('.single-data-container').height() var currentHeight = selector.height() if(defaultHeight === currentHeight){ selector.animate({ height: targetHeight }, "fast"); selector.removeClass('data-folded') }else { selector.animate({ height: defaultHeight }, "fast"); selector.addClass('data-folded') } } //主函数 function unzipRecords(){ var id = isRecordsPages() if(!id){ return '非题库云储存页面!' } // var zippedContent = getFirstPageContent(getPageRevision('https://www.medforest.cn/medf/api.php','题库:Records/66',1)) // console.log(zippedContent) var zippedContent= $('#mw-content-text').text().replace('[标记此页面为已巡查]','') $('#mw-content-text').html('<h4 style="color:red;">正在分析做题数据</h4>') console.log(zippedContent) var unzipped = unzip(zippedContent) var jsonData = JSON.parse(unzipped) console.log(jsonData.archive) var parsed=parseRecordsJSON('https://www.medforest.cn/medf/api.php',unzipped) var id = 0 var mainContainer = $('<div class="data-list-container"></div>') mainFrame(jsonData.archive).appendTo(mainContainer) $('#mw-content-text').html('<div><h2>说明:</h2><p class="inline">数据按最后一次做题的时间倒序排列,第一列数字是对应存档的ID,显示的时间是最近一次做本题库的时间</p><hr></div>') $('#mw-content-text').append(mainContainer) } unzipRecords()
返回
MediaWiki:Gadget-unziprecords.js
。