Commit 24719f2c authored by Tang Xinwei's avatar Tang Xinwei

Revert "cars页面增加期间使用率统计"

This reverts commit 4df00855.
parent 70426323
Pipeline #22659 passed with stages
in 1 minute and 2 seconds
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/ygopro-arena-web.iml" filepath="$PROJECT_DIR$/.idea/ygopro-arena-web.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
...@@ -85,15 +85,6 @@ ...@@ -85,15 +85,6 @@
"url": "https://opencollective.com/popperjs" "url": "https://opencollective.com/popperjs"
} }
}, },
"node_modules/@trysound/sax": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
"integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
"dev": true,
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/@types/http-proxy": { "node_modules/@types/http-proxy": {
"version": "1.17.7", "version": "1.17.7",
"dev": true, "dev": true,
...@@ -328,12 +319,7 @@ ...@@ -328,12 +319,7 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/async-validator": { "node_modules/async-validator": {
"version": "1.8.5", "version": "1.6.9"
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
"integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
"dependencies": {
"babel-runtime": "6.x"
}
}, },
"node_modules/atob": { "node_modules/atob": {
"version": "2.1.2", "version": "2.1.2",
...@@ -1005,6 +991,7 @@ ...@@ -1005,6 +991,7 @@
}, },
"node_modules/babel-runtime": { "node_modules/babel-runtime": {
"version": "6.26.0", "version": "6.26.0",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"core-js": "^2.4.0", "core-js": "^2.4.0",
...@@ -1161,15 +1148,6 @@ ...@@ -1161,15 +1148,6 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"optional": true,
"dependencies": {
"file-uri-to-path": "1.0.0"
}
},
"node_modules/bluebird": { "node_modules/bluebird": {
"version": "3.7.2", "version": "3.7.2",
"dev": true, "dev": true,
...@@ -1473,19 +1451,6 @@ ...@@ -1473,19 +1451,6 @@
"fsevents": "~2.3.2" "fsevents": "~2.3.2"
} }
}, },
"node_modules/chokidar/node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/chokidar/node_modules/glob-parent": { "node_modules/chokidar/node_modules/glob-parent": {
"version": "5.1.2", "version": "5.1.2",
"license": "ISC", "license": "ISC",
...@@ -1504,6 +1469,17 @@ ...@@ -1504,6 +1469,17 @@
"safe-buffer": "^5.0.1" "safe-buffer": "^5.0.1"
} }
}, },
"node_modules/clap": {
"version": "1.2.3",
"dev": true,
"license": "MIT",
"dependencies": {
"chalk": "^1.1.3"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/class-utils": { "node_modules/class-utils": {
"version": "0.3.6", "version": "0.3.6",
"license": "MIT", "license": "MIT",
...@@ -1615,6 +1591,16 @@ ...@@ -1615,6 +1591,16 @@
"node": ">= 0.12.0" "node": ">= 0.12.0"
} }
}, },
"node_modules/coa": {
"version": "1.0.4",
"dev": true,
"dependencies": {
"q": "^1.1.2"
},
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/code-point-at": { "node_modules/code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"dev": true, "dev": true,
...@@ -1680,6 +1666,14 @@ ...@@ -1680,6 +1666,14 @@
"has": "^1.0.1" "has": "^1.0.1"
} }
}, },
"node_modules/colors": {
"version": "1.1.2",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.1.90"
}
},
"node_modules/commander": { "node_modules/commander": {
"version": "2.17.1", "version": "2.17.1",
"dev": true, "dev": true,
...@@ -1827,6 +1821,7 @@ ...@@ -1827,6 +1821,7 @@
}, },
"node_modules/core-js": { "node_modules/core-js": {
"version": "2.6.12", "version": "2.6.12",
"dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT" "license": "MIT"
}, },
...@@ -1985,28 +1980,6 @@ ...@@ -1985,28 +1980,6 @@
"fastparse": "^1.1.2" "fastparse": "^1.1.2"
} }
}, },
"node_modules/css-tree": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
"integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
"dev": true,
"dependencies": {
"mdn-data": "2.0.14",
"source-map": "^0.6.1"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/css-tree/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/css-what": { "node_modules/css-what": {
"version": "5.1.0", "version": "5.1.0",
"dev": true, "dev": true,
...@@ -2069,15 +2042,18 @@ ...@@ -2069,15 +2042,18 @@
} }
}, },
"node_modules/csso": { "node_modules/csso": {
"version": "4.2.0", "version": "2.3.2",
"resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
"integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"css-tree": "^1.1.2" "clap": "^1.0.9",
"source-map": "^0.5.3"
},
"bin": {
"csso": "bin/csso"
}, },
"engines": { "engines": {
"node": ">=8.0.0" "node": ">=0.10.0"
} }
}, },
"node_modules/datatables.net": { "node_modules/datatables.net": {
...@@ -2754,12 +2730,6 @@ ...@@ -2754,12 +2730,6 @@
"loader-utils": "~0.2.5" "loader-utils": "~0.2.5"
} }
}, },
"node_modules/file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"optional": true
},
"node_modules/filesize": { "node_modules/filesize": {
"version": "3.6.1", "version": "3.6.1",
"dev": true, "dev": true,
...@@ -2902,24 +2872,6 @@ ...@@ -2902,24 +2872,6 @@
"version": "1.0.0", "version": "1.0.0",
"license": "ISC" "license": "ISC"
}, },
"node_modules/fsevents": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
"deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2",
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"dependencies": {
"bindings": "^1.5.0",
"nan": "^2.12.1"
},
"engines": {
"node": ">= 4.0"
}
},
"node_modules/function-bind": { "node_modules/function-bind": {
"version": "1.1.0", "version": "1.1.0",
"dev": true "dev": true
...@@ -3944,12 +3896,6 @@ ...@@ -3944,12 +3896,6 @@
"safe-buffer": "^5.1.2" "safe-buffer": "^5.1.2"
} }
}, },
"node_modules/mdn-data": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
"dev": true
},
"node_modules/media-typer": { "node_modules/media-typer": {
"version": "0.3.0", "version": "0.3.0",
"dev": true, "dev": true,
...@@ -4121,12 +4067,6 @@ ...@@ -4121,12 +4067,6 @@
"version": "2.0.0", "version": "2.0.0",
"license": "MIT" "license": "MIT"
}, },
"node_modules/nan": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
"optional": true
},
"node_modules/nanomatch": { "node_modules/nanomatch": {
"version": "1.2.13", "version": "1.2.13",
"license": "MIT", "license": "MIT",
...@@ -4597,11 +4537,6 @@ ...@@ -4597,11 +4537,6 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/path-dirname": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
"integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q=="
},
"node_modules/path-exists": { "node_modules/path-exists": {
"version": "2.1.0", "version": "2.1.0",
"dev": true, "dev": true,
...@@ -4643,12 +4578,6 @@ ...@@ -4643,12 +4578,6 @@
"node": ">=0.12" "node": ">=0.12"
} }
}, },
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
"dev": true
},
"node_modules/picomatch": { "node_modules/picomatch": {
"version": "2.3.0", "version": "2.3.0",
"license": "MIT", "license": "MIT",
...@@ -5238,10 +5167,9 @@ ...@@ -5238,10 +5167,9 @@
} }
}, },
"node_modules/postcss-svgo/node_modules/is-svg": { "node_modules/postcss-svgo/node_modules/is-svg": {
"version": "2.1.0", "version": "4.3.2",
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
"integrity": "sha512-Ya1giYJUkcL/94quj0+XGcmts6cETPBW1MiFz1ReJrnDJ680F52qpAEGAEGU0nq96FRGIGPx6Yo1CyPXcOoyGw==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"html-comment-regex": "^1.1.0" "html-comment-regex": "^1.1.0"
}, },
...@@ -5379,6 +5307,15 @@ ...@@ -5379,6 +5307,15 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/q": {
"version": "1.5.1",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.6.0",
"teleport": ">=0.2.0"
}
},
"node_modules/qs": { "node_modules/qs": {
"version": "6.7.0", "version": "6.7.0",
"dev": true, "dev": true,
...@@ -5560,6 +5497,7 @@ ...@@ -5560,6 +5497,7 @@
}, },
"node_modules/regenerator-runtime": { "node_modules/regenerator-runtime": {
"version": "0.11.1", "version": "0.11.1",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/regenerator-transform": { "node_modules/regenerator-transform": {
...@@ -5796,6 +5734,11 @@ ...@@ -5796,6 +5734,11 @@
"version": "2.1.2", "version": "2.1.2",
"license": "MIT" "license": "MIT"
}, },
"node_modules/sax": {
"version": "1.2.4",
"dev": true,
"license": "ISC"
},
"node_modules/select": { "node_modules/select": {
"version": "1.1.2", "version": "1.1.2",
"license": "MIT" "license": "MIT"
...@@ -6136,13 +6079,6 @@ ...@@ -6136,13 +6079,6 @@
"version": "4.0.1", "version": "4.0.1",
"license": "MIT" "license": "MIT"
}, },
"node_modules/stable": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
"deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility",
"dev": true
},
"node_modules/stackframe": { "node_modules/stackframe": {
"version": "0.3.1", "version": "0.3.1",
"dev": true, "dev": true,
...@@ -6239,33 +6175,23 @@ ...@@ -6239,33 +6175,23 @@
} }
}, },
"node_modules/svgo": { "node_modules/svgo": {
"version": "2.8.0", "version": "0.7.2",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
"integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
"dev": true, "dev": true,
"license": "MIT",
"dependencies": { "dependencies": {
"@trysound/sax": "0.2.0", "coa": "~1.0.1",
"commander": "^7.2.0", "colors": "~1.1.2",
"css-select": "^4.1.3", "csso": "~2.3.1",
"css-tree": "^1.1.3", "js-yaml": "2.1.3",
"csso": "^4.2.0", "mkdirp": "~0.5.1",
"picocolors": "^1.0.0", "sax": "~1.2.1",
"stable": "^0.1.8" "whet.extend": "~0.9.9"
}, },
"bin": { "bin": {
"svgo": "bin/svgo" "svgo": "bin/svgo"
}, },
"engines": { "engines": {
"node": ">=10.13.0" "node": ">=0.10.0"
}
},
"node_modules/svgo/node_modules/commander": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true,
"engines": {
"node": ">= 10"
} }
}, },
"node_modules/swiper": { "node_modules/swiper": {
...@@ -6979,26 +6905,6 @@ ...@@ -6979,26 +6905,6 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/watchpack-chokidar2/node_modules/glob-parent": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
"dependencies": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
}
},
"node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
"dependencies": {
"is-extglob": "^2.1.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/watchpack-chokidar2/node_modules/is-accessor-descriptor": { "node_modules/watchpack-chokidar2/node_modules/is-accessor-descriptor": {
"version": "1.0.0", "version": "1.0.0",
"license": "MIT", "license": "MIT",
...@@ -7363,6 +7269,14 @@ ...@@ -7363,6 +7269,14 @@
"watchpack-chokidar2": "^2.0.1" "watchpack-chokidar2": "^2.0.1"
} }
}, },
"node_modules/whet.extend": {
"version": "0.9.9",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.6.0"
}
},
"node_modules/which-module": { "node_modules/which-module": {
"version": "1.0.0", "version": "1.0.0",
"dev": true, "dev": true,
...@@ -7503,12 +7417,6 @@ ...@@ -7503,12 +7417,6 @@
"version": "2.11.0", "version": "2.11.0",
"peer": true "peer": true
}, },
"@trysound/sax": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
"integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
"dev": true
},
"@types/http-proxy": { "@types/http-proxy": {
"version": "1.17.7", "version": "1.17.7",
"dev": true, "dev": true,
...@@ -7674,12 +7582,7 @@ ...@@ -7674,12 +7582,7 @@
"version": "1.0.3" "version": "1.0.3"
}, },
"async-validator": { "async-validator": {
"version": "1.8.5", "version": "1.6.9"
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
"integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
"requires": {
"babel-runtime": "6.x"
}
}, },
"atob": { "atob": {
"version": "2.1.2" "version": "2.1.2"
...@@ -8275,6 +8178,7 @@ ...@@ -8275,6 +8178,7 @@
}, },
"babel-runtime": { "babel-runtime": {
"version": "6.26.0", "version": "6.26.0",
"dev": true,
"requires": { "requires": {
"core-js": "^2.4.0", "core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0" "regenerator-runtime": "^0.11.0"
...@@ -8377,15 +8281,6 @@ ...@@ -8377,15 +8281,6 @@
"binary-extensions": { "binary-extensions": {
"version": "2.2.0" "version": "2.2.0"
}, },
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"optional": true,
"requires": {
"file-uri-to-path": "1.0.0"
}
},
"bluebird": { "bluebird": {
"version": "3.7.2", "version": "3.7.2",
"dev": true "dev": true
...@@ -8610,12 +8505,6 @@ ...@@ -8610,12 +8505,6 @@
"readdirp": "~3.6.0" "readdirp": "~3.6.0"
}, },
"dependencies": { "dependencies": {
"fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"optional": true
},
"glob-parent": { "glob-parent": {
"version": "5.1.2", "version": "5.1.2",
"requires": { "requires": {
...@@ -8631,6 +8520,13 @@ ...@@ -8631,6 +8520,13 @@
"safe-buffer": "^5.0.1" "safe-buffer": "^5.0.1"
} }
}, },
"clap": {
"version": "1.2.3",
"dev": true,
"requires": {
"chalk": "^1.1.3"
}
},
"class-utils": { "class-utils": {
"version": "0.3.6", "version": "0.3.6",
"requires": { "requires": {
...@@ -8707,6 +8603,13 @@ ...@@ -8707,6 +8603,13 @@
"version": "4.6.0", "version": "4.6.0",
"dev": true "dev": true
}, },
"coa": {
"version": "1.0.4",
"dev": true,
"requires": {
"q": "^1.1.2"
}
},
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"dev": true "dev": true
...@@ -8762,6 +8665,10 @@ ...@@ -8762,6 +8665,10 @@
"has": "^1.0.1" "has": "^1.0.1"
} }
}, },
"colors": {
"version": "1.1.2",
"dev": true
},
"commander": { "commander": {
"version": "2.17.1", "version": "2.17.1",
"dev": true "dev": true
...@@ -8871,7 +8778,8 @@ ...@@ -8871,7 +8778,8 @@
} }
}, },
"core-js": { "core-js": {
"version": "2.6.12" "version": "2.6.12",
"dev": true
}, },
"core-util-is": { "core-util-is": {
"version": "1.0.3" "version": "1.0.3"
...@@ -9003,24 +8911,6 @@ ...@@ -9003,24 +8911,6 @@
"fastparse": "^1.1.2" "fastparse": "^1.1.2"
} }
}, },
"css-tree": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
"integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
"dev": true,
"requires": {
"mdn-data": "2.0.14",
"source-map": "^0.6.1"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
},
"css-what": { "css-what": {
"version": "5.1.0", "version": "5.1.0",
"dev": true "dev": true
...@@ -9068,12 +8958,11 @@ ...@@ -9068,12 +8958,11 @@
} }
}, },
"csso": { "csso": {
"version": "4.2.0", "version": "2.3.2",
"resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
"integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
"dev": true, "dev": true,
"requires": { "requires": {
"css-tree": "^1.1.2" "clap": "^1.0.9",
"source-map": "^0.5.3"
} }
}, },
"datatables.net": { "datatables.net": {
...@@ -9550,12 +9439,6 @@ ...@@ -9550,12 +9439,6 @@
"loader-utils": "~0.2.5" "loader-utils": "~0.2.5"
} }
}, },
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"optional": true
},
"filesize": { "filesize": {
"version": "3.6.1", "version": "3.6.1",
"dev": true "dev": true
...@@ -9644,16 +9527,6 @@ ...@@ -9644,16 +9527,6 @@
"fs.realpath": { "fs.realpath": {
"version": "1.0.0" "version": "1.0.0"
}, },
"fsevents": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
"optional": true,
"requires": {
"bindings": "^1.5.0",
"nan": "^2.12.1"
}
},
"function-bind": { "function-bind": {
"version": "1.1.0", "version": "1.1.0",
"dev": true "dev": true
...@@ -10314,12 +10187,6 @@ ...@@ -10314,12 +10187,6 @@
"safe-buffer": "^5.1.2" "safe-buffer": "^5.1.2"
} }
}, },
"mdn-data": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
"integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
"dev": true
},
"media-typer": { "media-typer": {
"version": "0.3.0", "version": "0.3.0",
"dev": true "dev": true
...@@ -10429,12 +10296,6 @@ ...@@ -10429,12 +10296,6 @@
"ms": { "ms": {
"version": "2.0.0" "version": "2.0.0"
}, },
"nan": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
"optional": true
},
"nanomatch": { "nanomatch": {
"version": "1.2.13", "version": "1.2.13",
"requires": { "requires": {
...@@ -10754,11 +10615,6 @@ ...@@ -10754,11 +10615,6 @@
"version": "0.0.1", "version": "0.0.1",
"dev": true "dev": true
}, },
"path-dirname": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
"integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q=="
},
"path-exists": { "path-exists": {
"version": "2.1.0", "version": "2.1.0",
"dev": true, "dev": true,
...@@ -10786,12 +10642,6 @@ ...@@ -10786,12 +10642,6 @@
"sha.js": "^2.4.8" "sha.js": "^2.4.8"
} }
}, },
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
"dev": true
},
"picomatch": { "picomatch": {
"version": "2.3.0" "version": "2.3.0"
}, },
...@@ -11254,9 +11104,7 @@ ...@@ -11254,9 +11104,7 @@
}, },
"dependencies": { "dependencies": {
"is-svg": { "is-svg": {
"version": "2.1.0", "version": "4.3.2",
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
"integrity": "sha512-Ya1giYJUkcL/94quj0+XGcmts6cETPBW1MiFz1ReJrnDJ680F52qpAEGAEGU0nq96FRGIGPx6Yo1CyPXcOoyGw==",
"dev": true, "dev": true,
"requires": { "requires": {
"html-comment-regex": "^1.1.0" "html-comment-regex": "^1.1.0"
...@@ -11350,6 +11198,10 @@ ...@@ -11350,6 +11198,10 @@
"version": "1.4.1", "version": "1.4.1",
"dev": true "dev": true
}, },
"q": {
"version": "1.5.1",
"dev": true
},
"qs": { "qs": {
"version": "6.7.0", "version": "6.7.0",
"dev": true "dev": true
...@@ -11482,7 +11334,8 @@ ...@@ -11482,7 +11334,8 @@
"dev": true "dev": true
}, },
"regenerator-runtime": { "regenerator-runtime": {
"version": "0.11.1" "version": "0.11.1",
"dev": true
}, },
"regenerator-transform": { "regenerator-transform": {
"version": "0.10.1", "version": "0.10.1",
...@@ -11647,6 +11500,10 @@ ...@@ -11647,6 +11500,10 @@
"safer-buffer": { "safer-buffer": {
"version": "2.1.2" "version": "2.1.2"
}, },
"sax": {
"version": "1.2.4",
"dev": true
},
"select": { "select": {
"version": "1.1.2" "version": "1.1.2"
}, },
...@@ -11891,12 +11748,6 @@ ...@@ -11891,12 +11748,6 @@
"ssr-window": { "ssr-window": {
"version": "4.0.1" "version": "4.0.1"
}, },
"stable": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
"integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
"dev": true
},
"stackframe": { "stackframe": {
"version": "0.3.1", "version": "0.3.1",
"dev": true "dev": true
...@@ -11965,26 +11816,16 @@ ...@@ -11965,26 +11816,16 @@
"dev": true "dev": true
}, },
"svgo": { "svgo": {
"version": "2.8.0", "version": "0.7.2",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
"integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@trysound/sax": "0.2.0", "coa": "~1.0.1",
"commander": "^7.2.0", "colors": "~1.1.2",
"css-select": "^4.1.3", "csso": "~2.3.1",
"css-tree": "^1.1.3", "js-yaml": "2.1.3",
"csso": "^4.2.0", "mkdirp": "~0.5.1",
"picocolors": "^1.0.0", "sax": "~1.2.1",
"stable": "^0.1.8" "whet.extend": "~0.9.9"
},
"dependencies": {
"commander": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
"integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
"dev": true
}
} }
}, },
"swiper": { "swiper": {
...@@ -12475,25 +12316,6 @@ ...@@ -12475,25 +12316,6 @@
"to-regex-range": "^2.1.0" "to-regex-range": "^2.1.0"
} }
}, },
"glob-parent": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
"requires": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
},
"dependencies": {
"is-glob": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
"requires": {
"is-extglob": "^2.1.0"
}
}
}
},
"is-accessor-descriptor": { "is-accessor-descriptor": {
"version": "1.0.0", "version": "1.0.0",
"requires": { "requires": {
...@@ -12755,6 +12577,10 @@ ...@@ -12755,6 +12577,10 @@
"source-map": "~0.5.3" "source-map": "~0.5.3"
} }
}, },
"whet.extend": {
"version": "0.9.9",
"dev": true
},
"which-module": { "which-module": {
"version": "1.0.0", "version": "1.0.0",
"dev": true "dev": true
......
...@@ -10,164 +10,154 @@ const URL = "https://sapi.moecube.com:444/ygopro/arena" ...@@ -10,164 +10,154 @@ const URL = "https://sapi.moecube.com:444/ygopro/arena"
export default class Api { export default class Api {
static uploadUrl = `${URL}/upload` static uploadUrl = `${URL}/upload`
static implUrl = `${URL}/impltrack` static implUrl = `${URL}/impltrack`
static clkUrl = `${URL}/clktrack` static clkUrl = `${URL}/clktrack`
static getMonthlyHistory(opt) { static getMonthlyWinRate() {
const url = `https://sapi.moecube.com:444/ygopro/arena/historyScore`;
return Vue.http.get(url, { params: opt }); let monthlyWinRateUrl = 'https://sapi.moecube.com:444/ygopro/analytics/matchup/type?source=mycard-athletic'
}
// https://sapi.moecube.com:444/ygopro/arena/historyScore?username=id&season=yyyy-mm return Vue.http.get(monthlyWinRateUrl)
}
static getDownloadUrl(url) {
url = url.slice(7)
var downloadUrl = `${URL}/download/${url}` static getDownloadUrl(url) {
return downloadUrl url = url.slice(7)
} var downloadUrl = `${URL}/download/${url}`
return downloadUrl
static getCount(opt) { }
var request = query.stringify(opt);
const url = `${config.COUNTER_URL}?${request}`; static getCount(opt) {
return Vue.http.get(url); var request = query.stringify(opt);
} const url = `${config.COUNTER_URL}?${request}`;
return Vue.http.get(url);
static getUserInfo(opt) { }
var request = query.stringify(opt);
const url = `${URL}/user?${request}`; static getUserInfo(opt) {
return Vue.http.get(url); var request = query.stringify(opt);
} const url = `${URL}/user?${request}`;
static getUserInfoMonth(opt) { return Vue.http.get(url);
var request = query.stringify(opt); }
const url = `${URL}/user?${request}`;
return Vue.http.get(url); static getUsers(opt) {
} var request = query.stringify(opt);
// https://sapi.moecube.com:444/ygopro/arena/historyScore?username=id&season=yyyy-mm const url = `${URL}/users?${request}`;
return Vue.http.get(url);
}
static getUserDueHistory(opt) {
static getUsers(opt) { return Vue.http.get(`${URL}/history`, { 'params': opt });
var request = query.stringify(opt); }
const url = `${URL}/users?${request}`;
return Vue.http.get(url); static getDownloadUrls() {
} return Vue.http.get('https://api.github.com/repos/mycard/mycard/releases/latest')
}
static getUserDueHistory(opt) {
return Vue.http.get(`${URL}/history`, {'params': opt}); static getAvatar(opt) {
} return Vue.http.get(`https://sapi.moecube.com:444/accounts/users/${opt.username}.avatar`)
}
static getCardInfo(opt) {
var request = query.stringify(opt);
static getDownloadUrls() { const url = `${URL}/cardinfo?${request}`;
return Vue.http.get('https://api.github.com/repos/mycard/mycard/releases/latest') return Vue.http.get(url);
} }
static getAvatar(opt) { static getDeckInfo(opt) {
return Vue.http.get(`https://sapi.moecube.com:444/accounts/users/${opt.username}.avatar`) return Vue.http.get(`${URL}/deckinfo`, { 'params': opt });
} }
static getCardInfo(opt) { static saveDeck(opt) {
var request = query.stringify(opt); const url = `${URL}/deckinfo`
const url = `${URL}/cardinfo?${request}`; return Vue.http.post(url, opt, { 'emulateJSON': true });
return Vue.http.get(url); }
}
static saveDeckDemo(opt) {
static getDeckInfo(opt) { const url = `${URL}/deckdemo`
return Vue.http.get(`${URL}/deckinfo`, {'params': opt}); return Vue.http.post(url, opt, { 'emulateJSON': true });
} }
static saveDeck(opt) { static getReport(opt) {
const url = `${URL}/deckinfo` return Vue.http.get(`${URL}/report`, { 'params': opt });
return Vue.http.post(url, opt, {'emulateJSON': true}); }
}
static getVoteList(opt) {
static saveDeckDemo(opt) { return Vue.http.get(`${URL}/votes`, { 'params': opt });
const url = `${URL}/deckdemo` }
return Vue.http.post(url, opt, {'emulateJSON': true});
} static saveVote(opt) {
const url = `${URL}/votes`
static getReport(opt) { return Vue.http.post(url, opt, { 'emulateJSON': true });
return Vue.http.get(`${URL}/report`, {'params': opt}); }
}
static voteStatus(opt) {
static getVoteList(opt) { const url = `${URL}/voteStatus`
return Vue.http.get(`${URL}/votes`, {'params': opt}); return Vue.http.post(url, opt, { 'emulateJSON': true });
} }
static saveVote(opt) { static getVote(opt) {
const url = `${URL}/votes` return Vue.http.get(`${URL}/vote`, { 'params': opt });
return Vue.http.post(url, opt, {'emulateJSON': true}); }
}
static submitVote(opt) {
static voteStatus(opt) { const url = `${URL}/submitVote`
const url = `${URL}/voteStatus` return Vue.http.post(url, opt, { 'emulateJSON': true });
return Vue.http.post(url, opt, {'emulateJSON': true}); }
}
static saveAds(opt) {
static getVote(opt) { const url = `${URL}/ads`
return Vue.http.get(`${URL}/vote`, {'params': opt}); return Vue.http.post(url, opt, { 'emulateJSON': true });
} }
static submitVote(opt) { static getAdsList(opt) {
const url = `${URL}/submitVote` return Vue.http.get(`${URL}/ads`, { 'params': opt });
return Vue.http.post(url, opt, {'emulateJSON': true}); }
}
static adsStatus(opt) {
static saveAds(opt) { const url = `${URL}/adsStatus`
const url = `${URL}/ads` return Vue.http.post(url, opt, { 'emulateJSON': true });
return Vue.http.post(url, opt, {'emulateJSON': true}); }
}
static getAd(opt) {
static getAdsList(opt) { return Vue.http.get(`${URL}/getAd`, { 'params': opt });
return Vue.http.get(`${URL}/ads`, {'params': opt}); }
}
static adClick(opt) {
static adsStatus(opt) { const url = `${URL}/adClick`
const url = `${URL}/adsStatus` return Vue.http.post(url, opt, { 'emulateJSON': true });
return Vue.http.post(url, opt, {'emulateJSON': true}); }
}
static adImpl(opt) {
static getAd(opt) { const url = `${URL}/adImpl`
return Vue.http.get(`${URL}/getAd`, {'params': opt}); return Vue.http.post(url, opt, { 'emulateJSON': true });
} }
static adClick(opt) { static getFirstWin(opt) {
const url = `${URL}/adClick` var request = query.stringify(opt);
return Vue.http.post(url, opt, {'emulateJSON': true}); const url = `${URL}/firstwin?${request}`;
} return Vue.http.get(url);
}
static adImpl(opt) {
const url = `${URL}/adImpl` static adSwitchChange(opt) {
return Vue.http.post(url, opt, {'emulateJSON': true}); const url = `${URL}/adSwitchChange`
} return Vue.http.post(url, opt, { 'emulateJSON': true });
}
static getFirstWin(opt) {
var request = query.stringify(opt); static saveActivity(opt) {
const url = `${URL}/firstwin?${request}`; const url = `${URL}/activity`
return Vue.http.get(url); return Vue.http.post(url, opt, { 'emulateJSON': true });
} }
static adSwitchChange(opt) { static saveLabel(opt) {
const url = `${URL}/adSwitchChange` const url = `${URL}/label`
return Vue.http.post(url, opt, {'emulateJSON': true}); return Vue.http.post(url, opt, { 'emulateJSON': true });
} }
static saveActivity(opt) { static getLabel(opt) {
const url = `${URL}/activity` return Vue.http.get(`${URL}/label`, { 'params': {} });
return Vue.http.post(url, opt, {'emulateJSON': true}); }
}
static saveLabel(opt) {
const url = `${URL}/label`
return Vue.http.post(url, opt, {'emulateJSON': true});
}
static getLabel(opt) {
return Vue.http.get(`${URL}/label`, {'params': {}});
}
} }
...@@ -491,6 +491,7 @@ ...@@ -491,6 +491,7 @@
type: this.type, type: this.type,
page: this.page, page: this.page,
username: this.username, username: this.username,
type: this.type,
from_date: this.from_date, from_date: this.from_date,
to_date: this.to_date to_date: this.to_date
} }
...@@ -640,19 +641,19 @@ ...@@ -640,19 +641,19 @@
#history { #history {
margin-top: 100px; margin-top: 100px;
} }
.demo-table-expand { .demo-table-expand {
font-size: 0; font-size: 0;
} }
.demo-table-expand label { .demo-table-expand label {
width: 90px; width: 90px;
color: #99a9bf; color: #99a9bf;
} }
.demo-table-expand .el-form-item { .demo-table-expand .el-form-item {
margin-right: 0; margin-right: 0;
margin-bottom: 0; margin-bottom: 0;
width: 100%; width: 100%;
} }
</style> </style>
\ No newline at end of file
<template> <template>
<div> <div>
<div class="content"> <div class="content">
<div class="container"> <div class="container">
<div> <div>
<h4 class="color-blue"> <h4 class="color-blue">
<i class="glyphicon glyphicon-filter"></i> <i class="glyphicon glyphicon-filter"></i>
{{ lang.qc }} {{lang.qc}}
</h4> </h4>
<div class="well"> <div class="well">
<form action="" method="get" role="form" class="form-inline form-filter"> <form action="" method="get" role="form" class="form-inline form-filter">
<div class="form-group" style="margin-right: 10px;"> <div class="form-group" style="margin-right: 10px;">
<div class="input-group"> <div class="input-group">
<div class="input-group-addon">{{ lang.time }}</div> <div class="input-group-addon">{{lang.time}}</div>
<select name="type" class="form-control" id="type" v-on:change="onChange"> <select name="type" class="form-control" id="type" v-on:change="onChange">
<option value="day">{{ lang.today }}</option> <option value="day">{{lang.today}}</option>
<option value="week">{{ lang.week }}</option> <option value="week">{{lang.week}}</option>
<option value="halfmonth">{{ lang.half_month }}</option> <option value="halfmonth">{{lang.half_month}}</option>
<option value="month">{{ lang.month }}</option> <option value="month">{{lang.month}}</option>
<option value="season">{{ lang.season }}</option> <option value="season">{{lang.season}}</option>
</select> </select>
</div> </div>
</div> </div>
<div class="form-group" style="margin-right: 10px;"> <div class="form-group" style="margin-right: 10px;">
<div class="input-group"> <div class="input-group">
<div class="input-group-addon">{{ lang.source }}</div> <div class="input-group-addon">{{lang.source}}</div>
<select name="server" class="form-control" id="server" v-on:change="onChange"> <select name="server" class="form-control" id="server" v-on:change="onChange">
<option value="mycard">MCPro</option> <option value="mycard">MCPro</option>
<option value="233">233</option> <option value="233">233</option>
<option value="koishi">Koishi</option> <option value="koishi">Koishi</option>
<option value="koishi_tcg">Koishi_tcg</option> <option value="koishi_tcg">Koishi_tcg</option>
</select> </select>
</div> </div>
</div> </div>
<div class="form-group" style="margin-right: 10px;"> <div class="form-group" style="margin-right: 10px;">
<div class="input-group"> <div class="input-group">
<div class="input-group-addon">{{ lang.type }}</div> <div class="input-group-addon">{{lang.type}}</div>
<select name="source" class="form-control" id="source" v-on:change="onChange"> <select name="source" class="form-control" id="source" v-on:change="onChange">
<option value="athletic">{{ lang.athletic }}</option> <option value="athletic">{{lang.athletic}}</option>
<option value="entertain">{{ lang.entertain }}</option> <option value="entertain">{{lang.entertain}}</option>
<option value="custom">{{ lang.custom }}</option> <option value="custom">{{lang.custom}}</option>
<option value="tag">{{ lang.tag }}</option> <option value="tag">{{lang.tag}}</option>
</select> </select>
</div> </div>
</div> </div>
<div class="form-group" style="margin-right: 10px;"> <div class="form-group" style="margin-right: 10px;">
<div class="input-group"> <div class="input-group">
<div class="input-group-addon">{{ lang.totalDeck }}</div> <div class="input-group-addon">{{lang.totalDeck}}</div>
<span class="form-control">{{ totalDeck }}</span> <span class="form-control">{{totalDeck}}</span>
</div> </div>
</div> </div>
<div class="form-group" style="display:none"> <div class="form-group" style="display:none">
<button type="submit" id="search" <button type="submit" id="search"
class="form-control btn btn-primary">{{ lang.search }} class="form-control btn btn-primary">{{lang.search}}</button>
</button> </div>
</div>
</form>
</form> </div>
</div>
<h4 class="color-blue"><i class="glyphicon glyphicon-list-alt"></i> {{lang.table_data}} </h4>
<h4 class="color-blue"><i class="glyphicon glyphicon-list-alt"></i> {{ lang.table_data }} </h4>
<div>
<div> <ul class="nav nav-tabs">
<ul class="nav nav-tabs">
<li :class="{ active: isActive }" v-if="isActive">
<li :class="{ active: isActive }" v-if="isActive"> <a href="#tab-0" role="tab" data-toggle="tab" @click='navClick("Deck")'><img class="tab-img" :src="img0" ></a>
<a href="#tab-0" role="tab" data-toggle="tab" @click='navClick("Deck")'><img class="tab-img" </li>
:src="img0"></a> <li :class="{ active: !isActive }">
</li> <a href="#tab-1" role="tab" data-toggle="tab" @click='navClick("Monster")'><img class="tab-img" :src="img1"></a>
<li :class="{ active: !isActive }"> </li>
<a href="#tab-1" role="tab" data-toggle="tab" @click='navClick("Monster")'><img class="tab-img" <li>
:src="img1"></a> <a href="#tab-2" role="tab" data-toggle="tab" @click='navClick("Spell")'><img class="tab-img" :src="img2"></a>
</li> </li>
<li> <li>
<a href="#tab-2" role="tab" data-toggle="tab" @click='navClick("Spell")'><img class="tab-img" <a href="#tab-3" role="tab" data-toggle="tab" @click='navClick("Trap")' ><img class="tab-img" :src="img3"></a>
:src="img2"></a> </li>
</li> <li>
<li> <a href="#tab-4" role="tab" data-toggle="tab" @click='navClick("Side")'><img class="tab-img" :src="img4"></a>
<a href="#tab-3" role="tab" data-toggle="tab" @click='navClick("Trap")'><img class="tab-img" </li>
:src="img3"></a> <li>
</li> <a href="#tab-5" role="tab" data-toggle="tab" @click='navClick("Extra")'><img class="tab-img" :src="img5"></a>
<li> </li>
<a href="#tab-4" role="tab" data-toggle="tab" @click='navClick("Side")'><img class="tab-img" </ul>
:src="img4"></a>
</li> <div class="tab-content">
<li>
<a href="#tab-5" role="tab" data-toggle="tab" @click='navClick("Extra")'><img class="tab-img" <div role="tabpanel" class="tab-pane" :class="{ active: isActive }" v-if="isActive"
:src="img5"></a> id="tab-0">
</li> <br>
</ul> <div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="deck" class="table table-striped table-bordered table-hover example"
<div class="tab-content"> :width="width"></table>
</div>
<div role="tabpanel" class="tab-pane" :class="{ active: isActive }" v-if="isActive" </div>
id="tab-0">
<br> <div role="tabpanel" class="tab-pane" :class="{ active: !isActive }" id="tab-1">
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;"> <br>
<table id="deck" class="table table-striped table-bordered table-hover example" <div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
:width="width"></table> <table id="monster" class="table table-striped table-bordered table-hover example"
</div> :width="width"></table>
</div> </div>
</div>
<div role="tabpanel" class="tab-pane" :class="{ active: !isActive }" id="tab-1">
<br> <div role="tabpanel" class="tab-pane" id="tab-2">
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;"> <br>
<table id="monster" class="table table-striped table-bordered table-hover example" <div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
:width="width"></table> <table id="spell" class="table table-striped table-bordered table-hover example"
</div> :width="width"></table>
</div> </div>
</div>
<div role="tabpanel" class="tab-pane" id="tab-2">
<br> <div role="tabpanel" class="tab-pane" id="tab-3">
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;"> <br>
<table id="spell" class="table table-striped table-bordered table-hover example" <div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
:width="width"></table> <table id="trap" class="table table-striped table-bordered table-hover example"
</div> :width="width"></table>
</div> </div>
</div>
<div role="tabpanel" class="tab-pane" id="tab-3">
<br> <div role="tabpanel" class="tab-pane" id="tab-4">
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;"> <br>
<table id="trap" class="table table-striped table-bordered table-hover example" <div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
:width="width"></table> <table id="side" class="table table-striped table-bordered table-hover example"
</div> :width="width"></table>
</div> </div>
</div>
<div role="tabpanel" class="tab-pane" id="tab-4">
<br> <div role="tabpanel" class="tab-pane" id="tab-5">
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;"> <br>
<table id="side" class="table table-striped table-bordered table-hover example" <div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
:width="width"></table> <table id="ex" class="table table-striped table-bordered table-hover example"
</div> :width="width"></table>
</div> </div>
</div>
<div class="form-group" style="display:none">
<button type="submit" id="search"
class="form-control btn btn-primary">{{lang.search}}</button>
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane" id="tab-5">
<br>
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="ex" class="table table-striped table-bordered table-hover example"
:width="width"></table>
</div> </div>
</div> <Footads></Footads>
<div class="form-group" style="display:none">
<button type="submit" id="search"
class="form-control btn btn-primary">{{ lang.search }}
</button>
</div>
</div> </div>
</div>
</div> </div>
<Footads></Footads>
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
import Footads from './Footads' import Footads from './Footads'
import tb_language from './tb_lang.js' import tb_language from './tb_lang.js'
import { import {
mapGetters mapGetters
} from 'vuex' } from 'vuex'
import API from '../api'; import API from '../api';
import img0 from '../assets/img/500x300_deck.png' import img0 from '../assets/img/500x300_deck.png'
import img1 from '../assets/img/500x300_monster.png' import img1 from '../assets/img/500x300_monster.png'
import img2 from '../assets/img/500x300_Spell.png' import img2 from '../assets/img/500x300_Spell.png'
import img3 from '../assets/img/500x300_Trap.png' import img3 from '../assets/img/500x300_Trap.png'
import img4 from '../assets/img/500x300_side.png' import img4 from '../assets/img/500x300_side.png'
import img5 from '../assets/img/ExtraWithBorder.png' import img5 from '../assets/img/ExtraWithBorder.png'
var dt = require('datatables.net')
var dt = require('datatables.net') var dt2 = require('datatables.net-bs')
var dt2 = require('datatables.net-bs') import "../assets/css/dataTables.bootstrap.min.css"
import "../assets/css/dataTables.bootstrap.min.css" var monsterTable;
var spellTable;
var monsterTable; var trapTable;
var spellTable; var exTable;
var trapTable; var sideTable;
var exTable; var deckTable;
var sideTable; const placeholder={
var deckTable; Deck:'请输入卡组名..',
const placeholder = { Monster:'请输入怪兽卡名..',
Deck: '请输入卡组名..', Spell:'请输入魔法卡名..',
Monster: '请输入怪兽卡名..', Trap:'请输入陷阱卡名..',
Spell: '请输入魔法卡名..', Side:'请输入卡片名..',
Trap: '请输入陷阱卡名..', Extra:'请输入卡片名..',
Side: '请输入卡片名..',
Extra: '请输入卡片名..',
}
export default {
components: {
Footads
},
created: function () {
var regex_match =
/(nokia|iphone|android|motorola|^mot-|softbank|foma|docomo|kddi|up.browser|up.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte-|longcos|pantech|gionee|^sie-|portalmmm|jigs browser|hiptop|^benq|haier|^lct|operas*mobi|opera*mini|320x320|240x320|176x220)/i;
var u = navigator.userAgent;
if (null == u) {
return true;
}
var result = regex_match.exec(u);
if (null == result) {
} else {
this.width = "250%"
}
var lang = localStorage.getItem('lang') || 'cn';
this.init(lang)
},
mounted: function () {
this.init2();
},
data() {
return {
totalDeck: 0,
type: "",
isActive: true,
width: "100%",
img0: img0,
img1: img1,
img2: img2,
img3: img3,
img4: img4,
img5: img5,
}
},
computed: {
...mapGetters({
lang: 'getLang',
}),
},
watch: {
lang: function (val) {
// console.log('lang change1', val)
this.init2()
},
},
methods: {
period(){
// 计算禁卡表发布时间间隔
const today = new Date();
const year = today.getFullYear();
const dates = [
new Date(year, 0, 1),
new Date(year, 3, 1),
new Date(year, 6, 1),
new Date(year, 9, 1),
];
const season = dates.reduce((min, date) => {
const diff = Math.floor((today - date) / (1000 * 60 * 60 * 24));
if (today >= date && diff >= 0 && diff < min) {
return diff;
}
return min;
}, Infinity);
// 根据select设定对应天数
const periodMap = {
day: 1,
week: 7,
halfmonth: 15,
month: 30,
season: season
};
var selectedType = $("#type").val();
return periodMap[selectedType] || 1;
},
navClick(data) {
// console.log('%c ---------------------src' + '\\' + 'components' + '\\' + 'Cards.vue---------------------%c:238', 'background:#f034c6', 'background:#14f1a4',
// data)
$(".input-sm").attr("placeholder", placeholder[data])
},
init: function (lang) {
if (lang === "cn") {
this.isActive = true;
} else {
this.isActive = false;
} }
// this.lang = language[lang] export default {
this.getCount() components: {
}, Footads
init2: function () { },
var lang = localStorage.getItem('lang') || 'cn'; created: function() {
if (lang === "cn") { var regex_match =
this.isActive = true; /(nokia|iphone|android|motorola|^mot-|softbank|foma|docomo|kddi|up.browser|up.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte-|longcos|pantech|gionee|^sie-|portalmmm|jigs browser|hiptop|^benq|haier|^lct|operas*mobi|opera*mini|320x320|240x320|176x220)/i;
} else { var u = navigator.userAgent;
this.isActive = false; if (null == u) {
} return true;
var self = this;
this.getCount().then(function (count) {
self.totalDeck = count; // 设置totalDeck的值
// 在获取到count后调用init2
function renderPage() {
if (monsterTable) {
monsterTable.clear();
monsterTable.destroy();
}
if (spellTable) {
spellTable.clear();
spellTable.destroy();
}
if (trapTable) {
trapTable.clear();
trapTable.destroy();
}
if (exTable) {
exTable.clear();
exTable.destroy();
}
if (sideTable) {
sideTable.clear();
sideTable.destroy();
}
var server = $("#server").val() || "mycard"
var source = $("#source").val() || "athletic"
var final_source = server + "-" + source
$.get('https://sapi.moecube.com:444/ygopro/analytics/single/type', {
type: $("#type").val(),
lang: localStorage.getItem('lang') || 'cn',
extra: 'name',
source: final_source
}, function (data) {
var monster = data.monster;
var spell = data.spell;
var trap = data.trap;
var side = data.side;
var ex = data.ex;
monsterTable = renderTable("#monster", monster)
spellTable = renderTable("#spell", spell)
trapTable = renderTable("#trap", trap)
exTable = renderTable("#ex", ex)
sideTable = renderTable("#side", side)
// console.log(data)
});
//卡组api https://sapi.moecube.com:444/ygopro/analytics/deck/type?type=day&source=mycard-entertain
//只显示中文
var lang = localStorage.getItem('lang') || 'cn';
if (lang === "cn") {
if (deckTable) {
deckTable.clear();
deckTable.destroy();
} }
$.get('https://sapi.moecube.com:444/ygopro/analytics/deck/type', { var result = regex_match.exec(u);
type: $("#type").val(), if (null == result) {} else {
source: final_source this.width = "250%"
}, function (data) { }
var obj = data; var lang = localStorage.getItem('lang') || 'cn';
if (typeof obj === 'string') this.init(lang)
obj = JSON.parse(data); },
var rank = 1; mounted: function() {
var processData = obj.map(function (x) { this.init2();
var tagStr = []; },
var deckName = x.name; data() {
for (var i = 0; i < x.tags.length; i++) { return {
var tagName = x.tags[i].name || x.tags[i].toString() || "";
var short_tagName = tagName.replace(deckName + "-", ""); isActive: true,
tagStr.push(short_tagName) totalDeck: 0,
} width: "100%",
img0: img0,
var period = self.period(); img1: img1,
img2: img2,
img3: img3,
var PickRate = (0 < (x.count / (self.totalDeck * period)) && (x.count / (self.totalDeck * period)) < 1) img4: img4,
? ((x.count / (self.totalDeck * period) * 100)).toFixed(2) + "%" : "-"; img5: img5,
// 出现-是数据算出来不在0-1之间 }
},
return [rank++, x.name, x.count, PickRate, tagStr.join(" , ")]; computed: {
}); ...mapGetters({
lang: 'getLang',
}),
deckTable = $("#deck").DataTable({ },
data: processData, watch: {
pageLength: 25, lang: function(val) {
order: [ // console.log('lang change1', val)
[2, "desc"] this.init2()
],
ordering: true,
columns: [
{
title: tb_language[lang].rank
},
{
title: tb_language[lang].deck
},
{
title: tb_language[lang].count
},
{
title: tb_language[lang].PickRate
},
{
title: tb_language[lang].topTags
},
],
columnDefs: [
{
render: function (data, type, row) {
return "<a href='?name=" + data + "#/deck'>" + data + "</a>";
},
targets: 1
}
],
language: tb_language[lang]
});
});
}
}
function renderTable(tableID, tableData) {
tableData = tableData || [];
var lang = localStorage.getItem('lang') || 'cn';
var langIndex = (lang === 'en' ? 'en-US' : 'zh-CN');
var rank = 1;
var processData = tableData.map(function (d) {
var period = self.period();
var PickRate = (parseInt(d.putone) + parseInt(d.puttwo) + parseInt(d.putthree)) / self.totalDeck / period;
PickRate = (0 < PickRate && PickRate < 1) ? (PickRate * 100).toFixed(2) + "%" : "-";
// 使用率出现-是数据算出来不在0-1之间
return [
rank++, d.name ? d.name[langIndex] : "未知卡片",
d.frequency,
PickRate,
d.putone,
d.puttwo,
d.putthree,
d.id
];
});
var table = $(tableID).DataTable({
data: processData,
pageLength: 50,
order: [
[2, "desc"]
],
"ordering": true,
columns: [{
title: tb_language[lang].rank
}, },
{ },
title: tb_language[lang].cardName methods: {
}, navClick(data){
{ console.log('%c ---------------------src'+'\\'+'components'+'\\'+'Cards.vue---------------------%c:238','background:#f034c6','background:#14f1a4',
title: tb_language[lang].used data)
}, $(".input-sm").attr("placeholder",placeholder[data])
{
title: tb_language[lang].PickRate
},
{
title: tb_language[lang].put1
},
{
title: tb_language[lang].put2
},
{
title: tb_language[lang].put3
},
],
"columnDefs": [{
"render": function (data, type, row) {
return "<a href='https://www.ourocg.cn/search/" + row[6] +
"'>" + data + "</a>";
},
"targets": 1
},],
"language": tb_language[lang]
});
$(".input-sm").attr("placeholder", placeholder.Deck)
return table;
}
renderPage();
$("#search").click(function () {
renderPage();
return false;
})
});
}, },
onChange: function () { init: function(lang) {
$("#search").trigger('click') if (lang === "cn") {
this.getCount() this.isActive = true;
}, } else {
getCount: function () { this.isActive = false;
var server = $("#server").val() || "mycard" }
var source = $("#source").val() || "athletic" // this.lang = language[lang]
var opt = { this.getCount()
type: $("#type").val() || "day", },
source: server + "-" + source init2: function() {
} var lang = localStorage.getItem('lang') || 'cn';
if (lang === "cn") {
this.isActive = true;
} else {
this.isActive = false;
}
return API.getCount(opt).then((res) => { function renderPage() {
if (isNaN(res.data)) { if (monsterTable) {
return 0; monsterTable.clear();
} else { monsterTable.destroy();
return res.data; }
} if (spellTable) {
}); spellTable.clear();
spellTable.destroy();
}
if (trapTable) {
trapTable.clear();
trapTable.destroy();
}
if (exTable) {
exTable.clear();
exTable.destroy();
}
if (sideTable) {
sideTable.clear();
sideTable.destroy();
}
var server = $("#server").val() || "mycard"
var source = $("#source").val() || "athletic"
var final_source = server + "-" + source
$.get('https://sapi.moecube.com:444/ygopro/analytics/single/type', {
type: $("#type").val(),
lang: localStorage.getItem('lang') || 'cn',
extra: 'name',
source: final_source
}, function(data) {
var monster = data.monster;
var spell = data.spell;
var trap = data.trap;
var side = data.side;
var ex = data.ex;
monsterTable = renderTable("#monster", monster)
spellTable = renderTable("#spell", spell)
trapTable = renderTable("#trap", trap)
exTable = renderTable("#ex", ex)
sideTable = renderTable("#side", side)
});
//卡组api https://sapi.moecube.com:444/ygopro/analytics/deck/type?type=day&source=mycard-entertain
//只显示中文
var lang = localStorage.getItem('lang') || 'cn';
if (lang === "cn") {
if (deckTable) {
deckTable.clear();
deckTable.destroy();
}
$.get('https://sapi.moecube.com:444/ygopro/analytics/deck/type', {
type: $("#type").val(),
source: final_source
}, function(data) {
var obj = data;
if (typeof obj === 'string')
obj = JSON.parse(data);
var rank = 1;
var processData = obj.map(function(x) {
var tagStr = [];
var deckName = x.name;
for (var i = 0; i < x.tags.length; i++) {
var tagName = x.tags[i].name || x.tags[i].toString() || "";
var short_tagName = tagName.replace(deckName + "-", "");
tagStr.push(short_tagName)
}
return [rank++, x.name, x.count, tagStr.join(" , ")];
});
deckTable = $("#deck").DataTable({
data: processData,
pageLength: 25,
order: [
[2, "desc"]
],
"ordering": true,
columns: [{
title: tb_language[lang].rank
},
{
title: tb_language[lang].deck
},
{
title: tb_language[lang].count
},
{
title: tb_language[lang].topTags
},
],
"columnDefs": [{
"render": function(data, type, row) {
// return "<span title='" + data + "'>" + data + "</span>";
// return "<img src='imag.png' />";
return "<a href='?name=" + data + "#/deck'>" +
data + "</a>";
},
"targets": 1
}, ],
"language": tb_language[lang]
});
});
}
}
function renderTable(tableID, tableData) {
tableData = tableData || [];
var lang = localStorage.getItem('lang') || 'cn';
var langIndex = (lang === 'en' ? 'en-US' : 'zh-CN');
var rank = 1;
var processData = tableData.map(function(d) {
return [rank++, d.name ? d.name[langIndex] : "未知卡片", d.frequency, d.putone, d
.puttwo, d.putthree, d.id
];
});
var table = $(tableID).DataTable({
data: processData,
pageLength: 50,
order: [
[2, "desc"]
],
"ordering": true,
columns: [{
title: tb_language[lang].rank
},
{
title: tb_language[lang].cardName
},
{
title: tb_language[lang].used
},
{
title: tb_language[lang].put1
},
{
title: tb_language[lang].put2
},
{
title: tb_language[lang].put3
},
],
"columnDefs": [{
"render": function(data, type, row) {
return "<a href='https://www.ourocg.cn/search/" + row[6] +
"'>" + data + "</a>";
},
"targets": 1
}, ],
"language": tb_language[lang]
});
$(".input-sm").attr("placeholder",placeholder.Deck)
return table;
}
renderPage();
$("#search").click(function() {
renderPage();
return false;
})
},
onChange: function() {
$("#search").trigger('click')
this.getCount()
},
getCount: function() {
var server = $("#server").val() || "mycard"
var source = $("#source").val() || "athletic"
var opt = {
type: $("#type").val() || "day",
source: server + "-" + source
}
var self = this
API.getCount(opt).then((res) => {
if (isNaN(res.data)) {
self.totalDeck = 0
} else {
self.totalDeck = res.data
}
});
}
},
events: {
'lang-change': function(lang) {
this.init(lang)
this.onChange()
}
},
} }
},
events: {
'lang-change': function (lang) {
this.init(lang)
this.onChange()
}
},
}
</script> </script>
<style scoped> <style scoped>
#deck { #deck {
margin-top: 20px !important; margin-top:20px!important;
border: 1px solid black; border:1px solid black;
} }
</style> </style>
\ No newline at end of file
...@@ -6,84 +6,83 @@ ...@@ -6,84 +6,83 @@
<div class="thumbnail"> <div class="thumbnail">
<img v-bind:src="user.avatar_url" style="height:200px;margin-top:13px;"> <img v-bind:src="user.avatar_url" style="height:200px;margin-top:13px;">
<div class="caption"> <div class="caption">
<h3><i class="glyphicon glyphicon-user"></i> <strong>{{ user.username }}</strong></h3> <h3> <i class="glyphicon glyphicon-user"></i> <strong>{{user.username}}</strong></h3>
<p class="text-muted" style="font-size:20px;">今日首胜: {{ activity.today }}/1 </p> <p class="text-muted" style="font-size:20px;">今日首胜: {{activity.today}}/1 </p>
<p class="text-muted" v-if="showActivity" style="font-size:20px;">{{ activity.name }}首胜: <p class="text-muted" v-if="showActivity" style="font-size:20px;">{{activity.name}}首胜: {{activity.total}}/{{activity.max}} </p>
{{ activity.total }}/{{ activity.max }} </p>
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-9"> <div class="col-md-9">
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title">{{ lang.athletic }} </h3> <h3 class="panel-title">{{lang.athletic}} </h3>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-bordered table-hover"> <table class="table table-striped table-bordered table-hover">
<tbody> <tbody>
<tr> <tr>
<td>D.P</td> <td>D.P </td>
<td>{{ user_info.pt }}</td> <td>{{user_info.pt}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.athletic_rank }}</td> <td>{{lang.athletic_rank}} </td>
<td>{{ user_info.arena_rank }}</td> <td>{{user_info.arena_rank}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.win }}</td> <td>{{lang.win}} </td>
<td>{{ user_info.athletic_win }}</td> <td>{{user_info.athletic_win}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.lose }}</td> <td>{{lang.lose}} </td>
<td>{{ user_info.athletic_lose }}</td> <td>{{user_info.athletic_lose}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.draw }}</td> <td>{{lang.draw}} </td>
<td>{{ user_info.athletic_draw }}</td> <td>{{user_info.athletic_draw}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.all }}</td> <td>{{lang.all}} </td>
<td>{{ user_info.athletic_all }}</td> <td>{{user_info.athletic_all}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.ratio }}</td> <td>{{lang.ratio}} </td>
<td>{{ user_info.athletic_wl_ratio }}%</td> <td>{{user_info.athletic_wl_ratio}}% </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title">{{ lang.entertain }} </h3> <h3 class="panel-title">{{lang.entertain}} </h3>
</div> </div>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-bordered table-hover"> <table class="table table-striped table-bordered table-hover">
<tbody> <tbody>
<tr> <tr>
<td>EXP</td> <td>EXP </td>
<td>{{ user_info.exp }}</td> <td>{{user_info.exp}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.exp_rank }}</td> <td>{{lang.exp_rank}} </td>
<td>{{ user_info.exp_rank }}</td> <td>{{user_info.exp_rank}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.win }}</td> <td>{{lang.win}} </td>
<td>{{ user_info.entertain_win }}</td> <td>{{user_info.entertain_win}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.lose }}</td> <td>{{lang.lose}} </td>
<td>{{ user_info.entertain_lose }}</td> <td>{{user_info.entertain_lose}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.draw }}</td> <td>{{lang.draw}} </td>
<td>{{ user_info.entertain_draw }}</td> <td>{{user_info.entertain_draw}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.all }}</td> <td>{{lang.all}} </td>
<td>{{ user_info.entertain_all }}</td> <td>{{user_info.entertain_all}} </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
...@@ -91,63 +90,47 @@ ...@@ -91,63 +90,47 @@
<div class="alert alert-info alert-dismissible" role="alert"> <div class="alert alert-info alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button> {{lang.tagInfo}}
aria-hidden="true">&times;</span></button>
{{ lang.tagInfo }}
</div> </div>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title">{{ lang.athleticDueHistory }} </h3> <h3 class="panel-title">{{lang.athleticDueHistory}} </h3>
</div> </div>
<!--<div class="panel-body">--> <!--<div class="panel-body">-->
<!--<div style="width:100%;overflow-x:auto;overflow-y:hidden;"> <!--<div style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="rank" class="table table-striped table-bordered table-hover example" ></table> <table id="rank" class="table table-striped table-bordered table-hover example" ></table>
</div>--> </div>-->
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;"> <div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="athletic_rank" class="table table-striped table-bordered table-hover example" <table id="athletic_rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }"></table>
:class="{ scroll: isMobile }"></table>
</div> </div>
<!--</div>--> <!--</div>-->
<!--<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;"> <!--<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }" ></table> <table id="rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }" ></table>
</div>--> </div>-->
</div> </div>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title">{{ lang.entertainDueHistory }} </h3> <h3 class="panel-title">{{lang.entertainDueHistory}} </h3>
</div> </div>
<!--<div class="panel-body">--> <!--<div class="panel-body">-->
<!--<div style="width:100%;overflow-x:auto;overflow-y:hidden;"> <!--<div style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="rank" class="table table-striped table-bordered table-hover example" ></table> <table id="rank" class="table table-striped table-bordered table-hover example" ></table>
</div>--> </div>-->
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;"> <div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="entertain_rank" class="table table-striped table-bordered table-hover example" <table id="entertain_rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }"></table>
:class="{ scroll: isMobile }"></table>
</div> </div>
<!--</div>--> <!--</div>-->
<!--<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;"> <!--<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }" ></table> <table id="rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }" ></table>
</div>--> </div>-->
<div class="panel panel-default"> </div>
<div class="panel-heading">
<h3 class="panel-title">{{ lang.monthlyHistory }} </h3>
</div>
<!--<div class="panel-body">-->
<!--<div style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="rank" class="table table-striped table-bordered table-hover example" ></table>
</div>-->
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="monthly_rank" class="table table-striped table-bordered table-hover example"
:class="{ scroll: isMobile }"></table>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -155,97 +138,99 @@ ...@@ -155,97 +138,99 @@
</template> </template>
<script> <script>
import querystring from 'querystring'; import querystring from 'querystring';
import API from '../api' import API from '../api'
import {mapGetters} from 'vuex' import { mapGetters } from 'vuex'
var rankTable; var rankTable;
var rankTable2; var rankTable2;
var rankTable3; import moment from 'moment'
import moment from 'moment' import tb_language from './tb_lang.js'
import tb_language from './tb_lang.js'
export default {
export default { data() {
data() { return {
return { isMobile: false,
isMobile: false, activity: {
activity: { today: 0,
today: 0, name: '新年充电活动',
name: '新年充电活动', max: '15'
max: '15' },
}, showActivity: false,
showActivity: false, user_info: {
user_info: { exp: 0,
exp: 0, pt: 500,
pt: 500, entertain_win: 0,
entertain_win: 0, entertain_lose: 0,
entertain_lose: 0, entertain_draw: 0,
entertain_draw: 0, entertain_all: 0,
entertain_all: 0, entertain_wl_ratio: 0,
entertain_wl_ratio: 0, exp_rank: 0,
exp_rank: 0, athletic_win: 0,
athletic_win: 0, athletic_lose: 0,
athletic_lose: 0, athletic_draw: 0,
athletic_draw: 0, athletic_all: 0,
athletic_all: 0, athletic_wl_ratio: 0,
athletic_wl_ratio: 0, arena_rank: 0
arena_rank: 0 }
} }
} },
}, computed: {
computed: { ...mapGetters({
...mapGetters({ lang: 'getLang',
lang: 'getLang', user: 'getUser'
user: 'getUser' }),
}), },
},
mounted: function () { mounted: function () {
var _this = this var _this = this
$("#search").click(function () { $("#search").click(function () {
_this.renderPage(); _this.renderPage();
}) })
// this.init() // this.init()
// window.onhashchange = this.init; // window.onhashchange = this.init;
this.renderPage(); this.renderPage();
}, },
created: function () {
created: function () {
var regex_match = /(nokia|iphone|android|motorola|^mot-|softbank|foma|docomo|kddi|up.browser|up.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte-|longcos|pantech|gionee|^sie-|portalmmm|jigs browser|hiptop|^benq|haier|^lct|operas*mobi|opera*mini|320x320|240x320|176x220)/i;
var u = navigator.userAgent; var regex_match = /(nokia|iphone|android|motorola|^mot-|softbank|foma|docomo|kddi|up.browser|up.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte-|longcos|pantech|gionee|^sie-|portalmmm|jigs browser|hiptop|^benq|haier|^lct|operas*mobi|opera*mini|320x320|240x320|176x220)/i;
if (null == u) { var u = navigator.userAgent;
return true; if (null == u) {
} return true;
var result = regex_match.exec(u); }
if (null == result) { var result = regex_match.exec(u);
this.isMobile = false; if (null == result) {
} else { this.isMobile = false;
this.isMobile = true; } else {
} this.isMobile = true;
}
let opt = {
'username': this.user.username let opt = {
} 'username': this.user.username
}
API.getUserInfo(opt).then((res) => {
this.user_info = res.data API.getUserInfo(opt).then((res) => {
console.log('%c ---------------------src' + '\\' + 'components' + '\\' + 'Profile.vue---------------------%c:219', 'background:#ed162b', 'background:#7d382d', this.user_info = res.data
console.log('%c ---------------------src'+'\\'+'components'+'\\'+'Profile.vue---------------------%c:219','background:#ed162b','background:#7d382d',
res) res)
}); });
}, },
methods: { methods: {
exchangeUserInfo(info) { exchangeUserInfo(info){
let userName = this.user.username let userName=this.user.username
let exchangeInfo = info let exchangeInfo=info
if (info.usernamea != userName) { if(info.usernamea!=userName)
exchangeInfo = { {
"type": info.type, exchangeInfo={
"start_time": info.start_time, "type":info.type,
"start_time":info.start_time,
"isfirstwin": info.isfirstwin, "isfirstwin": info.isfirstwin,
"end_time": info.end_time, "end_time": info.end_time,
"usernamea": info.usernameb, "usernamea": info.usernameb,
...@@ -263,173 +248,155 @@ export default { ...@@ -263,173 +248,155 @@ export default {
"winner": info.winner, "winner": info.winner,
} }
}
} console.log('%c ---------------------src'+'\\'+'components'+'\\'+'Profile.vue---------------------%c:227','background:#1b5fbd','background:#ce8e6b',
console.log('%c ---------------------src' + '\\' + 'components' + '\\' + 'Profile.vue---------------------%c:227', 'background:#1b5fbd', 'background:#ce8e6b',
exchangeInfo) exchangeInfo)
return exchangeInfo return exchangeInfo
}, },
init: function () { init: function () {
}, },
renderPage: function () {
if (rankTable) {
rankTable.destroy();
}
if (rankTable2) {
rankTable2.destroy();
}
if (rankTable3) {
rankTable3.destroy();
}
var username = this.user.username
var type = 1;
rankTable = this.renderRankTable("#athletic_rank", [], "DP");
rankTable2 = this.renderRankTable("#entertain_rank", [], "");
rankTable3 = this.renderRankTable("#monthly_rank", [], "");
if (!username) return;
API.getUserDueHistory({username: username, type: "1", page_num: 100}).then((res) => {
renderPage: function () {
if (rankTable) { if (rankTable) {
rankTable.destroy(); rankTable.destroy();
} }
rankTable = this.renderRankTable("#athletic_rank", res.data.data, "DP")
}, (res) => {
});
API.getUserDueHistory({username: username, type: "2", page_num: 100}).then((res) => {
if (rankTable2) { if (rankTable2) {
rankTable2.destroy(); rankTable2.destroy();
} }
rankTable2 = this.renderRankTable("#entertain_rank", res.data.data, "")
}, (res) => {
console.log('%c ---------------------src' + '\\' + 'components' + '\\' + 'Profile.vue---------------------%c:258', 'background:#ef98b5', 'background:#53116e',
res)
});
// 每月决斗记录数据获取
var season = new Date().toISOString().slice(0, 7);
API.getMonthlyHistory({username: username, season:season}).then((res) => {
if (rankTable3) {
rankTable3.destroy();
}
rankTable3 = this.renderRankTable("#monthly_rank", res.data.data, "")
}, (res) => {
console.log('%c ---------------------src' + '\\' + 'components' + '\\' + 'Profile.vue---------------------%c:258', 'background:#ef98b5', 'background:#53116e',
res)
});
var _this = this; var username = this.user.username
var type = 1;
API.getFirstWin({username: username}).then((res) => {
_this.activity = res.data rankTable = this.renderRankTable("#athletic_rank", [], "DP");
if (_this.activity.name && _this.activity.name.trim().length > 0) { rankTable2 = this.renderRankTable("#entertain_rank", [], "");
_this.showActivity = true;
} if (!username) return;
}, (res) => {
console.log('%c ---------------------src' + '\\' + 'components' + '\\' + 'Profile.vue---------------------%c:271', 'background:#c85336', 'background:#a4c933', API.getUserDueHistory({ username: username, type: "1", page_num: 100 }).then((res) => {
res)
}); if (rankTable) {
}, rankTable.destroy();
}
rankTable = this.renderRankTable("#athletic_rank", res.data.data, "DP")
}, (res) => {
});
API.getUserDueHistory({ username: username, type: "2", page_num: 100 }).then((res) => {
if (rankTable2) {
rankTable2.destroy();
}
rankTable2 = this.renderRankTable("#entertain_rank", res.data.data, "")
}, (res) => {
console.log('%c ---------------------src'+'\\'+'components'+'\\'+'Profile.vue---------------------%c:258','background:#ef98b5','background:#53116e',
res)
});
var _this = this;
API.getFirstWin({ username: username }).then((res) => {
_this.activity = res.data
if (_this.activity.name && _this.activity.name.trim().length > 0) {
_this.showActivity = true;
}
}, (res) => {
console.log('%c ---------------------src'+'\\'+'components'+'\\'+'Profile.vue---------------------%c:271','background:#c85336','background:#a4c933',
res)
});
},
renderRankTable: function (id, tableData, ttype) { renderRankTable: function (id, tableData, ttype) {
tableData = tableData || []; tableData = tableData || [];
var lang = localStorage.getItem('lang') || 'cn'; var lang = localStorage.getItem('lang') || 'cn';
var rank = 1; var rank = 1;
console.log('%c ---------------------src' + '\\' + 'components' + '\\' + 'Profile.vue---------------------%c:284', 'background:#c896f3', 'background:#f332b2', console.log('%c ---------------------src'+'\\'+'components'+'\\'+'Profile.vue---------------------%c:284','background:#c896f3','background:#f332b2',
tableData) tableData)
let that=this
let that = this var processData = tableData.map(function (d) {
var processData = tableData.map(function (d) { d=that.exchangeUserInfo(d)
d = that.exchangeUserInfo(d) return [d.usernamea, d.usernameb, moment(d.start_time).format('YYYY-MM-DD HH:mm'),
return [d.usernamea, d.usernameb, moment(d.start_time).format('YYYY-MM-DD HH:mm'),
moment(d.end_time).format('YYYY-MM-DD HH:mm'), d.userscorea, d.userscoreb, moment(d.end_time).format('YYYY-MM-DD HH:mm'), d.userscorea, d.userscoreb,
d.pta, d.pta_ex, d.ptb, d.ptb_ex]; d.pta, d.pta_ex, d.ptb, d.ptb_ex];
}); });
var table = $(id).DataTable({ var table = $(id).DataTable({
paging: true, paging: true,
searching: false, searching: false,
ordering: false, ordering: false,
lengthChange: false, lengthChange: false,
info: false, info: false,
data: processData, data: processData,
columns: [ columns: [
{title: tb_language[lang].playerA}, { title: tb_language[lang].playerA },
{title: tb_language[lang].playerB}, { title: tb_language[lang].playerB },
{title: tb_language[lang].startTime}, { title: tb_language[lang].startTime },
{title: tb_language[lang].endTime}, { title: tb_language[lang].endTime },
], ],
"columnDefs": [ "columnDefs": [
{ {
"render": function (data, type, row) { "render": function (data, type, row) {
var userscorea = row[4]; var userscorea = row[4];
var userscoreb = row[5]; var userscoreb = row[5];
var diff = (parseFloat(row[6]) - parseFloat(row[7])).toFixed(2) var diff = (parseFloat(row[6]) - parseFloat(row[7])).toFixed(2)
if (diff > 0) { if (diff > 0) {
diff = "+" + diff diff = "+" + diff
} }
var append = diff + ttype var append = diff + ttype
if (ttype === "") { if (ttype === "") {
append = "" append = ""
} }
if (userscorea < 0) { if (userscorea < 0) {
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-danger'>" + data + "</span></a> " + append; return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-danger'>" + data + "</span></a> " + append;
} }
if (userscorea > userscoreb) { if (userscorea > userscoreb) {
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-success'>" + data + "</span></a> " + append; return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-success'>" + data + "</span></a> " + append;
} }
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-info'>" + data + "</span></a> " + append; return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-info'>" + data + "</span></a> " + append;
},
"targets": 0
}, },
"targets": 0 {
}, "render": function (data, type, row) {
{ var userscorea = row[4];
"render": function (data, type, row) { var userscoreb = row[5];
var userscorea = row[4]; var diff = (parseFloat(row[8]) - parseFloat(row[9])).toFixed(2)
var userscoreb = row[5]; if (diff > 0) {
var diff = (parseFloat(row[8]) - parseFloat(row[9])).toFixed(2) diff = "+" + diff
if (diff > 0) { }
diff = "+" + diff var append = diff + ttype
} if (ttype === "") {
var append = diff + ttype append = ""
if (ttype === "") { }
append = "" if (userscoreb < 0) {
} return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-danger'>" + data + "</span></a> " + append;
if (userscoreb < 0) { }
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-danger'>" + data + "</span></a> " + append;
} if (userscorea < userscoreb) {
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-success'>" + data + "</span></a> " + append;
if (userscorea < userscoreb) { }
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-success'>" + data + "</span></a> " + append;
} return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-info'>" + data + "</span></a> " + append;
},
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-info'>" + data + "</span></a> " + append; "targets": 1
}, },
"targets": 1 ],
}, "language": lang === 'en' ? tb_language.en : tb_language.cn
], });
"language": lang === 'en' ? tb_language.en : tb_language.cn
});
return table; return table;
}, },
}, },
} }
</script> </script>
\ No newline at end of file
<template> <template>
<div class="content"> <div class="content">
<div class="container"> <div class="container">
<div class="fck"> <div class="fck">
<form id="search-form" class="search-form" @submit.prevent="onSubmit"> <form id="search-form" class="search-form" @submit.prevent="onSubmit">
<div class="form-group" v-bind:class="{ 'has-error': hasError}"> <div class="form-group" v-bind:class="{ 'has-error': hasError}">
<label class="control-label" for="searchText" v-if="hasError">{{ lang.battle.notfound }}</label> <label class="control-label" for="searchText" v-if="hasError">{{lang.battle.notfound}}</label>
<div class="input-group"> <div class="input-group">
<div class="input-group-addon"><span><i class="glyphicon glyphicon-search"></i></span></div> <div class="input-group-addon"><span><i class="glyphicon glyphicon-search"></i></span></div>
<input class="form-control" type="text" id="searchText" v-model="searchText" <input class="form-control" type="text" id="searchText" v-model="searchText" :placeholder="lang.battle.ph2">
:placeholder="lang.battle.ph2"> <div class="input-group-btn">
<div class="input-group-btn"> <button class="btn btn-default" type="submit">{{lang.battle.search}}</button>
<button class="btn btn-default" type="submit">{{ lang.battle.search }}</button> <button class="btn btn-default" style="display:none" type="submit" id="search">{{lang.battle.search}}</button>
<button class="btn btn-default" style="display:none" type="submit" id="search"> </div>
{{ lang.battle.search }} </div>
</button> </div>
</div> </form>
</div> </div>
</div>
</form> <div class="row">
</div> <div class="col-md-3" id="profile">
<div class="thumbnail">
<div class="row"> <img v-bind:src="avatar_url" style="height:200px;margin-top:13px;">
<div class="col-md-3" id="profile"> <div class="caption">
<div class="thumbnail"> <h3> <i class="glyphicon glyphicon-user"></i> <strong>{{username}}</strong></h3>
<img v-bind:src="avatar_url" style="height:200px;margin-top:13px;"> <!--<p class="text-nowrap text-muted" style="font-size:20px;">有妞不泡,大逆不道;遇妞则泡,替天行道。 </p>-->
<div class="caption"> <p class="text-muted" style="font-size:20px;">今日首胜: {{activity.today}}/1 </p>
<h3><i class="glyphicon glyphicon-user"></i> <strong>{{ username }}</strong></h3> <p class="text-muted" v-if="showActivity" style="font-size:20px;">{{activity.name}}首胜: {{activity.total}}/{{activity.max}} </p>
<!--<p class="text-nowrap text-muted" style="font-size:20px;">有妞不泡,大逆不道;遇妞则泡,替天行道。 </p>--> </div>
<p class="text-muted" style="font-size:20px;">今日首胜: {{ activity.today }}/1 </p> </div>
<p class="text-muted" v-if="showActivity" style="font-size:20px;">{{ activity.name }}首胜: </div>
{{ activity.total }}/{{ activity.max }} </p>
</div> <div class="col-md-9">
</div> <div class="panel panel-default">
</div> <div class="panel-heading">
<h3 class="panel-title">{{lang.athletic}} </h3>
<div class="col-md-9"> </div>
<div class="row"> <div class="table-responsive">
<div class="col-md-6"> <table class="table table-striped table-bordered table-hover">
<div class="panel panel-default panel-tietie"> <tbody>
<div class="panel-heading"> <tr>
<h3 class="panel-title">{{ lang.athletic }}</h3> <td>D.P </td>
</div> <td>{{user_info.pt}} </td>
<div class="table-responsive"> </tr>
<table class="table table-striped table-bordered table-hover "> <tr>
<tbody> <td>{{lang.athletic_rank}} </td>
<tr> <td>{{user_info.arena_rank}} </td>
<td>D.P</td> </tr>
<td>{{ user_info.pt }}</td> <tr>
</tr> <td>{{lang.win}} </td>
<tr> <td>{{user_info.athletic_win}} </td>
<td>{{ lang.athletic_rank }}</td> </tr>
<td>{{ user_info.arena_rank }}</td> <tr>
</tr> <td>{{lang.lose}} </td>
<tr> <td>{{user_info.athletic_lose}} </td>
<td>{{ lang.win }}</td> </tr>
<td>{{ user_info.athletic_win }}</td> <tr>
</tr> <td>{{lang.draw}} </td>
<tr> <td>{{user_info.athletic_draw}} </td>
<td>{{ lang.lose }}</td> </tr>
<td>{{ user_info.athletic_lose }}</td> <tr>
</tr> <td>{{lang.all}} </td>
<tr> <td>{{user_info.athletic_all}} </td>
<td>{{ lang.draw }}</td> </tr>
<td>{{ user_info.athletic_draw }}</td> <tr>
</tr> <td>{{lang.ratio}} </td>
<tr> <td>{{user_info.athletic_wl_ratio}}% </td>
<td>{{ lang.all }}</td> </tr>
<td>{{ user_info.athletic_all }}</td> </tbody>
</tr> </table>
<tr> </div>
<td>{{ lang.ratio }}</td> </div>
<td>{{ user_info.athletic_wl_ratio }}%</td> <div class="panel panel-default">
</tr> <div class="panel-heading">
</tbody> <h3 class="panel-title">{{lang.entertain}} </h3>
</table> </div>
</div> <div class="table-responsive">
</div> <table class="table table-striped table-bordered table-hover">
</div> <tbody>
<div class="col-md-6"> <tr>
<div class="panel panel-default panel-tietie"> <td>EXP </td>
<div class="panel-heading"> <td>{{user_info.exp}} </td>
<h3 class="panel-title">{{ lang.athletic }}</h3> </tr>
</div> <tr>
<div class="table-responsive"> <td>{{lang.exp_rank}} </td>
<table class="table table-striped table-bordered table-hover"> <td>{{user_info.exp_rank}} </td>
<tbody> </tr>
<tr> <tr>
<td>D.P</td> <td>{{lang.win}} </td>
<td>{{ user_info.pt }}</td> <td>{{user_info.entertain_win}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.athletic_rank }}</td> <td>{{lang.lose}} </td>
<td>{{ user_info.arena_rank }}</td> <td>{{user_info.entertain_lose}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.win }}</td> <td>{{lang.draw}} </td>
<td>{{ user_info.athletic_win }}</td> <td>{{user_info.entertain_draw}} </td>
</tr> </tr>
<tr> <tr>
<td>{{ lang.lose }}</td> <td>{{lang.all}} </td>
<td>{{ user_info.athletic_lose }}</td> <td>{{user_info.entertain_all}} </td>
</tr> </tr>
<tr> </tbody>
<td>{{ lang.draw }}</td> </table>
<td>{{ user_info.athletic_draw }}</td> </div>
</tr> </div>
<tr>
<td>{{ lang.all }}</td> <div class="alert alert-info alert-dismissible" role="alert">
<td>{{ user_info.athletic_all }}</td> <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button> {{lang.tagInfo}}
</tr> </div>
<tr>
<td>{{ lang.ratio }}</td> <div class="panel panel-default">
<td>{{ user_info.athletic_wl_ratio }}%</td> <div class="panel-heading">
</tr> <h3 class="panel-title">{{lang.athleticDueHistory}} </h3>
</tbody> </div>
</table> <!--<div class="panel-body">-->
</div> <!--<div style="width:100%;overflow-x:auto;overflow-y:hidden;">
</div> <table id="rank" class="table table-striped table-bordered table-hover example" ></table>
</div> </div>-->
</div> <div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="athletic_rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }"></table>
<div class="row"> </div>
<div class="col-md-6"> <!--</div>-->
<div class="panel panel-default"> <!--<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<div class="panel-heading"> <table id="rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }" ></table>
<h3 class="panel-title">{{ lang.entertain }} </h3> </div>-->
</div>
<div class="table-responsive"> </div>
<table class="table table-striped table-bordered table-hover">
<tbody> <div class="panel panel-default">
<tr> <div class="panel-heading">
<td>EXP</td> <h3 class="panel-title">{{lang.entertainDueHistory}} </h3>
<td>{{ user_info.exp }}</td> </div>
</tr> <!--<div class="panel-body">-->
<tr> <!--<div style="width:100%;overflow-x:auto;overflow-y:hidden;">
<td>{{ lang.exp_rank }}</td> <table id="rank" class="table table-striped table-bordered table-hover example" ></table>
<td>{{ user_info.exp_rank }}</td> </div>-->
</tr> <div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<tr> <table id="entertain_rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }"></table>
<td>{{ lang.win }}</td> </div>
<td>{{ user_info.entertain_win }}</td> <!--</div>-->
</tr> <!--<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<tr> <table id="rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }" ></table>
<td>{{ lang.lose }}</td> </div>-->
<td>{{ user_info.entertain_lose }}</td>
</tr> </div>
<tr>
<td>{{ lang.draw }}</td> </div>
<td>{{ user_info.entertain_draw }}</td> </div>
</tr> </div>
<tr> </div>
<td>{{ lang.all }}</td>
<td>{{ user_info.entertain_all }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{{ lang.entertain }} </h3>
</div>
<div class="table-responsive">
<table class="table table-striped table-bordered table-hover">
<tbody>
<tr>
<td>EXP</td>
<td>{{ user_info.exp }}</td>
</tr>
<tr>
<td>{{ lang.exp_rank }}</td>
<td>{{ user_info.exp_rank }}</td>
</tr>
<tr>
<td>{{ lang.win }}</td>
<td>{{ user_info.entertain_win }}</td>
</tr>
<tr>
<td>{{ lang.lose }}</td>
<td>{{ user_info.entertain_lose }}</td>
</tr>
<tr>
<td>{{ lang.draw }}</td>
<td>{{ user_info.entertain_draw }}</td>
</tr>
<tr>
<td>{{ lang.all }}</td>
<td>{{ user_info.entertain_all }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="alert alert-info alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span
aria-hidden="true">&times;</span></button>
{{ lang.tagInfo }}
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{{ lang.athleticDueHistory }} </h3>
</div>
<!--<div class="panel-body">-->
<!--<div style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="rank" class="table table-striped table-bordered table-hover example" ></table>
</div>-->
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="athletic_rank" class="table table-striped table-bordered table-hover example"
:class="{ scroll: isMobile }"></table>
</div>
<!--</div>-->
<!--<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }" ></table>
</div>-->
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{{ lang.entertainDueHistory }} </h3>
</div>
<!--<div class="panel-body">-->
<!--<div style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="rank" class="table table-striped table-bordered table-hover example" ></table>
</div>-->
<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="entertain_rank" class="table table-striped table-bordered table-hover example"
:class="{ scroll: isMobile }"></table>
</div>
<!--</div>-->
<!--<div class="table-responsive" style="width:100%;overflow-x:auto;overflow-y:hidden;">
<table id="rank" class="table table-striped table-bordered table-hover example" :class="{ scroll: isMobile }" ></table>
</div>-->
</div>
</div>
</div>
</div>
</div>
</template> </template>
<script> <script>
import querystring from 'querystring'; import querystring from 'querystring';
import img1 from '../assets/img/images1.jpeg'
import img2 from '../assets/img/images2.jpeg' import img1 from '../assets/img/images1.jpeg'
import img3 from '../assets/img/images3.jpeg' import img2 from '../assets/img/images2.jpeg'
import API from '../api' import img3 from '../assets/img/images3.jpeg'
import API from '../api'
import tb_language from './tb_lang.js'
import {mapGetters} from 'vuex' import tb_language from './tb_lang.js'
import { mapGetters } from 'vuex'
import moment from 'moment'
import moment from 'moment'
var rankTable;
var rankTable2; var rankTable;
var rankTable2;
export default { export default {
data() { data() {
return { return {
activity: { activity: {
today: 0, today: 0,
name: '新年充电活动', name: '新年充电活动',
max: '15' max: '15'
}, },
showActivity: false, showActivity: false,
searchText: "", searchText: "",
hasError: false, hasError: false,
username: "", username: "",
avatar_url: "", avatar_url: "",
isMobile: false, isMobile: false,
user_info: { user_info: {
exp: 0, exp: 0,
pt: 500, pt: 500,
entertain_win: 0, entertain_win: 0,
entertain_lose: 0, entertain_lose: 0,
entertain_draw: 0, entertain_draw: 0,
entertain_all: 0, entertain_all: 0,
entertain_wl_ratio: 0, entertain_wl_ratio: 0,
exp_rank: 0, exp_rank: 0,
athletic_win: 0, athletic_win: 0,
athletic_lose: 0, athletic_lose: 0,
athletic_draw: 0, athletic_draw: 0,
athletic_all: 0, athletic_all: 0,
athletic_wl_ratio: 0, athletic_wl_ratio: 0,
arena_rank: 0 arena_rank: 0
}, }
} }
}, },
created: function () { created: function () {
var regex_match = /(nokia|iphone|android|motorola|^mot-|softbank|foma|docomo|kddi|up.browser|up.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte-|longcos|pantech|gionee|^sie-|portalmmm|jigs browser|hiptop|^benq|haier|^lct|operas*mobi|opera*mini|320x320|240x320|176x220)/i; var regex_match = /(nokia|iphone|android|motorola|^mot-|softbank|foma|docomo|kddi|up.browser|up.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte-|longcos|pantech|gionee|^sie-|portalmmm|jigs browser|hiptop|^benq|haier|^lct|operas*mobi|opera*mini|320x320|240x320|176x220)/i;
var u = navigator.userAgent; var u = navigator.userAgent;
if (null == u) { if (null == u) {
return true; return true;
} }
var result = regex_match.exec(u); var result = regex_match.exec(u);
if (null == result) { if (null == result) {
this.isMobile = false; this.isMobile = false;
} else { } else {
this.isMobile = true; this.isMobile = true;
} }
}, },
watch: { watch: {
lang: function (val) { lang: function (val) {
this.init() this.init()
}, },
}, },
mounted: function () { mounted: function () {
var _this = this var _this = this
$("#search").click(function () { $("#search").click(function () {
_this.renderPage(); _this.renderPage();
}) })
this.init() this.init()
window.onhashchange = this.init; window.onhashchange = this.init;
}, },
computed: { computed: {
...mapGetters({ ...mapGetters({
lang: 'getLang', lang: 'getLang',
}), }),
}, },
methods: { methods: {
exchangeUserInfo(info) { exchangeUserInfo(info){
let userName = this.username let userName=this.username
let exchangeInfo = info let exchangeInfo=info
if (info.usernamea != userName) { if(info.usernamea!=userName)
exchangeInfo = { {
"type": info.type, exchangeInfo={
"start_time": info.start_time, "type":info.type,
"isfirstwin": info.isfirstwin, "start_time":info.start_time,
"end_time": info.end_time, "isfirstwin": info.isfirstwin,
"usernamea": info.usernameb, "end_time": info.end_time,
"usernameb": info.usernamea, "usernamea": info.usernameb,
"userscorea": info.userscoreb, "usernameb": info.usernamea,
"userscoreb": info.userscorea, "userscorea": info.userscoreb,
"expa": info.expb, "userscoreb": info.userscorea,
"expb": info.expa, "expa": info.expb,
"expa_ex": info.expb_ex, "expb": info.expa,
"expb_ex": info.expa_ex, "expa_ex": info.expb_ex,
"pta": info.ptb, "expb_ex": info.expa_ex,
"ptb": info.pta, "pta": info.ptb,
"pta_ex": info.ptb_ex, "ptb": info.pta,
"ptb_ex": info.pta_ex, "pta_ex": info.ptb_ex,
"winner": info.winner, "ptb_ex": info.pta_ex,
} "winner": info.winner,
} }
return exchangeInfo
}, }
onSubmit: function () { return exchangeInfo
this.searchByUsername(this.searchText) },
}, onSubmit: function () {
this.searchByUsername(this.searchText)
init: function () { },
var username = querystring.parse(location.hash.slice(11)).username
this.searchText = username; init: function () {
this.searchByUsername(username) var username = querystring.parse(location.hash.slice(11)).username
}, this.searchText = username;
this.searchByUsername(username)
renderPage: function () { },
if (rankTable) {
rankTable.destroy(); renderPage: function () {
} if (rankTable) {
rankTable.destroy();
if (rankTable2) { }
rankTable2.destroy();
} if (rankTable2) {
rankTable2.destroy();
var username = this.searchText }
var type = 1;
var username = this.searchText
var type = 1;
rankTable = this.renderRankTable("#athletic_rank", [], "DP");
rankTable2 = this.renderRankTable("#entertain_rank", [], "");
rankTable = this.renderRankTable("#athletic_rank", [], "DP");
if (!username) return; rankTable2 = this.renderRankTable("#entertain_rank", [], "");
API.getUserDueHistory({username: username, type: "1", page_num: 100}).then((res) => { if (!username) return;
if (rankTable) {
rankTable.destroy(); API.getUserDueHistory({ username: username, type: "1", page_num: 100 }).then((res) => {
} if (rankTable) {
rankTable = this.renderRankTable("#athletic_rank", res.data.data, "DP") rankTable.destroy();
}, (res) => { }
// console.log(res) rankTable = this.renderRankTable("#athletic_rank", res.data.data, "DP")
}); }, (res) => {
console.log(res)
API.getUserDueHistory({username: username, type: "2", page_num: 100}).then((res) => { });
if (rankTable2) {
rankTable2.destroy(); API.getUserDueHistory({ username: username, type: "2", page_num: 100 }).then((res) => {
} if (rankTable2) {
rankTable2 = this.renderRankTable("#entertain_rank", res.data.data, "") rankTable2.destroy();
}, (res) => { }
// console.log(res) rankTable2 = this.renderRankTable("#entertain_rank", res.data.data, "")
}); }, (res) => {
console.log(res)
});
var _this = this; var _this = this;
API.getFirstWin({username: username}).then((res) => { API.getFirstWin({ username: username }).then((res) => {
_this.activity = res.data _this.activity = res.data
if (_this.activity.name && _this.activity.name.trim().length > 0) { if (_this.activity.name && _this.activity.name.trim().length > 0) {
_this.showActivity = true; _this.showActivity = true;
} }
}, (res) => { }, (res) => {
// console.log(res) console.log(res)
}); });
}, },
renderRankTable: function (id, tableData, ttype) { renderRankTable: function (id, tableData, ttype) {
tableData = tableData || []; tableData = tableData || [];
var lang = localStorage.getItem('lang') || 'cn'; var lang = localStorage.getItem('lang') || 'cn';
var rank = 1; var rank = 1;
let that = this let that=this
var processData = tableData.map(function (d) { var processData = tableData.map(function (d) {
d = that.exchangeUserInfo(d) d=that.exchangeUserInfo(d)
return [d.usernamea, d.usernameb, moment(d.start_time).format('YYYY-MM-DD HH:mm'), return [d.usernamea, d.usernameb, moment(d.start_time).format('YYYY-MM-DD HH:mm'),
moment(d.end_time).format('YYYY-MM-DD HH:mm'), d.userscorea, d.userscoreb, moment(d.end_time).format('YYYY-MM-DD HH:mm'), d.userscorea, d.userscoreb,
d.pta, d.pta_ex, d.ptb, d.ptb_ex]; d.pta, d.pta_ex, d.ptb, d.ptb_ex];
}); });
var table = $(id).DataTable({ var table = $(id).DataTable({
paging: true, paging: true,
pageLength: 25, pageLength: 25,
searching: false, searching: false,
ordering: false, ordering: false,
lengthChange: false, lengthChange: false,
info: false, info: false,
data: processData, data: processData,
columns: [ columns: [
{title: tb_language[lang].playerA}, { title: tb_language[lang].playerA },
{title: tb_language[lang].playerB}, { title: tb_language[lang].playerB },
{title: tb_language[lang].startTime}, { title: tb_language[lang].startTime },
{title: tb_language[lang].endTime}, { title: tb_language[lang].endTime },
],
"columnDefs": [ ],
{ "columnDefs": [
"render": function (data, type, row) { {
var userscorea = row[4]; "render": function (data, type, row) {
var userscoreb = row[5]; var userscorea = row[4];
var diff = (parseFloat(row[6]) - parseFloat(row[7])).toFixed(2) var userscoreb = row[5];
if (diff > 0) { var diff = (parseFloat(row[6]) - parseFloat(row[7])).toFixed(2)
diff = "+" + diff if (diff > 0) {
} diff = "+" + diff
var append = diff + ttype }
if (ttype === "") { var append = diff + ttype
append = "" if (ttype === "") {
} append = ""
if (userscorea < 0) { }
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-danger'>" + data + "</span></a> " + append; if (userscorea < 0) {
} return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-danger'>" + data + "</span></a> " + append;
}
if (userscorea > userscoreb) {
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-success'>" + data + "</span></a> " + append; if (userscorea > userscoreb) {
} return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-success'>" + data + "</span></a> " + append;
}
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-info'>" + data + "</span></a> " + append;
}, return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-info'>" + data + "</span></a> " + append;
"targets": 0 },
}, "targets": 0
{ },
"render": function (data, type, row) { {
var userscorea = row[4]; "render": function (data, type, row) {
var userscoreb = row[5]; var userscorea = row[4];
var diff = (parseFloat(row[8]) - parseFloat(row[9])).toFixed(2) var userscoreb = row[5];
if (diff > 0) { var diff = (parseFloat(row[8]) - parseFloat(row[9])).toFixed(2)
diff = "+" + diff if (diff > 0) {
} diff = "+" + diff
var append = diff + ttype }
if (ttype === "") { var append = diff + ttype
append = "" if (ttype === "") {
} append = ""
if (userscoreb < 0) { }
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-danger'>" + data + "</span></a> " + append; if (userscoreb < 0) {
} return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-danger'>" + data + "</span></a> " + append;
}
if (userscorea < userscoreb) {
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-success'>" + data + "</span></a> " + append; if (userscorea < userscoreb) {
} return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-success'>" + data + "</span></a> " + append;
}
return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-info'>" + data + "</span></a> " + append;
}, return "<a href='#/userinfo?username=" + encodeURIComponent(data) + "'><span class='label label-info'>" + data + "</span></a> " + append;
"targets": 1 },
}, "targets": 1
], },
"language": lang === 'en' ? tb_language.en : tb_language.cn ],
}); "language": lang === 'en' ? tb_language.en : tb_language.cn
});
return table;
}, return table;
},
searchByUsername: function (username) {
// 0 1 2 searchByUsername: function (username) {
var rand = Math.floor(Math.random() * 3); // 0 1 2
if (rand === 0) { var rand = Math.floor(Math.random() * 3);
this.avatar_url = img1; if (rand === 0) {
} this.avatar_url = img1;
if (rand === 1) { }
this.avatar_url = img2; if (rand === 1) {
} this.avatar_url = img2;
if (rand === 2) { }
this.avatar_url = img3; if (rand === 2) {
} this.avatar_url = img3;
if (!username) return }
if (!username) return
var _this = this;
API.getAvatar({username: username}).then((res) => { var _this = this;
_this.avatar_url = res.data API.getAvatar({ username: username }).then((res) => {
}, (res) => { _this.avatar_url = res.data
_this.avatar_url = "https://cdn02.moecube.com:444/accounts/default_avatar.jpg" }, (res) => {
}); _this.avatar_url = "https://cdn02.moecube.com:444/accounts/default_avatar.jpg"
});
API.getUserInfo({username: username}).then((res) => {
this.hasError = false API.getUserInfo({ username: username }).then((res) => {
this.user_info = res.data this.hasError = false
this.username = username this.user_info = res.data
}, (res) => { this.username = username
this.hasError = true }, (res) => {
// console.log(res) this.hasError = true
}); console.log(res)
});
$("#search").trigger('click');
}
$("#search").trigger('click'); },
}
}
},
}
</script> </script>
<style scoped> <style scoped>
.fck { .fck {
margin-bottom: 20px; margin-bottom: 20px;
margin-top: -30px; margin-top: -30px;
} }
.scroll { .scroll {
width: 250%; width: 250%;
} }
.panel-tietie {
margin-bottom: 0;
border-bottom: 0;
}
</style> </style>
...@@ -41,7 +41,6 @@ module.exports = { ...@@ -41,7 +41,6 @@ module.exports = {
dueHistory: '最近决斗记录', dueHistory: '最近决斗记录',
athleticDueHistory: '竞技场决斗记录', athleticDueHistory: '竞技场决斗记录',
entertainDueHistory: '娱乐场决斗记录', entertainDueHistory: '娱乐场决斗记录',
monthlyHistory: '每月决斗记录',
tagInfo: '绿色表示获胜方,红色则表示掉线。', tagInfo: '绿色表示获胜方,红色则表示掉线。',
rates: '卡组胜率', rates: '卡组胜率',
......
module.exports = { module.exports = {
cn: { cn: {
"sProcessing": "处理中...", "sProcessing": "处理中...",
"sLengthMenu": "显示 _MENU_ 项结果", "sLengthMenu": "显示 _MENU_ 项结果",
"sZeroRecords": "没有匹配结果", "sZeroRecords": "没有匹配结果",
"sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项", "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
"sInfoEmpty": "显示第 0 至 0 项结果,共 0 项", "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项",
"sInfoFiltered": "(由 _MAX_ 项结果过滤)", "sInfoFiltered": "(由 _MAX_ 项结果过滤)",
"sInfoPostFix": "", "sInfoPostFix": "",
"sSearch": "搜索:", "sSearch": "搜索:",
"sUrl": "", "sUrl": "",
"sEmptyTable": "表中数据为空", "sEmptyTable": "表中数据为空",
"sLoadingRecords": "载入中...", "sLoadingRecords": "载入中...",
"sInfoThousands": ",", "sInfoThousands": ",",
"oPaginate": { "oPaginate": {
"sFirst": "首页", "sFirst": "首页",
"sPrevious": "上页", "sPrevious": "上页",
"sNext": "下页", "sNext": "下页",
"sLast": "末页" "sLast": "末页"
}, },
"oAria": { "oAria": {
"sSortAscending": ": 以升序排列此列", "sSortAscending": ": 以升序排列此列",
"sSortDescending": ": 以降序排列此列" "sSortDescending": ": 以降序排列此列"
}, },
rank: "排名", rank: "排名",
name: "用户名", name: "用户名",
exp: "EXP", exp: "EXP",
pt: "D.P", pt: "D.P",
win: "胜局", win: "胜局",
lose: "负局", lose: "负局",
wl: "胜率", wl: "胜率",
cardName: "卡名", cardName: "卡名",
used: "使用量", used: "使用量",
put1: "投入1", put1: "投入1",
put2: "投入2", put2: "投入2",
put3: "投入3", put3: "投入3",
deck: "卡组", deck: "卡组",
count: "使用数", count: "使用数",
PickRate : "使用率", topTags: "热门标签",
topTags: "热门标签",
playerA: '玩家A', playerA: '玩家A',
playerB: '玩家B', playerB: '玩家B',
startTime: '开始时间', startTime: '开始时间',
endTime: '结束时间', endTime: '结束时间',
},
en: {
"oPaginate": {
"sPrevious": "Pre",
}, },
rank: "Rank", en: {
name: "Name", "oPaginate": {
exp: "EXP", "sPrevious": "Pre",
pt: "D.P", },
win: "Win", rank: "Rank",
lose: "Lose", name: "Name",
wl: "W/L", exp: "EXP",
pt: "D.P",
win: "Win",
lose: "Lose",
wl: "W/L",
cardName: "Card Name", cardName: "Card Name",
used: "Used", used: "Used",
PickRate:"Pick Rate", put1: "Put one ",
put1: "Put one ", put2: "Put two ",
put2: "Put two ", put3: "Put three ",
put3: "Put three ",
deck: "Deck", deck: "Deck",
count: "Count", count: "Count",
topTags: "Top Tags", topTags: "Top Tags",
playerA: 'PlayerA', playerA: 'PlayerA',
playerB: 'PlayerA', playerB: 'PlayerA',
startTime: 'Start Time', startTime: 'Start Time',
endTime: 'End Time', endTime: 'End Time',
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment